ETH Price: $2,430.62 (+5.44%)

Contract

0x21607E5E819bCE993213f92931ca753D6DDa0C56
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Release138490462021-12-21 14:28:191002 days ago1640096899IN
0x21607E5E...D6DDa0C56
0 ETH0.0126803361.50843781
Release138489592021-12-21 14:07:061002 days ago1640095626IN
0x21607E5E...D6DDa0C56
0 ETH0.0126812761.51299855
Release138414622021-12-20 10:23:491004 days ago1639995829IN
0x21607E5E...D6DDa0C56
0 ETH0.0095229842.65498667
Release138390222021-12-20 1:10:421004 days ago1639962642IN
0x21607E5E...D6DDa0C56
0 ETH0.0120234858.32224289
Release138362192021-12-19 14:46:481004 days ago1639925208IN
0x21607E5E...D6DDa0C56
0 ETH0.0106516651.66799826
Release138358962021-12-19 13:33:551004 days ago1639920835IN
0x21607E5E...D6DDa0C56
0 ETH0.0081637739.6
Release138358482021-12-19 13:25:201004 days ago1639920320IN
0x21607E5E...D6DDa0C56
0 ETH0.0104765550.81856175
Release138331022021-12-19 3:16:491005 days ago1639883809IN
0x21607E5E...D6DDa0C56
0 ETH0.009795647.51551304
Release138321372021-12-18 23:38:211005 days ago1639870701IN
0x21607E5E...D6DDa0C56
0 ETH0.0111976945.1
Release138321182021-12-18 23:35:041005 days ago1639870504IN
0x21607E5E...D6DDa0C56
0 ETH0.0128655857.62706264
Release138310102021-12-18 19:30:071005 days ago1639855807IN
0x21607E5E...D6DDa0C56
0 ETH0.0138330667.1
Release138302212021-12-18 16:39:351005 days ago1639845575IN
0x21607E5E...D6DDa0C56
0 ETH0.0122456659.4
Release138296942021-12-18 14:34:361005 days ago1639838076IN
0x21607E5E...D6DDa0C56
0 ETH0.0092683944.9581503
Release138292412021-12-18 12:55:581005 days ago1639832158IN
0x21607E5E...D6DDa0C56
0 ETH0.013848252.18138612
Release138211682021-12-17 6:55:041007 days ago1639724104IN
0x21607E5E...D6DDa0C56
0 ETH0.0113385855
Release138211512021-12-17 6:50:171007 days ago1639723817IN
0x21607E5E...D6DDa0C56
0 ETH0.0093371145.29149065
Release138055492021-12-14 20:52:311009 days ago1639515151IN
0x21607E5E...D6DDa0C56
0 ETH0.02064655100.15014994
Release138042182021-12-14 15:52:281009 days ago1639497148IN
0x21607E5E...D6DDa0C56
0 ETH0.0169967176.13104417
Release138034872021-12-14 13:11:311009 days ago1639487491IN
0x21607E5E...D6DDa0C56
0 ETH0.0096619646.8672607
Release137968792021-12-13 12:42:531010 days ago1639399373IN
0x21607E5E...D6DDa0C56
0 ETH0.0136516156.79748067
Release137933682021-12-12 23:28:521011 days ago1639351732IN
0x21607E5E...D6DDa0C56
0 ETH0.019955996.8
Release137847382021-12-11 15:47:441012 days ago1639237664IN
0x21607E5E...D6DDa0C56
0 ETH0.017918574.5498633
Release137651452021-12-08 13:47:141015 days ago1638971234IN
0x21607E5E...D6DDa0C56
0 ETH0.0145133870.4
Release137606382021-12-07 20:19:051016 days ago1638908345IN
0x21607E5E...D6DDa0C56
0 ETH0.0174614184.7
Release137605142021-12-07 19:57:141016 days ago1638907034IN
0x21607E5E...D6DDa0C56
0 ETH0.02157908104.67356373
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
136146402021-11-14 14:59:151039 days ago1636901955
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146382021-11-14 14:58:351039 days ago1636901915
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146372021-11-14 14:58:141039 days ago1636901894
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146342021-11-14 14:57:341039 days ago1636901854
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146332021-11-14 14:57:181039 days ago1636901838
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146302021-11-14 14:56:581039 days ago1636901818
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146262021-11-14 14:55:421039 days ago1636901742
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146242021-11-14 14:54:581039 days ago1636901698
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146232021-11-14 14:54:301039 days ago1636901670
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146202021-11-14 14:54:081039 days ago1636901648
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146182021-11-14 14:53:561039 days ago1636901636
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146162021-11-14 14:53:341039 days ago1636901614
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146142021-11-14 14:53:231039 days ago1636901603
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136146112021-11-14 14:53:131039 days ago1636901593
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136145822021-11-14 14:44:331039 days ago1636901073
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136145632021-11-14 14:39:071039 days ago1636900747
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136145602021-11-14 14:38:211039 days ago1636900701
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136145592021-11-14 14:38:161039 days ago1636900696
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136145572021-11-14 14:38:051039 days ago1636900685
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136145542021-11-14 14:37:221039 days ago1636900642
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136145372021-11-14 14:33:071039 days ago1636900387
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136145362021-11-14 14:32:161039 days ago1636900336
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136145342021-11-14 14:31:591039 days ago1636900319
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136145322021-11-14 14:31:261039 days ago1636900286
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
136145302021-11-14 14:30:561039 days ago1636900256
0x21607E5E...D6DDa0C56
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VestingRouter

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 6 : VestingRouter.sol
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "./Vesting.sol";

contract VestingRouter is Ownable, ReentrancyGuard {
    event VestingCreated(address indexed beneficiary, address indexed vestingAddress, uint256 tokenAmount);
    event VestingReleased(address indexed vestingAddress, uint256 amount);
    event VestingRevoked(address indexed vestingAddress);

    struct UserInfo {
        address activeVesting;
        address[] vestingHistory;
    }
   
    IERC20 immutable mxsToken;

    mapping(address => UserInfo) userVesting;
   
    constructor(address _token) {
        mxsToken = IERC20(_token);
    }
   
    function createVesting(address _beneficiary, uint256 _tokenAmount, uint256 _duration, uint256 _cliff, bool _revokable) external onlyOwner nonReentrant {
        require(userVesting[_beneficiary].activeVesting == address(0), "Address already has an active vesting contract");
        Vesting vestingContract = new Vesting(_beneficiary, block.timestamp, _cliff, _duration, _revokable, _tokenAmount, address(mxsToken));
        bool transferred = mxsToken.transfer(address(vestingContract), _tokenAmount);
        require(transferred, "Token transfer failed");
        userVesting[_beneficiary].activeVesting = address(vestingContract);
        userVesting[_beneficiary].vestingHistory.push(address(vestingContract));

        emit VestingCreated(_beneficiary, address(vestingContract), _tokenAmount);
    }
   
    function userInfo(address account) external view returns(address activeVesting, address[] memory vestingHistory) {
        UserInfo memory _userInfo = userVesting[account];
        return(_userInfo.activeVesting, _userInfo.vestingHistory);
    }
   
    function userVestingInfo(address _account) external view returns(
        address vestingAddress,
        uint256 releasedAmount,
        uint256 releasableAmount,
        uint256 vestedAmount,
        uint256 allocation,
        uint256 reflectionsReceived,
        uint256 timeRemaining,
        bool complete
    ) {
        return vestingInfo(userVesting[_account].activeVesting);
    }
   
    function vestingInfo(address _vestingAddress) public view returns (
        address vestingAddress,
        uint256 releasedAmount,
        uint256 releasableAmount,
        uint256 vestedAmount,
        uint256 allocation,
        uint256 reflectionsReceived,
        uint256 timeRemaining,
        bool complete
    ) {
        Vesting vestingContract = Vesting(_vestingAddress);
        vestingAddress = _vestingAddress;
        releasedAmount = vestingContract.released();
        releasableAmount = vestingContract.releasableAmount();
        vestedAmount = vestingContract.vestedAmount();
        allocation = vestingContract.initialAllocation();
        reflectionsReceived = vestingContract.reflections();
        timeRemaining = vestingContract.timeRemaining();
        complete = vestingContract.complete();
    }
   
    function revoke(address _vestingAddress) external onlyOwner {
        Vesting vestingContract = Vesting(_vestingAddress);
        require(address(vestingContract) != address(0), "Cannot release an invalid address");
        require(!vestingContract.complete(), "Vesting is already complete");
       
        vestingContract.revoke();
        userVesting[vestingContract.beneficiary()].activeVesting = address(0);
        emit VestingRevoked(_vestingAddress);
    }
   
    function release(address _vestingAddress) external {
        Vesting vestingContract = Vesting(_vestingAddress);
        require(address(vestingContract) != address(0), "Cannot release an invalid address");
        require(!vestingContract.complete(), "Vesting is already complete");
        require(vestingContract.beneficiary() == msg.sender, "Sender must be beneficiary");

        uint256 tokenAmount = vestingContract.release();
       
        if (vestingContract.complete()) {
            userVesting[vestingContract.beneficiary()].activeVesting = address(0);
        }
        emit VestingReleased(_vestingAddress, tokenAmount);
    }
}

File 2 of 6 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev 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.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev 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.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev 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.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 3 of 6 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 4 of 6 : Vesting.sol
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";

/**
* @title TokenVesting
* @dev A token holder contract that can release its token balance gradually like a
* typical vesting scheme, with a cliff and vesting period. Optionally revocable by the
* owner.
*/
contract Vesting is Ownable, ReentrancyGuard {

  event Released(uint256 amount);
  event Revoked();

  // beneficiary of tokens after they are released
  address public immutable beneficiary;

  uint256 public immutable cliff;
  uint256 public immutable start;
  uint256 public immutable duration;
  uint256 public immutable initialAllocation;
 
  bool public immutable revokable;
  bool public revoked;
  bool public complete;

  uint256 public released;
  IERC20 public mxsToken;

  /**
   * @dev Creates a vesting contract that vests its balance of any ERC20 token to the
   * _beneficiary, gradually in a linear fashion until _start + _duration. By then all
   * of the balance will have vested.
   * @param _beneficiary address of the beneficiary to whom vested tokens are transferred
   * @param _cliff duration in seconds of the cliff in which tokens will begin to vest
   * @param _duration duration in seconds of the period in which the tokens will vest
   * @param _revokable whether the vesting is revocable or not
   ** @param _initialAllocation the initial allocation of tokens, used to find reflections
   */
  constructor(
    address _beneficiary,
    uint256 _start,
    uint256 _cliff,
    uint256 _duration,
    bool    _revokable,
    uint256 _initialAllocation,
    address _mxsToken
  ) {
    require(_beneficiary != address(0), "The beneficiary address is zero address");
    require(_cliff <= _duration, "The cliff is larger than duration");
   
    beneficiary = _beneficiary;
    start       = _start;
    cliff       = _start + _cliff;
    duration    = _duration;
    revokable   = _revokable;
    initialAllocation = _initialAllocation;
    mxsToken = IERC20(_mxsToken);

    bool approved = mxsToken.approve( owner(), type(uint256).max);
    require(approved, "Transfer token failed");
  }

  /**
   * @notice Transfers vested tokens to beneficiary.
   */
  function release() onlyOwner external returns(uint256 tokenAmount) {
    require(block.timestamp >= cliff, "Cliff has not been reached yet");
    tokenAmount = _releaseTo(beneficiary);
  }

  /**
   * @notice Transfers vested tokens to beneficiary.
   */
  function _releaseTo(address target) internal nonReentrant returns(uint256) {
    uint256 unreleased = releasableAmount();
    released = released + unreleased;
    
    bool transferred = mxsToken.transfer(target, unreleased);
    require(transferred, "Transfer token failed");

    if (mxsToken.balanceOf(address(this)) == 0) {
        complete = true;
    }
    emit Released(released);
    return(unreleased);
  }

  /**
   * @notice Allows the owner to revoke the vesting. Tokens already vested are sent to the beneficiary.
   */
  function revoke() onlyOwner external {
    require(revokable, "It's not revokable");
    require(!revoked, "It's already revoked");

    // Release all vested tokens
    _releaseTo(beneficiary);

    // Send the remainder to the owner
    bool transferred = mxsToken.transfer(owner(), mxsToken.balanceOf(address(this)));
    require(transferred, "Transfer token failed");

    revoked = true;
    complete = true;
    emit Revoked();
  }


  /**
   * @dev Calculates the amount that has already vested but hasn't been released yet.
   */
  function releasableAmount() public view returns (uint256) {
    return vestedAmount() - released;
  }

  /**
   * @dev Calculates the amount that has already vested.
   */
  function vestedAmount() public view returns (uint256) {
    if (block.timestamp < cliff) {
      return 0;
    } else if (block.timestamp >= start + duration || revoked) {
      uint256 vested = mxsToken.balanceOf(address(this)) + released;
      // vesting is complete, allocate all tokens
      return vested;
    } else {
      uint256 vested = initialAllocation * (block.timestamp - start) / duration;
      return vested;
    }
  }
 
    /**
   * @dev Calculates the amount of reflections the vesting contract has received.
   */
  function reflections() external view returns (uint256) {
    return mxsToken.balanceOf(address(this)) + released - initialAllocation;
  }

    /**
   * @dev Calculates the amount of time remaining in seconds.
   */
  function timeRemaining() external view returns (uint256) {
      return start + duration - block.timestamp;
  }
 
  /**
   * @notice Allow withdrawing any token other than the relevant one
   */
  function releaseForeignToken(IERC20 _token, uint256 amount) external onlyOwner {
    require(_token != mxsToken, "The token is mxsToken");
    bool transferred = _token.transfer(owner(), amount);
    require(transferred, "Transfer token failed");
  }
}

File 5 of 6 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 6 of 6 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":true,"internalType":"address","name":"vestingAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"VestingCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vestingAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"VestingReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vestingAddress","type":"address"}],"name":"VestingRevoked","type":"event"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"},{"internalType":"uint256","name":"_duration","type":"uint256"},{"internalType":"uint256","name":"_cliff","type":"uint256"},{"internalType":"bool","name":"_revokable","type":"bool"}],"name":"createVesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vestingAddress","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vestingAddress","type":"address"}],"name":"revoke","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"userInfo","outputs":[{"internalType":"address","name":"activeVesting","type":"address"},{"internalType":"address[]","name":"vestingHistory","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"userVestingInfo","outputs":[{"internalType":"address","name":"vestingAddress","type":"address"},{"internalType":"uint256","name":"releasedAmount","type":"uint256"},{"internalType":"uint256","name":"releasableAmount","type":"uint256"},{"internalType":"uint256","name":"vestedAmount","type":"uint256"},{"internalType":"uint256","name":"allocation","type":"uint256"},{"internalType":"uint256","name":"reflectionsReceived","type":"uint256"},{"internalType":"uint256","name":"timeRemaining","type":"uint256"},{"internalType":"bool","name":"complete","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vestingAddress","type":"address"}],"name":"vestingInfo","outputs":[{"internalType":"address","name":"vestingAddress","type":"address"},{"internalType":"uint256","name":"releasedAmount","type":"uint256"},{"internalType":"uint256","name":"releasableAmount","type":"uint256"},{"internalType":"uint256","name":"vestedAmount","type":"uint256"},{"internalType":"uint256","name":"allocation","type":"uint256"},{"internalType":"uint256","name":"reflectionsReceived","type":"uint256"},{"internalType":"uint256","name":"timeRemaining","type":"uint256"},{"internalType":"bool","name":"complete","type":"bool"}],"stateMutability":"view","type":"function"}]

60a06040523480156200001157600080fd5b50604051620046663803806200466683398181016040528101906200003791906200017f565b620000576200004b6200009c60201b60201c565b620000a460201b60201c565b600180819055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505050620001f9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000815190506200017981620001df565b92915050565b6000602082840312156200019257600080fd5b6000620001a28482850162000168565b91505092915050565b6000620001b882620001bf565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620001ea81620001ab565b8114620001f657600080fd5b50565b60805160601c6144476200021f6000396000818161099a01526109fd01526144476000f3fe60806040523480156200001157600080fd5b5060043610620000a05760003560e01c8063715018a6116200006f578063715018a6146200015957806374a8f10314620001655780638da5cb5b1462000185578063f2fde38b14620001a7578063f78e633d14620001c757620000a0565b80631916558714620000a55780631959a00214620000c557806326855d6914620000fc5780633e266ab0146200011c575b600080fd5b620000c36004803603810190620000bd91906200176c565b62000204565b005b620000e36004803603810190620000dd91906200176c565b6200069c565b604051620000f392919062001abb565b60405180910390f35b6200011a6004803603810190620001149190620017c4565b620007e8565b005b6200013a60048036038101906200013491906200176c565b62000c8e565b6040516200015098979695949392919062001b99565b60405180910390f35b6200016362000d22565b005b6200018360048036038101906200017d91906200176c565b62000db3565b005b6200018f6200111f565b6040516200019e919062001a9e565b60405180910390f35b620001c56004803603810190620001bf91906200176c565b62001148565b005b620001e56004803603810190620001df91906200176c565b6200124c565b604051620001fb98979695949392919062001b99565b60405180910390f35b6000819050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200027c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002739062001caf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663522e11776040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c357600080fd5b505afa158015620002d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fe919062001846565b1562000341576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003389062001cf3565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166338af3eed6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039f57600080fd5b505afa158015620003b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003da919062001798565b73ffffffffffffffffffffffffffffffffffffffff161462000433576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200042a9062001c8d565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166386d1a69f6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200047e57600080fd5b505af115801562000493573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b9919062001872565b90508173ffffffffffffffffffffffffffffffffffffffff1663522e11776040518163ffffffff1660e01b815260040160206040518083038186803b1580156200050257600080fd5b505afa15801562000517573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053d919062001846565b1562000647576000600260008473ffffffffffffffffffffffffffffffffffffffff166338af3eed6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200059057600080fd5b505afa158015620005a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005cb919062001798565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8273ffffffffffffffffffffffffffffffffffffffff167f4ad7799f99297062cea73c5a21d23a1fcf49f6a1957f7409712e555a0dcd1e1d826040516200068f919062001d37565b60405180910390a2505050565b600060606000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020018280548015620007c957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116200077e575b5050505050815250509050806000015181602001519250925050915091565b620007f262001608565b73ffffffffffffffffffffffffffffffffffffffff16620008126200111f565b73ffffffffffffffffffffffffffffffffffffffff16146200086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008629062001cd1565b60405180910390fd5b60026001541415620008b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ab9062001d15565b60405180910390fd5b6002600181905550600073ffffffffffffffffffffffffffffffffffffffff16600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009879062001c49565b60405180910390fd5b60008542848685897f0000000000000000000000000000000000000000000000000000000000000000604051620009c790620016d4565b620009d9979695949392919062001b1c565b604051809103906000f080158015620009f6573d6000803e3d6000fd5b50905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83886040518363ffffffff1660e01b815260040162000a5892919062001aef565b602060405180830381600087803b15801562000a7357600080fd5b505af115801562000a88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aae919062001846565b90508062000af3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aea9062001c6b565b60405180910390fd5b81600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd5ad48d673f889adad7b73dab2d50040ef22dd8dec91b284bc5a8bc724f3ffb08860405162000c76919062001d37565b60405180910390a35050600180819055505050505050565b60008060008060008060008062000d07600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200124c565b97509750975097509750975097509750919395975091939597565b62000d2c62001608565b73ffffffffffffffffffffffffffffffffffffffff1662000d4c6200111f565b73ffffffffffffffffffffffffffffffffffffffff161462000da5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d9c9062001cd1565b60405180910390fd5b62000db1600062001610565b565b62000dbd62001608565b73ffffffffffffffffffffffffffffffffffffffff1662000ddd6200111f565b73ffffffffffffffffffffffffffffffffffffffff161462000e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e2d9062001cd1565b60405180910390fd5b6000819050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000eae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ea59062001caf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663522e11776040518163ffffffff1660e01b815260040160206040518083038186803b15801562000ef557600080fd5b505afa15801562000f0a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f30919062001846565b1562000f73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f6a9062001cf3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663b6549f756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000fbc57600080fd5b505af115801562000fd1573d6000803e3d6000fd5b505050506000600260008373ffffffffffffffffffffffffffffffffffffffff166338af3eed6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200102257600080fd5b505afa15801562001037573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200105d919062001798565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f68d870ac0aff3819234e8a1fc8f357b40d75212f2dc8594b97690fa205b3bab260405160405180910390a25050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200115262001608565b73ffffffffffffffffffffffffffffffffffffffff16620011726200111f565b73ffffffffffffffffffffffffffffffffffffffff1614620011cb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620011c29062001cd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200123e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012359062001c27565b60405180910390fd5b620012498162001610565b50565b60008060008060008060008060008990508998508073ffffffffffffffffffffffffffffffffffffffff1663961325216040518163ffffffff1660e01b815260040160206040518083038186803b158015620012a757600080fd5b505afa158015620012bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012e2919062001872565b97508073ffffffffffffffffffffffffffffffffffffffff16635b9400816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200132b57600080fd5b505afa15801562001340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001366919062001872565b96508073ffffffffffffffffffffffffffffffffffffffff166344b1231f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620013af57600080fd5b505afa158015620013c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013ea919062001872565b95508073ffffffffffffffffffffffffffffffffffffffff1663d2ecb4f96040518163ffffffff1660e01b815260040160206040518083038186803b1580156200143357600080fd5b505afa15801562001448573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200146e919062001872565b94508073ffffffffffffffffffffffffffffffffffffffff1663d1571e476040518163ffffffff1660e01b815260040160206040518083038186803b158015620014b757600080fd5b505afa158015620014cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014f2919062001872565b93508073ffffffffffffffffffffffffffffffffffffffff1663e3cfef606040518163ffffffff1660e01b815260040160206040518083038186803b1580156200153b57600080fd5b505afa15801562001550573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001576919062001872565b92508073ffffffffffffffffffffffffffffffffffffffff1663522e11776040518163ffffffff1660e01b815260040160206040518083038186803b158015620015bf57600080fd5b505afa158015620015d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015fa919062001846565b915050919395975091939597565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6124218062001ff183390190565b600081359050620016f38162001fa2565b92915050565b6000815190506200170a8162001fa2565b92915050565b600081359050620017218162001fbc565b92915050565b600081519050620017388162001fbc565b92915050565b6000813590506200174f8162001fd6565b92915050565b600081519050620017668162001fd6565b92915050565b6000602082840312156200177f57600080fd5b60006200178f84828501620016e2565b91505092915050565b600060208284031215620017ab57600080fd5b6000620017bb84828501620016f9565b91505092915050565b600080600080600060a08688031215620017dd57600080fd5b6000620017ed88828901620016e2565b955050602062001800888289016200173e565b945050604062001813888289016200173e565b935050606062001826888289016200173e565b9250506080620018398882890162001710565b9150509295509295909350565b6000602082840312156200185957600080fd5b6000620018698482850162001727565b91505092915050565b6000602082840312156200188557600080fd5b6000620018958482850162001755565b91505092915050565b6000620018ac8383620018b8565b60208301905092915050565b620018c38162001d9e565b82525050565b620018d48162001d9e565b82525050565b6000620018e78262001d64565b620018f3818562001d7c565b9350620019008362001d54565b8060005b83811015620019375781516200191b88826200189e565b9750620019288362001d6f565b92505060018101905062001904565b5085935050505092915050565b6200194f8162001db2565b82525050565b60006200196460268362001d8d565b9150620019718262001de8565b604082019050919050565b60006200198b602e8362001d8d565b9150620019988262001e37565b604082019050919050565b6000620019b260158362001d8d565b9150620019bf8262001e86565b602082019050919050565b6000620019d9601a8362001d8d565b9150620019e68262001eaf565b602082019050919050565b600062001a0060218362001d8d565b915062001a0d8262001ed8565b604082019050919050565b600062001a2760208362001d8d565b915062001a348262001f27565b602082019050919050565b600062001a4e601b8362001d8d565b915062001a5b8262001f50565b602082019050919050565b600062001a75601f8362001d8d565b915062001a828262001f79565b602082019050919050565b62001a988162001dde565b82525050565b600060208201905062001ab56000830184620018c9565b92915050565b600060408201905062001ad26000830185620018c9565b818103602083015262001ae68184620018da565b90509392505050565b600060408201905062001b066000830185620018c9565b62001b15602083018462001a8d565b9392505050565b600060e08201905062001b33600083018a620018c9565b62001b42602083018962001a8d565b62001b51604083018862001a8d565b62001b60606083018762001a8d565b62001b6f608083018662001944565b62001b7e60a083018562001a8d565b62001b8d60c0830184620018c9565b98975050505050505050565b60006101008201905062001bb1600083018b620018c9565b62001bc0602083018a62001a8d565b62001bcf604083018962001a8d565b62001bde606083018862001a8d565b62001bed608083018762001a8d565b62001bfc60a083018662001a8d565b62001c0b60c083018562001a8d565b62001c1a60e083018462001944565b9998505050505050505050565b6000602082019050818103600083015262001c428162001955565b9050919050565b6000602082019050818103600083015262001c64816200197c565b9050919050565b6000602082019050818103600083015262001c8681620019a3565b9050919050565b6000602082019050818103600083015262001ca881620019ca565b9050919050565b6000602082019050818103600083015262001cca81620019f1565b9050919050565b6000602082019050818103600083015262001cec8162001a18565b9050919050565b6000602082019050818103600083015262001d0e8162001a3f565b9050919050565b6000602082019050818103600083015262001d308162001a66565b9050919050565b600060208201905062001d4e600083018462001a8d565b92915050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600062001dab8262001dbe565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4164647265737320616c72656164792068617320616e2061637469766520766560008201527f7374696e6720636f6e7472616374000000000000000000000000000000000000602082015250565b7f546f6b656e207472616e73666572206661696c65640000000000000000000000600082015250565b7f53656e646572206d7573742062652062656e6566696369617279000000000000600082015250565b7f43616e6e6f742072656c6561736520616e20696e76616c69642061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f56657374696e6720697320616c726561647920636f6d706c6574650000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b62001fad8162001d9e565b811462001fb957600080fd5b50565b62001fc78162001db2565b811462001fd357600080fd5b50565b62001fe18162001dde565b811462001fed57600080fd5b5056fe6101406040523480156200001257600080fd5b506040516200242138038062002421833981810160405281019062000038919062000441565b620000586200004c6200030760201b60201c565b6200030f60201b60201c565b60018081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415620000d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000c99062000600565b60405180910390fd5b8385111562000118576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200010f9062000622565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508560c08181525050848662000165919062000655565b60a081815250508360e0818152505082151561012081151560f81b8152505081610100818152505080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b36200021e620003d360201b60201c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200025e929190620005b1565b602060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b49190620004ee565b905080620002f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f090620005de565b60405180910390fd5b505050505050505062000840565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200040d81620007f2565b92915050565b60008151905062000424816200080c565b92915050565b6000815190506200043b8162000826565b92915050565b600080600080600080600060e0888a0312156200045d57600080fd5b60006200046d8a828b01620003fc565b9750506020620004808a828b016200042a565b9650506040620004938a828b016200042a565b9550506060620004a68a828b016200042a565b9450506080620004b98a828b0162000413565b93505060a0620004cc8a828b016200042a565b92505060c0620004df8a828b01620003fc565b91505092959891949750929550565b6000602082840312156200050157600080fd5b6000620005118482850162000413565b91505092915050565b6200052581620006b2565b82525050565b60006200053a60158362000644565b915062000547826200072b565b602082019050919050565b60006200056160278362000644565b91506200056e8262000754565b604082019050919050565b60006200058860218362000644565b91506200059582620007a3565b604082019050919050565b620005ab81620006f2565b82525050565b6000604082019050620005c860008301856200051a565b620005d76020830184620005a0565b9392505050565b60006020820190508181036000830152620005f9816200052b565b9050919050565b600060208201905081810360008301526200061b8162000552565b9050919050565b600060208201905081810360008301526200063d8162000579565b9050919050565b600082825260208201905092915050565b60006200066282620006f2565b91506200066f83620006f2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006a757620006a6620006fc565b5b828201905092915050565b6000620006bf82620006d2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f5472616e7366657220746f6b656e206661696c65640000000000000000000000600082015250565b7f5468652062656e65666963696172792061646472657373206973207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b7f54686520636c696666206973206c6172676572207468616e206475726174696f60008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b620007fd81620006b2565b81146200080957600080fd5b50565b6200081781620006c6565b81146200082357600080fd5b50565b6200083181620006f2565b81146200083d57600080fd5b50565b60805160601c60a05160c05160e051610100516101205160f81c611b30620008f160003960008181610a500152610e6501526000818161057d01528181610d590152610e4101526000818161035f015281816103fe015281816105300152610e8c01526000818161041f0152818161055101528181610d330152610ead015260008181610383015281816103cd015261072a0152600081816103a7015281816107900152610b030152611b306000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063d1571e4711610071578063d1571e47146102c9578063d2ecb4f9146102e7578063e11360b314610305578063e3cfef6014610323578063f2fde38b146103415761012c565b80638da5cb5b146102495780639613252114610267578063980c2f2114610285578063b6549f75146102a1578063be9a6555146102ab5761012c565b80635b940081116100f45780635b940081146101c7578063617bb3d2146101e557806363d256ce14610203578063715018a61461022157806386d1a69f1461022b5761012c565b80630fb5a6b41461013157806313d033c01461014f57806338af3eed1461016d57806344b1231f1461018b578063522e1177146101a9575b600080fd5b61013961035d565b6040516101469190611713565b60405180910390f35b610157610381565b6040516101649190611713565b60405180910390f35b6101756103a5565b6040516101829190611599565b60405180910390f35b6101936103c9565b6040516101a09190611713565b60405180910390f35b6101b16105ba565b6040516101be91906115dd565b60405180910390f35b6101cf6105cd565b6040516101dc9190611713565b60405180910390f35b6101ed6105e9565b6040516101fa91906115f8565b60405180910390f35b61020b61060f565b60405161021891906115dd565b60405180910390f35b610229610622565b005b6102336106aa565b6040516102409190611713565b60405180910390f35b6102516107b9565b60405161025e9190611599565b60405180910390f35b61026f6107e2565b60405161027c9190611713565b60405180910390f35b61029f600480360381019061029a91906113e0565b6107e8565b005b6102a96109d2565b005b6102b3610d31565b6040516102c09190611713565b60405180910390f35b6102d1610d55565b6040516102de9190611713565b60405180910390f35b6102ef610e3f565b6040516102fc9190611713565b60405180910390f35b61030d610e63565b60405161031a91906115dd565b60405180910390f35b61032b610e87565b6040516103389190611713565b60405180910390f35b61035b6004803603810190610356919061138e565b610ee5565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000004210156103fc57600090506105b7565b7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610448919061173f565b421015806104625750600260009054906101000a900460ff165b1561052c576000600354600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104c79190611599565b60206040518083038186803b1580156104df57600080fd5b505afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610517919061141c565b610521919061173f565b9050809150506105b7565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004261057b9190611820565b7f00000000000000000000000000000000000000000000000000000000000000006105a691906117c6565b6105b09190611795565b9050809150505b90565b600260019054906101000a900460ff1681565b60006003546105da6103c9565b6105e49190611820565b905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900460ff1681565b61062a610fdd565b73ffffffffffffffffffffffffffffffffffffffff166106486107b9565b73ffffffffffffffffffffffffffffffffffffffff161461069e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069590611673565b60405180910390fd5b6106a86000610fe5565b565b60006106b4610fdd565b73ffffffffffffffffffffffffffffffffffffffff166106d26107b9565b73ffffffffffffffffffffffffffffffffffffffff1614610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90611673565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000042101561078b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610782906116d3565b60405180910390fd5b6107b47f00000000000000000000000000000000000000000000000000000000000000006110a9565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b6107f0610fdd565b73ffffffffffffffffffffffffffffffffffffffff1661080e6107b9565b73ffffffffffffffffffffffffffffffffffffffff1614610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90611673565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90611693565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61091b6107b9565b846040518363ffffffff1660e01b81526004016109399291906115b4565b602060405180830381600087803b15801561095357600080fd5b505af1158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b91906113b7565b9050806109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c490611613565b60405180910390fd5b505050565b6109da610fdd565b73ffffffffffffffffffffffffffffffffffffffff166109f86107b9565b73ffffffffffffffffffffffffffffffffffffffff1614610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4590611673565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa590611653565b60405180910390fd5b600260009054906101000a900460ff1615610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af5906116b3565b60405180910390fd5b610b277f00000000000000000000000000000000000000000000000000000000000000006110a9565b506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610b706107b9565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bcb9190611599565b60206040518083038186803b158015610be357600080fd5b505afa158015610bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1b919061141c565b6040518363ffffffff1660e01b8152600401610c389291906115b4565b602060405180830381600087803b158015610c5257600080fd5b505af1158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8a91906113b7565b905080610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390611613565b60405180910390fd5b6001600260006101000a81548160ff0219169083151502179055506001600260016101000a81548160ff0219169083151502179055507f44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee660405160405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f0000000000000000000000000000000000000000000000000000000000000000600354600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dd69190611599565b60206040518083038186803b158015610dee57600080fd5b505afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e26919061141c565b610e30919061173f565b610e3a9190611820565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000427f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610ed6919061173f565b610ee09190611820565b905090565b610eed610fdd565b73ffffffffffffffffffffffffffffffffffffffff16610f0b6107b9565b73ffffffffffffffffffffffffffffffffffffffff1614610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5890611673565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890611633565b60405180910390fd5b610fda81610fe5565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600260015414156110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e8906116f3565b60405180910390fd5b600260018190555060006111036105cd565b905080600354611113919061173f565b6003819055506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff1660e01b81526004016111789291906115b4565b602060405180830381600087803b15801561119257600080fd5b505af11580156111a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ca91906113b7565b90508061120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390611613565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112699190611599565b60206040518083038186803b15801561128157600080fd5b505afa158015611295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b9919061141c565b14156112db576001600260016101000a81548160ff0219169083151502179055505b7ffb81f9b30d73d830c3544b34d827c08142579ee75710b490bab0b3995468c56560035460405161130c9190611713565b60405180910390a1819250505060018081905550919050565b60008135905061133481611a9e565b92915050565b60008151905061134981611ab5565b92915050565b60008135905061135e81611acc565b92915050565b60008135905061137381611ae3565b92915050565b60008151905061138881611ae3565b92915050565b6000602082840312156113a057600080fd5b60006113ae84828501611325565b91505092915050565b6000602082840312156113c957600080fd5b60006113d78482850161133a565b91505092915050565b600080604083850312156113f357600080fd5b60006114018582860161134f565b925050602061141285828601611364565b9150509250929050565b60006020828403121561142e57600080fd5b600061143c84828501611379565b91505092915050565b61144e81611854565b82525050565b61145d81611866565b82525050565b61146c816118ae565b82525050565b600061147f60158361172e565b915061148a82611930565b602082019050919050565b60006114a260268361172e565b91506114ad82611959565b604082019050919050565b60006114c560128361172e565b91506114d0826119a8565b602082019050919050565b60006114e860208361172e565b91506114f3826119d1565b602082019050919050565b600061150b60158361172e565b9150611516826119fa565b602082019050919050565b600061152e60148361172e565b915061153982611a23565b602082019050919050565b6000611551601e8361172e565b915061155c82611a4c565b602082019050919050565b6000611574601f8361172e565b915061157f82611a75565b602082019050919050565b611593816118a4565b82525050565b60006020820190506115ae6000830184611445565b92915050565b60006040820190506115c96000830185611445565b6115d6602083018461158a565b9392505050565b60006020820190506115f26000830184611454565b92915050565b600060208201905061160d6000830184611463565b92915050565b6000602082019050818103600083015261162c81611472565b9050919050565b6000602082019050818103600083015261164c81611495565b9050919050565b6000602082019050818103600083015261166c816114b8565b9050919050565b6000602082019050818103600083015261168c816114db565b9050919050565b600060208201905081810360008301526116ac816114fe565b9050919050565b600060208201905081810360008301526116cc81611521565b9050919050565b600060208201905081810360008301526116ec81611544565b9050919050565b6000602082019050818103600083015261170c81611567565b9050919050565b6000602082019050611728600083018461158a565b92915050565b600082825260208201905092915050565b600061174a826118a4565b9150611755836118a4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561178a576117896118d2565b5b828201905092915050565b60006117a0826118a4565b91506117ab836118a4565b9250826117bb576117ba611901565b5b828204905092915050565b60006117d1826118a4565b91506117dc836118a4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611815576118146118d2565b5b828202905092915050565b600061182b826118a4565b9150611836836118a4565b925082821015611849576118486118d2565b5b828203905092915050565b600061185f82611884565b9050919050565b60008115159050919050565b600061187d82611854565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006118b9826118c0565b9050919050565b60006118cb82611884565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f5472616e7366657220746f6b656e206661696c65640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f49742773206e6f74207265766f6b61626c650000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f54686520746f6b656e206973206d7873546f6b656e0000000000000000000000600082015250565b7f4974277320616c7265616479207265766f6b6564000000000000000000000000600082015250565b7f436c69666620686173206e6f74206265656e2072656163686564207965740000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b611aa781611854565b8114611ab257600080fd5b50565b611abe81611866565b8114611ac957600080fd5b50565b611ad581611872565b8114611ae057600080fd5b50565b611aec816118a4565b8114611af757600080fd5b5056fea26469706673582212200e401a4d1853c4df6935feb0263e80830ce8273846e315be0391812fd8ee67ad64736f6c63430008040033a2646970667358221220414beccac2466e9ebcd8daf8344aa8d6243cf5dbd89508558c257915a2574a6f64736f6c634300080400330000000000000000000000008d95026d139f855b1458f3b8f48960c103d21abb

Deployed Bytecode

0x60806040523480156200001157600080fd5b5060043610620000a05760003560e01c8063715018a6116200006f578063715018a6146200015957806374a8f10314620001655780638da5cb5b1462000185578063f2fde38b14620001a7578063f78e633d14620001c757620000a0565b80631916558714620000a55780631959a00214620000c557806326855d6914620000fc5780633e266ab0146200011c575b600080fd5b620000c36004803603810190620000bd91906200176c565b62000204565b005b620000e36004803603810190620000dd91906200176c565b6200069c565b604051620000f392919062001abb565b60405180910390f35b6200011a6004803603810190620001149190620017c4565b620007e8565b005b6200013a60048036038101906200013491906200176c565b62000c8e565b6040516200015098979695949392919062001b99565b60405180910390f35b6200016362000d22565b005b6200018360048036038101906200017d91906200176c565b62000db3565b005b6200018f6200111f565b6040516200019e919062001a9e565b60405180910390f35b620001c56004803603810190620001bf91906200176c565b62001148565b005b620001e56004803603810190620001df91906200176c565b6200124c565b604051620001fb98979695949392919062001b99565b60405180910390f35b6000819050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200027c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002739062001caf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663522e11776040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c357600080fd5b505afa158015620002d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fe919062001846565b1562000341576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003389062001cf3565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166338af3eed6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039f57600080fd5b505afa158015620003b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003da919062001798565b73ffffffffffffffffffffffffffffffffffffffff161462000433576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200042a9062001c8d565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166386d1a69f6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200047e57600080fd5b505af115801562000493573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b9919062001872565b90508173ffffffffffffffffffffffffffffffffffffffff1663522e11776040518163ffffffff1660e01b815260040160206040518083038186803b1580156200050257600080fd5b505afa15801562000517573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053d919062001846565b1562000647576000600260008473ffffffffffffffffffffffffffffffffffffffff166338af3eed6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200059057600080fd5b505afa158015620005a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005cb919062001798565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8273ffffffffffffffffffffffffffffffffffffffff167f4ad7799f99297062cea73c5a21d23a1fcf49f6a1957f7409712e555a0dcd1e1d826040516200068f919062001d37565b60405180910390a2505050565b600060606000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020018280548015620007c957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116200077e575b5050505050815250509050806000015181602001519250925050915091565b620007f262001608565b73ffffffffffffffffffffffffffffffffffffffff16620008126200111f565b73ffffffffffffffffffffffffffffffffffffffff16146200086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008629062001cd1565b60405180910390fd5b60026001541415620008b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ab9062001d15565b60405180910390fd5b6002600181905550600073ffffffffffffffffffffffffffffffffffffffff16600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009879062001c49565b60405180910390fd5b60008542848685897f0000000000000000000000008d95026d139f855b1458f3b8f48960c103d21abb604051620009c790620016d4565b620009d9979695949392919062001b1c565b604051809103906000f080158015620009f6573d6000803e3d6000fd5b50905060007f0000000000000000000000008d95026d139f855b1458f3b8f48960c103d21abb73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83886040518363ffffffff1660e01b815260040162000a5892919062001aef565b602060405180830381600087803b15801562000a7357600080fd5b505af115801562000a88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aae919062001846565b90508062000af3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aea9062001c6b565b60405180910390fd5b81600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd5ad48d673f889adad7b73dab2d50040ef22dd8dec91b284bc5a8bc724f3ffb08860405162000c76919062001d37565b60405180910390a35050600180819055505050505050565b60008060008060008060008062000d07600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200124c565b97509750975097509750975097509750919395975091939597565b62000d2c62001608565b73ffffffffffffffffffffffffffffffffffffffff1662000d4c6200111f565b73ffffffffffffffffffffffffffffffffffffffff161462000da5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d9c9062001cd1565b60405180910390fd5b62000db1600062001610565b565b62000dbd62001608565b73ffffffffffffffffffffffffffffffffffffffff1662000ddd6200111f565b73ffffffffffffffffffffffffffffffffffffffff161462000e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e2d9062001cd1565b60405180910390fd5b6000819050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000eae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ea59062001caf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663522e11776040518163ffffffff1660e01b815260040160206040518083038186803b15801562000ef557600080fd5b505afa15801562000f0a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f30919062001846565b1562000f73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f6a9062001cf3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663b6549f756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000fbc57600080fd5b505af115801562000fd1573d6000803e3d6000fd5b505050506000600260008373ffffffffffffffffffffffffffffffffffffffff166338af3eed6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200102257600080fd5b505afa15801562001037573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200105d919062001798565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f68d870ac0aff3819234e8a1fc8f357b40d75212f2dc8594b97690fa205b3bab260405160405180910390a25050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200115262001608565b73ffffffffffffffffffffffffffffffffffffffff16620011726200111f565b73ffffffffffffffffffffffffffffffffffffffff1614620011cb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620011c29062001cd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200123e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012359062001c27565b60405180910390fd5b620012498162001610565b50565b60008060008060008060008060008990508998508073ffffffffffffffffffffffffffffffffffffffff1663961325216040518163ffffffff1660e01b815260040160206040518083038186803b158015620012a757600080fd5b505afa158015620012bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012e2919062001872565b97508073ffffffffffffffffffffffffffffffffffffffff16635b9400816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200132b57600080fd5b505afa15801562001340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001366919062001872565b96508073ffffffffffffffffffffffffffffffffffffffff166344b1231f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620013af57600080fd5b505afa158015620013c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013ea919062001872565b95508073ffffffffffffffffffffffffffffffffffffffff1663d2ecb4f96040518163ffffffff1660e01b815260040160206040518083038186803b1580156200143357600080fd5b505afa15801562001448573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200146e919062001872565b94508073ffffffffffffffffffffffffffffffffffffffff1663d1571e476040518163ffffffff1660e01b815260040160206040518083038186803b158015620014b757600080fd5b505afa158015620014cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014f2919062001872565b93508073ffffffffffffffffffffffffffffffffffffffff1663e3cfef606040518163ffffffff1660e01b815260040160206040518083038186803b1580156200153b57600080fd5b505afa15801562001550573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001576919062001872565b92508073ffffffffffffffffffffffffffffffffffffffff1663522e11776040518163ffffffff1660e01b815260040160206040518083038186803b158015620015bf57600080fd5b505afa158015620015d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015fa919062001846565b915050919395975091939597565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6124218062001ff183390190565b600081359050620016f38162001fa2565b92915050565b6000815190506200170a8162001fa2565b92915050565b600081359050620017218162001fbc565b92915050565b600081519050620017388162001fbc565b92915050565b6000813590506200174f8162001fd6565b92915050565b600081519050620017668162001fd6565b92915050565b6000602082840312156200177f57600080fd5b60006200178f84828501620016e2565b91505092915050565b600060208284031215620017ab57600080fd5b6000620017bb84828501620016f9565b91505092915050565b600080600080600060a08688031215620017dd57600080fd5b6000620017ed88828901620016e2565b955050602062001800888289016200173e565b945050604062001813888289016200173e565b935050606062001826888289016200173e565b9250506080620018398882890162001710565b9150509295509295909350565b6000602082840312156200185957600080fd5b6000620018698482850162001727565b91505092915050565b6000602082840312156200188557600080fd5b6000620018958482850162001755565b91505092915050565b6000620018ac8383620018b8565b60208301905092915050565b620018c38162001d9e565b82525050565b620018d48162001d9e565b82525050565b6000620018e78262001d64565b620018f3818562001d7c565b9350620019008362001d54565b8060005b83811015620019375781516200191b88826200189e565b9750620019288362001d6f565b92505060018101905062001904565b5085935050505092915050565b6200194f8162001db2565b82525050565b60006200196460268362001d8d565b9150620019718262001de8565b604082019050919050565b60006200198b602e8362001d8d565b9150620019988262001e37565b604082019050919050565b6000620019b260158362001d8d565b9150620019bf8262001e86565b602082019050919050565b6000620019d9601a8362001d8d565b9150620019e68262001eaf565b602082019050919050565b600062001a0060218362001d8d565b915062001a0d8262001ed8565b604082019050919050565b600062001a2760208362001d8d565b915062001a348262001f27565b602082019050919050565b600062001a4e601b8362001d8d565b915062001a5b8262001f50565b602082019050919050565b600062001a75601f8362001d8d565b915062001a828262001f79565b602082019050919050565b62001a988162001dde565b82525050565b600060208201905062001ab56000830184620018c9565b92915050565b600060408201905062001ad26000830185620018c9565b818103602083015262001ae68184620018da565b90509392505050565b600060408201905062001b066000830185620018c9565b62001b15602083018462001a8d565b9392505050565b600060e08201905062001b33600083018a620018c9565b62001b42602083018962001a8d565b62001b51604083018862001a8d565b62001b60606083018762001a8d565b62001b6f608083018662001944565b62001b7e60a083018562001a8d565b62001b8d60c0830184620018c9565b98975050505050505050565b60006101008201905062001bb1600083018b620018c9565b62001bc0602083018a62001a8d565b62001bcf604083018962001a8d565b62001bde606083018862001a8d565b62001bed608083018762001a8d565b62001bfc60a083018662001a8d565b62001c0b60c083018562001a8d565b62001c1a60e083018462001944565b9998505050505050505050565b6000602082019050818103600083015262001c428162001955565b9050919050565b6000602082019050818103600083015262001c64816200197c565b9050919050565b6000602082019050818103600083015262001c8681620019a3565b9050919050565b6000602082019050818103600083015262001ca881620019ca565b9050919050565b6000602082019050818103600083015262001cca81620019f1565b9050919050565b6000602082019050818103600083015262001cec8162001a18565b9050919050565b6000602082019050818103600083015262001d0e8162001a3f565b9050919050565b6000602082019050818103600083015262001d308162001a66565b9050919050565b600060208201905062001d4e600083018462001a8d565b92915050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600062001dab8262001dbe565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4164647265737320616c72656164792068617320616e2061637469766520766560008201527f7374696e6720636f6e7472616374000000000000000000000000000000000000602082015250565b7f546f6b656e207472616e73666572206661696c65640000000000000000000000600082015250565b7f53656e646572206d7573742062652062656e6566696369617279000000000000600082015250565b7f43616e6e6f742072656c6561736520616e20696e76616c69642061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f56657374696e6720697320616c726561647920636f6d706c6574650000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b62001fad8162001d9e565b811462001fb957600080fd5b50565b62001fc78162001db2565b811462001fd357600080fd5b50565b62001fe18162001dde565b811462001fed57600080fd5b5056fe6101406040523480156200001257600080fd5b506040516200242138038062002421833981810160405281019062000038919062000441565b620000586200004c6200030760201b60201c565b6200030f60201b60201c565b60018081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415620000d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000c99062000600565b60405180910390fd5b8385111562000118576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200010f9062000622565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508560c08181525050848662000165919062000655565b60a081815250508360e0818152505082151561012081151560f81b8152505081610100818152505080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b36200021e620003d360201b60201c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200025e929190620005b1565b602060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b49190620004ee565b905080620002f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f090620005de565b60405180910390fd5b505050505050505062000840565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200040d81620007f2565b92915050565b60008151905062000424816200080c565b92915050565b6000815190506200043b8162000826565b92915050565b600080600080600080600060e0888a0312156200045d57600080fd5b60006200046d8a828b01620003fc565b9750506020620004808a828b016200042a565b9650506040620004938a828b016200042a565b9550506060620004a68a828b016200042a565b9450506080620004b98a828b0162000413565b93505060a0620004cc8a828b016200042a565b92505060c0620004df8a828b01620003fc565b91505092959891949750929550565b6000602082840312156200050157600080fd5b6000620005118482850162000413565b91505092915050565b6200052581620006b2565b82525050565b60006200053a60158362000644565b915062000547826200072b565b602082019050919050565b60006200056160278362000644565b91506200056e8262000754565b604082019050919050565b60006200058860218362000644565b91506200059582620007a3565b604082019050919050565b620005ab81620006f2565b82525050565b6000604082019050620005c860008301856200051a565b620005d76020830184620005a0565b9392505050565b60006020820190508181036000830152620005f9816200052b565b9050919050565b600060208201905081810360008301526200061b8162000552565b9050919050565b600060208201905081810360008301526200063d8162000579565b9050919050565b600082825260208201905092915050565b60006200066282620006f2565b91506200066f83620006f2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006a757620006a6620006fc565b5b828201905092915050565b6000620006bf82620006d2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f5472616e7366657220746f6b656e206661696c65640000000000000000000000600082015250565b7f5468652062656e65666963696172792061646472657373206973207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b7f54686520636c696666206973206c6172676572207468616e206475726174696f60008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b620007fd81620006b2565b81146200080957600080fd5b50565b6200081781620006c6565b81146200082357600080fd5b50565b6200083181620006f2565b81146200083d57600080fd5b50565b60805160601c60a05160c05160e051610100516101205160f81c611b30620008f160003960008181610a500152610e6501526000818161057d01528181610d590152610e4101526000818161035f015281816103fe015281816105300152610e8c01526000818161041f0152818161055101528181610d330152610ead015260008181610383015281816103cd015261072a0152600081816103a7015281816107900152610b030152611b306000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063d1571e4711610071578063d1571e47146102c9578063d2ecb4f9146102e7578063e11360b314610305578063e3cfef6014610323578063f2fde38b146103415761012c565b80638da5cb5b146102495780639613252114610267578063980c2f2114610285578063b6549f75146102a1578063be9a6555146102ab5761012c565b80635b940081116100f45780635b940081146101c7578063617bb3d2146101e557806363d256ce14610203578063715018a61461022157806386d1a69f1461022b5761012c565b80630fb5a6b41461013157806313d033c01461014f57806338af3eed1461016d57806344b1231f1461018b578063522e1177146101a9575b600080fd5b61013961035d565b6040516101469190611713565b60405180910390f35b610157610381565b6040516101649190611713565b60405180910390f35b6101756103a5565b6040516101829190611599565b60405180910390f35b6101936103c9565b6040516101a09190611713565b60405180910390f35b6101b16105ba565b6040516101be91906115dd565b60405180910390f35b6101cf6105cd565b6040516101dc9190611713565b60405180910390f35b6101ed6105e9565b6040516101fa91906115f8565b60405180910390f35b61020b61060f565b60405161021891906115dd565b60405180910390f35b610229610622565b005b6102336106aa565b6040516102409190611713565b60405180910390f35b6102516107b9565b60405161025e9190611599565b60405180910390f35b61026f6107e2565b60405161027c9190611713565b60405180910390f35b61029f600480360381019061029a91906113e0565b6107e8565b005b6102a96109d2565b005b6102b3610d31565b6040516102c09190611713565b60405180910390f35b6102d1610d55565b6040516102de9190611713565b60405180910390f35b6102ef610e3f565b6040516102fc9190611713565b60405180910390f35b61030d610e63565b60405161031a91906115dd565b60405180910390f35b61032b610e87565b6040516103389190611713565b60405180910390f35b61035b6004803603810190610356919061138e565b610ee5565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000004210156103fc57600090506105b7565b7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610448919061173f565b421015806104625750600260009054906101000a900460ff165b1561052c576000600354600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104c79190611599565b60206040518083038186803b1580156104df57600080fd5b505afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610517919061141c565b610521919061173f565b9050809150506105b7565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004261057b9190611820565b7f00000000000000000000000000000000000000000000000000000000000000006105a691906117c6565b6105b09190611795565b9050809150505b90565b600260019054906101000a900460ff1681565b60006003546105da6103c9565b6105e49190611820565b905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900460ff1681565b61062a610fdd565b73ffffffffffffffffffffffffffffffffffffffff166106486107b9565b73ffffffffffffffffffffffffffffffffffffffff161461069e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069590611673565b60405180910390fd5b6106a86000610fe5565b565b60006106b4610fdd565b73ffffffffffffffffffffffffffffffffffffffff166106d26107b9565b73ffffffffffffffffffffffffffffffffffffffff1614610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90611673565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000042101561078b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610782906116d3565b60405180910390fd5b6107b47f00000000000000000000000000000000000000000000000000000000000000006110a9565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b6107f0610fdd565b73ffffffffffffffffffffffffffffffffffffffff1661080e6107b9565b73ffffffffffffffffffffffffffffffffffffffff1614610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90611673565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90611693565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61091b6107b9565b846040518363ffffffff1660e01b81526004016109399291906115b4565b602060405180830381600087803b15801561095357600080fd5b505af1158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b91906113b7565b9050806109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c490611613565b60405180910390fd5b505050565b6109da610fdd565b73ffffffffffffffffffffffffffffffffffffffff166109f86107b9565b73ffffffffffffffffffffffffffffffffffffffff1614610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4590611673565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa590611653565b60405180910390fd5b600260009054906101000a900460ff1615610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af5906116b3565b60405180910390fd5b610b277f00000000000000000000000000000000000000000000000000000000000000006110a9565b506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610b706107b9565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bcb9190611599565b60206040518083038186803b158015610be357600080fd5b505afa158015610bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1b919061141c565b6040518363ffffffff1660e01b8152600401610c389291906115b4565b602060405180830381600087803b158015610c5257600080fd5b505af1158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8a91906113b7565b905080610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390611613565b60405180910390fd5b6001600260006101000a81548160ff0219169083151502179055506001600260016101000a81548160ff0219169083151502179055507f44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee660405160405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f0000000000000000000000000000000000000000000000000000000000000000600354600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dd69190611599565b60206040518083038186803b158015610dee57600080fd5b505afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e26919061141c565b610e30919061173f565b610e3a9190611820565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000427f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610ed6919061173f565b610ee09190611820565b905090565b610eed610fdd565b73ffffffffffffffffffffffffffffffffffffffff16610f0b6107b9565b73ffffffffffffffffffffffffffffffffffffffff1614610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5890611673565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890611633565b60405180910390fd5b610fda81610fe5565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600260015414156110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e8906116f3565b60405180910390fd5b600260018190555060006111036105cd565b905080600354611113919061173f565b6003819055506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff1660e01b81526004016111789291906115b4565b602060405180830381600087803b15801561119257600080fd5b505af11580156111a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ca91906113b7565b90508061120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390611613565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112699190611599565b60206040518083038186803b15801561128157600080fd5b505afa158015611295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b9919061141c565b14156112db576001600260016101000a81548160ff0219169083151502179055505b7ffb81f9b30d73d830c3544b34d827c08142579ee75710b490bab0b3995468c56560035460405161130c9190611713565b60405180910390a1819250505060018081905550919050565b60008135905061133481611a9e565b92915050565b60008151905061134981611ab5565b92915050565b60008135905061135e81611acc565b92915050565b60008135905061137381611ae3565b92915050565b60008151905061138881611ae3565b92915050565b6000602082840312156113a057600080fd5b60006113ae84828501611325565b91505092915050565b6000602082840312156113c957600080fd5b60006113d78482850161133a565b91505092915050565b600080604083850312156113f357600080fd5b60006114018582860161134f565b925050602061141285828601611364565b9150509250929050565b60006020828403121561142e57600080fd5b600061143c84828501611379565b91505092915050565b61144e81611854565b82525050565b61145d81611866565b82525050565b61146c816118ae565b82525050565b600061147f60158361172e565b915061148a82611930565b602082019050919050565b60006114a260268361172e565b91506114ad82611959565b604082019050919050565b60006114c560128361172e565b91506114d0826119a8565b602082019050919050565b60006114e860208361172e565b91506114f3826119d1565b602082019050919050565b600061150b60158361172e565b9150611516826119fa565b602082019050919050565b600061152e60148361172e565b915061153982611a23565b602082019050919050565b6000611551601e8361172e565b915061155c82611a4c565b602082019050919050565b6000611574601f8361172e565b915061157f82611a75565b602082019050919050565b611593816118a4565b82525050565b60006020820190506115ae6000830184611445565b92915050565b60006040820190506115c96000830185611445565b6115d6602083018461158a565b9392505050565b60006020820190506115f26000830184611454565b92915050565b600060208201905061160d6000830184611463565b92915050565b6000602082019050818103600083015261162c81611472565b9050919050565b6000602082019050818103600083015261164c81611495565b9050919050565b6000602082019050818103600083015261166c816114b8565b9050919050565b6000602082019050818103600083015261168c816114db565b9050919050565b600060208201905081810360008301526116ac816114fe565b9050919050565b600060208201905081810360008301526116cc81611521565b9050919050565b600060208201905081810360008301526116ec81611544565b9050919050565b6000602082019050818103600083015261170c81611567565b9050919050565b6000602082019050611728600083018461158a565b92915050565b600082825260208201905092915050565b600061174a826118a4565b9150611755836118a4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561178a576117896118d2565b5b828201905092915050565b60006117a0826118a4565b91506117ab836118a4565b9250826117bb576117ba611901565b5b828204905092915050565b60006117d1826118a4565b91506117dc836118a4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611815576118146118d2565b5b828202905092915050565b600061182b826118a4565b9150611836836118a4565b925082821015611849576118486118d2565b5b828203905092915050565b600061185f82611884565b9050919050565b60008115159050919050565b600061187d82611854565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006118b9826118c0565b9050919050565b60006118cb82611884565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f5472616e7366657220746f6b656e206661696c65640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f49742773206e6f74207265766f6b61626c650000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f54686520746f6b656e206973206d7873546f6b656e0000000000000000000000600082015250565b7f4974277320616c7265616479207265766f6b6564000000000000000000000000600082015250565b7f436c69666620686173206e6f74206265656e2072656163686564207965740000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b611aa781611854565b8114611ab257600080fd5b50565b611abe81611866565b8114611ac957600080fd5b50565b611ad581611872565b8114611ae057600080fd5b50565b611aec816118a4565b8114611af757600080fd5b5056fea26469706673582212200e401a4d1853c4df6935feb0263e80830ce8273846e315be0391812fd8ee67ad64736f6c63430008040033a2646970667358221220414beccac2466e9ebcd8daf8344aa8d6243cf5dbd89508558c257915a2574a6f64736f6c63430008040033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000008d95026d139f855b1458f3b8f48960c103d21abb

-----Decoded View---------------
Arg [0] : _token (address): 0x8D95026D139f855B1458F3B8F48960C103D21ABB

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008d95026d139f855b1458f3b8f48960c103d21abb


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.