ETH Price: $3,455.65 (+1.48%)
Gas: 8 Gwei

Token

SymVerse (SYM)
 

Overview

Max Total Supply

1,000,000,000 SYM

Holders

4,455 (0.00%)

Total Transfers

-

Market

Price

$0.00 @ 0.000001 ETH (-5.45%)

Onchain Market Cap

$3,490,820.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

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

OVERVIEW

SymVerse is a decentralized platform, whose goal is to put blockchains into common, universal use.

Market

Volume (24H):$30,357.00
Market Capitalization:$0.00
Circulating Supply:0.00 SYM
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SymToken

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-01-29
*/

pragma solidity ^0.5.8;

/*
 * 컨트랙트 개요
 * 1. 목적
 *  메인넷 운영이 시작되기 전까지 한시적인 운영을 목적으로 하고 있다.
 *  메인넷이 운영되면 컨트랙트의 거래는 모두 중단되며, 메인넷 코인트로 전환을 시작하며,
 *  전환 절차를 간단하게 수행할 수 있으며, 블록체인 내 기록을 통해 신뢰도를 얻을 수 있도록 설계 되었다.
 * 2. 용어 설명
 *  Owner : 컨트랙트를 생성한 컨트랙트의 주인
 *  Delegator : Owner의 Private Key를 매번 사용하기에는 보안적인 이슈가 발생할 수 있기 때문에 도입된
 *              일부 Owner 권한을 실행할 수 있도록 임명한 대행자
 *              특히, 컨트랙트의 거래가 중단된 상태에서 Delegator만 실행할 수 있는 전용 함수를 실행하여
 *              컨트랙트의 토큰을 회수하고, 메인넷의 코인으로 전환해주는 핵심적인 기능을 수행
 *  Holder : 토큰을 보유할 수 있는 Address를 가지고 있는 계정
 * 3. 운용
 *  3.1. TokenContainer Structure
 *   3.1.1 Charge Amount
 *    Charge Amount는 Holder가 구매하여 충전한 토큰량입니다.
 *    Owner의 경우에는 컨트랙트 전체에 충전된 토큰량. 즉, Total Supply와 같습니다.
 *   3.1.2 Balance
 *    ERC20의 Balance와 같습니다.
 */
/*
 * Contract Overview 
 * 1. Purpose
 *  It is intended to operate for a limited time until mainnet launch.
 *  When the mainnet is launched, all transactions of the contract will be suspended from that day on forward and will initiate the token swap to the mainnet.
 * 2. Key Definitions
 *  Owner : An entity from which smart contract is created
 *  Delegator : The appointed agent is created to prevent from using the contract owner's private key for every transaction made, since it can cause a serious security issue.  
 *              In particular, it performs core functons at the time of the token swap event, such as executing a dedicated, Delegator-specific function while contract transaction is under suspension and
 *              withdraw contract's tokens. 
 *  Holder : An account in which tokens can be stored (also referrs to all users of the contract: Owner, Delegator, Spender, ICO buyers, ect.)
 * 3. Operation
 *  3.1. TokenContainer Structure
 *   3.1.1 Charge Amount
 *    Charge Amount is the charged token amount purcahsed by Holder.
 *    In case for the Owner, the total charged amount in the contract equates to the Total Supply.
 *   3.1.2 Balance
 *     Similiar to the ERC20 Balance.
 */
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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        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;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function totalSupply() external view returns (uint256);
    function balanceOf(address who) external view returns (uint256);
    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);
}

contract Ownable {
    address private _owner;

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

    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }
}

/*
 * Owner의 권한 중 일부를 대신 행사할 수 있도록 대행자를 지정/해제 할 수 있는 인터페이스를 정의하고 있다.
 */
 /*
 * It defines an interface where the Owner can appoint / dismiss an agent that can partially excercize privileges in lieu of the Owner's 
 */
contract Delegable is Ownable {
    address private _delegator;
    
    event DelegateAppointed(address indexed previousDelegator, address indexed newDelegator);
    
    constructor () internal {
        _delegator = address(0);
    }
    
    /*
     * delegator를 가져옴
     */
    /*
     * Call-up Delegator
     */
    function delegator() public view returns (address) {
        return _delegator;
    }
    
    /*
     * delegator만 실행 가능하도록 지정하는 접근 제한
     */
    /*
     * Access restriction in which only appointed delegator is executable
     */
    modifier onlyDelegator() {
        require(isDelegator());
        _;
    }
    
    /*
     * owner 또는 delegator가 실행 가능하도록 지정하는 접근 제한
     */
    /*
     * Access restriction in which only appointed delegator or Owner are executable
     */
    modifier ownerOrDelegator() {
        require(isOwner() || isDelegator());
        _;
    }
    
    function isDelegator() public view returns (bool) {
        return msg.sender == _delegator;
    }
    
    /*
     * delegator를 임명
     */
    /*
     * Appoint the delegator
     */
    function appointDelegator(address delegator_) public onlyOwner returns (bool) {
        require(delegator_ != address(0));
        require(delegator_ != owner());
        return _appointDelegator(delegator_);
    }
    
    /*
     * 지정된 delegator를 해임
     */
    /*
     * Dimiss the appointed delegator
     */
    function dissmissDelegator() public onlyOwner returns (bool) {
        require(_delegator != address(0));
        return _appointDelegator(address(0));
    }
    
    /*
     * delegator를 변경하는 내부 함수
     */
    /*
     * An internal function that allows delegator changes 
     */
    function _appointDelegator(address delegator_) private returns (bool) {
        require(_delegator != delegator_);
        emit DelegateAppointed(_delegator, delegator_);
        _delegator = delegator_;
        return true;
    }
}

/*
 * ERC20의 기본 인터페이스는 유지하여 일반적인 토큰 전송이 가능하면서,
 * 일부 추가 관리 기능을 구현하기 위한 Struct 및 함수가 추가되어 있습니다.
 */
/*
 * The basic interface of ERC20 is remained untouched therefore basic functions like token transactions will be available. 
 * On top of that, Structs and functions have been added to implement some additional management functions.
 */
contract ERC20Like is IERC20, Delegable {
    using SafeMath for uint256;

    uint256 internal _totalSupply;  // 총 발행량 // Total Supply
    bool isLock = false;  // 계약 잠금 플래그 // Contract Lock Flag

    /*
     * 토큰 정보(충전량, 해금량, 가용잔액) 및 Spender 정보를 저장하는 구조체
     */
    /*
     * Structure that stores token information (charge, unlock, balance) as well as Spender information
     */
    struct TokenContainer {
        uint256 balance;  // 가용잔액 // available balance
        mapping (address => uint256) allowed; // Spender
    }

    mapping (address => TokenContainer) internal _tokenContainers;
    
    // 총 발행량 
    // Total token supply 
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    // 가용잔액 가져오기
    // Call-up available balance
    function balanceOf(address holder) public view returns (uint256) {
        return _tokenContainers[holder].balance;
    }

    // Spender의 남은 잔액 가져오기
    // Call-up Spender's remaining balance
    function allowance(address holder, address spender) public view returns (uint256) {
        return _tokenContainers[holder].allowed[spender];
    }

    // 토큰송금
    // Transfer token
    function transfer(address to, uint256 value) public returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    // Spender 지정 및 금액 지정
    // Appoint a Spender and set an amount 
    function approve(address spender, uint256 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }
    
    function approveDelegator(address spender, uint256 value) public onlyDelegator returns (bool) {
        require(msg.sender == delegator());
        _approve(owner(), spender, value);
        return true;
    }

    // Spender 토큰송금
    // Transfer token via Spender 
    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        _transfer(from, to, value);
        _approve(from, msg.sender, _tokenContainers[from].allowed[msg.sender].sub(value));
        return true;
    }
    
    // delegator인 경우에는 owner의 잔액을 대신 보낼 수 있음.
    function transferDelegator(address to, uint256 value) public onlyDelegator returns (bool) {
        require(msg.sender == delegator());
        _transfer(owner(), to, value);
        return true;
    }

    // Spender가 할당 받은 양 증가
    // Increase a Spender amount alloted by the Owner/Delegator
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        require(!isLock);
        uint256 value = _tokenContainers[msg.sender].allowed[spender].add(addedValue);
        _approve(msg.sender, spender, value);
        return true;
    }
    
    function increaseAllowanceDelegator(address spender, uint256 addedValue) public onlyDelegator returns (bool) {
        require(msg.sender == delegator());
        require(!isLock);
        uint256 value = _tokenContainers[owner()].allowed[spender].add(addedValue);
        _approve(owner(), spender, value);
        return true;
    }

    // Spender가 할당 받은 양 감소
    // Decrease a Spender amount alloted by the Owner/Delegator
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        require(!isLock);
        // 기존에 할당된 금액의 잔액보다 더 많은 금액을 줄이려고 하는 경우 할당액이 0이 되도록 처리
        //// If you reduce more than the alloted amount in the balance, we made sure the alloted amount is set to zero instead of minus
        if (_tokenContainers[msg.sender].allowed[spender] < subtractedValue) {
            subtractedValue = _tokenContainers[msg.sender].allowed[spender];
        }
        
        uint256 value = _tokenContainers[msg.sender].allowed[spender].sub(subtractedValue);
        _approve(msg.sender, spender, value);
        return true;
    }
    
    function decreaseAllowanceDelegator(address spender, uint256 subtractedValue) public onlyDelegator returns (bool) {
        require(msg.sender == delegator());
        require(!isLock);
        // 기존에 할당된 금액의 잔액보다 더 많은 금액을 줄이려고 하는 경우 할당액이 0이 되도록 처리
        //// If you reduce more than the alloted amount in the balance, we made sure the alloted amount is set to zero instead of minus
        if (_tokenContainers[owner()].allowed[spender] < subtractedValue) {
            subtractedValue = _tokenContainers[owner()].allowed[spender];
        }
        
        uint256 value = _tokenContainers[owner()].allowed[spender].sub(subtractedValue);
        _approve(owner(), spender, value);
        return true;
    }

    // 토큰송금 내부 실행 함수 
    // An internal execution function for troken transfer
    function _transfer(address from, address to, uint256 value) private {
        require(!isLock);
        // 3.1. Known vulnerabilities of ERC-20 token
        // 현재 컨트랙트로는 송금할 수 없도록 예외 처리 // Exceptions were added to not allow deposits to be made in the current contract . 
        require(to != address(this));
        require(to != address(0));

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

    // Spender 지정 내부 실행 함수
    // Internal execution function for assigning a Spender
    function _approve(address holder, address spender, uint256 value) private {
        require(!isLock);
        require(spender != address(0));
        require(holder != address(0));

        _tokenContainers[holder].allowed[spender] = value;
        emit Approval(holder, spender, value);
    }

    // 전체 유통량 - Owner의 unlockAmount
    // Total circulation supply, or the unlockAmount of the Owner's
    function circulationAmount() external view returns (uint256) {
        return _totalSupply.sub(_tokenContainers[owner()].balance);
    }

    /*
     * 계약 잠금
     * 계약이 잠기면 컨트랙트의 거래가 중단된 상태가 되며,
     * 거래가 중단된 상태에서는 Owner와 Delegator를 포함한 모든 Holder는 거래를 할 수 없게 된다.
     */
    /*
     * Contract lock
     * If the contract is locked, all transactions will be suspended.
     * All Holders including Owner and Delegator will not be able to make transaction during suspension.
     */
    function lock() external onlyOwner returns (bool) {
        isLock = true;
        return isLock;
    }

    /*
     * 계약 잠금 해제
     * 잠긴 계약을 해제할 때 사용된다.
     */
    /*
     * Release contract lock
     * The function is used to revert a locked contract to a normal state. 
     */
    function unlock() external onlyOwner returns (bool) {
        isLock = false;
        return isLock;
    }
}

contract SymToken is ERC20Like {
    string public constant name = "SymVerse";
    string public constant symbol = "SYM";
    uint256 public constant decimals = 18;
    
    event CreateToken(address indexed c_owner, string c_name, string c_symbol, uint256 c_totalSupply);

    constructor () public {
        _totalSupply = 1000000000 * (10 ** decimals);
        _tokenContainers[msg.sender].balance = _totalSupply;
        emit CreateToken(msg.sender, name, symbol, _tokenContainers[msg.sender].balance);
    }
}

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":"approveDelegator","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":true,"inputs":[],"name":"isDelegator","outputs":[{"name":"","type":"bool"}],"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":"decimals","outputs":[{"name":"","type":"uint256"}],"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":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowanceDelegator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"holder","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"circulationAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"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":"dissmissDelegator","outputs":[{"name":"","type":"bool"}],"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":"unlock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"delegator_","type":"address"}],"name":"appointDelegator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"delegator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"holder","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowanceDelegator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferDelegator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"lock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"c_owner","type":"address"},{"indexed":false,"name":"c_name","type":"string"},{"indexed":false,"name":"c_symbol","type":"string"},{"indexed":false,"name":"c_totalSupply","type":"uint256"}],"name":"CreateToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousDelegator","type":"address"},{"indexed":true,"name":"newDelegator","type":"address"}],"name":"DelegateAppointed","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"}]

60806040526000600360006101000a81548160ff02191690831515021790555034801561002b57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a0a633b9aca0002600281905550600254600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055503373ffffffffffffffffffffffffffffffffffffffff167faa935dad377a4856104bce276a1c3ab96aaaea5da44b184d31068ba47d1237a26040518060400160405280600881526020017f53796d56657273650000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f53594d0000000000000000000000000000000000000000000000000000000000815250600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156102b557808201518184015260208101905061029a565b50505050905090810190601f1680156102e25780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b8381101561031b578082015181840152602081019050610300565b50505050905090810190601f1680156103485780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a2611a2f806103676000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638f32d59b116100c3578063ba9ae8951161007c578063ba9ae895146106d1578063ce9b79301461072d578063dd62ed3e14610777578063e27181ef146107ef578063ed8c1a4314610855578063f83d08ba146108bb57610158565b80638f32d59b1461051c57806395d89b411461053e5780639a943250146105c1578063a457c2d7146105e3578063a69df4b514610649578063a9059cbb1461066b57610158565b8063313ce56711610115578063313ce5671461037257806339509351146103905780634758de1c146103f657806370a082311461045c5780637f6ab841146104b45780638da5cb5b146104d257610158565b806306fdde031461015d578063095ea7b3146101e057806316c099671461024657806318160ddd146102ac578063185ed831146102ca57806323b872dd146102ec575b600080fd5b6101656108dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a557808201518184015260208101905061018a565b50505050905090810190601f1680156101d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61022c600480360360408110156101f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610916565b604051808215151515815260200191505060405180910390f35b6102926004803603604081101561025c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061092d565b604051808215151515815260200191505060405180910390f35b6102b461099b565b6040518082815260200191505060405180910390f35b6102d26109a5565b604051808215151515815260200191505060405180910390f35b6103586004803603606081101561030257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109fd565b604051808215151515815260200191505060405180910390f35b61037a610ab1565b6040518082815260200191505060405180910390f35b6103dc600480360360408110156103a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ab6565b604051808215151515815260200191505060405180910390f35b6104426004803603604081101561040c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b7e565b604051808215151515815260200191505060405180910390f35b61049e6004803603602081101561047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ca4565b6040518082815260200191505060405180910390f35b6104bc610cf0565b6040518082815260200191505060405180910390f35b6104da610d55565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610524610d7e565b604051808215151515815260200191505060405180910390f35b610546610dd5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561058657808201518184015260208101905061056b565b50505050905090810190601f1680156105b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105c9610e0e565b604051808215151515815260200191505060405180910390f35b61062f600480360360408110156105f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e8c565b604051808215151515815260200191505060405180910390f35b61065161105e565b604051808215151515815260200191505060405180910390f35b6106b76004803603604081101561068157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110a1565b604051808215151515815260200191505060405180910390f35b610713600480360360208110156106e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b8565b604051808215151515815260200191505060405180910390f35b610735611155565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107d96004803603604081101561078d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061117f565b6040518082815260200191505060405180910390f35b61083b6004803603604081101561080557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611209565b604051808215151515815260200191505060405180910390f35b6108a16004803603604081101561086b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611447565b604051808215151515815260200191505060405180910390f35b6108c36114b5565b604051808215151515815260200191505060405180910390f35b6040518060400160405280600881526020017f53796d566572736500000000000000000000000000000000000000000000000081525081565b60006109233384846114f8565b6001905092915050565b60006109376109a5565b61094057600080fd5b610948611155565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461097f57600080fd5b61099161098a610d55565b84846114f8565b6001905092915050565b6000600254905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000610a0a848484611674565b610aa68433610aa185600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a190919063ffffffff16565b6114f8565b600190509392505050565b601281565b6000600360009054906101000a900460ff1615610ad257600080fd5b6000610b6683600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118c190919063ffffffff16565b9050610b733385836114f8565b600191505092915050565b6000610b886109a5565b610b9157600080fd5b610b99611155565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bd057600080fd5b600360009054906101000a900460ff1615610bea57600080fd5b6000610c858360046000610bfc610d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118c190919063ffffffff16565b9050610c99610c92610d55565b85836114f8565b600191505092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000610d5060046000610d01610d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546002546118a190919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040518060400160405280600381526020017f53594d000000000000000000000000000000000000000000000000000000000081525081565b6000610e18610d7e565b610e2157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610e7d57600080fd5b610e8760006118e0565b905090565b6000600360009054906101000a900460ff1615610ea857600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610fb257600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491505b600061104683600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a190919063ffffffff16565b90506110533385836114f8565b600191505092915050565b6000611068610d7e565b61107157600080fd5b6000600360006101000a81548160ff021916908315150217905550600360009054906101000a900460ff16905090565b60006110ae338484611674565b6001905092915050565b60006110c2610d7e565b6110cb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561110557600080fd5b61110d610d55565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561114557600080fd5b61114e826118e0565b9050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006112136109a5565b61121c57600080fd5b611224611155565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461125b57600080fd5b600360009054906101000a900460ff161561127557600080fd5b8160046000611282610d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561138d576004600061130f610d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491505b6000611428836004600061139f610d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a190919063ffffffff16565b905061143c611435610d55565b85836114f8565b600191505092915050565b60006114516109a5565b61145a57600080fd5b611462611155565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461149957600080fd5b6114ab6114a4610d55565b8484611674565b6001905092915050565b60006114bf610d7e565b6114c857600080fd5b6001600360006101000a81548160ff021916908315150217905550600360009054906101000a900460ff16905090565b600360009054906101000a900460ff161561151257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561154c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561158657600080fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600360009054906101000a900460ff161561168e57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116c757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561170157600080fd5b61175681600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546118a190919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506117f181600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546118c190919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000828211156118b057600080fd5b600082840390508091505092915050565b6000808284019050838110156118d657600080fd5b8091505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561193d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7ae02edfa8fcf8e6ab0735af4a8724ca06b091b99194712358a6da6146107a8f60405160405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905091905056fea165627a7a723058200d17e7d12dc9e752a08292c1d11cfe52515c2bec499d136e49f2d76dae1f5b9b0029

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c80638f32d59b116100c3578063ba9ae8951161007c578063ba9ae895146106d1578063ce9b79301461072d578063dd62ed3e14610777578063e27181ef146107ef578063ed8c1a4314610855578063f83d08ba146108bb57610158565b80638f32d59b1461051c57806395d89b411461053e5780639a943250146105c1578063a457c2d7146105e3578063a69df4b514610649578063a9059cbb1461066b57610158565b8063313ce56711610115578063313ce5671461037257806339509351146103905780634758de1c146103f657806370a082311461045c5780637f6ab841146104b45780638da5cb5b146104d257610158565b806306fdde031461015d578063095ea7b3146101e057806316c099671461024657806318160ddd146102ac578063185ed831146102ca57806323b872dd146102ec575b600080fd5b6101656108dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a557808201518184015260208101905061018a565b50505050905090810190601f1680156101d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61022c600480360360408110156101f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610916565b604051808215151515815260200191505060405180910390f35b6102926004803603604081101561025c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061092d565b604051808215151515815260200191505060405180910390f35b6102b461099b565b6040518082815260200191505060405180910390f35b6102d26109a5565b604051808215151515815260200191505060405180910390f35b6103586004803603606081101561030257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109fd565b604051808215151515815260200191505060405180910390f35b61037a610ab1565b6040518082815260200191505060405180910390f35b6103dc600480360360408110156103a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ab6565b604051808215151515815260200191505060405180910390f35b6104426004803603604081101561040c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b7e565b604051808215151515815260200191505060405180910390f35b61049e6004803603602081101561047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ca4565b6040518082815260200191505060405180910390f35b6104bc610cf0565b6040518082815260200191505060405180910390f35b6104da610d55565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610524610d7e565b604051808215151515815260200191505060405180910390f35b610546610dd5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561058657808201518184015260208101905061056b565b50505050905090810190601f1680156105b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105c9610e0e565b604051808215151515815260200191505060405180910390f35b61062f600480360360408110156105f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e8c565b604051808215151515815260200191505060405180910390f35b61065161105e565b604051808215151515815260200191505060405180910390f35b6106b76004803603604081101561068157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110a1565b604051808215151515815260200191505060405180910390f35b610713600480360360208110156106e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b8565b604051808215151515815260200191505060405180910390f35b610735611155565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107d96004803603604081101561078d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061117f565b6040518082815260200191505060405180910390f35b61083b6004803603604081101561080557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611209565b604051808215151515815260200191505060405180910390f35b6108a16004803603604081101561086b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611447565b604051808215151515815260200191505060405180910390f35b6108c36114b5565b604051808215151515815260200191505060405180910390f35b6040518060400160405280600881526020017f53796d566572736500000000000000000000000000000000000000000000000081525081565b60006109233384846114f8565b6001905092915050565b60006109376109a5565b61094057600080fd5b610948611155565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461097f57600080fd5b61099161098a610d55565b84846114f8565b6001905092915050565b6000600254905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000610a0a848484611674565b610aa68433610aa185600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a190919063ffffffff16565b6114f8565b600190509392505050565b601281565b6000600360009054906101000a900460ff1615610ad257600080fd5b6000610b6683600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118c190919063ffffffff16565b9050610b733385836114f8565b600191505092915050565b6000610b886109a5565b610b9157600080fd5b610b99611155565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bd057600080fd5b600360009054906101000a900460ff1615610bea57600080fd5b6000610c858360046000610bfc610d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118c190919063ffffffff16565b9050610c99610c92610d55565b85836114f8565b600191505092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000610d5060046000610d01610d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546002546118a190919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040518060400160405280600381526020017f53594d000000000000000000000000000000000000000000000000000000000081525081565b6000610e18610d7e565b610e2157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610e7d57600080fd5b610e8760006118e0565b905090565b6000600360009054906101000a900460ff1615610ea857600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610fb257600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491505b600061104683600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a190919063ffffffff16565b90506110533385836114f8565b600191505092915050565b6000611068610d7e565b61107157600080fd5b6000600360006101000a81548160ff021916908315150217905550600360009054906101000a900460ff16905090565b60006110ae338484611674565b6001905092915050565b60006110c2610d7e565b6110cb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561110557600080fd5b61110d610d55565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561114557600080fd5b61114e826118e0565b9050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006112136109a5565b61121c57600080fd5b611224611155565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461125b57600080fd5b600360009054906101000a900460ff161561127557600080fd5b8160046000611282610d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561138d576004600061130f610d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491505b6000611428836004600061139f610d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a190919063ffffffff16565b905061143c611435610d55565b85836114f8565b600191505092915050565b60006114516109a5565b61145a57600080fd5b611462611155565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461149957600080fd5b6114ab6114a4610d55565b8484611674565b6001905092915050565b60006114bf610d7e565b6114c857600080fd5b6001600360006101000a81548160ff021916908315150217905550600360009054906101000a900460ff16905090565b600360009054906101000a900460ff161561151257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561154c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561158657600080fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600360009054906101000a900460ff161561168e57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116c757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561170157600080fd5b61175681600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546118a190919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506117f181600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546118c190919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000828211156118b057600080fd5b600082840390508091505092915050565b6000808284019050838110156118d657600080fd5b8091505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561193d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7ae02edfa8fcf8e6ab0735af4a8724ca06b091b99194712358a6da6146107a8f60405160405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905091905056fea165627a7a723058200d17e7d12dc9e752a08292c1d11cfe52515c2bec499d136e49f2d76dae1f5b9b0029

Deployed Bytecode Sourcemap

15025:526:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15025:526:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15063:40;;;:::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;15063:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9310:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9310:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9470:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9470:213:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8487:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6175:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9756:244;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9756:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15154:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10413:278;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10413:278:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10703:340;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10703:340:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8654:123;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8654:123:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13963:138;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4582:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4747:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15110:37;;;:::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;15110:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6720:160;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11160:742;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11160:742:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14909:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9076:140;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9076:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6379:218;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6379:218:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5497:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8875:149;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8875:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11914:798;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11914:798:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10091:205;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10091:205:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14572:106;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15063:40;;;;;;;;;;;;;;;;;;;:::o;9310:148::-;9375:4;9392:36;9401:10;9413:7;9422:5;9392:8;:36::i;:::-;9446:4;9439:11;;9310:148;;;;:::o;9470:213::-;9558:4;5820:13;:11;:13::i;:::-;5812:22;;;;;;9597:11;:9;:11::i;:::-;9583:25;;:10;:25;;;9575:34;;;;;;9620:33;9629:7;:5;:7::i;:::-;9638;9647:5;9620:8;:33::i;:::-;9671:4;9664:11;;9470:213;;;;:::o;8487:91::-;8531:7;8558:12;;8551:19;;8487:91;:::o;6175:100::-;6219:4;6257:10;;;;;;;;;;;6243:24;;:10;:24;;;6236:31;;6175:100;:::o;9756:244::-;9835:4;9852:26;9862:4;9868:2;9872:5;9852:9;:26::i;:::-;9889:81;9898:4;9904:10;9916:53;9963:5;9916:16;:22;9933:4;9916:22;;;;;;;;;;;;;;;:30;;:42;9947:10;9916:42;;;;;;;;;;;;;;;;:46;;:53;;;;:::i;:::-;9889:8;:81::i;:::-;9988:4;9981:11;;9756:244;;;;;:::o;15154:37::-;15189:2;15154:37;:::o;10413:278::-;10493:4;10519:6;;;;;;;;;;;10518:7;10510:16;;;;;;10537:13;10553:61;10603:10;10553:16;:28;10570:10;10553:28;;;;;;;;;;;;;;;:36;;:45;10590:7;10553:45;;;;;;;;;;;;;;;;:49;;:61;;;;:::i;:::-;10537:77;;10625:36;10634:10;10646:7;10655:5;10625:8;:36::i;:::-;10679:4;10672:11;;;10413:278;;;;:::o;10703:340::-;10806:4;5820:13;:11;:13::i;:::-;5812:22;;;;;;10845:11;:9;:11::i;:::-;10831:25;;:10;:25;;;10823:34;;;;;;10877:6;;;;;;;;;;;10876:7;10868:16;;;;;;10895:13;10911:58;10958:10;10911:16;:25;10928:7;:5;:7::i;:::-;10911:25;;;;;;;;;;;;;;;:33;;:42;10945:7;10911:42;;;;;;;;;;;;;;;;:46;;:58;;;;:::i;:::-;10895:74;;10980:33;10989:7;:5;:7::i;:::-;10998;11007:5;10980:8;:33::i;:::-;11031:4;11024:11;;;10703:340;;;;:::o;8654:123::-;8710:7;8737:16;:24;8754:6;8737:24;;;;;;;;;;;;;;;:32;;;8730:39;;8654:123;;;:::o;13963:138::-;14015:7;14042:51;14059:16;:25;14076:7;:5;:7::i;:::-;14059:25;;;;;;;;;;;;;;;:33;;;14042:12;;:16;;:51;;;;:::i;:::-;14035:58;;13963:138;:::o;4582:79::-;4620:7;4647:6;;;;;;;;;;;4640:13;;4582:79;:::o;4747:92::-;4787:4;4825:6;;;;;;;;;;;4811:20;;:10;:20;;;4804:27;;4747:92;:::o;15110:37::-;;;;;;;;;;;;;;;;;;;:::o;6720:160::-;6775:4;4709:9;:7;:9::i;:::-;4701:18;;;;;;6822:1;6800:24;;:10;;;;;;;;;;;:24;;;;6792:33;;;;;;6843:29;6869:1;6843:17;:29::i;:::-;6836:36;;6720:160;:::o;11160:742::-;11245:4;11271:6;;;;;;;;;;;11270:7;11262:16;;;;;;11616:15;11568:16;:28;11585:10;11568:28;;;;;;;;;;;;;;;:36;;:45;11605:7;11568:45;;;;;;;;;;;;;;;;:63;11564:159;;;11666:16;:28;11683:10;11666:28;;;;;;;;;;;;;;;:36;;:45;11703:7;11666:45;;;;;;;;;;;;;;;;11648:63;;11564:159;11743:13;11759:66;11809:15;11759:16;:28;11776:10;11759:28;;;;;;;;;;;;;;;:36;;:45;11796:7;11759:45;;;;;;;;;;;;;;;;:49;;:66;;;;:::i;:::-;11743:82;;11836:36;11845:10;11857:7;11866:5;11836:8;:36::i;:::-;11890:4;11883:11;;;11160:742;;;;:::o;14909:109::-;14955:4;4709:9;:7;:9::i;:::-;4701:18;;;;;;14981:5;14972:6;;:14;;;;;;;;;;;;;;;;;;15004:6;;;;;;;;;;;14997:13;;14909:109;:::o;9076:140::-;9137:4;9154:32;9164:10;9176:2;9180:5;9154:9;:32::i;:::-;9204:4;9197:11;;9076:140;;;;:::o;6379:218::-;6451:4;4709:9;:7;:9::i;:::-;4701:18;;;;;;6498:1;6476:24;;:10;:24;;;;6468:33;;;;;;6534:7;:5;:7::i;:::-;6520:21;;:10;:21;;;;6512:30;;;;;;6560:29;6578:10;6560:17;:29::i;:::-;6553:36;;6379:218;;;:::o;5497:87::-;5539:7;5566:10;;;;;;;;;;;5559:17;;5497:87;:::o;8875:149::-;8948:7;8975:16;:24;8992:6;8975:24;;;;;;;;;;;;;;;:32;;:41;9008:7;8975:41;;;;;;;;;;;;;;;;8968:48;;8875:149;;;;:::o;11914:798::-;12022:4;5820:13;:11;:13::i;:::-;5812:22;;;;;;12061:11;:9;:11::i;:::-;12047:25;;:10;:25;;;12039:34;;;;;;12093:6;;;;;;;;;;;12092:7;12084:16;;;;;;12435:15;12390:16;:25;12407:7;:5;:7::i;:::-;12390:25;;;;;;;;;;;;;;;:33;;:42;12424:7;12390:42;;;;;;;;;;;;;;;;:60;12386:153;;;12485:16;:25;12502:7;:5;:7::i;:::-;12485:25;;;;;;;;;;;;;;;:33;;:42;12519:7;12485:42;;;;;;;;;;;;;;;;12467:60;;12386:153;12559:13;12575:63;12622:15;12575:16;:25;12592:7;:5;:7::i;:::-;12575:25;;;;;;;;;;;;;;;:33;;:42;12609:7;12575:42;;;;;;;;;;;;;;;;:46;;:63;;;;:::i;:::-;12559:79;;12649:33;12658:7;:5;:7::i;:::-;12667;12676:5;12649:8;:33::i;:::-;12700:4;12693:11;;;11914:798;;;;:::o;10091:205::-;10175:4;5820:13;:11;:13::i;:::-;5812:22;;;;;;10214:11;:9;:11::i;:::-;10200:25;;:10;:25;;;10192:34;;;;;;10237:29;10247:7;:5;:7::i;:::-;10256:2;10260:5;10237:9;:29::i;:::-;10284:4;10277:11;;10091:205;;;;:::o;14572:106::-;14616:4;4709:9;:7;:9::i;:::-;4701:18;;;;;;14642:4;14633:6;;:13;;;;;;;;;;;;;;;;;;14664:6;;;;;;;;;;;14657:13;;14572:106;:::o;13537:300::-;13631:6;;;;;;;;;;;13630:7;13622:16;;;;;;13676:1;13657:21;;:7;:21;;;;13649:30;;;;;;13716:1;13698:20;;:6;:20;;;;13690:29;;;;;;13776:5;13732:16;:24;13749:6;13732:24;;;;;;;;;;;;;;;:32;;:41;13765:7;13732:41;;;;;;;;;;;;;;;:49;;;;13814:7;13797:32;;13806:6;13797:32;;;13823:5;13797:32;;;;;;;;;;;;;;;;;;13537:300;;;:::o;12822:603::-;12910:6;;;;;;;;;;;12909:7;12901:16;;;;;;13166:4;13152:19;;:2;:19;;;;13144:28;;;;;;13205:1;13191:16;;:2;:16;;;;13183:25;;;;;;13254:41;13289:5;13254:16;:22;13271:4;13254:22;;;;;;;;;;;;;;;:30;;;:34;;:41;;;;:::i;:::-;13221:16;:22;13238:4;13221:22;;;;;;;;;;;;;;;:30;;:74;;;;13337:39;13370:5;13337:16;:20;13354:2;13337:20;;;;;;;;;;;;;;;:28;;;:32;;:39;;;;:::i;:::-;13306:16;:20;13323:2;13306:20;;;;;;;;;;;;;;;:28;;:70;;;;13407:2;13392:25;;13401:4;13392:25;;;13411:5;13392:25;;;;;;;;;;;;;;;;;;12822:603;;;:::o;3208:150::-;3266:7;3299:1;3294;:6;;3286:15;;;;;;3312:9;3328:1;3324;:5;3312:17;;3349:1;3342:8;;;3208:150;;;;:::o;3366:::-;3424:7;3444:9;3460:1;3456;:5;3444:17;;3485:1;3480;:6;;3472:15;;;;;;3507:1;3500:8;;;3366:150;;;;:::o;7034:235::-;7098:4;7137:10;7123:24;;:10;;;;;;;;;;;:24;;;;7115:33;;;;;;7194:10;7164:41;;7182:10;;;;;;;;;;;7164:41;;;;;;;;;;;;7229:10;7216;;:23;;;;;;;;;;;;;;;;;;7257:4;7250:11;;7034:235;;;:::o

Swarm Source

bzzr://0d17e7d12dc9e752a08292c1d11cfe52515c2bec499d136e49f2d76dae1f5b9b
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.