ETH Price: $3,398.52 (+2.61%)

Contract

0x79b4D12Fa63A8d1202b26c5Ba6d62136A4A09dDa
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

SymVerse (SYM) (@$0.0025)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x48617446ed0cae0b35440fcff3e6b60d8cd2037b59f7f8c97bbda0833f0741e5 Transfer(pending)2024-11-03 7:43:3920 days ago1730619819IN
SymVerse: SYM Token
0 ETH(Pending)(Pending)
0x1c9b45f5007501eaabcbd0513aa94857717d7df9e2c63b792894ec388f4ac9e6 Transfer(pending)2024-11-03 4:55:4320 days ago1730609743IN
SymVerse: SYM Token
0 ETH(Pending)(Pending)
Transfer212491222024-11-23 8:03:5914 hrs ago1732349039IN
SymVerse: SYM Token
0 ETH0.0003833710.40716705
Transfer210263962024-10-23 6:08:4731 days ago1729663727IN
SymVerse: SYM Token
0 ETH0.000197025.3466633
Transfer209987032024-10-19 9:25:1135 days ago1729329911IN
SymVerse: SYM Token
0 ETH0.0003701610.03876622
Transfer208967002024-10-05 3:39:4749 days ago1728099587IN
SymVerse: SYM Token
0 ETH0.000153434.16376373
Transfer208964222024-10-05 2:43:5949 days ago1728096239IN
SymVerse: SYM Token
0 ETH0.000094322.55974877
Transfer208964112024-10-05 2:41:4749 days ago1728096107IN
SymVerse: SYM Token
0 ETH0.000080952.19689587
Transfer208964082024-10-05 2:41:1149 days ago1728096071IN
SymVerse: SYM Token
0 ETH0.000089062.4168946
Transfer208962462024-10-05 2:08:4749 days ago1728094127IN
SymVerse: SYM Token
0 ETH0.000129413.51193205
Transfer208895632024-10-04 3:47:5950 days ago1728013679IN
SymVerse: SYM Token
0 ETH0.000184363.75113792
Transfer208342012024-09-26 10:30:2358 days ago1727346623IN
SymVerse: SYM Token
0 ETH0.0005279214.32152548
Transfer208254912024-09-25 5:19:3559 days ago1727241575IN
SymVerse: SYM Token
0 ETH0.0004056411.00804317
Transfer207268282024-09-11 10:39:3573 days ago1726051175IN
SymVerse: SYM Token
0 ETH0.000110132.0410128
Transfer207258322024-09-11 7:18:3573 days ago1726039115IN
SymVerse: SYM Token
0 ETH0.000090881.68424043
Transfer206904302024-09-06 8:42:4778 days ago1725612167IN
SymVerse: SYM Token
0 ETH0.000079692.16201079
Transfer206759282024-09-04 8:09:3580 days ago1725437375IN
SymVerse: SYM Token
0 ETH0.000038221.03693248
Transfer206758662024-09-04 7:57:1180 days ago1725436631IN
SymVerse: SYM Token
0 ETH0.000040541.10004641
Transfer206749842024-09-04 4:59:5980 days ago1725425999IN
SymVerse: SYM Token
0 ETH0.000031390.63856534
Transfer206605772024-09-02 4:44:4782 days ago1725252287IN
SymVerse: SYM Token
0 ETH0.000020690.56130359
Transfer203412312024-07-19 14:39:11127 days ago1721399951IN
SymVerse: SYM Token
0 ETH0.000352811.00806342
Transfer203267562024-07-17 14:10:11129 days ago1721225411IN
SymVerse: SYM Token
0 ETH0.0005942616.13198204
Transfer203225512024-07-17 0:06:11129 days ago1721174771IN
SymVerse: SYM Token
0 ETH0.000206985.61699862
Transfer203158922024-07-16 1:50:11130 days ago1721094611IN
SymVerse: SYM Token
0 ETH0.000171194.64579143
Transfer203157842024-07-16 1:28:35130 days ago1721093315IN
SymVerse: SYM Token
0 ETH0.00018685.0692421
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

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

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.