ETH Price: $2,294.33 (+1.33%)

Token

HexDex (H3D)
 

Overview

Max Total Supply

311.01883265 H3D

Holders

40

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
0.40542783 H3D

Value
$0.00
0x5138240e96360ad64010c27eb0c685a8b2ede4f2
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
HexDex

Compiler Version
v0.5.15+commit.6a57276f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-06-05
*/

pragma solidity ^0.5.15;


interface ERC20 {
    function totalSupply() external view returns (uint256 supply);

    function balanceOf(address _owner) external view returns (uint256 balance);

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

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

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

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

    function decimals() external view returns (uint256 digits);

    event Approval(
        address indexed _owner,
        address indexed _spender,
        uint256 _value
    );
}


contract HexDex {
    /*=================================
  =            MODIFIERS            =
  =================================*/
    // only people with tokens
    modifier onlyBagholders() {
        require(myTokens() > 0);
        _;
    }

    // only people with profits
    modifier onlyStronghands() {
        require(myDividends(true) > 0);
        _;
    }

    modifier onlyAdmin() {
        require(msg.sender == administrator);
        _;
    }

    /*==============================
  =            EVENTS            =
  ==============================*/
    event onTokenPurchase(
        address indexed customerAddress,
        bytes32 customerName,
        uint256 incomingEthereum,
        uint256 tokensMinted,
        address indexed referredBy,
        bool isReinvest
    );

    event onTokenSell(
        address indexed customerAddress,
        bytes32 customerName,
        uint256 tokensBurned,
        uint256 ethereumEarned
    );

    event onWithdraw(
        address indexed customerAddress,
        bytes32 customerName,
        uint256 ethereumWithdrawn
    );

    // ERC20
    event Transfer(address indexed from, address indexed to, uint256 tokens);

    /*=====================================
  =            CONFIGURABLES            =
  =====================================*/
    string public name = "HexDex";
    string public symbol = "H3D";
    uint8 public constant decimals = 8;
    uint8 internal constant dividendFee_ = 10; // 10%
    uint256 internal constant HEX_CENT = 1e6;
    uint256 internal constant HEX = 1e8;
    uint256 internal constant tokenPriceInitial_ = 1 * HEX;
    uint256 internal constant tokenPriceIncremental_ = 10 * HEX_CENT;
    uint256 internal constant magnitude = 2**64;
    address internal constant tokenAddress = address(
        0x2b591e99afE9f32eAA6214f7B7629768c40Eeb39
    );

    uint256 internal cubeStartTime = now;

    // admin for premine lock
    address internal administrator;

    // ambassadors
    uint256 ambassadorLimit = HEX * 20000; // 20k hex per ambassador
    uint256 devLimit = HEX * 100000;
    mapping(address => bool) public ambassadors; // who the ambassadors are
    mapping(address => bool) public dev;

    address[33] ambassadorList = [
        0xc951D3463EbBa4e9Ec8dDfe1f42bc5895C46eC8f,
        0xe8f49490d2b172870b3B225e9fcD39b5D68b2e9E,
        0x5161e1380cd661D7d993c8a3b3E57b059Ad8d7A4,
        0x4Ca9046dcd4C8712450250208D7eD6fCEbAf75a5,
        0xC697BE0b5b82284391A878B226e2f9AfC6B94710,
        0x5cB87df0834cd82297C63eF075421401995914ae,
        0x53F403421110BA93086BCFB40e80C7346035aDF6,
        0x11ba6C4732B1a7f30deA51C23b8ED4c1F88dCD57,
        0xb7032661C1DA18A52830A5e97bdE5569ed3c2A5F,
        0x73c371F85246797e4f7f68F7F46b9261EBa2F853,
        0xffc1eD0C150890c163D940146565df6064588d3e,
        0x5DD516f5dC0E68C5A37D20284Dabd754e35AfF1c,
        0x554fdECe1B1319075d7Bf2F5137076C21A202249,
        0xcF7b442C41795e874b223D4ADeED8cda87A23d00,
        0x87cb806192eC699398511c7aB44b3595C051D13C,
        0x1c2c72269ce1aD29933F090547b4102a9c398f34,
        0x9b411116f92504562EDCf3a1b14Ae226Bc1489Fc,
        0x2E7E5DE7D87A29B16284092B19891c80B0F43eCa,
        0xada8694dd1B511E72F467e7242E7123088aED064,
        0x5269BF8720946b5c38FBf361a947bA9D30C91313,
        0x21e0111e60D5449BdBa67ee6c014B5384644a714,
        0xB96d8107D613b6b593b4531Fc353B282af7fbeF5,
        0x71A4b5895A077806E8cd9F85a5253A9DEbd593fD,
        0x73018870D10173ae6F71Cac3047ED3b6d175F274,
        0x8E2Efa9eD16f07d9B153D295d35025FD677BaE99,
        0x112b3496AAD76CD34a29C335266A968D65fBa10a,
        0x9D7a76fD386eDEB3A871c3A096Ca875aDc1a55b7,
        0x05227e4FA98a6415ef1927E902dc781AA7eD518a,
        0x18600fE707D883c1FD16f002A09241D630270233,
        0x8ec43a855007c61Ce75406DB8b2079207F7d597a,
        0x09a054B60bd3B908791B55eEE81b515B93831E99,
        0x982D72A38A2CB0ed8F2fae5B22C122f1C9c89a13,
        0xa683C1b815997a7Fa38f6178c84675FC4c79AC2B
    ];

    address[10] devList = [
        0x818F1B08E38376E9635C5bE156B8786317e833b3,
        0xa765a22C97c38c8Ce50FEA453cE92723C7637AA2,
        0xEe54D208f62368B4efFe176CB548A317dcAe963F,
        0x43678bB266e75F50Fbe5927128Ab51930b447eaB,
        0x5138240E96360ad64010C27eB0c685A8b2eDE4F2,
        0x39E00115d71313fD5983DE3Cf2b5820dd3Cc4447,
        0xcFAa3449DFfB82Bf5B37e42FbCf43170c6C8e4AD,
        0x90D20d17Cc9e07020bB490c5e34f486286d3Eeb2,
        0x074F21a36217d7615d0202faA926aEFEBB5a9999,
        0xAA7A7C2DECB180f68F11E975e6D92B5Dc06083A6
    ];

    uint256 numAmbassadorsDeposited;

    function depositPremine() public {
        require(ambassadors[msg.sender]); // require them to be an ambassador
        ambassadors[msg.sender] = false; // make them not an ambassador after this transaction! so they can't buy in twice
        ERC20 Hex = ERC20(tokenAddress);

        // you must deposit EXACTLY 20k
        Hex.transferFrom(msg.sender, address(this), ambassadorLimit);
        numAmbassadorsDeposited++;
    }

    uint256 numDevDeposited;

    function depositDevPremine() public {
        require(dev[msg.sender]);
        dev[msg.sender] = false;
        ERC20 Hex = ERC20(tokenAddress);

        Hex.transferFrom(msg.sender, address(this), devLimit);
        numDevDeposited++;
    }

    function executePremineBuy() public onlyAdmin() {
        require(now < cubeStartTime);
        ERC20 Hex = ERC20(tokenAddress);

        // first buy in with 1 hex so that we don't black hole a bunch of stuff
        Hex.transferFrom(msg.sender, address(this), 1 * HEX);
        purchaseTokens(1 * HEX, address(0x0), false);

        // then buy in the full amount with the amount of hex in the contract minus 1
        purchaseTokens(
            Hex.balanceOf(address(this)) - (1 * HEX),
            address(0x0),
            false
        );

        // now that we have a bunch of tokens, transfer them out to each ambassador fairly!
        uint256 premineTokenShare = tokenSupply_ /
            (numAmbassadorsDeposited + (numDevDeposited * 5));

        for (uint256 i = 0; i < 33; i++) {
            // if this call returns false, it means the person is NO LONGER an ambassador - which means they HAVE deposited
            // which means we SHOULD give them their token share!
            if (ambassadors[ambassadorList[i]] == false) {
                transfer(ambassadorList[i], premineTokenShare);
            }
        }

        for (uint256 j = 0; j < 10; j++) {
            // if this call returns false, it means the person is NO LONGER an ambassador - which means they HAVE deposited
            // which means we SHOULD give them their token share!
            if (dev[devList[j]] == false) {
                transfer(devList[j], premineTokenShare * 5);
            }
        }
    }

    function restart() public onlyAdmin() {
        require(now < cubeStartTime);
        // Only called if something goes wrong during premine
        ERC20 Hex = ERC20(tokenAddress);
        Hex.transfer(administrator, Hex.balanceOf(address(this)));
    }

    // username interface
    UsernameInterface private username;

    /*================================
  =            DATASETS            =
  ================================*/
    // amount of shares for each address (scaled number)
    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) internal referralBalance_;
    mapping(address => int256) internal payoutsTo_;
    mapping(address => bool) internal approvedDistributors;
    uint256 internal tokenSupply_ = 0;
    uint256 internal profitPerShare_;

    /*=======================================
  =            PUBLIC FUNCTIONS            =
  =======================================*/
    /*
     * -- APPLICATION ENTRY POINTS --
     */
    constructor(address usernameAddress, uint256 when_start) public {
        ambassadors[0xc951D3463EbBa4e9Ec8dDfe1f42bc5895C46eC8f] = true;
        ambassadors[0xe8f49490d2b172870b3B225e9fcD39b5D68b2e9E] = true;
        ambassadors[0x5161e1380cd661D7d993c8a3b3E57b059Ad8d7A4] = true;
        ambassadors[0x4Ca9046dcd4C8712450250208D7eD6fCEbAf75a5] = true;
        ambassadors[0xC697BE0b5b82284391A878B226e2f9AfC6B94710] = true;
        ambassadors[0x5cB87df0834cd82297C63eF075421401995914ae] = true;
        ambassadors[0x53F403421110BA93086BCFB40e80C7346035aDF6] = true;
        ambassadors[0x11ba6C4732B1a7f30deA51C23b8ED4c1F88dCD57] = true;
        ambassadors[0xb7032661C1DA18A52830A5e97bdE5569ed3c2A5F] = true;
        ambassadors[0x73c371F85246797e4f7f68F7F46b9261EBa2F853] = true;
        ambassadors[0xffc1eD0C150890c163D940146565df6064588d3e] = true;
        ambassadors[0x5DD516f5dC0E68C5A37D20284Dabd754e35AfF1c] = true;
        ambassadors[0x554fdECe1B1319075d7Bf2F5137076C21A202249] = true;
        ambassadors[0xcF7b442C41795e874b223D4ADeED8cda87A23d00] = true;
        ambassadors[0x87cb806192eC699398511c7aB44b3595C051D13C] = true;
        ambassadors[0x1c2c72269ce1aD29933F090547b4102a9c398f34] = true;
        ambassadors[0x9b411116f92504562EDCf3a1b14Ae226Bc1489Fc] = true;
        ambassadors[0x2E7E5DE7D87A29B16284092B19891c80B0F43eCa] = true;
        ambassadors[0xada8694dd1B511E72F467e7242E7123088aED064] = true;
        ambassadors[0x5269BF8720946b5c38FBf361a947bA9D30C91313] = true;
        ambassadors[0x21e0111e60D5449BdBa67ee6c014B5384644a714] = true;
        ambassadors[0xB96d8107D613b6b593b4531Fc353B282af7fbeF5] = true;
        ambassadors[0x71A4b5895A077806E8cd9F85a5253A9DEbd593fD] = true;
        ambassadors[0x73018870D10173ae6F71Cac3047ED3b6d175F274] = true;
        ambassadors[0x8E2Efa9eD16f07d9B153D295d35025FD677BaE99] = true;
        ambassadors[0x112b3496AAD76CD34a29C335266A968D65fBa10a] = true;
        ambassadors[0x9D7a76fD386eDEB3A871c3A096Ca875aDc1a55b7] = true;
        ambassadors[0x05227e4FA98a6415ef1927E902dc781AA7eD518a] = true;
        ambassadors[0x18600fE707D883c1FD16f002A09241D630270233] = true;
        ambassadors[0x8ec43a855007c61Ce75406DB8b2079207F7d597a] = true;
        ambassadors[0x09a054B60bd3B908791B55eEE81b515B93831E99] = true;
        ambassadors[0x982D72A38A2CB0ed8F2fae5B22C122f1C9c89a13] = true;
        ambassadors[0xa683C1b815997a7Fa38f6178c84675FC4c79AC2B] = true;

        dev[0x818F1B08E38376E9635C5bE156B8786317e833b3] = true;
        dev[0xa765a22C97c38c8Ce50FEA453cE92723C7637AA2] = true;
        dev[0xEe54D208f62368B4efFe176CB548A317dcAe963F] = true;
        dev[0x43678bB266e75F50Fbe5927128Ab51930b447eaB] = true;
        dev[0x5138240E96360ad64010C27eB0c685A8b2eDE4F2] = true;
        dev[0x39E00115d71313fD5983DE3Cf2b5820dd3Cc4447] = true;
        dev[0xcFAa3449DFfB82Bf5B37e42FbCf43170c6C8e4AD] = true;
        dev[0x90D20d17Cc9e07020bB490c5e34f486286d3Eeb2] = true;
        dev[0x074F21a36217d7615d0202faA926aEFEBB5a9999] = true;
        dev[0xAA7A7C2DECB180f68F11E975e6D92B5Dc06083A6] = true;

        username = UsernameInterface(usernameAddress);
        cubeStartTime = when_start;
        administrator = msg.sender;
    }

    function startTime() public view returns (uint256 _startTime) {
        _startTime = cubeStartTime;
    }

    function approveDistributor(address newDistributor) public onlyAdmin() {
        approvedDistributors[newDistributor] = true;
    }

    /**
     * Converts all incoming ethereum to tokens for the caller, and passes down the referral addy (if any)
     */
    function buy(address _referredBy, uint256 amount) public returns (uint256) {
        ERC20 Hex = ERC20(tokenAddress);
        Hex.transferFrom(msg.sender, address(this), amount);
        purchaseTokens(amount, _referredBy, false);
    }

    /**
     * refuse to receive any tokens directly sent
     *
     */
    function() external payable {
        revert();
    }

    function distribute(uint256 amount) external payable {
        require(approvedDistributors[msg.sender] == true);
        ERC20 Hex = ERC20(tokenAddress);
        Hex.transferFrom(msg.sender, address(this), amount);
        profitPerShare_ = SafeMath.add(
            profitPerShare_,
            (amount * magnitude) / tokenSupply_
        );
    }

    /**
     * Converts all of caller's dividends to tokens.
     */
    function reinvest() public onlyStronghands() {
        // fetch dividends
        uint256 _dividends = myDividends(false); // retrieve ref. bonus later in the code

        // pay out the dividends virtually
        address _customerAddress = msg.sender;
        payoutsTo_[_customerAddress] += (int256)(_dividends * magnitude);

        // retrieve ref. bonus
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;

        // dispatch a buy order with the virtualized "withdrawn dividends"
        purchaseTokens(_dividends, address(0x0), true);
    }

    /**
     * Alias of sell() and withdraw().
     */
    function exit() public {
        // get token count for caller & sell them all
        address _customerAddress = msg.sender;
        uint256 _tokens = tokenBalanceLedger_[_customerAddress];
        if (_tokens > 0) sell(_tokens);

        withdraw();
    }

    /**
     * Withdraws all of the callers earnings.
     */
    function withdraw() public onlyStronghands() {
        // setup data
        address _customerAddress = msg.sender;
        uint256 _dividends = myDividends(false); // get ref. bonus later in the code

        // update dividend tracker
        payoutsTo_[_customerAddress] += (int256)(_dividends * magnitude);

        // add ref. bonus
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;

        // lambo delivery service
        ERC20 Hex = ERC20(tokenAddress);
        Hex.transfer(_customerAddress, _dividends);

        // fire event
        emit onWithdraw(
            _customerAddress,
            username.getNameByAddress(msg.sender),
            _dividends
        );
    }

    /**
     * Liquifies tokens to ethereum.
     */
    function sell(uint256 _amountOfTokens) public onlyBagholders() {
        // setup data
        address _customerAddress = msg.sender;
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _tokens = _amountOfTokens;
        uint256 _ethereum = tokensToEthereum_(_tokens);
        uint256 _dividends = SafeMath.div(_ethereum, dividendFee_);
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);

        // burn the sold tokens
        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(
            tokenBalanceLedger_[_customerAddress],
            _tokens
        );

        // update dividends tracker
        int256 _updatedPayouts = (int256)(
            profitPerShare_ * _tokens + (_taxedEthereum * magnitude)
        );
        payoutsTo_[_customerAddress] -= _updatedPayouts;

        // dividing by zero is a bad idea
        if (tokenSupply_ > 0) {
            // update the amount of dividends per token
            profitPerShare_ = SafeMath.add(
                profitPerShare_,
                (_dividends * magnitude) / tokenSupply_
            );
        }

        // fire event
        emit onTokenSell(
            _customerAddress,
            username.getNameByAddress(msg.sender),
            _tokens,
            _taxedEthereum
        );
    }

    /**
     * To heck with the transfer fee
     * Who needs it
     */
    function transfer(address _toAddress, uint256 _amountOfTokens)
        public
        onlyBagholders()
        returns (bool)
    {
        // setup
        address _customerAddress = msg.sender;

        // make sure we have the requested tokens
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);

        // withdraw all outstanding dividends first
        if (myDividends(true) > 0) withdraw();

        // exchange tokens
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(
            tokenBalanceLedger_[_customerAddress],
            _amountOfTokens
        );
        tokenBalanceLedger_[_toAddress] = SafeMath.add(
            tokenBalanceLedger_[_toAddress],
            _amountOfTokens
        );

        // update dividend trackers
        payoutsTo_[_customerAddress] -= (int256)(
            profitPerShare_ * _amountOfTokens
        );
        payoutsTo_[_toAddress] += (int256)(profitPerShare_ * _amountOfTokens);

        // fire event
        emit Transfer(_customerAddress, _toAddress, _amountOfTokens);

        // ERC20
        return true;
    }

    /*----------  HELPERS AND CALCULATORS  ----------*/
    /**
     * Method to view the current Ethereum stored in the contract
     * Example: totalEthereumBalance()
     */
    function totalEthereumBalance() public view returns (uint256) {
        return address(this).balance;
    }

    /**
     * Retrieve the total token supply.
     */
    function totalSupply() public view returns (uint256) {
        return tokenSupply_;
    }

    /**
     * Retrieve the number of aambassadors deposited.
     */
    function numAmbassadorsDep() public view returns (uint256) {
        return numAmbassadorsDeposited;
    }

    /**
     * Retrieve the number of developers deposited.
     */
    function numDevDep() public view returns (uint256) {
        return numDevDeposited;
    }

    /**
     * Retrieve the tokens owned by the caller.
     */
    function myTokens() public view returns (uint256) {
        address _customerAddress = msg.sender;
        return balanceOf(_customerAddress);
    }

    /**
     * Retrieve the dividends owned by the caller.
     * If `_includeReferralBonus` is to to 1/true, the referral bonus will be included in the calculations.
     * The reason for this, is that in the frontend, we will want to get the total divs (global + ref)
     * But in the internal calculations, we want them separate.
     */
    function myDividends(bool _includeReferralBonus)
        public
        view
        returns (uint256)
    {
        address _customerAddress = msg.sender;
        return
            _includeReferralBonus
                ? dividendsOf(_customerAddress) +
                    referralBalance_[_customerAddress]
                : dividendsOf(_customerAddress);
    }

    /**
     * Retrieve the token balance of any single address.
     */
    function balanceOf(address _customerAddress) public view returns (uint256) {
        return tokenBalanceLedger_[_customerAddress];
    }

    /**
     * Retrieve the dividend balance of any single address.
     */
    function dividendsOf(address _customerAddress)
        public
        view
        returns (uint256)
    {
        return
            (uint256)(
                (int256)(
                    profitPerShare_ * tokenBalanceLedger_[_customerAddress]
                ) - payoutsTo_[_customerAddress]
            ) / magnitude;
    }

    /**
     * Return the sell price of 1 individual token.
     */
    function sellPrice() public view returns (uint256) {
        // our calculation relies on the token supply, so we need supply.
        if (tokenSupply_ == 0) {
            return tokenPriceInitial_ - tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e8);
            uint256 _dividends = SafeMath.div(_ethereum, dividendFee_);
            uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }

    /**
     * Return the buy price of 1 individual token.
     */
    function buyPrice() public view returns (uint256) {
        if (tokenSupply_ == 0) {
            return tokenPriceInitial_ + tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e8);
            uint256 _dividends = SafeMath.div(_ethereum, dividendFee_);
            uint256 _taxedEthereum = SafeMath.add(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }

    /**
     * Function for the frontend to dynamically retrieve the price scaling of buy orders.
     */
    function calculateTokensReceived(uint256 _ethereumToSpend)
        public
        view
        returns (uint256)
    {
        uint256 _dividends = SafeMath.div(_ethereumToSpend, dividendFee_);
        uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);

        return _amountOfTokens;
    }

    /**
     * Function for the frontend to dynamically retrieve the price scaling of sell orders.
     */
    function calculateEthereumReceived(uint256 _tokensToSell)
        public
        view
        returns (uint256)
    {
        require(_tokensToSell <= tokenSupply_);
        uint256 _ethereum = tokensToEthereum_(_tokensToSell);
        uint256 _dividends = SafeMath.div(_ethereum, dividendFee_);
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        return _taxedEthereum;
    }

    /*==========================================
  =            INTERNAL FUNCTIONS            =
  ==========================================*/
    function purchaseTokens(
        uint256 _incomingEthereum,
        address _referredBy,
        bool isReinvest
    ) internal returns (uint256) {
        if (now < startTime()) {
            require(msg.sender == administrator);
        }

        // data setup
        uint256 _undividedDividends = SafeMath.div(
            _incomingEthereum,
            dividendFee_
        );
        uint256 _referralBonus = SafeMath.div(_undividedDividends, 3);
        uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus);
        uint256 _taxedEthereum = SafeMath.sub(
            _incomingEthereum,
            _undividedDividends
        );
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
        uint256 _fee = _dividends * magnitude;

        require(
            _amountOfTokens > 0 &&
                (SafeMath.add(_amountOfTokens, tokenSupply_) > tokenSupply_)
        );

        // is the user referred by a masternode?
        if (
            // is this a referred purchase?
            _referredBy != 0x0000000000000000000000000000000000000000 &&
            // no cheating!
            _referredBy != msg.sender
        ) {
            // wealth redistribution
            referralBalance_[_referredBy] = SafeMath.add(
                referralBalance_[_referredBy],
                _referralBonus
            );
        } else {
            // no ref purchase
            // add the referral bonus back to the global dividends
            _dividends = SafeMath.add(_dividends, _referralBonus);
            _fee = _dividends * magnitude;
        }

        // we can't give people infinite ethereum
        if (tokenSupply_ > 0) {
            // add tokens to the pool
            tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);

            // take the amount of dividends gained through this transaction, and allocates them evenly to each shareholder
            profitPerShare_ += ((_dividends * magnitude) / (tokenSupply_));

            // calculate the amount of tokens the customer receives over his purchase
            _fee =
                _fee -
                (_fee -
                    (_amountOfTokens *
                        ((_dividends * magnitude) / (tokenSupply_))));
        } else {
            // add tokens to the pool
            tokenSupply_ = _amountOfTokens;
        }

        // update circulating supply & the ledger address for the customer
        tokenBalanceLedger_[msg.sender] = SafeMath.add(
            tokenBalanceLedger_[msg.sender],
            _amountOfTokens
        );

        // Tells the contract that the buyer doesn't deserve dividends for the tokens before they owned them;
        //really i know you think you do but you don't
        int256 _updatedPayouts = (int256)(
            (profitPerShare_ * _amountOfTokens) - _fee
        );
        payoutsTo_[msg.sender] += _updatedPayouts;

        // fire event
        emit onTokenPurchase(
            msg.sender,
            username.getNameByAddress(msg.sender),
            _incomingEthereum,
            _amountOfTokens,
            _referredBy,
            isReinvest
        );

        return _amountOfTokens;
    }

    /**
     * Calculate Token price based on an amount of incoming ethereum
     * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
     * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
     */
    function ethereumToTokens_(uint256 _ethereum)
        internal
        view
        returns (uint256)
    {
        uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e8;
        uint256 _tokensReceived = ((
            SafeMath.sub(
                (
                    sqrt(
                        (_tokenPriceInitial**2) +
                            (2 *
                                (tokenPriceIncremental_ * 1e8) *
                                (_ethereum * 1e8)) +
                            (((tokenPriceIncremental_)**2) *
                                (tokenSupply_**2)) +
                            (2 *
                                (tokenPriceIncremental_) *
                                _tokenPriceInitial *
                                tokenSupply_)
                    )
                ),
                _tokenPriceInitial
            )
        ) / (tokenPriceIncremental_)) - (tokenSupply_);

        return _tokensReceived;
    }

    /**
     * Calculate token sell value.
     * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
     * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
     */
    function tokensToEthereum_(uint256 _tokens)
        internal
        view
        returns (uint256)
    {
        uint256 tokens_ = (_tokens + 1e8);
        uint256 _tokenSupply = (tokenSupply_ + 1e8);
        uint256 _etherReceived = (SafeMath.sub(
            (((tokenPriceInitial_ +
                (tokenPriceIncremental_ * (_tokenSupply / 1e8))) -
                tokenPriceIncremental_) * (tokens_ - 1e8)),
            (tokenPriceIncremental_ * ((tokens_**2 - tokens_) / 1e8)) / 2
        ) / 1e8);
        return _etherReceived;
    }

    //This is where all your gas goes apparently
    function sqrt(uint256 x) internal pure returns (uint256 y) {
        uint256 z = (x + 1) / 2;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}


interface UsernameInterface {
    function getNameByAddress(address _addr) external view returns (bytes32);
}


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    /**
     * @dev Multiplies two numbers, throws on overflow.
     */
    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;
    }

    /**
     * @dev Integer division of two numbers, truncating the quotient.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a / b;
        return c;
    }

    /**
     * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        return a - b;
    }

    /**
     * @dev Adds two numbers, throws on overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);
        return c;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"usernameAddress","type":"address"},{"internalType":"uint256","name":"when_start","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"bytes32","name":"customerName","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"incomingEthereum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensMinted","type":"uint256"},{"indexed":true,"internalType":"address","name":"referredBy","type":"address"},{"indexed":false,"internalType":"bool","name":"isReinvest","type":"bool"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"bytes32","name":"customerName","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"tokensBurned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethereumEarned","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"bytes32","name":"customerName","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ambassadors","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newDistributor","type":"address"}],"name":"approveDistributor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_referredBy","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"depositDevPremine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositPremine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dev","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"distribute","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"executePremineBuy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bool","name":"_includeReferralBonus","type":"bool"}],"name":"myDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numAmbassadorsDep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numDevDep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"restart","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_toAddress","type":"address"},{"internalType":"uint256","name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280600681526020017f4865784465780000000000000000000000000000000000000000000000000000815250600090805190602001906200005192919062001fc1565b506040518060400160405280600381526020017f4833440000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f92919062001fc1565b5042600255614e206305f5e10002600455620186a06305f5e1000260055560405180610420016040528073c951d3463ebba4e9ec8ddfe1f42bc5895c46ec8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e8f49490d2b172870b3b225e9fcd39b5d68b2e9e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735161e1380cd661d7d993c8a3b3e57b059ad8d7a473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734ca9046dcd4c8712450250208d7ed6fcebaf75a573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c697be0b5b82284391a878b226e2f9afc6b9471073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735cb87df0834cd82297c63ef075421401995914ae73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017353f403421110ba93086bcfb40e80c7346035adf673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017311ba6c4732b1a7f30dea51c23b8ed4c1f88dcd5773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b7032661c1da18a52830a5e97bde5569ed3c2a5f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017373c371f85246797e4f7f68f7f46b9261eba2f85373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ffc1ed0c150890c163d940146565df6064588d3e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735dd516f5dc0e68c5a37d20284dabd754e35aff1c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173554fdece1b1319075d7bf2f5137076c21a20224973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173cf7b442c41795e874b223d4adeed8cda87a23d0073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017387cb806192ec699398511c7ab44b3595c051d13c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731c2c72269ce1ad29933f090547b4102a9c398f3473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739b411116f92504562edcf3a1b14ae226bc1489fc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732e7e5de7d87a29b16284092b19891c80b0f43eca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ada8694dd1b511e72f467e7242e7123088aed06473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735269bf8720946b5c38fbf361a947ba9d30c9131373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017321e0111e60d5449bdba67ee6c014b5384644a71473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b96d8107d613b6b593b4531fc353b282af7fbef573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017371a4b5895a077806e8cd9f85a5253a9debd593fd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017373018870d10173ae6f71cac3047ed3b6d175f27473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001738e2efa9ed16f07d9b153d295d35025fd677bae9973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173112b3496aad76cd34a29c335266a968d65fba10a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739d7a76fd386edeb3a871c3a096ca875adc1a55b773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017305227e4fa98a6415ef1927e902dc781aa7ed518a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017318600fe707d883c1fd16f002a09241d63027023373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001738ec43a855007c61ce75406db8b2079207f7d597a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017309a054b60bd3b908791b55eee81b515b93831e9973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173982d72a38a2cb0ed8f2fae5b22c122f1c9c89a1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a683c1b815997a7fa38f6178c84675fc4c79ac2b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152506008906021620009df92919062002048565b5060405180610140016040528073818f1b08e38376e9635c5be156b8786317e833b373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a765a22c97c38c8ce50fea453ce92723c7637aa273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ee54d208f62368b4effe176cb548a317dcae963f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017343678bb266e75f50fbe5927128ab51930b447eab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735138240e96360ad64010c27eb0c685a8b2ede4f273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017339e00115d71313fd5983de3cf2b5820dd3cc444773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173cfaa3449dffb82bf5b37e42fbcf43170c6c8e4ad73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017390d20d17cc9e07020bb490c5e34f486286d3eeb273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173074f21a36217d7615d0202faa926aefebb5a999973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173aa7a7c2decb180f68f11e975e6d92b5dc06083a673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250602990600a62000cb8929190620020ca565b506000603a5534801562000ccb57600080fd5b5060405162004dd338038062004dd38339818101604052604081101562000cf157600080fd5b81019080805190602001909291908051906020019092919050505060016006600073c951d3463ebba4e9ec8ddfe1f42bc5895c46ec8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073e8f49490d2b172870b3b225e9fcd39b5d68b2e9e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000735161e1380cd661d7d993c8a3b3e57b059ad8d7a473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000734ca9046dcd4c8712450250208d7ed6fcebaf75a573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073c697be0b5b82284391a878b226e2f9afc6b9471073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000735cb87df0834cd82297c63ef075421401995914ae73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660007353f403421110ba93086bcfb40e80c7346035adf673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660007311ba6c4732b1a7f30dea51c23b8ed4c1f88dcd5773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073b7032661c1da18a52830a5e97bde5569ed3c2a5f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660007373c371f85246797e4f7f68f7f46b9261eba2f85373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073ffc1ed0c150890c163d940146565df6064588d3e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000735dd516f5dc0e68c5a37d20284dabd754e35aff1c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073554fdece1b1319075d7bf2f5137076c21a20224973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073cf7b442c41795e874b223d4adeed8cda87a23d0073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660007387cb806192ec699398511c7ab44b3595c051d13c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000731c2c72269ce1ad29933f090547b4102a9c398f3473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000739b411116f92504562edcf3a1b14ae226bc1489fc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000732e7e5de7d87a29b16284092b19891c80b0f43eca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073ada8694dd1b511e72f467e7242e7123088aed06473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000735269bf8720946b5c38fbf361a947ba9d30c9131373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660007321e0111e60d5449bdba67ee6c014b5384644a71473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073b96d8107d613b6b593b4531fc353b282af7fbef573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660007371a4b5895a077806e8cd9f85a5253a9debd593fd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660007373018870d10173ae6f71cac3047ed3b6d175f27473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000738e2efa9ed16f07d9b153d295d35025fd677bae9973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073112b3496aad76cd34a29c335266a968d65fba10a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000739d7a76fd386edeb3a871c3a096ca875adc1a55b773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660007305227e4fa98a6415ef1927e902dc781aa7ed518a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660007318600fe707d883c1fd16f002a09241d63027023373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000738ec43a855007c61ce75406db8b2079207f7d597a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660007309a054b60bd3b908791b55eee81b515b93831e9973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073982d72a38a2cb0ed8f2fae5b22c122f1c9c89a1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073a683c1b815997a7fa38f6178c84675fc4c79ac2b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073818f1b08e38376e9635c5be156b8786317e833b373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a765a22c97c38c8ce50fea453ce92723c7637aa273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ee54d208f62368b4effe176cb548a317dcae963f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007343678bb266e75f50fbe5927128ab51930b447eab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735138240e96360ad64010c27eb0c685a8b2ede4f273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007339e00115d71313fd5983de3cf2b5820dd3cc444773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073cfaa3449dffb82bf5b37e42fbcf43170c6c8e4ad73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007390d20d17cc9e07020bb490c5e34f486286d3eeb273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073074f21a36217d7615d0202faa926aefebb5a999973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073aa7a7c2decb180f68f11e975e6d92b5dc06083a673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081603560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060028190555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620021ba565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200200457805160ff191683800117855562002035565b8280016001018555821562002035579182015b828111156200203457825182559160200191906001019062002017565b5b5090506200204491906200214c565b5090565b8260218101928215620020b7579160200282015b82811115620020b65782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200205c565b5b509050620020c6919062002174565b5090565b82600a810192821562002139579160200282015b82811115620021385782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620020de565b5b50905062002148919062002174565b5090565b6200217191905b808211156200216d57600081600090555060010162002153565b5090565b90565b620021b791905b80821115620021b357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200217b565b5090565b90565b612c0980620021ca6000396000f3fe6080604052600436106101cc5760003560e01c806370a08231116100f757806395d89b4111610095578063dc260aaa11610064578063dc260aaa146108c2578063e4849b32146108d9578063e9fad8ee14610914578063fdb5a03e1461092b576101cc565b806395d89b4114610725578063a60520c6146107b5578063a9059cbb146107e0578063cce7ec1314610853576101cc565b80638d88a90e116100d15780638d88a90e1461064c5780638e383c2e146106b557806391c05b0b146106cc578063949e8acd146106fa576101cc565b806370a082311461059157806378e97925146105f65780638620410b14610621576101cc565b80632c9d4fe41161016f5780634b7503341161013e5780634b750334146104bf57806366a7005b146104ea578063688abbf7146105155780636b2f463214610566576101cc565b80632c9d4fe41461040f578063313ce567146104265780633ccfd60b14610457578063482aede51461046e576101cc565b806318160ddd116101ab57806318160ddd146103155780631ef3755d14610340578063226093731461035757806328ce48a0146103a6576101cc565b806265318b146101d157806306fdde031461023657806310d0ffdd146102c6575b600080fd5b3480156101dd57600080fd5b50610220600480360360208110156101f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610942565b6040518082815260200191505060405180910390f35b34801561024257600080fd5b5061024b6109e2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028b578082015181840152602081019050610270565b50505050905090810190601f1680156102b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d257600080fd5b506102ff600480360360208110156102e957600080fd5b8101908080359060200190929190505050610a80565b6040518082815260200191505060405180910390f35b34801561032157600080fd5b5061032a610ab9565b6040518082815260200191505060405180910390f35b34801561034c57600080fd5b50610355610ac3565b005b34801561036357600080fd5b506103906004803603602081101561037a57600080fd5b8101908080359060200190929190505050610ce3565b6040518082815260200191505060405180910390f35b3480156103b257600080fd5b506103f5600480360360208110156103c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d2c565b604051808215151515815260200191505060405180910390f35b34801561041b57600080fd5b50610424610d4c565b005b34801561043257600080fd5b5061043b611188565b604051808260ff1660ff16815260200191505060405180910390f35b34801561046357600080fd5b5061046c61118d565b005b34801561047a57600080fd5b506104bd6004803603602081101561049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114a6565b005b3480156104cb57600080fd5b506104d461155b565b6040518082815260200191505060405180910390f35b3480156104f657600080fd5b506104ff6115b9565b6040518082815260200191505060405180910390f35b34801561052157600080fd5b506105506004803603602081101561053857600080fd5b810190808035151590602001909291905050506115c3565b6040518082815260200191505060405180910390f35b34801561057257600080fd5b5061057b61162f565b6040518082815260200191505060405180910390f35b34801561059d57600080fd5b506105e0600480360360208110156105b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611637565b6040518082815260200191505060405180910390f35b34801561060257600080fd5b5061060b611680565b6040518082815260200191505060405180910390f35b34801561062d57600080fd5b5061063661168a565b6040518082815260200191505060405180910390f35b34801561065857600080fd5b5061069b6004803603602081101561066f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116e8565b604051808215151515815260200191505060405180910390f35b3480156106c157600080fd5b506106ca611708565b005b6106f8600480360360208110156106e257600080fd5b81019080803590602001909291905050506118dd565b005b34801561070657600080fd5b5061070f611a76565b6040518082815260200191505060405180910390f35b34801561073157600080fd5b5061073a611a8b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561077a57808201518184015260208101905061075f565b50505050905090810190601f1680156107a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107c157600080fd5b506107ca611b29565b6040518082815260200191505060405180910390f35b3480156107ec57600080fd5b506108396004803603604081101561080357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b33565b604051808215151515815260200191505060405180910390f35b34801561085f57600080fd5b506108ac6004803603604081101561087657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dde565b6040518082815260200191505060405180910390f35b3480156108ce57600080fd5b506108d7611f03565b005b3480156108e557600080fd5b50610912600480360360208110156108fc57600080fd5b81019080803590602001909291905050506120d8565b005b34801561092057600080fd5b506109296123e4565b005b34801561093757600080fd5b5061094061244c565b005b600068010000000000000000603860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054603b540203816109da57fe5b049050919050565b60008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a785780601f10610a4d57610100808354040283529160200191610a78565b820191906000526020600020905b815481529060010190602001808311610a5b57829003601f168201915b505050505081565b600080610a9183600a60ff16612568565b90506000610a9f8483612581565b90506000610aac8261259b565b9050809350505050919050565b6000603a54905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1d57600080fd5b6002544210610b2b57600080fd5b6000732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c0057600080fd5b505afa158015610c14573d6000803e3d6000fd5b505050506040513d6020811015610c2a57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050506040513d6020811015610cce57600080fd5b81019080805190602001909291905050505050565b6000603a54821115610cf457600080fd5b6000610cff8361261c565b90506000610d1182600a60ff16612568565b90506000610d1f8383612581565b9050809350505050919050565b60066020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da657600080fd5b6002544210610db457600080fd5b6000732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff166323b872dd33306305f5e1006001026040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610e8f57600080fd5b505af1158015610ea3573d6000803e3d6000fd5b505050506040513d6020811015610eb957600080fd5b810190808051906020019092919050505050610ede6305f5e1006001026000806126ad565b50610fab6305f5e1006001028273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f6757600080fd5b505afa158015610f7b573d6000803e3d6000fd5b505050506040513d6020811015610f9157600080fd5b8101908080519060200190929190505050036000806126ad565b50600060056034540260335401603a5481610fc257fe5b04905060008090505b60218110156110a257600015156006600060088460218110610fe957fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611095576110936008826021811061106b57fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611b33565b505b8080600101915050610fcb565b5060008090505b600a811015611183576000151560076000602984600a81106110c757fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561117657611174602982600a811061114957fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058402611b33565b505b80806001019150506110a9565b505050565b600881565b600061119960016115c3565b116111a357600080fd5b600033905060006111b460006115c3565b9050680100000000000000008102603860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550603760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561133757600080fd5b505af115801561134b573d6000803e3d6000fd5b505050506040513d602081101561136157600080fd5b8101908080519060200190929190505050508273ffffffffffffffffffffffffffffffffffffffff167ee146a145d9955498f2f57f7976f0ca4b04166bcdc744667ff2291e99d43eab603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c80bb4f336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561144957600080fd5b505afa15801561145d573d6000803e3d6000fd5b505050506040513d602081101561147357600080fd5b810190808051906020019092919050505084604051808381526020018281526020019250505060405180910390a2505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461150057600080fd5b6001603960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080603a54141561157e57620f4240600a026305f5e1006001020390506115b6565b600061158d6305f5e10061261c565b9050600061159f82600a60ff16612568565b905060006115ad8383612581565b90508093505050505b90565b6000603454905090565b600080339050826115dc576115d781610942565b611627565b603760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461162582610942565b015b915050919050565b600047905090565b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600254905090565b600080603a5414156116ad57620f4240600a026305f5e1006001020190506116e5565b60006116bc6305f5e10061261c565b905060006116ce82600a60ff16612568565b905060006116dc8383612b70565b90508093505050505b90565b60076020528060005260406000206000915054906101000a900460ff1681565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661175e57600080fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff166323b872dd33306005546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561188c57600080fd5b505af11580156118a0573d6000803e3d6000fd5b505050506040513d60208110156118b657600080fd5b81019080805190602001909291905050505060346000815480929190600101919050555050565b60011515603960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461193a57600080fd5b6000732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a0e57600080fd5b505af1158015611a22573d6000803e3d6000fd5b505050506040513d6020811015611a3857600080fd5b810190808051906020019092919050505050611a6c603b54603a5468010000000000000000850281611a6657fe5b04612b70565b603b819055505050565b600080339050611a8581611637565b91505090565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b215780601f10611af657610100808354040283529160200191611b21565b820191906000526020600020905b815481529060010190602001808311611b0457829003601f168201915b505050505081565b6000603354905090565b600080611b3e611a76565b11611b4857600080fd5b6000339050603660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115611b9957600080fd5b6000611ba560016115c3565b1115611bb457611bb361118d565b5b611bfd603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612581565b603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c89603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612b70565b603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082603b5402603860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082603b5402603860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600080732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611eb357600080fd5b505af1158015611ec7573d6000803e3d6000fd5b505050506040513d6020811015611edd57600080fd5b810190808051906020019092919050505050611efb838560006126ad565b505092915050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f5957600080fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff166323b872dd33306004546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561208757600080fd5b505af115801561209b573d6000803e3d6000fd5b505050506040513d60208110156120b157600080fd5b81019080805190602001909291905050505060336000815480929190600101919050555050565b60006120e2611a76565b116120ec57600080fd5b6000339050603660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561213d57600080fd5b6000829050600061214d8261261c565b9050600061215f82600a60ff16612568565b9050600061216d8383612581565b905061217b603a5485612581565b603a819055506121ca603660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485612581565b603660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600068010000000000000000820285603b540201905080603860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506000603a5411156122a45761229d603b54603a546801000000000000000086028161229757fe5b04612b70565b603b819055505b8573ffffffffffffffffffffffffffffffffffffffff167f2b1bab0dee4e0a50527886cb13a7c880afb5fde2e72f684c423c27865918c738603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c80bb4f336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561237b57600080fd5b505afa15801561238f573d6000803e3d6000fd5b505050506040513d60208110156123a557600080fd5b8101908080519060200190929190505050878560405180848152602001838152602001828152602001935050505060405180910390a250505050505050565b60003390506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156124405761243f816120d8565b5b61244861118d565b5050565b600061245860016115c3565b1161246257600080fd5b600061246e60006115c3565b90506000339050680100000000000000008202603860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550603760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054820191506000603760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061256382600060016126ad565b505050565b60008082848161257457fe5b0490508091505092915050565b60008282111561259057600080fd5b818303905092915050565b6000806305f5e100806001020290506000603a54620f4240600a02612607612601603a5486620f4240600a0260020202026002603a540a6002620f4240600a020a026305f5e1008a026305f5e100620f4240600a0202600202026002890a010101612b8f565b85612581565b8161260e57fe5b040390508092505050919050565b6000806305f5e1008301905060006305f5e100603a5401905060006305f5e1006126986305f5e1008503620f4240600a026305f5e100868161265a57fe5b04620f4240600a02026305f5e10060010201030260026305f5e100876002890a038161268257fe5b04620f4240600a02028161269257fe5b04612581565b8161269f57fe5b049050809350505050919050565b60006126b7611680565b42101561271957600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461271857600080fd5b5b600061272985600a60ff16612568565b90506000612738826003612568565b905060006127468383612581565b905060006127548885612581565b905060006127618261259b565b90506000680100000000000000008402905060008211801561278f5750603a5461278d83603a54612b70565b115b61279857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415801561280157503373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b156128975761284f603760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486612b70565b603760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128b2565b6128a18486612b70565b935068010000000000000000840290505b6000603a541115612919576128c9603a5483612b70565b603a81905550603a54680100000000000000008502816128e557fe5b04603b60008282540192505081905550603a546801000000000000000085028161290b57fe5b048202810381039050612921565b81603a819055505b61296a603660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612b70565b603660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008183603b540203905080603860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f98b60cfa34508471467f46e2e4c785fdac290ba7406e041c4defb51e25b07d5e603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c80bb4f336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612af357600080fd5b505afa158015612b07573d6000803e3d6000fd5b505050506040513d6020811015612b1d57600080fd5b81019080805190602001909291905050508e878e604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390a3829750505050505050509392505050565b600080828401905083811015612b8557600080fd5b8091505092915050565b60008060026001840181612b9f57fe5b0490508291505b81811015612bce57809150600281828581612bbd57fe5b040181612bc657fe5b049050612ba6565b5091905056fea265627a7a7231582049a571730e1d39d951adbf2d9b472eb4a42600fb8d8becec1c29f2159952bdea64736f6c634300050f003200000000000000000000000036948b2b95e9bc965a96a511bbe124ef218f8447000000000000000000000000000000000000000000000000000000005edbd9a0

Deployed Bytecode

0x6080604052600436106101cc5760003560e01c806370a08231116100f757806395d89b4111610095578063dc260aaa11610064578063dc260aaa146108c2578063e4849b32146108d9578063e9fad8ee14610914578063fdb5a03e1461092b576101cc565b806395d89b4114610725578063a60520c6146107b5578063a9059cbb146107e0578063cce7ec1314610853576101cc565b80638d88a90e116100d15780638d88a90e1461064c5780638e383c2e146106b557806391c05b0b146106cc578063949e8acd146106fa576101cc565b806370a082311461059157806378e97925146105f65780638620410b14610621576101cc565b80632c9d4fe41161016f5780634b7503341161013e5780634b750334146104bf57806366a7005b146104ea578063688abbf7146105155780636b2f463214610566576101cc565b80632c9d4fe41461040f578063313ce567146104265780633ccfd60b14610457578063482aede51461046e576101cc565b806318160ddd116101ab57806318160ddd146103155780631ef3755d14610340578063226093731461035757806328ce48a0146103a6576101cc565b806265318b146101d157806306fdde031461023657806310d0ffdd146102c6575b600080fd5b3480156101dd57600080fd5b50610220600480360360208110156101f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610942565b6040518082815260200191505060405180910390f35b34801561024257600080fd5b5061024b6109e2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028b578082015181840152602081019050610270565b50505050905090810190601f1680156102b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d257600080fd5b506102ff600480360360208110156102e957600080fd5b8101908080359060200190929190505050610a80565b6040518082815260200191505060405180910390f35b34801561032157600080fd5b5061032a610ab9565b6040518082815260200191505060405180910390f35b34801561034c57600080fd5b50610355610ac3565b005b34801561036357600080fd5b506103906004803603602081101561037a57600080fd5b8101908080359060200190929190505050610ce3565b6040518082815260200191505060405180910390f35b3480156103b257600080fd5b506103f5600480360360208110156103c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d2c565b604051808215151515815260200191505060405180910390f35b34801561041b57600080fd5b50610424610d4c565b005b34801561043257600080fd5b5061043b611188565b604051808260ff1660ff16815260200191505060405180910390f35b34801561046357600080fd5b5061046c61118d565b005b34801561047a57600080fd5b506104bd6004803603602081101561049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114a6565b005b3480156104cb57600080fd5b506104d461155b565b6040518082815260200191505060405180910390f35b3480156104f657600080fd5b506104ff6115b9565b6040518082815260200191505060405180910390f35b34801561052157600080fd5b506105506004803603602081101561053857600080fd5b810190808035151590602001909291905050506115c3565b6040518082815260200191505060405180910390f35b34801561057257600080fd5b5061057b61162f565b6040518082815260200191505060405180910390f35b34801561059d57600080fd5b506105e0600480360360208110156105b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611637565b6040518082815260200191505060405180910390f35b34801561060257600080fd5b5061060b611680565b6040518082815260200191505060405180910390f35b34801561062d57600080fd5b5061063661168a565b6040518082815260200191505060405180910390f35b34801561065857600080fd5b5061069b6004803603602081101561066f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116e8565b604051808215151515815260200191505060405180910390f35b3480156106c157600080fd5b506106ca611708565b005b6106f8600480360360208110156106e257600080fd5b81019080803590602001909291905050506118dd565b005b34801561070657600080fd5b5061070f611a76565b6040518082815260200191505060405180910390f35b34801561073157600080fd5b5061073a611a8b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561077a57808201518184015260208101905061075f565b50505050905090810190601f1680156107a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107c157600080fd5b506107ca611b29565b6040518082815260200191505060405180910390f35b3480156107ec57600080fd5b506108396004803603604081101561080357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b33565b604051808215151515815260200191505060405180910390f35b34801561085f57600080fd5b506108ac6004803603604081101561087657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dde565b6040518082815260200191505060405180910390f35b3480156108ce57600080fd5b506108d7611f03565b005b3480156108e557600080fd5b50610912600480360360208110156108fc57600080fd5b81019080803590602001909291905050506120d8565b005b34801561092057600080fd5b506109296123e4565b005b34801561093757600080fd5b5061094061244c565b005b600068010000000000000000603860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054603b540203816109da57fe5b049050919050565b60008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a785780601f10610a4d57610100808354040283529160200191610a78565b820191906000526020600020905b815481529060010190602001808311610a5b57829003601f168201915b505050505081565b600080610a9183600a60ff16612568565b90506000610a9f8483612581565b90506000610aac8261259b565b9050809350505050919050565b6000603a54905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1d57600080fd5b6002544210610b2b57600080fd5b6000732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c0057600080fd5b505afa158015610c14573d6000803e3d6000fd5b505050506040513d6020811015610c2a57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050506040513d6020811015610cce57600080fd5b81019080805190602001909291905050505050565b6000603a54821115610cf457600080fd5b6000610cff8361261c565b90506000610d1182600a60ff16612568565b90506000610d1f8383612581565b9050809350505050919050565b60066020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da657600080fd5b6002544210610db457600080fd5b6000732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff166323b872dd33306305f5e1006001026040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610e8f57600080fd5b505af1158015610ea3573d6000803e3d6000fd5b505050506040513d6020811015610eb957600080fd5b810190808051906020019092919050505050610ede6305f5e1006001026000806126ad565b50610fab6305f5e1006001028273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f6757600080fd5b505afa158015610f7b573d6000803e3d6000fd5b505050506040513d6020811015610f9157600080fd5b8101908080519060200190929190505050036000806126ad565b50600060056034540260335401603a5481610fc257fe5b04905060008090505b60218110156110a257600015156006600060088460218110610fe957fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611095576110936008826021811061106b57fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611b33565b505b8080600101915050610fcb565b5060008090505b600a811015611183576000151560076000602984600a81106110c757fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561117657611174602982600a811061114957fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058402611b33565b505b80806001019150506110a9565b505050565b600881565b600061119960016115c3565b116111a357600080fd5b600033905060006111b460006115c3565b9050680100000000000000008102603860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550603760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561133757600080fd5b505af115801561134b573d6000803e3d6000fd5b505050506040513d602081101561136157600080fd5b8101908080519060200190929190505050508273ffffffffffffffffffffffffffffffffffffffff167ee146a145d9955498f2f57f7976f0ca4b04166bcdc744667ff2291e99d43eab603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c80bb4f336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561144957600080fd5b505afa15801561145d573d6000803e3d6000fd5b505050506040513d602081101561147357600080fd5b810190808051906020019092919050505084604051808381526020018281526020019250505060405180910390a2505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461150057600080fd5b6001603960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080603a54141561157e57620f4240600a026305f5e1006001020390506115b6565b600061158d6305f5e10061261c565b9050600061159f82600a60ff16612568565b905060006115ad8383612581565b90508093505050505b90565b6000603454905090565b600080339050826115dc576115d781610942565b611627565b603760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461162582610942565b015b915050919050565b600047905090565b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600254905090565b600080603a5414156116ad57620f4240600a026305f5e1006001020190506116e5565b60006116bc6305f5e10061261c565b905060006116ce82600a60ff16612568565b905060006116dc8383612b70565b90508093505050505b90565b60076020528060005260406000206000915054906101000a900460ff1681565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661175e57600080fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff166323b872dd33306005546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561188c57600080fd5b505af11580156118a0573d6000803e3d6000fd5b505050506040513d60208110156118b657600080fd5b81019080805190602001909291905050505060346000815480929190600101919050555050565b60011515603960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461193a57600080fd5b6000732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a0e57600080fd5b505af1158015611a22573d6000803e3d6000fd5b505050506040513d6020811015611a3857600080fd5b810190808051906020019092919050505050611a6c603b54603a5468010000000000000000850281611a6657fe5b04612b70565b603b819055505050565b600080339050611a8581611637565b91505090565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b215780601f10611af657610100808354040283529160200191611b21565b820191906000526020600020905b815481529060010190602001808311611b0457829003601f168201915b505050505081565b6000603354905090565b600080611b3e611a76565b11611b4857600080fd5b6000339050603660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115611b9957600080fd5b6000611ba560016115c3565b1115611bb457611bb361118d565b5b611bfd603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612581565b603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c89603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612b70565b603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082603b5402603860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082603b5402603860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600080732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611eb357600080fd5b505af1158015611ec7573d6000803e3d6000fd5b505050506040513d6020811015611edd57600080fd5b810190808051906020019092919050505050611efb838560006126ad565b505092915050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f5957600080fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000732b591e99afe9f32eaa6214f7b7629768c40eeb3990508073ffffffffffffffffffffffffffffffffffffffff166323b872dd33306004546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561208757600080fd5b505af115801561209b573d6000803e3d6000fd5b505050506040513d60208110156120b157600080fd5b81019080805190602001909291905050505060336000815480929190600101919050555050565b60006120e2611a76565b116120ec57600080fd5b6000339050603660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561213d57600080fd5b6000829050600061214d8261261c565b9050600061215f82600a60ff16612568565b9050600061216d8383612581565b905061217b603a5485612581565b603a819055506121ca603660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485612581565b603660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600068010000000000000000820285603b540201905080603860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506000603a5411156122a45761229d603b54603a546801000000000000000086028161229757fe5b04612b70565b603b819055505b8573ffffffffffffffffffffffffffffffffffffffff167f2b1bab0dee4e0a50527886cb13a7c880afb5fde2e72f684c423c27865918c738603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c80bb4f336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561237b57600080fd5b505afa15801561238f573d6000803e3d6000fd5b505050506040513d60208110156123a557600080fd5b8101908080519060200190929190505050878560405180848152602001838152602001828152602001935050505060405180910390a250505050505050565b60003390506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156124405761243f816120d8565b5b61244861118d565b5050565b600061245860016115c3565b1161246257600080fd5b600061246e60006115c3565b90506000339050680100000000000000008202603860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550603760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054820191506000603760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061256382600060016126ad565b505050565b60008082848161257457fe5b0490508091505092915050565b60008282111561259057600080fd5b818303905092915050565b6000806305f5e100806001020290506000603a54620f4240600a02612607612601603a5486620f4240600a0260020202026002603a540a6002620f4240600a020a026305f5e1008a026305f5e100620f4240600a0202600202026002890a010101612b8f565b85612581565b8161260e57fe5b040390508092505050919050565b6000806305f5e1008301905060006305f5e100603a5401905060006305f5e1006126986305f5e1008503620f4240600a026305f5e100868161265a57fe5b04620f4240600a02026305f5e10060010201030260026305f5e100876002890a038161268257fe5b04620f4240600a02028161269257fe5b04612581565b8161269f57fe5b049050809350505050919050565b60006126b7611680565b42101561271957600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461271857600080fd5b5b600061272985600a60ff16612568565b90506000612738826003612568565b905060006127468383612581565b905060006127548885612581565b905060006127618261259b565b90506000680100000000000000008402905060008211801561278f5750603a5461278d83603a54612b70565b115b61279857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415801561280157503373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b156128975761284f603760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486612b70565b603760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128b2565b6128a18486612b70565b935068010000000000000000840290505b6000603a541115612919576128c9603a5483612b70565b603a81905550603a54680100000000000000008502816128e557fe5b04603b60008282540192505081905550603a546801000000000000000085028161290b57fe5b048202810381039050612921565b81603a819055505b61296a603660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612b70565b603660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008183603b540203905080603860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f98b60cfa34508471467f46e2e4c785fdac290ba7406e041c4defb51e25b07d5e603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c80bb4f336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612af357600080fd5b505afa158015612b07573d6000803e3d6000fd5b505050506040513d6020811015612b1d57600080fd5b81019080805190602001909291905050508e878e604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390a3829750505050505050509392505050565b600080828401905083811015612b8557600080fd5b8091505092915050565b60008060026001840181612b9f57fe5b0490508291505b81811015612bce57809150600281828581612bbd57fe5b040181612bc657fe5b049050612ba6565b5091905056fea265627a7a7231582049a571730e1d39d951adbf2d9b472eb4a42600fb8d8becec1c29f2159952bdea64736f6c634300050f0032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000036948b2b95e9bc965a96a511bbe124ef218f8447000000000000000000000000000000000000000000000000000000005edbd9a0

-----Decoded View---------------
Arg [0] : usernameAddress (address): 0x36948b2b95e9bc965A96A511bbE124eF218F8447
Arg [1] : when_start (uint256): 1591466400

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000036948b2b95e9bc965a96a511bbe124ef218f8447
Arg [1] : 000000000000000000000000000000000000000000000000000000005edbd9a0


Deployed Bytecode Sourcemap

881:27312:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12893:8;;;19927:339;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19927:339:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19927:339:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2254:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2254:29:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2254:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21470:388;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21470:388:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21470:388:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18210:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18210:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7852:258;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7852:258:0;;;:::i;:::-;;21976:412;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21976:412:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21976:412:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3052:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3052:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3052:43:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6308:1536;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6308:1536:0;;;:::i;:::-;;2325:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2325:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14375:762;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14375:762:0;;;:::i;:::-;;12262:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12262:133:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12262:133:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;20345:503;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20345:503:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18569:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18569:92:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19243:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19243:375:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19243:375:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18034:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18034:109:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19702:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19702:138:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19702:138:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12147:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12147:107:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20926:427;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20926:427:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3129:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3129:35:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3129:35:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6051:249;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6051:249:0;;;:::i;:::-;;12917:357;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12917:357:0;;;;;;;;;;;;;;;;;:::i;:::-;;18736:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18736:151:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2290:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2290:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2290:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18382:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18382:108:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16707:1137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16707:1137:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16707:1137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12529:240;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12529:240:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12529:240:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5575:436;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5575:436:0;;;:::i;:::-;;15201:1421;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15201:1421:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15201:1421:0;;;;;;;;;;;;;;;;;:::i;:::-;;14038:264;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14038:264:0;;;:::i;:::-;;13354:618;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13354:618:0;;;:::i;:::-;;19927:339;20022:7;2680:5;20203:10;:28;20214:16;20203:28;;;;;;;;;;;;;;;;20144:19;:37;20164:16;20144:37;;;;;;;;;;;;;;;;20126:15;;:55;20095:136;20067:191;;;;;;20047:211;;19927:339;;;:::o;2254:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21470:388::-;21577:7;21602:18;21623:44;21636:16;2405:2;21623:44;;:12;:44::i;:::-;21602:65;;21678:22;21703:42;21716:16;21734:10;21703:12;:42::i;:::-;21678:67;;21756:23;21782:33;21800:14;21782:17;:33::i;:::-;21756:59;;21835:15;21828:22;;;;;21470:388;;;:::o;18210:91::-;18254:7;18281:12;;18274:19;;18210:91;:::o;7852:258::-;1326:13;;;;;;;;;;;1312:27;;:10;:27;;;1304:36;;;;;;7915:13;;7909:3;:19;7901:28;;;;;;8003:9;2751:42;8003:31;;8045:3;:12;;;8058:13;;;;;;;;;;;8073:3;:13;;;8095:4;8073:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8073:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8073:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8073:28:0;;;;;;;;;;;;;;;;8045:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8045:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8045:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8045:57:0;;;;;;;;;;;;;;;;;1351:1;7852:258::o;21976:412::-;22082:7;22132:12;;22115:13;:29;;22107:38;;;;;;22156:17;22176:32;22194:13;22176:17;:32::i;:::-;22156:52;;22219:18;22240:37;22253:9;2405:2;22240:37;;:12;:37::i;:::-;22219:58;;22288:22;22313:35;22326:9;22337:10;22313:12;:35::i;:::-;22288:60;;22366:14;22359:21;;;;;21976:412;;;:::o;3052:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;6308:1536::-;1326:13;;;;;;;;;;;1312:27;;:10;:27;;;1304:36;;;;;;6381:13;;6375:3;:19;6367:28;;;;;;6406:9;2751:42;6406:31;;6531:3;:16;;;6548:10;6568:4;2500:3;6575:1;:7;6531:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6531:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6531:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6531:52:0;;;;;;;;;;;;;;;;;6594:44;2500:3;6609:1;:7;6626:3;6632:5;6594:14;:44::i;:::-;;6738:127;2500:3;6799:1;:7;6767:3;:13;;;6789:4;6767:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6767:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6767:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6767:28:0;;;;;;;;;;;;;;;;:40;6830:3;6849:5;6738:14;:127::i;:::-;;6971:25;7073:1;7055:15;;:19;7028:23;;:47;6999:12;;:77;;;;;;6971:105;;7094:9;7106:1;7094:13;;7089:377;7113:2;7109:1;:6;7089:377;;;7367:5;7333:39;;:11;:30;7345:14;7360:1;7345:17;;;;;;;;;;;;;;;;;;7333:30;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;7329:126;;;7393:46;7402:14;7417:1;7402:17;;;;;;;;;;;;;;;;;;7421;7393:8;:46::i;:::-;;7329:126;7117:3;;;;;;;7089:377;;;;7483:9;7495:1;7483:13;;7478:359;7502:2;7498:1;:6;7478:359;;;7741:5;7722:24;;:3;:15;7726:7;7734:1;7726:10;;;;;;;;;;;;;;;;;;7722:15;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;7718:108;;;7767:43;7776:7;7784:1;7776:10;;;;;;;;;;;;;;;;;;7808:1;7788:17;:21;7767:8;:43::i;:::-;;7718:108;7506:3;;;;;;;7478:359;;;;1351:1;;6308:1536::o;2325:34::-;2358:1;2325:34;:::o;14375:762::-;1242:1;1222:17;1234:4;1222:11;:17::i;:::-;:21;1214:30;;;;;;14454:24;14481:10;14454:37;;14502:18;14523;14535:5;14523:11;:18::i;:::-;14502:39;;2680:5;14667:10;:22;14626:10;:28;14637:16;14626:28;;;;;;;;;;;;;;;;:64;;;;;;;;;;;14744:16;:34;14761:16;14744:34;;;;;;;;;;;;;;;;14730:48;;;;14826:1;14789:16;:34;14806:16;14789:34;;;;;;;;;;;;;;;:38;;;;14875:9;2751:42;14875:31;;14917:3;:12;;;14930:16;14948:10;14917:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14917:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14917:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14917:42:0;;;;;;;;;;;;;;;;;15025:16;15000:129;;;15056:8;;;;;;;;;;;:25;;;15082:10;15056:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15056:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15056:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15056:37:0;;;;;;;;;;;;;;;;15108:10;15000:129;;;;;;;;;;;;;;;;;;;;;;;;1255:1;;;14375:762::o;12262:133::-;1326:13;;;;;;;;;;;1312:27;;:10;:27;;;1304:36;;;;;;12383:4;12344:20;:36;12365:14;12344:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;12262:133;:::o;20345:503::-;20387:7;20502:1;20486:12;;:17;20482:359;;;2458:3;2622:2;:13;2500:3;2557:1;:7;20527:43;20520:50;;;;20482:359;20603:17;20623:22;20641:3;20623:17;:22::i;:::-;20603:42;;20660:18;20681:37;20694:9;2405:2;20681:37;;:12;:37::i;:::-;20660:58;;20733:22;20758:35;20771:9;20782:10;20758:12;:35::i;:::-;20733:60;;20815:14;20808:21;;;;;20345:503;;:::o;18569:92::-;18611:7;18638:15;;18631:22;;18569:92;:::o;19243:375::-;19340:7;19365:24;19392:10;19365:37;;19433:21;:177;;19581:29;19593:16;19581:11;:29::i;:::-;19433:177;;;19527:16;:34;19544:16;19527:34;;;;;;;;;;;;;;;;19474:29;19486:16;19474:11;:29::i;:::-;:87;19433:177;19413:197;;;19243:375;;;:::o;18034:109::-;18087:7;18114:21;18107:28;;18034:109;:::o;19702:138::-;19768:7;19795:19;:37;19815:16;19795:37;;;;;;;;;;;;;;;;19788:44;;19702:138;;;:::o;12147:107::-;12189:18;12233:13;;12220:26;;12147:107;:::o;20926:427::-;20967:7;21007:1;20991:12;;:17;20987:359;;;2458:3;2622:2;:13;2500:3;2557:1;:7;21032:43;21025:50;;;;20987:359;21108:17;21128:22;21146:3;21128:17;:22::i;:::-;21108:42;;21165:18;21186:37;21199:9;2405:2;21186:37;;:12;:37::i;:::-;21165:58;;21238:22;21263:35;21276:9;21287:10;21263:12;:35::i;:::-;21238:60;;21320:14;21313:21;;;;;20926:427;;:::o;3129:35::-;;;;;;;;;;;;;;;;;;;;;;:::o;6051:249::-;6106:3;:15;6110:10;6106:15;;;;;;;;;;;;;;;;;;;;;;;;;6098:24;;;;;;6151:5;6133:3;:15;6137:10;6133:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;6167:9;2751:42;6167:31;;6211:3;:16;;;6228:10;6248:4;6255:8;;6211:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6211:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6211:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6211:53:0;;;;;;;;;;;;;;;;;6275:15;;:17;;;;;;;;;;;;;6051:249;:::o;12917:357::-;13025:4;12989:40;;:20;:32;13010:10;12989:32;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;12981:49;;;;;;13041:9;2751:42;13041:31;;13083:3;:16;;;13100:10;13120:4;13127:6;13083:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13083:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13083:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13083:51:0;;;;;;;;;;;;;;;;;13163:103;13190:15;;13243:12;;2680:5;13221:6;:18;13220:35;;;;;;13163:12;:103::i;:::-;13145:15;:121;;;;12917:357;;:::o;18736:151::-;18777:7;18797:24;18824:10;18797:37;;18852:27;18862:16;18852:9;:27::i;:::-;18845:34;;;18736:151;:::o;2290:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18382:108::-;18432:7;18459:23;;18452:30;;18382:108;:::o;16707:1137::-;16830:4;1113:1;1100:10;:8;:10::i;:::-;:14;1092:23;;;;;;16870:24;16897:10;16870:37;;16998:19;:37;17018:16;16998:37;;;;;;;;;;;;;;;;16979:15;:56;;16971:65;;;;;;17126:1;17106:17;17118:4;17106:11;:17::i;:::-;:21;17102:37;;;17129:10;:8;:10::i;:::-;17102:37;17220:105;17247:19;:37;17267:16;17247:37;;;;;;;;;;;;;;;;17299:15;17220:12;:105::i;:::-;17180:19;:37;17200:16;17180:37;;;;;;;;;;;;;;;:145;;;;17370:99;17397:19;:31;17417:10;17397:31;;;;;;;;;;;;;;;;17443:15;17370:12;:99::i;:::-;17336:19;:31;17356:10;17336:31;;;;;;;;;;;;;;;:133;;;;17592:15;17574;;:33;17519:10;:28;17530:16;17519:28;;;;;;;;;;;;;;;;:99;;;;;;;;;;;17682:15;17664;;:33;17629:10;:22;17640:10;17629:22;;;;;;;;;;;;;;;;:69;;;;;;;;;;;17766:10;17739:55;;17748:16;17739:55;;;17778:15;17739:55;;;;;;;;;;;;;;;;;;17832:4;17825:11;;;16707:1137;;;;:::o;12529:240::-;12595:7;12615:9;2751:42;12615:31;;12657:3;:16;;;12674:10;12694:4;12701:6;12657:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12657:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12657:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12657:51:0;;;;;;;;;;;;;;;;;12719:42;12734:6;12742:11;12755:5;12719:14;:42::i;:::-;;12529:240;;;;;:::o;5575:436::-;5627:11;:23;5639:10;5627:23;;;;;;;;;;;;;;;;;;;;;;;;;5619:32;;;;;;5724:5;5698:11;:23;5710:10;5698:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;5822:9;2751:42;5822:31;;5907:3;:16;;;5924:10;5944:4;5951:15;;5907:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5907:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5907:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5907:60:0;;;;;;;;;;;;;;;;;5978:23;;:25;;;;;;;;;;;;;5575:436;:::o;15201:1421::-;1113:1;1100:10;:8;:10::i;:::-;:14;1092:23;;;;;;15298:24;15325:10;15298:37;;15373:19;:37;15393:16;15373:37;;;;;;;;;;;;;;;;15354:15;:56;;15346:65;;;;;;15422:15;15440;15422:33;;15466:17;15486:26;15504:7;15486:17;:26::i;:::-;15466:46;;15523:18;15544:37;15557:9;2405:2;15544:37;;:12;:37::i;:::-;15523:58;;15592:22;15617:35;15630:9;15641:10;15617:12;:35::i;:::-;15592:60;;15713:35;15726:12;;15740:7;15713:12;:35::i;:::-;15698:12;:50;;;;15799:97;15826:19;:37;15846:16;15826:37;;;;;;;;;;;;;;;;15878:7;15799:12;:97::i;:::-;15759:19;:37;15779:16;15759:37;;;;;;;;;;;;;;;:137;;;;15946:22;2680:5;16023:14;:26;16012:7;15994:15;;:25;:56;15946:115;;16104:15;16072:10;:28;16083:16;16072:28;;;;;;;;;;;;;;;;:47;;;;;;;;;;;16194:1;16179:12;;:16;16175:243;;;16287:119;16318:15;;16379:12;;2680:5;16353:10;:22;16352:39;;;;;;16287:12;:119::i;:::-;16269:15;:137;;;;16175:243;16484:16;16458:156;;;16515:8;;;;;;;;;;;:25;;;16541:10;16515:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16515:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16515:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16515:37:0;;;;;;;;;;;;;;;;16567:7;16589:14;16458:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1126:1;;;;;;15201:1421;:::o;14038:264::-;14127:24;14154:10;14127:37;;14175:15;14193:19;:37;14213:16;14193:37;;;;;;;;;;;;;;;;14175:55;;14255:1;14245:7;:11;14241:30;;;14258:13;14263:7;14258:4;:13::i;:::-;14241:30;14284:10;:8;:10::i;:::-;14038:264;;:::o;13354:618::-;1242:1;1222:17;1234:4;1222:11;:17::i;:::-;:21;1214:30;;;;;;13438:18;13459;13471:5;13459:11;:18::i;:::-;13438:39;;13575:24;13602:10;13575:37;;2680:5;13664:10;:22;13623:10;:28;13634:16;13623:28;;;;;;;;;;;;;;;;:64;;;;;;;;;;;13746:16;:34;13763:16;13746:34;;;;;;;;;;;;;;;;13732:48;;;;13828:1;13791:16;:34;13808:16;13791:34;;;;;;;;;;;;;;;:38;;;;13918:46;13933:10;13953:3;13959:4;13918:14;:46::i;:::-;;1255:1;;13354:618::o;28815:122::-;28873:7;28893:9;28909:1;28905;:5;;;;;;28893:17;;28928:1;28921:8;;;28815:122;;;;:::o;29065:124::-;29123:7;29156:1;29151;:6;;29143:15;;;;;;29180:1;29176;:5;29169:12;;29065:124;;;;:::o;26113:995::-;26209:7;26234:26;26284:3;2500;2557:1;:7;26263:24;26234:53;;26298:23;27052:12;;2458:3;2622:2;:13;26340:669;26394:544;26902:12;;26848:18;2458:3;2622:2;:13;26751:1;:61;:115;:163;26715:1;26701:12;;:15;26662:1;2458:3;2622:2;:13;26636:27;26635:82;26597:3;26585:9;:15;26544:3;2458;2622:2;:13;26519:28;26481:1;:67;:120;26446:1;26426:18;:21;26425:177;:293;:490;26394:4;:544::i;:::-;26976:18;26340:12;:669::i;:::-;26325:722;;;;;;26324:741;26298:767;;27085:15;27078:22;;;;26113:995;;;:::o;27370:555::-;27464:7;27489:15;27518:3;27508:7;:13;27489:33;;27533:20;27572:3;27557:12;;:18;27533:43;;27587:22;27881:3;27613:265;27786:3;27776:7;:13;2458:3;2622:2;:13;27723:3;27708:12;:18;;;;;;2458:3;2622:2;:13;27682:45;2500:3;2557:1;:7;27643:85;27642:129;27641:149;27866:1;27858:3;27847:7;27843:1;27834:7;:10;:20;27833:28;;;;;;2458:3;2622:2;:13;27807:55;27806:61;;;;;;27613:12;:265::i;:::-;:271;;;;;;27587:298;;27903:14;27896:21;;;;;27370:555;;;:::o;22542:3275::-;22683:7;22713:11;:9;:11::i;:::-;22707:3;:17;22703:86;;;22763:13;;;;;;;;;;;22749:27;;:10;:27;;;22741:36;;;;;;22703:86;22824:27;22854:82;22881:17;2405:2;22854:82;;:12;:82::i;:::-;22824:112;;22947:22;22972:36;22985:19;23006:1;22972:12;:36::i;:::-;22947:61;;23019:18;23040:49;23053:19;23074:14;23040:12;:49::i;:::-;23019:70;;23100:22;23125:89;23152:17;23184:19;23125:12;:89::i;:::-;23100:114;;23225:23;23251:33;23269:14;23251:17;:33::i;:::-;23225:59;;23295:12;2680:5;23310:10;:22;23295:37;;23385:1;23367:15;:19;:100;;;;;23454:12;;23408:43;23421:15;23438:12;;23408;:43::i;:::-;:58;23367:100;23345:133;;;;;;23619:42;23604:57;;:11;:57;;;;:128;;;;;23722:10;23707:25;;:11;:25;;;;23604:128;23541:638;;;23829:108;23860:16;:29;23877:11;23860:29;;;;;;;;;;;;;;;;23908:14;23829:12;:108::i;:::-;23797:16;:29;23814:11;23797:29;;;;;;;;;;;;;;;:140;;;;23541:638;;;24083:40;24096:10;24108:14;24083:12;:40::i;:::-;24070:53;;2680:5;24145:10;:22;24138:29;;23541:638;24261:1;24246:12;;:16;24242:721;;;24333:43;24346:12;;24360:15;24333:12;:43::i;:::-;24318:12;:58;;;;24565:12;;2680:5;24538:10;:22;24537:41;;;;;;24517:15;;:62;;;;;;;;;;;24833:12;;2680:5;24806:10;:22;24805:41;;;;;;24761:15;:86;24732:4;:116;24707:4;:142;24683:166;;24242:721;;;24936:15;24921:12;:30;;;;24242:721;25085:99;25112:19;:31;25132:10;25112:31;;;;;;;;;;;;;;;;25158:15;25085:12;:99::i;:::-;25051:19;:31;25071:10;25051:31;;;;;;;;;;;;;;;:133;;;;25364:22;25450:4;25431:15;25413;;:33;25412:42;25364:101;;25502:15;25476:10;:22;25487:10;25476:22;;;;;;;;;;;;;;;;:41;;;;;;;;;;;25727:11;25558:216;;25588:10;25558:216;;;25613:8;;;;;;;;;;;:25;;;25639:10;25613:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25613:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25613:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25613:37:0;;;;;;;;;;;;;;;;25665:17;25697:15;25753:10;25558:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25794:15;25787:22;;;;;;;;;22542:3275;;;;;:::o;29266:148::-;29324:7;29344:9;29360:1;29356;:5;29344:17;;29385:1;29380;:6;;29372:15;;;;;;29405:1;29398:8;;;29266:148;;;;:::o;27983:207::-;28031:9;28053;28075:1;28070;28066;:5;28065:11;;;;;;28053:23;;28091:1;28087:5;;28103:80;28114:1;28110;:5;28103:80;;;28136:1;28132:5;;28170:1;28165;28161;28157;:5;;;;;;:9;28156:15;;;;;;28152:19;;28103:80;;;27983:207;;;;:::o

Swarm Source

bzzr://49a571730e1d39d951adbf2d9b472eb4a42600fb8d8becec1c29f2159952bdea
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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