{"id":"a21b557e32017b4e515b5ae793afd5ce","_format":"hh-sol-build-info-1","solcVersion":"0.5.16","solcLongVersion":"0.5.16+commit.9c3226ce","input":{"language":"Solidity","sources":{"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.5.16;\npragma experimental ABIEncoderV2;\n\n/**\n * @title IPrime\n * @author Venus\n * @notice Interface for Prime Token\n */\ninterface IPrime {\n    /**\n     * @notice Executed by XVSVault whenever user's XVSVault balance changes\n     * @param user the account address whose balance was updated\n     */\n    function xvsUpdated(address user) external;\n\n    /**\n     * @notice accrues interest and updates score for an user for a specific market\n     * @param user the account address for which to accrue interest and update score\n     * @param market the market for which to accrue interest and update score\n     */\n    function accrueInterestAndUpdateScore(address user, address market) external;\n\n    /**\n     * @notice Distributes income from market since last distribution\n     * @param vToken the market for which to distribute the income\n     */\n    function accrueInterest(address vToken) external;\n\n    /**\n     * @notice Returns if user is a prime holder\n     * @param isPrimeHolder returns if the user is a prime holder\n     */\n    function isUserPrimeHolder(address user) external view returns (bool isPrimeHolder);\n}\n"},"@venusprotocol/venus-protocol/contracts/Utils/Address.sol":{"content":"pragma solidity ^0.5.5;\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        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\n        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\n        // for accounts without code, i.e. `keccak256('')`\n        bytes32 codehash;\n        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\n        // solhint-disable-next-line no-inline-assembly\n        assembly {\n            codehash := extcodehash(account)\n        }\n        return (codehash != accountHash && codehash != 0x0);\n    }\n\n    /**\n     * @dev Converts an `address` into `address payable`. Note that this is\n     * simply a type cast: the actual underlying value is not changed.\n     *\n     * _Available since v2.4.0._\n     */\n    function toPayable(address account) internal pure returns (address payable) {\n        return address(uint160(account));\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     * _Available since v2.4.0._\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-call-value\n        // solium-disable-next-line security/no-call-value\n        (bool success, ) = recipient.call.value(amount)(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n}\n"},"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol":{"content":"pragma solidity ^0.5.0;\n\n/**\n * @dev Interface of the BEP20 standard as defined in the EIP. Does not include\n * the optional functions; to access them see {BEP20Detailed}.\n */\ninterface IBEP20 {\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"},"@venusprotocol/venus-protocol/contracts/Utils/SafeBEP20.sol":{"content":"pragma solidity ^0.5.0;\n\nimport \"./SafeMath.sol\";\nimport \"./IBEP20.sol\";\nimport \"./Address.sol\";\n\n/**\n * @title SafeBEP20\n * @dev Wrappers around BEP20 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 SafeBEP20 for BEP20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeBEP20 {\n    using SafeMath for uint256;\n    using Address for address;\n\n    function safeTransfer(IBEP20 token, address to, uint256 value) internal {\n        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n    }\n\n    function safeTransferFrom(IBEP20 token, address from, address to, uint256 value) internal {\n        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n    }\n\n    function safeApprove(IBEP20 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(\n            (value == 0) || (token.allowance(address(this), spender) == 0),\n            \"SafeBEP20: approve from non-zero to non-zero allowance\"\n        );\n        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n    }\n\n    function safeIncreaseAllowance(IBEP20 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(IBEP20 token, address spender, uint256 value) internal {\n        uint256 newAllowance = token.allowance(address(this), spender).sub(\n            value,\n            \"SafeBEP20: decreased allowance below zero\"\n        );\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(IBEP20 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.\n\n        // A Solidity high level call has three parts:\n        //  1. The target address is checked to verify it contains contract code\n        //  2. The call itself is made, and success asserted\n        //  3. The return value is decoded, which in turn checks the size of the returned data.\n        // solhint-disable-next-line max-line-length\n        require(address(token).isContract(), \"SafeBEP20: call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = address(token).call(data);\n        require(success, \"SafeBEP20: low-level call failed\");\n\n        if (returndata.length > 0) {\n            // Return data is optional\n            // solhint-disable-next-line max-line-length\n            require(abi.decode(returndata, (bool)), \"SafeBEP20: BEP20 operation did not succeed\");\n        }\n    }\n}\n"},"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol":{"content":"pragma solidity ^0.5.16;\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        return add(a, b, \"SafeMath: addition 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    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        uint256 c = a + b;\n        require(c >= a, errorMessage);\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    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    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    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        require(b != 0, errorMessage);\n        return a % b;\n    }\n}\n"},"@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol":{"content":"pragma solidity 0.5.16;\nimport \"../Utils/SafeBEP20.sol\";\nimport \"../Utils/IBEP20.sol\";\n\n/**\n * @title XVS Store\n * @author Venus\n * @notice XVS Store responsible for distributing XVS rewards\n */\ncontract XVSStore {\n    using SafeMath for uint256;\n    using SafeBEP20 for IBEP20;\n\n    /// @notice The Admin Address\n    address public admin;\n\n    /// @notice The pending admin address\n    address public pendingAdmin;\n\n    /// @notice The Owner Address\n    address public owner;\n\n    /// @notice The reward tokens\n    mapping(address => bool) public rewardTokens;\n\n    /// @notice Emitted when pendingAdmin is changed\n    event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);\n\n    /// @notice Event emitted when admin changed\n    event AdminTransferred(address indexed oldAdmin, address indexed newAdmin);\n\n    /// @notice Event emitted when owner changed\n    event OwnerTransferred(address indexed oldOwner, address indexed newOwner);\n\n    constructor() public {\n        admin = msg.sender;\n    }\n\n    modifier onlyAdmin() {\n        require(msg.sender == admin, \"only admin can\");\n        _;\n    }\n\n    modifier onlyOwner() {\n        require(msg.sender == owner, \"only owner can\");\n        _;\n    }\n\n    /**\n     * @notice Safely transfer rewards. Only active reward tokens can be sent using this function.\n     * Only callable by owner\n     * @dev Safe reward token transfer function, just in case if rounding error causes pool to not have enough tokens.\n     * @param token Reward token to transfer\n     * @param _to Destination address of the reward\n     * @param _amount Amount to transfer\n     */\n    function safeRewardTransfer(address token, address _to, uint256 _amount) external onlyOwner {\n        require(rewardTokens[token] == true, \"only reward token can\");\n\n        if (address(token) != address(0)) {\n            uint256 tokenBalance = IBEP20(token).balanceOf(address(this));\n            if (_amount > tokenBalance) {\n                IBEP20(token).safeTransfer(_to, tokenBalance);\n            } else {\n                IBEP20(token).safeTransfer(_to, _amount);\n            }\n        }\n    }\n\n    /**\n     * @notice Allows the admin to propose a new admin\n     * Only callable admin\n     * @param _admin Propose an account as admin of the XVS store\n     */\n    function setPendingAdmin(address _admin) external onlyAdmin {\n        address oldPendingAdmin = pendingAdmin;\n        pendingAdmin = _admin;\n        emit NewPendingAdmin(oldPendingAdmin, _admin);\n    }\n\n    /**\n     * @notice Allows an account that is pending as admin to accept the role\n     * nly calllable by the pending admin\n     */\n    function acceptAdmin() external {\n        require(msg.sender == pendingAdmin, \"only pending admin\");\n        address oldAdmin = admin;\n        address oldPendingAdmin = pendingAdmin;\n\n        admin = pendingAdmin;\n        pendingAdmin = address(0);\n\n        emit NewPendingAdmin(oldPendingAdmin, pendingAdmin);\n        emit AdminTransferred(oldAdmin, admin);\n    }\n\n    /**\n     * @notice Set the contract owner\n     * @param _owner The address of the owner to set\n     * Only callable admin\n     */\n    function setNewOwner(address _owner) external onlyAdmin {\n        require(_owner != address(0), \"new owner is the zero address\");\n        address oldOwner = owner;\n        owner = _owner;\n        emit OwnerTransferred(oldOwner, _owner);\n    }\n\n    /**\n     * @notice Set or disable a reward token\n     * @param _tokenAddress The address of a token to set as active or inactive\n     * @param status Set whether a reward token is active or not\n     */\n    function setRewardToken(address _tokenAddress, bool status) external {\n        require(msg.sender == admin || msg.sender == owner, \"only admin or owner can\");\n        rewardTokens[_tokenAddress] = status;\n    }\n\n    /**\n     * @notice Security function to allow the owner of the contract to withdraw from the contract\n     * @param _tokenAddress Reward token address to withdraw\n     * @param _amount Amount of token to withdraw\n     */\n    function emergencyRewardWithdraw(address _tokenAddress, uint256 _amount) external onlyOwner {\n        IBEP20(_tokenAddress).safeTransfer(address(msg.sender), _amount);\n    }\n}\n"},"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol":{"content":"pragma solidity ^0.5.16;\n\ncontract XVSVaultErrorReporter {\n    enum Error {\n        NO_ERROR,\n        UNAUTHORIZED\n    }\n\n    enum FailureInfo {\n        ACCEPT_ADMIN_PENDING_ADMIN_CHECK,\n        ACCEPT_PENDING_IMPLEMENTATION_ADDRESS_CHECK,\n        SET_PENDING_ADMIN_OWNER_CHECK,\n        SET_PENDING_IMPLEMENTATION_OWNER_CHECK\n    }\n\n    /**\n     * @dev `error` corresponds to enum Error; `info` corresponds to enum FailureInfo, and `detail` is an arbitrary\n     * contract-specific code that enables us to report opaque error codes from upgradeable contracts.\n     **/\n    event Failure(uint error, uint info, uint detail);\n\n    /**\n     * @dev use this when reporting a known error from the money market or a non-upgradeable collaborator\n     */\n    function fail(Error err, FailureInfo info) internal returns (uint) {\n        emit Failure(uint(err), uint(info), 0);\n\n        return uint(err);\n    }\n\n    /**\n     * @dev use this when reporting an opaque error from an upgradeable collaborator contract\n     */\n    function failOpaque(Error err, FailureInfo info, uint opaqueError) internal returns (uint) {\n        emit Failure(uint(err), uint(info), opaqueError);\n\n        return uint(err);\n    }\n}\n"},"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol":{"content":"pragma solidity ^0.5.16;\n\nimport \"./XVSVaultStorage.sol\";\nimport \"./XVSVaultErrorReporter.sol\";\n\n/**\n * @title XVS Vault Proxy\n * @author Venus\n * @notice XVS Vault Proxy contract\n */\ncontract XVSVaultProxy is XVSVaultAdminStorage, XVSVaultErrorReporter {\n    /**\n     * @notice Emitted when pendingXVSVaultImplementation is changed\n     */\n    event NewPendingImplementation(address oldPendingImplementation, address newPendingImplementation);\n\n    /**\n     * @notice Emitted when pendingXVSVaultImplementation is accepted, which means XVS Vault implementation is updated\n     */\n    event NewImplementation(address oldImplementation, address newImplementation);\n\n    /**\n     * @notice Emitted when pendingAdmin is changed\n     */\n    event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);\n\n    /**\n     * @notice Emitted when pendingAdmin is accepted, which means admin is updated\n     */\n    event NewAdmin(address oldAdmin, address newAdmin);\n\n    constructor() public {\n        // Set admin to caller\n        admin = msg.sender;\n    }\n\n    /*** Admin Functions ***/\n    function _setPendingImplementation(address newPendingImplementation) public returns (uint) {\n        if (msg.sender != admin) {\n            return fail(Error.UNAUTHORIZED, FailureInfo.SET_PENDING_IMPLEMENTATION_OWNER_CHECK);\n        }\n\n        address oldPendingImplementation = pendingXVSVaultImplementation;\n\n        pendingXVSVaultImplementation = newPendingImplementation;\n\n        emit NewPendingImplementation(oldPendingImplementation, pendingXVSVaultImplementation);\n\n        return uint(Error.NO_ERROR);\n    }\n\n    /**\n     * @notice Accepts new implementation of XVS Vault. msg.sender must be pendingImplementation\n     * @dev Admin function for new implementation to accept it's role as implementation\n     * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n     */\n    function _acceptImplementation() public returns (uint) {\n        // Check caller is pendingImplementation\n        if (msg.sender != pendingXVSVaultImplementation) {\n            return fail(Error.UNAUTHORIZED, FailureInfo.ACCEPT_PENDING_IMPLEMENTATION_ADDRESS_CHECK);\n        }\n\n        // Save current values for inclusion in log\n        address oldImplementation = implementation;\n        address oldPendingImplementation = pendingXVSVaultImplementation;\n\n        implementation = pendingXVSVaultImplementation;\n\n        pendingXVSVaultImplementation = address(0);\n\n        emit NewImplementation(oldImplementation, implementation);\n        emit NewPendingImplementation(oldPendingImplementation, pendingXVSVaultImplementation);\n\n        return uint(Error.NO_ERROR);\n    }\n\n    /**\n     * @notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\n     * @dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\n     * @param newPendingAdmin New pending admin.\n     * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n     */\n    function _setPendingAdmin(address newPendingAdmin) public returns (uint) {\n        // Check caller = admin\n        if (msg.sender != admin) {\n            return fail(Error.UNAUTHORIZED, FailureInfo.SET_PENDING_ADMIN_OWNER_CHECK);\n        }\n\n        // Save current value, if any, for inclusion in log\n        address oldPendingAdmin = pendingAdmin;\n\n        // Store pendingAdmin with value newPendingAdmin\n        pendingAdmin = newPendingAdmin;\n\n        // Emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin)\n        emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin);\n\n        return uint(Error.NO_ERROR);\n    }\n\n    /**\n     * @notice Accepts transfer of admin rights. msg.sender must be pendingAdmin\n     * @dev Admin function for pending admin to accept role and update admin\n     * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\n     */\n    function _acceptAdmin() public returns (uint) {\n        // Check caller is pendingAdmin\n        if (msg.sender != pendingAdmin) {\n            return fail(Error.UNAUTHORIZED, FailureInfo.ACCEPT_ADMIN_PENDING_ADMIN_CHECK);\n        }\n\n        // Save current values for inclusion in log\n        address oldAdmin = admin;\n        address oldPendingAdmin = pendingAdmin;\n\n        // Store admin with value pendingAdmin\n        admin = pendingAdmin;\n\n        // Clear the pending value\n        pendingAdmin = address(0);\n\n        emit NewAdmin(oldAdmin, admin);\n        emit NewPendingAdmin(oldPendingAdmin, pendingAdmin);\n\n        return uint(Error.NO_ERROR);\n    }\n\n    /**\n     * @dev Delegates execution to an implementation contract.\n     * It returns to the external caller whatever the implementation returns\n     * or forwards reverts.\n     */\n    function() external payable {\n        // delegate all other functions to current implementation\n        (bool success, ) = implementation.delegatecall(msg.data);\n\n        assembly {\n            let free_mem_ptr := mload(0x40)\n            returndatacopy(free_mem_ptr, 0, returndatasize)\n\n            switch success\n            case 0 {\n                revert(free_mem_ptr, returndatasize)\n            }\n            default {\n                return(free_mem_ptr, returndatasize)\n            }\n        }\n    }\n}\n"},"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol":{"content":"pragma solidity ^0.5.16;\n\nimport \"../Utils/SafeMath.sol\";\nimport \"../Utils/IBEP20.sol\";\nimport \"../Tokens/Prime/IPrime.sol\";\n\ncontract XVSVaultAdminStorage {\n    /**\n     * @notice Administrator for this contract\n     */\n    address public admin;\n\n    /**\n     * @notice Pending administrator for this contract\n     */\n    address public pendingAdmin;\n\n    /**\n     * @notice Active brains of XVS Vault\n     */\n    address public implementation;\n\n    /**\n     * @notice Pending brains of XVS Vault\n     */\n    address public pendingXVSVaultImplementation;\n}\n\ncontract XVSVaultStorageV1 is XVSVaultAdminStorage {\n    /// @notice Guard variable for re-entrancy checks\n    bool internal _notEntered;\n\n    /// @notice The reward token store\n    address public xvsStore;\n\n    /// @notice The xvs token address\n    address public xvsAddress;\n\n    // Reward tokens created per block or second indentified by reward token address.\n    mapping(address => uint256) public rewardTokenAmountsPerBlockOrSecond;\n\n    /// @notice Info of each user.\n    struct UserInfo {\n        uint256 amount;\n        uint256 rewardDebt;\n        uint256 pendingWithdrawals;\n    }\n\n    // Info of each pool.\n    struct PoolInfo {\n        IBEP20 token; // Address of token contract to stake.\n        uint256 allocPoint; // How many allocation points assigned to this pool.\n        uint256 lastRewardBlockOrSecond; // Last block number or second that reward tokens distribution occurs.\n        uint256 accRewardPerShare; // Accumulated per share, times 1e12. See below.\n        uint256 lockPeriod; // Min time between withdrawal request and its execution.\n    }\n\n    // Infomation about a withdrawal request\n    struct WithdrawalRequest {\n        uint256 amount;\n        uint128 lockedUntil;\n        uint128 afterUpgrade;\n    }\n\n    // Info of each user that stakes tokens.\n    mapping(address => mapping(uint256 => mapping(address => UserInfo))) internal userInfos;\n\n    // Info of each pool.\n    mapping(address => PoolInfo[]) public poolInfos;\n\n    // Total allocation points. Must be the sum of all allocation points in all pools.\n    mapping(address => uint256) public totalAllocPoints;\n\n    // Info of requested but not yet executed withdrawals\n    mapping(address => mapping(uint256 => mapping(address => WithdrawalRequest[]))) internal withdrawalRequests;\n\n    /// @notice DEPRECATED A record of each accounts delegate (before the voting power fix)\n    mapping(address => address) private __oldDelegatesSlot;\n\n    /// @notice A checkpoint for marking number of votes from a given block or second\n    struct Checkpoint {\n        uint32 fromBlockOrSecond;\n        uint96 votes;\n    }\n\n    /// @notice DEPRECATED A record of votes checkpoints for each account, by index (before the voting power fix)\n    mapping(address => mapping(uint32 => Checkpoint)) private __oldCheckpointsSlot;\n\n    /// @notice DEPRECATED The number of checkpoints for each account (before the voting power fix)\n    mapping(address => uint32) private __oldNumCheckpointsSlot;\n\n    /// @notice A record of states for signing / validating signatures\n    mapping(address => uint) public nonces;\n\n    /// @notice The EIP-712 typehash for the contract's domain\n    bytes32 public constant DOMAIN_TYPEHASH =\n        keccak256(\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\");\n\n    /// @notice The EIP-712 typehash for the delegation struct used by the contract\n    bytes32 public constant DELEGATION_TYPEHASH =\n        keccak256(\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\");\n}\n\ncontract XVSVaultStorage is XVSVaultStorageV1 {\n    /// @notice A record of each accounts delegate\n    mapping(address => address) public delegates;\n\n    /// @notice A record of votes checkpoints for each account, by index\n    mapping(address => mapping(uint32 => Checkpoint)) public checkpoints;\n\n    /// @notice The number of checkpoints for each account\n    mapping(address => uint32) public numCheckpoints;\n\n    /// @notice Tracks pending withdrawals for all users for a particular reward token and pool id\n    mapping(address => mapping(uint256 => uint256)) public totalPendingWithdrawals;\n\n    /// @notice pause indicator for Vault\n    bool public vaultPaused;\n\n    /// @notice if the token is added to any of the pools\n    mapping(address => bool) public isStakedToken;\n\n    /// @notice Amount we owe to users because of failed transfer attempts\n    mapping(address => mapping(address => uint256)) public pendingRewardTransfers;\n\n    /// @notice Prime token contract address\n    IPrime public primeToken;\n\n    /// @notice Reward token for which prime token is issued for staking\n    address public primeRewardToken;\n\n    /// @notice Pool ID for which prime token is issued for staking\n    uint256 public primePoolId;\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[46] private __gap;\n}\n"},"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol';\n"},"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol';\n"},"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol';\n"},"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol';\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"outputSelection":{"*":{"*":["storageLayout","abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"errors":[{"component":"general","formattedMessage":"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol:3:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n","message":"Experimental features are turned on. Do not use experimental features on live deployments.","severity":"warning","sourceLocation":{"end":99,"file":"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol","start":66},"type":"Warning"}],"sources":{"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol","exportedSymbols":{"IPrime":[27]},"id":28,"nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.5",".16"],"nodeType":"PragmaDirective","src":"41:24:0"},{"id":2,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"66:33:0"},{"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":"@title IPrime\n@author Venus\n@notice Interface for Prime Token","fullyImplemented":false,"id":27,"linearizedBaseContracts":[27],"name":"IPrime","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":"@notice Executed by XVSVault whenever user's XVSVault balance changes\n@param user the account address whose balance was updated","id":7,"implemented":false,"kind":"function","modifiers":[],"name":"xvsUpdated","nodeType":"FunctionDefinition","parameters":{"id":5,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4,"name":"user","nodeType":"VariableDeclaration","scope":7,"src":"381:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3,"name":"address","nodeType":"ElementaryTypeName","src":"381:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"380:14:0"},"returnParameters":{"id":6,"nodeType":"ParameterList","parameters":[],"src":"403:0:0"},"scope":27,"src":"361:43:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice accrues interest and updates score for an user for a specific market\n@param user the account address for which to accrue interest and update score\n@param market the market for which to accrue interest and update score","id":14,"implemented":false,"kind":"function","modifiers":[],"name":"accrueInterestAndUpdateScore","nodeType":"FunctionDefinition","parameters":{"id":12,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"name":"user","nodeType":"VariableDeclaration","scope":14,"src":"711:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8,"name":"address","nodeType":"ElementaryTypeName","src":"711:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":11,"name":"market","nodeType":"VariableDeclaration","scope":14,"src":"725:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"725:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"710:30:0"},"returnParameters":{"id":13,"nodeType":"ParameterList","parameters":[],"src":"749:0:0"},"scope":27,"src":"673:77:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Distributes income from market since last distribution\n@param vToken the market for which to distribute the income","id":19,"implemented":false,"kind":"function","modifiers":[],"name":"accrueInterest","nodeType":"FunctionDefinition","parameters":{"id":17,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16,"name":"vToken","nodeType":"VariableDeclaration","scope":19,"src":"933:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15,"name":"address","nodeType":"ElementaryTypeName","src":"933:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"932:16:0"},"returnParameters":{"id":18,"nodeType":"ParameterList","parameters":[],"src":"957:0:0"},"scope":27,"src":"909:49:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@notice Returns if user is a prime holder\n@param isPrimeHolder returns if the user is a prime holder","id":26,"implemented":false,"kind":"function","modifiers":[],"name":"isUserPrimeHolder","nodeType":"FunctionDefinition","parameters":{"id":22,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21,"name":"user","nodeType":"VariableDeclaration","scope":26,"src":"1122:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20,"name":"address","nodeType":"ElementaryTypeName","src":"1122:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1121:14:0"},"returnParameters":{"id":25,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"name":"isPrimeHolder","nodeType":"VariableDeclaration","scope":26,"src":"1159:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23,"name":"bool","nodeType":"ElementaryTypeName","src":"1159:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1158:20:0"},"scope":27,"src":"1095:84:0","stateMutability":"view","superFunction":null,"visibility":"external"}],"scope":28,"src":"180:1001:0"}],"src":"41:1141:0"},"id":0},"@venusprotocol/venus-protocol/contracts/Utils/Address.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/Address.sol","exportedSymbols":{"Address":[102]},"id":103,"nodeType":"SourceUnit","nodes":[{"id":29,"literals":["solidity","^","0.5",".5"],"nodeType":"PragmaDirective","src":"0:23:1"},{"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":"@dev Collection of functions related to the address type","fullyImplemented":true,"id":102,"linearizedBaseContracts":[102],"name":"Address","nodeType":"ContractDefinition","nodes":[{"body":{"id":53,"nodeType":"Block","src":"751:564:1","statements":[{"assignments":[37],"declarations":[{"constant":false,"id":37,"name":"codehash","nodeType":"VariableDeclaration","scope":53,"src":"1003:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":36,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1003:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":38,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"1003:16:1"},{"assignments":[40],"declarations":[{"constant":false,"id":40,"name":"accountHash","nodeType":"VariableDeclaration","scope":53,"src":"1029:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":39,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1029:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":42,"initialValue":{"argumentTypes":null,"hexValue":"307863356432343630313836663732333363393237653764623264636337303363306535303062363533636138323237336237626661643830343564383561343730","id":41,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1051:66:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_89477152217924674838424037953991966239322087453347756267410168184682657981552_by_1","typeString":"int_const 8947...(69 digits omitted)...1552"},"value":"0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"},"nodeType":"VariableDeclarationStatement","src":"1029:88:1"},{"externalReferences":[{"codehash":{"declaration":37,"isOffset":false,"isSlot":false,"src":"1206:8:1","valueSize":1}},{"account":{"declaration":31,"isOffset":false,"isSlot":false,"src":"1230:7:1","valueSize":1}}],"id":43,"nodeType":"InlineAssembly","operations":"{\n    codehash := extcodehash(account)\n}","src":"1183:65:1"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":50,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":46,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":44,"name":"codehash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37,"src":"1265:8:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":45,"name":"accountHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"1277:11:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1265:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":49,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":47,"name":"codehash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37,"src":"1292:8:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"307830","id":48,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1304:3:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"src":"1292:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1265:42:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":51,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1264:44:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":35,"id":52,"nodeType":"Return","src":"1257:51:1"}]},"documentation":"@dev Returns true if `account` is a contract.\n     * [IMPORTANT]\n====\nIt is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.\n     * Among others, `isContract` will return false for the following\ntypes 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":54,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":32,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31,"name":"account","nodeType":"VariableDeclaration","scope":54,"src":"705:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":30,"name":"address","nodeType":"ElementaryTypeName","src":"705:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"704:17:1"},"returnParameters":{"id":35,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34,"name":"","nodeType":"VariableDeclaration","scope":54,"src":"745:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33,"name":"bool","nodeType":"ElementaryTypeName","src":"745:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"744:6:1"},"scope":102,"src":"685:630:1","stateMutability":"view","superFunction":null,"visibility":"internal"},{"body":{"id":67,"nodeType":"Block","src":"1600:49:1","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":63,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"1633:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":62,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1625:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":"uint160"},"id":64,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1625:16:1","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":61,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1617:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1617:25:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":60,"id":66,"nodeType":"Return","src":"1610:32:1"}]},"documentation":"@dev Converts an `address` into `address payable`. Note that this is\nsimply a type cast: the actual underlying value is not changed.\n     * _Available since v2.4.0._","id":68,"implemented":true,"kind":"function","modifiers":[],"name":"toPayable","nodeType":"FunctionDefinition","parameters":{"id":57,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56,"name":"account","nodeType":"VariableDeclaration","scope":68,"src":"1543:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55,"name":"address","nodeType":"ElementaryTypeName","src":"1543:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1542:17:1"},"returnParameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"name":"","nodeType":"VariableDeclaration","scope":68,"src":"1583:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"1583:15:1","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"value":null,"visibility":"internal"}],"src":"1582:17:1"},"scope":102,"src":"1524:125:1","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":100,"nodeType":"Block","src":"2677:353:1","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":77,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1375,"src":"2703:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$102","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$102","typeString":"library Address"}],"id":76,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2695:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":78,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2695:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":79,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2695:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":80,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"2720:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2695:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":82,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2728:31:1","subdenomination":null,"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":75,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"2687: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":"2687:73:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84,"nodeType":"ExpressionStatement","src":"2687:73:1"},{"assignments":[86,null],"declarations":[{"constant":false,"id":86,"name":"success","nodeType":"VariableDeclaration","scope":100,"src":"2885:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":85,"name":"bool","nodeType":"ElementaryTypeName","src":"2885:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},null],"id":94,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"","id":92,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2932:2:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"arguments":[{"argumentTypes":null,"id":90,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"2924:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":87,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70,"src":"2903:9:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2903:14:1","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":89,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2903:20:1","typeDescriptions":{"typeIdentifier":"t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$","typeString":"function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"}},"id":91,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2903:28:1","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":93,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2903:32:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2884:51:1"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":96,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86,"src":"2953:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":97,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2962:60:1","subdenomination":null,"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":95,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"2945:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":98,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2945:78:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":99,"nodeType":"ExpressionStatement","src":"2945:78:1"}]},"documentation":"@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\nof certain opcodes, possibly making contracts go over the 2300 gas limit\nimposed 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\ntaken to not create reentrancy vulnerabilities. Consider using\n{ReentrancyGuard} or the\nhttps://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     * _Available since v2.4.0._","id":101,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nodeType":"FunctionDefinition","parameters":{"id":73,"nodeType":"ParameterList","parameters":[{"constant":false,"id":70,"name":"recipient","nodeType":"VariableDeclaration","scope":101,"src":"2625:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"2625:15:1","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"value":null,"visibility":"internal"},{"constant":false,"id":72,"name":"amount","nodeType":"VariableDeclaration","scope":101,"src":"2652:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":71,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2624:43:1"},"returnParameters":{"id":74,"nodeType":"ParameterList","parameters":[],"src":"2677:0:1"},"scope":102,"src":"2606:424:1","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"}],"scope":103,"src":"93:2939:1"}],"src":"0:3033:1"},"id":1},"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol","exportedSymbols":{"IBEP20":[171]},"id":172,"nodeType":"SourceUnit","nodes":[{"id":104,"literals":["solidity","^","0.5",".0"],"nodeType":"PragmaDirective","src":"0:23:2"},{"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":"@dev Interface of the BEP20 standard as defined in the EIP. Does not include\nthe optional functions; to access them see {BEP20Detailed}.","fullyImplemented":false,"id":171,"linearizedBaseContracts":[171],"name":"IBEP20","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":"@dev Returns the amount of tokens in existence.","id":109,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"290:2:2"},"returnParameters":{"id":108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":107,"name":"","nodeType":"VariableDeclaration","scope":109,"src":"316:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":106,"name":"uint256","nodeType":"ElementaryTypeName","src":"316:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"315:9:2"},"scope":171,"src":"270:55:2","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@dev Returns the amount of tokens owned by `account`.","id":116,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":111,"name":"account","nodeType":"VariableDeclaration","scope":116,"src":"427:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":110,"name":"address","nodeType":"ElementaryTypeName","src":"427:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"426:17:2"},"returnParameters":{"id":115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"name":"","nodeType":"VariableDeclaration","scope":116,"src":"467:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113,"name":"uint256","nodeType":"ElementaryTypeName","src":"467:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"466:9:2"},"scope":171,"src":"408:68:2","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@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.","id":125,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118,"name":"recipient","nodeType":"VariableDeclaration","scope":125,"src":"714:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":117,"name":"address","nodeType":"ElementaryTypeName","src":"714:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":120,"name":"amount","nodeType":"VariableDeclaration","scope":125,"src":"733:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":119,"name":"uint256","nodeType":"ElementaryTypeName","src":"733:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"713:35:2"},"returnParameters":{"id":124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":123,"name":"","nodeType":"VariableDeclaration","scope":125,"src":"767:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":122,"name":"bool","nodeType":"ElementaryTypeName","src":"767:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"766:6:2"},"scope":171,"src":"696:77:2","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@dev Returns the remaining number of tokens that `spender` will be\nallowed to spend on behalf of `owner` through {transferFrom}. This is\nzero by default.\n     * This value changes when {approve} or {transferFrom} are called.","id":134,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":127,"name":"owner","nodeType":"VariableDeclaration","scope":134,"src":"1067:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":126,"name":"address","nodeType":"ElementaryTypeName","src":"1067:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":129,"name":"spender","nodeType":"VariableDeclaration","scope":134,"src":"1082:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":128,"name":"address","nodeType":"ElementaryTypeName","src":"1082:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1066:32:2"},"returnParameters":{"id":133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":132,"name":"","nodeType":"VariableDeclaration","scope":134,"src":"1122:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":131,"name":"uint256","nodeType":"ElementaryTypeName","src":"1122:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1121:9:2"},"scope":171,"src":"1048:83:2","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@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\nthat someone may use both the old and the new allowance by unfortunate\ntransaction ordering. One possible solution to mitigate this race\ncondition is to first reduce the spender's allowance to 0 and set the\ndesired value afterwards:\nhttps://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     * Emits an {Approval} event.","id":143,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":136,"name":"spender","nodeType":"VariableDeclaration","scope":143,"src":"1801:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135,"name":"address","nodeType":"ElementaryTypeName","src":"1801:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":138,"name":"amount","nodeType":"VariableDeclaration","scope":143,"src":"1818:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":137,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1800:33:2"},"returnParameters":{"id":142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"name":"","nodeType":"VariableDeclaration","scope":143,"src":"1852:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":140,"name":"bool","nodeType":"ElementaryTypeName","src":"1852:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"1851:6:2"},"scope":171,"src":"1784:74:2","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":null,"documentation":"@dev Moves `amount` tokens from `sender` to `recipient` using the\nallowance mechanism. `amount` is then deducted from the caller's\nallowance.\n     * Returns a boolean value indicating whether the operation succeeded.\n     * Emits a {Transfer} event.","id":154,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":145,"name":"sender","nodeType":"VariableDeclaration","scope":154,"src":"2187:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":144,"name":"address","nodeType":"ElementaryTypeName","src":"2187:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":147,"name":"recipient","nodeType":"VariableDeclaration","scope":154,"src":"2203:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":146,"name":"address","nodeType":"ElementaryTypeName","src":"2203:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":149,"name":"amount","nodeType":"VariableDeclaration","scope":154,"src":"2222:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":148,"name":"uint256","nodeType":"ElementaryTypeName","src":"2222:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2186:51:2"},"returnParameters":{"id":153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":152,"name":"","nodeType":"VariableDeclaration","scope":154,"src":"2256:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":151,"name":"bool","nodeType":"ElementaryTypeName","src":"2256:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2255:6:2"},"scope":171,"src":"2165:97:2","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"anonymous":false,"documentation":"@dev Emitted when `value` tokens are moved from one account (`from`) to\nanother (`to`).\n     * Note that `value` may be zero.","id":162,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"indexed":true,"name":"from","nodeType":"VariableDeclaration","scope":162,"src":"2446:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":155,"name":"address","nodeType":"ElementaryTypeName","src":"2446:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":158,"indexed":true,"name":"to","nodeType":"VariableDeclaration","scope":162,"src":"2468:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":157,"name":"address","nodeType":"ElementaryTypeName","src":"2468:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":160,"indexed":false,"name":"value","nodeType":"VariableDeclaration","scope":162,"src":"2488:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":159,"name":"uint256","nodeType":"ElementaryTypeName","src":"2488:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2445:57:2"},"src":"2431:72:2"},{"anonymous":false,"documentation":"@dev Emitted when the allowance of a `spender` for an `owner` is set by\na call to {approve}. `value` is the new allowance.","id":170,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"indexed":true,"name":"owner","nodeType":"VariableDeclaration","scope":170,"src":"2677:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":163,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":166,"indexed":true,"name":"spender","nodeType":"VariableDeclaration","scope":170,"src":"2700:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":165,"name":"address","nodeType":"ElementaryTypeName","src":"2700:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":168,"indexed":false,"name":"value","nodeType":"VariableDeclaration","scope":170,"src":"2725:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":167,"name":"uint256","nodeType":"ElementaryTypeName","src":"2725:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2676:63:2"},"src":"2662:78:2"}],"scope":172,"src":"176:2566:2"}],"src":"0:2743:2"},"id":2},"@venusprotocol/venus-protocol/contracts/Utils/SafeBEP20.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/SafeBEP20.sol","exportedSymbols":{"SafeBEP20":[391]},"id":392,"nodeType":"SourceUnit","nodes":[{"id":173,"literals":["solidity","^","0.5",".0"],"nodeType":"PragmaDirective","src":"0:23:3"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol","file":"./SafeMath.sol","id":174,"nodeType":"ImportDirective","scope":392,"sourceUnit":597,"src":"25:24:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol","file":"./IBEP20.sol","id":175,"nodeType":"ImportDirective","scope":392,"sourceUnit":172,"src":"50:22:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/Address.sol","file":"./Address.sol","id":176,"nodeType":"ImportDirective","scope":392,"sourceUnit":103,"src":"73:23:3","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":"@title SafeBEP20\n@dev Wrappers around BEP20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeBEP20 for BEP20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"id":391,"linearizedBaseContracts":[391],"name":"SafeBEP20","nodeType":"ContractDefinition","nodes":[{"id":179,"libraryName":{"contractScope":null,"id":177,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":596,"src":"585:8:3","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$596","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"579:27:3","typeName":{"id":178,"name":"uint256","nodeType":"ElementaryTypeName","src":"598:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":182,"libraryName":{"contractScope":null,"id":180,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":102,"src":"617:7:3","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$102","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"611:26:3","typeName":{"id":181,"name":"address","nodeType":"ElementaryTypeName","src":"629:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":203,"nodeType":"Block","src":"715:102:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":192,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"744:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":195,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"774:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"id":196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":125,"src":"774:14:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"774:23:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":198,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":186,"src":"799:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":199,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"803:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":193,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"751:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":194,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"751:22:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"751:58:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":191,"name":"callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":390,"src":"725:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBEP20_$171_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IBEP20,bytes memory)"}},"id":201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"725:85:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":202,"nodeType":"ExpressionStatement","src":"725:85:3"}]},"documentation":null,"id":204,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":184,"name":"token","nodeType":"VariableDeclaration","scope":204,"src":"665:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"},"typeName":{"contractScope":null,"id":183,"name":"IBEP20","nodeType":"UserDefinedTypeName","referencedDeclaration":171,"src":"665:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"value":null,"visibility":"internal"},{"constant":false,"id":186,"name":"to","nodeType":"VariableDeclaration","scope":204,"src":"679:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"679:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":188,"name":"value","nodeType":"VariableDeclaration","scope":204,"src":"691:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":187,"name":"uint256","nodeType":"ElementaryTypeName","src":"691:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"664:41:3"},"returnParameters":{"id":190,"nodeType":"ParameterList","parameters":[],"src":"715:0:3"},"scope":391,"src":"643:174:3","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":228,"nodeType":"Block","src":"913:112:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":216,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":206,"src":"942:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":219,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":206,"src":"972:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"id":220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":154,"src":"972:18:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"972:27:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":222,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"1001:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":223,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"1007:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":224,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"1011:5:3","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":{"argumentTypes":null,"id":217,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"949:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"949:22:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"949:68:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":215,"name":"callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":390,"src":"923:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBEP20_$171_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IBEP20,bytes memory)"}},"id":226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"923:95:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":227,"nodeType":"ExpressionStatement","src":"923:95:3"}]},"documentation":null,"id":229,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":206,"name":"token","nodeType":"VariableDeclaration","scope":229,"src":"849:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"},"typeName":{"contractScope":null,"id":205,"name":"IBEP20","nodeType":"UserDefinedTypeName","referencedDeclaration":171,"src":"849:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"value":null,"visibility":"internal"},{"constant":false,"id":208,"name":"from","nodeType":"VariableDeclaration","scope":229,"src":"863:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":207,"name":"address","nodeType":"ElementaryTypeName","src":"863:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":210,"name":"to","nodeType":"VariableDeclaration","scope":229,"src":"877:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":209,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":212,"name":"value","nodeType":"VariableDeclaration","scope":229,"src":"889:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":211,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"848:55:3"},"returnParameters":{"id":214,"nodeType":"ParameterList","parameters":[],"src":"913:0:3"},"scope":391,"src":"823:202:3","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":269,"nodeType":"Block","src":"1107:549:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":239,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"1409:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1418:1:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1409:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":242,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1408:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":246,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"1449:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_SafeBEP20_$391","typeString":"library SafeBEP20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeBEP20_$391","typeString":"library SafeBEP20"}],"id":245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1441:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1441:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":248,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":233,"src":"1456:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":243,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"1425:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"id":244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":134,"src":"1425:15:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1425:39:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1468:1:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1425:44:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":252,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1424:46:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1408:62:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5361666542455032303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","id":254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1484:56:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_91a9bac926ceb306224f4766a09b4f2ef09ebf6b62503a939a3d65e9ddb75b06","typeString":"literal_string \"SafeBEP20: approve from non-zero to non-zero allowance\""},"value":"SafeBEP20: approve from non-zero to non-zero allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91a9bac926ceb306224f4766a09b4f2ef09ebf6b62503a939a3d65e9ddb75b06","typeString":"literal_string \"SafeBEP20: approve from non-zero to non-zero allowance\""}],"id":238,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"1387:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1387:163:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":256,"nodeType":"ExpressionStatement","src":"1387:163:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":258,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"1579:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":261,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"1609:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"id":262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":143,"src":"1609:13:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1609:22:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":264,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":233,"src":"1633:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":265,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"1642:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":259,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"1586:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1586:22:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1586:62:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":257,"name":"callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":390,"src":"1560:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBEP20_$171_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IBEP20,bytes memory)"}},"id":267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1560:89:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":268,"nodeType":"ExpressionStatement","src":"1560:89:3"}]},"documentation":null,"id":270,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","parameters":{"id":236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":231,"name":"token","nodeType":"VariableDeclaration","scope":270,"src":"1052:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"},"typeName":{"contractScope":null,"id":230,"name":"IBEP20","nodeType":"UserDefinedTypeName","referencedDeclaration":171,"src":"1052:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"value":null,"visibility":"internal"},{"constant":false,"id":233,"name":"spender","nodeType":"VariableDeclaration","scope":270,"src":"1066:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":232,"name":"address","nodeType":"ElementaryTypeName","src":"1066:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":235,"name":"value","nodeType":"VariableDeclaration","scope":270,"src":"1083:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":234,"name":"uint256","nodeType":"ElementaryTypeName","src":"1083:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1051:46:3"},"returnParameters":{"id":237,"nodeType":"ParameterList","parameters":[],"src":"1107:0:3"},"scope":391,"src":"1031:625:3","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":304,"nodeType":"Block","src":"1748:196:3","statements":[{"assignments":[280],"declarations":[{"constant":false,"id":280,"name":"newAllowance","nodeType":"VariableDeclaration","scope":304,"src":"1758:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":279,"name":"uint256","nodeType":"ElementaryTypeName","src":"1758:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":291,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":289,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":276,"src":"1825:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":284,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"1805:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_SafeBEP20_$391","typeString":"library SafeBEP20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeBEP20_$391","typeString":"library SafeBEP20"}],"id":283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1797:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1797:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":286,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"1812:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":281,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":272,"src":"1781:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"id":282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":134,"src":"1781:15:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1781:39:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":409,"src":"1781:43:3","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":290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1781:50:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1758:73:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":293,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":272,"src":"1860:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":296,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":272,"src":"1890:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"id":297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":143,"src":"1890:13:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1890:22:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":299,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"1914:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":300,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":280,"src":"1923:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":294,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"1867:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1867:22:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1867:69:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":292,"name":"callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":390,"src":"1841:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBEP20_$171_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IBEP20,bytes memory)"}},"id":302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1841:96:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":303,"nodeType":"ExpressionStatement","src":"1841:96:3"}]},"documentation":null,"id":305,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":272,"name":"token","nodeType":"VariableDeclaration","scope":305,"src":"1693:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"},"typeName":{"contractScope":null,"id":271,"name":"IBEP20","nodeType":"UserDefinedTypeName","referencedDeclaration":171,"src":"1693:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"value":null,"visibility":"internal"},{"constant":false,"id":274,"name":"spender","nodeType":"VariableDeclaration","scope":305,"src":"1707:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":273,"name":"address","nodeType":"ElementaryTypeName","src":"1707:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":276,"name":"value","nodeType":"VariableDeclaration","scope":305,"src":"1724:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":275,"name":"uint256","nodeType":"ElementaryTypeName","src":"1724:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1692:46:3"},"returnParameters":{"id":278,"nodeType":"ParameterList","parameters":[],"src":"1748:0:3"},"scope":391,"src":"1662:282:3","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":340,"nodeType":"Block","src":"2036:275:3","statements":[{"assignments":[315],"declarations":[{"constant":false,"id":315,"name":"newAllowance","nodeType":"VariableDeclaration","scope":340,"src":"2046:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"2046:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":327,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":311,"src":"2126:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"5361666542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2145:43:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8d8b0d004f76517d0accc4049600ccad745ed1cf03a0a544bc57f891c9ae38a3","typeString":"literal_string \"SafeBEP20: decreased allowance below zero\""},"value":"SafeBEP20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_8d8b0d004f76517d0accc4049600ccad745ed1cf03a0a544bc57f891c9ae38a3","typeString":"literal_string \"SafeBEP20: decreased allowance below zero\""}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":319,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"2093:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_SafeBEP20_$391","typeString":"library SafeBEP20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeBEP20_$391","typeString":"library SafeBEP20"}],"id":318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2085:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2085:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":321,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"2100:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":316,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":307,"src":"2069:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":134,"src":"2069:15:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2069:39:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":479,"src":"2069:43:3","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":326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2069:129:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2046:152:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":329,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":307,"src":"2227:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":332,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":307,"src":"2257:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"id":333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":143,"src":"2257:13:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2257:22:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":335,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"2281:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":336,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"2290:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":330,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"2234:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2234:22:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2234:69:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":328,"name":"callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":390,"src":"2208:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBEP20_$171_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IBEP20,bytes memory)"}},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2208:96:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":339,"nodeType":"ExpressionStatement","src":"2208:96:3"}]},"documentation":null,"id":341,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":307,"name":"token","nodeType":"VariableDeclaration","scope":341,"src":"1981:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"},"typeName":{"contractScope":null,"id":306,"name":"IBEP20","nodeType":"UserDefinedTypeName","referencedDeclaration":171,"src":"1981:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"value":null,"visibility":"internal"},{"constant":false,"id":309,"name":"spender","nodeType":"VariableDeclaration","scope":341,"src":"1995:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":308,"name":"address","nodeType":"ElementaryTypeName","src":"1995:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":311,"name":"value","nodeType":"VariableDeclaration","scope":341,"src":"2012:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":310,"name":"uint256","nodeType":"ElementaryTypeName","src":"2012:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1980:46:3"},"returnParameters":{"id":313,"nodeType":"ParameterList","parameters":[],"src":"2036:0:3"},"scope":391,"src":"1950:361:3","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":389,"nodeType":"Block","src":"2763:1038:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":350,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":343,"src":"3297:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}],"id":349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3289:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3289:14:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":54,"src":"3289:25:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3289:27:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5361666542455032303a2063616c6c20746f206e6f6e2d636f6e7472616374","id":354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3318:33:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e5b165dd326cc338f3f8a73e4bd1577d82082723f544c289e269216f5337d315","typeString":"literal_string \"SafeBEP20: call to non-contract\""},"value":"SafeBEP20: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e5b165dd326cc338f3f8a73e4bd1577d82082723f544c289e269216f5337d315","typeString":"literal_string \"SafeBEP20: call to non-contract\""}],"id":348,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"3281:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3281:71:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":356,"nodeType":"ExpressionStatement","src":"3281:71:3"},{"assignments":[358,360],"declarations":[{"constant":false,"id":358,"name":"success","nodeType":"VariableDeclaration","scope":389,"src":"3423:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":357,"name":"bool","nodeType":"ElementaryTypeName","src":"3423:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":360,"name":"returndata","nodeType":"VariableDeclaration","scope":389,"src":"3437:23:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":359,"name":"bytes","nodeType":"ElementaryTypeName","src":"3437:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":367,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":365,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":345,"src":"3484:4:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":362,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":343,"src":"3472:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}],"id":361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3464:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3464:14:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3464:19:3","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":366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3464:25:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3422:67:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":369,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":358,"src":"3507:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c6564","id":370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3516:34:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e357ac51478c37023e9e7ad13e9d6e33f2ac0566d41923020f1a6b2e7a541c3e","typeString":"literal_string \"SafeBEP20: low-level call failed\""},"value":"SafeBEP20: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e357ac51478c37023e9e7ad13e9d6e33f2ac0566d41923020f1a6b2e7a541c3e","typeString":"literal_string \"SafeBEP20: low-level call failed\""}],"id":368,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"3499:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3499:52:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":372,"nodeType":"ExpressionStatement","src":"3499:52:3"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":373,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"3566:10:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3566:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3586:1:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3566:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":388,"nodeType":"IfStatement","src":"3562:233:3","trueBody":{"id":387,"nodeType":"Block","src":"3589:206:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":380,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"3718:10:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"id":381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3731:4:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":"bool"}],"id":382,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3730:6:3","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":378,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"3707:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3707:10:3","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3707:30:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5361666542455032303a204245503230206f7065726174696f6e20646964206e6f742073756363656564","id":384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3739:44:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_21c3364d55537bf20eb8f05374e9f53f47299e1883c412f1f1135f398f2c2082","typeString":"literal_string \"SafeBEP20: BEP20 operation did not succeed\""},"value":"SafeBEP20: BEP20 operation did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_21c3364d55537bf20eb8f05374e9f53f47299e1883c412f1f1135f398f2c2082","typeString":"literal_string \"SafeBEP20: BEP20 operation did not succeed\""}],"id":377,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"3699:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3699:85:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":386,"nodeType":"ExpressionStatement","src":"3699:85:3"}]}}]},"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non 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":390,"implemented":true,"kind":"function","modifiers":[],"name":"callOptionalReturn","nodeType":"FunctionDefinition","parameters":{"id":346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":343,"name":"token","nodeType":"VariableDeclaration","scope":390,"src":"2722:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"},"typeName":{"contractScope":null,"id":342,"name":"IBEP20","nodeType":"UserDefinedTypeName","referencedDeclaration":171,"src":"2722:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"value":null,"visibility":"internal"},{"constant":false,"id":345,"name":"data","nodeType":"VariableDeclaration","scope":390,"src":"2736:17:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":344,"name":"bytes","nodeType":"ElementaryTypeName","src":"2736:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"2721:33:3"},"returnParameters":{"id":347,"nodeType":"ParameterList","parameters":[],"src":"2763:0:3"},"scope":391,"src":"2694:1107:3","stateMutability":"nonpayable","superFunction":null,"visibility":"private"}],"scope":392,"src":"555:3248:3"}],"src":"0:3804:3"},"id":3},"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol","exportedSymbols":{"SafeMath":[596]},"id":597,"nodeType":"SourceUnit","nodes":[{"id":393,"literals":["solidity","^","0.5",".16"],"nodeType":"PragmaDirective","src":"0:24:4"},{"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"id":596,"linearizedBaseContracts":[596],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":408,"nodeType":"Block","src":"902:64:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":403,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":395,"src":"923:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":404,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"926:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"536166654d6174683a206164646974696f6e206f766572666c6f77","id":405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"929:29:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""},"value":"SafeMath: addition overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"id":402,"name":"add","nodeType":"Identifier","overloadedDeclarations":[409,436],"referencedDeclaration":436,"src":"919:3:4","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":406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"919:40:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":401,"id":407,"nodeType":"Return","src":"912:47:4"}]},"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n     * Counterpart to Solidity's `+` operator.\n     * Requirements:\n- Addition cannot overflow.","id":409,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":395,"name":"a","nodeType":"VariableDeclaration","scope":409,"src":"848:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":394,"name":"uint256","nodeType":"ElementaryTypeName","src":"848:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":397,"name":"b","nodeType":"VariableDeclaration","scope":409,"src":"859:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":396,"name":"uint256","nodeType":"ElementaryTypeName","src":"859:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"847:22:4"},"returnParameters":{"id":401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":400,"name":"","nodeType":"VariableDeclaration","scope":409,"src":"893:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":399,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"892:9:4"},"scope":596,"src":"835:131:4","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":435,"nodeType":"Block","src":"1345:92:4","statements":[{"assignments":[421],"declarations":[{"constant":false,"id":421,"name":"c","nodeType":"VariableDeclaration","scope":435,"src":"1355:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":420,"name":"uint256","nodeType":"ElementaryTypeName","src":"1355:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":425,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":422,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"1367:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":423,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"1371:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1367:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1355:17:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":427,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"1390:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":428,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"1395:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1390:6:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":430,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":415,"src":"1398:12:4","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":426,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"1382:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1382:29:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":432,"nodeType":"ExpressionStatement","src":"1382:29:4"},{"expression":{"argumentTypes":null,"id":433,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"1429:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":419,"id":434,"nodeType":"Return","src":"1422:8:4"}]},"documentation":"@dev Returns the subtraction of two unsigned integers, reverting with custom message on\noverflow (when the result is negative).\n     * Counterpart to Solidity's `-` operator.\n     * Requirements:\n- Subtraction cannot overflow.","id":436,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"name":"a","nodeType":"VariableDeclaration","scope":436,"src":"1263:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1263:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":413,"name":"b","nodeType":"VariableDeclaration","scope":436,"src":"1274:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":415,"name":"errorMessage","nodeType":"VariableDeclaration","scope":436,"src":"1285:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":414,"name":"string","nodeType":"ElementaryTypeName","src":"1285:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"1262:50:4"},"returnParameters":{"id":419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":418,"name":"","nodeType":"VariableDeclaration","scope":436,"src":"1336:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":417,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1335:9:4"},"scope":596,"src":"1250:187:4","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":451,"nodeType":"Block","src":"1768:67:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":446,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":438,"src":"1789:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":447,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":440,"src":"1792:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","id":448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1795:32:4","subdenomination":null,"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":445,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[452,479],"referencedDeclaration":479,"src":"1785:3:4","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":449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1785:43:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":444,"id":450,"nodeType":"Return","src":"1778:50:4"}]},"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n     * Counterpart to Solidity's `-` operator.\n     * Requirements:\n- Subtraction cannot overflow.","id":452,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":438,"name":"a","nodeType":"VariableDeclaration","scope":452,"src":"1714:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":437,"name":"uint256","nodeType":"ElementaryTypeName","src":"1714:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":440,"name":"b","nodeType":"VariableDeclaration","scope":452,"src":"1725:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":439,"name":"uint256","nodeType":"ElementaryTypeName","src":"1725:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1713:22:4"},"returnParameters":{"id":444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":443,"name":"","nodeType":"VariableDeclaration","scope":452,"src":"1759:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":442,"name":"uint256","nodeType":"ElementaryTypeName","src":"1759:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1758:9:4"},"scope":596,"src":"1701:134:4","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":478,"nodeType":"Block","src":"2214:92:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":464,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":456,"src":"2232:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":465,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"2237:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2232:6:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":467,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"2240:12:4","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":463,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"2224:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2224:29:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":469,"nodeType":"ExpressionStatement","src":"2224:29:4"},{"assignments":[471],"declarations":[{"constant":false,"id":471,"name":"c","nodeType":"VariableDeclaration","scope":478,"src":"2263:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":470,"name":"uint256","nodeType":"ElementaryTypeName","src":"2263:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":475,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":472,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"2275:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":473,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":456,"src":"2279:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2275:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2263:17:4"},{"expression":{"argumentTypes":null,"id":476,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":471,"src":"2298:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":462,"id":477,"nodeType":"Return","src":"2291:8:4"}]},"documentation":"@dev Returns the subtraction of two unsigned integers, reverting with custom message on\noverflow (when the result is negative).\n     * Counterpart to Solidity's `-` operator.\n     * Requirements:\n- Subtraction cannot overflow.","id":479,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":454,"name":"a","nodeType":"VariableDeclaration","scope":479,"src":"2132:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":453,"name":"uint256","nodeType":"ElementaryTypeName","src":"2132:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":456,"name":"b","nodeType":"VariableDeclaration","scope":479,"src":"2143:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":455,"name":"uint256","nodeType":"ElementaryTypeName","src":"2143:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":458,"name":"errorMessage","nodeType":"VariableDeclaration","scope":479,"src":"2154:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":457,"name":"string","nodeType":"ElementaryTypeName","src":"2154:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"2131:50:4"},"returnParameters":{"id":462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":461,"name":"","nodeType":"VariableDeclaration","scope":479,"src":"2205:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":460,"name":"uint256","nodeType":"ElementaryTypeName","src":"2205:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2204:9:4"},"scope":596,"src":"2119:187:4","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":512,"nodeType":"Block","src":"2613:392:4","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":488,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":481,"src":"2845:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2850:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2845:6:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":494,"nodeType":"IfStatement","src":"2841:45:4","trueBody":{"id":493,"nodeType":"Block","src":"2853:33:4","statements":[{"expression":{"argumentTypes":null,"hexValue":"30","id":491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2874:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":487,"id":492,"nodeType":"Return","src":"2867:8:4"}]}},{"assignments":[496],"declarations":[{"constant":false,"id":496,"name":"c","nodeType":"VariableDeclaration","scope":512,"src":"2896:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":495,"name":"uint256","nodeType":"ElementaryTypeName","src":"2896:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":500,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":497,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":481,"src":"2908:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":498,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":483,"src":"2912:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2908:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2896:17:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":502,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":496,"src":"2931:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":503,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":481,"src":"2935:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2931:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":505,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":483,"src":"2940:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2931:10:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","id":507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2943:35:4","subdenomination":null,"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":501,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"2923:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2923:56:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":509,"nodeType":"ExpressionStatement","src":"2923:56:4"},{"expression":{"argumentTypes":null,"id":510,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":496,"src":"2997:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":487,"id":511,"nodeType":"Return","src":"2990:8:4"}]},"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n     * Counterpart to Solidity's `*` operator.\n     * Requirements:\n- Multiplication cannot overflow.","id":513,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":481,"name":"a","nodeType":"VariableDeclaration","scope":513,"src":"2559:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":480,"name":"uint256","nodeType":"ElementaryTypeName","src":"2559:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":483,"name":"b","nodeType":"VariableDeclaration","scope":513,"src":"2570:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":482,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2558:22:4"},"returnParameters":{"id":487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":486,"name":"","nodeType":"VariableDeclaration","scope":513,"src":"2604:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":485,"name":"uint256","nodeType":"ElementaryTypeName","src":"2604:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2603:9:4"},"scope":596,"src":"2546:459:4","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":528,"nodeType":"Block","src":"3527:63:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":523,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"3548:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":524,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"3551:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"536166654d6174683a206469766973696f6e206279207a65726f","id":525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3554:28:4","subdenomination":null,"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":522,"name":"div","nodeType":"Identifier","overloadedDeclarations":[529,556],"referencedDeclaration":556,"src":"3544:3:4","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":526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3544:39:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":521,"id":527,"nodeType":"Return","src":"3537:46:4"}]},"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision 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\nuses an invalid opcode to revert (consuming all remaining gas).\n     * Requirements:\n- The divisor cannot be zero.","id":529,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":515,"name":"a","nodeType":"VariableDeclaration","scope":529,"src":"3473:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":514,"name":"uint256","nodeType":"ElementaryTypeName","src":"3473:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":517,"name":"b","nodeType":"VariableDeclaration","scope":529,"src":"3484:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":516,"name":"uint256","nodeType":"ElementaryTypeName","src":"3484:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3472:22:4"},"returnParameters":{"id":521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":520,"name":"","nodeType":"VariableDeclaration","scope":529,"src":"3518:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":519,"name":"uint256","nodeType":"ElementaryTypeName","src":"3518:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3517:9:4"},"scope":596,"src":"3460:130:4","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":555,"nodeType":"Block","src":"4160:243:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":541,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":533,"src":"4244:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4248:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4244:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":544,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":535,"src":"4251:12:4","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":540,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"4236:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4236:28:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":546,"nodeType":"ExpressionStatement","src":"4236:28:4"},{"assignments":[548],"declarations":[{"constant":false,"id":548,"name":"c","nodeType":"VariableDeclaration","scope":555,"src":"4274:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":547,"name":"uint256","nodeType":"ElementaryTypeName","src":"4274:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":552,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":549,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"4286:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":550,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":533,"src":"4290:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4286:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4274:17:4"},{"expression":{"argumentTypes":null,"id":553,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":548,"src":"4395:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":539,"id":554,"nodeType":"Return","src":"4388:8:4"}]},"documentation":"@dev Returns the integer division of two unsigned integers. Reverts with custom message on\ndivision 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\nuses an invalid opcode to revert (consuming all remaining gas).\n     * Requirements:\n- The divisor cannot be zero.","id":556,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":531,"name":"a","nodeType":"VariableDeclaration","scope":556,"src":"4078:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":530,"name":"uint256","nodeType":"ElementaryTypeName","src":"4078:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":533,"name":"b","nodeType":"VariableDeclaration","scope":556,"src":"4089:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":532,"name":"uint256","nodeType":"ElementaryTypeName","src":"4089:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":535,"name":"errorMessage","nodeType":"VariableDeclaration","scope":556,"src":"4100:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":534,"name":"string","nodeType":"ElementaryTypeName","src":"4100:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"4077:50:4"},"returnParameters":{"id":539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":538,"name":"","nodeType":"VariableDeclaration","scope":556,"src":"4151:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":537,"name":"uint256","nodeType":"ElementaryTypeName","src":"4151:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4150:9:4"},"scope":596,"src":"4065:338:4","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":571,"nodeType":"Block","src":"4914:61:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":566,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"4935:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":567,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":560,"src":"4938:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"536166654d6174683a206d6f64756c6f206279207a65726f","id":568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4941:26:4","subdenomination":null,"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":565,"name":"mod","nodeType":"Identifier","overloadedDeclarations":[572,595],"referencedDeclaration":595,"src":"4931:3:4","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":569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4931:37:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":564,"id":570,"nodeType":"Return","src":"4924:44:4"}]},"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n     * Requirements:\n- The divisor cannot be zero.","id":572,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":558,"name":"a","nodeType":"VariableDeclaration","scope":572,"src":"4860:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":557,"name":"uint256","nodeType":"ElementaryTypeName","src":"4860:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":560,"name":"b","nodeType":"VariableDeclaration","scope":572,"src":"4871:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":559,"name":"uint256","nodeType":"ElementaryTypeName","src":"4871:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4859:22:4"},"returnParameters":{"id":564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":563,"name":"","nodeType":"VariableDeclaration","scope":572,"src":"4905:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":562,"name":"uint256","nodeType":"ElementaryTypeName","src":"4905:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4904:9:4"},"scope":596,"src":"4847:128:4","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":594,"nodeType":"Block","src":"5534:68:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":584,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"5552:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5557:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5552:6:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":587,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"5560:12:4","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":583,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"5544:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5544:29:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":589,"nodeType":"ExpressionStatement","src":"5544:29:4"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":590,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"5590:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"id":591,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"5594:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5590:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":582,"id":593,"nodeType":"Return","src":"5583:12:4"}]},"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts with custom message when dividing by zero.\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n     * Requirements:\n- The divisor cannot be zero.","id":595,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nodeType":"FunctionDefinition","parameters":{"id":579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":574,"name":"a","nodeType":"VariableDeclaration","scope":595,"src":"5452:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":573,"name":"uint256","nodeType":"ElementaryTypeName","src":"5452:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":576,"name":"b","nodeType":"VariableDeclaration","scope":595,"src":"5463:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":575,"name":"uint256","nodeType":"ElementaryTypeName","src":"5463:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":578,"name":"errorMessage","nodeType":"VariableDeclaration","scope":595,"src":"5474:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":577,"name":"string","nodeType":"ElementaryTypeName","src":"5474:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"5451:50:4"},"returnParameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"name":"","nodeType":"VariableDeclaration","scope":595,"src":"5525:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":580,"name":"uint256","nodeType":"ElementaryTypeName","src":"5525:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5524:9:4"},"scope":596,"src":"5439:163:4","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":597,"src":"590:5014:4"}],"src":"0:5605:4"},"id":4},"@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol","exportedSymbols":{"XVSStore":[870]},"id":871,"nodeType":"SourceUnit","nodes":[{"id":598,"literals":["solidity","0.5",".16"],"nodeType":"PragmaDirective","src":"0:23:5"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/SafeBEP20.sol","file":"../Utils/SafeBEP20.sol","id":599,"nodeType":"ImportDirective","scope":871,"sourceUnit":392,"src":"24:32:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol","file":"../Utils/IBEP20.sol","id":600,"nodeType":"ImportDirective","scope":871,"sourceUnit":172,"src":"57:29:5","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":"@title XVS Store\n@author Venus\n@notice XVS Store responsible for distributing XVS rewards","fullyImplemented":true,"id":870,"linearizedBaseContracts":[870],"name":"XVSStore","nodeType":"ContractDefinition","nodes":[{"id":603,"libraryName":{"contractScope":null,"id":601,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":596,"src":"225:8:5","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$596","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"219:27:5","typeName":{"id":602,"name":"uint256","nodeType":"ElementaryTypeName","src":"238:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":606,"libraryName":{"contractScope":null,"id":604,"name":"SafeBEP20","nodeType":"UserDefinedTypeName","referencedDeclaration":391,"src":"257:9:5","typeDescriptions":{"typeIdentifier":"t_contract$_SafeBEP20_$391","typeString":"library SafeBEP20"}},"nodeType":"UsingForDirective","src":"251:27:5","typeName":{"contractScope":null,"id":605,"name":"IBEP20","nodeType":"UserDefinedTypeName","referencedDeclaration":171,"src":"271:6:5","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}}},{"constant":false,"id":608,"name":"admin","nodeType":"VariableDeclaration","scope":870,"src":"318:20:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":607,"name":"address","nodeType":"ElementaryTypeName","src":"318:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":610,"name":"pendingAdmin","nodeType":"VariableDeclaration","scope":870,"src":"387:27:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":609,"name":"address","nodeType":"ElementaryTypeName","src":"387:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":612,"name":"owner","nodeType":"VariableDeclaration","scope":870,"src":"455:20:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":611,"name":"address","nodeType":"ElementaryTypeName","src":"455:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":616,"name":"rewardTokens","nodeType":"VariableDeclaration","scope":870,"src":"516:44:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":615,"keyType":{"id":613,"name":"address","nodeType":"ElementaryTypeName","src":"524:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"516:24:5","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":614,"name":"bool","nodeType":"ElementaryTypeName","src":"535:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"value":null,"visibility":"public"},{"anonymous":false,"documentation":"@notice Emitted when pendingAdmin is changed","id":622,"name":"NewPendingAdmin","nodeType":"EventDefinition","parameters":{"id":621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":618,"indexed":false,"name":"oldPendingAdmin","nodeType":"VariableDeclaration","scope":622,"src":"642:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":617,"name":"address","nodeType":"ElementaryTypeName","src":"642:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":620,"indexed":false,"name":"newPendingAdmin","nodeType":"VariableDeclaration","scope":622,"src":"667:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":619,"name":"address","nodeType":"ElementaryTypeName","src":"667:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"641:50:5"},"src":"620:72:5"},{"anonymous":false,"documentation":"@notice Event emitted when admin changed","id":628,"name":"AdminTransferred","nodeType":"EventDefinition","parameters":{"id":627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":624,"indexed":true,"name":"oldAdmin","nodeType":"VariableDeclaration","scope":628,"src":"770:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":623,"name":"address","nodeType":"ElementaryTypeName","src":"770:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":626,"indexed":true,"name":"newAdmin","nodeType":"VariableDeclaration","scope":628,"src":"796:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":625,"name":"address","nodeType":"ElementaryTypeName","src":"796:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"769:52:5"},"src":"747:75:5"},{"anonymous":false,"documentation":"@notice Event emitted when owner changed","id":634,"name":"OwnerTransferred","nodeType":"EventDefinition","parameters":{"id":633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"indexed":true,"name":"oldOwner","nodeType":"VariableDeclaration","scope":634,"src":"900:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":629,"name":"address","nodeType":"ElementaryTypeName","src":"900:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":632,"indexed":true,"name":"newOwner","nodeType":"VariableDeclaration","scope":634,"src":"926:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":631,"name":"address","nodeType":"ElementaryTypeName","src":"926:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"899:52:5"},"src":"877:75:5"},{"body":{"id":642,"nodeType":"Block","src":"979:35:5","statements":[{"expression":{"argumentTypes":null,"id":640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":637,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"989:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":638,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"997:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"997:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"989:18:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":641,"nodeType":"ExpressionStatement","src":"989:18:5"}]},"documentation":null,"id":643,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":635,"nodeType":"ParameterList","parameters":[],"src":"969:2:5"},"returnParameters":{"id":636,"nodeType":"ParameterList","parameters":[],"src":"979:0:5"},"scope":870,"src":"958:56:5","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":654,"nodeType":"Block","src":"1041:74:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":646,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"1059:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1059:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":648,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"1073:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1059:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e2063616e","id":650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1080:16:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b23133e00453c5653fa03eafcd07ee82293e5fd9f839af75b39fe7053870cf04","typeString":"literal_string \"only admin can\""},"value":"only admin can"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b23133e00453c5653fa03eafcd07ee82293e5fd9f839af75b39fe7053870cf04","typeString":"literal_string \"only admin can\""}],"id":645,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"1051:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1051:46:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":652,"nodeType":"ExpressionStatement","src":"1051:46:5"},{"id":653,"nodeType":"PlaceholderStatement","src":"1107:1:5"}]},"documentation":null,"id":655,"name":"onlyAdmin","nodeType":"ModifierDefinition","parameters":{"id":644,"nodeType":"ParameterList","parameters":[],"src":"1038:2:5"},"src":"1020:95:5","visibility":"internal"},{"body":{"id":666,"nodeType":"Block","src":"1142:74:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":658,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"1160:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1160:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":660,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"1174:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1160:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c79206f776e65722063616e","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1181:16:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_39b72786d7672a5adaa4dd08bb468ad2b2e9b39434df1b4fc2f8099dd76cc265","typeString":"literal_string \"only owner can\""},"value":"only owner can"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_39b72786d7672a5adaa4dd08bb468ad2b2e9b39434df1b4fc2f8099dd76cc265","typeString":"literal_string \"only owner can\""}],"id":657,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"1152:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1152:46:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":664,"nodeType":"ExpressionStatement","src":"1152:46:5"},{"id":665,"nodeType":"PlaceholderStatement","src":"1208:1:5"}]},"documentation":null,"id":667,"name":"onlyOwner","nodeType":"ModifierDefinition","parameters":{"id":656,"nodeType":"ParameterList","parameters":[],"src":"1139:2:5"},"src":"1121:95:5","visibility":"internal"},{"body":{"id":729,"nodeType":"Block","src":"1716:406:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":679,"name":"rewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"1734:12:5","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":681,"indexExpression":{"argumentTypes":null,"id":680,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"1747:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1734:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"74727565","id":682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1757:4:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1734:27:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792072657761726420746f6b656e2063616e","id":684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1763:23:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e8f88438f2f3d7184f5933afccededeb2aa8de3b349d01936c7d2b3ee5467e80","typeString":"literal_string \"only reward token can\""},"value":"only reward token can"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e8f88438f2f3d7184f5933afccededeb2aa8de3b349d01936c7d2b3ee5467e80","typeString":"literal_string \"only reward token can\""}],"id":678,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"1726:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1726:61:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":686,"nodeType":"ExpressionStatement","src":"1726:61:5"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":688,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"1810:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1802:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1802:14:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1828:1:5","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":690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1820:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1820:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1802:28:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":728,"nodeType":"IfStatement","src":"1798:318:5","trueBody":{"id":727,"nodeType":"Block","src":"1832:284:5","statements":[{"assignments":[695],"declarations":[{"constant":false,"id":695,"name":"tokenBalance","nodeType":"VariableDeclaration","scope":727,"src":"1846:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":694,"name":"uint256","nodeType":"ElementaryTypeName","src":"1846:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":704,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":701,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"1901:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_XVSStore_$870","typeString":"contract XVSStore"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_XVSStore_$870","typeString":"contract XVSStore"}],"id":700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1893:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1893:13:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":697,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"1876:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":696,"name":"IBEP20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"1869:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBEP20_$171_$","typeString":"type(contract IBEP20)"}},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1869:13:5","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":116,"src":"1869:23:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1869:38:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1846:61:5"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":705,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"1925:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":706,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"1935:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1925:22:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":725,"nodeType":"Block","src":"2033:73:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":721,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":671,"src":"2078:3:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":722,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"2083:7:5","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":718,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"2058:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":717,"name":"IBEP20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"2051:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBEP20_$171_$","typeString":"type(contract IBEP20)"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2051:13:5","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"id":720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":204,"src":"2051:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBEP20_$171_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IBEP20_$171_$","typeString":"function (contract IBEP20,address,uint256)"}},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2051:40:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":724,"nodeType":"ExpressionStatement","src":"2051:40:5"}]},"id":726,"nodeType":"IfStatement","src":"1921:185:5","trueBody":{"id":716,"nodeType":"Block","src":"1949:78:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":712,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":671,"src":"1994:3:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":713,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"1999:12:5","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":709,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"1974:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":708,"name":"IBEP20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"1967:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBEP20_$171_$","typeString":"type(contract IBEP20)"}},"id":710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1967:13:5","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":204,"src":"1967:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBEP20_$171_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IBEP20_$171_$","typeString":"function (contract IBEP20,address,uint256)"}},"id":714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1967:45:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":715,"nodeType":"ExpressionStatement","src":"1967:45:5"}]}}]}}]},"documentation":"@notice Safely transfer rewards. Only active reward tokens can be sent using this function.\nOnly callable by owner\n@dev Safe reward token transfer function, just in case if rounding error causes pool to not have enough tokens.\n@param token Reward token to transfer\n@param _to Destination address of the reward\n@param _amount Amount to transfer","id":730,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":676,"modifierName":{"argumentTypes":null,"id":675,"name":"onlyOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":667,"src":"1706:9:5","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"1706:9:5"}],"name":"safeRewardTransfer","nodeType":"FunctionDefinition","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":669,"name":"token","nodeType":"VariableDeclaration","scope":730,"src":"1652:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":668,"name":"address","nodeType":"ElementaryTypeName","src":"1652:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":671,"name":"_to","nodeType":"VariableDeclaration","scope":730,"src":"1667:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":670,"name":"address","nodeType":"ElementaryTypeName","src":"1667:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":673,"name":"_amount","nodeType":"VariableDeclaration","scope":730,"src":"1680:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"1680:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1651:45:5"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[],"src":"1716:0:5"},"scope":870,"src":"1624:498:5","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":750,"nodeType":"Block","src":"2352:141:5","statements":[{"assignments":[738],"declarations":[{"constant":false,"id":738,"name":"oldPendingAdmin","nodeType":"VariableDeclaration","scope":750,"src":"2362:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":737,"name":"address","nodeType":"ElementaryTypeName","src":"2362:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":740,"initialValue":{"argumentTypes":null,"id":739,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":610,"src":"2388:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2362:38:5"},{"expression":{"argumentTypes":null,"id":743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":741,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":610,"src":"2410:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":742,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":732,"src":"2425:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2410:21:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":744,"nodeType":"ExpressionStatement","src":"2410:21:5"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":746,"name":"oldPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"2462:15:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":747,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":732,"src":"2479:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":745,"name":"NewPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":622,"src":"2446:15:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2446:40:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":749,"nodeType":"EmitStatement","src":"2441:45:5"}]},"documentation":"@notice Allows the admin to propose a new admin\nOnly callable admin\n@param _admin Propose an account as admin of the XVS store","id":751,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":735,"modifierName":{"argumentTypes":null,"id":734,"name":"onlyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"2342:9:5","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2342:9:5"}],"name":"setPendingAdmin","nodeType":"FunctionDefinition","parameters":{"id":733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":732,"name":"_admin","nodeType":"VariableDeclaration","scope":751,"src":"2317:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":731,"name":"address","nodeType":"ElementaryTypeName","src":"2317:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2316:16:5"},"returnParameters":{"id":736,"nodeType":"ParameterList","parameters":[],"src":"2352:0:5"},"scope":870,"src":"2292:201:5","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":790,"nodeType":"Block","src":"2666:332:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":755,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"2684:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2684:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":757,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":610,"src":"2698:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2684:26:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792070656e64696e672061646d696e","id":759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2712:20:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b0f25065c3db7a45d11b7fc35f6d8f9ed11fa08f93447b90753fb31e1e557c04","typeString":"literal_string \"only pending admin\""},"value":"only pending admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b0f25065c3db7a45d11b7fc35f6d8f9ed11fa08f93447b90753fb31e1e557c04","typeString":"literal_string \"only pending admin\""}],"id":754,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"2676:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2676:57:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":761,"nodeType":"ExpressionStatement","src":"2676:57:5"},{"assignments":[763],"declarations":[{"constant":false,"id":763,"name":"oldAdmin","nodeType":"VariableDeclaration","scope":790,"src":"2743:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":762,"name":"address","nodeType":"ElementaryTypeName","src":"2743:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":765,"initialValue":{"argumentTypes":null,"id":764,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"2762:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2743:24:5"},{"assignments":[767],"declarations":[{"constant":false,"id":767,"name":"oldPendingAdmin","nodeType":"VariableDeclaration","scope":790,"src":"2777:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":766,"name":"address","nodeType":"ElementaryTypeName","src":"2777:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":769,"initialValue":{"argumentTypes":null,"id":768,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":610,"src":"2803:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2777:38:5"},{"expression":{"argumentTypes":null,"id":772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":770,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"2826:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":771,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":610,"src":"2834:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2826:20:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":773,"nodeType":"ExpressionStatement","src":"2826:20:5"},{"expression":{"argumentTypes":null,"id":778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":774,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":610,"src":"2856:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2879:1:5","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":775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2871:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2871:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2856:25:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":779,"nodeType":"ExpressionStatement","src":"2856:25:5"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":781,"name":"oldPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":767,"src":"2913:15:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":782,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":610,"src":"2930:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":780,"name":"NewPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":622,"src":"2897:15:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2897:46:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":784,"nodeType":"EmitStatement","src":"2892:51:5"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":786,"name":"oldAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":763,"src":"2975:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":787,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"2985:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":785,"name":"AdminTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":628,"src":"2958:16:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2958:33:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":789,"nodeType":"EmitStatement","src":"2953:38:5"}]},"documentation":"@notice Allows an account that is pending as admin to accept the role\nnly calllable by the pending admin","id":791,"implemented":true,"kind":"function","modifiers":[],"name":"acceptAdmin","nodeType":"FunctionDefinition","parameters":{"id":752,"nodeType":"ParameterList","parameters":[],"src":"2654:2:5"},"returnParameters":{"id":753,"nodeType":"ParameterList","parameters":[],"src":"2666:0:5"},"scope":870,"src":"2634:364:5","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":820,"nodeType":"Block","src":"3194:186:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":799,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":793,"src":"3212:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3230:1:5","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":800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3222:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3222:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3212:20:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6e6577206f776e657220697320746865207a65726f2061646472657373","id":804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3234:31:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_38607ac5a9bcc7964325a39d4a1ce1900aea87a9097675134657eb809c0d1562","typeString":"literal_string \"new owner is the zero address\""},"value":"new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38607ac5a9bcc7964325a39d4a1ce1900aea87a9097675134657eb809c0d1562","typeString":"literal_string \"new owner is the zero address\""}],"id":798,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"3204:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3204:62:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":806,"nodeType":"ExpressionStatement","src":"3204:62:5"},{"assignments":[808],"declarations":[{"constant":false,"id":808,"name":"oldOwner","nodeType":"VariableDeclaration","scope":820,"src":"3276:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":807,"name":"address","nodeType":"ElementaryTypeName","src":"3276:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":810,"initialValue":{"argumentTypes":null,"id":809,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"3295:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3276:24:5"},{"expression":{"argumentTypes":null,"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":811,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"3310:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":812,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":793,"src":"3318:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3310:14:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":814,"nodeType":"ExpressionStatement","src":"3310:14:5"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":816,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"3356:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":817,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":793,"src":"3366:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":815,"name":"OwnerTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"3339:16:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3339:34:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":819,"nodeType":"EmitStatement","src":"3334:39:5"}]},"documentation":"@notice Set the contract owner\n@param _owner The address of the owner to set\nOnly callable admin","id":821,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":796,"modifierName":{"argumentTypes":null,"id":795,"name":"onlyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"3184:9:5","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3184:9:5"}],"name":"setNewOwner","nodeType":"FunctionDefinition","parameters":{"id":794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":793,"name":"_owner","nodeType":"VariableDeclaration","scope":821,"src":"3159:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":792,"name":"address","nodeType":"ElementaryTypeName","src":"3159:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3158:16:5"},"returnParameters":{"id":797,"nodeType":"ParameterList","parameters":[],"src":"3194:0:5"},"scope":870,"src":"3138:242:5","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":847,"nodeType":"Block","src":"3661:141:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":829,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"3679:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3679:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":831,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"3693:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3679:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":833,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"3702:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3702:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":835,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"3716:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3702:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3679:42:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"6f6e6c792061646d696e206f72206f776e65722063616e","id":838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3723:25:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_08625a188eb958e0d15cd281acc054f64c28121046a0647c4792d1d944cc7a2f","typeString":"literal_string \"only admin or owner can\""},"value":"only admin or owner can"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_08625a188eb958e0d15cd281acc054f64c28121046a0647c4792d1d944cc7a2f","typeString":"literal_string \"only admin or owner can\""}],"id":828,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1362,1363],"referencedDeclaration":1363,"src":"3671:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3671:78:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":840,"nodeType":"ExpressionStatement","src":"3671:78:5"},{"expression":{"argumentTypes":null,"id":845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":841,"name":"rewardTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"3759:12:5","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":843,"indexExpression":{"argumentTypes":null,"id":842,"name":"_tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":823,"src":"3772:13:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3759:27:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":844,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"3789:6:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3759:36:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":846,"nodeType":"ExpressionStatement","src":"3759:36:5"}]},"documentation":"@notice Set or disable a reward token\n@param _tokenAddress The address of a token to set as active or inactive\n@param status Set whether a reward token is active or not","id":848,"implemented":true,"kind":"function","modifiers":[],"name":"setRewardToken","nodeType":"FunctionDefinition","parameters":{"id":826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"name":"_tokenAddress","nodeType":"VariableDeclaration","scope":848,"src":"3616:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":822,"name":"address","nodeType":"ElementaryTypeName","src":"3616:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":825,"name":"status","nodeType":"VariableDeclaration","scope":848,"src":"3639:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":824,"name":"bool","nodeType":"ElementaryTypeName","src":"3639:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"3615:36:5"},"returnParameters":{"id":827,"nodeType":"ParameterList","parameters":[],"src":"3661:0:5"},"scope":870,"src":"3592:210:5","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":868,"nodeType":"Block","src":"4125:81:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":862,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"4178:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4178:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4170:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4170:19:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":865,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"4191:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":858,"name":"_tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":850,"src":"4142:13:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":857,"name":"IBEP20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"4135:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBEP20_$171_$","typeString":"type(contract IBEP20)"}},"id":859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4135:21:5","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"id":860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":204,"src":"4135:34:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBEP20_$171_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IBEP20_$171_$","typeString":"function (contract IBEP20,address,uint256)"}},"id":866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4135:64:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":867,"nodeType":"ExpressionStatement","src":"4135:64:5"}]},"documentation":"@notice Security function to allow the owner of the contract to withdraw from the contract\n@param _tokenAddress Reward token address to withdraw\n@param _amount Amount of token to withdraw","id":869,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":855,"modifierName":{"argumentTypes":null,"id":854,"name":"onlyOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":667,"src":"4115:9:5","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4115:9:5"}],"name":"emergencyRewardWithdraw","nodeType":"FunctionDefinition","parameters":{"id":853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":850,"name":"_tokenAddress","nodeType":"VariableDeclaration","scope":869,"src":"4066:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":849,"name":"address","nodeType":"ElementaryTypeName","src":"4066:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":852,"name":"_amount","nodeType":"VariableDeclaration","scope":869,"src":"4089:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":851,"name":"uint256","nodeType":"ElementaryTypeName","src":"4089:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4065:40:5"},"returnParameters":{"id":856,"nodeType":"ParameterList","parameters":[],"src":"4125:0:5"},"scope":870,"src":"4033:173:5","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":871,"src":"195:4013:5"}],"src":"0:4209:5"},"id":5},"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol","exportedSymbols":{"XVSVaultErrorReporter":[939]},"id":940,"nodeType":"SourceUnit","nodes":[{"id":872,"literals":["solidity","^","0.5",".16"],"nodeType":"PragmaDirective","src":"0:24:6"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":939,"linearizedBaseContracts":[939],"name":"XVSVaultErrorReporter","nodeType":"ContractDefinition","nodes":[{"canonicalName":"XVSVaultErrorReporter.Error","id":875,"members":[{"id":873,"name":"NO_ERROR","nodeType":"EnumValue","src":"84:8:6"},{"id":874,"name":"UNAUTHORIZED","nodeType":"EnumValue","src":"102:12:6"}],"name":"Error","nodeType":"EnumDefinition","src":"63:57:6"},{"canonicalName":"XVSVaultErrorReporter.FailureInfo","id":880,"members":[{"id":876,"name":"ACCEPT_ADMIN_PENDING_ADMIN_CHECK","nodeType":"EnumValue","src":"153:32:6"},{"id":877,"name":"ACCEPT_PENDING_IMPLEMENTATION_ADDRESS_CHECK","nodeType":"EnumValue","src":"195:43:6"},{"id":878,"name":"SET_PENDING_ADMIN_OWNER_CHECK","nodeType":"EnumValue","src":"248:29:6"},{"id":879,"name":"SET_PENDING_IMPLEMENTATION_OWNER_CHECK","nodeType":"EnumValue","src":"287:38:6"}],"name":"FailureInfo","nodeType":"EnumDefinition","src":"126:205:6"},{"anonymous":false,"documentation":"@dev `error` corresponds to enum Error; `info` corresponds to enum FailureInfo, and `detail` is an arbitrary\ncontract-specific code that enables us to report opaque error codes from upgradeable contracts.*","id":888,"name":"Failure","nodeType":"EventDefinition","parameters":{"id":887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":882,"indexed":false,"name":"error","nodeType":"VariableDeclaration","scope":888,"src":"587:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":881,"name":"uint","nodeType":"ElementaryTypeName","src":"587:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":884,"indexed":false,"name":"info","nodeType":"VariableDeclaration","scope":888,"src":"599:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":883,"name":"uint","nodeType":"ElementaryTypeName","src":"599:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":886,"indexed":false,"name":"detail","nodeType":"VariableDeclaration","scope":888,"src":"610:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":885,"name":"uint","nodeType":"ElementaryTypeName","src":"610:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"586:36:6"},"src":"573:50:6"},{"body":{"id":911,"nodeType":"Block","src":"818:82:6","statements":[{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":899,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"846:3:6","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}],"id":898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"841:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"841:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":902,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":892,"src":"857:4:6","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}],"id":901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"852:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"852:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"864:1:6","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":897,"name":"Failure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":888,"src":"833:7:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"833:33:6","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":906,"nodeType":"EmitStatement","src":"828:38:6"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":908,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"889:3:6","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}],"id":907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"884:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"884:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":896,"id":910,"nodeType":"Return","src":"877:16:6"}]},"documentation":"@dev use this when reporting a known error from the money market or a non-upgradeable collaborator","id":912,"implemented":true,"kind":"function","modifiers":[],"name":"fail","nodeType":"FunctionDefinition","parameters":{"id":893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":890,"name":"err","nodeType":"VariableDeclaration","scope":912,"src":"765:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"},"typeName":{"contractScope":null,"id":889,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":875,"src":"765:5:6","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":892,"name":"info","nodeType":"VariableDeclaration","scope":912,"src":"776:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"},"typeName":{"contractScope":null,"id":891,"name":"FailureInfo","nodeType":"UserDefinedTypeName","referencedDeclaration":880,"src":"776:11:6","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}},"value":null,"visibility":"internal"}],"src":"764:29:6"},"returnParameters":{"id":896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":895,"name":"","nodeType":"VariableDeclaration","scope":912,"src":"812:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":894,"name":"uint","nodeType":"ElementaryTypeName","src":"812:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"811:6:6"},"scope":939,"src":"751:149:6","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":937,"nodeType":"Block","src":"1107:92:6","statements":[{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":925,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":914,"src":"1135:3:6","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}],"id":924,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1130:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1130:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":928,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":916,"src":"1146:4:6","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}],"id":927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1141:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1141:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":930,"name":"opaqueError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":918,"src":"1153:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":923,"name":"Failure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":888,"src":"1122:7:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1122:43:6","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":932,"nodeType":"EmitStatement","src":"1117:48:6"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":934,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":914,"src":"1188:3:6","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}],"id":933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1183:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1183:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":922,"id":936,"nodeType":"Return","src":"1176:16:6"}]},"documentation":"@dev use this when reporting an opaque error from an upgradeable collaborator contract","id":938,"implemented":true,"kind":"function","modifiers":[],"name":"failOpaque","nodeType":"FunctionDefinition","parameters":{"id":919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":914,"name":"err","nodeType":"VariableDeclaration","scope":938,"src":"1036:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"},"typeName":{"contractScope":null,"id":913,"name":"Error","nodeType":"UserDefinedTypeName","referencedDeclaration":875,"src":"1036:5:6","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}},"value":null,"visibility":"internal"},{"constant":false,"id":916,"name":"info","nodeType":"VariableDeclaration","scope":938,"src":"1047:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"},"typeName":{"contractScope":null,"id":915,"name":"FailureInfo","nodeType":"UserDefinedTypeName","referencedDeclaration":880,"src":"1047:11:6","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}},"value":null,"visibility":"internal"},{"constant":false,"id":918,"name":"opaqueError","nodeType":"VariableDeclaration","scope":938,"src":"1065:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":917,"name":"uint","nodeType":"ElementaryTypeName","src":"1065:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1035:47:6"},"returnParameters":{"id":922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":921,"name":"","nodeType":"VariableDeclaration","scope":938,"src":"1101:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":920,"name":"uint","nodeType":"ElementaryTypeName","src":"1101:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1100:6:6"},"scope":939,"src":"1016:183:6","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"}],"scope":940,"src":"26:1175:6"}],"src":"0:1202:6"},"id":6},"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol","exportedSymbols":{"XVSVaultProxy":[1176]},"id":1177,"nodeType":"SourceUnit","nodes":[{"id":941,"literals":["solidity","^","0.5",".16"],"nodeType":"PragmaDirective","src":"0:24:7"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol","file":"./XVSVaultStorage.sol","id":942,"nodeType":"ImportDirective","scope":1177,"sourceUnit":1333,"src":"26:31:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol","file":"./XVSVaultErrorReporter.sol","id":943,"nodeType":"ImportDirective","scope":1177,"sourceUnit":940,"src":"58:37:7","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":944,"name":"XVSVaultAdminStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":1190,"src":"210:20:7","typeDescriptions":{"typeIdentifier":"t_contract$_XVSVaultAdminStorage_$1190","typeString":"contract XVSVaultAdminStorage"}},"id":945,"nodeType":"InheritanceSpecifier","src":"210:20:7"},{"arguments":null,"baseName":{"contractScope":null,"id":946,"name":"XVSVaultErrorReporter","nodeType":"UserDefinedTypeName","referencedDeclaration":939,"src":"232:21:7","typeDescriptions":{"typeIdentifier":"t_contract$_XVSVaultErrorReporter_$939","typeString":"contract XVSVaultErrorReporter"}},"id":947,"nodeType":"InheritanceSpecifier","src":"232:21:7"}],"contractDependencies":[939,1190],"contractKind":"contract","documentation":"@title XVS Vault Proxy\n@author Venus\n@notice XVS Vault Proxy contract","fullyImplemented":true,"id":1176,"linearizedBaseContracts":[1176,939,1190],"name":"XVSVaultProxy","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":"@notice Emitted when pendingXVSVaultImplementation is changed","id":953,"name":"NewPendingImplementation","nodeType":"EventDefinition","parameters":{"id":952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":949,"indexed":false,"name":"oldPendingImplementation","nodeType":"VariableDeclaration","scope":953,"src":"376:32:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":948,"name":"address","nodeType":"ElementaryTypeName","src":"376:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":951,"indexed":false,"name":"newPendingImplementation","nodeType":"VariableDeclaration","scope":953,"src":"410:32:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":950,"name":"address","nodeType":"ElementaryTypeName","src":"410:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"375:68:7"},"src":"345:99:7"},{"anonymous":false,"documentation":"@notice Emitted when pendingXVSVaultImplementation is accepted, which means XVS Vault implementation is updated","id":959,"name":"NewImplementation","nodeType":"EventDefinition","parameters":{"id":958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":955,"indexed":false,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":959,"src":"609:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":954,"name":"address","nodeType":"ElementaryTypeName","src":"609:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":957,"indexed":false,"name":"newImplementation","nodeType":"VariableDeclaration","scope":959,"src":"636:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":956,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"608:54:7"},"src":"585:78:7"},{"anonymous":false,"documentation":"@notice Emitted when pendingAdmin is changed","id":965,"name":"NewPendingAdmin","nodeType":"EventDefinition","parameters":{"id":964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":961,"indexed":false,"name":"oldPendingAdmin","nodeType":"VariableDeclaration","scope":965,"src":"759:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":960,"name":"address","nodeType":"ElementaryTypeName","src":"759:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":963,"indexed":false,"name":"newPendingAdmin","nodeType":"VariableDeclaration","scope":965,"src":"784:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":962,"name":"address","nodeType":"ElementaryTypeName","src":"784:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"758:50:7"},"src":"737:72:7"},{"anonymous":false,"documentation":"@notice Emitted when pendingAdmin is accepted, which means admin is updated","id":971,"name":"NewAdmin","nodeType":"EventDefinition","parameters":{"id":970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":967,"indexed":false,"name":"oldAdmin","nodeType":"VariableDeclaration","scope":971,"src":"929:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":966,"name":"address","nodeType":"ElementaryTypeName","src":"929:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":969,"indexed":false,"name":"newAdmin","nodeType":"VariableDeclaration","scope":971,"src":"947:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":968,"name":"address","nodeType":"ElementaryTypeName","src":"947:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"928:36:7"},"src":"914:51:7"},{"body":{"id":979,"nodeType":"Block","src":"992:66:7","statements":[{"expression":{"argumentTypes":null,"id":977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":974,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1183,"src":"1033:5:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":975,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"1041:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1041:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1033:18:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":978,"nodeType":"ExpressionStatement","src":"1033:18:7"}]},"documentation":null,"id":980,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":972,"nodeType":"ParameterList","parameters":[],"src":"982:2:7"},"returnParameters":{"id":973,"nodeType":"ParameterList","parameters":[],"src":"992:0:7"},"scope":1176,"src":"971:87:7","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":1018,"nodeType":"Block","src":"1185:426:7","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":987,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"1199:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1199:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":989,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1183,"src":"1213:5:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1199:19:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":999,"nodeType":"IfStatement","src":"1195:133:7","trueBody":{"id":998,"nodeType":"Block","src":"1220:108:7","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":992,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"1246:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$875_$","typeString":"type(enum XVSVaultErrorReporter.Error)"}},"id":993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1246:18:7","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":994,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"1266:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$880_$","typeString":"type(enum XVSVaultErrorReporter.FailureInfo)"}},"id":995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_PENDING_IMPLEMENTATION_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1266:50:7","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}],"id":991,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"1241:4:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$875_$_t_enum$_FailureInfo_$880_$returns$_t_uint256_$","typeString":"function (enum XVSVaultErrorReporter.Error,enum XVSVaultErrorReporter.FailureInfo) returns (uint256)"}},"id":996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1241:76:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":986,"id":997,"nodeType":"Return","src":"1234:83:7"}]}},{"assignments":[1001],"declarations":[{"constant":false,"id":1001,"name":"oldPendingImplementation","nodeType":"VariableDeclaration","scope":1018,"src":"1338:32:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1000,"name":"address","nodeType":"ElementaryTypeName","src":"1338:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1003,"initialValue":{"argumentTypes":null,"id":1002,"name":"pendingXVSVaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"1373:29:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1338:64:7"},{"expression":{"argumentTypes":null,"id":1006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1004,"name":"pendingXVSVaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"1413:29:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1005,"name":"newPendingImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":982,"src":"1445:24:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1413:56:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1007,"nodeType":"ExpressionStatement","src":"1413:56:7"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1009,"name":"oldPendingImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"1510:24:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1010,"name":"pendingXVSVaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"1536:29:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1008,"name":"NewPendingImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"1485:24:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1485:81:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1012,"nodeType":"EmitStatement","src":"1480:86:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1014,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"1589:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$875_$","typeString":"type(enum XVSVaultErrorReporter.Error)"}},"id":1015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1589:14:7","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}],"id":1013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1584:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1584:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":986,"id":1017,"nodeType":"Return","src":"1577:27:7"}]},"documentation":"* Admin Functions **","id":1019,"implemented":true,"kind":"function","modifiers":[],"name":"_setPendingImplementation","nodeType":"FunctionDefinition","parameters":{"id":983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":982,"name":"newPendingImplementation","nodeType":"VariableDeclaration","scope":1019,"src":"1129:32:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":981,"name":"address","nodeType":"ElementaryTypeName","src":"1129:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1128:34:7"},"returnParameters":{"id":986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":985,"name":"","nodeType":"VariableDeclaration","scope":1019,"src":"1179:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":984,"name":"uint","nodeType":"ElementaryTypeName","src":"1179:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1178:6:7"},"scope":1176,"src":"1094:517:7","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":1070,"nodeType":"Block","src":"1960:718:7","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1024,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"2023:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2023:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":1026,"name":"pendingXVSVaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"2037:29:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2023:43:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":1036,"nodeType":"IfStatement","src":"2019:162:7","trueBody":{"id":1035,"nodeType":"Block","src":"2068:113:7","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1029,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"2094:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$875_$","typeString":"type(enum XVSVaultErrorReporter.Error)"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2094:18:7","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1031,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"2114:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$880_$","typeString":"type(enum XVSVaultErrorReporter.FailureInfo)"}},"id":1032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ACCEPT_PENDING_IMPLEMENTATION_ADDRESS_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2114:55:7","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}],"id":1028,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"2089:4:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$875_$_t_enum$_FailureInfo_$880_$returns$_t_uint256_$","typeString":"function (enum XVSVaultErrorReporter.Error,enum XVSVaultErrorReporter.FailureInfo) returns (uint256)"}},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2089:81:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1023,"id":1034,"nodeType":"Return","src":"2082:88:7"}]}},{"assignments":[1038],"declarations":[{"constant":false,"id":1038,"name":"oldImplementation","nodeType":"VariableDeclaration","scope":1070,"src":"2243:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1037,"name":"address","nodeType":"ElementaryTypeName","src":"2243:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1040,"initialValue":{"argumentTypes":null,"id":1039,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"2271:14:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2243:42:7"},{"assignments":[1042],"declarations":[{"constant":false,"id":1042,"name":"oldPendingImplementation","nodeType":"VariableDeclaration","scope":1070,"src":"2295:32:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1041,"name":"address","nodeType":"ElementaryTypeName","src":"2295:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1044,"initialValue":{"argumentTypes":null,"id":1043,"name":"pendingXVSVaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"2330:29:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2295:64:7"},{"expression":{"argumentTypes":null,"id":1047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1045,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"2370:14:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1046,"name":"pendingXVSVaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"2387:29:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2370:46:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1048,"nodeType":"ExpressionStatement","src":"2370:46:7"},{"expression":{"argumentTypes":null,"id":1053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1049,"name":"pendingXVSVaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"2427:29:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":1051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2467:1:7","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":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2459:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2459:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2427:42:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1054,"nodeType":"ExpressionStatement","src":"2427:42:7"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1056,"name":"oldImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"2503:17:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1057,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"2522:14:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1055,"name":"NewImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"2485:17:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2485:52:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1059,"nodeType":"EmitStatement","src":"2480:57:7"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1061,"name":"oldPendingImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1042,"src":"2577:24:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1062,"name":"pendingXVSVaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"2603:29:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1060,"name":"NewPendingImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"2552:24:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2552:81:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1064,"nodeType":"EmitStatement","src":"2547:86:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1066,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"2656:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$875_$","typeString":"type(enum XVSVaultErrorReporter.Error)"}},"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2656:14:7","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}],"id":1065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2651:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":1068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2651:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1023,"id":1069,"nodeType":"Return","src":"2644:27:7"}]},"documentation":"@notice Accepts new implementation of XVS Vault. msg.sender must be pendingImplementation\n@dev Admin function for new implementation to accept it's role as implementation\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":1071,"implemented":true,"kind":"function","modifiers":[],"name":"_acceptImplementation","nodeType":"FunctionDefinition","parameters":{"id":1020,"nodeType":"ParameterList","parameters":[],"src":"1935:2:7"},"returnParameters":{"id":1023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1022,"name":"","nodeType":"VariableDeclaration","scope":1071,"src":"1954:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1021,"name":"uint","nodeType":"ElementaryTypeName","src":"1954:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1953:6:7"},"scope":1176,"src":"1905:773:7","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":1109,"nodeType":"Block","src":"3152:548:7","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1078,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"3198:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3198:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":1080,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1183,"src":"3212:5:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3198:19:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":1090,"nodeType":"IfStatement","src":"3194:124:7","trueBody":{"id":1089,"nodeType":"Block","src":"3219:99:7","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1083,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"3245:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$875_$","typeString":"type(enum XVSVaultErrorReporter.Error)"}},"id":1084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3245:18:7","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1085,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"3265:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$880_$","typeString":"type(enum XVSVaultErrorReporter.FailureInfo)"}},"id":1086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SET_PENDING_ADMIN_OWNER_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3265:41:7","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}],"id":1082,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"3240:4:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$875_$_t_enum$_FailureInfo_$880_$returns$_t_uint256_$","typeString":"function (enum XVSVaultErrorReporter.Error,enum XVSVaultErrorReporter.FailureInfo) returns (uint256)"}},"id":1087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3240:67:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1077,"id":1088,"nodeType":"Return","src":"3233:74:7"}]}},{"assignments":[1092],"declarations":[{"constant":false,"id":1092,"name":"oldPendingAdmin","nodeType":"VariableDeclaration","scope":1109,"src":"3388:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1091,"name":"address","nodeType":"ElementaryTypeName","src":"3388:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1094,"initialValue":{"argumentTypes":null,"id":1093,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1185,"src":"3414:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3388:38:7"},{"expression":{"argumentTypes":null,"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1095,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1185,"src":"3494:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1096,"name":"newPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1073,"src":"3509:15:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3494:30:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1098,"nodeType":"ExpressionStatement","src":"3494:30:7"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1100,"name":"oldPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1092,"src":"3622:15:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1101,"name":"newPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1073,"src":"3639:15:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1099,"name":"NewPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"3606:15:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3606:49:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1103,"nodeType":"EmitStatement","src":"3601:54:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1105,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"3678:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$875_$","typeString":"type(enum XVSVaultErrorReporter.Error)"}},"id":1106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3678:14:7","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}],"id":1104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3673:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":1107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3673:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1077,"id":1108,"nodeType":"Return","src":"3666:27:7"}]},"documentation":"@notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\n@dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\n@param newPendingAdmin New pending admin.\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":1110,"implemented":true,"kind":"function","modifiers":[],"name":"_setPendingAdmin","nodeType":"FunctionDefinition","parameters":{"id":1074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1073,"name":"newPendingAdmin","nodeType":"VariableDeclaration","scope":1110,"src":"3105:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1072,"name":"address","nodeType":"ElementaryTypeName","src":"3105:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3104:25:7"},"returnParameters":{"id":1077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1076,"name":"","nodeType":"VariableDeclaration","scope":1110,"src":"3146:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1075,"name":"uint","nodeType":"ElementaryTypeName","src":"3146:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3145:6:7"},"scope":1176,"src":"3079:621:7","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":1161,"nodeType":"Block","src":"4013:614:7","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1115,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"4067:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4067:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":1117,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1185,"src":"4081:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4067:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":1127,"nodeType":"IfStatement","src":"4063:134:7","trueBody":{"id":1126,"nodeType":"Block","src":"4095:102:7","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1120,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"4121:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$875_$","typeString":"type(enum XVSVaultErrorReporter.Error)"}},"id":1121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"UNAUTHORIZED","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4121:18:7","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1122,"name":"FailureInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"4141:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FailureInfo_$880_$","typeString":"type(enum XVSVaultErrorReporter.FailureInfo)"}},"id":1123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ACCEPT_ADMIN_PENDING_ADMIN_CHECK","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4141:44:7","typeDescriptions":{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"},{"typeIdentifier":"t_enum$_FailureInfo_$880","typeString":"enum XVSVaultErrorReporter.FailureInfo"}],"id":1119,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"4116:4:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_Error_$875_$_t_enum$_FailureInfo_$880_$returns$_t_uint256_$","typeString":"function (enum XVSVaultErrorReporter.Error,enum XVSVaultErrorReporter.FailureInfo) returns (uint256)"}},"id":1124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4116:70:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1114,"id":1125,"nodeType":"Return","src":"4109:77:7"}]}},{"assignments":[1129],"declarations":[{"constant":false,"id":1129,"name":"oldAdmin","nodeType":"VariableDeclaration","scope":1161,"src":"4259:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1128,"name":"address","nodeType":"ElementaryTypeName","src":"4259:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1131,"initialValue":{"argumentTypes":null,"id":1130,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1183,"src":"4278:5:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4259:24:7"},{"assignments":[1133],"declarations":[{"constant":false,"id":1133,"name":"oldPendingAdmin","nodeType":"VariableDeclaration","scope":1161,"src":"4293:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1132,"name":"address","nodeType":"ElementaryTypeName","src":"4293:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1135,"initialValue":{"argumentTypes":null,"id":1134,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1185,"src":"4319:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4293:38:7"},{"expression":{"argumentTypes":null,"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1136,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1183,"src":"4389:5:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1137,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1185,"src":"4397:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4389:20:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1139,"nodeType":"ExpressionStatement","src":"4389:20:7"},{"expression":{"argumentTypes":null,"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1140,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1185,"src":"4455:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":1142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4478:1:7","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":1141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4470:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":1143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4470:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4455:25:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1145,"nodeType":"ExpressionStatement","src":"4455:25:7"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1147,"name":"oldAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1129,"src":"4505:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1148,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1183,"src":"4515:5:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1146,"name":"NewAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"4496:8:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4496:25:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1150,"nodeType":"EmitStatement","src":"4491:30:7"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1152,"name":"oldPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1133,"src":"4552:15:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1153,"name":"pendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1185,"src":"4569:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1151,"name":"NewPendingAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"4536:15:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4536:46:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1155,"nodeType":"EmitStatement","src":"4531:51:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1157,"name":"Error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"4605:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Error_$875_$","typeString":"type(enum XVSVaultErrorReporter.Error)"}},"id":1158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"NO_ERROR","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4605:14:7","typeDescriptions":{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Error_$875","typeString":"enum XVSVaultErrorReporter.Error"}],"id":1156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4600:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":1159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4600:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1114,"id":1160,"nodeType":"Return","src":"4593:27:7"}]},"documentation":"@notice Accepts transfer of admin rights. msg.sender must be pendingAdmin\n@dev Admin function for pending admin to accept role and update admin\n@return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)","id":1162,"implemented":true,"kind":"function","modifiers":[],"name":"_acceptAdmin","nodeType":"FunctionDefinition","parameters":{"id":1111,"nodeType":"ParameterList","parameters":[],"src":"3988:2:7"},"returnParameters":{"id":1114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1113,"name":"","nodeType":"VariableDeclaration","scope":1162,"src":"4007:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1112,"name":"uint","nodeType":"ElementaryTypeName","src":"4007:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4006:6:7"},"scope":1176,"src":"3967:660:7","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":1174,"nodeType":"Block","src":"4845:478:7","statements":[{"assignments":[1166,null],"declarations":[{"constant":false,"id":1166,"name":"success","nodeType":"VariableDeclaration","scope":1174,"src":"4922:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1165,"name":"bool","nodeType":"ElementaryTypeName","src":"4922:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},null],"id":1172,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1169,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"4968:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4968:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":null,"id":1167,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"4940:14:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4940:27:7","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":1171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4940:37:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4921:56:7"},{"externalReferences":[{"success":{"declaration":1166,"isOffset":false,"isSlot":false,"src":"5123:7:7","valueSize":1}}],"id":1173,"nodeType":"InlineAssembly","operations":"{\n    let free_mem_ptr := mload(0x40)\n    returndatacopy(free_mem_ptr, 0, returndatasize())\n    switch success\n    case 0 {\n        revert(free_mem_ptr, returndatasize())\n    }\n    default {\n        return(free_mem_ptr, returndatasize())\n    }\n}","src":"4988:329:7"}]},"documentation":"@dev Delegates execution to an implementation contract.\nIt returns to the external caller whatever the implementation returns\nor forwards reverts.","id":1175,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":1163,"nodeType":"ParameterList","parameters":[],"src":"4825:2:7"},"returnParameters":{"id":1164,"nodeType":"ParameterList","parameters":[],"src":"4845:0:7"},"scope":1176,"src":"4817:506:7","stateMutability":"payable","superFunction":null,"visibility":"external"}],"scope":1177,"src":"184:5141:7"}],"src":"0:5326:7"},"id":7},"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol","exportedSymbols":{"XVSVaultAdminStorage":[1190],"XVSVaultStorage":[1332],"XVSVaultStorageV1":[1287]},"id":1333,"nodeType":"SourceUnit","nodes":[{"id":1178,"literals":["solidity","^","0.5",".16"],"nodeType":"PragmaDirective","src":"0:24:8"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol","file":"../Utils/SafeMath.sol","id":1179,"nodeType":"ImportDirective","scope":1333,"sourceUnit":597,"src":"26:31:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol","file":"../Utils/IBEP20.sol","id":1180,"nodeType":"ImportDirective","scope":1333,"sourceUnit":172,"src":"58:29:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol","file":"../Tokens/Prime/IPrime.sol","id":1181,"nodeType":"ImportDirective","scope":1333,"sourceUnit":28,"src":"88:36:8","symbolAliases":[],"unitAlias":""},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":1190,"linearizedBaseContracts":[1190],"name":"XVSVaultAdminStorage","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1183,"name":"admin","nodeType":"VariableDeclaration","scope":1190,"src":"225:20:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1182,"name":"address","nodeType":"ElementaryTypeName","src":"225:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":1185,"name":"pendingAdmin","nodeType":"VariableDeclaration","scope":1190,"src":"323:27:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1184,"name":"address","nodeType":"ElementaryTypeName","src":"323:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":1187,"name":"implementation","nodeType":"VariableDeclaration","scope":1190,"src":"415:29:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1186,"name":"address","nodeType":"ElementaryTypeName","src":"415:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":1189,"name":"pendingXVSVaultImplementation","nodeType":"VariableDeclaration","scope":1190,"src":"510:44:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1188,"name":"address","nodeType":"ElementaryTypeName","src":"510:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"}],"scope":1333,"src":"126:431:8"},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":1191,"name":"XVSVaultAdminStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":1190,"src":"589:20:8","typeDescriptions":{"typeIdentifier":"t_contract$_XVSVaultAdminStorage_$1190","typeString":"contract XVSVaultAdminStorage"}},"id":1192,"nodeType":"InheritanceSpecifier","src":"589:20:8"}],"contractDependencies":[1190],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":1287,"linearizedBaseContracts":[1287,1190],"name":"XVSVaultStorageV1","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1194,"name":"_notEntered","nodeType":"VariableDeclaration","scope":1287,"src":"670:25:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1193,"name":"bool","nodeType":"ElementaryTypeName","src":"670:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":1196,"name":"xvsStore","nodeType":"VariableDeclaration","scope":1287,"src":"741:23:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1195,"name":"address","nodeType":"ElementaryTypeName","src":"741:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":1198,"name":"xvsAddress","nodeType":"VariableDeclaration","scope":1287,"src":"809:25:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1197,"name":"address","nodeType":"ElementaryTypeName","src":"809:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":1202,"name":"rewardTokenAmountsPerBlockOrSecond","nodeType":"VariableDeclaration","scope":1287,"src":"927:69:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1201,"keyType":{"id":1199,"name":"address","nodeType":"ElementaryTypeName","src":"935:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"927:27:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":1200,"name":"uint256","nodeType":"ElementaryTypeName","src":"946:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"canonicalName":"XVSVaultStorageV1.UserInfo","id":1209,"members":[{"constant":false,"id":1204,"name":"amount","nodeType":"VariableDeclaration","scope":1209,"src":"1064:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1203,"name":"uint256","nodeType":"ElementaryTypeName","src":"1064:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1206,"name":"rewardDebt","nodeType":"VariableDeclaration","scope":1209,"src":"1088:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1205,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1208,"name":"pendingWithdrawals","nodeType":"VariableDeclaration","scope":1209,"src":"1116:26:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1207,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"UserInfo","nodeType":"StructDefinition","scope":1287,"src":"1038:111:8","visibility":"public"},{"canonicalName":"XVSVaultStorageV1.PoolInfo","id":1220,"members":[{"constant":false,"id":1211,"name":"token","nodeType":"VariableDeclaration","scope":1220,"src":"1207:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"},"typeName":{"contractScope":null,"id":1210,"name":"IBEP20","nodeType":"UserDefinedTypeName","referencedDeclaration":171,"src":"1207:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IBEP20_$171","typeString":"contract IBEP20"}},"value":null,"visibility":"internal"},{"constant":false,"id":1213,"name":"allocPoint","nodeType":"VariableDeclaration","scope":1220,"src":"1268:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1212,"name":"uint256","nodeType":"ElementaryTypeName","src":"1268:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1215,"name":"lastRewardBlockOrSecond","nodeType":"VariableDeclaration","scope":1220,"src":"1349:31:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1214,"name":"uint256","nodeType":"ElementaryTypeName","src":"1349:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1217,"name":"accRewardPerShare","nodeType":"VariableDeclaration","scope":1220,"src":"1461:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1216,"name":"uint256","nodeType":"ElementaryTypeName","src":"1461:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1219,"name":"lockPeriod","nodeType":"VariableDeclaration","scope":1220,"src":"1545:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1218,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"PoolInfo","nodeType":"StructDefinition","scope":1287,"src":"1181:447:8","visibility":"public"},{"canonicalName":"XVSVaultStorageV1.WithdrawalRequest","id":1227,"members":[{"constant":false,"id":1222,"name":"amount","nodeType":"VariableDeclaration","scope":1227,"src":"1714:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1221,"name":"uint256","nodeType":"ElementaryTypeName","src":"1714:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1224,"name":"lockedUntil","nodeType":"VariableDeclaration","scope":1227,"src":"1738:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1223,"name":"uint128","nodeType":"ElementaryTypeName","src":"1738:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"value":null,"visibility":"internal"},{"constant":false,"id":1226,"name":"afterUpgrade","nodeType":"VariableDeclaration","scope":1227,"src":"1767:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":1225,"name":"uint128","nodeType":"ElementaryTypeName","src":"1767:7:8","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"value":null,"visibility":"internal"}],"name":"WithdrawalRequest","nodeType":"StructDefinition","scope":1287,"src":"1679:115:8","visibility":"public"},{"constant":false,"id":1235,"name":"userInfos","nodeType":"VariableDeclaration","scope":1287,"src":"1845:87:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$1209_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => struct XVSVaultStorageV1.UserInfo)))"},"typeName":{"id":1234,"keyType":{"id":1228,"name":"address","nodeType":"ElementaryTypeName","src":"1853:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1845:68:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$1209_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => struct XVSVaultStorageV1.UserInfo)))"},"valueType":{"id":1233,"keyType":{"id":1229,"name":"uint256","nodeType":"ElementaryTypeName","src":"1872:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1864:48:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$1209_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct XVSVaultStorageV1.UserInfo))"},"valueType":{"id":1232,"keyType":{"id":1230,"name":"address","nodeType":"ElementaryTypeName","src":"1891:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1883:28:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserInfo_$1209_storage_$","typeString":"mapping(address => struct XVSVaultStorageV1.UserInfo)"},"valueType":{"contractScope":null,"id":1231,"name":"UserInfo","nodeType":"UserDefinedTypeName","referencedDeclaration":1209,"src":"1902:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_UserInfo_$1209_storage_ptr","typeString":"struct XVSVaultStorageV1.UserInfo"}}}}},"value":null,"visibility":"internal"},{"constant":false,"id":1240,"name":"poolInfos","nodeType":"VariableDeclaration","scope":1287,"src":"1965:47:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_PoolInfo_$1220_storage_$dyn_storage_$","typeString":"mapping(address => struct XVSVaultStorageV1.PoolInfo[])"},"typeName":{"id":1239,"keyType":{"id":1236,"name":"address","nodeType":"ElementaryTypeName","src":"1973:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1965:30:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_PoolInfo_$1220_storage_$dyn_storage_$","typeString":"mapping(address => struct XVSVaultStorageV1.PoolInfo[])"},"valueType":{"baseType":{"contractScope":null,"id":1237,"name":"PoolInfo","nodeType":"UserDefinedTypeName","referencedDeclaration":1220,"src":"1984:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_PoolInfo_$1220_storage_ptr","typeString":"struct XVSVaultStorageV1.PoolInfo"}},"id":1238,"length":null,"nodeType":"ArrayTypeName","src":"1984:10:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PoolInfo_$1220_storage_$dyn_storage_ptr","typeString":"struct XVSVaultStorageV1.PoolInfo[]"}}},"value":null,"visibility":"public"},{"constant":false,"id":1244,"name":"totalAllocPoints","nodeType":"VariableDeclaration","scope":1287,"src":"2106:51:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1243,"keyType":{"id":1241,"name":"address","nodeType":"ElementaryTypeName","src":"2114:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2106:27:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":1242,"name":"uint256","nodeType":"ElementaryTypeName","src":"2125:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":false,"id":1253,"name":"withdrawalRequests","nodeType":"VariableDeclaration","scope":1287,"src":"2222:107:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_array$_t_struct$_WithdrawalRequest_$1227_storage_$dyn_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => struct XVSVaultStorageV1.WithdrawalRequest[])))"},"typeName":{"id":1252,"keyType":{"id":1245,"name":"address","nodeType":"ElementaryTypeName","src":"2230:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2222:79:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_array$_t_struct$_WithdrawalRequest_$1227_storage_$dyn_storage_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => struct XVSVaultStorageV1.WithdrawalRequest[])))"},"valueType":{"id":1251,"keyType":{"id":1246,"name":"uint256","nodeType":"ElementaryTypeName","src":"2249:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2241:59:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_array$_t_struct$_WithdrawalRequest_$1227_storage_$dyn_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct XVSVaultStorageV1.WithdrawalRequest[]))"},"valueType":{"id":1250,"keyType":{"id":1247,"name":"address","nodeType":"ElementaryTypeName","src":"2268:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2260:39:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_WithdrawalRequest_$1227_storage_$dyn_storage_$","typeString":"mapping(address => struct XVSVaultStorageV1.WithdrawalRequest[])"},"valueType":{"baseType":{"contractScope":null,"id":1248,"name":"WithdrawalRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":1227,"src":"2279:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawalRequest_$1227_storage_ptr","typeString":"struct XVSVaultStorageV1.WithdrawalRequest"}},"id":1249,"length":null,"nodeType":"ArrayTypeName","src":"2279:19:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawalRequest_$1227_storage_$dyn_storage_ptr","typeString":"struct XVSVaultStorageV1.WithdrawalRequest[]"}}}}},"value":null,"visibility":"internal"},{"constant":false,"id":1257,"name":"__oldDelegatesSlot","nodeType":"VariableDeclaration","scope":1287,"src":"2428:54:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":1256,"keyType":{"id":1254,"name":"address","nodeType":"ElementaryTypeName","src":"2436:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2428:27:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":1255,"name":"address","nodeType":"ElementaryTypeName","src":"2447:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"value":null,"visibility":"private"},{"canonicalName":"XVSVaultStorageV1.Checkpoint","id":1262,"members":[{"constant":false,"id":1259,"name":"fromBlockOrSecond","nodeType":"VariableDeclaration","scope":1262,"src":"2603:24:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1258,"name":"uint32","nodeType":"ElementaryTypeName","src":"2603:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"},{"constant":false,"id":1261,"name":"votes","nodeType":"VariableDeclaration","scope":1262,"src":"2637:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1260,"name":"uint96","nodeType":"ElementaryTypeName","src":"2637:6:8","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"name":"Checkpoint","nodeType":"StructDefinition","scope":1287,"src":"2575:81:8","visibility":"public"},{"constant":false,"id":1268,"name":"__oldCheckpointsSlot","nodeType":"VariableDeclaration","scope":1287,"src":"2776:78:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$1262_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVSVaultStorageV1.Checkpoint))"},"typeName":{"id":1267,"keyType":{"id":1263,"name":"address","nodeType":"ElementaryTypeName","src":"2784:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2776:49:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$1262_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVSVaultStorageV1.Checkpoint))"},"valueType":{"id":1266,"keyType":{"id":1264,"name":"uint32","nodeType":"ElementaryTypeName","src":"2803:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"2795:29:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$1262_storage_$","typeString":"mapping(uint32 => struct XVSVaultStorageV1.Checkpoint)"},"valueType":{"contractScope":null,"id":1265,"name":"Checkpoint","nodeType":"UserDefinedTypeName","referencedDeclaration":1262,"src":"2813:10:8","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1262_storage_ptr","typeString":"struct XVSVaultStorageV1.Checkpoint"}}}},"value":null,"visibility":"private"},{"constant":false,"id":1272,"name":"__oldNumCheckpointsSlot","nodeType":"VariableDeclaration","scope":1287,"src":"2961:58:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"},"typeName":{"id":1271,"keyType":{"id":1269,"name":"address","nodeType":"ElementaryTypeName","src":"2969:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2961:26:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"},"valueType":{"id":1270,"name":"uint32","nodeType":"ElementaryTypeName","src":"2980:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}},"value":null,"visibility":"private"},{"constant":false,"id":1276,"name":"nonces","nodeType":"VariableDeclaration","scope":1287,"src":"3097:38:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1275,"keyType":{"id":1273,"name":"address","nodeType":"ElementaryTypeName","src":"3105:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3097:24:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":1274,"name":"uint","nodeType":"ElementaryTypeName","src":"3116:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":true,"id":1281,"name":"DOMAIN_TYPEHASH","nodeType":"VariableDeclaration","scope":1287,"src":"3205:130:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1277,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3205:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":1279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3265:69:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866","typeString":"literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866","typeString":"literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""}],"id":1278,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"3255:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3255:80:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"id":1286,"name":"DELEGATION_TYPEHASH","nodeType":"VariableDeclaration","scope":1287,"src":"3426:125:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1282,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3426:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"44656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929","id":1284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3490:60:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf","typeString":"literal_string \"Delegation(address delegatee,uint256 nonce,uint256 expiry)\""},"value":"Delegation(address delegatee,uint256 nonce,uint256 expiry)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf","typeString":"literal_string \"Delegation(address delegatee,uint256 nonce,uint256 expiry)\""}],"id":1283,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"3480:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3480:71:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"}],"scope":1333,"src":"559:2995:8"},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":1288,"name":"XVSVaultStorageV1","nodeType":"UserDefinedTypeName","referencedDeclaration":1287,"src":"3584:17:8","typeDescriptions":{"typeIdentifier":"t_contract$_XVSVaultStorageV1_$1287","typeString":"contract XVSVaultStorageV1"}},"id":1289,"nodeType":"InheritanceSpecifier","src":"3584:17:8"}],"contractDependencies":[1190,1287],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":1332,"linearizedBaseContracts":[1332,1287,1190],"name":"XVSVaultStorage","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1293,"name":"delegates","nodeType":"VariableDeclaration","scope":1332,"src":"3659:44:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":1292,"keyType":{"id":1290,"name":"address","nodeType":"ElementaryTypeName","src":"3667:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3659:27:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":1291,"name":"address","nodeType":"ElementaryTypeName","src":"3678:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"value":null,"visibility":"public"},{"constant":false,"id":1299,"name":"checkpoints","nodeType":"VariableDeclaration","scope":1332,"src":"3783:68:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$1262_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVSVaultStorageV1.Checkpoint))"},"typeName":{"id":1298,"keyType":{"id":1294,"name":"address","nodeType":"ElementaryTypeName","src":"3791:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3783:49:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$1262_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVSVaultStorageV1.Checkpoint))"},"valueType":{"id":1297,"keyType":{"id":1295,"name":"uint32","nodeType":"ElementaryTypeName","src":"3810:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"3802:29:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$1262_storage_$","typeString":"mapping(uint32 => struct XVSVaultStorageV1.Checkpoint)"},"valueType":{"contractScope":null,"id":1296,"name":"Checkpoint","nodeType":"UserDefinedTypeName","referencedDeclaration":1262,"src":"3820:10:8","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1262_storage_ptr","typeString":"struct XVSVaultStorageV1.Checkpoint"}}}},"value":null,"visibility":"public"},{"constant":false,"id":1303,"name":"numCheckpoints","nodeType":"VariableDeclaration","scope":1332,"src":"3917:48:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"},"typeName":{"id":1302,"keyType":{"id":1300,"name":"address","nodeType":"ElementaryTypeName","src":"3925:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3917:26:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"},"valueType":{"id":1301,"name":"uint32","nodeType":"ElementaryTypeName","src":"3936:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}},"value":null,"visibility":"public"},{"constant":false,"id":1309,"name":"totalPendingWithdrawals","nodeType":"VariableDeclaration","scope":1332,"src":"4071:78:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":1308,"keyType":{"id":1304,"name":"address","nodeType":"ElementaryTypeName","src":"4079:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4071:47:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":1307,"keyType":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"4098:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"4090:27:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":1306,"name":"uint256","nodeType":"ElementaryTypeName","src":"4109:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"value":null,"visibility":"public"},{"constant":false,"id":1311,"name":"vaultPaused","nodeType":"VariableDeclaration","scope":1332,"src":"4198:23:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1310,"name":"bool","nodeType":"ElementaryTypeName","src":"4198:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"public"},{"constant":false,"id":1315,"name":"isStakedToken","nodeType":"VariableDeclaration","scope":1332,"src":"4286:45:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":1314,"keyType":{"id":1312,"name":"address","nodeType":"ElementaryTypeName","src":"4294:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4286:24:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":1313,"name":"bool","nodeType":"ElementaryTypeName","src":"4305:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"value":null,"visibility":"public"},{"constant":false,"id":1321,"name":"pendingRewardTransfers","nodeType":"VariableDeclaration","scope":1332,"src":"4413:77:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":1320,"keyType":{"id":1316,"name":"address","nodeType":"ElementaryTypeName","src":"4421:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4413:47:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":1319,"keyType":{"id":1317,"name":"address","nodeType":"ElementaryTypeName","src":"4440:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4432:27:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":1318,"name":"uint256","nodeType":"ElementaryTypeName","src":"4451:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"value":null,"visibility":"public"},{"constant":false,"id":1323,"name":"primeToken","nodeType":"VariableDeclaration","scope":1332,"src":"4542:24:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPrime_$27","typeString":"contract IPrime"},"typeName":{"contractScope":null,"id":1322,"name":"IPrime","nodeType":"UserDefinedTypeName","referencedDeclaration":27,"src":"4542:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IPrime_$27","typeString":"contract IPrime"}},"value":null,"visibility":"public"},{"constant":false,"id":1325,"name":"primeRewardToken","nodeType":"VariableDeclaration","scope":1332,"src":"4646:31:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1324,"name":"address","nodeType":"ElementaryTypeName","src":"4646:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":1327,"name":"primePoolId","nodeType":"VariableDeclaration","scope":1332,"src":"4752:26:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1326,"name":"uint256","nodeType":"ElementaryTypeName","src":"4752:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"id":1331,"name":"__gap","nodeType":"VariableDeclaration","scope":1332,"src":"5044:25:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$46_storage","typeString":"uint256[46]"},"typeName":{"baseType":{"id":1328,"name":"uint256","nodeType":"ElementaryTypeName","src":"5044:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1330,"length":{"argumentTypes":null,"hexValue":"3436","id":1329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5052:2:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_46_by_1","typeString":"int_const 46"},"value":"46"},"nodeType":"ArrayTypeName","src":"5044:11:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$46_storage_ptr","typeString":"uint256[46]"}},"value":null,"visibility":"private"}],"scope":1333,"src":"3556:1516:8"}],"src":"0:5073:8"},"id":8},"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol","exportedSymbols":{},"id":1336,"nodeType":"SourceUnit","nodes":[{"id":1334,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:9"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol","file":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol","id":1335,"nodeType":"ImportDirective","scope":1336,"sourceUnit":871,"src":"63:71:9","symbolAliases":[],"unitAlias":""}],"src":"39:96:9"},"id":9},"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol","exportedSymbols":{},"id":1339,"nodeType":"SourceUnit","nodes":[{"id":1337,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:10"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol","file":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol","id":1338,"nodeType":"ImportDirective","scope":1339,"sourceUnit":940,"src":"63:84:10","symbolAliases":[],"unitAlias":""}],"src":"39:109:10"},"id":10},"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol","exportedSymbols":{},"id":1342,"nodeType":"SourceUnit","nodes":[{"id":1340,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:11"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol","file":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol","id":1341,"nodeType":"ImportDirective","scope":1342,"sourceUnit":1177,"src":"63:76:11","symbolAliases":[],"unitAlias":""}],"src":"39:101:11"},"id":11},"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol","exportedSymbols":{},"id":1345,"nodeType":"SourceUnit","nodes":[{"id":1343,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:12"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol","file":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol","id":1344,"nodeType":"ImportDirective","scope":1345,"sourceUnit":1333,"src":"63:78:12","symbolAliases":[],"unitAlias":""}],"src":"39:103:12"},"id":12}},"contracts":{"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol":{"IPrime":{"abi":[{"constant":false,"inputs":[{"internalType":"address","name":"vToken","type":"address"}],"name":"accrueInterest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"market","type":"address"}],"name":"accrueInterestAndUpdateScore","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isUserPrimeHolder","outputs":[{"internalType":"bool","name":"isPrimeHolder","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"xvsUpdated","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Venus","methods":{"accrueInterest(address)":{"params":{"vToken":"the market for which to distribute the income"}},"accrueInterestAndUpdateScore(address,address)":{"params":{"market":"the market for which to accrue interest and update score","user":"the account address for which to accrue interest and update score"}},"isUserPrimeHolder(address)":{"params":{"isPrimeHolder":"returns if the user is a prime holder"}},"xvsUpdated(address)":{"params":{"user":"the account address whose balance was updated"}}},"title":"IPrime"},"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"accrueInterest(address)":"9198e515","accrueInterestAndUpdateScore(address,address)":"cf329d16","isUserPrimeHolder(address)":"38f6a434","xvsUpdated(address)":"37f23cd3"}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"accrueInterest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"}],\"name\":\"accrueInterestAndUpdateScore\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isUserPrimeHolder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isPrimeHolder\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"xvsUpdated\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"methods\":{\"accrueInterest(address)\":{\"params\":{\"vToken\":\"the market for which to distribute the income\"}},\"accrueInterestAndUpdateScore(address,address)\":{\"params\":{\"market\":\"the market for which to accrue interest and update score\",\"user\":\"the account address for which to accrue interest and update score\"}},\"isUserPrimeHolder(address)\":{\"params\":{\"isPrimeHolder\":\"returns if the user is a prime holder\"}},\"xvsUpdated(address)\":{\"params\":{\"user\":\"the account address whose balance was updated\"}}},\"title\":\"IPrime\"},\"userdoc\":{\"methods\":{\"accrueInterest(address)\":{\"notice\":\"Distributes income from market since last distribution\"},\"accrueInterestAndUpdateScore(address,address)\":{\"notice\":\"accrues interest and updates score for an user for a specific market\"},\"isUserPrimeHolder(address)\":{\"notice\":\"Returns if user is a prime holder\"},\"xvsUpdated(address)\":{\"notice\":\"Executed by XVSVault whenever user's XVSVault balance changes\"}},\"notice\":\"Interface for Prime Token\"}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol\":\"IPrime\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.5.16;\\npragma experimental ABIEncoderV2;\\n\\n/**\\n * @title IPrime\\n * @author Venus\\n * @notice Interface for Prime Token\\n */\\ninterface IPrime {\\n    /**\\n     * @notice Executed by XVSVault whenever user's XVSVault balance changes\\n     * @param user the account address whose balance was updated\\n     */\\n    function xvsUpdated(address user) external;\\n\\n    /**\\n     * @notice accrues interest and updates score for an user for a specific market\\n     * @param user the account address for which to accrue interest and update score\\n     * @param market the market for which to accrue interest and update score\\n     */\\n    function accrueInterestAndUpdateScore(address user, address market) external;\\n\\n    /**\\n     * @notice Distributes income from market since last distribution\\n     * @param vToken the market for which to distribute the income\\n     */\\n    function accrueInterest(address vToken) external;\\n\\n    /**\\n     * @notice Returns if user is a prime holder\\n     * @param isPrimeHolder returns if the user is a prime holder\\n     */\\n    function isUserPrimeHolder(address user) external view returns (bool isPrimeHolder);\\n}\\n\",\"keccak256\":\"0x58861c0c05b8757f1a5d50b107eff479c8680878e6aa51bc93af420caf73f500\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"methods":{"accrueInterest(address)":{"notice":"Distributes income from market since last distribution"},"accrueInterestAndUpdateScore(address,address)":{"notice":"accrues interest and updates score for an user for a specific market"},"isUserPrimeHolder(address)":{"notice":"Returns if user is a prime holder"},"xvsUpdated(address)":{"notice":"Executed by XVSVault whenever user's XVSVault balance changes"}},"notice":"Interface for Prime Token"}}},"@venusprotocol/venus-protocol/contracts/Utils/Address.sol":{"Address":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","methods":{}},"evm":{"bytecode":{"linkReferences":{},"object":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582017cb9b523dcd79e86a0e30db23d4550328c026c2859e1c301c9e9c38943a131d64736f6c63430005100032","opcodes":"PUSH1 0x55 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 PUSH6 0x627A7A723158 KECCAK256 OR 0xCB SWAP12 MSTORE RETURNDATASIZE 0xCD PUSH26 0xE86A0E30DB23D4550328C026C2859E1C301C9E9C38943A131D64 PUSH20 0x6F6C634300051000320000000000000000000000 ","sourceMap":"93:2939:1:-;;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":{"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582017cb9b523dcd79e86a0e30db23d4550328c026c2859e1c301c9e9c38943a131d64736f6c63430005100032","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 OR 0xCB SWAP12 MSTORE RETURNDATASIZE 0xCD PUSH26 0xE86A0E30DB23D4550328C026C2859E1C301C9E9C38943A131D64 PUSH20 0x6F6C634300051000320000000000000000000000 ","sourceMap":"93:2939:1:-;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"94","totalCost":"17094"},"internal":{"isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","toPayable(address)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/Utils/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Utils/Address.sol\":{\"content\":\"pragma solidity ^0.5.5;\\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        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\\n        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\\n        // for accounts without code, i.e. `keccak256('')`\\n        bytes32 codehash;\\n        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            codehash := extcodehash(account)\\n        }\\n        return (codehash != accountHash && codehash != 0x0);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` into `address payable`. Note that this is\\n     * simply a type cast: the actual underlying value is not changed.\\n     *\\n     * _Available since v2.4.0._\\n     */\\n    function toPayable(address account) internal pure returns (address payable) {\\n        return address(uint160(account));\\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     * _Available since v2.4.0._\\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-call-value\\n        // solium-disable-next-line security/no-call-value\\n        (bool success, ) = recipient.call.value(amount)(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n}\\n\",\"keccak256\":\"0x3c2ef780599a2ae6913282b982633f07e405a4a9c8511590df571e2b773aef9d\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"methods":{}}}},"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol":{"IBEP20":{"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"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the BEP20 standard as defined in the EIP. Does not include the optional functions; to access them see {BEP20Detailed}.","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."}}},"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"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.5.16+commit.9c3226ce\"},\"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\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"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\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the BEP20 standard as defined in the EIP. Does not include the optional functions; to access them see {BEP20Detailed}.\",\"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.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol\":\"IBEP20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the BEP20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {BEP20Detailed}.\\n */\\ninterface IBEP20 {\\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\",\"keccak256\":\"0x839b08895eb1ad83502d3631e8e9e3a856d2a8c63c46f070d604af7b26c62c07\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"methods":{}}}},"@venusprotocol/venus-protocol/contracts/Utils/SafeBEP20.sol":{"SafeBEP20":{"abi":[],"devdoc":{"details":"Wrappers around BEP20 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 SafeBEP20 for BEP20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.","methods":{},"title":"SafeBEP20"},"evm":{"bytecode":{"linkReferences":{},"object":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158206183d36da058137224f5949815f26ea78e5d6110997293cf8a7fea889cb3358964736f6c63430005100032","opcodes":"PUSH1 0x55 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 PUSH6 0x627A7A723158 KECCAK256 PUSH2 0x83D3 PUSH14 0xA058137224F5949815F26EA78E5D PUSH2 0x1099 PUSH19 0x93CF8A7FEA889CB3358964736F6C6343000510 STOP ORIGIN ","sourceMap":"555:3248:3:-;;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":{"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158206183d36da058137224f5949815f26ea78e5d6110997293cf8a7fea889cb3358964736f6c63430005100032","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH2 0x83D3 PUSH14 0xA058137224F5949815F26EA78E5D PUSH2 0x1099 PUSH19 0x93CF8A7FEA889CB3358964736F6C6343000510 STOP ORIGIN ","sourceMap":"555:3248:3:-;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"94","totalCost":"17094"},"internal":{"callOptionalReturn(contract IBEP20,bytes memory)":"infinite","safeApprove(contract IBEP20,address,uint256)":"infinite","safeDecreaseAllowance(contract IBEP20,address,uint256)":"infinite","safeIncreaseAllowance(contract IBEP20,address,uint256)":"infinite","safeTransfer(contract IBEP20,address,uint256)":"infinite","safeTransferFrom(contract IBEP20,address,address,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around BEP20 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 SafeBEP20 for BEP20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"methods\":{},\"title\":\"SafeBEP20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/Utils/SafeBEP20.sol\":\"SafeBEP20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Utils/Address.sol\":{\"content\":\"pragma solidity ^0.5.5;\\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        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\\n        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\\n        // for accounts without code, i.e. `keccak256('')`\\n        bytes32 codehash;\\n        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            codehash := extcodehash(account)\\n        }\\n        return (codehash != accountHash && codehash != 0x0);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` into `address payable`. Note that this is\\n     * simply a type cast: the actual underlying value is not changed.\\n     *\\n     * _Available since v2.4.0._\\n     */\\n    function toPayable(address account) internal pure returns (address payable) {\\n        return address(uint160(account));\\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     * _Available since v2.4.0._\\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-call-value\\n        // solium-disable-next-line security/no-call-value\\n        (bool success, ) = recipient.call.value(amount)(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n}\\n\",\"keccak256\":\"0x3c2ef780599a2ae6913282b982633f07e405a4a9c8511590df571e2b773aef9d\"},\"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the BEP20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {BEP20Detailed}.\\n */\\ninterface IBEP20 {\\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\",\"keccak256\":\"0x839b08895eb1ad83502d3631e8e9e3a856d2a8c63c46f070d604af7b26c62c07\"},\"@venusprotocol/venus-protocol/contracts/Utils/SafeBEP20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"./SafeMath.sol\\\";\\nimport \\\"./IBEP20.sol\\\";\\nimport \\\"./Address.sol\\\";\\n\\n/**\\n * @title SafeBEP20\\n * @dev Wrappers around BEP20 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 SafeBEP20 for BEP20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeBEP20 {\\n    using SafeMath for uint256;\\n    using Address for address;\\n\\n    function safeTransfer(IBEP20 token, address to, uint256 value) internal {\\n        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    function safeTransferFrom(IBEP20 token, address from, address to, uint256 value) internal {\\n        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    function safeApprove(IBEP20 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(\\n            (value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeBEP20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    function safeIncreaseAllowance(IBEP20 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(IBEP20 token, address spender, uint256 value) internal {\\n        uint256 newAllowance = token.allowance(address(this), spender).sub(\\n            value,\\n            \\\"SafeBEP20: decreased allowance below zero\\\"\\n        );\\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(IBEP20 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.\\n\\n        // A Solidity high level call has three parts:\\n        //  1. The target address is checked to verify it contains contract code\\n        //  2. The call itself is made, and success asserted\\n        //  3. The return value is decoded, which in turn checks the size of the returned data.\\n        // solhint-disable-next-line max-line-length\\n        require(address(token).isContract(), \\\"SafeBEP20: call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = address(token).call(data);\\n        require(success, \\\"SafeBEP20: low-level call failed\\\");\\n\\n        if (returndata.length > 0) {\\n            // Return data is optional\\n            // solhint-disable-next-line max-line-length\\n            require(abi.decode(returndata, (bool)), \\\"SafeBEP20: BEP20 operation did not succeed\\\");\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x540ef6ddc47232a59d3ab0e95537f7a7d1c8a36f8dba315b010e60c6487bd768\"},\"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.16;\\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        return add(a, b, \\\"SafeMath: addition 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    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a, errorMessage);\\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    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    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    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        require(b != 0, errorMessage);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0x9431fd772ed4abc038cdfe9ce6c0066897bd1685ad45848748d1952935d5b8ef\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"methods":{}}}},"@venusprotocol/venus-protocol/contracts/Utils/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.","methods":{}},"evm":{"bytecode":{"linkReferences":{},"object":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158202534c9887bb4ffe58e9c75abf931275c13d3d40b19d83a5e8c39021310a9d9b064736f6c63430005100032","opcodes":"PUSH1 0x55 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 PUSH6 0x627A7A723158 KECCAK256 0x25 CALLVALUE 0xC9 DUP9 PUSH28 0xB4FFE58E9C75ABF931275C13D3D40B19D83A5E8C39021310A9D9B064 PUSH20 0x6F6C634300051000320000000000000000000000 ","sourceMap":"590:5014:4:-;;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":{"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158202534c9887bb4ffe58e9c75abf931275c13d3d40b19d83a5e8c39021310a9d9b064736f6c63430005100032","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x25 CALLVALUE 0xC9 DUP9 PUSH28 0xB4FFE58E9C75ABF931275C13D3D40B19D83A5E8C39021310A9D9B064 PUSH20 0x6F6C634300051000320000000000000000000000 ","sourceMap":"590:5014:4:-;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"94","totalCost":"17094"},"internal":{"add(uint256,uint256)":"infinite","add(uint256,uint256,string memory)":"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.5.16+commit.9c3226ce\"},\"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.\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.16;\\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        return add(a, b, \\\"SafeMath: addition 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    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a, errorMessage);\\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    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    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    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        require(b != 0, errorMessage);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0x9431fd772ed4abc038cdfe9ce6c0066897bd1685ad45848748d1952935d5b8ef\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"methods":{}}}},"@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol":{"XVSStore":{"abi":[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerTransferred","type":"event"},{"constant":false,"inputs":[],"name":"acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emergencyRewardWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"safeRewardTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"setPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setRewardToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Venus","methods":{"emergencyRewardWithdraw(address,uint256)":{"params":{"_amount":"Amount of token to withdraw","_tokenAddress":"Reward token address to withdraw"}},"safeRewardTransfer(address,address,uint256)":{"details":"Safe reward token transfer function, just in case if rounding error causes pool to not have enough tokens.","params":{"_amount":"Amount to transfer","_to":"Destination address of the reward","token":"Reward token to transfer"}},"setNewOwner(address)":{"params":{"_owner":"The address of the owner to set Only callable admin"}},"setPendingAdmin(address)":{"params":{"_admin":"Propose an account as admin of the XVS store"}},"setRewardToken(address,bool)":{"params":{"_tokenAddress":"The address of a token to set as active or inactive","status":"Set whether a reward token is active or not"}}},"title":"XVS Store"},"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610a1b806100326000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80639ad99e68116100665780639ad99e681461012b578063f5a1f5b414610161578063f5ab16cc14610187578063f851a440146101c1578063fb66fb4d146101c95761009e565b80630e18b681146100a357806326782247146100ad5780634dd18bf5146100d1578063804e523e146100f75780638da5cb5b14610123575b600080fd5b6100ab6101f7565b005b6100b56102f3565b604080516001600160a01b039092168252519081900360200190f35b6100ab600480360360208110156100e757600080fd5b50356001600160a01b0316610302565b6100ab6004803603604081101561010d57600080fd5b506001600160a01b0381351690602001356103b5565b6100b5610423565b6100ab6004803603606081101561014157600080fd5b506001600160a01b03813581169160208101359091169060400135610432565b6100ab6004803603602081101561017757600080fd5b50356001600160a01b03166105bb565b6101ad6004803603602081101561019d57600080fd5b50356001600160a01b03166106b8565b604080519115158252519081900360200190f35b6100b56106cd565b6100ab600480360360408110156101df57600080fd5b506001600160a01b03813516906020013515156106dc565b6001546001600160a01b0316331461024b576040805162461bcd60e51b815260206004820152601260248201527137b7363c903832b73234b7339030b236b4b760711b604482015290519081900360640190fd5b60008054600180546001600160a01b038082166001600160a01b0319808616821787559092169092556040805182815260208101959095528051929093169390927fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a992918290030190a1600080546040516001600160a01b0391821692918516917ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec691a35050565b6001546001600160a01b031681565b6000546001600160a01b03163314610352576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9030b236b4b71031b0b760911b604482015290519081900360640190fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a15050565b6002546001600160a01b03163314610405576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9037bbb732b91031b0b760911b604482015290519081900360640190fd5b61041f6001600160a01b038316338363ffffffff61077b16565b5050565b6002546001600160a01b031681565b6002546001600160a01b03163314610482576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9037bbb732b91031b0b760911b604482015290519081900360640190fd5b6001600160a01b03831660009081526003602052604090205460ff1615156001146104ec576040805162461bcd60e51b815260206004820152601560248201527437b7363c903932bbb0b932103a37b5b2b71031b0b760591b604482015290519081900360640190fd5b6001600160a01b038316156105b657604080516370a0823160e01b815230600482015290516000916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561054557600080fd5b505afa158015610559573d6000803e3d6000fd5b505050506040513d602081101561056f57600080fd5b505190508082111561059a576105956001600160a01b038516848363ffffffff61077b16565b6105b4565b6105b46001600160a01b038516848463ffffffff61077b16565b505b505050565b6000546001600160a01b0316331461060b576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9030b236b4b71031b0b760911b604482015290519081900360640190fd5b6001600160a01b038116610666576040805162461bcd60e51b815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f2061646472657373000000604482015290519081900360640190fd5b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8934ce4adea8d9ce0d714d2c22b86790e41b7731c84b926fbbdc1d40ff6533c990600090a35050565b60036020526000908152604090205460ff1681565b6000546001600160a01b031681565b6000546001600160a01b03163314806106ff57506002546001600160a01b031633145b610750576040805162461bcd60e51b815260206004820152601760248201527f6f6e6c792061646d696e206f72206f776e65722063616e000000000000000000604482015290519081900360640190fd5b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526105b69084906107da826001600160a01b0316610980565b61082b576040805162461bcd60e51b815260206004820152601f60248201527f5361666542455032303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106108695780518252601f19909201916020918201910161084a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108cb576040519150601f19603f3d011682016040523d82523d6000602084013e6108d0565b606091505b509150915081610927576040805162461bcd60e51b815260206004820181905260248201527f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156105b45780806020019051602081101561094357600080fd5b50516105b45760405162461bcd60e51b815260040180806020018281038252602a8152602001806109bd602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906109b457508115155b94935050505056fe5361666542455032303a204245503230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158200192b95d41e8105efc5c08cb5a80152f4d5f7d86f64352b40211451116096fea64736f6c63430005100032","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 0xA1B DUP1 PUSH2 0x32 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 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9AD99E68 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x9AD99E68 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0xF5A1F5B4 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0xF5AB16CC EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xFB66FB4D EQ PUSH2 0x1C9 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0xE18B681 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x804E523E EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x123 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x1F7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB5 PUSH2 0x2F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x302 JUMP JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x10D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3B5 JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x423 JUMP JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x432 JUMP JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5BB JUMP JUMPDEST PUSH2 0x1AD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB5 PUSH2 0x6CD JUMP JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x6DC JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x24B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x37B7363C903832B73234B7339030B236B4B7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP1 DUP7 AND DUP3 OR DUP8 SSTORE SWAP1 SWAP3 AND SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP1 MLOAD SWAP3 SWAP1 SWAP4 AND SWAP4 SWAP1 SWAP3 PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 SWAP2 DUP6 AND SWAP2 PUSH32 0xF8CCB027DFCD135E000E9D45E6CC2D662578A8825D4C45B5E32E0ADF67E79EC6 SWAP2 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x352 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x37B7363C9030B236B4B71031B0B7 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x405 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x37B7363C9037BBB732B91031B0B7 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x41F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER DUP4 PUSH4 0xFFFFFFFF PUSH2 0x77B AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x482 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x37B7363C9037BBB732B91031B0B7 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x4EC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x37B7363C903932BBB0B932103A37B5B2B71031B0B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 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 0x545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x559 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 0x56F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x59A JUMPI PUSH2 0x595 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x77B AND JUMP JUMPDEST PUSH2 0x5B4 JUMP JUMPDEST PUSH2 0x5B4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x77B AND JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x60B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x37B7363C9030B236B4B71031B0B7 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x666 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6577206F776E657220697320746865207A65726F2061646472657373000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8934CE4ADEA8D9CE0D714D2C22B86790E41B7731C84B926FBBDC1D40FF6533C9 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x6FF JUMPI POP PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x750 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F6E6C792061646D696E206F72206F776E65722063616E000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x5B6 SWAP1 DUP5 SWAP1 PUSH2 0x7DA DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x980 JUMP JUMPDEST PUSH2 0x82B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666542455032303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x869 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x84A 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 0x8CB 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 0x8D0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x927 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666542455032303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x5B4 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x943 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x5B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x9BD PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x9B4 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID MSTORE8 PUSH2 0x6665 TIMESTAMP GASLIMIT POP ORIGIN ADDRESS GASPRICE KECCAK256 TIMESTAMP GASLIMIT POP ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A265627A7A723158200192B95D41 0xE8 LT 0x5E 0xFC 0x5C ADDMOD 0xCB GAS DUP1 ISZERO 0x2F 0x4D 0x5F PUSH30 0x86F64352B40211451116096FEA64736F6C63430005100032000000000000 ","sourceMap":"195:4013:5:-;;;958:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;989:5:5;:18;;-1:-1:-1;;;;;;989:18:5;997:10;989:18;;;195:4013;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061009e5760003560e01c80639ad99e68116100665780639ad99e681461012b578063f5a1f5b414610161578063f5ab16cc14610187578063f851a440146101c1578063fb66fb4d146101c95761009e565b80630e18b681146100a357806326782247146100ad5780634dd18bf5146100d1578063804e523e146100f75780638da5cb5b14610123575b600080fd5b6100ab6101f7565b005b6100b56102f3565b604080516001600160a01b039092168252519081900360200190f35b6100ab600480360360208110156100e757600080fd5b50356001600160a01b0316610302565b6100ab6004803603604081101561010d57600080fd5b506001600160a01b0381351690602001356103b5565b6100b5610423565b6100ab6004803603606081101561014157600080fd5b506001600160a01b03813581169160208101359091169060400135610432565b6100ab6004803603602081101561017757600080fd5b50356001600160a01b03166105bb565b6101ad6004803603602081101561019d57600080fd5b50356001600160a01b03166106b8565b604080519115158252519081900360200190f35b6100b56106cd565b6100ab600480360360408110156101df57600080fd5b506001600160a01b03813516906020013515156106dc565b6001546001600160a01b0316331461024b576040805162461bcd60e51b815260206004820152601260248201527137b7363c903832b73234b7339030b236b4b760711b604482015290519081900360640190fd5b60008054600180546001600160a01b038082166001600160a01b0319808616821787559092169092556040805182815260208101959095528051929093169390927fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a992918290030190a1600080546040516001600160a01b0391821692918516917ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec691a35050565b6001546001600160a01b031681565b6000546001600160a01b03163314610352576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9030b236b4b71031b0b760911b604482015290519081900360640190fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a15050565b6002546001600160a01b03163314610405576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9037bbb732b91031b0b760911b604482015290519081900360640190fd5b61041f6001600160a01b038316338363ffffffff61077b16565b5050565b6002546001600160a01b031681565b6002546001600160a01b03163314610482576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9037bbb732b91031b0b760911b604482015290519081900360640190fd5b6001600160a01b03831660009081526003602052604090205460ff1615156001146104ec576040805162461bcd60e51b815260206004820152601560248201527437b7363c903932bbb0b932103a37b5b2b71031b0b760591b604482015290519081900360640190fd5b6001600160a01b038316156105b657604080516370a0823160e01b815230600482015290516000916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561054557600080fd5b505afa158015610559573d6000803e3d6000fd5b505050506040513d602081101561056f57600080fd5b505190508082111561059a576105956001600160a01b038516848363ffffffff61077b16565b6105b4565b6105b46001600160a01b038516848463ffffffff61077b16565b505b505050565b6000546001600160a01b0316331461060b576040805162461bcd60e51b815260206004820152600e60248201526d37b7363c9030b236b4b71031b0b760911b604482015290519081900360640190fd5b6001600160a01b038116610666576040805162461bcd60e51b815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f2061646472657373000000604482015290519081900360640190fd5b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8934ce4adea8d9ce0d714d2c22b86790e41b7731c84b926fbbdc1d40ff6533c990600090a35050565b60036020526000908152604090205460ff1681565b6000546001600160a01b031681565b6000546001600160a01b03163314806106ff57506002546001600160a01b031633145b610750576040805162461bcd60e51b815260206004820152601760248201527f6f6e6c792061646d696e206f72206f776e65722063616e000000000000000000604482015290519081900360640190fd5b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526105b69084906107da826001600160a01b0316610980565b61082b576040805162461bcd60e51b815260206004820152601f60248201527f5361666542455032303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106108695780518252601f19909201916020918201910161084a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108cb576040519150601f19603f3d011682016040523d82523d6000602084013e6108d0565b606091505b509150915081610927576040805162461bcd60e51b815260206004820181905260248201527f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156105b45780806020019051602081101561094357600080fd5b50516105b45760405162461bcd60e51b815260040180806020018281038252602a8152602001806109bd602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906109b457508115155b94935050505056fe5361666542455032303a204245503230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158200192b95d41e8105efc5c08cb5a80152f4d5f7d86f64352b40211451116096fea64736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9AD99E68 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x9AD99E68 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0xF5A1F5B4 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0xF5AB16CC EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xFB66FB4D EQ PUSH2 0x1C9 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0xE18B681 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x804E523E EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x123 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x1F7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB5 PUSH2 0x2F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x302 JUMP JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x10D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3B5 JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x423 JUMP JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x432 JUMP JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5BB JUMP JUMPDEST PUSH2 0x1AD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB5 PUSH2 0x6CD JUMP JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x6DC JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x24B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x37B7363C903832B73234B7339030B236B4B7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP1 DUP7 AND DUP3 OR DUP8 SSTORE SWAP1 SWAP3 AND SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP1 MLOAD SWAP3 SWAP1 SWAP4 AND SWAP4 SWAP1 SWAP3 PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 SWAP2 DUP6 AND SWAP2 PUSH32 0xF8CCB027DFCD135E000E9D45E6CC2D662578A8825D4C45B5E32E0ADF67E79EC6 SWAP2 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x352 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x37B7363C9030B236B4B71031B0B7 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x405 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x37B7363C9037BBB732B91031B0B7 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x41F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER DUP4 PUSH4 0xFFFFFFFF PUSH2 0x77B AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x482 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x37B7363C9037BBB732B91031B0B7 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x4EC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x37B7363C903932BBB0B932103A37B5B2B71031B0B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 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 0x545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x559 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 0x56F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x59A JUMPI PUSH2 0x595 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x77B AND JUMP JUMPDEST PUSH2 0x5B4 JUMP JUMPDEST PUSH2 0x5B4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x77B AND JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x60B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x37B7363C9030B236B4B71031B0B7 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x666 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6577206F776E657220697320746865207A65726F2061646472657373000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8934CE4ADEA8D9CE0D714D2C22B86790E41B7731C84B926FBBDC1D40FF6533C9 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x6FF JUMPI POP PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x750 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F6E6C792061646D696E206F72206F776E65722063616E000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x5B6 SWAP1 DUP5 SWAP1 PUSH2 0x7DA DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x980 JUMP JUMPDEST PUSH2 0x82B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666542455032303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x869 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x84A 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 0x8CB 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 0x8D0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x927 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666542455032303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x5B4 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x943 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x5B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x9BD PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x9B4 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID MSTORE8 PUSH2 0x6665 TIMESTAMP GASLIMIT POP ORIGIN ADDRESS GASPRICE KECCAK256 TIMESTAMP GASLIMIT POP ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A265627A7A723158200192B95D41 0xE8 LT 0x5E 0xFC 0x5C ADDMOD 0xCB GAS DUP1 ISZERO 0x2F 0x4D 0x5F PUSH30 0x86F64352B40211451116096FEA64736F6C63430005100032000000000000 ","sourceMap":"195:4013:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;195:4013:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2634:364;;;:::i;:::-;;387:27;;;:::i;:::-;;;;-1:-1:-1;;;;;387:27:5;;;;;;;;;;;;;;2292:201;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2292:201:5;-1:-1:-1;;;;;2292:201:5;;:::i;4033:173::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4033:173:5;;;;;;;;:::i;455:20::-;;;:::i;1624:498::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1624:498:5;;;;;;;;;;;;;;;;;:::i;3138:242::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3138:242:5;-1:-1:-1;;;;;3138:242:5;;:::i;516:44::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;516:44:5;-1:-1:-1;;;;;516:44:5;;:::i;:::-;;;;;;;;;;;;;;;;;;318:20;;;:::i;3592:210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3592:210:5;;;;;;;;;;:::i;2634:364::-;2698:12;;-1:-1:-1;;;;;2698:12:5;2684:10;:26;2676:57;;;;;-1:-1:-1;;;2676:57:5;;;;;;;;;;;;-1:-1:-1;;;2676:57:5;;;;;;;;;;;;;;;2743:16;2762:5;;;2803:12;;-1:-1:-1;;;;;2803:12:5;;;-1:-1:-1;;;;;;2826:20:5;;;;;;;2856:25;;;;;;2897:46;;;;;;;;;;;;;;;2762:5;;;;;2803:12;;2897:46;;;;;;;;;2985:5;;;2958:33;;-1:-1:-1;;;;;2985:5:5;;;;2958:33;;;;;;;2634:364;;:::o;387:27::-;;;-1:-1:-1;;;;;387:27:5;;:::o;2292:201::-;1073:5;;-1:-1:-1;;;;;1073:5:5;1059:10;:19;1051:46;;;;;-1:-1:-1;;;1051:46:5;;;;;;;;;;;;-1:-1:-1;;;1051:46:5;;;;;;;;;;;;;;;2388:12;;;-1:-1:-1;;;;;2410:21:5;;;-1:-1:-1;;;;;;2410:21:5;;;;;;;2446:40;;;2388:12;;;;2446:40;;;;;;;;;;;;;;;;;;;;;;;1107:1;2292:201;:::o;4033:173::-;1174:5;;-1:-1:-1;;;;;1174:5:5;1160:10;:19;1152:46;;;;;-1:-1:-1;;;1152:46:5;;;;;;;;;;;;-1:-1:-1;;;1152:46:5;;;;;;;;;;;;;;;4135:64;-1:-1:-1;;;;;4135:34:5;;4178:10;4191:7;4135:64;:34;:64;:::i;:::-;4033:173;;:::o;455:20::-;;;-1:-1:-1;;;;;455:20:5;;:::o;1624:498::-;1174:5;;-1:-1:-1;;;;;1174:5:5;1160:10;:19;1152:46;;;;;-1:-1:-1;;;1152:46:5;;;;;;;;;;;;-1:-1:-1;;;1152:46:5;;;;;;;;;;;;;;;-1:-1:-1;;;;;1734:19:5;;;;;;:12;:19;;;;;;;;:27;;:19;:27;1726:61;;;;;-1:-1:-1;;;1726:61:5;;;;;;;;;;;;-1:-1:-1;;;1726:61:5;;;;;;;;;;;;;;;-1:-1:-1;;;;;1802:28:5;;;1798:318;;1869:38;;;-1:-1:-1;;;1869:38:5;;1901:4;1869:38;;;;;;1846:20;;-1:-1:-1;;;;;1869:23:5;;;;;:38;;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;1869:38:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1869:38:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1869:38:5;;-1:-1:-1;1925:22:5;;;1921:185;;;1967:45;-1:-1:-1;;;;;1967:26:5;;1994:3;1999:12;1967:45;:26;:45;:::i;:::-;1921:185;;;2051:40;-1:-1:-1;;;;;2051:26:5;;2078:3;2083:7;2051:40;:26;:40;:::i;:::-;1798:318;;1624:498;;;:::o;3138:242::-;1073:5;;-1:-1:-1;;;;;1073:5:5;1059:10;:19;1051:46;;;;;-1:-1:-1;;;1051:46:5;;;;;;;;;;;;-1:-1:-1;;;1051:46:5;;;;;;;;;;;;;;;-1:-1:-1;;;;;3212:20:5;;3204:62;;;;;-1:-1:-1;;;3204:62:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3295:5;;;-1:-1:-1;;;;;3310:14:5;;;-1:-1:-1;;;;;;3310:14:5;;;;;;;3339:34;;3295:5;;;3310:14;3295:5;;3339:34;;3276:16;;3339:34;1107:1;3138:242;:::o;516:44::-;;;;;;;;;;;;;;;:::o;318:20::-;;;-1:-1:-1;;;;;318:20:5;;:::o;3592:210::-;3693:5;;-1:-1:-1;;;;;3693:5:5;3679:10;:19;;:42;;-1:-1:-1;3716:5:5;;-1:-1:-1;;;;;3716:5:5;3702:10;:19;3679:42;3671:78;;;;;-1:-1:-1;;;3671:78:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3759:27:5;;;;;;;;:12;:27;;;;;:36;;-1:-1:-1;;3759:36:5;;;;;;;;;;3592:210::o;643:174:3:-;751:58;;;-1:-1:-1;;;;;751:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;751:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;725:85:3;;744:5;;3289:27;3297:5;-1:-1:-1;;;;;3289:25:3;;:27::i;:::-;3281:71;;;;;-1:-1:-1;;;3281:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3423:12;3437:23;3472:5;-1:-1:-1;;;;;3464:19:3;3484:4;3464:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;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;;;3464:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3422:67:3;;;;3507:7;3499:52;;;;;-1:-1:-1;;;3499:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3566:17;;:21;3562:233;;3718:10;3707:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3707:30:3;3699:85;;;;-1:-1:-1;;;3699:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;685:630:1;745:4;1218:20;;1051:66;1265:23;;;;;;:42;;-1:-1:-1;1292:15:1;;;1265:42;1257:51;685:630;-1:-1:-1;;;;685:630:1:o"},"gasEstimates":{"creation":{"codeDepositCost":"517400","executionCost":"21384","totalCost":"538784"},"external":{"acceptAdmin()":"46394","admin()":"1103","emergencyRewardWithdraw(address,uint256)":"infinite","owner()":"1126","pendingAdmin()":"1060","rewardTokens(address)":"1180","safeRewardTransfer(address,address,uint256)":"infinite","setNewOwner(address)":"23507","setPendingAdmin(address)":"23317","setRewardToken(address,bool)":"22930"}},"methodIdentifiers":{"acceptAdmin()":"0e18b681","admin()":"f851a440","emergencyRewardWithdraw(address,uint256)":"804e523e","owner()":"8da5cb5b","pendingAdmin()":"26782247","rewardTokens(address)":"f5ab16cc","safeRewardTransfer(address,address,uint256)":"9ad99e68","setNewOwner(address)":"f5a1f5b4","setPendingAdmin(address)":"4dd18bf5","setRewardToken(address,bool)":"fb66fb4d"}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldPendingAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"NewPendingAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnerTransferred\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[],\"name\":\"acceptAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"emergencyRewardWithdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"safeRewardTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setNewOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"setPendingAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setRewardToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"methods\":{\"emergencyRewardWithdraw(address,uint256)\":{\"params\":{\"_amount\":\"Amount of token to withdraw\",\"_tokenAddress\":\"Reward token address to withdraw\"}},\"safeRewardTransfer(address,address,uint256)\":{\"details\":\"Safe reward token transfer function, just in case if rounding error causes pool to not have enough tokens.\",\"params\":{\"_amount\":\"Amount to transfer\",\"_to\":\"Destination address of the reward\",\"token\":\"Reward token to transfer\"}},\"setNewOwner(address)\":{\"params\":{\"_owner\":\"The address of the owner to set Only callable admin\"}},\"setPendingAdmin(address)\":{\"params\":{\"_admin\":\"Propose an account as admin of the XVS store\"}},\"setRewardToken(address,bool)\":{\"params\":{\"_tokenAddress\":\"The address of a token to set as active or inactive\",\"status\":\"Set whether a reward token is active or not\"}}},\"title\":\"XVS Store\"},\"userdoc\":{\"methods\":{\"acceptAdmin()\":{\"notice\":\"Allows an account that is pending as admin to accept the role nly calllable by the pending admin\"},\"emergencyRewardWithdraw(address,uint256)\":{\"notice\":\"Security function to allow the owner of the contract to withdraw from the contract\"},\"safeRewardTransfer(address,address,uint256)\":{\"notice\":\"Safely transfer rewards. Only active reward tokens can be sent using this function. Only callable by owner\"},\"setNewOwner(address)\":{\"notice\":\"Set the contract owner\"},\"setPendingAdmin(address)\":{\"notice\":\"Allows the admin to propose a new admin Only callable admin\"},\"setRewardToken(address,bool)\":{\"notice\":\"Set or disable a reward token\"}},\"notice\":\"XVS Store responsible for distributing XVS rewards\"}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol\":\"XVSStore\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Utils/Address.sol\":{\"content\":\"pragma solidity ^0.5.5;\\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        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\\n        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\\n        // for accounts without code, i.e. `keccak256('')`\\n        bytes32 codehash;\\n        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            codehash := extcodehash(account)\\n        }\\n        return (codehash != accountHash && codehash != 0x0);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` into `address payable`. Note that this is\\n     * simply a type cast: the actual underlying value is not changed.\\n     *\\n     * _Available since v2.4.0._\\n     */\\n    function toPayable(address account) internal pure returns (address payable) {\\n        return address(uint160(account));\\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     * _Available since v2.4.0._\\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-call-value\\n        // solium-disable-next-line security/no-call-value\\n        (bool success, ) = recipient.call.value(amount)(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n}\\n\",\"keccak256\":\"0x3c2ef780599a2ae6913282b982633f07e405a4a9c8511590df571e2b773aef9d\"},\"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the BEP20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {BEP20Detailed}.\\n */\\ninterface IBEP20 {\\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\",\"keccak256\":\"0x839b08895eb1ad83502d3631e8e9e3a856d2a8c63c46f070d604af7b26c62c07\"},\"@venusprotocol/venus-protocol/contracts/Utils/SafeBEP20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"./SafeMath.sol\\\";\\nimport \\\"./IBEP20.sol\\\";\\nimport \\\"./Address.sol\\\";\\n\\n/**\\n * @title SafeBEP20\\n * @dev Wrappers around BEP20 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 SafeBEP20 for BEP20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeBEP20 {\\n    using SafeMath for uint256;\\n    using Address for address;\\n\\n    function safeTransfer(IBEP20 token, address to, uint256 value) internal {\\n        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    function safeTransferFrom(IBEP20 token, address from, address to, uint256 value) internal {\\n        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    function safeApprove(IBEP20 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(\\n            (value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeBEP20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    function safeIncreaseAllowance(IBEP20 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(IBEP20 token, address spender, uint256 value) internal {\\n        uint256 newAllowance = token.allowance(address(this), spender).sub(\\n            value,\\n            \\\"SafeBEP20: decreased allowance below zero\\\"\\n        );\\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(IBEP20 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.\\n\\n        // A Solidity high level call has three parts:\\n        //  1. The target address is checked to verify it contains contract code\\n        //  2. The call itself is made, and success asserted\\n        //  3. The return value is decoded, which in turn checks the size of the returned data.\\n        // solhint-disable-next-line max-line-length\\n        require(address(token).isContract(), \\\"SafeBEP20: call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = address(token).call(data);\\n        require(success, \\\"SafeBEP20: low-level call failed\\\");\\n\\n        if (returndata.length > 0) {\\n            // Return data is optional\\n            // solhint-disable-next-line max-line-length\\n            require(abi.decode(returndata, (bool)), \\\"SafeBEP20: BEP20 operation did not succeed\\\");\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x540ef6ddc47232a59d3ab0e95537f7a7d1c8a36f8dba315b010e60c6487bd768\"},\"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.16;\\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        return add(a, b, \\\"SafeMath: addition 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    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a, errorMessage);\\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    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    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    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        require(b != 0, errorMessage);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0x9431fd772ed4abc038cdfe9ce6c0066897bd1685ad45848748d1952935d5b8ef\"},\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol\":{\"content\":\"pragma solidity 0.5.16;\\nimport \\\"../Utils/SafeBEP20.sol\\\";\\nimport \\\"../Utils/IBEP20.sol\\\";\\n\\n/**\\n * @title XVS Store\\n * @author Venus\\n * @notice XVS Store responsible for distributing XVS rewards\\n */\\ncontract XVSStore {\\n    using SafeMath for uint256;\\n    using SafeBEP20 for IBEP20;\\n\\n    /// @notice The Admin Address\\n    address public admin;\\n\\n    /// @notice The pending admin address\\n    address public pendingAdmin;\\n\\n    /// @notice The Owner Address\\n    address public owner;\\n\\n    /// @notice The reward tokens\\n    mapping(address => bool) public rewardTokens;\\n\\n    /// @notice Emitted when pendingAdmin is changed\\n    event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);\\n\\n    /// @notice Event emitted when admin changed\\n    event AdminTransferred(address indexed oldAdmin, address indexed newAdmin);\\n\\n    /// @notice Event emitted when owner changed\\n    event OwnerTransferred(address indexed oldOwner, address indexed newOwner);\\n\\n    constructor() public {\\n        admin = msg.sender;\\n    }\\n\\n    modifier onlyAdmin() {\\n        require(msg.sender == admin, \\\"only admin can\\\");\\n        _;\\n    }\\n\\n    modifier onlyOwner() {\\n        require(msg.sender == owner, \\\"only owner can\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Safely transfer rewards. Only active reward tokens can be sent using this function.\\n     * Only callable by owner\\n     * @dev Safe reward token transfer function, just in case if rounding error causes pool to not have enough tokens.\\n     * @param token Reward token to transfer\\n     * @param _to Destination address of the reward\\n     * @param _amount Amount to transfer\\n     */\\n    function safeRewardTransfer(address token, address _to, uint256 _amount) external onlyOwner {\\n        require(rewardTokens[token] == true, \\\"only reward token can\\\");\\n\\n        if (address(token) != address(0)) {\\n            uint256 tokenBalance = IBEP20(token).balanceOf(address(this));\\n            if (_amount > tokenBalance) {\\n                IBEP20(token).safeTransfer(_to, tokenBalance);\\n            } else {\\n                IBEP20(token).safeTransfer(_to, _amount);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @notice Allows the admin to propose a new admin\\n     * Only callable admin\\n     * @param _admin Propose an account as admin of the XVS store\\n     */\\n    function setPendingAdmin(address _admin) external onlyAdmin {\\n        address oldPendingAdmin = pendingAdmin;\\n        pendingAdmin = _admin;\\n        emit NewPendingAdmin(oldPendingAdmin, _admin);\\n    }\\n\\n    /**\\n     * @notice Allows an account that is pending as admin to accept the role\\n     * nly calllable by the pending admin\\n     */\\n    function acceptAdmin() external {\\n        require(msg.sender == pendingAdmin, \\\"only pending admin\\\");\\n        address oldAdmin = admin;\\n        address oldPendingAdmin = pendingAdmin;\\n\\n        admin = pendingAdmin;\\n        pendingAdmin = address(0);\\n\\n        emit NewPendingAdmin(oldPendingAdmin, pendingAdmin);\\n        emit AdminTransferred(oldAdmin, admin);\\n    }\\n\\n    /**\\n     * @notice Set the contract owner\\n     * @param _owner The address of the owner to set\\n     * Only callable admin\\n     */\\n    function setNewOwner(address _owner) external onlyAdmin {\\n        require(_owner != address(0), \\\"new owner is the zero address\\\");\\n        address oldOwner = owner;\\n        owner = _owner;\\n        emit OwnerTransferred(oldOwner, _owner);\\n    }\\n\\n    /**\\n     * @notice Set or disable a reward token\\n     * @param _tokenAddress The address of a token to set as active or inactive\\n     * @param status Set whether a reward token is active or not\\n     */\\n    function setRewardToken(address _tokenAddress, bool status) external {\\n        require(msg.sender == admin || msg.sender == owner, \\\"only admin or owner can\\\");\\n        rewardTokens[_tokenAddress] = status;\\n    }\\n\\n    /**\\n     * @notice Security function to allow the owner of the contract to withdraw from the contract\\n     * @param _tokenAddress Reward token address to withdraw\\n     * @param _amount Amount of token to withdraw\\n     */\\n    function emergencyRewardWithdraw(address _tokenAddress, uint256 _amount) external onlyOwner {\\n        IBEP20(_tokenAddress).safeTransfer(address(msg.sender), _amount);\\n    }\\n}\\n\",\"keccak256\":\"0x8082f92b13448bd4fa982c93c763439f10fe016a5f3be6d613dfe3cca68501ef\"}},\"version\":1}","storageLayout":{"storage":[{"astId":608,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol:XVSStore","label":"admin","offset":0,"slot":"0","type":"t_address"},{"astId":610,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol:XVSStore","label":"pendingAdmin","offset":0,"slot":"1","type":"t_address"},{"astId":612,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol:XVSStore","label":"owner","offset":0,"slot":"2","type":"t_address"},{"astId":616,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSStore.sol:XVSStore","label":"rewardTokens","offset":0,"slot":"3","type":"t_mapping(t_address,t_bool)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"}}},"userdoc":{"methods":{"acceptAdmin()":{"notice":"Allows an account that is pending as admin to accept the role nly calllable by the pending admin"},"emergencyRewardWithdraw(address,uint256)":{"notice":"Security function to allow the owner of the contract to withdraw from the contract"},"safeRewardTransfer(address,address,uint256)":{"notice":"Safely transfer rewards. Only active reward tokens can be sent using this function. Only callable by owner"},"setNewOwner(address)":{"notice":"Set the contract owner"},"setPendingAdmin(address)":{"notice":"Allows the admin to propose a new admin Only callable admin"},"setRewardToken(address,bool)":{"notice":"Set or disable a reward token"}},"notice":"XVS Store responsible for distributing XVS rewards"}}},"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol":{"XVSVaultErrorReporter":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"}],"devdoc":{"methods":{}},"evm":{"bytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820126228b8a38b3c2bd55cc8f6840bfd1ba1871d0115a3321ad8987a00e1f93a9164736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SLT PUSH3 0x28B8A3 DUP12 EXTCODECOPY 0x2B 0xD5 0x5C 0xC8 0xF6 DUP5 SIGNEXTEND REVERT SHL LOG1 DUP8 SAR ADD ISZERO LOG3 ORIGIN BYTE 0xD8 SWAP9 PUSH27 0xE1F93A9164736F6C634300051000320000000000000000000000 ","sourceMap":"26:1175:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26:1175:6;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052600080fdfea265627a7a72315820126228b8a38b3c2bd55cc8f6840bfd1ba1871d0115a3321ad8987a00e1f93a9164736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SLT PUSH3 0x28B8A3 DUP12 EXTCODECOPY 0x2B 0xD5 0x5C 0xC8 0xF6 DUP5 SIGNEXTEND REVERT SHL LOG1 DUP8 SAR ADD ISZERO LOG3 ORIGIN BYTE 0xD8 SWAP9 PUSH27 0xE1F93A9164736F6C634300051000320000000000000000000000 ","sourceMap":"26:1175:6:-;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12400","executionCost":"66","totalCost":"12466"},"internal":{"fail(enum XVSVaultErrorReporter.Error,enum XVSVaultErrorReporter.FailureInfo)":"infinite","failOpaque(enum XVSVaultErrorReporter.Error,enum XVSVaultErrorReporter.FailureInfo,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol\":\"XVSVaultErrorReporter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\ncontract XVSVaultErrorReporter {\\n    enum Error {\\n        NO_ERROR,\\n        UNAUTHORIZED\\n    }\\n\\n    enum FailureInfo {\\n        ACCEPT_ADMIN_PENDING_ADMIN_CHECK,\\n        ACCEPT_PENDING_IMPLEMENTATION_ADDRESS_CHECK,\\n        SET_PENDING_ADMIN_OWNER_CHECK,\\n        SET_PENDING_IMPLEMENTATION_OWNER_CHECK\\n    }\\n\\n    /**\\n     * @dev `error` corresponds to enum Error; `info` corresponds to enum FailureInfo, and `detail` is an arbitrary\\n     * contract-specific code that enables us to report opaque error codes from upgradeable contracts.\\n     **/\\n    event Failure(uint error, uint info, uint detail);\\n\\n    /**\\n     * @dev use this when reporting a known error from the money market or a non-upgradeable collaborator\\n     */\\n    function fail(Error err, FailureInfo info) internal returns (uint) {\\n        emit Failure(uint(err), uint(info), 0);\\n\\n        return uint(err);\\n    }\\n\\n    /**\\n     * @dev use this when reporting an opaque error from an upgradeable collaborator contract\\n     */\\n    function failOpaque(Error err, FailureInfo info, uint opaqueError) internal returns (uint) {\\n        emit Failure(uint(err), uint(info), opaqueError);\\n\\n        return uint(err);\\n    }\\n}\\n\",\"keccak256\":\"0xa79877a281d024f0d03dbf1842a36a972ee6c1aa36ba93e3d646726d40684a26\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"methods":{}}}},"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol":{"XVSVaultProxy":{"abi":[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"error","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"info","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingImplementation","type":"address"}],"name":"NewPendingImplementation","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"_acceptAdmin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_acceptImplementation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"_setPendingAdmin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingImplementation","type":"address"}],"name":"_setPendingImplementation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingXVSVaultImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"devdoc":{"author":"Venus","methods":{"_acceptAdmin()":{"details":"Admin function for pending admin to accept role and update admin","return":"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)"},"_acceptImplementation()":{"details":"Admin function for new implementation to accept it's role as implementation","return":"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)"},"_setPendingAdmin(address)":{"details":"Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.","params":{"newPendingAdmin":"New pending admin."},"return":"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)"}},"title":"XVS Vault Proxy"},"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600080546001600160a01b031916331790556105c3806100326000396000f3fe60806040526004361061007b5760003560e01c8063de0368b21161004e578063de0368b21461019e578063e992a041146101b3578063e9c714f2146101e6578063f851a440146101fb5761007b565b806326782247146100fe5780635c60da1b1461012f578063b71d1a0c14610144578063c1e8033414610189575b6002546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146100de576040519150601f19603f3d011682016040523d82523d6000602084013e6100e3565b606091505b505090506040513d6000823e8180156100fa573d82f35b3d82fd5b34801561010a57600080fd5b50610113610210565b604080516001600160a01b039092168252519081900360200190f35b34801561013b57600080fd5b5061011361021f565b34801561015057600080fd5b506101776004803603602081101561016757600080fd5b50356001600160a01b031661022e565b60408051918252519081900360200190f35b34801561019557600080fd5b506101776102bf565b3480156101aa57600080fd5b506101136103a4565b3480156101bf57600080fd5b50610177600480360360208110156101d657600080fd5b50356001600160a01b03166103b3565b3480156101f257600080fd5b50610177610437565b34801561020757600080fd5b50610113610512565b6001546001600160a01b031681565b6002546001600160a01b031681565b600080546001600160a01b031633146102545761024d60016002610521565b90506102ba565b600180546001600160a01b038481166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a160005b9150505b919050565b6003546000906001600160a01b031633146102e6576102df600180610521565b90506103a1565b60028054600380546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a92908290030190a1600354604080516001600160a01b038085168252909216602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a160005b925050505b90565b6003546001600160a01b031681565b600080546001600160a01b031633146103d25761024d60016003610521565b600380546001600160a01b038481166001600160a01b0319831617928390556040805192821680845293909116602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a160006102b6565b6001546000906001600160a01b03163314610458576102df60016000610521565b60008054600180546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92908290030190a1600154604080516001600160a01b038085168252909216602083015280517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99281900390910190a1600061039c565b6000546001600160a01b031681565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083600181111561055057fe5b83600381111561055c57fe5b604080519283526020830191909152600082820152519081900360600190a182600181111561058757fe5b939250505056fea265627a7a72315820fd14eec3b64cb299f93e89cd85ad7b8fd1bada5a5d1c1dae4833fa17f15da42964736f6c63430005100032","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 0x5C3 DUP1 PUSH2 0x32 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDE0368B2 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xDE0368B2 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0xE992A041 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xE9C714F2 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1FB JUMPI PUSH2 0x7B JUMP JUMPDEST DUP1 PUSH4 0x26782247 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0xB71D1A0C EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xC1E80334 EQ PUSH2 0x189 JUMPI JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 SWAP1 CALLDATASIZE SWAP1 DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xDE 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 0xE3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0xFA JUMPI RETURNDATASIZE DUP3 RETURN JUMPDEST RETURNDATASIZE DUP3 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113 PUSH2 0x210 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113 PUSH2 0x21F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x22E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x177 PUSH2 0x2BF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113 PUSH2 0x3A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x177 PUSH2 0x437 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113 PUSH2 0x512 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x254 JUMPI PUSH2 0x24D PUSH1 0x1 PUSH1 0x2 PUSH2 0x521 JUMP JUMPDEST SWAP1 POP PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2E6 JUMPI PUSH2 0x2DF PUSH1 0x1 DUP1 PUSH2 0x521 JUMP JUMPDEST SWAP1 POP PUSH2 0x3A1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP1 DUP7 AND DUP3 OR SWAP7 DUP8 SWAP1 SSTORE SWAP1 SWAP3 AND SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP4 AND DUP1 DUP6 MSTORE SWAP5 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE DUP2 MLOAD SWAP1 SWAP3 PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xE945CCEE5D701FC83F9B8AA8CA94EA4219EC1FCBD4F4CAB4F0EA57C5C3E1D815 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3D2 JUMPI PUSH2 0x24D PUSH1 0x1 PUSH1 0x3 PUSH2 0x521 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP3 AND DUP1 DUP5 MSTORE SWAP4 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xE945CCEE5D701FC83F9B8AA8CA94EA4219EC1FCBD4F4CAB4F0EA57C5C3E1D815 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x2B6 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x458 JUMPI PUSH2 0x2DF PUSH1 0x1 PUSH1 0x0 PUSH2 0x521 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP1 DUP7 AND DUP3 OR SWAP7 DUP8 SWAP1 SSTORE SWAP1 SWAP3 AND SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP4 AND DUP1 DUP6 MSTORE SWAP5 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE DUP2 MLOAD SWAP1 SWAP3 PUSH32 0xF9FFABCA9C8276E99321725BCB43FB076A6C66A54B7F21C4E8146D8519B417DC SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x39C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x550 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x55C JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x587 JUMPI INVALID JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 REVERT EQ 0xEE 0xC3 0xB6 0x4C 0xB2 SWAP10 0xF9 RETURNDATACOPY DUP10 0xCD DUP6 0xAD PUSH28 0x8FD1BADA5A5D1C1DAE4833FA17F15DA42964736F6C63430005100032 ","sourceMap":"184:5141:7:-;;;971:87;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1033:5:7;:18;;-1:-1:-1;;;;;;1033:18:7;1041:10;1033:18;;;184:5141;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"60806040526004361061007b5760003560e01c8063de0368b21161004e578063de0368b21461019e578063e992a041146101b3578063e9c714f2146101e6578063f851a440146101fb5761007b565b806326782247146100fe5780635c60da1b1461012f578063b71d1a0c14610144578063c1e8033414610189575b6002546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146100de576040519150601f19603f3d011682016040523d82523d6000602084013e6100e3565b606091505b505090506040513d6000823e8180156100fa573d82f35b3d82fd5b34801561010a57600080fd5b50610113610210565b604080516001600160a01b039092168252519081900360200190f35b34801561013b57600080fd5b5061011361021f565b34801561015057600080fd5b506101776004803603602081101561016757600080fd5b50356001600160a01b031661022e565b60408051918252519081900360200190f35b34801561019557600080fd5b506101776102bf565b3480156101aa57600080fd5b506101136103a4565b3480156101bf57600080fd5b50610177600480360360208110156101d657600080fd5b50356001600160a01b03166103b3565b3480156101f257600080fd5b50610177610437565b34801561020757600080fd5b50610113610512565b6001546001600160a01b031681565b6002546001600160a01b031681565b600080546001600160a01b031633146102545761024d60016002610521565b90506102ba565b600180546001600160a01b038481166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a160005b9150505b919050565b6003546000906001600160a01b031633146102e6576102df600180610521565b90506103a1565b60028054600380546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a92908290030190a1600354604080516001600160a01b038085168252909216602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a160005b925050505b90565b6003546001600160a01b031681565b600080546001600160a01b031633146103d25761024d60016003610521565b600380546001600160a01b038481166001600160a01b0319831617928390556040805192821680845293909116602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a160006102b6565b6001546000906001600160a01b03163314610458576102df60016000610521565b60008054600180546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92908290030190a1600154604080516001600160a01b038085168252909216602083015280517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99281900390910190a1600061039c565b6000546001600160a01b031681565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083600181111561055057fe5b83600381111561055c57fe5b604080519283526020830191909152600082820152519081900360600190a182600181111561058757fe5b939250505056fea265627a7a72315820fd14eec3b64cb299f93e89cd85ad7b8fd1bada5a5d1c1dae4833fa17f15da42964736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDE0368B2 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xDE0368B2 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0xE992A041 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xE9C714F2 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1FB JUMPI PUSH2 0x7B JUMP JUMPDEST DUP1 PUSH4 0x26782247 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0xB71D1A0C EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xC1E80334 EQ PUSH2 0x189 JUMPI JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 SWAP1 CALLDATASIZE SWAP1 DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xDE 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 0xE3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0xFA JUMPI RETURNDATASIZE DUP3 RETURN JUMPDEST RETURNDATASIZE DUP3 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113 PUSH2 0x210 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113 PUSH2 0x21F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x22E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x177 PUSH2 0x2BF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113 PUSH2 0x3A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x177 PUSH2 0x437 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113 PUSH2 0x512 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x254 JUMPI PUSH2 0x24D PUSH1 0x1 PUSH1 0x2 PUSH2 0x521 JUMP JUMPDEST SWAP1 POP PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2E6 JUMPI PUSH2 0x2DF PUSH1 0x1 DUP1 PUSH2 0x521 JUMP JUMPDEST SWAP1 POP PUSH2 0x3A1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP1 DUP7 AND DUP3 OR SWAP7 DUP8 SWAP1 SSTORE SWAP1 SWAP3 AND SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP4 AND DUP1 DUP6 MSTORE SWAP5 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE DUP2 MLOAD SWAP1 SWAP3 PUSH32 0xD604DE94D45953F9138079EC1B82D533CB2160C906D1076D1F7ED54BEFBCA97A SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xE945CCEE5D701FC83F9B8AA8CA94EA4219EC1FCBD4F4CAB4F0EA57C5C3E1D815 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3D2 JUMPI PUSH2 0x24D PUSH1 0x1 PUSH1 0x3 PUSH2 0x521 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP3 AND DUP1 DUP5 MSTORE SWAP4 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xE945CCEE5D701FC83F9B8AA8CA94EA4219EC1FCBD4F4CAB4F0EA57C5C3E1D815 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x2B6 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x458 JUMPI PUSH2 0x2DF PUSH1 0x1 PUSH1 0x0 PUSH2 0x521 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP1 DUP7 AND DUP3 OR SWAP7 DUP8 SWAP1 SSTORE SWAP1 SWAP3 AND SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP4 AND DUP1 DUP6 MSTORE SWAP5 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE DUP2 MLOAD SWAP1 SWAP3 PUSH32 0xF9FFABCA9C8276E99321725BCB43FB076A6C66A54B7F21C4E8146D8519B417DC SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND DUP3 MSTORE SWAP1 SWAP3 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0xCA4F2F25D0898EDD99413412FB94012F9E54EC8142F9B093E7720646A95B16A9 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 PUSH1 0x0 PUSH2 0x39C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x45B96FE442630264581B197E84BBADA861235052C5A1AADFFF9EA4E40A969AA0 DUP4 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x550 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x55C JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 DUP3 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x587 JUMPI INVALID JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 REVERT EQ 0xEE 0xC3 0xB6 0x4C 0xB2 SWAP10 0xF9 RETURNDATACOPY DUP10 0xCD DUP6 0xAD PUSH28 0x8FD1BADA5A5D1C1DAE4833FA17F15DA42964736F6C63430005100032 ","sourceMap":"184:5141:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4940:14;;:37;;4922:12;;-1:-1:-1;;;;;4940:14:7;;4922:12;;4968:8;;4940:37;4922:12;4968:8;;4922:12;4940:37;1:33:-1;4940:37:7;;45:16:-1;;;-1:-1;4940:37:7;;-1:-1:-1;4940:37:7;;-1:-1:-1;;4940:37:7;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4921:56:7;;;5037:4;5031:11;5087:14;5084:1;5070:12;5055:47;5123:7;5143:75;;;;5278:14;5264:12;5257:36;5143:75;5189:14;5175:12;5168:36;323:27:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;323:27:8;;;:::i;:::-;;;;-1:-1:-1;;;;;323:27:8;;;;;;;;;;;;;;415:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;415:29:8;;;:::i;3079:621:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3079:621:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3079:621:7;-1:-1:-1;;;;;3079:621:7;;:::i;:::-;;;;;;;;;;;;;;;;1905:773;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1905:773:7;;;:::i;510:44:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:44:8;;;:::i;1094:517:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1094:517:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1094:517:7;-1:-1:-1;;;;;1094:517:7;;:::i;3967:660::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3967:660:7;;;:::i;225:20:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:20:8;;;:::i;323:27::-;;;-1:-1:-1;;;;;323:27:8;;:::o;415:29::-;;;-1:-1:-1;;;;;415:29:8;;:::o;3079:621:7:-;3146:4;3212:5;;-1:-1:-1;;;;;3212:5:7;3198:10;:19;3194:124;;3240:67;3245:18;3265:41;3240:4;:67::i;:::-;3233:74;;;;3194:124;3414:12;;;-1:-1:-1;;;;;3494:30:7;;;-1:-1:-1;;;;;;3494:30:7;;;;;;;3606:49;;;3414:12;;;;3606:49;;;;;;;;;;;;;;;;;;;;;;;3678:14;3673:20;3666:27;;;3079:621;;;;:::o;1905:773::-;2037:29;;1954:4;;-1:-1:-1;;;;;2037:29:7;2023:10;:43;2019:162;;2089:81;2094:18;2114:55;2089:4;:81::i;:::-;2082:88;;;;2019:162;2271:14;;;2330:29;;;-1:-1:-1;;;;;2330:29:7;;;-1:-1:-1;;;;;;2370:46:7;;;;;;;;;2427:42;;;;;;2485:52;;;2271:14;;;2485:52;;;2522:14;;;;2485:52;;;;;;2330:29;;2485:52;;;;;;;;;2603:29;;2552:81;;;-1:-1:-1;;;;;2552:81:7;;;;;2603:29;;;2552:81;;;;;;;;;;;;;;;;2656:14;2651:20;2644:27;;;;1905:773;;:::o;510:44:8:-;;;-1:-1:-1;;;;;510:44:8;;:::o;1094:517:7:-;1179:4;1213:5;;-1:-1:-1;;;;;1213:5:7;1199:10;:19;1195:133;;1241:76;1246:18;1266:50;1241:4;:76::i;1195:133::-;1373:29;;;-1:-1:-1;;;;;1413:56:7;;;-1:-1:-1;;;;;;1413:56:7;;;;;;;1485:81;;;1373:29;;;1485:81;;;1536:29;;;;1485:81;;;;;;;;;;;;;;;;1589:14;1584:20;;3967:660;4081:12;;4007:4;;-1:-1:-1;;;;;4081:12:7;4067:10;:26;4063:134;;4116:70;4121:18;4141:44;4116:4;:70::i;4063:134::-;4259:16;4278:5;;;4319:12;;-1:-1:-1;;;;;4319:12:7;;;-1:-1:-1;;;;;;4389:20:7;;;;;;;;;4455:25;;;;;;4496;;;4278:5;;;4496:25;;;4515:5;;;;4496:25;;;;;;4319:12;;4496:25;;;;;;;;;4569:12;;4536:46;;;-1:-1:-1;;;;;4536:46:7;;;;;4569:12;;;4536:46;;;;;;;;;;;;;;;;4605:14;4600:20;;225::8;;;-1:-1:-1;;;;;225:20:8;;:::o;751:149:6:-;812:4;833:33;846:3;841:9;;;;;;;;857:4;852:10;;;;;;;;833:33;;;;;;;;;;;;;864:1;833:33;;;;;;;;;;;;;889:3;884:9;;;;;;;;877:16;751:149;-1:-1:-1;;;751:149:6:o"},"gasEstimates":{"creation":{"codeDepositCost":"295000","executionCost":"21172","totalCost":"316172"},"external":{"":"infinite","_acceptAdmin()":"46313","_acceptImplementation()":"46325","_setPendingAdmin(address)":"23378","_setPendingImplementation(address)":"23363","admin()":"1103","implementation()":"1060","pendingAdmin()":"1038","pendingXVSVaultImplementation()":"1037"}},"methodIdentifiers":{"_acceptAdmin()":"e9c714f2","_acceptImplementation()":"c1e80334","_setPendingAdmin(address)":"b71d1a0c","_setPendingImplementation(address)":"e992a041","admin()":"f851a440","implementation()":"5c60da1b","pendingAdmin()":"26782247","pendingXVSVaultImplementation()":"de0368b2"}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"info\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"detail\",\"type\":\"uint256\"}],\"name\":\"Failure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"NewAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"NewImplementation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldPendingAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"NewPendingAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldPendingImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingImplementation\",\"type\":\"address\"}],\"name\":\"NewPendingImplementation\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[],\"name\":\"_acceptAdmin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"_acceptImplementation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"_setPendingAdmin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingImplementation\",\"type\":\"address\"}],\"name\":\"_setPendingImplementation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingXVSVaultImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"methods\":{\"_acceptAdmin()\":{\"details\":\"Admin function for pending admin to accept role and update admin\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_acceptImplementation()\":{\"details\":\"Admin function for new implementation to accept it's role as implementation\",\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"},\"_setPendingAdmin(address)\":{\"details\":\"Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\",\"params\":{\"newPendingAdmin\":\"New pending admin.\"},\"return\":\"uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\"}},\"title\":\"XVS Vault Proxy\"},\"userdoc\":{\"methods\":{\"_acceptAdmin()\":{\"notice\":\"Accepts transfer of admin rights. msg.sender must be pendingAdmin\"},\"_acceptImplementation()\":{\"notice\":\"Accepts new implementation of XVS Vault. msg.sender must be pendingImplementation\"},\"_setPendingAdmin(address)\":{\"notice\":\"Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\"},\"_setPendingImplementation(address)\":{\"notice\":\"* Admin Functions **\"}},\"notice\":\"XVS Vault Proxy contract\"}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol\":\"XVSVaultProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.5.16;\\npragma experimental ABIEncoderV2;\\n\\n/**\\n * @title IPrime\\n * @author Venus\\n * @notice Interface for Prime Token\\n */\\ninterface IPrime {\\n    /**\\n     * @notice Executed by XVSVault whenever user's XVSVault balance changes\\n     * @param user the account address whose balance was updated\\n     */\\n    function xvsUpdated(address user) external;\\n\\n    /**\\n     * @notice accrues interest and updates score for an user for a specific market\\n     * @param user the account address for which to accrue interest and update score\\n     * @param market the market for which to accrue interest and update score\\n     */\\n    function accrueInterestAndUpdateScore(address user, address market) external;\\n\\n    /**\\n     * @notice Distributes income from market since last distribution\\n     * @param vToken the market for which to distribute the income\\n     */\\n    function accrueInterest(address vToken) external;\\n\\n    /**\\n     * @notice Returns if user is a prime holder\\n     * @param isPrimeHolder returns if the user is a prime holder\\n     */\\n    function isUserPrimeHolder(address user) external view returns (bool isPrimeHolder);\\n}\\n\",\"keccak256\":\"0x58861c0c05b8757f1a5d50b107eff479c8680878e6aa51bc93af420caf73f500\"},\"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the BEP20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {BEP20Detailed}.\\n */\\ninterface IBEP20 {\\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\",\"keccak256\":\"0x839b08895eb1ad83502d3631e8e9e3a856d2a8c63c46f070d604af7b26c62c07\"},\"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.16;\\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        return add(a, b, \\\"SafeMath: addition 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    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a, errorMessage);\\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    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    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    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        require(b != 0, errorMessage);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0x9431fd772ed4abc038cdfe9ce6c0066897bd1685ad45848748d1952935d5b8ef\"},\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultErrorReporter.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\ncontract XVSVaultErrorReporter {\\n    enum Error {\\n        NO_ERROR,\\n        UNAUTHORIZED\\n    }\\n\\n    enum FailureInfo {\\n        ACCEPT_ADMIN_PENDING_ADMIN_CHECK,\\n        ACCEPT_PENDING_IMPLEMENTATION_ADDRESS_CHECK,\\n        SET_PENDING_ADMIN_OWNER_CHECK,\\n        SET_PENDING_IMPLEMENTATION_OWNER_CHECK\\n    }\\n\\n    /**\\n     * @dev `error` corresponds to enum Error; `info` corresponds to enum FailureInfo, and `detail` is an arbitrary\\n     * contract-specific code that enables us to report opaque error codes from upgradeable contracts.\\n     **/\\n    event Failure(uint error, uint info, uint detail);\\n\\n    /**\\n     * @dev use this when reporting a known error from the money market or a non-upgradeable collaborator\\n     */\\n    function fail(Error err, FailureInfo info) internal returns (uint) {\\n        emit Failure(uint(err), uint(info), 0);\\n\\n        return uint(err);\\n    }\\n\\n    /**\\n     * @dev use this when reporting an opaque error from an upgradeable collaborator contract\\n     */\\n    function failOpaque(Error err, FailureInfo info, uint opaqueError) internal returns (uint) {\\n        emit Failure(uint(err), uint(info), opaqueError);\\n\\n        return uint(err);\\n    }\\n}\\n\",\"keccak256\":\"0xa79877a281d024f0d03dbf1842a36a972ee6c1aa36ba93e3d646726d40684a26\"},\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\nimport \\\"./XVSVaultStorage.sol\\\";\\nimport \\\"./XVSVaultErrorReporter.sol\\\";\\n\\n/**\\n * @title XVS Vault Proxy\\n * @author Venus\\n * @notice XVS Vault Proxy contract\\n */\\ncontract XVSVaultProxy is XVSVaultAdminStorage, XVSVaultErrorReporter {\\n    /**\\n     * @notice Emitted when pendingXVSVaultImplementation is changed\\n     */\\n    event NewPendingImplementation(address oldPendingImplementation, address newPendingImplementation);\\n\\n    /**\\n     * @notice Emitted when pendingXVSVaultImplementation is accepted, which means XVS Vault implementation is updated\\n     */\\n    event NewImplementation(address oldImplementation, address newImplementation);\\n\\n    /**\\n     * @notice Emitted when pendingAdmin is changed\\n     */\\n    event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);\\n\\n    /**\\n     * @notice Emitted when pendingAdmin is accepted, which means admin is updated\\n     */\\n    event NewAdmin(address oldAdmin, address newAdmin);\\n\\n    constructor() public {\\n        // Set admin to caller\\n        admin = msg.sender;\\n    }\\n\\n    /*** Admin Functions ***/\\n    function _setPendingImplementation(address newPendingImplementation) public returns (uint) {\\n        if (msg.sender != admin) {\\n            return fail(Error.UNAUTHORIZED, FailureInfo.SET_PENDING_IMPLEMENTATION_OWNER_CHECK);\\n        }\\n\\n        address oldPendingImplementation = pendingXVSVaultImplementation;\\n\\n        pendingXVSVaultImplementation = newPendingImplementation;\\n\\n        emit NewPendingImplementation(oldPendingImplementation, pendingXVSVaultImplementation);\\n\\n        return uint(Error.NO_ERROR);\\n    }\\n\\n    /**\\n     * @notice Accepts new implementation of XVS Vault. msg.sender must be pendingImplementation\\n     * @dev Admin function for new implementation to accept it's role as implementation\\n     * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\\n     */\\n    function _acceptImplementation() public returns (uint) {\\n        // Check caller is pendingImplementation\\n        if (msg.sender != pendingXVSVaultImplementation) {\\n            return fail(Error.UNAUTHORIZED, FailureInfo.ACCEPT_PENDING_IMPLEMENTATION_ADDRESS_CHECK);\\n        }\\n\\n        // Save current values for inclusion in log\\n        address oldImplementation = implementation;\\n        address oldPendingImplementation = pendingXVSVaultImplementation;\\n\\n        implementation = pendingXVSVaultImplementation;\\n\\n        pendingXVSVaultImplementation = address(0);\\n\\n        emit NewImplementation(oldImplementation, implementation);\\n        emit NewPendingImplementation(oldPendingImplementation, pendingXVSVaultImplementation);\\n\\n        return uint(Error.NO_ERROR);\\n    }\\n\\n    /**\\n     * @notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\\n     * @dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.\\n     * @param newPendingAdmin New pending admin.\\n     * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\\n     */\\n    function _setPendingAdmin(address newPendingAdmin) public returns (uint) {\\n        // Check caller = admin\\n        if (msg.sender != admin) {\\n            return fail(Error.UNAUTHORIZED, FailureInfo.SET_PENDING_ADMIN_OWNER_CHECK);\\n        }\\n\\n        // Save current value, if any, for inclusion in log\\n        address oldPendingAdmin = pendingAdmin;\\n\\n        // Store pendingAdmin with value newPendingAdmin\\n        pendingAdmin = newPendingAdmin;\\n\\n        // Emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin)\\n        emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin);\\n\\n        return uint(Error.NO_ERROR);\\n    }\\n\\n    /**\\n     * @notice Accepts transfer of admin rights. msg.sender must be pendingAdmin\\n     * @dev Admin function for pending admin to accept role and update admin\\n     * @return uint 0=success, otherwise a failure (see ErrorReporter.sol for details)\\n     */\\n    function _acceptAdmin() public returns (uint) {\\n        // Check caller is pendingAdmin\\n        if (msg.sender != pendingAdmin) {\\n            return fail(Error.UNAUTHORIZED, FailureInfo.ACCEPT_ADMIN_PENDING_ADMIN_CHECK);\\n        }\\n\\n        // Save current values for inclusion in log\\n        address oldAdmin = admin;\\n        address oldPendingAdmin = pendingAdmin;\\n\\n        // Store admin with value pendingAdmin\\n        admin = pendingAdmin;\\n\\n        // Clear the pending value\\n        pendingAdmin = address(0);\\n\\n        emit NewAdmin(oldAdmin, admin);\\n        emit NewPendingAdmin(oldPendingAdmin, pendingAdmin);\\n\\n        return uint(Error.NO_ERROR);\\n    }\\n\\n    /**\\n     * @dev Delegates execution to an implementation contract.\\n     * It returns to the external caller whatever the implementation returns\\n     * or forwards reverts.\\n     */\\n    function() external payable {\\n        // delegate all other functions to current implementation\\n        (bool success, ) = implementation.delegatecall(msg.data);\\n\\n        assembly {\\n            let free_mem_ptr := mload(0x40)\\n            returndatacopy(free_mem_ptr, 0, returndatasize)\\n\\n            switch success\\n            case 0 {\\n                revert(free_mem_ptr, returndatasize)\\n            }\\n            default {\\n                return(free_mem_ptr, returndatasize)\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xb39af917833659fe38f2f76924deda420babed8259b27741dc6cb402ade4d124\"},\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\nimport \\\"../Utils/SafeMath.sol\\\";\\nimport \\\"../Utils/IBEP20.sol\\\";\\nimport \\\"../Tokens/Prime/IPrime.sol\\\";\\n\\ncontract XVSVaultAdminStorage {\\n    /**\\n     * @notice Administrator for this contract\\n     */\\n    address public admin;\\n\\n    /**\\n     * @notice Pending administrator for this contract\\n     */\\n    address public pendingAdmin;\\n\\n    /**\\n     * @notice Active brains of XVS Vault\\n     */\\n    address public implementation;\\n\\n    /**\\n     * @notice Pending brains of XVS Vault\\n     */\\n    address public pendingXVSVaultImplementation;\\n}\\n\\ncontract XVSVaultStorageV1 is XVSVaultAdminStorage {\\n    /// @notice Guard variable for re-entrancy checks\\n    bool internal _notEntered;\\n\\n    /// @notice The reward token store\\n    address public xvsStore;\\n\\n    /// @notice The xvs token address\\n    address public xvsAddress;\\n\\n    // Reward tokens created per block or second indentified by reward token address.\\n    mapping(address => uint256) public rewardTokenAmountsPerBlockOrSecond;\\n\\n    /// @notice Info of each user.\\n    struct UserInfo {\\n        uint256 amount;\\n        uint256 rewardDebt;\\n        uint256 pendingWithdrawals;\\n    }\\n\\n    // Info of each pool.\\n    struct PoolInfo {\\n        IBEP20 token; // Address of token contract to stake.\\n        uint256 allocPoint; // How many allocation points assigned to this pool.\\n        uint256 lastRewardBlockOrSecond; // Last block number or second that reward tokens distribution occurs.\\n        uint256 accRewardPerShare; // Accumulated per share, times 1e12. See below.\\n        uint256 lockPeriod; // Min time between withdrawal request and its execution.\\n    }\\n\\n    // Infomation about a withdrawal request\\n    struct WithdrawalRequest {\\n        uint256 amount;\\n        uint128 lockedUntil;\\n        uint128 afterUpgrade;\\n    }\\n\\n    // Info of each user that stakes tokens.\\n    mapping(address => mapping(uint256 => mapping(address => UserInfo))) internal userInfos;\\n\\n    // Info of each pool.\\n    mapping(address => PoolInfo[]) public poolInfos;\\n\\n    // Total allocation points. Must be the sum of all allocation points in all pools.\\n    mapping(address => uint256) public totalAllocPoints;\\n\\n    // Info of requested but not yet executed withdrawals\\n    mapping(address => mapping(uint256 => mapping(address => WithdrawalRequest[]))) internal withdrawalRequests;\\n\\n    /// @notice DEPRECATED A record of each accounts delegate (before the voting power fix)\\n    mapping(address => address) private __oldDelegatesSlot;\\n\\n    /// @notice A checkpoint for marking number of votes from a given block or second\\n    struct Checkpoint {\\n        uint32 fromBlockOrSecond;\\n        uint96 votes;\\n    }\\n\\n    /// @notice DEPRECATED A record of votes checkpoints for each account, by index (before the voting power fix)\\n    mapping(address => mapping(uint32 => Checkpoint)) private __oldCheckpointsSlot;\\n\\n    /// @notice DEPRECATED The number of checkpoints for each account (before the voting power fix)\\n    mapping(address => uint32) private __oldNumCheckpointsSlot;\\n\\n    /// @notice A record of states for signing / validating signatures\\n    mapping(address => uint) public nonces;\\n\\n    /// @notice The EIP-712 typehash for the contract's domain\\n    bytes32 public constant DOMAIN_TYPEHASH =\\n        keccak256(\\\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\\\");\\n\\n    /// @notice The EIP-712 typehash for the delegation struct used by the contract\\n    bytes32 public constant DELEGATION_TYPEHASH =\\n        keccak256(\\\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\\\");\\n}\\n\\ncontract XVSVaultStorage is XVSVaultStorageV1 {\\n    /// @notice A record of each accounts delegate\\n    mapping(address => address) public delegates;\\n\\n    /// @notice A record of votes checkpoints for each account, by index\\n    mapping(address => mapping(uint32 => Checkpoint)) public checkpoints;\\n\\n    /// @notice The number of checkpoints for each account\\n    mapping(address => uint32) public numCheckpoints;\\n\\n    /// @notice Tracks pending withdrawals for all users for a particular reward token and pool id\\n    mapping(address => mapping(uint256 => uint256)) public totalPendingWithdrawals;\\n\\n    /// @notice pause indicator for Vault\\n    bool public vaultPaused;\\n\\n    /// @notice if the token is added to any of the pools\\n    mapping(address => bool) public isStakedToken;\\n\\n    /// @notice Amount we owe to users because of failed transfer attempts\\n    mapping(address => mapping(address => uint256)) public pendingRewardTransfers;\\n\\n    /// @notice Prime token contract address\\n    IPrime public primeToken;\\n\\n    /// @notice Reward token for which prime token is issued for staking\\n    address public primeRewardToken;\\n\\n    /// @notice Pool ID for which prime token is issued for staking\\n    uint256 public primePoolId;\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[46] private __gap;\\n}\\n\",\"keccak256\":\"0xb09f9295c41bdac1350a3607f2b4ea326cb295a6d08f4145bc33ff87844cd02b\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1183,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol:XVSVaultProxy","label":"admin","offset":0,"slot":"0","type":"t_address"},{"astId":1185,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol:XVSVaultProxy","label":"pendingAdmin","offset":0,"slot":"1","type":"t_address"},{"astId":1187,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol:XVSVaultProxy","label":"implementation","offset":0,"slot":"2","type":"t_address"},{"astId":1189,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultProxy.sol:XVSVaultProxy","label":"pendingXVSVaultImplementation","offset":0,"slot":"3","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"methods":{"_acceptAdmin()":{"notice":"Accepts transfer of admin rights. msg.sender must be pendingAdmin"},"_acceptImplementation()":{"notice":"Accepts new implementation of XVS Vault. msg.sender must be pendingImplementation"},"_setPendingAdmin(address)":{"notice":"Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer."},"_setPendingImplementation(address)":{"notice":"* Admin Functions **"}},"notice":"XVS Vault Proxy contract"}}},"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol":{"XVSVaultAdminStorage":{"abi":[{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingXVSVaultImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"devdoc":{"methods":{}},"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b5060f08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060465760003560e01c80632678224714604b5780635c60da1b14606d578063de0368b2146073578063f851a440146079575b600080fd5b6051607f565b604080516001600160a01b039092168252519081900360200190f35b6051608e565b6051609d565b605160ac565b6001546001600160a01b031681565b6002546001600160a01b031681565b6003546001600160a01b031681565b6000546001600160a01b03168156fea265627a7a72315820cbbcf772225d2565bb596508c795e60b606324035a8652932609e370fdb5c76264736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF0 DUP1 PUSH2 0x1F 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 0x46 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26782247 EQ PUSH1 0x4B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH1 0x6D JUMPI DUP1 PUSH4 0xDE0368B2 EQ PUSH1 0x73 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH1 0x79 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x51 PUSH1 0x7F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x51 PUSH1 0x8E JUMP JUMPDEST PUSH1 0x51 PUSH1 0x9D JUMP JUMPDEST PUSH1 0x51 PUSH1 0xAC JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xCB 0xBC 0xF7 PUSH19 0x225D2565BB596508C795E60B606324035A8652 SWAP4 0x26 MULMOD 0xE3 PUSH17 0xFDB5C76264736F6C634300051000320000 ","sourceMap":"126:431:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;126:431:8;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060465760003560e01c80632678224714604b5780635c60da1b14606d578063de0368b2146073578063f851a440146079575b600080fd5b6051607f565b604080516001600160a01b039092168252519081900360200190f35b6051608e565b6051609d565b605160ac565b6001546001600160a01b031681565b6002546001600160a01b031681565b6003546001600160a01b031681565b6000546001600160a01b03168156fea265627a7a72315820cbbcf772225d2565bb596508c795e60b606324035a8652932609e370fdb5c76264736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x46 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26782247 EQ PUSH1 0x4B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH1 0x6D JUMPI DUP1 PUSH4 0xDE0368B2 EQ PUSH1 0x73 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH1 0x79 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x51 PUSH1 0x7F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x51 PUSH1 0x8E JUMP JUMPDEST PUSH1 0x51 PUSH1 0x9D JUMP JUMPDEST PUSH1 0x51 PUSH1 0xAC JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xCB 0xBC 0xF7 PUSH19 0x225D2565BB596508C795E60B606324035A8652 SWAP4 0x26 MULMOD 0xE3 PUSH17 0xFDB5C76264736F6C634300051000320000 ","sourceMap":"126:431:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;126:431:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;323:27;;;:::i;:::-;;;;-1:-1:-1;;;;;323:27:8;;;;;;;;;;;;;;415:29;;;:::i;510:44::-;;;:::i;225:20::-;;;:::i;323:27::-;;;-1:-1:-1;;;;;323:27:8;;:::o;415:29::-;;;-1:-1:-1;;;;;415:29:8;;:::o;510:44::-;;;-1:-1:-1;;;;;510:44:8;;:::o;225:20::-;;;-1:-1:-1;;;;;225:20:8;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"48000","executionCost":"99","totalCost":"48099"},"external":{"admin()":"1081","implementation()":"1037","pendingAdmin()":"1015","pendingXVSVaultImplementation()":"1059"}},"methodIdentifiers":{"admin()":"f851a440","implementation()":"5c60da1b","pendingAdmin()":"26782247","pendingXVSVaultImplementation()":"de0368b2"}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingXVSVaultImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol\":\"XVSVaultAdminStorage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.5.16;\\npragma experimental ABIEncoderV2;\\n\\n/**\\n * @title IPrime\\n * @author Venus\\n * @notice Interface for Prime Token\\n */\\ninterface IPrime {\\n    /**\\n     * @notice Executed by XVSVault whenever user's XVSVault balance changes\\n     * @param user the account address whose balance was updated\\n     */\\n    function xvsUpdated(address user) external;\\n\\n    /**\\n     * @notice accrues interest and updates score for an user for a specific market\\n     * @param user the account address for which to accrue interest and update score\\n     * @param market the market for which to accrue interest and update score\\n     */\\n    function accrueInterestAndUpdateScore(address user, address market) external;\\n\\n    /**\\n     * @notice Distributes income from market since last distribution\\n     * @param vToken the market for which to distribute the income\\n     */\\n    function accrueInterest(address vToken) external;\\n\\n    /**\\n     * @notice Returns if user is a prime holder\\n     * @param isPrimeHolder returns if the user is a prime holder\\n     */\\n    function isUserPrimeHolder(address user) external view returns (bool isPrimeHolder);\\n}\\n\",\"keccak256\":\"0x58861c0c05b8757f1a5d50b107eff479c8680878e6aa51bc93af420caf73f500\"},\"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the BEP20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {BEP20Detailed}.\\n */\\ninterface IBEP20 {\\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\",\"keccak256\":\"0x839b08895eb1ad83502d3631e8e9e3a856d2a8c63c46f070d604af7b26c62c07\"},\"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.16;\\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        return add(a, b, \\\"SafeMath: addition 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    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a, errorMessage);\\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    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    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    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        require(b != 0, errorMessage);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0x9431fd772ed4abc038cdfe9ce6c0066897bd1685ad45848748d1952935d5b8ef\"},\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\nimport \\\"../Utils/SafeMath.sol\\\";\\nimport \\\"../Utils/IBEP20.sol\\\";\\nimport \\\"../Tokens/Prime/IPrime.sol\\\";\\n\\ncontract XVSVaultAdminStorage {\\n    /**\\n     * @notice Administrator for this contract\\n     */\\n    address public admin;\\n\\n    /**\\n     * @notice Pending administrator for this contract\\n     */\\n    address public pendingAdmin;\\n\\n    /**\\n     * @notice Active brains of XVS Vault\\n     */\\n    address public implementation;\\n\\n    /**\\n     * @notice Pending brains of XVS Vault\\n     */\\n    address public pendingXVSVaultImplementation;\\n}\\n\\ncontract XVSVaultStorageV1 is XVSVaultAdminStorage {\\n    /// @notice Guard variable for re-entrancy checks\\n    bool internal _notEntered;\\n\\n    /// @notice The reward token store\\n    address public xvsStore;\\n\\n    /// @notice The xvs token address\\n    address public xvsAddress;\\n\\n    // Reward tokens created per block or second indentified by reward token address.\\n    mapping(address => uint256) public rewardTokenAmountsPerBlockOrSecond;\\n\\n    /// @notice Info of each user.\\n    struct UserInfo {\\n        uint256 amount;\\n        uint256 rewardDebt;\\n        uint256 pendingWithdrawals;\\n    }\\n\\n    // Info of each pool.\\n    struct PoolInfo {\\n        IBEP20 token; // Address of token contract to stake.\\n        uint256 allocPoint; // How many allocation points assigned to this pool.\\n        uint256 lastRewardBlockOrSecond; // Last block number or second that reward tokens distribution occurs.\\n        uint256 accRewardPerShare; // Accumulated per share, times 1e12. See below.\\n        uint256 lockPeriod; // Min time between withdrawal request and its execution.\\n    }\\n\\n    // Infomation about a withdrawal request\\n    struct WithdrawalRequest {\\n        uint256 amount;\\n        uint128 lockedUntil;\\n        uint128 afterUpgrade;\\n    }\\n\\n    // Info of each user that stakes tokens.\\n    mapping(address => mapping(uint256 => mapping(address => UserInfo))) internal userInfos;\\n\\n    // Info of each pool.\\n    mapping(address => PoolInfo[]) public poolInfos;\\n\\n    // Total allocation points. Must be the sum of all allocation points in all pools.\\n    mapping(address => uint256) public totalAllocPoints;\\n\\n    // Info of requested but not yet executed withdrawals\\n    mapping(address => mapping(uint256 => mapping(address => WithdrawalRequest[]))) internal withdrawalRequests;\\n\\n    /// @notice DEPRECATED A record of each accounts delegate (before the voting power fix)\\n    mapping(address => address) private __oldDelegatesSlot;\\n\\n    /// @notice A checkpoint for marking number of votes from a given block or second\\n    struct Checkpoint {\\n        uint32 fromBlockOrSecond;\\n        uint96 votes;\\n    }\\n\\n    /// @notice DEPRECATED A record of votes checkpoints for each account, by index (before the voting power fix)\\n    mapping(address => mapping(uint32 => Checkpoint)) private __oldCheckpointsSlot;\\n\\n    /// @notice DEPRECATED The number of checkpoints for each account (before the voting power fix)\\n    mapping(address => uint32) private __oldNumCheckpointsSlot;\\n\\n    /// @notice A record of states for signing / validating signatures\\n    mapping(address => uint) public nonces;\\n\\n    /// @notice The EIP-712 typehash for the contract's domain\\n    bytes32 public constant DOMAIN_TYPEHASH =\\n        keccak256(\\\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\\\");\\n\\n    /// @notice The EIP-712 typehash for the delegation struct used by the contract\\n    bytes32 public constant DELEGATION_TYPEHASH =\\n        keccak256(\\\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\\\");\\n}\\n\\ncontract XVSVaultStorage is XVSVaultStorageV1 {\\n    /// @notice A record of each accounts delegate\\n    mapping(address => address) public delegates;\\n\\n    /// @notice A record of votes checkpoints for each account, by index\\n    mapping(address => mapping(uint32 => Checkpoint)) public checkpoints;\\n\\n    /// @notice The number of checkpoints for each account\\n    mapping(address => uint32) public numCheckpoints;\\n\\n    /// @notice Tracks pending withdrawals for all users for a particular reward token and pool id\\n    mapping(address => mapping(uint256 => uint256)) public totalPendingWithdrawals;\\n\\n    /// @notice pause indicator for Vault\\n    bool public vaultPaused;\\n\\n    /// @notice if the token is added to any of the pools\\n    mapping(address => bool) public isStakedToken;\\n\\n    /// @notice Amount we owe to users because of failed transfer attempts\\n    mapping(address => mapping(address => uint256)) public pendingRewardTransfers;\\n\\n    /// @notice Prime token contract address\\n    IPrime public primeToken;\\n\\n    /// @notice Reward token for which prime token is issued for staking\\n    address public primeRewardToken;\\n\\n    /// @notice Pool ID for which prime token is issued for staking\\n    uint256 public primePoolId;\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[46] private __gap;\\n}\\n\",\"keccak256\":\"0xb09f9295c41bdac1350a3607f2b4ea326cb295a6d08f4145bc33ff87844cd02b\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1183,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultAdminStorage","label":"admin","offset":0,"slot":"0","type":"t_address"},{"astId":1185,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultAdminStorage","label":"pendingAdmin","offset":0,"slot":"1","type":"t_address"},{"astId":1187,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultAdminStorage","label":"implementation","offset":0,"slot":"2","type":"t_address"},{"astId":1189,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultAdminStorage","label":"pendingXVSVaultImplementation","offset":0,"slot":"3","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"methods":{}}},"XVSVaultStorage":{"abi":[{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlockOrSecond","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isStakedToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"pendingRewardTransfers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingXVSVaultImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfos","outputs":[{"internalType":"contract IBEP20","name":"token","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlockOrSecond","type":"uint256"},{"internalType":"uint256","name":"accRewardPerShare","type":"uint256"},{"internalType":"uint256","name":"lockPeriod","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"primePoolId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"primeRewardToken","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"primeToken","outputs":[{"internalType":"contract IPrime","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardTokenAmountsPerBlockOrSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalAllocPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalPendingWithdrawals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vaultPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"xvsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"xvsStore","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"devdoc":{"methods":{}},"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506106b7806100206000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80637ecebe00116100b8578063de0368b21161007c578063de0368b214610379578063e7a324dc14610381578063e8f2be6f14610389578063f1127ed814610391578063f851a440146103f0578063fe5a451a146103f857610142565b80637ecebe001461029e57806392e35000146102c4578063add8933714610325578063c3c754a81461032d578063cd9b94e71461035357610142565b80634298bdbd1161010a5780634298bdbd146101c3578063587cde1e146101e95780635c60da1b1461020f5780635f14e700146102175780636fcfff451461024357806373d025d61461028257610142565b806320606b701461014757806324f52bbf146101615780632678224714610185578063358ae0361461018d5780633d4180f914610195575b600080fd5b61014f610400565b60408051918252519081900360200190f35b61016961041b565b604080516001600160a01b039092168252519081900360200190f35b61016961042a565b610169610439565b61014f600480360360408110156101ab57600080fd5b506001600160a01b0381358116916020013516610448565b61014f600480360360208110156101d957600080fd5b50356001600160a01b0316610465565b610169600480360360208110156101ff57600080fd5b50356001600160a01b0316610477565b610169610492565b61014f6004803603604081101561022d57600080fd5b506001600160a01b0381351690602001356104a1565b6102696004803603602081101561025957600080fd5b50356001600160a01b03166104be565b6040805163ffffffff9092168252519081900360200190f35b61028a6104d6565b604080519115158252519081900360200190f35b61014f600480360360208110156102b457600080fd5b50356001600160a01b03166104df565b6102f0600480360360408110156102da57600080fd5b506001600160a01b0381351690602001356104f1565b604080516001600160a01b03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b610169610546565b61028a6004803603602081101561034357600080fd5b50356001600160a01b0316610555565b61014f6004803603602081101561036957600080fd5b50356001600160a01b031661056a565b61016961057c565b61014f61058b565b61014f6105a6565b6103c3600480360360408110156103a757600080fd5b5080356001600160a01b0316906020013563ffffffff166105ac565b6040805163ffffffff90931683526bffffffffffffffffffffffff90911660208301528051918290030190f35b6101696105e7565b6101696105f6565b60405180604361060682396043019050604051809103902081565b6004546001600160a01b031681565b6001546001600160a01b031681565b6005546001600160a01b031681565b601560209081526000928352604080842090915290825290205481565b60096020526000908152604090205481565b600f602052600090815260409020546001600160a01b031681565b6002546001600160a01b031681565b601260209081526000928352604080842090915290825290205481565b60116020526000908152604090205463ffffffff1681565b60135460ff1681565b600e6020526000908152604090205481565b6008602052816000526040600020818154811061050a57fe5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b039093169550909350919085565b6017546001600160a01b031681565b60146020526000908152604090205460ff1681565b60066020526000908152604090205481565b6003546001600160a01b031681565b60405180603a6106498239603a019050604051809103902081565b60185481565b601060209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6000546001600160a01b031681565b6016546001600160a01b03168156fe454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e74726163742944656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929a265627a7a723158205955170758dfaecb89310fc8addad40292f1b88ecfe7742ef2b14c794177bc9d64736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6B7 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 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xDE0368B2 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xDE0368B2 EQ PUSH2 0x379 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x381 JUMPI DUP1 PUSH4 0xE8F2BE6F EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0xF1127ED8 EQ PUSH2 0x391 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0xFE5A451A EQ PUSH2 0x3F8 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x92E35000 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0xADD89337 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0xC3C754A8 EQ PUSH2 0x32D JUMPI DUP1 PUSH4 0xCD9B94E7 EQ PUSH2 0x353 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x4298BDBD GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x4298BDBD EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x587CDE1E EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x5F14E700 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x6FCFFF45 EQ PUSH2 0x243 JUMPI DUP1 PUSH4 0x73D025D6 EQ PUSH2 0x282 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x20606B70 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x24F52BBF EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x358AE036 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x3D4180F9 EQ PUSH2 0x195 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x400 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x169 PUSH2 0x41B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x169 PUSH2 0x42A JUMP JUMPDEST PUSH2 0x169 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x448 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x465 JUMP JUMPDEST PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x477 JUMP JUMPDEST PUSH2 0x169 PUSH2 0x492 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4A1 JUMP JUMPDEST PUSH2 0x269 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x28A PUSH2 0x4D6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4DF JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x169 PUSH2 0x546 JUMP JUMPDEST PUSH2 0x28A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x555 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x56A JUMP JUMPDEST PUSH2 0x169 PUSH2 0x57C JUMP JUMPDEST PUSH2 0x14F PUSH2 0x58B JUMP JUMPDEST PUSH2 0x14F PUSH2 0x5A6 JUMP JUMPDEST PUSH2 0x3C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x5AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x169 PUSH2 0x5E7 JUMP JUMPDEST PUSH2 0x169 PUSH2 0x5F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x43 PUSH2 0x606 DUP3 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x15 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 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x12 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 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x50A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x5 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP6 POP SWAP1 SWAP4 POP SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x3A PUSH2 0x649 DUP3 CODECOPY PUSH1 0x3A ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID GASLIMIT 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH22 0x696E7432353620636861696E49642C61646472657373 KECCAK256 PUSH23 0x6572696679696E67436F6E74726163742944656C656761 PUSH21 0x696F6E28616464726573732064656C656761746565 0x2C PUSH22 0x696E74323536206E6F6E63652C75696E743235362065 PUSH25 0x7069727929A265627A7A723158205955170758DFAECB89310F 0xC8 0xAD 0xDA 0xD4 MUL SWAP3 CALL 0xB8 DUP15 0xCF 0xE7 PUSH21 0x2EF2B14C794177BC9D64736F6C6343000510003200 ","sourceMap":"3556:1516:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3556:1516:8;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101425760003560e01c80637ecebe00116100b8578063de0368b21161007c578063de0368b214610379578063e7a324dc14610381578063e8f2be6f14610389578063f1127ed814610391578063f851a440146103f0578063fe5a451a146103f857610142565b80637ecebe001461029e57806392e35000146102c4578063add8933714610325578063c3c754a81461032d578063cd9b94e71461035357610142565b80634298bdbd1161010a5780634298bdbd146101c3578063587cde1e146101e95780635c60da1b1461020f5780635f14e700146102175780636fcfff451461024357806373d025d61461028257610142565b806320606b701461014757806324f52bbf146101615780632678224714610185578063358ae0361461018d5780633d4180f914610195575b600080fd5b61014f610400565b60408051918252519081900360200190f35b61016961041b565b604080516001600160a01b039092168252519081900360200190f35b61016961042a565b610169610439565b61014f600480360360408110156101ab57600080fd5b506001600160a01b0381358116916020013516610448565b61014f600480360360208110156101d957600080fd5b50356001600160a01b0316610465565b610169600480360360208110156101ff57600080fd5b50356001600160a01b0316610477565b610169610492565b61014f6004803603604081101561022d57600080fd5b506001600160a01b0381351690602001356104a1565b6102696004803603602081101561025957600080fd5b50356001600160a01b03166104be565b6040805163ffffffff9092168252519081900360200190f35b61028a6104d6565b604080519115158252519081900360200190f35b61014f600480360360208110156102b457600080fd5b50356001600160a01b03166104df565b6102f0600480360360408110156102da57600080fd5b506001600160a01b0381351690602001356104f1565b604080516001600160a01b03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b610169610546565b61028a6004803603602081101561034357600080fd5b50356001600160a01b0316610555565b61014f6004803603602081101561036957600080fd5b50356001600160a01b031661056a565b61016961057c565b61014f61058b565b61014f6105a6565b6103c3600480360360408110156103a757600080fd5b5080356001600160a01b0316906020013563ffffffff166105ac565b6040805163ffffffff90931683526bffffffffffffffffffffffff90911660208301528051918290030190f35b6101696105e7565b6101696105f6565b60405180604361060682396043019050604051809103902081565b6004546001600160a01b031681565b6001546001600160a01b031681565b6005546001600160a01b031681565b601560209081526000928352604080842090915290825290205481565b60096020526000908152604090205481565b600f602052600090815260409020546001600160a01b031681565b6002546001600160a01b031681565b601260209081526000928352604080842090915290825290205481565b60116020526000908152604090205463ffffffff1681565b60135460ff1681565b600e6020526000908152604090205481565b6008602052816000526040600020818154811061050a57fe5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b039093169550909350919085565b6017546001600160a01b031681565b60146020526000908152604090205460ff1681565b60066020526000908152604090205481565b6003546001600160a01b031681565b60405180603a6106498239603a019050604051809103902081565b60185481565b601060209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6000546001600160a01b031681565b6016546001600160a01b03168156fe454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e74726163742944656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929a265627a7a723158205955170758dfaecb89310fc8addad40292f1b88ecfe7742ef2b14c794177bc9d64736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xDE0368B2 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xDE0368B2 EQ PUSH2 0x379 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x381 JUMPI DUP1 PUSH4 0xE8F2BE6F EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0xF1127ED8 EQ PUSH2 0x391 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0xFE5A451A EQ PUSH2 0x3F8 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x92E35000 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0xADD89337 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0xC3C754A8 EQ PUSH2 0x32D JUMPI DUP1 PUSH4 0xCD9B94E7 EQ PUSH2 0x353 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x4298BDBD GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x4298BDBD EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x587CDE1E EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x5F14E700 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x6FCFFF45 EQ PUSH2 0x243 JUMPI DUP1 PUSH4 0x73D025D6 EQ PUSH2 0x282 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x20606B70 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x24F52BBF EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x358AE036 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x3D4180F9 EQ PUSH2 0x195 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x400 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x169 PUSH2 0x41B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x169 PUSH2 0x42A JUMP JUMPDEST PUSH2 0x169 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x448 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x465 JUMP JUMPDEST PUSH2 0x169 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x477 JUMP JUMPDEST PUSH2 0x169 PUSH2 0x492 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4A1 JUMP JUMPDEST PUSH2 0x269 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x28A PUSH2 0x4D6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4DF JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x169 PUSH2 0x546 JUMP JUMPDEST PUSH2 0x28A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x555 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x56A JUMP JUMPDEST PUSH2 0x169 PUSH2 0x57C JUMP JUMPDEST PUSH2 0x14F PUSH2 0x58B JUMP JUMPDEST PUSH2 0x14F PUSH2 0x5A6 JUMP JUMPDEST PUSH2 0x3C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x5AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x169 PUSH2 0x5E7 JUMP JUMPDEST PUSH2 0x169 PUSH2 0x5F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x43 PUSH2 0x606 DUP3 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x15 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 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x12 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 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x50A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x5 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP6 POP SWAP1 SWAP4 POP SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x3A PUSH2 0x649 DUP3 CODECOPY PUSH1 0x3A ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID GASLIMIT 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH22 0x696E7432353620636861696E49642C61646472657373 KECCAK256 PUSH23 0x6572696679696E67436F6E74726163742944656C656761 PUSH21 0x696F6E28616464726573732064656C656761746565 0x2C PUSH22 0x696E74323536206E6F6E63652C75696E743235362065 PUSH25 0x7069727929A265627A7A723158205955170758DFAECB89310F 0xC8 0xAD 0xDA 0xD4 MUL SWAP3 CALL 0xB8 DUP15 0xCF 0xE7 PUSH21 0x2EF2B14C794177BC9D64736F6C6343000510003200 ","sourceMap":"3556:1516:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3556:1516:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3205:130;;;:::i;:::-;;;;;;;;;;;;;;;;741:23;;;:::i;:::-;;;;-1:-1:-1;;;;;741:23:8;;;;;;;;;;;;;;323:27;;;:::i;809:25::-;;;:::i;4413:77::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4413:77:8;;;;;;;;;;:::i;2106:51::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2106:51:8;-1:-1:-1;;;;;2106:51:8;;:::i;3659:44::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3659:44:8;-1:-1:-1;;;;;3659:44:8;;:::i;415:29::-;;;:::i;4071:78::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4071:78:8;;;;;;;;:::i;3917:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3917:48:8;-1:-1:-1;;;;;3917:48:8;;:::i;:::-;;;;;;;;;;;;;;;;;;;4198:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;3097:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3097:38:8;-1:-1:-1;;;;;3097:38:8;;:::i;1965:47::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1965:47:8;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1965:47:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4646:31;;;:::i;4286:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4286:45:8;-1:-1:-1;;;;;4286:45:8;;:::i;927:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;927:69:8;-1:-1:-1;;;;;927:69:8;;:::i;510:44::-;;;:::i;3426:125::-;;;:::i;4752:26::-;;;:::i;3783:68::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3783:68:8;;-1:-1:-1;;;;;3783:68:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;225:20;;;:::i;4542:24::-;;;:::i;3205:130::-;3255:80;;;;;;;;;;;;;;;;;;3205:130;:::o;741:23::-;;;-1:-1:-1;;;;;741:23:8;;:::o;323:27::-;;;-1:-1:-1;;;;;323:27:8;;:::o;809:25::-;;;-1:-1:-1;;;;;809:25:8;;:::o;4413:77::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;2106:51::-;;;;;;;;;;;;;:::o;3659:44::-;;;;;;;;;;;;-1:-1:-1;;;;;3659:44:8;;:::o;415:29::-;;;-1:-1:-1;;;;;415:29:8;;:::o;4071:78::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;3917:48::-;;;;;;;;;;;;;;;:::o;4198:23::-;;;;;;:::o;3097:38::-;;;;;;;;;;;;;:::o;1965:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1965:47:8;;;;-1:-1:-1;1965:47:8;;-1:-1:-1;1965:47:8;;;:::o;4646:31::-;;;-1:-1:-1;;;;;4646:31:8;;:::o;4286:45::-;;;;;;;;;;;;;;;:::o;927:69::-;;;;;;;;;;;;;:::o;510:44::-;;;-1:-1:-1;;;;;510:44:8;;:::o;3426:125::-;3480:71;;;;;;;;;;;;;;;;;;3426:125;:::o;4752:26::-;;;;:::o;3783:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;225:20::-;;;-1:-1:-1;;;;;225:20:8;;:::o;4542:24::-;;;-1:-1:-1;;;;;4542:24:8;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"343800","executionCost":"380","totalCost":"344180"},"external":{"DELEGATION_TYPEHASH()":"infinite","DOMAIN_TYPEHASH()":"infinite","admin()":"1147","checkpoints(address,uint32)":"1370","delegates(address)":"1208","implementation()":"1104","isStakedToken(address)":"1225","nonces(address)":"1147","numCheckpoints(address)":"1250","pendingAdmin()":"1105","pendingRewardTransfers(address,address)":"1329","pendingXVSVaultImplementation()":"1059","poolInfos(address,uint256)":"5465","primePoolId()":"1064","primeRewardToken()":"1104","primeToken()":"1169","rewardTokenAmountsPerBlockOrSecond(address)":"1235","totalAllocPoints(address)":"1147","totalPendingWithdrawals(address,uint256)":"1300","vaultPaused()":"1143","xvsAddress()":"1127","xvsStore()":"1083"}},"methodIdentifiers":{"DELEGATION_TYPEHASH()":"e7a324dc","DOMAIN_TYPEHASH()":"20606b70","admin()":"f851a440","checkpoints(address,uint32)":"f1127ed8","delegates(address)":"587cde1e","implementation()":"5c60da1b","isStakedToken(address)":"c3c754a8","nonces(address)":"7ecebe00","numCheckpoints(address)":"6fcfff45","pendingAdmin()":"26782247","pendingRewardTransfers(address,address)":"3d4180f9","pendingXVSVaultImplementation()":"de0368b2","poolInfos(address,uint256)":"92e35000","primePoolId()":"e8f2be6f","primeRewardToken()":"add89337","primeToken()":"fe5a451a","rewardTokenAmountsPerBlockOrSecond(address)":"cd9b94e7","totalAllocPoints(address)":"4298bdbd","totalPendingWithdrawals(address,uint256)":"5f14e700","vaultPaused()":"73d025d6","xvsAddress()":"358ae036","xvsStore()":"24f52bbf"}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"fromBlockOrSecond\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"votes\",\"type\":\"uint96\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isStakedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"pendingRewardTransfers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingXVSVaultImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfos\",\"outputs\":[{\"internalType\":\"contract IBEP20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardBlockOrSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accRewardPerShare\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockPeriod\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"primePoolId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"primeRewardToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"primeToken\",\"outputs\":[{\"internalType\":\"contract IPrime\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"rewardTokenAmountsPerBlockOrSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"totalAllocPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"totalPendingWithdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"vaultPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"xvsAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"xvsStore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol\":\"XVSVaultStorage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.5.16;\\npragma experimental ABIEncoderV2;\\n\\n/**\\n * @title IPrime\\n * @author Venus\\n * @notice Interface for Prime Token\\n */\\ninterface IPrime {\\n    /**\\n     * @notice Executed by XVSVault whenever user's XVSVault balance changes\\n     * @param user the account address whose balance was updated\\n     */\\n    function xvsUpdated(address user) external;\\n\\n    /**\\n     * @notice accrues interest and updates score for an user for a specific market\\n     * @param user the account address for which to accrue interest and update score\\n     * @param market the market for which to accrue interest and update score\\n     */\\n    function accrueInterestAndUpdateScore(address user, address market) external;\\n\\n    /**\\n     * @notice Distributes income from market since last distribution\\n     * @param vToken the market for which to distribute the income\\n     */\\n    function accrueInterest(address vToken) external;\\n\\n    /**\\n     * @notice Returns if user is a prime holder\\n     * @param isPrimeHolder returns if the user is a prime holder\\n     */\\n    function isUserPrimeHolder(address user) external view returns (bool isPrimeHolder);\\n}\\n\",\"keccak256\":\"0x58861c0c05b8757f1a5d50b107eff479c8680878e6aa51bc93af420caf73f500\"},\"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the BEP20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {BEP20Detailed}.\\n */\\ninterface IBEP20 {\\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\",\"keccak256\":\"0x839b08895eb1ad83502d3631e8e9e3a856d2a8c63c46f070d604af7b26c62c07\"},\"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.16;\\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        return add(a, b, \\\"SafeMath: addition 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    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a, errorMessage);\\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    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    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    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        require(b != 0, errorMessage);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0x9431fd772ed4abc038cdfe9ce6c0066897bd1685ad45848748d1952935d5b8ef\"},\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\nimport \\\"../Utils/SafeMath.sol\\\";\\nimport \\\"../Utils/IBEP20.sol\\\";\\nimport \\\"../Tokens/Prime/IPrime.sol\\\";\\n\\ncontract XVSVaultAdminStorage {\\n    /**\\n     * @notice Administrator for this contract\\n     */\\n    address public admin;\\n\\n    /**\\n     * @notice Pending administrator for this contract\\n     */\\n    address public pendingAdmin;\\n\\n    /**\\n     * @notice Active brains of XVS Vault\\n     */\\n    address public implementation;\\n\\n    /**\\n     * @notice Pending brains of XVS Vault\\n     */\\n    address public pendingXVSVaultImplementation;\\n}\\n\\ncontract XVSVaultStorageV1 is XVSVaultAdminStorage {\\n    /// @notice Guard variable for re-entrancy checks\\n    bool internal _notEntered;\\n\\n    /// @notice The reward token store\\n    address public xvsStore;\\n\\n    /// @notice The xvs token address\\n    address public xvsAddress;\\n\\n    // Reward tokens created per block or second indentified by reward token address.\\n    mapping(address => uint256) public rewardTokenAmountsPerBlockOrSecond;\\n\\n    /// @notice Info of each user.\\n    struct UserInfo {\\n        uint256 amount;\\n        uint256 rewardDebt;\\n        uint256 pendingWithdrawals;\\n    }\\n\\n    // Info of each pool.\\n    struct PoolInfo {\\n        IBEP20 token; // Address of token contract to stake.\\n        uint256 allocPoint; // How many allocation points assigned to this pool.\\n        uint256 lastRewardBlockOrSecond; // Last block number or second that reward tokens distribution occurs.\\n        uint256 accRewardPerShare; // Accumulated per share, times 1e12. See below.\\n        uint256 lockPeriod; // Min time between withdrawal request and its execution.\\n    }\\n\\n    // Infomation about a withdrawal request\\n    struct WithdrawalRequest {\\n        uint256 amount;\\n        uint128 lockedUntil;\\n        uint128 afterUpgrade;\\n    }\\n\\n    // Info of each user that stakes tokens.\\n    mapping(address => mapping(uint256 => mapping(address => UserInfo))) internal userInfos;\\n\\n    // Info of each pool.\\n    mapping(address => PoolInfo[]) public poolInfos;\\n\\n    // Total allocation points. Must be the sum of all allocation points in all pools.\\n    mapping(address => uint256) public totalAllocPoints;\\n\\n    // Info of requested but not yet executed withdrawals\\n    mapping(address => mapping(uint256 => mapping(address => WithdrawalRequest[]))) internal withdrawalRequests;\\n\\n    /// @notice DEPRECATED A record of each accounts delegate (before the voting power fix)\\n    mapping(address => address) private __oldDelegatesSlot;\\n\\n    /// @notice A checkpoint for marking number of votes from a given block or second\\n    struct Checkpoint {\\n        uint32 fromBlockOrSecond;\\n        uint96 votes;\\n    }\\n\\n    /// @notice DEPRECATED A record of votes checkpoints for each account, by index (before the voting power fix)\\n    mapping(address => mapping(uint32 => Checkpoint)) private __oldCheckpointsSlot;\\n\\n    /// @notice DEPRECATED The number of checkpoints for each account (before the voting power fix)\\n    mapping(address => uint32) private __oldNumCheckpointsSlot;\\n\\n    /// @notice A record of states for signing / validating signatures\\n    mapping(address => uint) public nonces;\\n\\n    /// @notice The EIP-712 typehash for the contract's domain\\n    bytes32 public constant DOMAIN_TYPEHASH =\\n        keccak256(\\\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\\\");\\n\\n    /// @notice The EIP-712 typehash for the delegation struct used by the contract\\n    bytes32 public constant DELEGATION_TYPEHASH =\\n        keccak256(\\\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\\\");\\n}\\n\\ncontract XVSVaultStorage is XVSVaultStorageV1 {\\n    /// @notice A record of each accounts delegate\\n    mapping(address => address) public delegates;\\n\\n    /// @notice A record of votes checkpoints for each account, by index\\n    mapping(address => mapping(uint32 => Checkpoint)) public checkpoints;\\n\\n    /// @notice The number of checkpoints for each account\\n    mapping(address => uint32) public numCheckpoints;\\n\\n    /// @notice Tracks pending withdrawals for all users for a particular reward token and pool id\\n    mapping(address => mapping(uint256 => uint256)) public totalPendingWithdrawals;\\n\\n    /// @notice pause indicator for Vault\\n    bool public vaultPaused;\\n\\n    /// @notice if the token is added to any of the pools\\n    mapping(address => bool) public isStakedToken;\\n\\n    /// @notice Amount we owe to users because of failed transfer attempts\\n    mapping(address => mapping(address => uint256)) public pendingRewardTransfers;\\n\\n    /// @notice Prime token contract address\\n    IPrime public primeToken;\\n\\n    /// @notice Reward token for which prime token is issued for staking\\n    address public primeRewardToken;\\n\\n    /// @notice Pool ID for which prime token is issued for staking\\n    uint256 public primePoolId;\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[46] private __gap;\\n}\\n\",\"keccak256\":\"0xb09f9295c41bdac1350a3607f2b4ea326cb295a6d08f4145bc33ff87844cd02b\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1183,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"admin","offset":0,"slot":"0","type":"t_address"},{"astId":1185,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"pendingAdmin","offset":0,"slot":"1","type":"t_address"},{"astId":1187,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"implementation","offset":0,"slot":"2","type":"t_address"},{"astId":1189,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"pendingXVSVaultImplementation","offset":0,"slot":"3","type":"t_address"},{"astId":1194,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"_notEntered","offset":20,"slot":"3","type":"t_bool"},{"astId":1196,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"xvsStore","offset":0,"slot":"4","type":"t_address"},{"astId":1198,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"xvsAddress","offset":0,"slot":"5","type":"t_address"},{"astId":1202,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"rewardTokenAmountsPerBlockOrSecond","offset":0,"slot":"6","type":"t_mapping(t_address,t_uint256)"},{"astId":1235,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"userInfos","offset":0,"slot":"7","type":"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)1209_storage)))"},{"astId":1240,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"poolInfos","offset":0,"slot":"8","type":"t_mapping(t_address,t_array(t_struct(PoolInfo)1220_storage)dyn_storage)"},{"astId":1244,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"totalAllocPoints","offset":0,"slot":"9","type":"t_mapping(t_address,t_uint256)"},{"astId":1253,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"withdrawalRequests","offset":0,"slot":"10","type":"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage)))"},{"astId":1257,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"__oldDelegatesSlot","offset":0,"slot":"11","type":"t_mapping(t_address,t_address)"},{"astId":1268,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"__oldCheckpointsSlot","offset":0,"slot":"12","type":"t_mapping(t_address,t_mapping(t_uint32,t_struct(Checkpoint)1262_storage))"},{"astId":1272,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"__oldNumCheckpointsSlot","offset":0,"slot":"13","type":"t_mapping(t_address,t_uint32)"},{"astId":1276,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"nonces","offset":0,"slot":"14","type":"t_mapping(t_address,t_uint256)"},{"astId":1293,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"delegates","offset":0,"slot":"15","type":"t_mapping(t_address,t_address)"},{"astId":1299,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"checkpoints","offset":0,"slot":"16","type":"t_mapping(t_address,t_mapping(t_uint32,t_struct(Checkpoint)1262_storage))"},{"astId":1303,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"numCheckpoints","offset":0,"slot":"17","type":"t_mapping(t_address,t_uint32)"},{"astId":1309,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"totalPendingWithdrawals","offset":0,"slot":"18","type":"t_mapping(t_address,t_mapping(t_uint256,t_uint256))"},{"astId":1311,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"vaultPaused","offset":0,"slot":"19","type":"t_bool"},{"astId":1315,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"isStakedToken","offset":0,"slot":"20","type":"t_mapping(t_address,t_bool)"},{"astId":1321,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"pendingRewardTransfers","offset":0,"slot":"21","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":1323,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"primeToken","offset":0,"slot":"22","type":"t_contract(IPrime)27"},{"astId":1325,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"primeRewardToken","offset":0,"slot":"23","type":"t_address"},{"astId":1327,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"primePoolId","offset":0,"slot":"24","type":"t_uint256"},{"astId":1331,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"__gap","offset":0,"slot":"25","type":"t_array(t_uint256)46_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(PoolInfo)1220_storage)dyn_storage":{"base":"t_struct(PoolInfo)1220_storage","encoding":"dynamic_array","label":"struct XVSVaultStorageV1.PoolInfo[]","numberOfBytes":"32"},"t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage":{"base":"t_struct(WithdrawalRequest)1227_storage","encoding":"dynamic_array","label":"struct XVSVaultStorageV1.WithdrawalRequest[]","numberOfBytes":"32"},"t_array(t_uint256)46_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[46]","numberOfBytes":"1472"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IBEP20)171":{"encoding":"inplace","label":"contract IBEP20","numberOfBytes":"20"},"t_contract(IPrime)27":{"encoding":"inplace","label":"contract IPrime","numberOfBytes":"20"},"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_array(t_struct(PoolInfo)1220_storage)dyn_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct XVSVaultStorageV1.PoolInfo[])","numberOfBytes":"32","value":"t_array(t_struct(PoolInfo)1220_storage)dyn_storage"},"t_mapping(t_address,t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct XVSVaultStorageV1.WithdrawalRequest[])","numberOfBytes":"32","value":"t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage"},"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_mapping(t_uint256,t_mapping(t_address,t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage)))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => mapping(address => struct XVSVaultStorageV1.WithdrawalRequest[])))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_mapping(t_address,t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage))"},"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)1209_storage)))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => mapping(address => struct XVSVaultStorageV1.UserInfo)))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)1209_storage))"},"t_mapping(t_address,t_mapping(t_uint256,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => uint256))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_uint256)"},"t_mapping(t_address,t_mapping(t_uint32,t_struct(Checkpoint)1262_storage))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint32 => struct XVSVaultStorageV1.Checkpoint))","numberOfBytes":"32","value":"t_mapping(t_uint32,t_struct(Checkpoint)1262_storage)"},"t_mapping(t_address,t_struct(UserInfo)1209_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct XVSVaultStorageV1.UserInfo)","numberOfBytes":"32","value":"t_struct(UserInfo)1209_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_address,t_uint32)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint32)","numberOfBytes":"32","value":"t_uint32"},"t_mapping(t_uint256,t_mapping(t_address,t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => struct XVSVaultStorageV1.WithdrawalRequest[]))","numberOfBytes":"32","value":"t_mapping(t_address,t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage)"},"t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)1209_storage))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => struct XVSVaultStorageV1.UserInfo))","numberOfBytes":"32","value":"t_mapping(t_address,t_struct(UserInfo)1209_storage)"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint32,t_struct(Checkpoint)1262_storage)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => struct XVSVaultStorageV1.Checkpoint)","numberOfBytes":"32","value":"t_struct(Checkpoint)1262_storage"},"t_struct(Checkpoint)1262_storage":{"encoding":"inplace","label":"struct XVSVaultStorageV1.Checkpoint","members":[{"astId":1259,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"fromBlockOrSecond","offset":0,"slot":"0","type":"t_uint32"},{"astId":1261,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"votes","offset":4,"slot":"0","type":"t_uint96"}],"numberOfBytes":"32"},"t_struct(PoolInfo)1220_storage":{"encoding":"inplace","label":"struct XVSVaultStorageV1.PoolInfo","members":[{"astId":1211,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"token","offset":0,"slot":"0","type":"t_contract(IBEP20)171"},{"astId":1213,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"allocPoint","offset":0,"slot":"1","type":"t_uint256"},{"astId":1215,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"lastRewardBlockOrSecond","offset":0,"slot":"2","type":"t_uint256"},{"astId":1217,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"accRewardPerShare","offset":0,"slot":"3","type":"t_uint256"},{"astId":1219,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"lockPeriod","offset":0,"slot":"4","type":"t_uint256"}],"numberOfBytes":"160"},"t_struct(UserInfo)1209_storage":{"encoding":"inplace","label":"struct XVSVaultStorageV1.UserInfo","members":[{"astId":1204,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"amount","offset":0,"slot":"0","type":"t_uint256"},{"astId":1206,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"rewardDebt","offset":0,"slot":"1","type":"t_uint256"},{"astId":1208,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"pendingWithdrawals","offset":0,"slot":"2","type":"t_uint256"}],"numberOfBytes":"96"},"t_struct(WithdrawalRequest)1227_storage":{"encoding":"inplace","label":"struct XVSVaultStorageV1.WithdrawalRequest","members":[{"astId":1222,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"amount","offset":0,"slot":"0","type":"t_uint256"},{"astId":1224,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"lockedUntil","offset":0,"slot":"1","type":"t_uint128"},{"astId":1226,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorage","label":"afterUpgrade","offset":16,"slot":"1","type":"t_uint128"}],"numberOfBytes":"64"},"t_uint128":{"encoding":"inplace","label":"uint128","numberOfBytes":"16"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"},"t_uint96":{"encoding":"inplace","label":"uint96","numberOfBytes":"12"}}},"userdoc":{"methods":{}}},"XVSVaultStorageV1":{"abi":[{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingXVSVaultImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfos","outputs":[{"internalType":"contract IBEP20","name":"token","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlockOrSecond","type":"uint256"},{"internalType":"uint256","name":"accRewardPerShare","type":"uint256"},{"internalType":"uint256","name":"lockPeriod","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardTokenAmountsPerBlockOrSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalAllocPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"xvsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"xvsStore","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}],"devdoc":{"methods":{}},"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506103c7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80637ecebe00116100715780637ecebe001461013557806392e350001461015b578063cd9b94e7146101bc578063de0368b2146101e2578063e7a324dc146101ea578063f851a440146101f2576100b4565b806320606b70146100b957806324f52bbf146100d357806326782247146100f7578063358ae036146100ff5780634298bdbd146101075780635c60da1b1461012d575b600080fd5b6100c16101fa565b60408051918252519081900360200190f35b6100db610215565b604080516001600160a01b039092168252519081900360200190f35b6100db610224565b6100db610233565b6100c16004803603602081101561011d57600080fd5b50356001600160a01b0316610242565b6100db610254565b6100c16004803603602081101561014b57600080fd5b50356001600160a01b0316610263565b6101876004803603604081101561017157600080fd5b506001600160a01b038135169060200135610275565b604080516001600160a01b03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b6100c1600480360360208110156101d257600080fd5b50356001600160a01b03166102ca565b6100db6102dc565b6100c16102eb565b6100db610306565b60405180604361031682396043019050604051809103902081565b6004546001600160a01b031681565b6001546001600160a01b031681565b6005546001600160a01b031681565b60096020526000908152604090205481565b6002546001600160a01b031681565b600e6020526000908152604090205481565b6008602052816000526040600020818154811061028e57fe5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b039093169550909350919085565b60066020526000908152604090205481565b6003546001600160a01b031681565b60405180603a6103598239603a019050604051809103902081565b6000546001600160a01b03168156fe454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e74726163742944656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929a265627a7a7231582090c771a57e66c78fb43066b5085848ee522ef369bfb430a892dfde27b2b5b3e464736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C7 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 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x92E35000 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0xCD9B94E7 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0xDE0368B2 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1F2 JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x20606B70 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x24F52BBF EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x358AE036 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x4298BDBD EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0x215 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0x224 JUMP JUMPDEST PUSH2 0xDB PUSH2 0x233 JUMP JUMPDEST PUSH2 0xC1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x242 JUMP JUMPDEST PUSH2 0xDB PUSH2 0x254 JUMP JUMPDEST PUSH2 0xC1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x263 JUMP JUMPDEST PUSH2 0x187 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x275 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CA JUMP JUMPDEST PUSH2 0xDB PUSH2 0x2DC JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x2EB JUMP JUMPDEST PUSH2 0xDB PUSH2 0x306 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x43 PUSH2 0x316 DUP3 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x28E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x5 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP6 POP SWAP1 SWAP4 POP SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x3A PUSH2 0x359 DUP3 CODECOPY PUSH1 0x3A ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID GASLIMIT 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH22 0x696E7432353620636861696E49642C61646472657373 KECCAK256 PUSH23 0x6572696679696E67436F6E74726163742944656C656761 PUSH21 0x696F6E28616464726573732064656C656761746565 0x2C PUSH22 0x696E74323536206E6F6E63652C75696E743235362065 PUSH25 0x7069727929A265627A7A7231582090C771A57E66C78FB43066 0xB5 ADDMOD PC 0x48 0xEE MSTORE 0x2E RETURN PUSH10 0xBFB430A892DFDE27B2B5 0xB3 0xE4 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ","sourceMap":"559:2995:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;559:2995:8;;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100b45760003560e01c80637ecebe00116100715780637ecebe001461013557806392e350001461015b578063cd9b94e7146101bc578063de0368b2146101e2578063e7a324dc146101ea578063f851a440146101f2576100b4565b806320606b70146100b957806324f52bbf146100d357806326782247146100f7578063358ae036146100ff5780634298bdbd146101075780635c60da1b1461012d575b600080fd5b6100c16101fa565b60408051918252519081900360200190f35b6100db610215565b604080516001600160a01b039092168252519081900360200190f35b6100db610224565b6100db610233565b6100c16004803603602081101561011d57600080fd5b50356001600160a01b0316610242565b6100db610254565b6100c16004803603602081101561014b57600080fd5b50356001600160a01b0316610263565b6101876004803603604081101561017157600080fd5b506001600160a01b038135169060200135610275565b604080516001600160a01b03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b6100c1600480360360208110156101d257600080fd5b50356001600160a01b03166102ca565b6100db6102dc565b6100c16102eb565b6100db610306565b60405180604361031682396043019050604051809103902081565b6004546001600160a01b031681565b6001546001600160a01b031681565b6005546001600160a01b031681565b60096020526000908152604090205481565b6002546001600160a01b031681565b600e6020526000908152604090205481565b6008602052816000526040600020818154811061028e57fe5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b039093169550909350919085565b60066020526000908152604090205481565b6003546001600160a01b031681565b60405180603a6103598239603a019050604051809103902081565b6000546001600160a01b03168156fe454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e74726163742944656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929a265627a7a7231582090c771a57e66c78fb43066b5085848ee522ef369bfb430a892dfde27b2b5b3e464736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x92E35000 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0xCD9B94E7 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0xDE0368B2 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1F2 JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x20606B70 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x24F52BBF EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x358AE036 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x4298BDBD EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0x215 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0x224 JUMP JUMPDEST PUSH2 0xDB PUSH2 0x233 JUMP JUMPDEST PUSH2 0xC1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x242 JUMP JUMPDEST PUSH2 0xDB PUSH2 0x254 JUMP JUMPDEST PUSH2 0xC1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x263 JUMP JUMPDEST PUSH2 0x187 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x275 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CA JUMP JUMPDEST PUSH2 0xDB PUSH2 0x2DC JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x2EB JUMP JUMPDEST PUSH2 0xDB PUSH2 0x306 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x43 PUSH2 0x316 DUP3 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x28E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x5 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP6 POP SWAP1 SWAP4 POP SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x3A PUSH2 0x359 DUP3 CODECOPY PUSH1 0x3A ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID GASLIMIT 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH22 0x696E7432353620636861696E49642C61646472657373 KECCAK256 PUSH23 0x6572696679696E67436F6E74726163742944656C656761 PUSH21 0x696F6E28616464726573732064656C656761746565 0x2C PUSH22 0x696E74323536206E6F6E63652C75696E743235362065 PUSH25 0x7069727929A265627A7A7231582090C771A57E66C78FB43066 0xB5 ADDMOD PC 0x48 0xEE MSTORE 0x2E RETURN PUSH10 0xBFB430A892DFDE27B2B5 0xB3 0xE4 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ","sourceMap":"559:2995:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;559:2995:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3205:130;;;:::i;:::-;;;;;;;;;;;;;;;;741:23;;;:::i;:::-;;;;-1:-1:-1;;;;;741:23:8;;;;;;;;;;;;;;323:27;;;:::i;809:25::-;;;:::i;2106:51::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2106:51:8;-1:-1:-1;;;;;2106:51:8;;:::i;415:29::-;;;:::i;3097:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3097:38:8;-1:-1:-1;;;;;3097:38:8;;:::i;1965:47::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1965:47:8;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1965:47:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;927:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;927:69:8;-1:-1:-1;;;;;927:69:8;;:::i;510:44::-;;;:::i;3426:125::-;;;:::i;225:20::-;;;:::i;3205:130::-;3255:80;;;;;;;;;;;;;;;;;;3205:130;:::o;741:23::-;;;-1:-1:-1;;;;;741:23:8;;:::o;323:27::-;;;-1:-1:-1;;;;;323:27:8;;:::o;809:25::-;;;-1:-1:-1;;;;;809:25:8;;:::o;2106:51::-;;;;;;;;;;;;;:::o;415:29::-;;;-1:-1:-1;;;;;415:29:8;;:::o;3097:38::-;;;;;;;;;;;;;:::o;1965:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1965:47:8;;;;-1:-1:-1;1965:47:8;;-1:-1:-1;1965:47:8;;;:::o;927:69::-;;;;;;;;;;;;;:::o;510:44::-;;;-1:-1:-1;;;;;510:44:8;;:::o;3426:125::-;3480:71;;;;;;;;;;;;;;;;;;3426:125;:::o;225:20::-;;;-1:-1:-1;;;;;225:20:8;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"193400","executionCost":"238","totalCost":"193638"},"external":{"DELEGATION_TYPEHASH()":"infinite","DOMAIN_TYPEHASH()":"infinite","admin()":"1147","implementation()":"1148","nonces(address)":"1124","pendingAdmin()":"1082","pendingXVSVaultImplementation()":"1103","poolInfos(address,uint256)":"5442","rewardTokenAmountsPerBlockOrSecond(address)":"1168","totalAllocPoints(address)":"1213","xvsAddress()":"1104","xvsStore()":"1060"}},"methodIdentifiers":{"DELEGATION_TYPEHASH()":"e7a324dc","DOMAIN_TYPEHASH()":"20606b70","admin()":"f851a440","implementation()":"5c60da1b","nonces(address)":"7ecebe00","pendingAdmin()":"26782247","pendingXVSVaultImplementation()":"de0368b2","poolInfos(address,uint256)":"92e35000","rewardTokenAmountsPerBlockOrSecond(address)":"cd9b94e7","totalAllocPoints(address)":"4298bdbd","xvsAddress()":"358ae036","xvsStore()":"24f52bbf"}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingXVSVaultImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfos\",\"outputs\":[{\"internalType\":\"contract IBEP20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardBlockOrSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accRewardPerShare\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockPeriod\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"rewardTokenAmountsPerBlockOrSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"totalAllocPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"xvsAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"xvsStore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol\":\"XVSVaultStorageV1\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Tokens/Prime/IPrime.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.5.16;\\npragma experimental ABIEncoderV2;\\n\\n/**\\n * @title IPrime\\n * @author Venus\\n * @notice Interface for Prime Token\\n */\\ninterface IPrime {\\n    /**\\n     * @notice Executed by XVSVault whenever user's XVSVault balance changes\\n     * @param user the account address whose balance was updated\\n     */\\n    function xvsUpdated(address user) external;\\n\\n    /**\\n     * @notice accrues interest and updates score for an user for a specific market\\n     * @param user the account address for which to accrue interest and update score\\n     * @param market the market for which to accrue interest and update score\\n     */\\n    function accrueInterestAndUpdateScore(address user, address market) external;\\n\\n    /**\\n     * @notice Distributes income from market since last distribution\\n     * @param vToken the market for which to distribute the income\\n     */\\n    function accrueInterest(address vToken) external;\\n\\n    /**\\n     * @notice Returns if user is a prime holder\\n     * @param isPrimeHolder returns if the user is a prime holder\\n     */\\n    function isUserPrimeHolder(address user) external view returns (bool isPrimeHolder);\\n}\\n\",\"keccak256\":\"0x58861c0c05b8757f1a5d50b107eff479c8680878e6aa51bc93af420caf73f500\"},\"@venusprotocol/venus-protocol/contracts/Utils/IBEP20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the BEP20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {BEP20Detailed}.\\n */\\ninterface IBEP20 {\\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\",\"keccak256\":\"0x839b08895eb1ad83502d3631e8e9e3a856d2a8c63c46f070d604af7b26c62c07\"},\"@venusprotocol/venus-protocol/contracts/Utils/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.16;\\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        return add(a, b, \\\"SafeMath: addition 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    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a, errorMessage);\\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    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    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    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        require(b != 0, errorMessage);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0x9431fd772ed4abc038cdfe9ce6c0066897bd1685ad45848748d1952935d5b8ef\"},\"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\nimport \\\"../Utils/SafeMath.sol\\\";\\nimport \\\"../Utils/IBEP20.sol\\\";\\nimport \\\"../Tokens/Prime/IPrime.sol\\\";\\n\\ncontract XVSVaultAdminStorage {\\n    /**\\n     * @notice Administrator for this contract\\n     */\\n    address public admin;\\n\\n    /**\\n     * @notice Pending administrator for this contract\\n     */\\n    address public pendingAdmin;\\n\\n    /**\\n     * @notice Active brains of XVS Vault\\n     */\\n    address public implementation;\\n\\n    /**\\n     * @notice Pending brains of XVS Vault\\n     */\\n    address public pendingXVSVaultImplementation;\\n}\\n\\ncontract XVSVaultStorageV1 is XVSVaultAdminStorage {\\n    /// @notice Guard variable for re-entrancy checks\\n    bool internal _notEntered;\\n\\n    /// @notice The reward token store\\n    address public xvsStore;\\n\\n    /// @notice The xvs token address\\n    address public xvsAddress;\\n\\n    // Reward tokens created per block or second indentified by reward token address.\\n    mapping(address => uint256) public rewardTokenAmountsPerBlockOrSecond;\\n\\n    /// @notice Info of each user.\\n    struct UserInfo {\\n        uint256 amount;\\n        uint256 rewardDebt;\\n        uint256 pendingWithdrawals;\\n    }\\n\\n    // Info of each pool.\\n    struct PoolInfo {\\n        IBEP20 token; // Address of token contract to stake.\\n        uint256 allocPoint; // How many allocation points assigned to this pool.\\n        uint256 lastRewardBlockOrSecond; // Last block number or second that reward tokens distribution occurs.\\n        uint256 accRewardPerShare; // Accumulated per share, times 1e12. See below.\\n        uint256 lockPeriod; // Min time between withdrawal request and its execution.\\n    }\\n\\n    // Infomation about a withdrawal request\\n    struct WithdrawalRequest {\\n        uint256 amount;\\n        uint128 lockedUntil;\\n        uint128 afterUpgrade;\\n    }\\n\\n    // Info of each user that stakes tokens.\\n    mapping(address => mapping(uint256 => mapping(address => UserInfo))) internal userInfos;\\n\\n    // Info of each pool.\\n    mapping(address => PoolInfo[]) public poolInfos;\\n\\n    // Total allocation points. Must be the sum of all allocation points in all pools.\\n    mapping(address => uint256) public totalAllocPoints;\\n\\n    // Info of requested but not yet executed withdrawals\\n    mapping(address => mapping(uint256 => mapping(address => WithdrawalRequest[]))) internal withdrawalRequests;\\n\\n    /// @notice DEPRECATED A record of each accounts delegate (before the voting power fix)\\n    mapping(address => address) private __oldDelegatesSlot;\\n\\n    /// @notice A checkpoint for marking number of votes from a given block or second\\n    struct Checkpoint {\\n        uint32 fromBlockOrSecond;\\n        uint96 votes;\\n    }\\n\\n    /// @notice DEPRECATED A record of votes checkpoints for each account, by index (before the voting power fix)\\n    mapping(address => mapping(uint32 => Checkpoint)) private __oldCheckpointsSlot;\\n\\n    /// @notice DEPRECATED The number of checkpoints for each account (before the voting power fix)\\n    mapping(address => uint32) private __oldNumCheckpointsSlot;\\n\\n    /// @notice A record of states for signing / validating signatures\\n    mapping(address => uint) public nonces;\\n\\n    /// @notice The EIP-712 typehash for the contract's domain\\n    bytes32 public constant DOMAIN_TYPEHASH =\\n        keccak256(\\\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\\\");\\n\\n    /// @notice The EIP-712 typehash for the delegation struct used by the contract\\n    bytes32 public constant DELEGATION_TYPEHASH =\\n        keccak256(\\\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\\\");\\n}\\n\\ncontract XVSVaultStorage is XVSVaultStorageV1 {\\n    /// @notice A record of each accounts delegate\\n    mapping(address => address) public delegates;\\n\\n    /// @notice A record of votes checkpoints for each account, by index\\n    mapping(address => mapping(uint32 => Checkpoint)) public checkpoints;\\n\\n    /// @notice The number of checkpoints for each account\\n    mapping(address => uint32) public numCheckpoints;\\n\\n    /// @notice Tracks pending withdrawals for all users for a particular reward token and pool id\\n    mapping(address => mapping(uint256 => uint256)) public totalPendingWithdrawals;\\n\\n    /// @notice pause indicator for Vault\\n    bool public vaultPaused;\\n\\n    /// @notice if the token is added to any of the pools\\n    mapping(address => bool) public isStakedToken;\\n\\n    /// @notice Amount we owe to users because of failed transfer attempts\\n    mapping(address => mapping(address => uint256)) public pendingRewardTransfers;\\n\\n    /// @notice Prime token contract address\\n    IPrime public primeToken;\\n\\n    /// @notice Reward token for which prime token is issued for staking\\n    address public primeRewardToken;\\n\\n    /// @notice Pool ID for which prime token is issued for staking\\n    uint256 public primePoolId;\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[46] private __gap;\\n}\\n\",\"keccak256\":\"0xb09f9295c41bdac1350a3607f2b4ea326cb295a6d08f4145bc33ff87844cd02b\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1183,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"admin","offset":0,"slot":"0","type":"t_address"},{"astId":1185,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"pendingAdmin","offset":0,"slot":"1","type":"t_address"},{"astId":1187,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"implementation","offset":0,"slot":"2","type":"t_address"},{"astId":1189,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"pendingXVSVaultImplementation","offset":0,"slot":"3","type":"t_address"},{"astId":1194,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"_notEntered","offset":20,"slot":"3","type":"t_bool"},{"astId":1196,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"xvsStore","offset":0,"slot":"4","type":"t_address"},{"astId":1198,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"xvsAddress","offset":0,"slot":"5","type":"t_address"},{"astId":1202,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"rewardTokenAmountsPerBlockOrSecond","offset":0,"slot":"6","type":"t_mapping(t_address,t_uint256)"},{"astId":1235,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"userInfos","offset":0,"slot":"7","type":"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)1209_storage)))"},{"astId":1240,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"poolInfos","offset":0,"slot":"8","type":"t_mapping(t_address,t_array(t_struct(PoolInfo)1220_storage)dyn_storage)"},{"astId":1244,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"totalAllocPoints","offset":0,"slot":"9","type":"t_mapping(t_address,t_uint256)"},{"astId":1253,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"withdrawalRequests","offset":0,"slot":"10","type":"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage)))"},{"astId":1257,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"__oldDelegatesSlot","offset":0,"slot":"11","type":"t_mapping(t_address,t_address)"},{"astId":1268,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"__oldCheckpointsSlot","offset":0,"slot":"12","type":"t_mapping(t_address,t_mapping(t_uint32,t_struct(Checkpoint)1262_storage))"},{"astId":1272,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"__oldNumCheckpointsSlot","offset":0,"slot":"13","type":"t_mapping(t_address,t_uint32)"},{"astId":1276,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"nonces","offset":0,"slot":"14","type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(PoolInfo)1220_storage)dyn_storage":{"base":"t_struct(PoolInfo)1220_storage","encoding":"dynamic_array","label":"struct XVSVaultStorageV1.PoolInfo[]","numberOfBytes":"32"},"t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage":{"base":"t_struct(WithdrawalRequest)1227_storage","encoding":"dynamic_array","label":"struct XVSVaultStorageV1.WithdrawalRequest[]","numberOfBytes":"32"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IBEP20)171":{"encoding":"inplace","label":"contract IBEP20","numberOfBytes":"20"},"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_array(t_struct(PoolInfo)1220_storage)dyn_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct XVSVaultStorageV1.PoolInfo[])","numberOfBytes":"32","value":"t_array(t_struct(PoolInfo)1220_storage)dyn_storage"},"t_mapping(t_address,t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct XVSVaultStorageV1.WithdrawalRequest[])","numberOfBytes":"32","value":"t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage"},"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage)))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => mapping(address => struct XVSVaultStorageV1.WithdrawalRequest[])))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_mapping(t_address,t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage))"},"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)1209_storage)))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => mapping(address => struct XVSVaultStorageV1.UserInfo)))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)1209_storage))"},"t_mapping(t_address,t_mapping(t_uint32,t_struct(Checkpoint)1262_storage))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint32 => struct XVSVaultStorageV1.Checkpoint))","numberOfBytes":"32","value":"t_mapping(t_uint32,t_struct(Checkpoint)1262_storage)"},"t_mapping(t_address,t_struct(UserInfo)1209_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct XVSVaultStorageV1.UserInfo)","numberOfBytes":"32","value":"t_struct(UserInfo)1209_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_address,t_uint32)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint32)","numberOfBytes":"32","value":"t_uint32"},"t_mapping(t_uint256,t_mapping(t_address,t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => struct XVSVaultStorageV1.WithdrawalRequest[]))","numberOfBytes":"32","value":"t_mapping(t_address,t_array(t_struct(WithdrawalRequest)1227_storage)dyn_storage)"},"t_mapping(t_uint256,t_mapping(t_address,t_struct(UserInfo)1209_storage))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => struct XVSVaultStorageV1.UserInfo))","numberOfBytes":"32","value":"t_mapping(t_address,t_struct(UserInfo)1209_storage)"},"t_mapping(t_uint32,t_struct(Checkpoint)1262_storage)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => struct XVSVaultStorageV1.Checkpoint)","numberOfBytes":"32","value":"t_struct(Checkpoint)1262_storage"},"t_struct(Checkpoint)1262_storage":{"encoding":"inplace","label":"struct XVSVaultStorageV1.Checkpoint","members":[{"astId":1259,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"fromBlockOrSecond","offset":0,"slot":"0","type":"t_uint32"},{"astId":1261,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"votes","offset":4,"slot":"0","type":"t_uint96"}],"numberOfBytes":"32"},"t_struct(PoolInfo)1220_storage":{"encoding":"inplace","label":"struct XVSVaultStorageV1.PoolInfo","members":[{"astId":1211,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"token","offset":0,"slot":"0","type":"t_contract(IBEP20)171"},{"astId":1213,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"allocPoint","offset":0,"slot":"1","type":"t_uint256"},{"astId":1215,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"lastRewardBlockOrSecond","offset":0,"slot":"2","type":"t_uint256"},{"astId":1217,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"accRewardPerShare","offset":0,"slot":"3","type":"t_uint256"},{"astId":1219,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"lockPeriod","offset":0,"slot":"4","type":"t_uint256"}],"numberOfBytes":"160"},"t_struct(UserInfo)1209_storage":{"encoding":"inplace","label":"struct XVSVaultStorageV1.UserInfo","members":[{"astId":1204,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"amount","offset":0,"slot":"0","type":"t_uint256"},{"astId":1206,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"rewardDebt","offset":0,"slot":"1","type":"t_uint256"},{"astId":1208,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"pendingWithdrawals","offset":0,"slot":"2","type":"t_uint256"}],"numberOfBytes":"96"},"t_struct(WithdrawalRequest)1227_storage":{"encoding":"inplace","label":"struct XVSVaultStorageV1.WithdrawalRequest","members":[{"astId":1222,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"amount","offset":0,"slot":"0","type":"t_uint256"},{"astId":1224,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"lockedUntil","offset":0,"slot":"1","type":"t_uint128"},{"astId":1226,"contract":"@venusprotocol/venus-protocol/contracts/XVSVault/XVSVaultStorage.sol:XVSVaultStorageV1","label":"afterUpgrade","offset":16,"slot":"1","type":"t_uint128"}],"numberOfBytes":"64"},"t_uint128":{"encoding":"inplace","label":"uint128","numberOfBytes":"16"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"},"t_uint96":{"encoding":"inplace","label":"uint96","numberOfBytes":"12"}}},"userdoc":{"methods":{}}}}}}}