ETH Price: $2,360.49 (+0.83%)

Token

CHREMACOIN (CRMC)
 

Overview

Max Total Supply

50,000,000 CRMC

Holders

2,053 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
0.1 CRMC

Value
$0.00
0xfb6d68cb86aeaef3f29386d57e274b82c7002fc2
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Chrema is the integration of Real World Assets (RWA) with NFT Staking and NFT Finance, creating a bridge between tangible assets and the digital economy.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CHREMACOIN

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-04
*/

pragma solidity ^0.4.24;

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * See https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;


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


    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() public {
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @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 {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

    /**
     * @dev Allows the current owner to relinquish control of the contract.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(owner);
        owner = address(0);
    }
}

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);
        return c;
    }
}



/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
    using SafeMath for uint256;

    mapping(address => uint256) balances;

    uint256 totalSupply_;

    /**
    * @dev Total number of tokens in existence
    */
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    /**
    * @dev Transfer token for a specified address
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    */
    function transfer(address _to, uint256 _value) public returns (bool) {
        return _transfer(msg.sender, _to, _value);
    }

    function _transfer(address _from, address _to, uint256 _value ) internal returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(_from, _to, _value);
        return true;
    } 

    /**
    * @dev Gets the balance of the specified address.
    * @param _owner The address to query the the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }

}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender)
    public view returns (uint256);

    function transferFrom(address from, address to, uint256 value)
    public returns (bool);

    function approve(address spender, uint256 value) public returns (bool);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}


/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://github.com/ethereum/EIPs/issues/20
 * Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

    mapping (address => mapping (address => uint256)) internal allowed;


    /**
     * @dev Transfer tokens from one address to another
     * @param _from address The address which you want to send tokens from
     * @param _to address The address which you want to transfer to
     * @param _value uint256 the amount of tokens to be transferred
     */
    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    )
    public
    returns (bool)
    {
        require(_value <= allowed[_from][msg.sender]);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        return _transfer(_from, _to, _value);
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * 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
     * @param _spender The address which will spend the funds.
     * @param _value The amount of tokens to be spent.
     */
    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param _owner address The address which owns the funds.
     * @param _spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(
        address _owner,
        address _spender
    )
    public
    view
    returns (uint256)
    {
        return allowed[_owner][_spender];
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed[_spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * @param _spender The address which will spend the funds.
     * @param _addedValue The amount of tokens to increase the allowance by.
     */
    function increaseApproval(
        address _spender,
        uint256 _addedValue
    )
    public
    returns (bool)
    {
        allowed[msg.sender][_spender] = (
        allowed[msg.sender][_spender].add(_addedValue));
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed[_spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * @param _spender The address which will spend the funds.
     * @param _subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseApproval(
        address _spender,
        uint256 _subtractedValue
    )
    public
    returns (bool)
    {
        uint256 oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

}

/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */

contract BurnableToken is BasicToken {

    event Burn(address indexed burner, uint256 value);

    /**
     * @dev Burns a specific amount of tokens.
     * @param _value The amount of token to be burned.
     */
    function burn(uint256 _value) public {
        _burn(msg.sender, _value);
    }

    function _burn(address _who, uint256 _value) internal {
        require(_value <= balances[_who]);
        // no need to require value <= totalSupply, since that would imply the
        // sender's balance is greater than the totalSupply, which *should* be an assertion failure

        balances[_who] = balances[_who].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        emit Burn(_who, _value);
        emit Transfer(_who, address(0), _value);
    }
}

/**
 * @title Standard Burnable Token
 * @dev Adds burnFrom method to ERC20 implementations
 */

contract StandardBurnableToken is BurnableToken, StandardToken {

    /**
     * @dev Burns a specific amount of tokens from the target address and decrements allowance
     * @param _from address The address which you want to send tokens from
     * @param _value uint256 The amount of token to be burned
     */
    function burnFrom(address _from, uint256 _value) public {
        require(_value <= allowed[_from][msg.sender]);
        // Should https://github.com/OpenZeppelin/zeppelin-solidity/issues/707 be accepted,
        // this function needs to emit an event with the updated approval.
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        _burn(_from, _value);
    }
}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
    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);
        _;
    }

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

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

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

/**
 * @title Pausable token
 * @dev StandardToken modified with pausable transfers.
 **/
contract PausableToken is StandardToken, Pausable {

    function transfer(
        address _to,
        uint256 _value
    )
    public
    whenNotPaused
    returns (bool)
    {
        return super.transfer(_to, _value);
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    )
    public
    whenNotPaused
    returns (bool)
    {
        return super.transferFrom(_from, _to, _value);
    }

    function approve(
        address _spender,
        uint256 _value
    )
    public
    whenNotPaused
    returns (bool)
    {
        return super.approve(_spender, _value);
    }

    function increaseApproval(
        address _spender,
        uint _addedValue
    )
    public
    whenNotPaused
    returns (bool success)
    {
        return super.increaseApproval(_spender, _addedValue);
    }

    function decreaseApproval(
        address _spender,
        uint _subtractedValue
    )
    public
    whenNotPaused
    returns (bool success)
    {
        return super.decreaseApproval(_spender, _subtractedValue);
    }
}

/**
 * @title CHREMACOIN token
 **/
contract CHREMACOIN is StandardBurnableToken, PausableToken {
    using SafeMath for uint256;
    string public constant name = "CHREMACOIN";
    string public constant symbol = "CRMC";
    uint8 public constant decimals = 8;
    uint256 public constant INITIAL_SUPPLY = 5000000000000000;

    struct lockedUserInfo{
        address lockedUserAddress;
        uint firstUnlockTime;
        uint secondUnlockTime;
        uint thirdUnlockTime;
        uint256 firstUnlockValue;
        uint256 secondUnlockValue;
        uint256 thirdUnlockValue;
    }

    mapping(address => lockedUserInfo) private lockedUserEntity;
    mapping(address => bool) private supervisorEntity;
    mapping(address => bool) private lockedWalletEntity;

    modifier onlySupervisor() {
        require(owner == msg.sender || supervisorEntity[msg.sender]);
        _;
    }

    event Unlock(
        address indexed lockedUser,
        uint lockPeriod,
        uint256 firstUnlockValue,
        uint256 secondUnlockValue,
        uint256 thirdUnlockValue
    );

    event PrintLog(
        address indexed sender,
        string _logName,
        uint256 _value
    );

    constructor() public {
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;
        emit Transfer(0x0, msg.sender, INITIAL_SUPPLY);
    }

    function _transfer(address _from, address _to, uint256 _value ) internal returns (bool) {
        require(!isLockedWalletEntity(_from), "this wallet is locked");
      
        uint256 availableValue = getAvailableWithdrawableCount(_from, _value);
        emit PrintLog(_to, "availableResultValue", availableValue);
        require(availableValue > 0);

        return super._transfer(_from, _to, _value);
    } 


    function transfer( address _to, uint256 _value ) public whenNotPaused returns (bool) {
        require(msg.sender != _to,"Check your address!!");
        return super.transfer(_to, _value);
    }

    
    function transferFrom(address _from, address _to, uint256 _value ) public whenNotPaused returns (bool) {
        return super.transferFrom(_from, _to, _value);
    }


    function burn(uint256 _value) onlySupervisor public {
        super._burn(msg.sender, _value);
    }

    function transferToLockedBalance(
        address _to,
        uint _firstUnlockTime,
        uint256 _firstUnlockValue,
        uint _secondUnlockTime,
        uint256 _secondUnlockValue,
        uint _thirdUnlockTime,
        uint256 _thirdUnlockValue
    ) onlySupervisor whenNotPaused public returns (bool) {
        require(msg.sender != _to,"Check your address!!");
        require(_firstUnlockTime > now && _firstUnlockValue > 0, "Check your First input values!!;");

        uint256 totalLockSendCount = totalLockSendCount.add(_firstUnlockValue);

        if(_secondUnlockTime > now && _secondUnlockValue > 0){
            require(_secondUnlockTime > _firstUnlockTime, "Second Unlock time must be greater than First Unlock Time!!");

            totalLockSendCount = totalLockSendCount.add(_secondUnlockValue);
        }

        if(_thirdUnlockTime > now && _thirdUnlockValue > 0){
            require(_thirdUnlockTime > _secondUnlockTime && _secondUnlockTime > now &&  _secondUnlockValue > 0,
                "Check your third Unlock Time or Second input values!!");
            totalLockSendCount = totalLockSendCount.add(_thirdUnlockValue);
        }

        if (transfer(_to, totalLockSendCount)) {
            lockedUserEntity[_to].lockedUserAddress = _to;
            lockedUserEntity[_to].firstUnlockTime = _firstUnlockTime;
            lockedUserEntity[_to].firstUnlockValue = _firstUnlockValue;

            if(_secondUnlockTime > now && _secondUnlockValue > 0){
                lockedUserEntity[_to].secondUnlockTime = _secondUnlockTime;
                lockedUserEntity[_to].secondUnlockValue = _secondUnlockValue;
            }

            if(_thirdUnlockTime > now && _thirdUnlockValue > 0){
                lockedUserEntity[_to].thirdUnlockTime  = _thirdUnlockTime;
                lockedUserEntity[_to].thirdUnlockValue = _thirdUnlockValue;
            }

            return true;
        }
    }

    function setLockTime(address _to, uint _time, uint256 _lockTime) onlySupervisor public returns(bool){
        require(_to !=address(0) && _time > 0 && _time < 4 && _lockTime > now);

        (   uint firstUnlockTime,
        uint secondUnlockTime,
        uint thirdUnlockTime
        ) = getLockedTimeUserInfo(_to);

        if(_time == 1 && firstUnlockTime !=0){
            if(secondUnlockTime ==0 || _lockTime < secondUnlockTime){
                lockedUserEntity[_to].firstUnlockTime = _lockTime;
                return true;
            }
        }else if(_time == 2 && secondUnlockTime !=0){
            if(_lockTime > firstUnlockTime && (thirdUnlockTime ==0 || _lockTime < thirdUnlockTime)){
                lockedUserEntity[_to].secondUnlockTime = _lockTime;
                return true;
            }
        }else if(_time == 3 && thirdUnlockTime !=0 && _lockTime > secondUnlockTime){
            lockedUserEntity[_to].thirdUnlockTime = _lockTime;
            return true;
        }
        return false;
    }

    function getLockedUserInfo(address _address) view public returns (uint,uint256,uint,uint256,uint,uint256){
        require(msg.sender == _address || msg.sender == owner || supervisorEntity[msg.sender]);
        return _getLockedUserInfo(_address);
    }

    function _getLockedUserInfo(address _address) view internal returns (uint,uint256,uint,uint256,uint,uint256){        
        return (
        lockedUserEntity[_address].firstUnlockTime,
        lockedUserEntity[_address].firstUnlockValue,
        lockedUserEntity[_address].secondUnlockTime,
        lockedUserEntity[_address].secondUnlockValue,
        lockedUserEntity[_address].thirdUnlockTime,
        lockedUserEntity[_address].thirdUnlockValue
        );
    }

    function setSupervisor(address _address) onlyOwner public returns (bool){
        require(_address !=address(0) && !supervisorEntity[_address]);
        supervisorEntity[_address] = true;
        emit PrintLog(_address, "isSupervisor",  1);
        return true;
    }

    function removeSupervisor(address _address) onlyOwner public returns (bool){
        require(_address !=address(0) && supervisorEntity[_address]);
        delete supervisorEntity[_address];
        emit PrintLog(_address, "isSupervisor",  0);
        return true;
    }

    function setLockedWalletEntity(address _address) onlySupervisor public returns (bool){
        require(_address !=address(0) && !lockedWalletEntity[_address]);
        lockedWalletEntity[_address] = true;
        emit PrintLog(_address, "isLockedWalletEntity",  1);
        return true;
    }

    function removeLockedWalletEntity(address _address) onlySupervisor public returns (bool){
        require(_address !=address(0) && lockedWalletEntity[_address]);
        delete lockedWalletEntity[_address];
        emit PrintLog(_address, "isLockedWalletEntity",  0);
        return true;
    }

    function getLockedTimeUserInfo(address _address) view private returns (uint,uint,uint){
        require(msg.sender == _address || msg.sender == owner || supervisorEntity[msg.sender]);
        return (
        lockedUserEntity[_address].firstUnlockTime,
        lockedUserEntity[_address].secondUnlockTime,
        lockedUserEntity[_address].thirdUnlockTime
        );
    }

    function isSupervisor() view onlyOwner private returns (bool){
        return supervisorEntity[msg.sender];
    }

    function isLockedWalletEntity(address _from) view private returns (bool){
        return lockedWalletEntity[_from];
    }

    function getAvailableWithdrawableCount( address _from , uint256 _sendOrgValue) private returns (uint256) {
        uint256 availableValue = 0;

        if(lockedUserEntity[_from].lockedUserAddress == address(0)){
            availableValue = _sendOrgValue;
        }else{
            (
            uint firstUnlockTime, uint256 firstUnlockValue,
            uint secondUnlockTime, uint256 secondUnlockValue,
            uint thirdUnlockTime, uint256 thirdUnlockValue
            ) = _getLockedUserInfo(_from);

            if(now < firstUnlockTime) {
                availableValue = balances[_from].sub(firstUnlockValue.add(secondUnlockValue).add(thirdUnlockValue));
                if(_sendOrgValue > availableValue){
                    availableValue = 0;
                }else{
                    availableValue = _sendOrgValue;
                }
            }else if(firstUnlockTime <= now && secondUnlockTime ==0){
                availableValue = balances[_from];
                if(_sendOrgValue > availableValue){
                    availableValue = 0;
                }else{
                    availableValue = _sendOrgValue;
                    delete lockedUserEntity[_from];
                    emit Unlock(_from, 1, firstUnlockValue, secondUnlockValue, thirdUnlockValue);
                }
            }else if(firstUnlockTime <= now && secondUnlockTime !=0 && now < secondUnlockTime){
                availableValue = balances[_from].sub(secondUnlockValue.add(thirdUnlockValue));
                if(_sendOrgValue > availableValue){
                    availableValue = 0;
                }else{
                    availableValue = _sendOrgValue;
                    lockedUserEntity[_from].firstUnlockValue = 0;
                    emit Unlock(_from, 1, firstUnlockValue, secondUnlockValue, thirdUnlockValue);
                }
            }else if(secondUnlockTime !=0 && secondUnlockTime <= now && thirdUnlockTime ==0){
                availableValue = balances[_from];
                if(_sendOrgValue > availableValue){
                    availableValue = 0;
                }else{
                    availableValue =_sendOrgValue;
                    delete lockedUserEntity[_from];
                    emit Unlock(_from, 2, firstUnlockValue, secondUnlockValue, thirdUnlockValue);
                }
            }else if(secondUnlockTime !=0 && secondUnlockTime <= now && thirdUnlockTime !=0 && now < thirdUnlockTime){
                availableValue = balances[_from].sub(thirdUnlockValue);
                if(_sendOrgValue > availableValue){
                    availableValue = 0;
                }else{
                    availableValue = _sendOrgValue;
                    lockedUserEntity[_from].firstUnlockValue = 0;
                    lockedUserEntity[_from].secondUnlockValue = 0;
                    emit Unlock(_from, 2, firstUnlockValue, secondUnlockValue, thirdUnlockValue);
                }
            }else if(thirdUnlockTime !=0 && thirdUnlockTime <= now){
                availableValue = balances[_from];
                if(_sendOrgValue > availableValue){
                    availableValue = 0;
                }else if(_sendOrgValue <= availableValue){
                    availableValue = _sendOrgValue;
                    delete lockedUserEntity[_from];
                    emit Unlock(_from, 3, firstUnlockValue, secondUnlockValue, thirdUnlockValue);
                }
            }
        }
        return availableValue;
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"removeSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"getLockedUserInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_time","type":"uint256"},{"name":"_lockTime","type":"uint256"}],"name":"setLockTime","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"removeLockedWalletEntity","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setLockedWalletEntity","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_firstUnlockTime","type":"uint256"},{"name":"_firstUnlockValue","type":"uint256"},{"name":"_secondUnlockTime","type":"uint256"},{"name":"_secondUnlockValue","type":"uint256"},{"name":"_thirdUnlockTime","type":"uint256"},{"name":"_thirdUnlockValue","type":"uint256"}],"name":"transferToLockedBalance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"lockedUser","type":"address"},{"indexed":false,"name":"lockPeriod","type":"uint256"},{"indexed":false,"name":"firstUnlockValue","type":"uint256"},{"indexed":false,"name":"secondUnlockValue","type":"uint256"},{"indexed":false,"name":"thirdUnlockValue","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"_logName","type":"string"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"PrintLog","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

60806040526000600360146101000a81548160ff02191690831515021790555034801561002b57600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506611c37937e080006001819055506611c37937e080006000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6611c37937e080006040518082815260200191505060405180910390a3613f488061012b6000396000f30060806040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610164578063095ea7b3146101f457806318160ddd1461025957806323b872dd146102845780632ff2e9dc14610309578063313ce567146103345780633f4ba83a1461036557806342966c681461037c5780635c975abb146103a957806366188463146103d857806370a082311461043d5780637128defb14610494578063715018a6146104ef57806379cc6790146105065780638456cb59146105535780638477a3f41461056a5780638da5cb5b146105e45780639299eb301461063b57806395d89b4114610696578063997fdb1f14610726578063a9059cbb14610795578063b74467df146107fa578063d73dd62314610855578063dd62ed3e146108ba578063eb7ee54814610931578063f2fde38b1461098c578063fae860db146109cf575b600080fd5b34801561017057600080fd5b50610179610a66565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b957808201518184015260208101905061019e565b50505050905090810190601f1680156101e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020057600080fd5b5061023f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a9f565b604051808215151515815260200191505060405180910390f35b34801561026557600080fd5b5061026e610acf565b6040518082815260200191505060405180910390f35b34801561029057600080fd5b506102ef600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ad9565b604051808215151515815260200191505060405180910390f35b34801561031557600080fd5b5061031e610b0b565b6040518082815260200191505060405180910390f35b34801561034057600080fd5b50610349610b16565b604051808260ff1660ff16815260200191505060405180910390f35b34801561037157600080fd5b5061037a610b1b565b005b34801561038857600080fd5b506103a760048036038101908080359060200190929190505050610bdb565b005b3480156103b557600080fd5b506103be610c98565b604051808215151515815260200191505060405180910390f35b3480156103e457600080fd5b50610423600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cab565b604051808215151515815260200191505060405180910390f35b34801561044957600080fd5b5061047e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cdb565b6040518082815260200191505060405180910390f35b3480156104a057600080fd5b506104d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d23565b604051808215151515815260200191505060405180910390f35b3480156104fb57600080fd5b50610504610ef2565b005b34801561051257600080fd5b50610551600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ff7565b005b34801561055f57600080fd5b5061056861119f565b005b34801561057657600080fd5b506105ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611260565b60405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b3480156105f057600080fd5b506105f961136d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064757600080fd5b5061067c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611393565b604051808215151515815260200191505060405180910390f35b3480156106a257600080fd5b506106ab61156c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106eb5780820151818401526020810190506106d0565b50505050905090810190601f1680156107185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561073257600080fd5b5061077b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506115a5565b604051808215151515815260200191505060405180910390f35b3480156107a157600080fd5b506107e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611852565b604051808215151515815260200191505060405180910390f35b34801561080657600080fd5b5061083b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611926565b604051808215151515815260200191505060405180910390f35b34801561086157600080fd5b506108a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b49565b604051808215151515815260200191505060405180910390f35b3480156108c657600080fd5b5061091b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b79565b6040518082815260200191505060405180910390f35b34801561093d57600080fd5b50610972600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c00565b604051808215151515815260200191505060405180910390f35b34801561099857600080fd5b506109cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2d565b005b3480156109db57600080fd5b50610a4c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611f85565b604051808215151515815260200191505060405180910390f35b6040805190810160405280600a81526020017f434852454d41434f494e0000000000000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff16151515610abd57600080fd5b610ac783836125af565b905092915050565b6000600154905090565b6000600360149054906101000a900460ff16151515610af757600080fd5b610b028484846126a1565b90509392505050565b6611c37937e0800081565b600881565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7757600080fd5b600360149054906101000a900460ff161515610b9257600080fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610c805750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515610c8b57600080fd5b610c9533826126d3565b50565b600360149054906101000a900460ff1681565b6000600360149054906101000a900460ff16151515610cc957600080fd5b610cd38383612886565b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d8157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015610e075750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515610e1257600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558173ffffffffffffffffffffffffffffffffffffffff167f8c5488c20f72c8e1e70d2fb015bb3f71075f6b62981493b11d7bc228dcd3dc98600060405180806020018381526020018281038252600c8152602001807f697353757065727669736f7200000000000000000000000000000000000000008152506020019250505060405180910390a260019050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f4e57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561108257600080fd5b61111181600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061119b82826126d3565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111fb57600080fd5b600360149054906101000a900460ff1615151561121757600080fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000806000806000808673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112f05750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806113445750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b151561134f57600080fd5b61135887612b33565b95509550955095509550955091939550919395565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113f157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156114785750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b151561148357600080fd5b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8c5488c20f72c8e1e70d2fb015bb3f71075f6b62981493b11d7bc228dcd3dc98600160405180806020018381526020018281038252600c8152602001807f697353757065727669736f7200000000000000000000000000000000000000008152506020019250505060405180910390a260019050919050565b6040805190810160405280600481526020017f43524d430000000000000000000000000000000000000000000000000000000081525081565b6000806000803373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806116505750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b151561165b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156116985750600086115b80156116a45750600486105b80156116af57504285115b15156116ba57600080fd5b6116c387612ce3565b9250925092506001861480156116da575060008314155b156117475760008214806116ed57508185105b156117425784600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555060019350611848565b611843565b600286148015611758575060008214155b156117d05782851180156117765750600081148061177557508085105b5b156117cb5784600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555060019350611848565b611842565b6003861480156117e1575060008114155b80156117ec57508185115b156118415784600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555060019350611848565b5b5b600093505b5050509392505050565b6000600360149054906101000a900460ff1615151561187057600080fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515611914576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f436865636b20796f75722061646472657373212100000000000000000000000081525060200191505060405180910390fd5b61191e8383612ea4565b905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806119cd5750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15156119d857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611a5e5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515611a6957600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558173ffffffffffffffffffffffffffffffffffffffff167f8c5488c20f72c8e1e70d2fb015bb3f71075f6b62981493b11d7bc228dcd3dc9860006040518080602001838152602001828103825260148152602001807f69734c6f636b656457616c6c6574456e746974790000000000000000000000008152506020019250505060405180910390a260019050919050565b6000600360149054906101000a900460ff16151515611b6757600080fd5b611b718383612ed4565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611ca75750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515611cb257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611d395750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1515611d4457600080fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8c5488c20f72c8e1e70d2fb015bb3f71075f6b62981493b11d7bc228dcd3dc9860016040518080602001838152602001828103825260148152602001807f69734c6f636b656457616c6c6574456e746974790000000000000000000000008152506020019250505060405180910390a260019050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e8957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ec557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000803373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061202d5750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b151561203857600080fd5b600360149054906101000a900460ff1615151561205457600080fd5b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515156120f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f436865636b20796f75722061646472657373212100000000000000000000000081525060200191505060405180910390fd5b42881180156121075750600087115b151561217b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436865636b20796f757220466972737420696e7075742076616c75657321213b81525060200191505060405180910390fd5b61218e87826130d090919063ffffffff16565b9050428611801561219f5750600085115b15612257578786111515612241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f5365636f6e6420556e6c6f636b2074696d65206d75737420626520677265617481526020017f6572207468616e20466972737420556e6c6f636b2054696d652121000000000081525060400191505060405180910390fd5b61225485826130d090919063ffffffff16565b90505b42841180156122665750600083115b1561233557858411801561227957504286115b80156122855750600085115b151561231f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f436865636b20796f757220746869726420556e6c6f636b2054696d65206f722081526020017f5365636f6e6420696e7075742076616c7565732121000000000000000000000081525060400191505060405180910390fd5b61233283826130d090919063ffffffff16565b90505b61233f8982611852565b156125a25788600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555086600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004018190555042861180156124625750600085115b156124f65785600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555084600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b42841180156125055750600083115b156125995783600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555082600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055505b600191506125a3565b5b50979650505050505050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600360149054906101000a900460ff161515156126bf57600080fd5b6126ca8484846130f1565b90509392505050565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561272057600080fd5b612771816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c881600154612b1790919063ffffffff16565b6001819055508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115612997576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a2b565b6129aa8382612b1790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000828211151515612b2857600080fd5b818303905092915050565b600080600080600080600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015495509550955095509550955091939550919395565b60008060008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612d6f5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612dc35750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515612dce57600080fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549250925092509193909250565b6000600360149054906101000a900460ff16151515612ec257600080fd5b612ecc83836132a1565b905092915050565b6000612f6582600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d090919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008082840190508381101515156130e757600080fd5b8091505092915050565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561317e57600080fd5b61320d82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132988484846132b6565b90509392505050565b60006132ae3384846132b6565b905092915050565b6000806132c2856133ee565b151515613337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f746869732077616c6c6574206973206c6f636b6564000000000000000000000081525060200191505060405180910390fd5b6133418584613444565b90508373ffffffffffffffffffffffffffffffffffffffff167f8c5488c20f72c8e1e70d2fb015bb3f71075f6b62981493b11d7bc228dcd3dc98826040518080602001838152602001828103825260148152602001807f617661696c61626c65526573756c7456616c75650000000000000000000000008152506020019250505060405180910390a26000811115156133d957600080fd5b6133e4858585613cfc565b9150509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008060008060008060009650600073ffffffffffffffffffffffffffffffffffffffff16600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156134f357889650613cec565b6134fc8a612b33565b955095509550955095509550854210156135a1576135856135388261352a86896130d090919063ffffffff16565b6130d090919063ffffffff16565b6000808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b965086891115613598576000965061359c565b8896505b613ceb565b4286111580156135b15750600084145b15613711576000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054965086891115613608576000965061370c565b889650600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905560048201600090556005820160009055600682016000905550508973ffffffffffffffffffffffffffffffffffffffff167f980777260da3f0d408d254061ab7b8b17939801e6b26745b33b74d99ab8074b860018786856040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b613cea565b428611158015613722575060008414155b801561372d57508342105b156138605761379561374882856130d090919063ffffffff16565b6000808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b9650868911156137a8576000965061385b565b8896506000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508973ffffffffffffffffffffffffffffffffffffffff167f980777260da3f0d408d254061ab7b8b17939801e6b26745b33b74d99ab8074b860018786856040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b613ce9565b600084141580156138715750428411155b801561387d5750600082145b156139dd576000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549650868911156138d457600096506139d8565b889650600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905560048201600090556005820160009055600682016000905550508973ffffffffffffffffffffffffffffffffffffffff167f980777260da3f0d408d254061ab7b8b17939801e6b26745b33b74d99ab8074b860028786856040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b613ce8565b600084141580156139ee5750428411155b80156139fb575060008214155b8015613a0657508142105b15613b6f57613a5c816000808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b965086891115613a6f5760009650613b6a565b8896506000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055508973ffffffffffffffffffffffffffffffffffffffff167f980777260da3f0d408d254061ab7b8b17939801e6b26745b33b74d99ab8074b860028786856040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b613ce7565b60008214158015613b805750428211155b15613ce6576000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054965086891115613bd75760009650613ce5565b8689111515613ce457889650600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905560048201600090556005820160009055600682016000905550508973ffffffffffffffffffffffffffffffffffffffff167f980777260da3f0d408d254061ab7b8b17939801e6b26745b33b74d99ab8074b860038786856040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b5b5b5b5b5b5b5b5b8697505050505050505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515613d3957600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515613d8657600080fd5b613dd7826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e6a826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905093925050505600a165627a7a7230582021ce62ba67b4207c8df4a532342f76991b3dc38549df3b660fd2cfaa099381f80029

Deployed Bytecode

0x60806040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610164578063095ea7b3146101f457806318160ddd1461025957806323b872dd146102845780632ff2e9dc14610309578063313ce567146103345780633f4ba83a1461036557806342966c681461037c5780635c975abb146103a957806366188463146103d857806370a082311461043d5780637128defb14610494578063715018a6146104ef57806379cc6790146105065780638456cb59146105535780638477a3f41461056a5780638da5cb5b146105e45780639299eb301461063b57806395d89b4114610696578063997fdb1f14610726578063a9059cbb14610795578063b74467df146107fa578063d73dd62314610855578063dd62ed3e146108ba578063eb7ee54814610931578063f2fde38b1461098c578063fae860db146109cf575b600080fd5b34801561017057600080fd5b50610179610a66565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b957808201518184015260208101905061019e565b50505050905090810190601f1680156101e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020057600080fd5b5061023f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a9f565b604051808215151515815260200191505060405180910390f35b34801561026557600080fd5b5061026e610acf565b6040518082815260200191505060405180910390f35b34801561029057600080fd5b506102ef600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ad9565b604051808215151515815260200191505060405180910390f35b34801561031557600080fd5b5061031e610b0b565b6040518082815260200191505060405180910390f35b34801561034057600080fd5b50610349610b16565b604051808260ff1660ff16815260200191505060405180910390f35b34801561037157600080fd5b5061037a610b1b565b005b34801561038857600080fd5b506103a760048036038101908080359060200190929190505050610bdb565b005b3480156103b557600080fd5b506103be610c98565b604051808215151515815260200191505060405180910390f35b3480156103e457600080fd5b50610423600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cab565b604051808215151515815260200191505060405180910390f35b34801561044957600080fd5b5061047e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cdb565b6040518082815260200191505060405180910390f35b3480156104a057600080fd5b506104d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d23565b604051808215151515815260200191505060405180910390f35b3480156104fb57600080fd5b50610504610ef2565b005b34801561051257600080fd5b50610551600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ff7565b005b34801561055f57600080fd5b5061056861119f565b005b34801561057657600080fd5b506105ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611260565b60405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b3480156105f057600080fd5b506105f961136d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064757600080fd5b5061067c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611393565b604051808215151515815260200191505060405180910390f35b3480156106a257600080fd5b506106ab61156c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106eb5780820151818401526020810190506106d0565b50505050905090810190601f1680156107185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561073257600080fd5b5061077b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506115a5565b604051808215151515815260200191505060405180910390f35b3480156107a157600080fd5b506107e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611852565b604051808215151515815260200191505060405180910390f35b34801561080657600080fd5b5061083b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611926565b604051808215151515815260200191505060405180910390f35b34801561086157600080fd5b506108a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b49565b604051808215151515815260200191505060405180910390f35b3480156108c657600080fd5b5061091b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b79565b6040518082815260200191505060405180910390f35b34801561093d57600080fd5b50610972600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c00565b604051808215151515815260200191505060405180910390f35b34801561099857600080fd5b506109cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2d565b005b3480156109db57600080fd5b50610a4c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611f85565b604051808215151515815260200191505060405180910390f35b6040805190810160405280600a81526020017f434852454d41434f494e0000000000000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff16151515610abd57600080fd5b610ac783836125af565b905092915050565b6000600154905090565b6000600360149054906101000a900460ff16151515610af757600080fd5b610b028484846126a1565b90509392505050565b6611c37937e0800081565b600881565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7757600080fd5b600360149054906101000a900460ff161515610b9257600080fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610c805750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515610c8b57600080fd5b610c9533826126d3565b50565b600360149054906101000a900460ff1681565b6000600360149054906101000a900460ff16151515610cc957600080fd5b610cd38383612886565b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d8157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015610e075750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515610e1257600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558173ffffffffffffffffffffffffffffffffffffffff167f8c5488c20f72c8e1e70d2fb015bb3f71075f6b62981493b11d7bc228dcd3dc98600060405180806020018381526020018281038252600c8152602001807f697353757065727669736f7200000000000000000000000000000000000000008152506020019250505060405180910390a260019050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f4e57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561108257600080fd5b61111181600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061119b82826126d3565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111fb57600080fd5b600360149054906101000a900460ff1615151561121757600080fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000806000806000808673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112f05750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806113445750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b151561134f57600080fd5b61135887612b33565b95509550955095509550955091939550919395565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113f157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156114785750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b151561148357600080fd5b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8c5488c20f72c8e1e70d2fb015bb3f71075f6b62981493b11d7bc228dcd3dc98600160405180806020018381526020018281038252600c8152602001807f697353757065727669736f7200000000000000000000000000000000000000008152506020019250505060405180910390a260019050919050565b6040805190810160405280600481526020017f43524d430000000000000000000000000000000000000000000000000000000081525081565b6000806000803373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806116505750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b151561165b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156116985750600086115b80156116a45750600486105b80156116af57504285115b15156116ba57600080fd5b6116c387612ce3565b9250925092506001861480156116da575060008314155b156117475760008214806116ed57508185105b156117425784600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555060019350611848565b611843565b600286148015611758575060008214155b156117d05782851180156117765750600081148061177557508085105b5b156117cb5784600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555060019350611848565b611842565b6003861480156117e1575060008114155b80156117ec57508185115b156118415784600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555060019350611848565b5b5b600093505b5050509392505050565b6000600360149054906101000a900460ff1615151561187057600080fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515611914576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f436865636b20796f75722061646472657373212100000000000000000000000081525060200191505060405180910390fd5b61191e8383612ea4565b905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806119cd5750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15156119d857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611a5e5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515611a6957600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558173ffffffffffffffffffffffffffffffffffffffff167f8c5488c20f72c8e1e70d2fb015bb3f71075f6b62981493b11d7bc228dcd3dc9860006040518080602001838152602001828103825260148152602001807f69734c6f636b656457616c6c6574456e746974790000000000000000000000008152506020019250505060405180910390a260019050919050565b6000600360149054906101000a900460ff16151515611b6757600080fd5b611b718383612ed4565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611ca75750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515611cb257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611d395750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1515611d4457600080fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8c5488c20f72c8e1e70d2fb015bb3f71075f6b62981493b11d7bc228dcd3dc9860016040518080602001838152602001828103825260148152602001807f69734c6f636b656457616c6c6574456e746974790000000000000000000000008152506020019250505060405180910390a260019050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e8957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ec557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000803373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061202d5750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b151561203857600080fd5b600360149054906101000a900460ff1615151561205457600080fd5b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515156120f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f436865636b20796f75722061646472657373212100000000000000000000000081525060200191505060405180910390fd5b42881180156121075750600087115b151561217b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436865636b20796f757220466972737420696e7075742076616c75657321213b81525060200191505060405180910390fd5b61218e87826130d090919063ffffffff16565b9050428611801561219f5750600085115b15612257578786111515612241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f5365636f6e6420556e6c6f636b2074696d65206d75737420626520677265617481526020017f6572207468616e20466972737420556e6c6f636b2054696d652121000000000081525060400191505060405180910390fd5b61225485826130d090919063ffffffff16565b90505b42841180156122665750600083115b1561233557858411801561227957504286115b80156122855750600085115b151561231f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f436865636b20796f757220746869726420556e6c6f636b2054696d65206f722081526020017f5365636f6e6420696e7075742076616c7565732121000000000000000000000081525060400191505060405180910390fd5b61233283826130d090919063ffffffff16565b90505b61233f8982611852565b156125a25788600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555086600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004018190555042861180156124625750600085115b156124f65785600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555084600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b42841180156125055750600083115b156125995783600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555082600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055505b600191506125a3565b5b50979650505050505050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600360149054906101000a900460ff161515156126bf57600080fd5b6126ca8484846130f1565b90509392505050565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561272057600080fd5b612771816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c881600154612b1790919063ffffffff16565b6001819055508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115612997576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a2b565b6129aa8382612b1790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000828211151515612b2857600080fd5b818303905092915050565b600080600080600080600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015495509550955095509550955091939550919395565b60008060008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612d6f5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612dc35750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515612dce57600080fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549250925092509193909250565b6000600360149054906101000a900460ff16151515612ec257600080fd5b612ecc83836132a1565b905092915050565b6000612f6582600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d090919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008082840190508381101515156130e757600080fd5b8091505092915050565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561317e57600080fd5b61320d82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132988484846132b6565b90509392505050565b60006132ae3384846132b6565b905092915050565b6000806132c2856133ee565b151515613337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f746869732077616c6c6574206973206c6f636b6564000000000000000000000081525060200191505060405180910390fd5b6133418584613444565b90508373ffffffffffffffffffffffffffffffffffffffff167f8c5488c20f72c8e1e70d2fb015bb3f71075f6b62981493b11d7bc228dcd3dc98826040518080602001838152602001828103825260148152602001807f617661696c61626c65526573756c7456616c75650000000000000000000000008152506020019250505060405180910390a26000811115156133d957600080fd5b6133e4858585613cfc565b9150509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008060008060008060009650600073ffffffffffffffffffffffffffffffffffffffff16600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156134f357889650613cec565b6134fc8a612b33565b955095509550955095509550854210156135a1576135856135388261352a86896130d090919063ffffffff16565b6130d090919063ffffffff16565b6000808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b965086891115613598576000965061359c565b8896505b613ceb565b4286111580156135b15750600084145b15613711576000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054965086891115613608576000965061370c565b889650600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905560048201600090556005820160009055600682016000905550508973ffffffffffffffffffffffffffffffffffffffff167f980777260da3f0d408d254061ab7b8b17939801e6b26745b33b74d99ab8074b860018786856040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b613cea565b428611158015613722575060008414155b801561372d57508342105b156138605761379561374882856130d090919063ffffffff16565b6000808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b9650868911156137a8576000965061385b565b8896506000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508973ffffffffffffffffffffffffffffffffffffffff167f980777260da3f0d408d254061ab7b8b17939801e6b26745b33b74d99ab8074b860018786856040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b613ce9565b600084141580156138715750428411155b801561387d5750600082145b156139dd576000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549650868911156138d457600096506139d8565b889650600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905560048201600090556005820160009055600682016000905550508973ffffffffffffffffffffffffffffffffffffffff167f980777260da3f0d408d254061ab7b8b17939801e6b26745b33b74d99ab8074b860028786856040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b613ce8565b600084141580156139ee5750428411155b80156139fb575060008214155b8015613a0657508142105b15613b6f57613a5c816000808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b965086891115613a6f5760009650613b6a565b8896506000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055508973ffffffffffffffffffffffffffffffffffffffff167f980777260da3f0d408d254061ab7b8b17939801e6b26745b33b74d99ab8074b860028786856040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b613ce7565b60008214158015613b805750428211155b15613ce6576000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054965086891115613bd75760009650613ce5565b8689111515613ce457889650600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905560048201600090556005820160009055600682016000905550508973ffffffffffffffffffffffffffffffffffffffff167f980777260da3f0d408d254061ab7b8b17939801e6b26745b33b74d99ab8074b860038786856040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b5b5b5b5b5b5b5b5b8697505050505050505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515613d3957600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515613d8657600080fd5b613dd7826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1790919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e6a826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905093925050505600a165627a7a7230582021ce62ba67b4207c8df4a532342f76991b3dc38549df3b660fd2cfaa099381f80029

Deployed Bytecode Sourcemap

12793:11448:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12893:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12893:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12893:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12088:189;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12088:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2990:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2990:91:0;;;;;;;;;;;;;;;;;;;;;;;14809:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14809:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13028:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13028:57:0;;;;;;;;;;;;;;;;;;;;;;;12987:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12987:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11406:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11406:105:0;;;;;;14986:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14986:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;10723:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10723:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12515:232;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12515:232:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3967:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3967:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19149:274;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19149:274:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1724:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1724:124:0;;;;;;10121:398;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10121:398:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11208:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11208:103:0;;;;;;18121:256;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18121:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;681:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;681:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;18869:272;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18869:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12942:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12942:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12942:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17069:1044;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17069:1044:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14597:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14597:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19736:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19736:299:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12285:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12285:222:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6807:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6807:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19431:297;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19431:297:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1429:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1429:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15096:1965;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15096:1965:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12893:42;;;;;;;;;;;;;;;;;;;;:::o;12088:189::-;12209:4;10911:6;;;;;;;;;;;10910:7;10902:16;;;;;;;;12238:31;12252:8;12262:6;12238:13;:31::i;:::-;12231:38;;12088:189;;;;:::o;2990:91::-;3034:7;3061:12;;3054:19;;2990:91;:::o;14809:167::-;14906:4;10911:6;;;;;;;;;;;10910:7;10902:16;;;;;;;;14930:38;14949:5;14956:3;14961:6;14930:18;:38::i;:::-;14923:45;;14809:167;;;;;:::o;13028:57::-;13069:16;13028:57;:::o;12987:34::-;13020:1;12987:34;:::o;11406:105::-;1226:5;;;;;;;;;;;1212:19;;:10;:19;;;1204:28;;;;;;;;11089:6;;;;;;;;;;;11081:15;;;;;;;;11473:5;11464:6;;:14;;;;;;;;;;;;;;;;;;11494:9;;;;;;;;;;11406:105::o;14986:102::-;13603:10;13594:19;;:5;;;;;;;;;;;:19;;;:51;;;;13617:16;:28;13634:10;13617:28;;;;;;;;;;;;;;;;;;;;;;;;;13594:51;13586:60;;;;;;;;15049:31;15061:10;15073:6;15049:11;:31::i;:::-;14986:102;:::o;10723:26::-;;;;;;;;;;;;;:::o;12515:232::-;12652:12;10911:6;;;;;;;;;;;10910:7;10902:16;;;;;;;;12689:50;12712:8;12722:16;12689:22;:50::i;:::-;12682:57;;12515:232;;;;:::o;3967:107::-;4023:7;4050:8;:16;4059:6;4050:16;;;;;;;;;;;;;;;;4043:23;;3967:107;;;:::o;19149:274::-;19219:4;1226:5;;;;;;;;;;;1212:19;;:10;:19;;;1204:28;;;;;;;;19262:1;19243:21;;:8;:21;;;;:51;;;;;19268:16;:26;19285:8;19268:26;;;;;;;;;;;;;;;;;;;;;;;;;19243:51;19235:60;;;;;;;;19313:16;:26;19330:8;19313:26;;;;;;;;;;;;;;;;19306:33;;;;;;;;;;;19364:8;19355:38;;;19391:1;19355:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19411:4;19404:11;;19149:274;;;:::o;1724:124::-;1226:5;;;;;;;;;;;1212:19;;:10;:19;;;1204:28;;;;;;;;1805:5;;;;;;;;;;;1786:25;;;;;;;;;;;;1838:1;1822:5;;:18;;;;;;;;;;;;;;;;;;1724:124::o;10121:398::-;10206:7;:14;10214:5;10206:14;;;;;;;;;;;;;;;:26;10221:10;10206:26;;;;;;;;;;;;;;;;10196:6;:36;;10188:45;;;;;;;;10442:38;10473:6;10442:7;:14;10450:5;10442:14;;;;;;;;;;;;;;;:26;10457:10;10442:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;10413:7;:14;10421:5;10413:14;;;;;;;;;;;;;;;:26;10428:10;10413:26;;;;;;;;;;;;;;;:67;;;;10491:20;10497:5;10504:6;10491:5;:20::i;:::-;10121:398;;:::o;11208:103::-;1226:5;;;;;;;;;;;1212:19;;:10;:19;;;1204:28;;;;;;;;10911:6;;;;;;;;;;;10910:7;10902:16;;;;;;;;11276:4;11267:6;;:13;;;;;;;;;;;;;;;;;;11296:7;;;;;;;;;;11208:103::o;18121:256::-;18187:4;18192:7;18200:4;18205:7;18213:4;18218:7;18259:8;18245:22;;:10;:22;;;:45;;;;18285:5;;;;;;;;;;;18271:19;;:10;:19;;;18245:45;:77;;;;18294:16;:28;18311:10;18294:28;;;;;;;;;;;;;;;;;;;;;;;;;18245:77;18237:86;;;;;;;;18341:28;18360:8;18341:18;:28::i;:::-;18334:35;;;;;;;;;;;;18121:256;;;;;;;:::o;681:20::-;;;;;;;;;;;;;:::o;18869:272::-;18936:4;1226:5;;;;;;;;;;;1212:19;;:10;:19;;;1204:28;;;;;;;;18979:1;18960:21;;:8;:21;;;;:52;;;;;18986:16;:26;19003:8;18986:26;;;;;;;;;;;;;;;;;;;;;;;;;18985:27;18960:52;18952:61;;;;;;;;19053:4;19024:16;:26;19041:8;19024:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19082:8;19073:38;;;19109:1;19073:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19129:4;19122:11;;18869:272;;;:::o;12942:38::-;;;;;;;;;;;;;;;;;;;;:::o;17069:1044::-;17164:4;17267:20;17298:21;17330:20;13603:10;13594:19;;:5;;;;;;;;;;;:19;;;:51;;;;13617:16;:28;13634:10;13617:28;;;;;;;;;;;;;;;;;;;;;;;;;13594:51;13586:60;;;;;;;;17202:1;17188:16;;:3;:16;;;;:29;;;;;17216:1;17208:5;:9;17188:29;:42;;;;;17229:1;17221:5;:9;17188:42;:61;;;;;17246:3;17234:9;:15;17188:61;17180:70;;;;;;;;17364:26;17386:3;17364:21;:26::i;:::-;17263:127;;;;;;17415:1;17406:5;:10;:33;;;;;17438:1;17420:15;:19;;17406:33;17403:680;;;17477:1;17458:16;:20;:52;;;;17494:16;17482:9;:28;17458:52;17455:170;;;17570:9;17530:16;:21;17547:3;17530:21;;;;;;;;;;;;;;;:37;;:49;;;;17605:4;17598:11;;;;17455:170;17403:680;;;17653:1;17644:5;:10;:34;;;;;17677:1;17658:16;:20;;17644:34;17641:442;;;17709:15;17697:9;:27;:83;;;;;17747:1;17729:15;:19;:50;;;;17764:15;17752:9;:27;17729:50;17697:83;17694:202;;;17841:9;17800:16;:21;17817:3;17800:21;;;;;;;;;;;;;;;:38;;:50;;;;17876:4;17869:11;;;;17694:202;17641:442;;;17924:1;17915:5;:10;:33;;;;;17947:1;17929:15;:19;;17915:33;:65;;;;;17964:16;17952:9;:28;17915:65;17912:171;;;18036:9;17996:16;:21;18013:3;17996:21;;;;;;;;;;;;;;;:37;;:49;;;;18067:4;18060:11;;;;17912:171;17641:442;17403:680;18100:5;18093:12;;13657:1;17069:1044;;;;;;;;:::o;14597:198::-;14676:4;10911:6;;;;;;;;;;;10910:7;10902:16;;;;;;;;14715:3;14701:17;;:10;:17;;;;14693:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14760:27;14775:3;14780:6;14760:14;:27::i;:::-;14753:34;;14597:198;;;;:::o;19736:299::-;19819:4;13603:10;13594:19;;:5;;;;;;;;;;;:19;;;:51;;;;13617:16;:28;13634:10;13617:28;;;;;;;;;;;;;;;;;;;;;;;;;13594:51;13586:60;;;;;;;;19862:1;19843:21;;:8;:21;;;;:53;;;;;19868:18;:28;19887:8;19868:28;;;;;;;;;;;;;;;;;;;;;;;;;19843:53;19835:62;;;;;;;;19915:18;:28;19934:8;19915:28;;;;;;;;;;;;;;;;19908:35;;;;;;;;;;;19968:8;19959:46;;;20003:1;19959:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20023:4;20016:11;;19736:299;;;:::o;12285:222::-;12417:12;10911:6;;;;;;;;;;;10910:7;10902:16;;;;;;;;12454:45;12477:8;12487:11;12454:22;:45::i;:::-;12447:52;;12285:222;;;;:::o;6807:179::-;6921:7;6953;:15;6961:6;6953:15;;;;;;;;;;;;;;;:25;6969:8;6953:25;;;;;;;;;;;;;;;;6946:32;;6807:179;;;;:::o;19431:297::-;19511:4;13603:10;13594:19;;:5;;;;;;;;;;;:19;;;:51;;;;13617:16;:28;13634:10;13617:28;;;;;;;;;;;;;;;;;;;;;;;;;13594:51;13586:60;;;;;;;;19554:1;19535:21;;:8;:21;;;;:54;;;;;19561:18;:28;19580:8;19561:28;;;;;;;;;;;;;;;;;;;;;;;;;19560:29;19535:54;19527:63;;;;;;;;19632:4;19601:18;:28;19620:8;19601:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;19661:8;19652:46;;;19696:1;19652:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19716:4;19709:11;;19431:297;;;:::o;1429:192::-;1226:5;;;;;;;;;;;1212:19;;:10;:19;;;1204:28;;;;;;;;1530:1;1510:22;;:8;:22;;;;1502:31;;;;;;;;1577:8;1549:37;;1570:5;;;;;;;;;;;1549:37;;;;;;;;;;;;1605:8;1597:5;;:16;;;;;;;;;;;;;;;;;;1429:192;:::o;15096:1965::-;15409:4;15591:26;13603:10;13594:19;;:5;;;;;;;;;;;:19;;;:51;;;;13617:16;:28;13634:10;13617:28;;;;;;;;;;;;;;;;;;;;;;;;;13594:51;13586:60;;;;;;;;10911:6;;;;;;;;;;;10910:7;10902:16;;;;;;;;15448:3;15434:17;;:10;:17;;;;15426:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15513:3;15494:16;:22;:47;;;;;15540:1;15520:17;:21;15494:47;15486:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15620:41;15643:17;15620:18;:22;;:41;;;;:::i;:::-;15591:70;;15697:3;15677:17;:23;:49;;;;;15725:1;15704:18;:22;15677:49;15674:268;;;15770:16;15750:17;:36;15742:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15888:42;15911:18;15888;:22;;:42;;;;:::i;:::-;15867:63;;15674:268;15976:3;15957:16;:22;:47;;;;;16003:1;15983:17;:21;15957:47;15954:328;;;16047:17;16028:16;:36;:63;;;;;16088:3;16068:17;:23;16028:63;:90;;;;;16117:1;16096:18;:22;16028:90;16020:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16229:41;16252:17;16229:18;:22;;:41;;;;:::i;:::-;16208:62;;15954:328;16298:33;16307:3;16312:18;16298:8;:33::i;:::-;16294:760;;;16390:3;16348:16;:21;16365:3;16348:21;;;;;;;;;;;;;;;:39;;;:45;;;;;;;;;;;;;;;;;;16448:16;16408;:21;16425:3;16408:21;;;;;;;;;;;;;;;:37;;:56;;;;16520:17;16479:16;:21;16496:3;16479:21;;;;;;;;;;;;;;;:38;;:58;;;;16577:3;16557:17;:23;:49;;;;;16605:1;16584:18;:22;16557:49;16554:225;;;16667:17;16626:16;:21;16643:3;16626:21;;;;;;;;;;;;;;;:38;;:58;;;;16745:18;16703:16;:21;16720:3;16703:21;;;;;;;;;;;;;;;:39;;:60;;;;16554:225;16817:3;16798:16;:22;:47;;;;;16844:1;16824:17;:21;16798:47;16795:220;;;16906:16;16865;:21;16882:3;16865:21;;;;;;;;;;;;;;;:37;;:57;;;;16982:17;16941:16;:21;16958:3;16941:21;;;;;;;;;;;;;;;:38;;:58;;;;16795:220;17038:4;17031:11;;;;16294:760;10929:1;15096:1965;;;;;;;;;;:::o;6260:206::-;6327:4;6376:6;6344:7;:19;6352:10;6344:19;;;;;;;;;;;;;;;:29;6364:8;6344:29;;;;;;;;;;;;;;;:38;;;;6419:8;6398:38;;6407:10;6398:38;;;6429:6;6398:38;;;;;;;;;;;;;;;;;;6454:4;6447:11;;6260:206;;;;:::o;11860:220::-;12005:4;10911:6;;;;;;;;;;;10910:7;10902:16;;;;;;;;12034:38;12053:5;12060:3;12065:6;12034:18;:38::i;:::-;12027:45;;11860:220;;;;;:::o;9210:477::-;9293:8;:14;9302:4;9293:14;;;;;;;;;;;;;;;;9283:6;:24;;9275:33;;;;;;;;9519:26;9538:6;9519:8;:14;9528:4;9519:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;9502:8;:14;9511:4;9502:14;;;;;;;;;;;;;;;:43;;;;9571:24;9588:6;9571:12;;:16;;:24;;;;:::i;:::-;9556:12;:39;;;;9616:4;9611:18;;;9622:6;9611:18;;;;;;;;;;;;;;;;;;9668:1;9645:34;;9654:4;9645:34;;;9672:6;9645:34;;;;;;;;;;;;;;;;;;9210:477;;:::o;8292:496::-;8413:4;8435:16;8454:7;:19;8462:10;8454:19;;;;;;;;;;;;;;;:29;8474:8;8454:29;;;;;;;;;;;;;;;;8435:48;;8517:8;8498:16;:27;8494:188;;;8574:1;8542:7;:19;8550:10;8542:19;;;;;;;;;;;;;;;:29;8562:8;8542:29;;;;;;;;;;;;;;;:33;;;;8494:188;;;8640:30;8653:16;8640:8;:12;;:30;;;;:::i;:::-;8608:7;:19;8616:10;8608:19;;;;;;;;;;;;;;;:29;8628:8;8608:29;;;;;;;;;;;;;;;:62;;;;8494:188;8718:8;8697:61;;8706:10;8697:61;;;8728:7;:19;8736:10;8728:19;;;;;;;;;;;;;;;:29;8748:8;8728:29;;;;;;;;;;;;;;;;8697:61;;;;;;;;;;;;;;;;;;8776:4;8769:11;;8292:496;;;;;:::o;2390:124::-;2448:7;2481:1;2476;:6;;2468:15;;;;;;;;2505:1;2501;:5;2494:12;;2390:124;;;;:::o;18385:476::-;18454:4;18459:7;18467:4;18472:7;18480:4;18485:7;18530:16;:26;18547:8;18530:26;;;;;;;;;;;;;;;:42;;;18583:16;:26;18600:8;18583:26;;;;;;;;;;;;;;;:43;;;18637:16;:26;18654:8;18637:26;;;;;;;;;;;;;;;:43;;;18691:16;:26;18708:8;18691:26;;;;;;;;;;;;;;;:44;;;18746:16;:26;18763:8;18746:26;;;;;;;;;;;;;;;:42;;;18799:16;:26;18816:8;18799:26;;;;;;;;;;;;;;;:43;;;18512:341;;;;;;;;;;;;18385:476;;;;;;;:::o;20043:380::-;20114:4;20119;20124;20162:8;20148:22;;:10;:22;;;:45;;;;20188:5;;;;;;;;;;;20174:19;;:10;:19;;;20148:45;:77;;;;20197:16;:28;20214:10;20197:28;;;;;;;;;;;;;;;;;;;;;;;;;20148:77;20140:86;;;;;;;;20255:16;:26;20272:8;20255:26;;;;;;;;;;;;;;;:42;;;20308:16;:26;20325:8;20308:26;;;;;;;;;;;;;;;:43;;;20362:16;:26;20379:8;20362:26;;;;;;;;;;;;;;;:42;;;20237:178;;;;;;20043:380;;;;;:::o;11671:181::-;11788:4;10911:6;;;;;;;;;;;10910:7;10902:16;;;;;;;;11817:27;11832:3;11837:6;11817:14;:27::i;:::-;11810:34;;11671:181;;;;:::o;7469:335::-;7585:4;7650:46;7684:11;7650:7;:19;7658:10;7650:19;;;;;;;;;;;;;;;:29;7670:8;7650:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;7607:7;:19;7615:10;7607:19;;;;;;;;;;;;;;;:29;7627:8;7607:29;;;;;;;;;;;;;;;:90;;;;7734:8;7713:61;;7722:10;7713:61;;;7744:7;:19;7752:10;7744:19;;;;;;;;;;;;;;;:29;7764:8;7744:29;;;;;;;;;;;;;;;;7713:61;;;;;;;;;;;;;;;;;;7792:4;7785:11;;7469:335;;;;:::o;2522:148::-;2580:7;2600:9;2616:1;2612;:5;2600:17;;2641:1;2636;:6;;2628:15;;;;;;;;2661:1;2654:8;;2522:148;;;;;:::o;5285:326::-;5411:4;5451:7;:14;5459:5;5451:14;;;;;;;;;;;;;;;:26;5466:10;5451:26;;;;;;;;;;;;;;;;5441:6;:36;;5433:45;;;;;;;;5518:38;5549:6;5518:7;:14;5526:5;5518:14;;;;;;;;;;;;;;;:26;5533:10;5518:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;5489:7;:14;5497:5;5489:14;;;;;;;;;;;;;;;:26;5504:10;5489:26;;;;;;;;;;;;;;;:67;;;;5574:29;5584:5;5591:3;5596:6;5574:9;:29::i;:::-;5567:36;;5285:326;;;;;:::o;3254:129::-;3317:4;3341:34;3351:10;3363:3;3368:6;3341:9;:34::i;:::-;3334:41;;3254:129;;;;:::o;14167:419::-;14249:4;14347:22;14275:27;14296:5;14275:20;:27::i;:::-;14274:28;14266:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14372:44;14402:5;14409:6;14372:29;:44::i;:::-;14347:69;;14441:3;14432:53;;;14470:14;14432:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14521:1;14504:14;:18;14496:27;;;;;;;;14543:35;14559:5;14566:3;14571:6;14543:15;:35::i;:::-;14536:42;;14167:419;;;;;;:::o;20554:123::-;20621:4;20644:18;:25;20663:5;20644:25;;;;;;;;;;;;;;;;;;;;;;;;;20637:32;;20554:123;;;:::o;20685:3551::-;20781:7;20801:22;20990:20;21012:24;21051:21;21074:25;21114:20;21136:24;20826:1;20801:26;;20896:1;20843:55;;:16;:23;20860:5;20843:23;;;;;;;;;;;;;;;:41;;;;;;;;;;;;:55;;;20840:3357;;;20931:13;20914:30;;20840:3357;;;21178:25;21197:5;21178:18;:25::i;:::-;20975:228;;;;;;;;;;;;21229:15;21223:3;:21;21220:2966;;;21282:82;21302:61;21346:16;21302:39;21323:17;21302:16;:20;;:39;;;;:::i;:::-;:43;;:61;;;;:::i;:::-;21282:8;:15;21291:5;21282:15;;;;;;;;;;;;;;;;:19;;:82;;;;:::i;:::-;21265:99;;21402:14;21386:13;:30;21383:172;;;21457:1;21440:18;;21383:172;;;21522:13;21505:30;;21383:172;21220:2966;;;21597:3;21578:15;:22;;:46;;;;;21623:1;21604:16;:20;21578:46;21575:2611;;;21661:8;:15;21670:5;21661:15;;;;;;;;;;;;;;;;21644:32;;21714:14;21698:13;:30;21695:324;;;21769:1;21752:18;;21695:324;;;21834:13;21817:30;;21877:16;:23;21894:5;21877:23;;;;;;;;;;;;;;;;21870:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21935:5;21928:71;;;21942:1;21945:16;21963:17;21982:16;21928:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21695:324;21575:2611;;;22061:3;22042:15;:22;;:46;;;;;22087:1;22068:16;:20;;22042:46;:72;;;;;22098:16;22092:3;:22;22042:72;22039:2147;;;22151:60;22171:39;22193:16;22171:17;:21;;:39;;;;:::i;:::-;22151:8;:15;22160:5;22151:15;;;;;;;;;;;;;;;;:19;;:60;;;;:::i;:::-;22134:77;;22249:14;22233:13;:30;22230:338;;;22304:1;22287:18;;22230:338;;;22369:13;22352:30;;22448:1;22405:16;:23;22422:5;22405:23;;;;;;;;;;;;;;;:40;;:44;;;;22484:5;22477:71;;;22491:1;22494:16;22512:17;22531:16;22477:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22230:338;22039:2147;;;22610:1;22591:16;:20;;:47;;;;;22635:3;22615:16;:23;;22591:47;:70;;;;;22660:1;22642:15;:19;22591:70;22588:1598;;;22698:8;:15;22707:5;22698:15;;;;;;;;;;;;;;;;22681:32;;22751:14;22735:13;:30;22732:323;;;22806:1;22789:18;;22732:323;;;22870:13;22854:29;;22913:16;:23;22930:5;22913:23;;;;;;;;;;;;;;;;22906:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22971:5;22964:71;;;22978:1;22981:16;22999:17;23018:16;22964:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22732:323;22588:1598;;;23097:1;23078:16;:20;;:47;;;;;23122:3;23102:16;:23;;23078:47;:70;;;;;23147:1;23129:15;:19;;23078:70;:95;;;;;23158:15;23152:3;:21;23078:95;23075:1111;;;23210:37;23230:16;23210:8;:15;23219:5;23210:15;;;;;;;;;;;;;;;;:19;;:37;;;;:::i;:::-;23193:54;;23285:14;23269:13;:30;23266:406;;;23340:1;23323:18;;23266:406;;;23405:13;23388:30;;23484:1;23441:16;:23;23458:5;23441:23;;;;;;;;;;;;;;;:40;;:44;;;;23552:1;23508:16;:23;23525:5;23508:23;;;;;;;;;;;;;;;:41;;:45;;;;23588:5;23581:71;;;23595:1;23598:16;23616:17;23635:16;23581:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23266:406;23075:1111;;;23713:1;23695:15;:19;;:45;;;;;23737:3;23718:15;:22;;23695:45;23692:494;;;23777:8;:15;23786:5;23777:15;;;;;;;;;;;;;;;;23760:32;;23830:14;23814:13;:30;23811:360;;;23885:1;23868:18;;23811:360;;;23931:14;23914:13;:31;;23911:260;;;23986:13;23969:30;;24029:16;:23;24046:5;24029:23;;;;;;;;;;;;;;;;24022:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24087:5;24080:71;;;24094:1;24097:16;24115:17;24134:16;24080:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23911:260;23811:360;23692:494;23075:1111;22588:1598;22039:2147;21575:2611;21220:2966;20840:3357;24214:14;24207:21;;20685:3551;;;;;;;;;;;:::o;3391:354::-;3473:4;3513:1;3498:17;;:3;:17;;;;3490:26;;;;;;;;3545:8;:15;3554:5;3545:15;;;;;;;;;;;;;;;;3535:6;:25;;3527:34;;;;;;;;3592:27;3612:6;3592:8;:15;3601:5;3592:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;3574:8;:15;3583:5;3574:15;;;;;;;;;;;;;;;:45;;;;3646:25;3664:6;3646:8;:13;3655:3;3646:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;3630:8;:13;3639:3;3630:13;;;;;;;;;;;;;;;:41;;;;3703:3;3687:28;;3696:5;3687:28;;;3708:6;3687:28;;;;;;;;;;;;;;;;;;3733:4;3726:11;;3391:354;;;;;:::o

Swarm Source

bzzr://21ce62ba67b4207c8df4a532342f76991b3dc38549df3b660fd2cfaa099381f8
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.