false
true
0

Contract Address Details

0x5C84bc60a796534bfeC3439Af0E6dB616A966335

Token
Bone (Bone)
Creator
0x5bc01d–37def3 at 0x885403–4858b4
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
4,352 Transactions
Transfers
0 Transfers
Gas Used
203,373,527
Last Balance Update
25970514
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify. View contract in Sourcify repository
Contract name:
Bone




Optimization enabled
true
Compiler version
v0.5.8+commit.23d335f2




Optimization runs
200
EVM Version
petersburg




Verified at
2026-03-08T09:35:04.716456Z

Bone.sol

pragma solidity 0.5.8;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


// File: node_modules\openzeppelin-solidity\contracts\math\SafeMath.sol

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

// File: node_modules\openzeppelin-solidity\contracts\token\ERC20\ERC20.sol

/**
 * @dev Implementation of the `IERC20` interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using `_mint`.
 * For a generic mechanism see `ERC20Mintable`.
 *
 * *For a detailed writeup see our guide [How to implement supply
 * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an `Approval` event is emitted on calls to `transferFrom`.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard `decreaseAllowance` and `increaseAllowance`
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See `IERC20.approve`.
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) internal _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See `IERC20.transfer`.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev See `IERC20.allowance`.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See `IERC20.approve`.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev See `IERC20.transferFrom`.
     *
     * Emits an `Approval` event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of `ERC20`;
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `value`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to `transfer`, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a `Transfer` event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a `Transfer` event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

     /**
     * @dev Destoys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a `Transfer` event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an `Approval` event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    /**
     * @dev Destoys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See `_burn` and `_approve`.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));
    }
}



contract Bone is ERC20 {
    string public constant name = "Bone";
    string public constant symbol = "Bone";
    uint8 public constant decimals = 18;
    uint256 public constant initialSupply = 1000000000 * (10 ** uint256(decimals));
    bool public _lockStatus = false;
    bool private isValue;
    constructor() public {
        super._mint(msg.sender, initialSupply);
        owner = msg.sender;
    }
    mapping (address => uint256) private time;
    mapping (address => uint256) private _lockedAmount;

    //ownership
    address public owner;

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

    modifier onlyOwner() {
        require(msg.sender == owner, "Not owner");
        _;
    }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(owner);
        owner = address(0);
    }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
    function transferOwnership(address _newOwner) public onlyOwner {
        _transferOwnership(_newOwner);
    }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
    function _transferOwnership(address _newOwner) internal {
        require(_newOwner != address(0), "Already owner");
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }

    //pausable
    event Pause();
    event Unpause();

    bool public paused = false;

    /**
    * @dev Modifier to make a function callable only when the contract is not paused.
    */
    modifier whenNotPaused() {
        require(!paused, "Paused by owner");
        _;
    }

    /**
    * @dev Modifier to make a function callable only when the contract is paused.
    */
    modifier whenPaused() {
        require(paused, "Not paused now");
        _;
    }

    /**
    * @dev called by the owner to pause, triggers stopped state
    */
    function pause() public onlyOwner whenNotPaused {
        paused = true;
        emit Pause();
    }

    /**
    * @dev called by the owner to unpause, returns to normal state
    */
    function unpause() public onlyOwner whenPaused {
        paused = false;
        emit Unpause();
    }

    //freezable
    event Frozen(address target);
    event Unfrozen(address target);

    mapping(address => bool) internal freezes;

    modifier whenNotFrozen() {
        require(!freezes[msg.sender], "Sender account is locked.");
        _;
    }

    function freeze(address _target) public onlyOwner {
        freezes[_target] = true;
        emit Frozen(_target);
    }

    function unfreeze(address _target) public onlyOwner {
        freezes[_target] = false;
        emit Unfrozen(_target);
    }

    function isFrozen(address _target) public view returns (bool) {
        return freezes[_target];
    }


    /* ----------------------------------------------------------------------------
     * Locking functions
     * ----------------------------------------------------------------------------
     */

    /**
     * @dev Lock all transfer functions of the contract
     * @return request status
     */
    function setAllTransfersLockStatus(bool RunningStatusLock) external onlyOwner returns (bool)
    {
        _lockStatus = RunningStatusLock;
        return true;
    }

    /**
     * @dev check lock status of all transfers
     * @return lock status
     */
    function getAllTransfersLockStatus() public view returns (bool)
    {
        return _lockStatus;
    }

    /**
     * @dev time calculator for locked tokens
     */
     function addLockingTime(address lockingAddress,uint8 lockingTime, uint256 amount) internal returns (bool){
        time[lockingAddress] = now + (lockingTime * 1 days);
        _lockedAmount[lockingAddress] = amount;
        return true;
     }

       function transferByOwner(address to, uint256 value, uint8 lockingTime) public AllTransfersLockStatus onlyOwner returns (bool) {
        addLockingTime(to,lockingTime,value);
        _transfer(msg.sender, to, value);
        return true;
    }

     /**
      * @dev check for time based lock
      * @param _address address to check for locking time
      * @return time in block format
      */
      function checkLockingTimeByAddress(address _address) public view returns(uint256){
         return time[_address];
      }
      /**
       * @dev return locking status
       * @param userAddress address of to check
       * @return locking status in true or false
       */
       function getLockingStatus(address userAddress) public view returns(bool){
           if (now < time[userAddress]){
               return true;
           }
           else{
               return false;
           }
       }

    /**
     * @dev  Decreaese locking time
     * @param _affectiveAddress Address of the locked address
     * @param _decreasedTime Time in days to be affected
     */
    function decreaseLockingTimeByAddress(address _affectiveAddress, uint _decreasedTime) external onlyOwner returns(bool){
          require(_decreasedTime > 0 && time[_affectiveAddress] > now, "Please check address status or Incorrect input");
          time[_affectiveAddress] = time[_affectiveAddress] - (_decreasedTime * 1 days);
          return true;
      }

      /**
     * @dev Increase locking time
     * @param _affectiveAddress Address of the locked address
     * @param _increasedTime Time in days to be affected
     */
    function increaseLockingTimeByAddress(address _affectiveAddress, uint _increasedTime) external onlyOwner returns(bool){
          require(_increasedTime > 0 && time[_affectiveAddress] > now, "Please check address status or Incorrect input");
          time[_affectiveAddress] = time[_affectiveAddress] + (_increasedTime * 1 days);
          return true;
      }

    /**
     * @dev modifier to check validation of lock status of smart contract
     */
    modifier AllTransfersLockStatus()
    {
        require(_lockStatus == false,"All transactions are locked for this contract");
        _;
    }

    /**
     * @dev modifier to check locking amount
     * @param _address address to check
     * @param requestedAmount Amount to check
     * @return status
     */
     modifier checkLocking(address _address,uint256 requestedAmount){
         if(now < time[_address]){
         require(!( _balances[_address] - _lockedAmount[_address] < requestedAmount), "Insufficient unlocked balance");
         }
        else{
            require(1 == 1,"Transfer can not be processed");
        }
        _;
     }

    function transfer(
        address _to,
        uint256 _value
    )
      public
      AllTransfersLockStatus
      checkLocking(msg.sender,_value)
      whenNotFrozen
      whenNotPaused
      returns (bool)
    {
        releaseLock(msg.sender);
        return super.transfer(_to, _value);
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    )
      public
      AllTransfersLockStatus
      checkLocking(_from,_value)
      whenNotPaused
      returns (bool)
     {
        require(!freezes[_from], "From account is locked.");
        releaseLock(_from);
        return super.transferFrom(_from, _to, _value);
     }

    //mintable
    event Mint(address indexed to, uint256 amount);

    function mint(
        address _to,
        uint256 _amount
    )
      public
      onlyOwner
      returns (bool)
    {
        super._mint(_to, _amount);
        emit Mint(_to, _amount);
        return true;
    }

    //burnable
    event Burn(address indexed burner, uint256 value);

    function burn(address _who, uint256 _value) public
    onlyOwner
    checkLocking(msg.sender,_value)
    {
        require(_value <= super.balanceOf(_who), "Balance is too small.");

        _burn(_who, _value);
        emit Burn(_who, _value);
    }

    //lockable
    struct LockInfo {
        uint256 releaseTime;
        uint256 balance;
    }
    mapping(address => LockInfo[]) internal lockInfo;

    event Lock(address indexed holder, uint256 value, uint256 releaseTime);
    event Unlock(address indexed holder, uint256 value);

    function balanceOf(address _holder) public view returns (uint256 balance) {
        uint256 lockedBalance = 0;
        for(uint256 i = 0; i < lockInfo[_holder].length ; i++ ) {
            lockedBalance = lockedBalance.add(lockInfo[_holder][i].balance);
        }
        return super.balanceOf(_holder).add(lockedBalance);
    }

    function releaseLock(address _holder) internal {

        for(uint256 i = 0; i < lockInfo[_holder].length ; i++ ) {
            if (lockInfo[_holder][i].releaseTime <= now) {
                _balances[_holder] = _balances[_holder].add(lockInfo[_holder][i].balance);
                emit Unlock(_holder, lockInfo[_holder][i].balance);
                lockInfo[_holder][i].balance = 0;

                if (i != lockInfo[_holder].length - 1) {
                    lockInfo[_holder][i] = lockInfo[_holder][lockInfo[_holder].length - 1];
                    i--;
                }
                lockInfo[_holder].length--;

            }
        }
    }
    function lockCount(address _holder) public view returns (uint256) {
        return lockInfo[_holder].length;
    }
    function lockState(address _holder, uint256 _idx) public view returns (uint256, uint256) {
        return (lockInfo[_holder][_idx].releaseTime, lockInfo[_holder][_idx].balance);
    }

    function lock(address _holder, uint256 _amount, uint256 _releaseTime) public onlyOwner {
        require(super.balanceOf(_holder) >= _amount, "Balance is too small.");
        _balances[_holder] = _balances[_holder].sub(_amount);
        lockInfo[_holder].push(
            LockInfo(_releaseTime, _amount)
        );
        emit Lock(_holder, _amount, _releaseTime);
    }


    function lockAfter(address _holder, uint256 _amount, uint256 _afterTime) public onlyOwner {
        require(super.balanceOf(_holder) >= _amount, "Balance is too small.");
        _balances[_holder] = _balances[_holder].sub(_amount);
        lockInfo[_holder].push(
            LockInfo(now + _afterTime, _amount)
        );
        emit Lock(_holder, _amount, now + _afterTime);
    }

    function unlock(address _holder, uint256 i) public onlyOwner {
        require(i < lockInfo[_holder].length, "No lock information.");

        _balances[_holder] = _balances[_holder].add(lockInfo[_holder][i].balance);
        emit Unlock(_holder, lockInfo[_holder][i].balance);
        lockInfo[_holder][i].balance = 0;

        if (i != lockInfo[_holder].length - 1) {
            lockInfo[_holder][i] = lockInfo[_holder][lockInfo[_holder].length - 1];
        }
        lockInfo[_holder].length--;
    }

    function transferLockedTokens(address from, address to, uint256 value) external onlyOwner returns (bool){
        require((_lockedAmount[from] >= value) && (now < time[from]), "Insufficient unlocked balance");
        require(from != address(0) && to != address(0), "Invalid address");
        _lockedAmount[from] = _lockedAmount[from] - value;
        _transfer(from,to,value);
     }

    function transferWithLock(address _to, uint256 _value, uint256 _releaseTime) public onlyOwner returns (bool) {
        require(_to != address(0), "wrong address");
        require(_value <= super.balanceOf(owner), "Not enough balance");

        _balances[owner] = _balances[owner].sub(_value);
        lockInfo[_to].push(
            LockInfo(_releaseTime, _value)
        );
        emit Transfer(owner, _to, _value);
        emit Lock(_to, _value, _releaseTime);

        return true;
    }

    function transferWithLockAfter(address _to, uint256 _value, uint256 _afterTime) public onlyOwner returns (bool) {
        require(_to != address(0), "wrong address");
        require(_value <= super.balanceOf(owner), "Not enough balance");

        _balances[owner] = _balances[owner].sub(_value);
        lockInfo[_to].push(
            LockInfo(now + _afterTime, _value)
        );
        emit Transfer(owner, _to, _value);
        emit Lock(_to, _value, now + _afterTime);

        return true;
    }

    function currentTime() public view returns (uint256) {
        return now;
    }

    function afterTime(uint256 _value) public view returns (uint256) {
        return now + _value;
    }

    //airdrop
    mapping (address => uint256) public airDropHistory;
    event AirDrop(address _receiver, uint256 _amount);

    function airdropByOwner(address[] memory receivers, uint256[] memory values) public AllTransfersLockStatus onlyOwner {
    require(receivers.length != 0);
    require(receivers.length == values.length);

    for (uint256 i = 0; i < receivers.length; i++) {
      address receiver = receivers[i];
      uint256 amount = values[i];

      transfer(receiver, amount);
      airDropHistory[receiver] += amount;

      emit AirDrop(receiver, amount);
    }
  }
}
        

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":true},"libraries":{},"evmVersion":"petersburg","compilationTarget":{"Bone.sol":"Bone"}}
              

Contract ABI

[{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"afterTime","inputs":[{"type":"uint256","name":"_value"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":""}],"name":"name","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"approve","inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transferFrom","inputs":[{"type":"address","name":"_from"},{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint8","name":""}],"name":"decimals","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"initialSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"addedValue"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transferByOwner","inputs":[{"type":"address","name":"to"},{"type":"uint256","name":"value"},{"type":"uint8","name":"lockingTime"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"unpause","inputs":[],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"mint","inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_amount"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"unfreeze","inputs":[{"type":"address","name":"_target"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""},{"type":"uint256","name":""}],"name":"lockState","inputs":[{"type":"address","name":"_holder"},{"type":"uint256","name":"_idx"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"paused","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"setAllTransfersLockStatus","inputs":[{"type":"bool","name":"RunningStatusLock"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"balance"}],"name":"balanceOf","inputs":[{"type":"address","name":"_holder"}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"renounceOwnership","inputs":[],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"decreaseLockingTimeByAddress","inputs":[{"type":"address","name":"_affectiveAddress"},{"type":"uint256","name":"_decreasedTime"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"unlock","inputs":[{"type":"address","name":"_holder"},{"type":"uint256","name":"i"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"pause","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"checkLockingTimeByAddress","inputs":[{"type":"address","name":"_address"}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"lockAfter","inputs":[{"type":"address","name":"_holder"},{"type":"uint256","name":"_amount"},{"type":"uint256","name":"_afterTime"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"freeze","inputs":[{"type":"address","name":"_target"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"owner","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transferWithLockAfter","inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"},{"type":"uint256","name":"_afterTime"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"increaseLockingTimeByAddress","inputs":[{"type":"address","name":"_affectiveAddress"},{"type":"uint256","name":"_increasedTime"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":""}],"name":"symbol","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"getAllTransfersLockStatus","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"burn","inputs":[{"type":"address","name":"_who"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"_lockStatus","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"subtractedValue"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transfer","inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transferLockedTokens","inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"getLockingStatus","inputs":[{"type":"address","name":"userAddress"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"airDropHistory","inputs":[{"type":"address","name":""}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"currentTime","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"allowance","inputs":[{"type":"address","name":"owner"},{"type":"address","name":"spender"}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transferWithLock","inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"},{"type":"uint256","name":"_releaseTime"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"airdropByOwner","inputs":[{"type":"address[]","name":"receivers"},{"type":"uint256[]","name":"values"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"lockCount","inputs":[{"type":"address","name":"_holder"}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"lock","inputs":[{"type":"address","name":"_holder"},{"type":"uint256","name":"_amount"},{"type":"uint256","name":"_releaseTime"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"isFrozen","inputs":[{"type":"address","name":"_target"}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"_newOwner"}],"constant":false},{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[]},{"type":"event","name":"OwnershipRenounced","inputs":[{"type":"address","name":"previousOwner","indexed":true}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"anonymous":false},{"type":"event","name":"Pause","inputs":[],"anonymous":false},{"type":"event","name":"Unpause","inputs":[],"anonymous":false},{"type":"event","name":"Frozen","inputs":[{"type":"address","name":"target","indexed":false}],"anonymous":false},{"type":"event","name":"Unfrozen","inputs":[{"type":"address","name":"target","indexed":false}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"amount","indexed":false}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"type":"address","name":"burner","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Lock","inputs":[{"type":"address","name":"holder","indexed":true},{"type":"uint256","name":"value","indexed":false},{"type":"uint256","name":"releaseTime","indexed":false}],"anonymous":false},{"type":"event","name":"Unlock","inputs":[{"type":"address","name":"holder","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"AirDrop","inputs":[{"type":"address","name":"_receiver","indexed":false},{"type":"uint256","name":"_amount","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false}]
              

Contract Creation Code

Verify & Publish
0x60806040526003805460ff1916905560068054600160a01b60ff02191690553480156200002b57600080fd5b5062000050336b033b2e3c9fd0803ce800000062000068602090811b62002a8117901c565b600680546001600160a01b03191633179055620001ff565b6001600160a01b038216620000de57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620000fa816002546200018360201b620028b11790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200012d918390620028b162000183821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600082820183811015620001f857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b612f4c806200020f6000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80638a57af6b11610151578063c2fb97f8116100c3578063de6baccb11610087578063de6baccb146107c1578063defcf51f146107f3578063df0345861461091a578063e2ab691d14610940578063e583983614610972578063f2fde38b1461099857610269565b8063c2fb97f814610709578063cb9bd15a1461073f578063ccd28a4c14610765578063d18e81b31461078b578063dd62ed3e1461079357610269565b806395d89b411161011557806395d89b411461029d5780639b9843df146106755780639dc29fac1461067d578063a02619e4146106a9578063a457c2d7146106b1578063a9059cbb146106dd57610269565b80638a57af6b1461059b5780638d1fdf2f146105cd5780638da5cb5b146105f3578063927a4a7b1461061757806394a6b7121461064957610269565b806340c10f19116101ea57806370a08231116101ae57806370a08231146104e7578063715018a61461050d5780637338e39d146105155780637eee288d146105415780638456cb591461056d578063894f879e1461057557610269565b806340c10f191461042957806345c8b1a61461045557806346cf1bb51461047b5780635c975abb146104c05780636b180d69146104c857610269565b8063313ce56711610231578063313ce56714610398578063378dc3dc146103b657806339509351146103be5780633ec45d89146103ea5780633f4ba83a1461041f57610269565b806304859ceb1461026e57806306fdde031461029d578063095ea7b31461031a57806318160ddd1461035a57806323b872dd14610362575b600080fd5b61028b6004803603602081101561028457600080fd5b50356109be565b60408051918252519081900360200190f35b6102a56109c7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102df5781810151838201526020016102c7565b50505050905090810190601f16801561030c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103466004803603604081101561033057600080fd5b506001600160a01b0381351690602001356109ea565b604080519115158252519081900360200190f35b61028b610a00565b6103466004803603606081101561037857600080fd5b506001600160a01b03813581169160208101359091169060400135610a07565b6103a0610bc3565b6040805160ff9092168252519081900360200190f35b61028b610bc8565b610346600480360360408110156103d457600080fd5b506001600160a01b038135169060200135610bd8565b6103466004803603606081101561040057600080fd5b5080356001600160a01b0316906020810135906040013560ff16610c19565b610427610cd4565b005b6103466004803603604081101561043f57600080fd5b506001600160a01b038135169060200135610dc1565b6104276004803603602081101561046b57600080fd5b50356001600160a01b0316610e67565b6104a76004803603604081101561049157600080fd5b506001600160a01b038135169060200135610f10565b6040805192835260208301919091528051918290030190f35b610346610f89565b610346600480360360208110156104de57600080fd5b50351515610f99565b61028b600480360360208110156104fd57600080fd5b50356001600160a01b0316611004565b610427611097565b6103466004803603604081101561052b57600080fd5b506001600160a01b038135169060200135611132565b6104276004803603604081101561055757600080fd5b506001600160a01b038135169060200135611218565b6104276114c6565b61028b6004803603602081101561058b57600080fd5b50356001600160a01b03166115af565b610427600480360360608110156105b157600080fd5b506001600160a01b0381351690602081013590604001356115ca565b610427600480360360208110156105e357600080fd5b50356001600160a01b0316611729565b6105fb6117d5565b604080516001600160a01b039092168252519081900360200190f35b6103466004803603606081101561062d57600080fd5b506001600160a01b0381351690602081013590604001356117e4565b6103466004803603604081101561065f57600080fd5b506001600160a01b0381351690602001356119dd565b610346611ac2565b6104276004803603604081101561069357600080fd5b506001600160a01b038135169060200135611acb565b610346611c49565b610346600480360360408110156106c757600080fd5b506001600160a01b038135169060200135611c52565b610346600480360360408110156106f357600080fd5b506001600160a01b038135169060200135611c8e565b6103466004803603606081101561071f57600080fd5b506001600160a01b03813581169160208101359091169060400135611e34565b6103466004803603602081101561075557600080fd5b50356001600160a01b0316611fa7565b61028b6004803603602081101561077b57600080fd5b50356001600160a01b0316611fd7565b61028b611fe9565b61028b600480360360408110156107a957600080fd5b506001600160a01b0381358116916020013516611fed565b610346600480360360608110156107d757600080fd5b506001600160a01b038135169060208101359060400135612018565b6104276004803603604081101561080957600080fd5b81019060208101813564010000000081111561082457600080fd5b82018360208201111561083657600080fd5b8035906020019184602083028401116401000000008311171561085857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156108a857600080fd5b8201836020820111156108ba57600080fd5b803590602001918460208302840111640100000000831117156108dc57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061220e945050505050565b61028b6004803603602081101561093057600080fd5b50356001600160a01b0316612366565b6104276004803603606081101561095657600080fd5b506001600160a01b038135169060208101359060400135612381565b6103466004803603602081101561098857600080fd5b50356001600160a01b03166124d9565b610427600480360360208110156109ae57600080fd5b50356001600160a01b03166124f7565b4281015b919050565b604051806040016040528060048152602001600160e01b63426f6e650281525081565b60006109f7338484612554565b50600192915050565b6002545b90565b60035460009060ff1615610a4f57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b6001600160a01b03841660009081526004602052604090205484908390421015610add576001600160a01b038216600090815260056020908152604080832054918390529091205403811115610add5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b600654600160a01b900460ff1615610b345760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e2830bab9b2b210313c9037bbb732b902604482015290519081900360640190fd5b6001600160a01b03861660009081526007602052604090205460ff1615610ba55760408051600160e51b62461bcd02815260206004820152601760248201527f46726f6d206163636f756e74206973206c6f636b65642e000000000000000000604482015290519081900360640190fd5b610bae86612646565b610bb9868686612869565b9695505050505050565b601281565b6b033b2e3c9fd0803ce800000081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109f7918590610c14908663ffffffff6128b116565b612554565b60035460009060ff1615610c6157604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b6006546001600160a01b03163314610cb25760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b610cbd84838561290e565b50610cc933858561294b565b5060015b9392505050565b6006546001600160a01b03163314610d255760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b600654600160a01b900460ff16610d865760408051600160e51b62461bcd02815260206004820152600e60248201527f4e6f7420706175736564206e6f77000000000000000000000000000000000000604482015290519081900360640190fd5b60068054600160a01b60ff02191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b6006546000906001600160a01b03163314610e155760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b610e1f8383612a81565b6040805183815290516001600160a01b038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b6006546001600160a01b03163314610eb85760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b038116600081815260076020908152604091829020805460ff19169055815192835290517f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba9281900390910190a150565b6001600160a01b0382166000908152600860205260408120805482919084908110610f3757fe5b600091825260208083206002909202909101546001600160a01b038716835260089091526040909120805485908110610f6c57fe5b906000526020600020906002020160010154915091509250929050565b600654600160a01b900460ff1681565b6006546000906001600160a01b03163314610fed5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b506003805460ff1916911515919091179055600190565b600080805b6001600160a01b03841660009081526008602052604090205481101561107d576001600160a01b0384166000908152600860205260409020805461107391908390811061105257fe5b906000526020600020906002020160010154836128b190919063ffffffff16565b9150600101611009565b50610ccd8161108b85612b62565b9063ffffffff6128b116565b6006546001600160a01b031633146110e85760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6006546040516001600160a01b03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a2600680546001600160a01b0319169055565b6006546000906001600160a01b031633146111865760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6000821180156111ad57506001600160a01b03831660009081526004602052604090205442105b6111eb57604051600160e51b62461bcd02815260040180806020018281038252602e815260200180612dfc602e913960400191505060405180910390fd5b506001600160a01b0382166000908152600460205260409020805462015180830290039055600192915050565b6006546001600160a01b031633146112695760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b03821660009081526008602052604090205481106112d85760408051600160e51b62461bcd02815260206004820152601460248201527f4e6f206c6f636b20696e666f726d6174696f6e2e000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600860205260409020805461133a91908390811061130157fe5b60009182526020808320600160029093020191909101546001600160a01b0386168352908290526040909120549063ffffffff6128b116565b6001600160a01b03831660008181526020818152604080832094909455600890529190912080547f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f191908490811061138e57fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26001600160a01b03821660009081526008602052604081208054839081106113d957fe5b60009182526020808320600160029093020191909101929092556001600160a01b038416815260089091526040902054600019018114611498576001600160a01b03821660009081526008602052604090208054600019810190811061143b57fe5b906000526020600020906002020160086000846001600160a01b03166001600160a01b03168152602001908152602001600020828154811061147957fe5b6000918252602090912082546002909202019081556001918201549101555b6001600160a01b03821660009081526008602052604090208054906114c1906000198301612d6e565b505050565b6006546001600160a01b031633146115175760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b600654600160a01b900460ff161561156e5760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e2830bab9b2b210313c9037bbb732b902604482015290519081900360640190fd5b60068054600160a01b60ff021916600160a01b1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6001600160a01b031660009081526004602052604090205490565b6006546001600160a01b0316331461161b5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b8161162584612b62565b10156116765760408051600160e51b62461bcd0281526020600482015260156024820152600160591b742130b630b731b29034b9903a37b79039b6b0b6361702604482015290519081900360640190fd5b6001600160a01b03831660009081526020819052604090205461169f908363ffffffff612b7d16565b6001600160a01b03841660008181526020818152604080832094909455600881528382208451808601865242870180825281840189815283546001818101865594875295859020925160029096029092019485559051939091019290925583518681529081019190915282519192600080516020612eb883398151915292918290030190a2505050565b6006546001600160a01b0316331461177a5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b038116600081815260076020908152604091829020805460ff19166001179055815192835290517f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a49139281900390910190a150565b6006546001600160a01b031681565b6006546000906001600160a01b031633146118385760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b0384166118895760408051600160e51b62461bcd02815260206004820152600d6024820152600160981b6c77726f6e67206164647265737302604482015290519081900360640190fd5b60065461189e906001600160a01b0316612b62565b8311156118ed5760408051600160e51b62461bcd0281526020600482015260126024820152600160701b714e6f7420656e6f7567682062616c616e636502604482015290519081900360640190fd5b6006546001600160a01b0316600090815260208190526040902054611918908463ffffffff612b7d16565b600680546001600160a01b03908116600090815260208181526040808320959095558883168083526008825285832086518088018852428a0181528084018b81528254600181810185559387529585902091516002909602909101948555519301929092559254845188815294519194921692600080516020612e77833981519152928290030190a360408051848152428401602082015281516001600160a01b03871692600080516020612eb8833981519152928290030190a25060019392505050565b6006546000906001600160a01b03163314611a315760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b600082118015611a5857506001600160a01b03831660009081526004602052604090205442105b611a9657604051600160e51b62461bcd02815260040180806020018281038252602e815260200180612dfc602e913960400191505060405180910390fd5b506001600160a01b03821660009081526004602052604090208054620151808302019055600192915050565b60035460ff1690565b6006546001600160a01b03163314611b1c5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b336000818152600460205260409020548290421015611b9f576001600160a01b038216600090815260056020908152604080832054918390529091205403811115611b9f5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b611ba884612b62565b831115611bfa5760408051600160e51b62461bcd0281526020600482015260156024820152600160591b742130b630b731b29034b9903a37b79039b6b0b6361702604482015290519081900360640190fd5b611c048484612bdd565b6040805184815290516001600160a01b038616917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250505050565b60035460ff1681565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109f7918590610c14908663ffffffff612b7d16565b60035460009060ff1615611cd657604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b336000818152600460205260409020548390421015611d59576001600160a01b038216600090815260056020908152604080832054918390529091205403811115611d595760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b3360009081526007602052604090205460ff1615611dc15760408051600160e51b62461bcd02815260206004820152601960248201527f53656e646572206163636f756e74206973206c6f636b65642e00000000000000604482015290519081900360640190fd5b600654600160a01b900460ff1615611e185760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e2830bab9b2b210313c9037bbb732b902604482015290519081900360640190fd5b611e2133612646565b611e2b8585612ca7565b95945050505050565b6006546000906001600160a01b03163314611e885760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b0384166000908152600560205260409020548211801590611ec757506001600160a01b03841660009081526004602052604090205442105b611f095760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b6001600160a01b03841615801590611f2957506001600160a01b03831615155b611f7d5760408051600160e51b62461bcd02815260206004820152600f60248201527f496e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260056020526040902080548390039055610ccd84848461294b565b6001600160a01b038116600090815260046020526040812054421015611fcf575060016109c2565b5060006109c2565b60096020526000908152604090205481565b4290565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546000906001600160a01b0316331461206c5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b0384166120bd5760408051600160e51b62461bcd02815260206004820152600d6024820152600160981b6c77726f6e67206164647265737302604482015290519081900360640190fd5b6006546120d2906001600160a01b0316612b62565b8311156121215760408051600160e51b62461bcd0281526020600482015260126024820152600160701b714e6f7420656e6f7567682062616c616e636502604482015290519081900360640190fd5b6006546001600160a01b031660009081526020819052604090205461214c908463ffffffff612b7d16565b600680546001600160a01b039081166000908152602081815260408083209590955588831680835260088252858320865180880188528981528084018b81528254600181810185559387529585902091516002909602909101948555519301929092559254845188815294519194921692600080516020612e77833981519152928290030190a3604080518481526020810184905281516001600160a01b03871692600080516020612eb8833981519152928290030190a25060019392505050565b60035460ff161561225357604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b6006546001600160a01b031633146122a45760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b81516122af57600080fd5b80518251146122bd57600080fd5b60005b82518110156114c15760008382815181106122d757fe5b6020026020010151905060008383815181106122ef57fe5b602002602001015190506123038282611c8e565b506001600160a01b0382166000818152600960209081526040918290208054850190558151928352820183905280517f2a2f3a6f457f222229acc6b14376a5d3f4344fae935675150a096e2f1056bd989281900390910190a150506001016122c0565b6001600160a01b031660009081526008602052604090205490565b6006546001600160a01b031633146123d25760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b816123dc84612b62565b101561242d5760408051600160e51b62461bcd0281526020600482015260156024820152600160591b742130b630b731b29034b9903a37b79039b6b0b6361702604482015290519081900360640190fd5b6001600160a01b038316600090815260208190526040902054612456908363ffffffff612b7d16565b6001600160a01b038416600081815260208181526040808320949094556008815283822084518086018652868152808301888152825460018181018555938652948490209151600290950290910193845551920191909155825185815290810184905282519192600080516020612eb883398151915292918290030190a2505050565b6001600160a01b031660009081526007602052604090205460ff1690565b6006546001600160a01b031633146125485760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b61255181612cb4565b50565b6001600160a01b03831661259c57604051600160e51b62461bcd028152600401808060200182810382526024815260200180612efd6024913960400191505060405180910390fd5b6001600160a01b0382166125e457604051600160e51b62461bcd028152600401808060200182810382526022815260200180612dda6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60005b6001600160a01b038216600090815260086020526040902054811015612865576001600160a01b038216600090815260086020526040902080544291908390811061269057fe5b9060005260206000209060020201600001541161285d576001600160a01b038216600090815260086020526040902080546126d091908390811061130157fe5b6001600160a01b03831660008181526020818152604080832094909455600890529190912080547f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f191908490811061272457fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26001600160a01b038216600090815260086020526040812080548390811061276f57fe5b60009182526020808320600160029093020191909101929092556001600160a01b038416815260089091526040902054600019018114612832576001600160a01b0382166000908152600860205260409020805460001981019081106127d157fe5b906000526020600020906002020160086000846001600160a01b03166001600160a01b03168152602001908152602001600020828154811061280f57fe5b600091825260209091208254600290920201908155600191820154910155600019015b6001600160a01b038216600090815260086020526040902080549061285b906000198301612d6e565b505b600101612649565b5050565b600061287684848461294b565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610cc9918691610c14908663ffffffff612b7d16565b600082820183811015610ccd5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0392909216600090815260046020908152604080832060ff94909416620151800262ffffff164201909355600590522055600190565b6001600160a01b03831661299357604051600160e51b62461bcd028152600401808060200182810382526025815260200180612ed86025913960400191505060405180910390fd5b6001600160a01b0382166129db57604051600160e51b62461bcd028152600401808060200182810382526023815260200180612db76023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054612a04908263ffffffff612b7d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612a39908263ffffffff6128b116565b6001600160a01b03808416600081815260208181526040918290209490945580518581529051919392871692600080516020612e7783398151915292918290030190a3505050565b6001600160a01b038216612adf5760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254612af2908263ffffffff6128b116565b6002556001600160a01b038216600090815260208190526040902054612b1e908263ffffffff6128b116565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020612e778339815191529281900390910190a35050565b6001600160a01b031660009081526020819052604090205490565b600082821115612bd75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216612c2557604051600160e51b62461bcd028152600401808060200182810382526021815260200180612e976021913960400191505060405180910390fd5b600254612c38908263ffffffff612b7d16565b6002556001600160a01b038216600090815260208190526040902054612c64908263ffffffff612b7d16565b6001600160a01b03831660008181526020818152604080832094909455835185815293519193600080516020612e77833981519152929081900390910190a35050565b60006109f733848461294b565b6001600160a01b038116612d125760408051600160e51b62461bcd02815260206004820152600d60248201527f416c7265616479206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b8154818355818111156114c1576000838152602090206114c191610a049160029182028101918502015b80821115612db25760008082556001820155600201612d98565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373506c6561736520636865636b206164647265737320737461747573206f7220496e636f727265637420696e707574416c6c207472616e73616374696f6e7320617265206c6f636b656420666f72207468697320636f6e7472616374496e73756666696369656e7420756e6c6f636b65642062616c616e6365000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737349eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058205a8a4e178444ca57894ebd5f881622e62e13e09ca7613573ea91783d6d3ebfc60029

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106102695760003560e01c80638a57af6b11610151578063c2fb97f8116100c3578063de6baccb11610087578063de6baccb146107c1578063defcf51f146107f3578063df0345861461091a578063e2ab691d14610940578063e583983614610972578063f2fde38b1461099857610269565b8063c2fb97f814610709578063cb9bd15a1461073f578063ccd28a4c14610765578063d18e81b31461078b578063dd62ed3e1461079357610269565b806395d89b411161011557806395d89b411461029d5780639b9843df146106755780639dc29fac1461067d578063a02619e4146106a9578063a457c2d7146106b1578063a9059cbb146106dd57610269565b80638a57af6b1461059b5780638d1fdf2f146105cd5780638da5cb5b146105f3578063927a4a7b1461061757806394a6b7121461064957610269565b806340c10f19116101ea57806370a08231116101ae57806370a08231146104e7578063715018a61461050d5780637338e39d146105155780637eee288d146105415780638456cb591461056d578063894f879e1461057557610269565b806340c10f191461042957806345c8b1a61461045557806346cf1bb51461047b5780635c975abb146104c05780636b180d69146104c857610269565b8063313ce56711610231578063313ce56714610398578063378dc3dc146103b657806339509351146103be5780633ec45d89146103ea5780633f4ba83a1461041f57610269565b806304859ceb1461026e57806306fdde031461029d578063095ea7b31461031a57806318160ddd1461035a57806323b872dd14610362575b600080fd5b61028b6004803603602081101561028457600080fd5b50356109be565b60408051918252519081900360200190f35b6102a56109c7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102df5781810151838201526020016102c7565b50505050905090810190601f16801561030c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103466004803603604081101561033057600080fd5b506001600160a01b0381351690602001356109ea565b604080519115158252519081900360200190f35b61028b610a00565b6103466004803603606081101561037857600080fd5b506001600160a01b03813581169160208101359091169060400135610a07565b6103a0610bc3565b6040805160ff9092168252519081900360200190f35b61028b610bc8565b610346600480360360408110156103d457600080fd5b506001600160a01b038135169060200135610bd8565b6103466004803603606081101561040057600080fd5b5080356001600160a01b0316906020810135906040013560ff16610c19565b610427610cd4565b005b6103466004803603604081101561043f57600080fd5b506001600160a01b038135169060200135610dc1565b6104276004803603602081101561046b57600080fd5b50356001600160a01b0316610e67565b6104a76004803603604081101561049157600080fd5b506001600160a01b038135169060200135610f10565b6040805192835260208301919091528051918290030190f35b610346610f89565b610346600480360360208110156104de57600080fd5b50351515610f99565b61028b600480360360208110156104fd57600080fd5b50356001600160a01b0316611004565b610427611097565b6103466004803603604081101561052b57600080fd5b506001600160a01b038135169060200135611132565b6104276004803603604081101561055757600080fd5b506001600160a01b038135169060200135611218565b6104276114c6565b61028b6004803603602081101561058b57600080fd5b50356001600160a01b03166115af565b610427600480360360608110156105b157600080fd5b506001600160a01b0381351690602081013590604001356115ca565b610427600480360360208110156105e357600080fd5b50356001600160a01b0316611729565b6105fb6117d5565b604080516001600160a01b039092168252519081900360200190f35b6103466004803603606081101561062d57600080fd5b506001600160a01b0381351690602081013590604001356117e4565b6103466004803603604081101561065f57600080fd5b506001600160a01b0381351690602001356119dd565b610346611ac2565b6104276004803603604081101561069357600080fd5b506001600160a01b038135169060200135611acb565b610346611c49565b610346600480360360408110156106c757600080fd5b506001600160a01b038135169060200135611c52565b610346600480360360408110156106f357600080fd5b506001600160a01b038135169060200135611c8e565b6103466004803603606081101561071f57600080fd5b506001600160a01b03813581169160208101359091169060400135611e34565b6103466004803603602081101561075557600080fd5b50356001600160a01b0316611fa7565b61028b6004803603602081101561077b57600080fd5b50356001600160a01b0316611fd7565b61028b611fe9565b61028b600480360360408110156107a957600080fd5b506001600160a01b0381358116916020013516611fed565b610346600480360360608110156107d757600080fd5b506001600160a01b038135169060208101359060400135612018565b6104276004803603604081101561080957600080fd5b81019060208101813564010000000081111561082457600080fd5b82018360208201111561083657600080fd5b8035906020019184602083028401116401000000008311171561085857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156108a857600080fd5b8201836020820111156108ba57600080fd5b803590602001918460208302840111640100000000831117156108dc57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061220e945050505050565b61028b6004803603602081101561093057600080fd5b50356001600160a01b0316612366565b6104276004803603606081101561095657600080fd5b506001600160a01b038135169060208101359060400135612381565b6103466004803603602081101561098857600080fd5b50356001600160a01b03166124d9565b610427600480360360208110156109ae57600080fd5b50356001600160a01b03166124f7565b4281015b919050565b604051806040016040528060048152602001600160e01b63426f6e650281525081565b60006109f7338484612554565b50600192915050565b6002545b90565b60035460009060ff1615610a4f57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b6001600160a01b03841660009081526004602052604090205484908390421015610add576001600160a01b038216600090815260056020908152604080832054918390529091205403811115610add5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b600654600160a01b900460ff1615610b345760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e2830bab9b2b210313c9037bbb732b902604482015290519081900360640190fd5b6001600160a01b03861660009081526007602052604090205460ff1615610ba55760408051600160e51b62461bcd02815260206004820152601760248201527f46726f6d206163636f756e74206973206c6f636b65642e000000000000000000604482015290519081900360640190fd5b610bae86612646565b610bb9868686612869565b9695505050505050565b601281565b6b033b2e3c9fd0803ce800000081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109f7918590610c14908663ffffffff6128b116565b612554565b60035460009060ff1615610c6157604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b6006546001600160a01b03163314610cb25760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b610cbd84838561290e565b50610cc933858561294b565b5060015b9392505050565b6006546001600160a01b03163314610d255760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b600654600160a01b900460ff16610d865760408051600160e51b62461bcd02815260206004820152600e60248201527f4e6f7420706175736564206e6f77000000000000000000000000000000000000604482015290519081900360640190fd5b60068054600160a01b60ff02191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b6006546000906001600160a01b03163314610e155760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b610e1f8383612a81565b6040805183815290516001600160a01b038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b6006546001600160a01b03163314610eb85760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b038116600081815260076020908152604091829020805460ff19169055815192835290517f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba9281900390910190a150565b6001600160a01b0382166000908152600860205260408120805482919084908110610f3757fe5b600091825260208083206002909202909101546001600160a01b038716835260089091526040909120805485908110610f6c57fe5b906000526020600020906002020160010154915091509250929050565b600654600160a01b900460ff1681565b6006546000906001600160a01b03163314610fed5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b506003805460ff1916911515919091179055600190565b600080805b6001600160a01b03841660009081526008602052604090205481101561107d576001600160a01b0384166000908152600860205260409020805461107391908390811061105257fe5b906000526020600020906002020160010154836128b190919063ffffffff16565b9150600101611009565b50610ccd8161108b85612b62565b9063ffffffff6128b116565b6006546001600160a01b031633146110e85760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6006546040516001600160a01b03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a2600680546001600160a01b0319169055565b6006546000906001600160a01b031633146111865760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6000821180156111ad57506001600160a01b03831660009081526004602052604090205442105b6111eb57604051600160e51b62461bcd02815260040180806020018281038252602e815260200180612dfc602e913960400191505060405180910390fd5b506001600160a01b0382166000908152600460205260409020805462015180830290039055600192915050565b6006546001600160a01b031633146112695760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b03821660009081526008602052604090205481106112d85760408051600160e51b62461bcd02815260206004820152601460248201527f4e6f206c6f636b20696e666f726d6174696f6e2e000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600860205260409020805461133a91908390811061130157fe5b60009182526020808320600160029093020191909101546001600160a01b0386168352908290526040909120549063ffffffff6128b116565b6001600160a01b03831660008181526020818152604080832094909455600890529190912080547f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f191908490811061138e57fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26001600160a01b03821660009081526008602052604081208054839081106113d957fe5b60009182526020808320600160029093020191909101929092556001600160a01b038416815260089091526040902054600019018114611498576001600160a01b03821660009081526008602052604090208054600019810190811061143b57fe5b906000526020600020906002020160086000846001600160a01b03166001600160a01b03168152602001908152602001600020828154811061147957fe5b6000918252602090912082546002909202019081556001918201549101555b6001600160a01b03821660009081526008602052604090208054906114c1906000198301612d6e565b505050565b6006546001600160a01b031633146115175760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b600654600160a01b900460ff161561156e5760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e2830bab9b2b210313c9037bbb732b902604482015290519081900360640190fd5b60068054600160a01b60ff021916600160a01b1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6001600160a01b031660009081526004602052604090205490565b6006546001600160a01b0316331461161b5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b8161162584612b62565b10156116765760408051600160e51b62461bcd0281526020600482015260156024820152600160591b742130b630b731b29034b9903a37b79039b6b0b6361702604482015290519081900360640190fd5b6001600160a01b03831660009081526020819052604090205461169f908363ffffffff612b7d16565b6001600160a01b03841660008181526020818152604080832094909455600881528382208451808601865242870180825281840189815283546001818101865594875295859020925160029096029092019485559051939091019290925583518681529081019190915282519192600080516020612eb883398151915292918290030190a2505050565b6006546001600160a01b0316331461177a5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b038116600081815260076020908152604091829020805460ff19166001179055815192835290517f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a49139281900390910190a150565b6006546001600160a01b031681565b6006546000906001600160a01b031633146118385760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b0384166118895760408051600160e51b62461bcd02815260206004820152600d6024820152600160981b6c77726f6e67206164647265737302604482015290519081900360640190fd5b60065461189e906001600160a01b0316612b62565b8311156118ed5760408051600160e51b62461bcd0281526020600482015260126024820152600160701b714e6f7420656e6f7567682062616c616e636502604482015290519081900360640190fd5b6006546001600160a01b0316600090815260208190526040902054611918908463ffffffff612b7d16565b600680546001600160a01b03908116600090815260208181526040808320959095558883168083526008825285832086518088018852428a0181528084018b81528254600181810185559387529585902091516002909602909101948555519301929092559254845188815294519194921692600080516020612e77833981519152928290030190a360408051848152428401602082015281516001600160a01b03871692600080516020612eb8833981519152928290030190a25060019392505050565b6006546000906001600160a01b03163314611a315760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b600082118015611a5857506001600160a01b03831660009081526004602052604090205442105b611a9657604051600160e51b62461bcd02815260040180806020018281038252602e815260200180612dfc602e913960400191505060405180910390fd5b506001600160a01b03821660009081526004602052604090208054620151808302019055600192915050565b60035460ff1690565b6006546001600160a01b03163314611b1c5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b336000818152600460205260409020548290421015611b9f576001600160a01b038216600090815260056020908152604080832054918390529091205403811115611b9f5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b611ba884612b62565b831115611bfa5760408051600160e51b62461bcd0281526020600482015260156024820152600160591b742130b630b731b29034b9903a37b79039b6b0b6361702604482015290519081900360640190fd5b611c048484612bdd565b6040805184815290516001600160a01b038616917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250505050565b60035460ff1681565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109f7918590610c14908663ffffffff612b7d16565b60035460009060ff1615611cd657604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b336000818152600460205260409020548390421015611d59576001600160a01b038216600090815260056020908152604080832054918390529091205403811115611d595760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b3360009081526007602052604090205460ff1615611dc15760408051600160e51b62461bcd02815260206004820152601960248201527f53656e646572206163636f756e74206973206c6f636b65642e00000000000000604482015290519081900360640190fd5b600654600160a01b900460ff1615611e185760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e2830bab9b2b210313c9037bbb732b902604482015290519081900360640190fd5b611e2133612646565b611e2b8585612ca7565b95945050505050565b6006546000906001600160a01b03163314611e885760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b0384166000908152600560205260409020548211801590611ec757506001600160a01b03841660009081526004602052604090205442105b611f095760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b6001600160a01b03841615801590611f2957506001600160a01b03831615155b611f7d5760408051600160e51b62461bcd02815260206004820152600f60248201527f496e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260056020526040902080548390039055610ccd84848461294b565b6001600160a01b038116600090815260046020526040812054421015611fcf575060016109c2565b5060006109c2565b60096020526000908152604090205481565b4290565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546000906001600160a01b0316331461206c5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b0384166120bd5760408051600160e51b62461bcd02815260206004820152600d6024820152600160981b6c77726f6e67206164647265737302604482015290519081900360640190fd5b6006546120d2906001600160a01b0316612b62565b8311156121215760408051600160e51b62461bcd0281526020600482015260126024820152600160701b714e6f7420656e6f7567682062616c616e636502604482015290519081900360640190fd5b6006546001600160a01b031660009081526020819052604090205461214c908463ffffffff612b7d16565b600680546001600160a01b039081166000908152602081815260408083209590955588831680835260088252858320865180880188528981528084018b81528254600181810185559387529585902091516002909602909101948555519301929092559254845188815294519194921692600080516020612e77833981519152928290030190a3604080518481526020810184905281516001600160a01b03871692600080516020612eb8833981519152928290030190a25060019392505050565b60035460ff161561225357604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b6006546001600160a01b031633146122a45760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b81516122af57600080fd5b80518251146122bd57600080fd5b60005b82518110156114c15760008382815181106122d757fe5b6020026020010151905060008383815181106122ef57fe5b602002602001015190506123038282611c8e565b506001600160a01b0382166000818152600960209081526040918290208054850190558151928352820183905280517f2a2f3a6f457f222229acc6b14376a5d3f4344fae935675150a096e2f1056bd989281900390910190a150506001016122c0565b6001600160a01b031660009081526008602052604090205490565b6006546001600160a01b031633146123d25760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b816123dc84612b62565b101561242d5760408051600160e51b62461bcd0281526020600482015260156024820152600160591b742130b630b731b29034b9903a37b79039b6b0b6361702604482015290519081900360640190fd5b6001600160a01b038316600090815260208190526040902054612456908363ffffffff612b7d16565b6001600160a01b038416600081815260208181526040808320949094556008815283822084518086018652868152808301888152825460018181018555938652948490209151600290950290910193845551920191909155825185815290810184905282519192600080516020612eb883398151915292918290030190a2505050565b6001600160a01b031660009081526007602052604090205460ff1690565b6006546001600160a01b031633146125485760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b61255181612cb4565b50565b6001600160a01b03831661259c57604051600160e51b62461bcd028152600401808060200182810382526024815260200180612efd6024913960400191505060405180910390fd5b6001600160a01b0382166125e457604051600160e51b62461bcd028152600401808060200182810382526022815260200180612dda6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60005b6001600160a01b038216600090815260086020526040902054811015612865576001600160a01b038216600090815260086020526040902080544291908390811061269057fe5b9060005260206000209060020201600001541161285d576001600160a01b038216600090815260086020526040902080546126d091908390811061130157fe5b6001600160a01b03831660008181526020818152604080832094909455600890529190912080547f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f191908490811061272457fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26001600160a01b038216600090815260086020526040812080548390811061276f57fe5b60009182526020808320600160029093020191909101929092556001600160a01b038416815260089091526040902054600019018114612832576001600160a01b0382166000908152600860205260409020805460001981019081106127d157fe5b906000526020600020906002020160086000846001600160a01b03166001600160a01b03168152602001908152602001600020828154811061280f57fe5b600091825260209091208254600290920201908155600191820154910155600019015b6001600160a01b038216600090815260086020526040902080549061285b906000198301612d6e565b505b600101612649565b5050565b600061287684848461294b565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610cc9918691610c14908663ffffffff612b7d16565b600082820183811015610ccd5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0392909216600090815260046020908152604080832060ff94909416620151800262ffffff164201909355600590522055600190565b6001600160a01b03831661299357604051600160e51b62461bcd028152600401808060200182810382526025815260200180612ed86025913960400191505060405180910390fd5b6001600160a01b0382166129db57604051600160e51b62461bcd028152600401808060200182810382526023815260200180612db76023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054612a04908263ffffffff612b7d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612a39908263ffffffff6128b116565b6001600160a01b03808416600081815260208181526040918290209490945580518581529051919392871692600080516020612e7783398151915292918290030190a3505050565b6001600160a01b038216612adf5760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254612af2908263ffffffff6128b116565b6002556001600160a01b038216600090815260208190526040902054612b1e908263ffffffff6128b116565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020612e778339815191529281900390910190a35050565b6001600160a01b031660009081526020819052604090205490565b600082821115612bd75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216612c2557604051600160e51b62461bcd028152600401808060200182810382526021815260200180612e976021913960400191505060405180910390fd5b600254612c38908263ffffffff612b7d16565b6002556001600160a01b038216600090815260208190526040902054612c64908263ffffffff612b7d16565b6001600160a01b03831660008181526020818152604080832094909455835185815293519193600080516020612e77833981519152929081900390910190a35050565b60006109f733848461294b565b6001600160a01b038116612d125760408051600160e51b62461bcd02815260206004820152600d60248201527f416c7265616479206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b8154818355818111156114c1576000838152602090206114c191610a049160029182028101918502015b80821115612db25760008082556001820155600201612d98565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373506c6561736520636865636b206164647265737320737461747573206f7220496e636f727265637420696e707574416c6c207472616e73616374696f6e7320617265206c6f636b656420666f72207468697320636f6e7472616374496e73756666696369656e7420756e6c6f636b65642062616c616e6365000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737349eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058205a8a4e178444ca57894ebd5f881622e62e13e09ca7613573ea91783d6d3ebfc60029