ETH Price: $3,200.88 (+5.02%)

Token

Wesion (Wesion)
 

Overview

Max Total Supply

8,009,167,400 Wesion

Holders

4,924

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
1,003 Wesion

Value
$0.00
0x66617b291659e6a625680662429f8e06a4914295
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:
Wesion

Compiler Version
v0.5.7+commit.6da8b019

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.5.7;

/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error.
 */
library SafeMath {
    /**
     * @dev Adds two unsigned integers, reverts on overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }

    /**
     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
     * @dev Multiplies two unsigned integers, reverts on overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
     * @dev Integer division of two unsigned integers truncating the quotient,
     * reverts on division by zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b > 0);
        uint256 c = a / b;
        assert(a == b * c + a % b);
        return a / b;
    }

    /**
     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
     * reverts when dividing by zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}


/**
 * @title ERC20 interface
 * @dev see https://eips.ethereum.org/EIPS/eip-20
 */
interface IERC20{
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function approve(address spender, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


/**
 * @title Ownable
 */
contract Ownable {
    address internal _owner;

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

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract
     * to the sender account.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) external onlyOwner {
        require(newOwner != address(0));
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
    }

    /**
     * @dev Rescue compatible ERC20 Token
     *
     * @param tokenAddr ERC20 The address of the ERC20 token contract
     * @param receiver The address of the receiver
     * @param amount uint256
     */
    function rescueTokens(address tokenAddr, address receiver, uint256 amount) external onlyOwner {
        IERC20 _token = IERC20(tokenAddr);
        require(receiver != address(0));
        uint256 balance = _token.balanceOf(address(this));

        require(balance >= amount);
        assert(_token.transfer(receiver, amount));
    }

    /**
     * @dev Withdraw Ether
     */
    function withdrawEther(address payable to, uint256 amount) external onlyOwner {
        require(to != address(0));

        uint256 balance = address(this).balance;

        require(balance >= amount);
        to.transfer(amount);
    }
}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
    bool private _paused;

    event Paused(address account);
    event Unpaused(address account);

    constructor () internal {
        _paused = false;
    }

    /**
     * @return Returns true if the contract is paused, false otherwise.
     */
    function paused() public view returns (bool) {
        return _paused;
    }

    /**
     * @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 a pauser to pause, triggers stopped state.
     */
    function pause() external onlyOwner whenNotPaused {
        _paused = true;
        emit Paused(msg.sender);
    }

    /**
     * @dev Called by a pauser to unpause, returns to normal state.
     */
    function unpause() external onlyOwner whenPaused {
        _paused = false;
        emit Unpaused(msg.sender);
    }
}

/**
 * @title Wesion Main Contract
 */
contract Wesion is Ownable, Pausable, IERC20 {
    using SafeMath for uint256;

    string private _name = "Wesion";
    string private _symbol = "Wesion";
    uint8 private _decimals = 6;                // 6 decimals
    uint256 private _cap = 35000000000000000;   // 35 billion cap, that is 35000000000.000000
    uint256 private _totalSupply;

    mapping (address => bool) private _minter;
    event Mint(address indexed to, uint256 value);
    event MinterChanged(address account, bool state);

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowed;

    bool private _allowWhitelistRegistration;
    mapping(address => address) private _referrer;
    mapping(address => uint256) private _refCount;

    event WesionSaleWhitelistRegistered(address indexed addr, address indexed refAddr);
    event WesionSaleWhitelistTransferred(address indexed previousAddr, address indexed _newAddr);
    event WesionSaleWhitelistRegistrationEnabled();
    event WesionSaleWhitelistRegistrationDisabled();

    uint256 private _whitelistRegistrationValue = 1001000000;   // 1001 Wesion, 1001.000000
    uint256[15] private _whitelistRefRewards = [                // 100% Reward
        301000000,  // 301 Wesion for Level.1
        200000000,  // 200 Wesion for Level.2
        100000000,  // 100 Wesion for Level.3
        100000000,  // 100 Wesion for Level.4
        100000000,  // 100 Wesion for Level.5
        50000000,   //  50 Wesion for Level.6
        40000000,   //  40 Wesion for Level.7
        30000000,   //  30 Wesion for Level.8
        20000000,   //  20 Wesion for Level.9
        10000000,   //  10 Wesion for Level.10
        10000000,   //  10 Wesion for Level.11
        10000000,   //  10 Wesion for Level.12
        10000000,   //  10 Wesion for Level.13
        10000000,   //  10 Wesion for Level.14
        10000000    //  10 Wesion for Level.15
    ];

    event Donate(address indexed account, uint256 amount);

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

    /**
     * @dev Constructor
     */
    constructor() public {
        _minter[msg.sender] = true;
        _allowWhitelistRegistration = true;

        emit WesionSaleWhitelistRegistrationEnabled();

        _referrer[msg.sender] = msg.sender;
        emit WesionSaleWhitelistRegistered(msg.sender, msg.sender);
    }


    /**
     * @dev donate
     */
    function () external payable {
        emit Donate(msg.sender, msg.value);
    }


    /**
     * @return the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @return the symbol of the token.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @return the number of decimals of the token.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

    /**
     * @return the cap for the token minting.
     */
    function cap() public view returns (uint256) {
        return _cap;
    }

    /**
     * @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 balance of.
     * @return A 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 to a specified address.
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     */
    function transfer(address to, uint256 value) public whenNotPaused returns (bool) {
        if (_allowWhitelistRegistration && value == _whitelistRegistrationValue
            && inWhitelist(to) && !inWhitelist(msg.sender) && isNotContract(msg.sender)) {
            // Register whitelist for Wesion-Sale
            _regWhitelist(msg.sender, to);
            return true;
        } else {
            // Normal Transfer
            _transfer(msg.sender, to, value);
            return true;
        }
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * @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) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     * @param spender The address which will spend the funds.
     * @param addedValue The amount of tokens to increase the allowance by.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * @param spender The address which will spend the funds.
     * @param subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].sub(subtractedValue));
        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 whenNotPaused returns (bool) {
        require(_allowed[from][msg.sender] >= value);
        _transfer(from, to, value);
        _approve(from, msg.sender, _allowed[from][msg.sender].sub(value));
        return true;
    }

    /**
     * @dev Transfer token for a specified addresses.
     * @param from The address to transfer from.
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     */
    function _transfer(address from, address to, uint256 value) internal {
        require(to != address(0));

        _balances[from] = _balances[from].sub(value);
        _balances[to] = _balances[to].add(value);
        emit Transfer(from, to, value);
    }

    /**
     * @dev Approve an address to spend another addresses' tokens.
     * @param owner The address that owns the tokens.
     * @param spender The address that will spend the tokens.
     * @param value The number of tokens that can be spent.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0));
        require(spender != address(0));

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


    /**
     * @dev Throws if called by account not a minter.
     */
    modifier onlyMinter() {
        require(_minter[msg.sender]);
        _;
    }

    /**
     * @dev Returns true if the given account is minter.
     */
    function isMinter(address account) public view returns (bool) {
        return _minter[account];
    }

    /**
     * @dev Set a minter state
     */
    function setMinterState(address account, bool state) external onlyOwner {
        _minter[account] = state;
        emit MinterChanged(account, state);
    }

    /**
     * @dev Function to mint tokens
     * @param to The address that will receive the minted tokens.
     * @param value The amount of tokens to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(address to, uint256 value) public onlyMinter returns (bool) {
        _mint(to, value);
        return true;
    }

    /**
     * @dev Internal function that mints an amount of the token and assigns it to an account.
     * @param account The account that will receive the created tokens.
     * @param value The amount that will be created.
     */
    function _mint(address account, uint256 value) internal {
        require(_totalSupply.add(value) <= _cap);
        require(account != address(0));

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

    /**
     * @dev Throws if called by account not in whitelist.
     */
    modifier onlyInWhitelist() {
        require(_referrer[msg.sender] != address(0));
        _;
    }

    /**
     * @dev Returns true if the whitelist registration is allowed.
     */
    function allowWhitelistRegistration() public view returns (bool) {
        return _allowWhitelistRegistration;
    }

    /**
     * @dev Returns true if the given account is in whitelist.
     */
    function inWhitelist(address account) public view returns (bool) {
        return _referrer[account] != address(0);
    }

    /**
     * @dev Returns the referrer of a given account address
     */
    function referrer(address account) public view returns (address) {
        return _referrer[account];
    }

    /**
     * @dev Returns the referrals count of a given account address
     */
    function refCount(address account) public view returns (uint256) {
        return _refCount[account];
    }

    /**
     * @dev Disable Wesion-Sale whitelist registration. Unrecoverable!
     */
    function disableWesionSaleWhitelistRegistration() external onlyOwner {
        _allowWhitelistRegistration = false;
        emit WesionSaleWhitelistRegistrationDisabled();
    }

    /**
     * @dev Register whitelist for Wesion-Sale
     */
    function _regWhitelist(address account, address refAccount) internal {
        _refCount[refAccount] = _refCount[refAccount].add(1);
        _referrer[account] = refAccount;

        emit WesionSaleWhitelistRegistered(account, refAccount);

        // Whitelist Registration Referral Reward
        _transfer(msg.sender, address(this), _whitelistRegistrationValue);
        address cursor = account;
        uint256 remain = _whitelistRegistrationValue;
        uint256 _rebackToContract = 0;
        for(uint i = 0; i < _whitelistRefRewards.length; i++) {
            address receiver = _referrer[cursor];

            if (cursor != receiver) {
                if (_refCount[receiver] > i) {
                    _transfer(address(this), receiver, _whitelistRefRewards[i]);
                    remain = remain.sub(_whitelistRefRewards[i]);
                }
                else {
                    _rebackToContract = _rebackToContract.add(_whitelistRefRewards[i]);
                    remain = remain.sub(_whitelistRefRewards[i]);
                    continue;
                }
            } else {
                _rebackToContract = _rebackToContract.add(remain);
                break;
            }

            cursor = _referrer[cursor];
        }

        if (_rebackToContract > 0) {
            _transfer(address(this), address(this), _rebackToContract);
        }
    }

    /**
     * @dev Transfer the whitelisted address to another.
     */
    function transferWhitelist(address account) external onlyInWhitelist {
        require(isNotContract(account));

        _refCount[account] = _refCount[msg.sender];
        _refCount[msg.sender] = 0;
        _referrer[account] = _referrer[msg.sender];
        _referrer[msg.sender] = address(0);
        emit WesionSaleWhitelistTransferred(msg.sender, account);
    }

    /**
     * @dev Returns true if the given address is not a contract
     */
    function isNotContract(address addr) internal view returns (bool) {
        uint size;
        assembly {
            size := extcodesize(addr)
        }
        return size == 0;
    }

    /**
     * @dev Calculator
     * Returns the reward amount if someone now registers the whitelist directly with the given whitelistedAccount.
     */
    function calculateTheRewardOfDirectWhitelistRegistration(address whitelistedAccount) external view returns (uint256 reward) {
        if (!inWhitelist(whitelistedAccount)) {
            return 0;
        }

        address cursor = whitelistedAccount;
        uint256 remain = _whitelistRegistrationValue;
        for(uint i = 1; i < _whitelistRefRewards.length; i++) {
            address receiver = _referrer[cursor];

            if (cursor != receiver) {
                if (_refCount[receiver] > i) {
                    remain = remain.sub(_whitelistRefRewards[i]);
                }
            } else {
                reward = reward.add(remain);
                break;
            }

            cursor = _referrer[cursor];
        }

        return reward;
    }

    /**
     * @dev owner can transfer the token store in this contract address.
     */
    function withdrawToken(address _to, uint256 _value) public onlyOwner {
        require (_value > 0);
        require (_to != address(0));
        _transfer(address(this), _to, _value);
        emit WithdrawToken(address(this), _to, _value);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"referrer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allowWhitelistRegistration","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"whitelistedAccount","type":"address"}],"name":"calculateTheRewardOfDirectWhitelistRegistration","outputs":[{"name":"reward","type":"uint256"}],"payable":false,"stateMutability":"view","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":"disableWesionSaleWhitelistRegistration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"transferWhitelist","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":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":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"state","type":"bool"}],"name":"setMinterState","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddr","type":"address"},{"name":"receiver","type":"address"},{"name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"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":true,"inputs":[{"name":"account","type":"address"}],"name":"inWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"refCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"state","type":"bool"}],"name":"MinterChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":true,"name":"refAddr","type":"address"}],"name":"WesionSaleWhitelistRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousAddr","type":"address"},{"indexed":true,"name":"_newAddr","type":"address"}],"name":"WesionSaleWhitelistTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WesionSaleWhitelistRegistrationEnabled","type":"event"},{"anonymous":false,"inputs":[],"name":"WesionSaleWhitelistRegistrationDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Donate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"WithdrawToken","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"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526040518060400160405280600681526020017f576573696f6e0000000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000437565b506040518060400160405280600681526020017f576573696f6e0000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000437565b506006600360006101000a81548160ff021916908360ff160217905550667c585087238000600455633baa0c40600c55604051806101e001604052806311f0e54063ffffffff168152602001630bebc20063ffffffff1681526020016305f5e10063ffffffff1681526020016305f5e10063ffffffff1681526020016305f5e10063ffffffff1681526020016302faf08063ffffffff1681526020016302625a0063ffffffff1681526020016301c9c38063ffffffff1681526020016301312d0063ffffffff1681526020016298968063ffffffff1681526020016298968063ffffffff1681526020016298968063ffffffff1681526020016298968063ffffffff1681526020016298968063ffffffff1681526020016298968063ffffffff16815250600d90600f620001d5929190620004be565b50348015620001e357600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060146101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960006101000a81548160ff0219169083151502179055507f20ea370a7b3f53bbbdf24811a458043b3de7ccf350567b711b178a86ea0436a960405160405180910390a133600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3cb0c69accdf622057624e40d3d3ca3ce5d04b96b5e1e052f0e97fcb4f5f905060405160405180910390a362000533565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200047a57805160ff1916838001178555620004ab565b82800160010185558215620004ab579182015b82811115620004aa5782518255916020019190600101906200048d565b5b509050620004ba91906200050b565b5090565b82600f8101928215620004f8579160200282015b82811115620004f7578251829063ffffffff16905591602001919060010190620004d2565b5b5090506200050791906200050b565b5090565b6200053091905b808211156200052c57600081600090555060010162000512565b5090565b90565b612c2080620005436000396000f3fe6080604052600436106101cd5760003560e01c80637cc939ac116100f7578063a746f93a11610095578063dd62ed3e11610064578063dd62ed3e14610b33578063e2aafa2114610bb8578063ec8f95fc14610c21578063f2fde38b14610c86576101cd565b8063a746f93a1461097f578063a9059cbb146109dc578063aa271e1a14610a4f578063cea9d26f14610ab8576101cd565b80638da5cb5b116100d15780638da5cb5b146107ca57806395d89b41146108215780639e281a98146108b1578063a457c2d71461090c576101cd565b80637cc939ac1461074b5780637ffbe241146107625780638456cb59146107b3576101cd565b806336b21ed41161016f578063522f68151161013e578063522f6815146105f75780635c975abb146106525780635ca23ce21461068157806370a08231146106e6576101cd565b806336b21ed4146104cb57806339509351146104fa5780633f4ba83a1461056d57806340c10f1914610584576101cd565b806323b872dd116101ab57806323b872dd1461034b5780632cf003c2146103de578063313ce5671461046f578063355274ea146104a0576101cd565b806306fdde031461021d578063095ea7b3146102ad57806318160ddd14610320575b3373ffffffffffffffffffffffffffffffffffffffff167f0553260a2e46b0577270d8992db02d30856ca880144c72d6e9503760946aef13346040518082815260200191505060405180910390a2005b34801561022957600080fd5b50610232610cd7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610272578082015181840152602081019050610257565b50505050905090810190601f16801561029f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102b957600080fd5b50610306600480360360408110156102d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d79565b604051808215151515815260200191505060405180910390f35b34801561032c57600080fd5b50610335610d90565b6040518082815260200191505060405180910390f35b34801561035757600080fd5b506103c46004803603606081101561036e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d9a565b604051808215151515815260200191505060405180910390f35b3480156103ea57600080fd5b5061042d6004803603602081101561040157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eed565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561047b57600080fd5b50610484610f56565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104ac57600080fd5b506104b5610f6d565b6040518082815260200191505060405180910390f35b3480156104d757600080fd5b506104e0610f77565b604051808215151515815260200191505060405180910390f35b34801561050657600080fd5b506105536004803603604081101561051d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f8e565b604051808215151515815260200191505060405180910390f35b34801561057957600080fd5b50610582611033565b005b34801561059057600080fd5b506105dd600480360360408110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611124565b604051808215151515815260200191505060405180910390f35b34801561060357600080fd5b506106506004803603604081101561061a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611190565b005b34801561065e57600080fd5b50610667611298565b604051808215151515815260200191505060405180910390f35b34801561068d57600080fd5b506106d0600480360360208110156106a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ae565b6040518082815260200191505060405180910390f35b3480156106f257600080fd5b506107356004803603602081101561070957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611480565b6040518082815260200191505060405180910390f35b34801561075757600080fd5b506107606114c9565b005b34801561076e57600080fd5b506107b16004803603602081101561078557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061156b565b005b3480156107bf57600080fd5b506107c8611897565b005b3480156107d657600080fd5b506107df61198a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082d57600080fd5b506108366119b3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561087657808201518184015260208101905061085b565b50505050905090810190601f1680156108a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108bd57600080fd5b5061090a600480360360408110156108d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a55565b005b34801561091857600080fd5b506109656004803603604081101561092f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b69565b604051808215151515815260200191505060405180910390f35b34801561098b57600080fd5b506109da600480360360408110156109a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611c0e565b005b3480156109e857600080fd5b50610a35600480360360408110156109ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d31565b604051808215151515815260200191505060405180910390f35b348015610a5b57600080fd5b50610a9e60048036036020811015610a7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dcb565b604051808215151515815260200191505060405180910390f35b348015610ac457600080fd5b50610b3160048036036060811015610adb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e21565b005b348015610b3f57600080fd5b50610ba260048036036040811015610b5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612051565b6040518082815260200191505060405180910390f35b348015610bc457600080fd5b50610c0760048036036020811015610bdb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120d8565b604051808215151515815260200191505060405180910390f35b348015610c2d57600080fd5b50610c7060048036036020811015610c4457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612170565b6040518082815260200191505060405180910390f35b348015610c9257600080fd5b50610cd560048036036020811015610ca957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121b9565b005b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d6f5780601f10610d4457610100808354040283529160200191610d6f565b820191906000526020600020905b815481529060010190602001808311610d5257829003601f168201915b5050505050905090565b6000610d8633848461230a565b6001905092915050565b6000600554905090565b60008060149054906101000a900460ff1615610db557600080fd5b81600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e3e57600080fd5b610e49848484612469565b610ee28433610edd85600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263790919063ffffffff16565b61230a565b600190509392505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360009054906101000a900460ff16905090565b6000600454905090565b6000600960009054906101000a900460ff16905090565b6000611029338461102485600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b61230a565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108c57600080fd5b600060149054906101000a900460ff166110a557600080fd5b60008060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661117c57600080fd5b6111868383612668565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111e957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561122357600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff163190508181101561124c57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611292573d6000803e3d6000fd5b50505050565b60008060149054906101000a900460ff16905090565b60006112b9826120d8565b6112c6576000905061147b565b60008290506000600c5490506000600190505b600f811015611474576000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146113e95781600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156113e4576113e1600d83600f81106113d057fe5b01548461263790919063ffffffff16565b92505b611404565b6113fc838661264e90919063ffffffff16565b945050611474565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693505080806001019150506112d9565b5082925050505b919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461152257600080fd5b6000600960006101000a81548160ff0219169083151502179055507f484f8576b8d05dcf48990daf95b15eec7ab6657be8bed6d7a42a7559f74b27a260405160405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff16600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561160457600080fd5b61160d8161282d565b61161657600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fba908a576c34808053a30d0c5744d7ed6b741ba628000cbb3b5659656bc21ffc60405160405180910390a350565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118f057600080fd5b600060149054906101000a900460ff161561190a57600080fd5b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a4b5780601f10611a2057610100808354040283529160200191611a4b565b820191906000526020600020905b815481529060010190602001808311611a2e57829003601f168201915b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aae57600080fd5b60008111611abb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611af557600080fd5b611b00308383612469565b8173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f037238854fe57fbf51f09946f854fc3916fe83938d6521f09bd05463839f1304836040518082815260200191505060405180910390a35050565b6000611c043384611bff85600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263790919063ffffffff16565b61230a565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c6757600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04bca3656717d14c20f88f2a0122832cb0d2807bfc66ed9e932a2202cc59f4958282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b60008060149054906101000a900460ff1615611d4c57600080fd5b600960009054906101000a900460ff168015611d695750600c5482145b8015611d7a5750611d79836120d8565b5b8015611d8c5750611d8a336120d8565b155b8015611d9d5750611d9c3361282d565b5b15611db557611dac3384612840565b60019050611dc5565b611dc0338484612469565b600190505b92915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e7a57600080fd5b6000839050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611eb957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f3857600080fd5b505afa158015611f4c573d6000803e3d6000fd5b505050506040513d6020811015611f6257600080fd5b8101908080519060200190929190505050905082811015611f8257600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561200957600080fd5b505af115801561201d573d6000803e3d6000fd5b505050506040513d602081101561203357600080fd5b810190808051906020019092919050505061204a57fe5b5050505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461221257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561224c57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561234457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561237e57600080fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124a357600080fd5b6124f581600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263790919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258a81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008282111561264357fe5b818303905092915050565b600081830190508281101561265f57fe5b80905092915050565b6004546126808260055461264e90919063ffffffff16565b111561268b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126c557600080fd5b6126da8160055461264e90919063ffffffff16565b60058190555061273281600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080823b905060008114915050919050565b6128936001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f3cb0c69accdf622057624e40d3d3ca3ce5d04b96b5e1e052f0e97fcb4f5f905060405160405180910390a36129bb3330600c54612469565b60008290506000600c549050600080905060008090505b600f811015612bd7576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612b4b5781600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612afa57612ad23082600d85600f8110612acb57fe5b0154612469565b612af3600d83600f8110612ae257fe5b01548561263790919063ffffffff16565b9350612b46565b612b1b600d83600f8110612b0a57fe5b01548461264e90919063ffffffff16565b9250612b3e600d83600f8110612b2d57fe5b01548561263790919063ffffffff16565b935050612bca565b612b66565b612b5e848461264e90919063ffffffff16565b925050612bd7565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450505b80806001019150506129d2565b506000811115612bed57612bec303083612469565b5b505050505056fea165627a7a723058202a9b46a3990d45efe607389c91c6814aeea7b1f833f3678bd8571fc4facaf0550029

Deployed Bytecode

0x6080604052600436106101cd5760003560e01c80637cc939ac116100f7578063a746f93a11610095578063dd62ed3e11610064578063dd62ed3e14610b33578063e2aafa2114610bb8578063ec8f95fc14610c21578063f2fde38b14610c86576101cd565b8063a746f93a1461097f578063a9059cbb146109dc578063aa271e1a14610a4f578063cea9d26f14610ab8576101cd565b80638da5cb5b116100d15780638da5cb5b146107ca57806395d89b41146108215780639e281a98146108b1578063a457c2d71461090c576101cd565b80637cc939ac1461074b5780637ffbe241146107625780638456cb59146107b3576101cd565b806336b21ed41161016f578063522f68151161013e578063522f6815146105f75780635c975abb146106525780635ca23ce21461068157806370a08231146106e6576101cd565b806336b21ed4146104cb57806339509351146104fa5780633f4ba83a1461056d57806340c10f1914610584576101cd565b806323b872dd116101ab57806323b872dd1461034b5780632cf003c2146103de578063313ce5671461046f578063355274ea146104a0576101cd565b806306fdde031461021d578063095ea7b3146102ad57806318160ddd14610320575b3373ffffffffffffffffffffffffffffffffffffffff167f0553260a2e46b0577270d8992db02d30856ca880144c72d6e9503760946aef13346040518082815260200191505060405180910390a2005b34801561022957600080fd5b50610232610cd7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610272578082015181840152602081019050610257565b50505050905090810190601f16801561029f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102b957600080fd5b50610306600480360360408110156102d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d79565b604051808215151515815260200191505060405180910390f35b34801561032c57600080fd5b50610335610d90565b6040518082815260200191505060405180910390f35b34801561035757600080fd5b506103c46004803603606081101561036e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d9a565b604051808215151515815260200191505060405180910390f35b3480156103ea57600080fd5b5061042d6004803603602081101561040157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eed565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561047b57600080fd5b50610484610f56565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104ac57600080fd5b506104b5610f6d565b6040518082815260200191505060405180910390f35b3480156104d757600080fd5b506104e0610f77565b604051808215151515815260200191505060405180910390f35b34801561050657600080fd5b506105536004803603604081101561051d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f8e565b604051808215151515815260200191505060405180910390f35b34801561057957600080fd5b50610582611033565b005b34801561059057600080fd5b506105dd600480360360408110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611124565b604051808215151515815260200191505060405180910390f35b34801561060357600080fd5b506106506004803603604081101561061a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611190565b005b34801561065e57600080fd5b50610667611298565b604051808215151515815260200191505060405180910390f35b34801561068d57600080fd5b506106d0600480360360208110156106a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ae565b6040518082815260200191505060405180910390f35b3480156106f257600080fd5b506107356004803603602081101561070957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611480565b6040518082815260200191505060405180910390f35b34801561075757600080fd5b506107606114c9565b005b34801561076e57600080fd5b506107b16004803603602081101561078557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061156b565b005b3480156107bf57600080fd5b506107c8611897565b005b3480156107d657600080fd5b506107df61198a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082d57600080fd5b506108366119b3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561087657808201518184015260208101905061085b565b50505050905090810190601f1680156108a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108bd57600080fd5b5061090a600480360360408110156108d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a55565b005b34801561091857600080fd5b506109656004803603604081101561092f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b69565b604051808215151515815260200191505060405180910390f35b34801561098b57600080fd5b506109da600480360360408110156109a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611c0e565b005b3480156109e857600080fd5b50610a35600480360360408110156109ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d31565b604051808215151515815260200191505060405180910390f35b348015610a5b57600080fd5b50610a9e60048036036020811015610a7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dcb565b604051808215151515815260200191505060405180910390f35b348015610ac457600080fd5b50610b3160048036036060811015610adb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e21565b005b348015610b3f57600080fd5b50610ba260048036036040811015610b5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612051565b6040518082815260200191505060405180910390f35b348015610bc457600080fd5b50610c0760048036036020811015610bdb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120d8565b604051808215151515815260200191505060405180910390f35b348015610c2d57600080fd5b50610c7060048036036020811015610c4457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612170565b6040518082815260200191505060405180910390f35b348015610c9257600080fd5b50610cd560048036036020811015610ca957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121b9565b005b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d6f5780601f10610d4457610100808354040283529160200191610d6f565b820191906000526020600020905b815481529060010190602001808311610d5257829003601f168201915b5050505050905090565b6000610d8633848461230a565b6001905092915050565b6000600554905090565b60008060149054906101000a900460ff1615610db557600080fd5b81600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e3e57600080fd5b610e49848484612469565b610ee28433610edd85600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263790919063ffffffff16565b61230a565b600190509392505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360009054906101000a900460ff16905090565b6000600454905090565b6000600960009054906101000a900460ff16905090565b6000611029338461102485600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b61230a565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108c57600080fd5b600060149054906101000a900460ff166110a557600080fd5b60008060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661117c57600080fd5b6111868383612668565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111e957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561122357600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff163190508181101561124c57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611292573d6000803e3d6000fd5b50505050565b60008060149054906101000a900460ff16905090565b60006112b9826120d8565b6112c6576000905061147b565b60008290506000600c5490506000600190505b600f811015611474576000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146113e95781600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156113e4576113e1600d83600f81106113d057fe5b01548461263790919063ffffffff16565b92505b611404565b6113fc838661264e90919063ffffffff16565b945050611474565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693505080806001019150506112d9565b5082925050505b919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461152257600080fd5b6000600960006101000a81548160ff0219169083151502179055507f484f8576b8d05dcf48990daf95b15eec7ab6657be8bed6d7a42a7559f74b27a260405160405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff16600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561160457600080fd5b61160d8161282d565b61161657600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fba908a576c34808053a30d0c5744d7ed6b741ba628000cbb3b5659656bc21ffc60405160405180910390a350565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118f057600080fd5b600060149054906101000a900460ff161561190a57600080fd5b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a4b5780601f10611a2057610100808354040283529160200191611a4b565b820191906000526020600020905b815481529060010190602001808311611a2e57829003601f168201915b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aae57600080fd5b60008111611abb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611af557600080fd5b611b00308383612469565b8173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f037238854fe57fbf51f09946f854fc3916fe83938d6521f09bd05463839f1304836040518082815260200191505060405180910390a35050565b6000611c043384611bff85600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263790919063ffffffff16565b61230a565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c6757600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04bca3656717d14c20f88f2a0122832cb0d2807bfc66ed9e932a2202cc59f4958282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b60008060149054906101000a900460ff1615611d4c57600080fd5b600960009054906101000a900460ff168015611d695750600c5482145b8015611d7a5750611d79836120d8565b5b8015611d8c5750611d8a336120d8565b155b8015611d9d5750611d9c3361282d565b5b15611db557611dac3384612840565b60019050611dc5565b611dc0338484612469565b600190505b92915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e7a57600080fd5b6000839050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611eb957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f3857600080fd5b505afa158015611f4c573d6000803e3d6000fd5b505050506040513d6020811015611f6257600080fd5b8101908080519060200190929190505050905082811015611f8257600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561200957600080fd5b505af115801561201d573d6000803e3d6000fd5b505050506040513d602081101561203357600080fd5b810190808051906020019092919050505061204a57fe5b5050505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461221257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561224c57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561234457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561237e57600080fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124a357600080fd5b6124f581600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263790919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258a81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008282111561264357fe5b818303905092915050565b600081830190508281101561265f57fe5b80905092915050565b6004546126808260055461264e90919063ffffffff16565b111561268b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126c557600080fd5b6126da8160055461264e90919063ffffffff16565b60058190555061273281600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080823b905060008114915050919050565b6128936001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f3cb0c69accdf622057624e40d3d3ca3ce5d04b96b5e1e052f0e97fcb4f5f905060405160405180910390a36129bb3330600c54612469565b60008290506000600c549050600080905060008090505b600f811015612bd7576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612b4b5781600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612afa57612ad23082600d85600f8110612acb57fe5b0154612469565b612af3600d83600f8110612ae257fe5b01548561263790919063ffffffff16565b9350612b46565b612b1b600d83600f8110612b0a57fe5b01548461264e90919063ffffffff16565b9250612b3e600d83600f8110612b2d57fe5b01548561263790919063ffffffff16565b935050612bca565b612b66565b612b5e848461264e90919063ffffffff16565b925050612bd7565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450505b80806001019150506129d2565b506000811115612bed57612bec303083612469565b5b505050505056fea165627a7a723058202a9b46a3990d45efe607389c91c6814aeea7b1f833f3678bd8571fc4facaf0550029

Deployed Bytecode Sourcemap

5802:14179:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8366:10;8359:29;;;8378:9;8359:29;;;;;;;;;;;;;;;;;;5802:14179;8463:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8463:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;8463:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10913:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10913:148:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10913:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9086:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9086:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12265:297;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12265:297:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12265:297:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15838:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15838:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15838:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8779:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8779:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8935:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8935:75:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15420:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15420:118:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11306:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11306:203:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11306:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5634:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5634:119:0;;;:::i;:::-;;14404:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14404:131:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14404:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4221:243;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4221:243:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4221:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4886:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4886:78:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18829:796;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18829:796:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18829:796:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9396:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9396:106:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9396:106:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16248:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16248:180:0;;;:::i;:::-;;18005:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18005:375:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18005:375:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5422:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5422:117:0;;;:::i;:::-;;2972:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2972:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8613:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8613:87:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;8613:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19725:251;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19725:251:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19725:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11759:213;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11759:213:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11759:213:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13989:160;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13989:160:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13989:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10147:517;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10147:517:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10147:517:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13827:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13827:104:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13827:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3828:339;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3828:339:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3828:339:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9841:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9841:131:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9841:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15628:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15628:123:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15628:123:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16041:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16041:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16041:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3402:196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3402:196:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3402:196:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;8463:83;8500:13;8533:5;8526:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8463:83;:::o;10913:148::-;10978:4;10995:36;11004:10;11016:7;11025:5;10995:8;:36::i;:::-;11049:4;11042:11;;10913:148;;;;:::o;9086:91::-;9130:7;9157:12;;9150:19;;9086:91;:::o;12265:297::-;12358:4;5123:7;;;;;;;;;;;5122:8;5114:17;;;;;;12413:5;12383:8;:14;12392:4;12383:14;;;;;;;;;;;;;;;:26;12398:10;12383:26;;;;;;;;;;;;;;;;:35;;12375:44;;;;;;12430:26;12440:4;12446:2;12450:5;12430:9;:26::i;:::-;12467:65;12476:4;12482:10;12494:37;12525:5;12494:8;:14;12503:4;12494:14;;;;;;;;;;;;;;;:26;12509:10;12494:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;12467:8;:65::i;:::-;12550:4;12543:11;;12265:297;;;;;:::o;15838:109::-;15894:7;15921:9;:18;15931:7;15921:18;;;;;;;;;;;;;;;;;;;;;;;;;15914:25;;15838:109;;;:::o;8779:83::-;8820:5;8845:9;;;;;;;;;;;8838:16;;8779:83;:::o;8935:75::-;8971:7;8998:4;;8991:11;;8935:75;:::o;15420:118::-;15479:4;15503:27;;;;;;;;;;;15496:34;;15420:118;:::o;11306:203::-;11386:4;11403:76;11412:10;11424:7;11433:45;11467:10;11433:8;:20;11442:10;11433:20;;;;;;;;;;;;;;;:29;11454:7;11433:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;11403:8;:76::i;:::-;11497:4;11490:11;;11306:203;;;;:::o;5634:119::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;5302:7;;;;;;;;;;;5294:16;;;;;;5704:5;5694:7;;:15;;;;;;;;;;;;;;;;;;5725:20;5734:10;5725:20;;;;;;;;;;;;;;;;;;;;;;5634:119::o;14404:131::-;14472:4;13703:7;:19;13711:10;13703:19;;;;;;;;;;;;;;;;;;;;;;;;;13695:28;;;;;;14489:16;14495:2;14499:5;14489;:16::i;:::-;14523:4;14516:11;;14404:131;;;;:::o;4221:243::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;4332:1;4318:16;;:2;:16;;;;4310:25;;;;;;4348:15;4374:4;4366:21;;;4348:39;;4419:6;4408:7;:17;;4400:26;;;;;;4437:2;:11;;:19;4449:6;4437:19;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4437:19:0;3216:1;4221:243;;:::o;4886:78::-;4925:4;4949:7;;;;;;;;;;;4942:14;;4886:78;:::o;18829:796::-;18937:14;18969:31;18981:18;18969:11;:31::i;:::-;18964:73;;19024:1;19017:8;;;;18964:73;19049:14;19066:18;19049:35;;19095:14;19112:27;;19095:44;;19154:6;19163:1;19154:10;;19150:442;19170:27;19166:1;:31;19150:442;;;19219:16;19238:9;:17;19248:6;19238:17;;;;;;;;;;;;;;;;;;;;;;;;;19219:36;;19286:8;19276:18;;:6;:18;;;19272:266;;19341:1;19319:9;:19;19329:8;19319:19;;;;;;;;;;;;;;;;:23;19315:116;;;19376:35;19387:20;19408:1;19387:23;;;;;;;;;19376:6;:10;;:35;;;;:::i;:::-;19367:44;;19315:116;19272:266;;;19480:18;19491:6;19480;:10;;:18;;;;:::i;:::-;19471:27;;19517:5;;;19272:266;19563:9;:17;19573:6;19563:17;;;;;;;;;;;;;;;;;;;;;;;;;19554:26;;19150:442;19199:3;;;;;;;19150:442;;;;19611:6;19604:13;;;;18829:796;;;;:::o;9396:106::-;9451:7;9478:9;:16;9488:5;9478:16;;;;;;;;;;;;;;;;9471:23;;9396:106;;;:::o;16248:180::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;16358:5;16328:27;;:35;;;;;;;;;;;;;;;;;;16379:41;;;;;;;;;;16248:180::o;18005:375::-;15303:1;15270:35;;:9;:21;15280:10;15270:21;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;15262:44;;;;;;18093:22;18107:7;18093:13;:22::i;:::-;18085:31;;;;;;18150:9;:21;18160:10;18150:21;;;;;;;;;;;;;;;;18129:9;:18;18139:7;18129:18;;;;;;;;;;;;;;;:42;;;;18206:1;18182:9;:21;18192:10;18182:21;;;;;;;;;;;;;;;:25;;;;18239:9;:21;18249:10;18239:21;;;;;;;;;;;;;;;;;;;;;;;;;18218:9;:18;18228:7;18218:18;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18303:1;18271:9;:21;18281:10;18271:21;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18364:7;18321:51;;18352:10;18321:51;;;;;;;;;;;;18005:375;:::o;5422:117::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;5123:7;;;;;;;;;;;5122:8;5114:17;;;;;;5493:4;5483:7;;:14;;;;;;;;;;;;;;;;;;5513:18;5520:10;5513:18;;;;;;;;;;;;;;;;;;;;;;5422:117::o;2972:79::-;3010:7;3037:6;;;;;;;;;;;3030:13;;2972:79;:::o;8613:87::-;8652:13;8685:7;8678:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8613:87;:::o;19725:251::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;19823:1;19814:6;:10;19805:20;;;;;;19860:1;19845:17;;:3;:17;;;;19836:27;;;;;;19874:37;19892:4;19899:3;19904:6;19874:9;:37::i;:::-;19956:3;19927:41;;19949:4;19927:41;;;19961:6;19927:41;;;;;;;;;;;;;;;;;;19725:251;;:::o;11759:213::-;11844:4;11861:81;11870:10;11882:7;11891:50;11925:15;11891:8;:20;11900:10;11891:20;;;;;;;;;;;;;;;:29;11912:7;11891:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;11861:8;:81::i;:::-;11960:4;11953:11;;11759:213;;;;:::o;13989:160::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;14091:5;14072:7;:16;14080:7;14072:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;14112:29;14126:7;14135:5;14112:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13989:160;;:::o;10147:517::-;10222:4;5123:7;;;;;;;;;;;5122:8;5114:17;;;;;;10243:27;;;;;;;;;;;:67;;;;;10283:27;;10274:5;:36;10243:67;:99;;;;;10327:15;10339:2;10327:11;:15::i;:::-;10243:99;:127;;;;;10347:23;10359:10;10347:11;:23::i;:::-;10346:24;10243:127;:156;;;;;10374:25;10388:10;10374:13;:25::i;:::-;10243:156;10239:418;;;10467:29;10481:10;10493:2;10467:13;:29::i;:::-;10518:4;10511:11;;;;10239:418;10587:32;10597:10;10609:2;10613:5;10587:9;:32::i;:::-;10641:4;10634:11;;5142:1;10147:517;;;;:::o;13827:104::-;13883:4;13907:7;:16;13915:7;13907:16;;;;;;;;;;;;;;;;;;;;;;;;;13900:23;;13827:104;;;:::o;3828:339::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;3933:13;3956:9;3933:33;;4005:1;3985:22;;:8;:22;;;;3977:31;;;;;;4019:15;4037:6;:16;;;4062:4;4037:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4037:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4037:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4037:31:0;;;;;;;;;;;;;;;;4019:49;;4100:6;4089:7;:17;;4081:26;;;;;;4125:6;:15;;;4141:8;4151:6;4125:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4125:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4125:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4125:33:0;;;;;;;;;;;;;;;;4118:41;;;;3216:1;;3828:339;;;:::o;9841:131::-;9913:7;9940:8;:15;9949:5;9940:15;;;;;;;;;;;;;;;:24;9956:7;9940:24;;;;;;;;;;;;;;;;9933:31;;9841:131;;;;:::o;15628:123::-;15687:4;15741:1;15711:32;;:9;:18;15721:7;15711:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;15704:39;;15628:123;;;:::o;16041:109::-;16097:7;16124:9;:18;16134:7;16124:18;;;;;;;;;;;;;;;;16117:25;;16041:109;;;:::o;3402:196::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;3505:1;3485:22;;:8;:22;;;;3477:31;;;;;;3528:8;3519:6;;:17;;;;;;;;;;;;;;;;;;3581:8;3552:38;;3573:6;;;;;;;;;;;3552:38;;;;;;;;;;;;3402:196;:::o;13325:254::-;13435:1;13418:19;;:5;:19;;;;13410:28;;;;;;13476:1;13457:21;;:7;:21;;;;13449:30;;;;;;13519:5;13492:8;:15;13501:5;13492:15;;;;;;;;;;;;;;;:24;13508:7;13492:24;;;;;;;;;;;;;;;:32;;;;13556:7;13540:31;;13549:5;13540:31;;;13565:5;13540:31;;;;;;;;;;;;;;;;;;13325:254;;;:::o;12790:262::-;12892:1;12878:16;;:2;:16;;;;12870:25;;;;;;12926:26;12946:5;12926:9;:15;12936:4;12926:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;12908:9;:15;12918:4;12908:15;;;;;;;;;;;;;;;:44;;;;12979:24;12997:5;12979:9;:13;12989:2;12979:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;12963:9;:13;12973:2;12963:13;;;;;;;;;;;;;;;:40;;;;13034:2;13019:25;;13028:4;13019:25;;;13038:5;13019:25;;;;;;;;;;;;;;;;;;12790:262;;;:::o;515:123::-;573:7;605:1;600;:6;;593:14;;;;629:1;625;:5;618:12;;515:123;;;;:::o;236:141::-;294:9;324:1;320;:5;316:9;;348:1;343;:6;;336:14;;;;368:1;361:8;;236:141;;;;:::o;14783:356::-;14885:4;;14858:23;14875:5;14858:12;;:16;;:23;;;;:::i;:::-;:31;;14850:40;;;;;;14928:1;14909:21;;:7;:21;;;;14901:30;;;;;;14959:23;14976:5;14959:12;;:16;;:23;;;;:::i;:::-;14944:12;:38;;;;15014:29;15037:5;15014:9;:18;15024:7;15014:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;14993:9;:18;15003:7;14993:18;;;;;;;;;;;;;;;:50;;;;15064:7;15059:20;;;15073:5;15059:20;;;;;;;;;;;;;;;;;;15116:7;15095:36;;15112:1;15095:36;;;15125:5;15095:36;;;;;;;;;;;;;;;;;;14783:356;;:::o;18471:191::-;18531:4;18548:9;18612:4;18600:17;18592:25;;18653:1;18645:4;:9;18638:16;;;18471:191;;;:::o;16502:1419::-;16606:28;16632:1;16606:9;:21;16616:10;16606:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;16582:9;:21;16592:10;16582:21;;;;;;;;;;;;;;;:52;;;;16666:10;16645:9;:18;16655:7;16645:18;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;16733:10;16694:50;;16724:7;16694:50;;;;;;;;;;;;16808:65;16818:10;16838:4;16845:27;;16808:9;:65::i;:::-;16884:14;16901:7;16884:24;;16919:14;16936:27;;16919:44;;16974:25;17002:1;16974:29;;17018:6;17027:1;17018:10;;17014:776;17034:27;17030:1;:31;17014:776;;;17083:16;17102:9;:17;17112:6;17102:17;;;;;;;;;;;;;;;;;;;;;;;;;17083:36;;17150:8;17140:18;;:6;:18;;;17136:600;;17205:1;17183:9;:19;17193:8;17183:19;;;;;;;;;;;;;;;;:23;17179:428;;;17231:59;17249:4;17256:8;17266:20;17287:1;17266:23;;;;;;;;;17231:9;:59::i;:::-;17322:35;17333:20;17354:1;17333:23;;;;;;;;;17322:6;:10;;:35;;;;:::i;:::-;17313:44;;17179:428;;;17443:46;17465:20;17486:1;17465:23;;;;;;;;;17443:17;:21;;:46;;;;:::i;:::-;17423:66;;17521:35;17532:20;17553:1;17532:23;;;;;;;;;17521:6;:10;;:35;;;;:::i;:::-;17512:44;;17579:8;;;17179:428;17136:600;;;17667:29;17689:6;17667:17;:21;;:29;;;;:::i;:::-;17647:49;;17715:5;;;17136:600;17761:9;:17;17771:6;17761:17;;;;;;;;;;;;;;;;;;;;;;;;;17752:26;;17014:776;;17063:3;;;;;;;17014:776;;;;17826:1;17806:17;:21;17802:112;;;17844:58;17862:4;17877;17884:17;17844:9;:58::i;:::-;17802:112;16502:1419;;;;;:::o

Swarm Source

bzzr://2a9b46a3990d45efe607389c91c6814aeea7b1f833f3678bd8571fc4facaf055
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.