ETH Price: $3,321.99 (+2.77%)
 

Overview

Max Total Supply

0 VE

Holders

556

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
VE

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-12-06
*/

/**
 *Submitted for verification at Etherscan.io on 2019-12-04
*/

pragma solidity ^0.4.24;

/**
 * @title SafeMath
 */
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) {
        uint256 c = _a / _b;
        
        return c;
    }

    function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
        require(_b <= _a);
        uint256 c = _a - _b;

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

        return c;
    }
}


/**
 * @title 验证合约创作者
 */
contract Ownable {
    address public owner;

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

    constructor() public {
        owner = msg.sender;
    }

    /**
    * 验证合约创作者
    */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(owner);
        owner = address(0);
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        _transferOwnership(_newOwner);
    }

    function _transferOwnership(address _newOwner) internal {
        require(_newOwner != address(0));
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }
}


/**
 * @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() public onlyOwner whenNotPaused {
        paused = true;
        emit Pause();
    }

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


/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20 {
    function totalSupply() public view returns (uint256);

    function balanceOf(address _who) public view returns (uint256);

    function allowance(address _owner, address _spender)
        public view returns (uint256);

    function transfer(address _to, uint256 _value) public returns (bool);

    function approve(address _spender, uint256 _value)
        public returns (bool);

    function transferFrom(address _from, address _to, uint256 _value)
        public returns (bool);

    event Transfer(
        address indexed from,
        address indexed to,
        uint256 value
    );

    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 {
    using SafeMath for uint256;

    mapping(address => uint256) balances;

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

    uint256 totalSupply_;

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

    /**
    * @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];
    }

    /**
    * @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 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) {
        require(_value <= balances[msg.sender]);
        require(_to != address(0));

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

    /**
    * @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 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 <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);
        require(_to != address(0));

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

    /**
    * @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 Pausable token
* @dev StandardToken modified with pausable transfers.
**/
contract PausableERC20Token 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 Burnable Pausable Token
* @dev Pausable Token that can be irreversibly burned (destroyed).
*/
contract BurnablePausableERC20Token is PausableERC20Token {

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

    event Burn(address indexed burner, uint256 value);

    event ApprovalBurn(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function allowanceBurn(
        address _owner,
        address _spender
    )
        public
        view
        returns (uint256)
    {
        return allowedBurn[_owner][_spender];
    }

    function approveBurn(address _spender, uint256 _value)
        public
        whenNotPaused
        returns (bool)
    {
        allowedBurn[msg.sender][_spender] = _value;
        emit ApprovalBurn(msg.sender, _spender, _value);
        return true;
    }

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

    /**
    * @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 
        whenNotPaused
    {
        require(_value <= allowedBurn[_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.
        allowedBurn[_from][msg.sender] = allowedBurn[_from][msg.sender].sub(_value);
        _burn(_from, _value);
    }

    function _burn(
        address _who, 
        uint256 _value
    ) 
        internal 
        whenNotPaused
    {
        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);
    }

    function increaseBurnApproval(
        address _spender,
        uint256 _addedValue
    )
        public
        whenNotPaused
        returns (bool)
    {
        allowedBurn[msg.sender][_spender] = (
        allowedBurn[msg.sender][_spender].add(_addedValue));
        emit ApprovalBurn(msg.sender, _spender, allowedBurn[msg.sender][_spender]);
        return true;
    }

    function decreaseBurnApproval(
        address _spender,
        uint256 _subtractedValue
    )
        public
        whenNotPaused
        returns (bool)
    {
        uint256 oldValue = allowedBurn[msg.sender][_spender];
        if (_subtractedValue >= oldValue) {
            allowedBurn[msg.sender][_spender] = 0;
        } else {
            allowedBurn[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        emit ApprovalBurn(msg.sender, _spender, allowedBurn[msg.sender][_spender]);
        return true;
    }
}

contract FreezableBurnablePausableERC20Token is BurnablePausableERC20Token {
    mapping (address => bool) public frozenAccount;
    event FrozenFunds(address target, bool frozen);

    function freezeAccount(
        address target,
        bool freeze
    )
        public
        onlyOwner
    {
        frozenAccount[target] = freeze;
        emit FrozenFunds(target, freeze);
    }

    function transfer(
        address _to,
        uint256 _value
    )
        public
        whenNotPaused
        returns (bool)
    {
        require(!frozenAccount[msg.sender], "Sender account freezed");
        require(!frozenAccount[_to], "Receiver account freezed");

        return super.transfer(_to, _value);
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    )
        public
        whenNotPaused
        returns (bool)
    {
        require(!frozenAccount[msg.sender], "Spender account freezed");
        require(!frozenAccount[_from], "Sender account freezed");
        require(!frozenAccount[_to], "Receiver account freezed");

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

    function burn(
        uint256 _value
    ) 
        public
        whenNotPaused
    {
        require(!frozenAccount[msg.sender], "Sender account freezed");

        return super.burn(_value);
    }

    function burnFrom(
        address _from, 
        uint256 _value
    ) 
        public 
        whenNotPaused
    {
        require(!frozenAccount[msg.sender], "Spender account freezed");
        require(!frozenAccount[_from], "Sender account freezed");

        return super.burnFrom(_from, _value);
    }
}

/**
 * @title TransferToken
 */
contract TransferToken is FreezableBurnablePausableERC20Token {
    
    using SafeMath for uint256;
    event transferLogs(address indexed,string,uint256);
    event transferTokenLogs(address indexed,string,uint256);

    function Transfer_anything (address[] _users,uint256[] _amount,uint256[] _token,uint256 _allBalance) public onlyOwner {
        require(_users.length>0);
        require(_amount.length>0);
        require(_token.length>0);
        require(address(this).balance>=_allBalance);

        for(uint32 i =0;i<_users.length;i++){
            require(_users[i]!=address(0));
            require(_amount[i]>0&&_token[i]>0);
            _users[i].transfer(_amount[i]);
            balances[owner]-=_token[i];
            balances[_users[i]]+=_token[i];
            emit transferLogs(_users[i],'转账',_amount[i]);
            emit transferTokenLogs(_users[i],'代币转账',_token[i]);
        }
    }

    function Buys(uint256 _token) public payable returns(bool success){
        require(_token<=balances[msg.sender]);
        balances[msg.sender]-=_token;
        balances[owner]+=_token;
        emit transferTokenLogs(msg.sender,'代币支出',_token);
        return true;
    }
    
    function kill() public onlyOwner{
        selfdestruct(owner);
    }
    
    function () payable public {}
}
/**
* @title GBLZ
* @dev Token that is ERC20 compatible, Pausableb, Burnable, Ownable with SafeMath.
*/
contract VE is TransferToken {

    /** Token Setting: You are free to change any of these
    * @param name string The name of your token (can be not unique)
    * @param symbol string The symbol of your token (can be not unique, can be more than three characters)
    * @param decimals uint8 The accuracy decimals of your token (conventionally be 18)
    * Read this to choose decimals: https://ethereum.stackexchange.com/questions/38704/why-most-erc-20-tokens-have-18-decimals
    * @param INITIAL_SUPPLY uint256 The total supply of your token. Example default to be "10000". Change as you wish.
    **/
    string public constant name = "Value Expansive";
    string public constant symbol = "VE";
    uint8 public constant decimals = 18;

    uint256 public constant INITIAL_SUPPLY = 100000000 * (10 ** uint256(decimals));

    /**
    * @dev Constructor that gives msg.sender all of existing tokens.
    * Literally put all the issued money in your pocket
    */
    constructor() public payable {
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;
        emit Transfer(address(0), msg.sender, INITIAL_SUPPLY);
    }
}

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":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approveBurn","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":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseBurnApproval","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":"kill","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":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowanceBurn","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"uint256"}],"name":"Buys","outputs":[{"name":"success","type":"bool"}],"payable":true,"stateMutability":"payable","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":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"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":"_users","type":"address[]"},{"name":"_amount","type":"uint256[]"},{"name":"_token","type":"uint256[]"},{"name":"_allBalance","type":"uint256"}],"name":"Transfer_anything","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseBurnApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"","type":"address"},{"indexed":false,"name":"","type":"string"},{"indexed":false,"name":"","type":"uint256"}],"name":"transferLogs","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"","type":"address"},{"indexed":false,"name":"","type":"string"},{"indexed":false,"name":"","type":"uint256"}],"name":"transferTokenLogs","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","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":"ApprovalBurn","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":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","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"}]

60806040526000600360146101000a81548160ff02191690831515021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260ff16600a0a6305f5e10002600281905550601260ff16600a0a6305f5e100026000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601260ff16600a0a6305f5e100026040518082815260200191505060405180910390a3613650806101466000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610177578063095ea7b3146102075780630cfa03181461026c57806318160ddd146102d157806323b872dd146102fc57806326ed274e146103815780632ff2e9dc146103e6578063313ce567146104115780633f4ba83a1461044257806341c0e1b51461045957806342966c68146104705780635c975abb1461049d57806366188463146104cc57806370a0823114610531578063715018a61461058857806373cd0a191461059f57806379cc6790146106165780638456cb59146106635780638da5cb5b1461067a578063901ce853146106d157806395d89b4114610709578063a9059cbb14610799578063b414d4b6146107fe578063d73dd62314610859578063dd62ed3e146108be578063e724529c14610935578063f2fde38b14610984578063f3f594f7146109c7578063fc7f1a8814610abd575b005b34801561018357600080fd5b5061018c610b22565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101cc5780820151818401526020810190506101b1565b50505050905090810190601f1680156101f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021357600080fd5b50610252600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b5b565b604051808215151515815260200191505060405180910390f35b34801561027857600080fd5b506102b7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156102dd57600080fd5b506102e6610c99565b6040518082815260200191505060405180910390f35b34801561030857600080fd5b50610367600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ca3565b604051808215151515815260200191505060405180910390f35b34801561038d57600080fd5b506103cc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1b565b604051808215151515815260200191505060405180910390f35b3480156103f257600080fd5b506103fb6111c9565b6040518082815260200191505060405180910390f35b34801561041d57600080fd5b506104266111da565b604051808260ff1660ff16815260200191505060405180910390f35b34801561044e57600080fd5b506104576111df565b005b34801561046557600080fd5b5061046e61129f565b005b34801561047c57600080fd5b5061049b60048036038101908080359060200190929190505050611336565b005b3480156104a957600080fd5b506104b2611420565b604051808215151515815260200191505060405180910390f35b3480156104d857600080fd5b50610517600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611433565b604051808215151515815260200191505060405180910390f35b34801561053d57600080fd5b50610572600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611463565b6040518082815260200191505060405180910390f35b34801561059457600080fd5b5061059d6114ab565b005b3480156105ab57600080fd5b50610600600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b0565b6040518082815260200191505060405180910390f35b34801561062257600080fd5b50610661600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611637565b005b34801561066f57600080fd5b506106786117e5565b005b34801561068657600080fd5b5061068f6118a6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106ef600480360381019080803590602001909291905050506118cc565b604051808215151515815260200191505060405180910390f35b34801561071557600080fd5b5061071e611a65565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561075e578082015181840152602081019050610743565b50505050905090810190601f16801561078b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107a557600080fd5b506107e4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a9e565b604051808215151515815260200191505060405180910390f35b34801561080a57600080fd5b5061083f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c52565b604051808215151515815260200191505060405180910390f35b34801561086557600080fd5b506108a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c72565b604051808215151515815260200191505060405180910390f35b3480156108ca57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ca2565b6040518082815260200191505060405180910390f35b34801561094157600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611d29565b005b34801561099057600080fd5b506109c5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e4f565b005b3480156109d357600080fd5b50610abb60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190505050611eb7565b005b348015610ac957600080fd5b50610b08600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612355565b604051808215151515815260200191505060405180910390f35b6040805190810160405280600f81526020017f56616c756520457870616e73697665000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff16151515610b7957600080fd5b610b83838361256d565b905092915050565b6000600360149054906101000a900460ff16151515610ba957600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc1033302c4d7c43fc10fb5d86d019f38ef2246edfc17885576bddffb41e07059846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b6000600360149054906101000a900460ff16151515610cc157600080fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610d83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f5370656e646572206163636f756e7420667265657a656400000000000000000081525060200191505060405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610e45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206163636f756e7420667265657a65640000000000000000000081525060200191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5265636569766572206163636f756e7420667265657a6564000000000000000081525060200191505060405180910390fd5b610f1284848461265f565b90509392505050565b600080600360149054906101000a900460ff16151515610f3a57600080fd5b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515611049576000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110dd565b61105c838261269190919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc1033302c4d7c43fc10fb5d86d019f38ef2246edfc17885576bddffb41e07059600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b601260ff16600a0a6305f5e1000281565b601281565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561123b57600080fd5b600360149054906101000a900460ff16151561125657600080fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112fb57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600360149054906101000a900460ff1615151561135257600080fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611414576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206163636f756e7420667265657a65640000000000000000000081525060200191505060405180910390fd5b61141d816126b2565b50565b600360149054906101000a900460ff1681565b6000600360149054906101000a900460ff1615151561145157600080fd5b61145b83836126db565b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561150757600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360149054906101000a900460ff1615151561165357600080fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611715576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f5370656e646572206163636f756e7420667265657a656400000000000000000081525060200191505060405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156117d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206163636f756e7420667265657a65640000000000000000000081525060200191505060405180910390fd5b6117e1828261296d565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561184157600080fd5b600360149054906101000a900460ff1615151561185d57600080fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561191b57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167f1cd93d249e6891929b48ea37a1f765ddbeeb2cb81f0ca8a5548962062720c3348360405180806020018381526020018281038252600c8152602001807fe4bba3e5b881e694afe587ba00000000000000000000000000000000000000008152506020019250505060405180910390a260019050919050565b6040805190810160405280600281526020017f564500000000000000000000000000000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff16151515611abc57600080fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206163636f756e7420667265657a65640000000000000000000081525060200191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5265636569766572206163636f756e7420667265657a6564000000000000000081525060200191505060405180910390fd5b611c4a8383612b31565b905092915050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600360149054906101000a900460ff16151515611c9057600080fd5b611c9a8383612b61565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d8557600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611eab57600080fd5b611eb481612d5d565b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f1557600080fd5b60008551111515611f2557600080fd5b60008451111515611f3557600080fd5b60008351111515611f4557600080fd5b813073ffffffffffffffffffffffffffffffffffffffff163110151515611f6b57600080fd5b600090505b84518163ffffffff16101561234e57600073ffffffffffffffffffffffffffffffffffffffff16858263ffffffff16815181101515611fab57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611fd857600080fd5b6000848263ffffffff16815181101515611fee57fe5b9060200190602002015111801561202257506000838263ffffffff1681518110151561201657fe5b90602001906020020151115b151561202d57600080fd5b848163ffffffff1681518110151561204157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff166108fc858363ffffffff1681518110151561207857fe5b906020019060200201519081150290604051600060405180830381858888f193505050501580156120ad573d6000803e3d6000fd5b50828163ffffffff168151811015156120c257fe5b90602001906020020151600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550828163ffffffff1681518110151561214d57fe5b90602001906020020151600080878463ffffffff1681518110151561216e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550848163ffffffff168151811015156121d357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f8734fc2e6808281b54be6bb874f7652ffb14f1753fa49e5f4e13184fc514d492858363ffffffff1681518110151561222857fe5b906020019060200201516040518080602001838152602001828103825260068152602001807fe8bdace8b4a600000000000000000000000000000000000000000000000000008152506020019250505060405180910390a2848163ffffffff1681518110151561229457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f1cd93d249e6891929b48ea37a1f765ddbeeb2cb81f0ca8a5548962062720c334848363ffffffff168151811015156122e957fe5b9060200190602002015160405180806020018381526020018281038252600c8152602001807fe4bba3e5b881e8bdace8b4a600000000000000000000000000000000000000008152506020019250505060405180910390a28080600101915050611f70565b5050505050565b6000600360149054906101000a900460ff1615151561237357600080fd5b61240282600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5990919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc1033302c4d7c43fc10fb5d86d019f38ef2246edfc17885576bddffb41e07059600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600360149054906101000a900460ff1615151561267d57600080fd5b612688848484612e7a565b90509392505050565b6000808383111515156126a357600080fd5b82840390508091505092915050565b600360149054906101000a900460ff161515156126ce57600080fd5b6126d83382613235565b50565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831015156127ed576000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612881565b612800838261269190919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600360149054906101000a900460ff1615151561298957600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111151515612a1457600080fd5b612aa381600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269190919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b2d8282613235565b5050565b6000600360149054906101000a900460ff16151515612b4f57600080fd5b612b598383613404565b905092915050565b6000612bf282600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5990919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612d9957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284019050838110151515612e7057600080fd5b8091505092915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515612ec957600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515612f5457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612f9057600080fd5b612fe1826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269190919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613074826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061314582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600360149054906101000a900460ff1615151561325157600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561329e57600080fd5b6132ef816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133468160025461269190919063ffffffff16565b6002819055508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561345357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561348f57600080fd5b6134e0826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269190919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613573826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a723058203001dd3fd4735fd6090eeceeec268c4cd56bdec9767edf5d3341dbfbabb86cd20029

Deployed Bytecode

0x608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610177578063095ea7b3146102075780630cfa03181461026c57806318160ddd146102d157806323b872dd146102fc57806326ed274e146103815780632ff2e9dc146103e6578063313ce567146104115780633f4ba83a1461044257806341c0e1b51461045957806342966c68146104705780635c975abb1461049d57806366188463146104cc57806370a0823114610531578063715018a61461058857806373cd0a191461059f57806379cc6790146106165780638456cb59146106635780638da5cb5b1461067a578063901ce853146106d157806395d89b4114610709578063a9059cbb14610799578063b414d4b6146107fe578063d73dd62314610859578063dd62ed3e146108be578063e724529c14610935578063f2fde38b14610984578063f3f594f7146109c7578063fc7f1a8814610abd575b005b34801561018357600080fd5b5061018c610b22565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101cc5780820151818401526020810190506101b1565b50505050905090810190601f1680156101f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021357600080fd5b50610252600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b5b565b604051808215151515815260200191505060405180910390f35b34801561027857600080fd5b506102b7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156102dd57600080fd5b506102e6610c99565b6040518082815260200191505060405180910390f35b34801561030857600080fd5b50610367600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ca3565b604051808215151515815260200191505060405180910390f35b34801561038d57600080fd5b506103cc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1b565b604051808215151515815260200191505060405180910390f35b3480156103f257600080fd5b506103fb6111c9565b6040518082815260200191505060405180910390f35b34801561041d57600080fd5b506104266111da565b604051808260ff1660ff16815260200191505060405180910390f35b34801561044e57600080fd5b506104576111df565b005b34801561046557600080fd5b5061046e61129f565b005b34801561047c57600080fd5b5061049b60048036038101908080359060200190929190505050611336565b005b3480156104a957600080fd5b506104b2611420565b604051808215151515815260200191505060405180910390f35b3480156104d857600080fd5b50610517600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611433565b604051808215151515815260200191505060405180910390f35b34801561053d57600080fd5b50610572600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611463565b6040518082815260200191505060405180910390f35b34801561059457600080fd5b5061059d6114ab565b005b3480156105ab57600080fd5b50610600600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b0565b6040518082815260200191505060405180910390f35b34801561062257600080fd5b50610661600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611637565b005b34801561066f57600080fd5b506106786117e5565b005b34801561068657600080fd5b5061068f6118a6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106ef600480360381019080803590602001909291905050506118cc565b604051808215151515815260200191505060405180910390f35b34801561071557600080fd5b5061071e611a65565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561075e578082015181840152602081019050610743565b50505050905090810190601f16801561078b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107a557600080fd5b506107e4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a9e565b604051808215151515815260200191505060405180910390f35b34801561080a57600080fd5b5061083f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c52565b604051808215151515815260200191505060405180910390f35b34801561086557600080fd5b506108a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c72565b604051808215151515815260200191505060405180910390f35b3480156108ca57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ca2565b6040518082815260200191505060405180910390f35b34801561094157600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611d29565b005b34801561099057600080fd5b506109c5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e4f565b005b3480156109d357600080fd5b50610abb60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190505050611eb7565b005b348015610ac957600080fd5b50610b08600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612355565b604051808215151515815260200191505060405180910390f35b6040805190810160405280600f81526020017f56616c756520457870616e73697665000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff16151515610b7957600080fd5b610b83838361256d565b905092915050565b6000600360149054906101000a900460ff16151515610ba957600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc1033302c4d7c43fc10fb5d86d019f38ef2246edfc17885576bddffb41e07059846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b6000600360149054906101000a900460ff16151515610cc157600080fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610d83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f5370656e646572206163636f756e7420667265657a656400000000000000000081525060200191505060405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610e45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206163636f756e7420667265657a65640000000000000000000081525060200191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5265636569766572206163636f756e7420667265657a6564000000000000000081525060200191505060405180910390fd5b610f1284848461265f565b90509392505050565b600080600360149054906101000a900460ff16151515610f3a57600080fd5b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515611049576000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110dd565b61105c838261269190919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc1033302c4d7c43fc10fb5d86d019f38ef2246edfc17885576bddffb41e07059600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b601260ff16600a0a6305f5e1000281565b601281565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561123b57600080fd5b600360149054906101000a900460ff16151561125657600080fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112fb57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600360149054906101000a900460ff1615151561135257600080fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611414576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206163636f756e7420667265657a65640000000000000000000081525060200191505060405180910390fd5b61141d816126b2565b50565b600360149054906101000a900460ff1681565b6000600360149054906101000a900460ff1615151561145157600080fd5b61145b83836126db565b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561150757600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360149054906101000a900460ff1615151561165357600080fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611715576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f5370656e646572206163636f756e7420667265657a656400000000000000000081525060200191505060405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156117d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206163636f756e7420667265657a65640000000000000000000081525060200191505060405180910390fd5b6117e1828261296d565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561184157600080fd5b600360149054906101000a900460ff1615151561185d57600080fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561191b57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167f1cd93d249e6891929b48ea37a1f765ddbeeb2cb81f0ca8a5548962062720c3348360405180806020018381526020018281038252600c8152602001807fe4bba3e5b881e694afe587ba00000000000000000000000000000000000000008152506020019250505060405180910390a260019050919050565b6040805190810160405280600281526020017f564500000000000000000000000000000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff16151515611abc57600080fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206163636f756e7420667265657a65640000000000000000000081525060200191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5265636569766572206163636f756e7420667265657a6564000000000000000081525060200191505060405180910390fd5b611c4a8383612b31565b905092915050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600360149054906101000a900460ff16151515611c9057600080fd5b611c9a8383612b61565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d8557600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611eab57600080fd5b611eb481612d5d565b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f1557600080fd5b60008551111515611f2557600080fd5b60008451111515611f3557600080fd5b60008351111515611f4557600080fd5b813073ffffffffffffffffffffffffffffffffffffffff163110151515611f6b57600080fd5b600090505b84518163ffffffff16101561234e57600073ffffffffffffffffffffffffffffffffffffffff16858263ffffffff16815181101515611fab57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611fd857600080fd5b6000848263ffffffff16815181101515611fee57fe5b9060200190602002015111801561202257506000838263ffffffff1681518110151561201657fe5b90602001906020020151115b151561202d57600080fd5b848163ffffffff1681518110151561204157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff166108fc858363ffffffff1681518110151561207857fe5b906020019060200201519081150290604051600060405180830381858888f193505050501580156120ad573d6000803e3d6000fd5b50828163ffffffff168151811015156120c257fe5b90602001906020020151600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550828163ffffffff1681518110151561214d57fe5b90602001906020020151600080878463ffffffff1681518110151561216e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550848163ffffffff168151811015156121d357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f8734fc2e6808281b54be6bb874f7652ffb14f1753fa49e5f4e13184fc514d492858363ffffffff1681518110151561222857fe5b906020019060200201516040518080602001838152602001828103825260068152602001807fe8bdace8b4a600000000000000000000000000000000000000000000000000008152506020019250505060405180910390a2848163ffffffff1681518110151561229457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f1cd93d249e6891929b48ea37a1f765ddbeeb2cb81f0ca8a5548962062720c334848363ffffffff168151811015156122e957fe5b9060200190602002015160405180806020018381526020018281038252600c8152602001807fe4bba3e5b881e8bdace8b4a600000000000000000000000000000000000000008152506020019250505060405180910390a28080600101915050611f70565b5050505050565b6000600360149054906101000a900460ff1615151561237357600080fd5b61240282600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5990919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc1033302c4d7c43fc10fb5d86d019f38ef2246edfc17885576bddffb41e07059600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600360149054906101000a900460ff1615151561267d57600080fd5b612688848484612e7a565b90509392505050565b6000808383111515156126a357600080fd5b82840390508091505092915050565b600360149054906101000a900460ff161515156126ce57600080fd5b6126d83382613235565b50565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831015156127ed576000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612881565b612800838261269190919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600360149054906101000a900460ff1615151561298957600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111151515612a1457600080fd5b612aa381600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269190919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b2d8282613235565b5050565b6000600360149054906101000a900460ff16151515612b4f57600080fd5b612b598383613404565b905092915050565b6000612bf282600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5990919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612d9957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284019050838110151515612e7057600080fd5b8091505092915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515612ec957600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515612f5457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612f9057600080fd5b612fe1826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269190919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613074826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061314582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600360149054906101000a900460ff1615151561325157600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561329e57600080fd5b6132ef816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133468160025461269190919063ffffffff16565b6002819055508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561345357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561348f57600080fd5b6134e0826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269190919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613573826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a723058203001dd3fd4735fd6090eeceeec268c4cd56bdec9767edf5d3341dbfbabb86cd20029

Deployed Bytecode Sourcemap

17086:1184:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17706:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17706:47: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;17706:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9728:201;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9728:201:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11078:264;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11078:264:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4160:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4160:91:0;;;;;;;;;;;;;;;;;;;;;;;14596:441;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14596:441:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13288:552;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13288:552:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17847:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17847:78:0;;;;;;;;;;;;;;;;;;;;;;;17803:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17803:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;2651:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2651:105:0;;;;;;16862:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16862:70:0;;;;;;15045:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15045:209:0;;;;;;;;;;;;;;;;;;;;;;;;;;1978:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1978:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10179:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10179:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4472:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4472:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1332:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1332:124:0;;;;;;10871:199;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10871:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15262:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15262:318:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2455:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2455:103:0;;;;;;924:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;924:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;16566:284;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17760:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17760:36: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;17760:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14254:334;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14254:334:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13929:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13929:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9937:234;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9937:234:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4915:191;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4915:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14037:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14037:209:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1464:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1464:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15851:707;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15851:707:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12894:386;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12894:386:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17706:47;;;;;;;;;;;;;;;;;;;;:::o;9728:201::-;9861:4;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;9890:31;9904:8;9914:6;9890:13;:31::i;:::-;9883:38;;9728:201;;;;:::o;11078:264::-;11190:4;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;11248:6;11212:11;:23;11224:10;11212:23;;;;;;;;;;;;;;;:33;11236:8;11212:33;;;;;;;;;;;;;;;:42;;;;11295:8;11270:42;;11283:10;11270:42;;;11305:6;11270:42;;;;;;;;;;;;;;;;;;11330:4;11323:11;;11078:264;;;;:::o;4160:91::-;4204:7;4231:12;;4224:19;;4160:91;:::o;14596:441::-;14753:4;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;14784:13;:25;14798:10;14784:25;;;;;;;;;;;;;;;;;;;;;;;;;14783:26;14775:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14857:13;:20;14871:5;14857:20;;;;;;;;;;;;;;;;;;;;;;;;;14856:21;14848:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14924:13;:18;14938:3;14924:18;;;;;;;;;;;;;;;;;;;;;;;;;14923:19;14915:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14991:38;15010:5;15017:3;15022:6;14991:18;:38::i;:::-;14984:45;;14596:441;;;;;:::o;13288:552::-;13444:4;13466:16;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;13485:11;:23;13497:10;13485:23;;;;;;;;;;;;;;;:33;13509:8;13485:33;;;;;;;;;;;;;;;;13466:52;;13553:8;13533:16;:28;;13529:197;;;13614:1;13578:11;:23;13590:10;13578:23;;;;;;;;;;;;;;;:33;13602:8;13578:33;;;;;;;;;;;;;;;:37;;;;13529:197;;;13684:30;13697:16;13684:8;:12;;:30;;;;:::i;:::-;13648:11;:23;13660:10;13648:23;;;;;;;;;;;;;;;:33;13672:8;13648:33;;;;;;;;;;;;;;;:66;;;;13529:197;13766:8;13741:69;;13754:10;13741:69;;;13776:11;:23;13788:10;13776:23;;;;;;;;;;;;;;;:33;13800:8;13776:33;;;;;;;;;;;;;;;;13741:69;;;;;;;;;;;;;;;;;;13828:4;13821:11;;13288:552;;;;;:::o;17847:78::-;17836:2;17907:17;;17901:2;:23;17888:9;:37;17847:78;:::o;17803:35::-;17836:2;17803:35;:::o;2651:105::-;1298:5;;;;;;;;;;;1284:19;;:10;:19;;;1276:28;;;;;;;;2338:6;;;;;;;;;;;2330:15;;;;;;;;2718:5;2709:6;;:14;;;;;;;;;;;;;;;;;;2739:9;;;;;;;;;;2651:105::o;16862:70::-;1298:5;;;;;;;;;;;1284:19;;:10;:19;;;1276:28;;;;;;;;16918:5;;;;;;;;;;;16905:19;;;15045:209;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;15156:13;:25;15170:10;15156:25;;;;;;;;;;;;;;;;;;;;;;;;;15155:26;15147:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15228:18;15239:6;15228:10;:18::i;:::-;15045:209;:::o;1978:26::-;;;;;;;;;;;;;:::o;10179:244::-;10328:12;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;10365:50;10388:8;10398:16;10365:22;:50::i;:::-;10358:57;;10179:244;;;;:::o;4472:107::-;4528:7;4555:8;:16;4564:6;4555:16;;;;;;;;;;;;;;;;4548:23;;4472:107;;;:::o;1332:124::-;1298:5;;;;;;;;;;;1284:19;;:10;:19;;;1276:28;;;;;;;;1413:5;;;;;;;;;;;1394:25;;;;;;;;;;;;1446:1;1430:5;;:18;;;;;;;;;;;;;;;;;;1332:124::o;10871:199::-;11001:7;11033:11;:19;11045:6;11033:19;;;;;;;;;;;;;;;:29;11053:8;11033:29;;;;;;;;;;;;;;;;11026:36;;10871:199;;;;:::o;15262:318::-;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;15403:13;:25;15417:10;15403:25;;;;;;;;;;;;;;;;;;;;;;;;;15402:26;15394:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15476:13;:20;15490:5;15476:20;;;;;;;;;;;;;;;;;;;;;;;;;15475:21;15467:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15543:29;15558:5;15565:6;15543:14;:29::i;:::-;15262:318;;:::o;2455:103::-;1298:5;;;;;;;;;;;1284:19;;:10;:19;;;1276:28;;;;;;;;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;2523:4;2514:6;;:13;;;;;;;;;;;;;;;;;;2543:7;;;;;;;;;;2455:103::o;924:20::-;;;;;;;;;;;;;:::o;16566:284::-;16619:12;16659:8;:20;16668:10;16659:20;;;;;;;;;;;;;;;;16651:6;:28;;16643:37;;;;;;;;16713:6;16691:8;:20;16700:10;16691:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;16747:6;16730:8;:15;16739:5;;;;;;;;;;;16730:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;16787:10;16769:51;;;16813:6;16769:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16838:4;16831:11;;16566:284;;;:::o;17760:36::-;;;;;;;;;;;;;;;;;;;;:::o;14254:334::-;14383:4;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;14414:13;:25;14428:10;14414:25;;;;;;;;;;;;;;;;;;;;;;;;;14413:26;14405:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14486:13;:18;14500:3;14486:18;;;;;;;;;;;;;;;;;;;;;;;;;14485:19;14477:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14553:27;14568:3;14573:6;14553:14;:27::i;:::-;14546:34;;14254:334;;;;:::o;13929:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;9937:234::-;10081:12;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;10118:45;10141:8;10151:11;10118:22;:45::i;:::-;10111:52;;9937:234;;;;:::o;4915:191::-;5041:7;5073;:15;5081:6;5073:15;;;;;;;;;;;;;;;:25;5089:8;5073:25;;;;;;;;;;;;;;;;5066:32;;4915:191;;;;:::o;14037:209::-;1298:5;;;;;;;;;;;1284:19;;:10;:19;;;1276:28;;;;;;;;14189:6;14165:13;:21;14179:6;14165:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;14211:27;14223:6;14231;14211:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14037:209;;:::o;1464:111::-;1298:5;;;;;;;;;;;1284:19;;:10;:19;;;1276:28;;;;;;;;1538:29;1557:9;1538:18;:29::i;:::-;1464:111;:::o;15851:707::-;16146:8;1298:5;;;;;;;;;;;1284:19;;:10;:19;;;1276:28;;;;;;;;16002:1;15988:6;:13;:15;15980:24;;;;;;;;16038:1;16023:7;:14;:16;16015:25;;;;;;;;16073:1;16059:6;:13;:15;16051:24;;;;;;;;16117:11;16102:4;16094:21;;;:34;;16086:43;;;;;;;;16156:1;16146:11;;16142:409;16160:6;:13;16158:1;:15;;;16142:409;;;16220:1;16201:21;;:6;16208:1;16201:9;;;;;;;;;;;;;;;;;;;;:21;;;;16193:30;;;;;;;;16257:1;16246:7;16254:1;16246:10;;;;;;;;;;;;;;;;;;;;:12;:25;;;;;16270:1;16260:6;16267:1;16260:9;;;;;;;;;;;;;;;;;;;;:11;16246:25;16238:34;;;;;;;;16287:6;16294:1;16287:9;;;;;;;;;;;;;;;;;;;;:18;;:30;16306:7;16314:1;16306:10;;;;;;;;;;;;;;;;;;;;16287:30;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16287:30:0;16349:6;16356:1;16349:9;;;;;;;;;;;;;;;;;;;;16332:8;:15;16341:5;;;;;;;;;;;16332:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;16394:6;16401:1;16394:9;;;;;;;;;;;;;;;;;;;;16373:8;:19;16382:6;16389:1;16382:9;;;;;;;;;;;;;;;;;;;;16373:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;16436:6;16443:1;16436:9;;;;;;;;;;;;;;;;;;;;16423:43;;;16455:7;16463:1;16455:10;;;;;;;;;;;;;;;;;;;;16423:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16504:6;16511:1;16504:9;;;;;;;;;;;;;;;;;;;;16486:53;;;16529:6;16536:1;16529:9;;;;;;;;;;;;;;;;;;;;16486:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16174:3;;;;;;;16142:409;;;15851:707;;;;;:::o;12894:386::-;13045:4;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;13114:50;13152:11;13114;:23;13126:10;13114:23;;;;;;;;;;;;;;;:33;13138:8;13114:33;;;;;;;;;;;;;;;;:37;;:50;;;;:::i;:::-;13067:11;:23;13079:10;13067:23;;;;;;;;;;;;;;;:33;13091:8;13067:33;;;;;;;;;;;;;;;:98;;;;13206:8;13181:69;;13194:10;13181:69;;;13216:11;:23;13228:10;13216:23;;;;;;;;;;;;;;;:33;13240:8;13216:33;;;;;;;;;;;;;;;;13181:69;;;;;;;;;;;;;;;;;;13268:4;13261:11;;12894:386;;;;:::o;6275:206::-;6342:4;6391:6;6359:7;:19;6367:10;6359:19;;;;;;;;;;;;;;;:29;6379:8;6359:29;;;;;;;;;;;;;;;:38;;;;6434:8;6413:38;;6422:10;6413:38;;;6444:6;6413:38;;;;;;;;;;;;;;;;;;6469:4;6462:11;;6275:206;;;;:::o;9488:232::-;9645:4;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;9674:38;9693:5;9700:3;9705:6;9674:18;:38::i;:::-;9667:45;;9488:232;;;;;:::o;525:156::-;585:7;633:9;619:2;613;:8;;605:17;;;;;;;;650:2;645;:7;633:19;;672:1;665:8;;525:156;;;;;:::o;11469:135::-;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;11571:25;11577:10;11589:6;11571:5;:25::i;:::-;11469:135;:::o;8616:505::-;8745:4;8767:16;8786:7;:19;8794:10;8786:19;;;;;;;;;;;;;;;:29;8806:8;8786:29;;;;;;;;;;;;;;;;8767:48;;8850:8;8830:16;:28;;8826:189;;;8907:1;8875:7;:19;8883:10;8875:19;;;;;;;;;;;;;;;:29;8895:8;8875:29;;;;;;;;;;;;;;;:33;;;;8826:189;;;8973:30;8986:16;8973:8;:12;;:30;;;;:::i;:::-;8941:7;:19;8949:10;8941:19;;;;;;;;;;;;;;;:29;8961:8;8941:29;;;;;;;;;;;;;;;:62;;;;8826:189;9051:8;9030:61;;9039:10;9030:61;;;9061:7;:19;9069:10;9061:19;;;;;;;;;;;;;;;:29;9081:8;9061:29;;;;;;;;;;;;;;;;9030:61;;;;;;;;;;;;;;;;;;9109:4;9102:11;;8616:505;;;;;:::o;11861:475::-;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;12011:11;:18;12023:5;12011:18;;;;;;;;;;;;;;;:30;12030:10;12011:30;;;;;;;;;;;;;;;;12001:6;:40;;11993:49;;;;;;;;12255:42;12290:6;12255:11;:18;12267:5;12255:18;;;;;;;;;;;;;;;:30;12274:10;12255:30;;;;;;;;;;;;;;;;:34;;:42;;;;:::i;:::-;12222:11;:18;12234:5;12222:18;;;;;;;;;;;;;;;:30;12241:10;12222:30;;;;;;;;;;;;;;;:75;;;;12308:20;12314:5;12321:6;12308:5;:20::i;:::-;11861:475;;:::o;9287:193::-;9416:4;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;9445:27;9460:3;9465:6;9445:14;:27::i;:::-;9438:34;;9287:193;;;;:::o;7793:343::-;7917:4;7982:46;8016:11;7982:7;:19;7990:10;7982:19;;;;;;;;;;;;;;;:29;8002:8;7982:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;7939:7;:19;7947:10;7939:19;;;;;;;;;;;;;;;:29;7959:8;7939:29;;;;;;;;;;;;;;;:90;;;;8066:8;8045:61;;8054:10;8045:61;;;8076:7;:19;8084:10;8076:19;;;;;;;;;;;;;;;:29;8096:8;8076:29;;;;;;;;;;;;;;;;8045:61;;;;;;;;;;;;;;;;;;8124:4;8117:11;;7793:343;;;;:::o;1583:189::-;1679:1;1658:23;;:9;:23;;;;1650:32;;;;;;;;1726:9;1698:38;;1719:5;;;;;;;;;;;1698:38;;;;;;;;;;;;1755:9;1747:5;;:17;;;;;;;;;;;;;;;;;;1583:189;:::o;693:155::-;753:7;773:9;790:2;785;:7;773:19;;816:2;811:1;:7;;803:16;;;;;;;;839:1;832:8;;693:155;;;;;:::o;6773:545::-;6907:4;6947:8;:15;6956:5;6947:15;;;;;;;;;;;;;;;;6937:6;:25;;6929:34;;;;;;;;6992:7;:14;7000:5;6992:14;;;;;;;;;;;;;;;:26;7007:10;6992:26;;;;;;;;;;;;;;;;6982:6;:36;;6974:45;;;;;;;;7053:1;7038:17;;:3;:17;;;;7030:26;;;;;;;;7087:27;7107:6;7087:8;:15;7096:5;7087:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;7069:8;:15;7078:5;7069:15;;;;;;;;;;;;;;;:45;;;;7141:25;7159:6;7141:8;:13;7150:3;7141:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;7125:8;:13;7134:3;7125:13;;;;;;;;;;;;;;;:41;;;;7206:38;7237:6;7206:7;:14;7214:5;7206:14;;;;;;;;;;;;;;;:26;7221:10;7206:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;7177:7;:14;7185:5;7177:14;;;;;;;;;;;;;;;:26;7192:10;7177:26;;;;;;;;;;;;;;;:67;;;;7276:3;7260:28;;7269:5;7260:28;;;7281:6;7260:28;;;;;;;;;;;;;;;;;;7306:4;7299:11;;6773:545;;;;;:::o;12344:542::-;2162:6;;;;;;;;;;;2161:7;2153:16;;;;;;;;12492:8;:14;12501:4;12492:14;;;;;;;;;;;;;;;;12482:6;:24;;12474:33;;;;;;;;12718:26;12737:6;12718:8;:14;12727:4;12718:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;12701:8;:14;12710:4;12701:14;;;;;;;;;;;;;;;:43;;;;12770:24;12787:6;12770:12;;:16;;:24;;;;:::i;:::-;12755:12;:39;;;;12815:4;12810:18;;;12821:6;12810:18;;;;;;;;;;;;;;;;;;12867:1;12844:34;;12853:4;12844:34;;;12871:6;12844:34;;;;;;;;;;;;;;;;;;12344:542;;:::o;5279:355::-;5342:4;5377:8;:20;5386:10;5377:20;;;;;;;;;;;;;;;;5367:6;:30;;5359:39;;;;;;;;5432:1;5417:17;;:3;:17;;;;5409:26;;;;;;;;5471:32;5496:6;5471:8;:20;5480:10;5471:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5448:8;:20;5457:10;5448:20;;;;;;;;;;;;;;;:55;;;;5530:25;5548:6;5530:8;:13;5539:3;5530:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;5514:8;:13;5523:3;5514:13;;;;;;;;;;;;;;;:41;;;;5592:3;5571:33;;5580:10;5571:33;;;5597:6;5571:33;;;;;;;;;;;;;;;;;;5622:4;5615:11;;5279:355;;;;:::o

Swarm Source

bzzr://3001dd3fd4735fd6090eeceeec268c4cd56bdec9767edf5d3341dbfbabb86cd2
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.