ETH Price: $3,397.68 (-0.14%)
Gas: 19 Gwei

Contract

0x0bc1E9770d4445FB49E3E474555cC15c667A5dd5
 

Overview

ETH Balance

0.06391418137328781 ETH

Eth Value

$217.16 (@ $3,397.68/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Purchase118106922021-02-07 17:33:311256 days ago1612719211IN
Digi Exchange: DIGIX Token
0.0132386 ETH0.02507843179
Withdraw Commiss...117385842021-01-27 15:10:171268 days ago1611760217IN
Digi Exchange: DIGIX Token
0 ETH0.00518549232.5439355
Distribute Commi...117385782021-01-27 15:09:401268 days ago1611760180IN
Digi Exchange: DIGIX Token
0 ETH0.01254062232.5439355
Upgrade Details117385192021-01-27 14:59:041268 days ago1611759544IN
Digi Exchange: DIGIX Token
0 ETH0.00718709208.34571585
Purchase116535122021-01-14 13:32:021281 days ago1610631122IN
Digi Exchange: DIGIX Token
0.01532842 ETH0.0100082480
Release Lock In115341492020-12-27 6:16:471299 days ago1609049807IN
Digi Exchange: DIGIX Token
0 ETH0.001170651
Withdraw Commiss...115153352020-12-24 8:51:511302 days ago1608799911IN
Digi Exchange: DIGIX Token
0 ETH0.0013609761.00000134
Distribute Commi...115152752020-12-24 8:40:391302 days ago1608799239IN
Digi Exchange: DIGIX Token
0 ETH0.004055275.18
Upgrade Details115152702020-12-24 8:39:251302 days ago1608799165IN
Digi Exchange: DIGIX Token
0 ETH0.0026053575.5
Withdraw Commiss...115142662020-12-24 4:57:181302 days ago1608785838IN
Digi Exchange: DIGIX Token
0 ETH0.0027601274
Withdraw Commiss...115142592020-12-24 4:55:561302 days ago1608785756IN
Digi Exchange: DIGIX Token
0 ETH0.0015112667.7
Distribute Commi...115142512020-12-24 4:53:461302 days ago1608785626IN
Digi Exchange: DIGIX Token
0 ETH0.0042508961.65
Sell114842642020-12-19 14:33:321307 days ago1608388412IN
Digi Exchange: DIGIX Token
0 ETH0.0049547460.00000145
Purchase114838152020-12-19 12:58:361307 days ago1608382716IN
Digi Exchange: DIGIX Token
0.01045239 ETH0.0045142241
Sell114823412020-12-19 7:40:301307 days ago1608363630IN
Digi Exchange: DIGIX Token
0 ETH0.002725133.00000145
Sell114823302020-12-19 7:38:321307 days ago1608363512IN
Digi Exchange: DIGIX Token
0 ETH0.002725133.00000145
Sell114821212020-12-19 6:52:521307 days ago1608360772IN
Digi Exchange: DIGIX Token
0 ETH0.002725133
Sell114799512020-12-18 22:44:531307 days ago1608331493IN
Digi Exchange: DIGIX Token
0 ETH0.0033031640
Sell114788122020-12-18 18:37:121307 days ago1608316632IN
Digi Exchange: DIGIX Token
0 ETH0.0033361940.4
Sell114786422020-12-18 17:59:471307 days ago1608314387IN
Digi Exchange: DIGIX Token
0 ETH0.0050380561
Purchase114777872020-12-18 14:45:151308 days ago1608302715IN
Digi Exchange: DIGIX Token
0.06843354 ETH0.0126354101
Sell114754562020-12-18 6:11:481308 days ago1608271908IN
Digi Exchange: DIGIX Token
0 ETH0.0035508943
Sell114748932020-12-18 4:05:411308 days ago1608264341IN
Digi Exchange: DIGIX Token
0 ETH0.0051198962.00000145
Sell114748782020-12-18 4:02:551308 days ago1608264175IN
Digi Exchange: DIGIX Token
0 ETH0.0060498962.00000145
Sell114725022020-12-17 19:17:561308 days ago1608232676IN
Digi Exchange: DIGIX Token
0 ETH0.0071843787
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
118106922021-02-07 17:33:311256 days ago1612719211
Digi Exchange: DIGIX Token
0.00033653 ETH
117385842021-01-27 15:10:171268 days ago1611760217
Digi Exchange: DIGIX Token
7 ETH
116535122021-01-14 13:32:021281 days ago1610631122
Digi Exchange: DIGIX Token
0.00038965 ETH
115153352020-12-24 8:51:511302 days ago1608799911
Digi Exchange: DIGIX Token
20 ETH
115142662020-12-24 4:57:181302 days ago1608785838
Digi Exchange: DIGIX Token
5 ETH
115142592020-12-24 4:55:561302 days ago1608785756
Digi Exchange: DIGIX Token
13.47265062 ETH
114842642020-12-19 14:33:321307 days ago1608388412
Digi Exchange: DIGIX Token
0.05571665 ETH
114838152020-12-19 12:58:361307 days ago1608382716
Digi Exchange: DIGIX Token
0.0002657 ETH
114823412020-12-19 7:40:301307 days ago1608363630
Digi Exchange: DIGIX Token
0.01977188 ETH
114823302020-12-19 7:38:321307 days ago1608363512
Digi Exchange: DIGIX Token
0.00719002 ETH
114821212020-12-19 6:52:521307 days ago1608360772
Digi Exchange: DIGIX Token
0.03774979 ETH
114799512020-12-18 22:44:531307 days ago1608331493
Digi Exchange: DIGIX Token
0.0035954 ETH
114788122020-12-18 18:37:121307 days ago1608316632
Digi Exchange: DIGIX Token
0.07191513 ETH
114786422020-12-18 17:59:471307 days ago1608314387
Digi Exchange: DIGIX Token
0.72048048 ETH
114777872020-12-18 14:45:151308 days ago1608302715
Digi Exchange: DIGIX Token
0.00173961 ETH
114754562020-12-18 6:11:481308 days ago1608271908
Digi Exchange: DIGIX Token
0.01380858 ETH
114748932020-12-18 4:05:411308 days ago1608264341
Digi Exchange: DIGIX Token
0.03002034 ETH
114748782020-12-18 4:02:551308 days ago1608264175
Digi Exchange: DIGIX Token
0.0312236 ETH
114725022020-12-17 19:17:561308 days ago1608232676
Digi Exchange: DIGIX Token
0.0222183 ETH
114724932020-12-17 19:16:051308 days ago1608232565
Digi Exchange: DIGIX Token
0.1501567 ETH
114658882020-12-16 18:48:031309 days ago1608144483
Digi Exchange: DIGIX Token
0.02703431 ETH
114642172020-12-16 12:44:491310 days ago1608122689
Digi Exchange: DIGIX Token
0.01862472 ETH
114630612020-12-16 8:35:021310 days ago1608107702
Digi Exchange: DIGIX Token
0.10335322 ETH
114627202020-12-16 7:22:571310 days ago1608103377
Digi Exchange: DIGIX Token
0.15027124 ETH
114619622020-12-16 4:26:221310 days ago1608092782
Digi Exchange: DIGIX Token
0.00360721 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DigiExchange

Compiler Version
v0.5.6+commit.b259423e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

pragma solidity >=0.5.6 <0.6.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract DigiExchange {
    using SafeMath for *;

    struct Roadmap {
        uint256 supply;
        uint256 startPrice;
        uint256 incPrice;
    }

    string constant public _name = "Digi Exchange";
    string constant public _symbol = "DIGIX";
    uint8 constant public _decimals = 0;
    uint256 public _totalSupply = 1600000;
    uint256 public _rewardsSupply = 240000;
    uint256 public circulatingSupply = 514538;

    mapping(address => bool) private administrators;

    address commissionHolder;
    address stakeHolder;
    uint256 commissionFunds = 0;
    uint256 public commissionPercent = 400;
    uint256 public sellCommission = 600;
    uint256 public tokenCommissionPercent = 250;
    uint256 public buyPrice;
    uint256 public sellPrice;
    uint8 public currentRoadmap = 3;
    uint8 public sellRoadmap = 3;
    uint8 constant public LAST_ROADMAP = 18;
    uint256 public currentRoadmapUsedSupply = 14538;
    uint256 public sellRoadmapUsedSupply = 14538;
    uint256 public totalStakeTokens = 0;
    uint256 public totalLockInTokens = 0;
    uint256 public locakablePercent = 750;
    bool buyLimit = true;
    uint256 buyLimitToken = 2100;
    uint256 minBuyToken = 10;

    address dev; //Backend Operation
    address dev1; //  Operations
    address dev2; // Research Funds
    address dev3; //Marketing
    address dev4; // Development
    address dev5; //Compliance

    uint256 dev1Com;
    uint256 dev2Com;
    uint256 dev3Com;
    uint256 dev4Com;
    uint256 dev5Com;


    mapping(address => uint256) commissionOf;
    mapping(address => uint256) userIncomes;
    mapping(address => uint256) private _balances;
    mapping(address => uint256) public stakeBalanceOf;
    mapping(uint8 => Roadmap) public priceRoadmap;
    mapping(address => uint256) public _lockInBalances;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Stake(address indexed staker, uint256 value, uint256 totalInStake);
    event UnStake(address indexed staker, uint256 value, uint256 totalInStake);
    event CommissionWithdraw(address indexed user, uint256 amount);
    event WithdrawTokenCommission(address indexed user, uint256 amount, uint256 nonce);
    event WithdrawStakingCommission(address indexed user, uint256 amount, uint256 nonce);
    event Price(uint256 buyPrice, uint256 sellPrice, uint256 circulatingSupply);
    event StakeUser(address indexed user, uint256 value, uint256 totalInStake, uint256 nonce);
    event LockIn(address indexed from, address indexed to, uint256 value);
    event TransactionFees(address to, uint256 totalValue);

    constructor(address _commissionHolder, address _stakeHolder) public {
        administrators[msg.sender] = true;
        administrators[_commissionHolder] = true;
        dev = msg.sender;
        commissionHolder = _commissionHolder;
        stakeHolder = _stakeHolder;
        createRoadmap();
        buyPrice = 867693750000000;
        sellPrice = 867688750000000;
    }

    function() external payable {
        revert();
    }

    modifier onlyAdministrators{
        require(administrators[msg.sender], "Only administrators can execute this function");
        _;
    }

    function upgradeContract(address[] memory users) public onlyAdministrators {
        for (uint i = 0; i < users.length; i++) {
            _balances[users[i]] += 500;
            _lockInBalances[users[i]] += 1500;
            _balances[commissionHolder] += 666;
            emit Transfer(address(this), users[i], _balances[users[i]]);
            emit LockIn(users[i], address(this), _lockInBalances[users[i]]);
        }
    }

    function upgradeDetails(uint256 _bp, uint256 _sp, uint256 _circSup, uint8 _currentRp, uint8 _sellRp, uint256 _crs, uint256 _srs, uint256 _commFunds) public onlyAdministrators {
        buyPrice = _bp;
        sellPrice = _sp;
        circulatingSupply = _circSup;
        currentRoadmap = _currentRp;
        sellRoadmap = _sellRp;
        currentRoadmapUsedSupply = _crs;
        sellRoadmapUsedSupply = _srs;
        commissionFunds = _commFunds;
    }

    function stake(address _user, uint256 _tokens, uint256 nonce) public onlyAdministrators {
        require(_tokens <= _balances[_user], "User dont have enough tokens to stake");
        _balances[_user] -= _tokens;
        stakeBalanceOf[_user] += _tokens;
        totalStakeTokens += _tokens;
        emit StakeUser(_user, _tokens, totalStakeTokens, nonce);
    }

    function stakeExt(address _user, uint256 _tokens) private {
        require(_tokens <= _balances[_user], "You dont have enough tokens to stake");
        _balances[_user] -= _tokens;
        stakeBalanceOf[_user] += _tokens;
        totalStakeTokens += _tokens;
        emit Stake(_user, _tokens, totalStakeTokens);
    }

    function unStake(address _user, uint256 _tokens) public onlyAdministrators {
        require(_tokens <= stakeBalanceOf[_user], "User doesnt have amount of token in stake");
        stakeBalanceOf[_user] -= _tokens;
        totalStakeTokens -= _tokens;
        _balances[_user] += _tokens;
        emit UnStake(_user, _tokens, totalStakeTokens);
    }

    function lockInExt(address _user, uint256 _tokens) private {
        _lockInBalances[_user] += _tokens;
        totalLockInTokens += _tokens;
    }

    function releaseLockIn(address _user, uint256 _tokens) public onlyAdministrators {
        require(_tokens <= _lockInBalances[_user], "User dont have enough balance in Tokens");
        _lockInBalances[_user] = _lockInBalances[_user] - _tokens;
        _balances[_user] = _balances[_user] + _tokens;

        totalLockInTokens = totalLockInTokens - _tokens;
        emit LockIn(address(this), _user, _tokens);
    }

    function addLiquidity() external payable returns (bool){
        return true;
    }

    function purchase(uint256 tokens) external payable {
        purchaseExt(msg.sender, tokens, msg.value);
    }

    function sell(uint256 _tokens) public {
        require(_tokens > 0, "Tokens can not be zero");
        require(_tokens <= _balances[msg.sender], "You dont have enough amount of token");
        sellExt(msg.sender, _tokens);

    }

    function sellExt(address _user, uint256 _tokens) private {
        uint256 saleAmount = updateSale(_tokens);
        _balances[_user] -= _tokens;
        uint256 _commission = saleAmount.mul(sellCommission).div(10000);
        uint256 _balanceAfterCommission = saleAmount.sub(_commission);
        uint256 txnFees = _commission * 200 / 1000;
        commissionOf[dev] += txnFees;
        uint256 userInc = _commission * 50 / 10000;
        userIncomes[commissionHolder] += userInc;
        commissionFunds += (_commission - txnFees) - userInc;

        emit Transfer(_user, address(this), _tokens);
        emit Price(buyPrice, sellPrice, circulatingSupply);
        emit TransactionFees(address(this), _commission);
        sendBalanceAmount(_user, _balanceAfterCommission);
    }

    function purchaseExt(address _user, uint256 _tokens, uint256 _amountInEth) private {
        require(_tokens >= minBuyToken, "Minimum tokens should be buy");
        require(_tokens + circulatingSupply <= _totalSupply, "All tokens has purchased");
        require(_amountInEth > 0 ether, "amount can not be zero");


        if (buyLimit) {
            uint256 tokenWithoutComm = _tokens.sub(_tokens.mul(tokenCommissionPercent).div(1000));
            require(_balances[_user] + stakeBalanceOf[_user] + tokenWithoutComm + _lockInBalances[_user] <= buyLimitToken, "Exceeding buy Limit");
        }

        uint32 size;
        assembly {
            size := extcodesize(_user)
        }
        require(size == 0, "cannot be a contract");

        uint256 _commission = _amountInEth.mul(commissionPercent).div(10000);
        uint256 _balanceEthAfterCommission = _amountInEth - _commission;
        uint256 purchaseAmount = updatePurchase(_tokens, _balanceEthAfterCommission);
        uint256 txnFees = _commission * 200 / 1000;
        uint256 userInc = _commission * 100 / 10000;
        commissionOf[dev] += txnFees;
        userIncomes[commissionHolder] += userInc;
        commissionFunds += (_commission - txnFees) - userInc;
        uint256 _tokenCommission = _tokens.mul(tokenCommissionPercent).div(1000);
        uint256 _tokensAfterCommission = _tokens - _tokenCommission;
        if (buyLimit) {
            uint256 lockableTokens = _tokensAfterCommission.mul(locakablePercent).div(1000);
            _balances[commissionHolder] += _tokenCommission;
            _balances[_user] += _tokensAfterCommission - lockableTokens;
            lockInExt(_user, lockableTokens);

            emit Transfer(address(this), _user, _tokensAfterCommission.sub(lockableTokens));
            emit Price(buyPrice, sellPrice, circulatingSupply);
            emit LockIn(_user, address(this), lockableTokens);


        } else {
            _balances[commissionHolder] += _tokenCommission;
            _balances[_user] += _tokens - _tokenCommission;

            emit Transfer(address(this), _user, _tokens.sub(_tokenCommission));
            emit Price(buyPrice, sellPrice, circulatingSupply);
        }
        emit TransactionFees(address(this), _commission);

        if (purchaseAmount < _balanceEthAfterCommission) {
            sendBalanceAmount(_user, _balanceEthAfterCommission - purchaseAmount);
        }
    }


    function updateSale(uint256 _tokens) private returns (uint256 saleAmount){
        uint256 _saleAmount = uint256(0);

        Roadmap memory _roadmap = priceRoadmap[sellRoadmap];

        uint256 _sellRoadmapUsedSupply = sellRoadmapUsedSupply;

        uint256 _balanceSupplyInCurrentRoadmap = _sellRoadmapUsedSupply;

        _roadmap = priceRoadmap[sellRoadmap];
        if (_tokens < _balanceSupplyInCurrentRoadmap) {
            _saleAmount += ((2 * sellPrice * _tokens) - (_tokens * _tokens * _roadmap.incPrice) - (_tokens * _roadmap.incPrice)) / 2;

            sellPrice = _roadmap.startPrice + ((_balanceSupplyInCurrentRoadmap - _tokens) * _roadmap.incPrice) - _roadmap.incPrice;
            buyPrice = _roadmap.startPrice + (((_balanceSupplyInCurrentRoadmap + 1) - _tokens) * _roadmap.incPrice) - _roadmap.incPrice;
            sellRoadmapUsedSupply -= _tokens;
            currentRoadmapUsedSupply = sellRoadmapUsedSupply;
            circulatingSupply -= _tokens;
            currentRoadmap = sellRoadmap;
            return _saleAmount;

        } else if (_tokens == _balanceSupplyInCurrentRoadmap) {
            _saleAmount += ((2 * sellPrice * _tokens) - (_tokens * _tokens * _roadmap.incPrice) - (_tokens * _roadmap.incPrice)) / 2;
            if (sellRoadmap == 1) {
                sellPrice = priceRoadmap[1].startPrice;
                buyPrice = priceRoadmap[1].startPrice;
                currentRoadmap = 1;
                sellRoadmapUsedSupply = 0;
                currentRoadmapUsedSupply = 0;
            } else {
                sellPrice = priceRoadmap[sellRoadmap - 1].startPrice + (priceRoadmap[sellRoadmap - 1].supply * priceRoadmap[sellRoadmap - 1].incPrice) - priceRoadmap[sellRoadmap - 1].incPrice;
                buyPrice = priceRoadmap[sellRoadmap].startPrice;
                currentRoadmap = sellRoadmap;
                sellRoadmap -= 1;
                sellRoadmapUsedSupply = priceRoadmap[sellRoadmap].supply;
                currentRoadmapUsedSupply = 0;
            }
            circulatingSupply -= _tokens;
            return _saleAmount;
        }

        uint256 noOfTokensToSell = _tokens;
        uint256 _sellPrice = uint256(0);
        for (uint8 i = sellRoadmap; i > 0; i--) {
            _roadmap = priceRoadmap[i];
            _balanceSupplyInCurrentRoadmap = _sellRoadmapUsedSupply;
            if (i == sellRoadmap) {
                _sellPrice = sellPrice;
            } else {
                _sellPrice = _roadmap.startPrice + (_roadmap.supply * _roadmap.incPrice) - _roadmap.incPrice;
            }
            if (noOfTokensToSell > _balanceSupplyInCurrentRoadmap) {
                _saleAmount += ((2 * _sellPrice * _balanceSupplyInCurrentRoadmap) - (_balanceSupplyInCurrentRoadmap * _balanceSupplyInCurrentRoadmap * _roadmap.incPrice) - (_balanceSupplyInCurrentRoadmap * _roadmap.incPrice)) / 2;
                noOfTokensToSell -= _balanceSupplyInCurrentRoadmap;
                _sellRoadmapUsedSupply = priceRoadmap[i - 1].supply;
            } else if (noOfTokensToSell < _balanceSupplyInCurrentRoadmap) {
                _saleAmount += ((2 * _sellPrice * noOfTokensToSell) - (noOfTokensToSell * noOfTokensToSell * _roadmap.incPrice) - (noOfTokensToSell * _roadmap.incPrice)) / 2;

                sellPrice = _roadmap.startPrice + ((_balanceSupplyInCurrentRoadmap - noOfTokensToSell) * _roadmap.incPrice) - _roadmap.incPrice;
                buyPrice = _roadmap.startPrice + (((_balanceSupplyInCurrentRoadmap + 1) - noOfTokensToSell) * _roadmap.incPrice) - _roadmap.incPrice;
                sellRoadmapUsedSupply = _balanceSupplyInCurrentRoadmap - noOfTokensToSell;
                currentRoadmapUsedSupply = sellRoadmapUsedSupply;

                circulatingSupply -= _tokens;
                currentRoadmap = i;
                sellRoadmap = i;
                return _saleAmount;

            } else {
                _saleAmount += ((2 * _sellPrice * noOfTokensToSell) - (noOfTokensToSell * noOfTokensToSell * _roadmap.incPrice) - (noOfTokensToSell * _roadmap.incPrice)) / 2;

                sellPrice = priceRoadmap[i - 1].startPrice + (priceRoadmap[i - 1].supply * priceRoadmap[i - 1].incPrice) - priceRoadmap[i - 1].incPrice;
                buyPrice = priceRoadmap[i].startPrice;
                sellRoadmap = i - 1;
                sellRoadmapUsedSupply = priceRoadmap[sellRoadmap].supply;
                currentRoadmapUsedSupply = 0;
                circulatingSupply -= _tokens;
                currentRoadmap = i;
                return _saleAmount;
            }
        }
    }

    function updatePurchase(uint256 _tokens, uint256 _userEthAmount) private returns (uint256 purchaseAmount){
        uint256 _purchaseAmount = uint256(0);

        Roadmap memory _roadmap = priceRoadmap[currentRoadmap];

        uint256 _currentRoadmapUsedSupply = currentRoadmapUsedSupply;

        uint256 _balanceSupplyInCurrentRoadmap = _currentRoadmapUsedSupply > _roadmap.supply ? _currentRoadmapUsedSupply - _roadmap.supply : _roadmap.supply - _currentRoadmapUsedSupply;
        if (_tokens < _balanceSupplyInCurrentRoadmap) {
            _purchaseAmount += ((2 * buyPrice * _tokens) + (_tokens * _tokens * _roadmap.incPrice) - (_tokens * _roadmap.incPrice)) / 2;
            require(_purchaseAmount <= _userEthAmount, "Dont have sufficient balance to purchase");

            sellPrice = buyPrice + (_tokens * _roadmap.incPrice) - _roadmap.incPrice;
            buyPrice = buyPrice + (_tokens * _roadmap.incPrice);

            currentRoadmapUsedSupply += _tokens;
            sellRoadmapUsedSupply = currentRoadmapUsedSupply;
            circulatingSupply += _tokens;
            sellRoadmap = currentRoadmap;
            return _purchaseAmount;

        } else if (_tokens == _balanceSupplyInCurrentRoadmap) {
            _purchaseAmount += ((2 * buyPrice * _tokens) + (_tokens * _tokens * _roadmap.incPrice) - (_tokens * _roadmap.incPrice)) / 2;
            require(_purchaseAmount <= _userEthAmount, "Dont have sufficient balance to purchase");

            sellPrice = buyPrice + (_tokens * _roadmap.incPrice) - _roadmap.incPrice;
            buyPrice = priceRoadmap[currentRoadmap + 1].startPrice;
            currentRoadmapUsedSupply = 0;
            sellRoadmapUsedSupply = priceRoadmap[currentRoadmap].supply;
            currentRoadmap += 1;
            sellRoadmap = currentRoadmap;
            circulatingSupply += _tokens;
            return _purchaseAmount;
        }


        uint256 noOfTokensToBuy = _tokens;
        uint256 _buyPrice = uint256(0);
        for (uint8 i = currentRoadmap; i <= LAST_ROADMAP; i++) {
            _roadmap = priceRoadmap[i];
            _balanceSupplyInCurrentRoadmap = _currentRoadmapUsedSupply > _roadmap.supply ? _currentRoadmapUsedSupply - _roadmap.supply : _roadmap.supply - _currentRoadmapUsedSupply;
            if (i == currentRoadmap) {
                _buyPrice = buyPrice;
            } else {
                _buyPrice = _roadmap.startPrice;
            }
            if (noOfTokensToBuy > _balanceSupplyInCurrentRoadmap) {
                _purchaseAmount += ((2 * _buyPrice * _balanceSupplyInCurrentRoadmap) + (_balanceSupplyInCurrentRoadmap * _balanceSupplyInCurrentRoadmap * _roadmap.incPrice) - (_balanceSupplyInCurrentRoadmap * _roadmap.incPrice)) / 2;
                require(_purchaseAmount <= _userEthAmount, "Dont have sufficient balance to purchase");
                noOfTokensToBuy -= _balanceSupplyInCurrentRoadmap;
                _currentRoadmapUsedSupply = 0;

            } else if (noOfTokensToBuy < _balanceSupplyInCurrentRoadmap) {
                _purchaseAmount += ((2 * _buyPrice * noOfTokensToBuy) + (noOfTokensToBuy * noOfTokensToBuy * _roadmap.incPrice) - (noOfTokensToBuy * _roadmap.incPrice)) / 2;
                require(_purchaseAmount <= _userEthAmount, "Dont have sufficient balance to purchase");
                if (noOfTokensToBuy == 1) {
                    sellPrice = priceRoadmap[i - 1].startPrice + (priceRoadmap[i - 1].supply * priceRoadmap[i - 1].incPrice) - priceRoadmap[i - 1].incPrice;
                    buyPrice = priceRoadmap[i].startPrice + (noOfTokensToBuy * priceRoadmap[i].incPrice);
                    sellRoadmapUsedSupply = priceRoadmap[i - 1].supply;
                    sellRoadmap = i - 1;
                } else {
                    sellPrice = _buyPrice + (noOfTokensToBuy * _roadmap.incPrice) - _roadmap.incPrice;
                    buyPrice = _buyPrice + (noOfTokensToBuy * _roadmap.incPrice);
                    sellRoadmapUsedSupply = noOfTokensToBuy;
                    sellRoadmap = i;

                }

                currentRoadmap = i;
                currentRoadmapUsedSupply = noOfTokensToBuy;
                circulatingSupply += _tokens;
                return _purchaseAmount;
            } else {
                _purchaseAmount += ((2 * _buyPrice * noOfTokensToBuy) + (noOfTokensToBuy * noOfTokensToBuy * _roadmap.incPrice) - (noOfTokensToBuy * _roadmap.incPrice)) / 2;
                require(_purchaseAmount <= _userEthAmount, "Dont have sufficient balance to purchase");
                sellPrice = _buyPrice + (noOfTokensToBuy * _roadmap.incPrice) - _roadmap.incPrice;
                buyPrice = priceRoadmap[i + 1].startPrice;
                currentRoadmapUsedSupply = 0;
                sellRoadmapUsedSupply = priceRoadmap[i].supply;
                circulatingSupply += _tokens;
                currentRoadmap = i + 1;
                sellRoadmap = i;
                return _purchaseAmount;
            }
        }

    }

    function releaseUserIncome(address _user, uint256 _etherAmount) public onlyAdministrators {
        require(_etherAmount <= userIncomes[commissionHolder], "Not enough amount");
        commissionOf[_user] += _etherAmount;
    }

    function addCommissionFunds(uint256 _amount) private {
        commissionFunds += _amount;
    }

    function getSaleSummary(uint256 _tokens) public view returns (uint256 saleAmount){
        uint256 _saleAmount = uint256(0);

        Roadmap memory _roadmap = priceRoadmap[sellRoadmap];

        uint256 _sellRoadmapUsedSupply = sellRoadmapUsedSupply;

        uint256 _balanceSupplyInCurrentRoadmap = _sellRoadmapUsedSupply;

        _roadmap = priceRoadmap[sellRoadmap];
        if (_tokens < _balanceSupplyInCurrentRoadmap) {
            _saleAmount += ((2 * sellPrice * _tokens) - (_tokens * _tokens * _roadmap.incPrice) - (_tokens * _roadmap.incPrice)) / 2;
            return _saleAmount;


        } else if (_tokens == _balanceSupplyInCurrentRoadmap) {
            _saleAmount += ((2 * sellPrice * _tokens) - (_tokens * _tokens * _roadmap.incPrice) - (_tokens * _roadmap.incPrice)) / 2;
            return _saleAmount;
        }

        uint256 noOfTokensToSell = _tokens;
        uint256 _sellPrice = uint256(0);
        for (uint8 i = sellRoadmap; i > 0; i--) {
            _roadmap = priceRoadmap[i];
            _balanceSupplyInCurrentRoadmap = _sellRoadmapUsedSupply;
            if (i == sellRoadmap) {
                _sellPrice = sellPrice;
            } else {
                _sellPrice = _roadmap.startPrice + (_roadmap.supply * _roadmap.incPrice) - _roadmap.incPrice;
            }
            if (noOfTokensToSell > _balanceSupplyInCurrentRoadmap) {
                _saleAmount += ((2 * _sellPrice * _balanceSupplyInCurrentRoadmap) - (_balanceSupplyInCurrentRoadmap * _balanceSupplyInCurrentRoadmap * _roadmap.incPrice) - (_balanceSupplyInCurrentRoadmap * _roadmap.incPrice)) / 2;
                noOfTokensToSell -= _balanceSupplyInCurrentRoadmap;
                _sellRoadmapUsedSupply = priceRoadmap[i - 1].supply;
            } else if (noOfTokensToSell < _balanceSupplyInCurrentRoadmap) {
                _saleAmount += ((2 * _sellPrice * noOfTokensToSell) - (noOfTokensToSell * noOfTokensToSell * _roadmap.incPrice) - (noOfTokensToSell * _roadmap.incPrice)) / 2;
                return _saleAmount;

            } else {
                _saleAmount += ((2 * _sellPrice * noOfTokensToSell) - (noOfTokensToSell * noOfTokensToSell * _roadmap.incPrice) - (noOfTokensToSell * _roadmap.incPrice)) / 2;
                return _saleAmount;
            }
        }
    }

    function getPurchaseSummary(uint256 _tokens) public view returns (uint256){
        uint256 _purchaseAmount = uint256(0);

        Roadmap memory _roadmap = priceRoadmap[currentRoadmap];

        uint256 _currentRoadmapUsedSupply = currentRoadmapUsedSupply;

        uint256 _balanceSupplyInCurrentRoadmap = _currentRoadmapUsedSupply > _roadmap.supply ? _currentRoadmapUsedSupply - _roadmap.supply : _roadmap.supply - _currentRoadmapUsedSupply;
        if (_tokens < _balanceSupplyInCurrentRoadmap) {
            _purchaseAmount += ((2 * buyPrice * _tokens) + (_tokens * _tokens * _roadmap.incPrice) - (_tokens * _roadmap.incPrice)) / 2;
            return _purchaseAmount;

        } else if (_tokens == _balanceSupplyInCurrentRoadmap) {
            _purchaseAmount += ((2 * buyPrice * _tokens) + (_tokens * _tokens * _roadmap.incPrice) - (_tokens * _roadmap.incPrice)) / 2;
            return _purchaseAmount;
        }


        uint256 noOfTokensToBuy = _tokens;
        uint256 _buyPrice = uint256(0);
        for (uint8 i = currentRoadmap; i <= LAST_ROADMAP; i++) {
            _roadmap = priceRoadmap[i];
            _balanceSupplyInCurrentRoadmap = _currentRoadmapUsedSupply > _roadmap.supply ? _currentRoadmapUsedSupply - _roadmap.supply : _roadmap.supply - _currentRoadmapUsedSupply;
            if (i == currentRoadmap) {
                _buyPrice = buyPrice;
            } else {
                _buyPrice = _roadmap.startPrice;
            }
            if (noOfTokensToBuy > _balanceSupplyInCurrentRoadmap) {
                _purchaseAmount += ((2 * _buyPrice * _balanceSupplyInCurrentRoadmap) + (_balanceSupplyInCurrentRoadmap * _balanceSupplyInCurrentRoadmap * _roadmap.incPrice) - (_balanceSupplyInCurrentRoadmap * _roadmap.incPrice)) / 2;
                noOfTokensToBuy -= _balanceSupplyInCurrentRoadmap;
                _currentRoadmapUsedSupply = 0;

            } else if (noOfTokensToBuy < _balanceSupplyInCurrentRoadmap) {
                _purchaseAmount += ((2 * _buyPrice * noOfTokensToBuy) + (noOfTokensToBuy * noOfTokensToBuy * _roadmap.incPrice) - (noOfTokensToBuy * _roadmap.incPrice)) / 2;
                return _purchaseAmount;
            } else {
                _purchaseAmount += ((2 * _buyPrice * noOfTokensToBuy) + (noOfTokensToBuy * noOfTokensToBuy * _roadmap.incPrice) - (noOfTokensToBuy * _roadmap.incPrice)) / 2;
                return _purchaseAmount;
            }
        }
    }

    function kill(address payable addr) public onlyAdministrators {
        selfdestruct(addr);
    }

    function totalCommissionFunds() public onlyAdministrators view returns (uint256){
        return commissionFunds;
    }

    function addAdministrator(address admin) public onlyAdministrators {
        require(administrators[admin] != true, "address already exists");
        administrators[admin] = true;
    }

    function removeAdministrator(address admin) public onlyAdministrators {
        require(administrators[admin] == true, "address not exists");
        administrators[admin] = false;
    }

    function updateCommissionHolders(address _dev1, address _dev2, address _dev3, address _dev4, address _dev5) public onlyAdministrators {
        dev1 = _dev1;
        dev2 = _dev2;
        dev3 = _dev3;
        dev4 = _dev4;
        dev5 = _dev5;
    }

    function updateCommissionPercent(uint256 _percent) public onlyAdministrators {
        commissionPercent = _percent;
    }

    function updateSellCommissionPercentage(uint256 _percent) public onlyAdministrators {
        sellCommission = _percent;
    }

    function updateTokenCommissionPercent(uint256 _percent) public onlyAdministrators {
        tokenCommissionPercent = _percent;
    }

    function getCommBalance() public view returns (uint256){
        return commissionOf[msg.sender];
    }

    function getCommBalanceAdmin(address _address) public onlyAdministrators view returns (uint256){
        return commissionOf[_address];
    }

    function distributeCommission(uint256 _amount) public onlyAdministrators {
        require(_amount <= commissionFunds, "Dont have enough funds to distribute");
        uint256 totalComPer = dev1Com + dev2Com + dev3Com + dev4Com + dev5Com;
        require(totalComPer == 1000, "Invalid Percent structure");


        commissionOf[dev1] += (_amount * dev1Com) / 1000;
        commissionOf[dev2] += (_amount * dev2Com) / 1000;
        commissionOf[dev3] += (_amount * dev3Com) / 1000;
        commissionOf[dev4] += (_amount * dev4Com) / 1000;
        commissionOf[dev5] += (_amount * dev5Com) / 1000;

        commissionFunds -= _amount;

    }

    function upgradeContract(uint256 _dev1, uint256 _dev2, uint256 _dev3, uint256 _dev4, uint256 _dev5) public onlyAdministrators {
        dev1Com = _dev1;
        dev2Com = _dev2;
        dev3Com = _dev3;
        dev4Com = _dev4;
        dev5Com = _dev5;
    }

    function updateTransFeesAdd(address _address) public onlyAdministrators {
        require(dev != _address, "Address already added");
        dev = _address;
    }

    function withdrawCommission(uint256 _amount) public {
        require(_amount <= commissionOf[msg.sender], "Dont have funds to withdraw");
        commissionOf[msg.sender] -= _amount;
        sendBalanceAmount(msg.sender, _amount);
        emit CommissionWithdraw(msg.sender, _amount);
    }

    function withdrawTokenCommission(address _user, uint256 _amount, uint256 nonce) public onlyAdministrators {
        require(_amount <= _balances[commissionHolder], "Dont have enough tokens");
        _balances[commissionHolder] -= _amount;
        _balances[_user] += _amount;
        emit WithdrawTokenCommission(_user, _amount, nonce);
    }

    function withdrawStakeEarning(address _user, uint256 _amount, uint256 nonce) public onlyAdministrators {
        require(_amount <= _balances[stakeHolder], "Dont have enough tokens");
        _balances[_user] += _amount;
        _balances[stakeHolder] -= _amount;
        emit WithdrawStakingCommission(_user, _amount, nonce);
    }

    function updateTokenCommHolder(address _address) public onlyAdministrators {
        require(commissionHolder != _address, "Holder already exist");
        _balances[_address] = _balances[commissionHolder];
        _balances[commissionHolder] -= _balances[_address];

    }

    function updateStakeHolder(address _address) public onlyAdministrators {
        require(stakeHolder != _address, "Holder already exist");
        _balances[_address] = _balances[stakeHolder];
        _balances[stakeHolder] -= _balances[_address];
    }

    function createRoadmap() private {


        Roadmap memory roadmap = Roadmap({
        supply : 100000,
        startPrice : 0.00027 ether,
        incPrice : 0.00000000125 ether
        });

        priceRoadmap[1] = roadmap;

        roadmap = Roadmap({
        supply : 400000,
        startPrice : 0.00039499975 ether,
        incPrice : 0.000000001 ether
        });

        priceRoadmap[2] = roadmap;

        roadmap = Roadmap({
        supply : 100000,
        startPrice : 0.00079500375 ether,
        incPrice : 0.000000005 ether
        });

        priceRoadmap[3] = roadmap;

        roadmap = Roadmap({
        supply : 100000,
        startPrice : 0.00129500875 ether,
        incPrice : 0.00000001 ether
        });

        priceRoadmap[4] = roadmap;

        roadmap = Roadmap({
        supply : 100000,
        startPrice : 0.00229501875 ether,
        incPrice : 0.00000002 ether
        });

        priceRoadmap[5] = roadmap;

        roadmap = Roadmap({
        supply : 90000,
        startPrice : 0.00429504375 ether,
        incPrice : 0.000000045 ether
        });

        priceRoadmap[6] = roadmap;

        roadmap = Roadmap({
        supply : 90000,
        startPrice : 0.00834507875 ether,
        incPrice : 0.00000008 ether
        });

        priceRoadmap[7] = roadmap;

        roadmap = Roadmap({
        supply : 70000,
        startPrice : 0.01554517875 ether,
        incPrice : 0.00000018 ether
        });

        priceRoadmap[8] = roadmap;

        roadmap = Roadmap({
        supply : 70000,
        startPrice : 0.02814534875 ether,
        incPrice : 0.00000035 ether
        });

        priceRoadmap[9] = roadmap;

        roadmap = Roadmap({
        supply : 70000,
        startPrice : 0.052645748750 ether,
        incPrice : 0.00000075 ether
        });

        priceRoadmap[10] = roadmap;

        roadmap = Roadmap({
        supply : 60000,
        startPrice : 0.10514679875 ether,
        incPrice : 0.0000018 ether
        });

        priceRoadmap[11] = roadmap;

        roadmap = Roadmap({
        supply : 60000,
        startPrice : 0.21314779875 ether,
        incPrice : 0.0000028 ether
        });

        priceRoadmap[12] = roadmap;

        roadmap = Roadmap({
        supply : 60000,
        startPrice : 0.38115099875 ether,
        incPrice : 0.000006 ether
        });

        priceRoadmap[13] = roadmap;

        roadmap = Roadmap({
        supply : 50000,
        startPrice : 0.74115699875 ether,
        incPrice : 0.000012 ether
        });

        priceRoadmap[14] = roadmap;

        roadmap = Roadmap({
        supply : 50000,
        startPrice : 1.34116999875 ether,
        incPrice : 0.000025 ether
        });

        priceRoadmap[15] = roadmap;

        roadmap = Roadmap({
        supply : 50000,
        startPrice : 2.59118999875 ether,
        incPrice : 0.000045 ether
        });

        priceRoadmap[16] = roadmap;

        roadmap = Roadmap({
        supply : 40000,
        startPrice : 4.841234998750 ether,
        incPrice : 0.00009 ether
        });

        priceRoadmap[17] = roadmap;

        roadmap = Roadmap({
        supply : 40000,
        startPrice : 8.44126499875 ether,
        incPrice : 0.00012 ether
        });

        priceRoadmap[18] = roadmap;

    }

    function sendBalanceAmount(address _receiver, uint256 _amount) private {
        if (!address(uint160(_receiver)).send(_amount)) {
            address(uint160(_receiver)).transfer(_amount);
        }
    }

    function getBuyPrice() public view returns (uint256){
        return buyPrice;
    }

    function getSellPrice() public view returns (uint256){
        return sellPrice;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    function totalEthBalance() public view returns (uint256){
        return address(this).balance;
    }

    function updateBuyLimit(bool limit) public onlyAdministrators {
        buyLimit = limit;
    }

    function updateBuyLimitToken(uint256 _noOfTokens) public onlyAdministrators {
        buyLimitToken = _noOfTokens;
    }

    function updateMinBuyToken(uint256 _tokens) public onlyAdministrators {
        minBuyToken = _tokens;
    }

    function updateLockablePercent(uint256 _percent) public onlyAdministrators {
        locakablePercent = _percent;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"_lockInBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBuyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"distributeCommission","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"updateTransFeesAdd","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellCommission","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_tokens","type":"uint256"},{"name":"nonce","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"updateTokenCommHolder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withdrawCommission","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokens","type":"uint256"}],"name":"updateMinBuyToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_rewardsSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"users","type":"address[]"}],"name":"upgradeContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_amount","type":"uint256"},{"name":"nonce","type":"uint256"}],"name":"withdrawTokenCommission","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenCommissionPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentRoadmapUsedSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStakeTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_percent","type":"uint256"}],"name":"updateSellCommissionPercentage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalCommissionFunds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_percent","type":"uint256"}],"name":"updateCommissionPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"admin","type":"address"}],"name":"removeAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"priceRoadmap","outputs":[{"name":"supply","type":"uint256"},{"name":"startPrice","type":"uint256"},{"name":"incPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"commissionPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"locakablePercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentRoadmap","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_dev1","type":"address"},{"name":"_dev2","type":"address"},{"name":"_dev3","type":"address"},{"name":"_dev4","type":"address"},{"name":"_dev5","type":"address"}],"name":"updateCommissionHolders","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sellRoadmapUsedSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_dev1","type":"uint256"},{"name":"_dev2","type":"uint256"},{"name":"_dev3","type":"uint256"},{"name":"_dev4","type":"uint256"},{"name":"_dev5","type":"uint256"}],"name":"upgradeContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"circulatingSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_tokens","type":"uint256"}],"name":"releaseLockIn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_percent","type":"uint256"}],"name":"updateTokenCommissionPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_percent","type":"uint256"}],"name":"updateLockablePercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"stakeBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokens","type":"uint256"}],"name":"getPurchaseSummary","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokens","type":"uint256"}],"name":"getSaleSummary","outputs":[{"name":"saleAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_bp","type":"uint256"},{"name":"_sp","type":"uint256"},{"name":"_circSup","type":"uint256"},{"name":"_currentRp","type":"uint8"},{"name":"_sellRp","type":"uint8"},{"name":"_crs","type":"uint256"},{"name":"_srs","type":"uint256"},{"name":"_commFunds","type":"uint256"}],"name":"upgradeDetails","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"getCommBalanceAdmin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_noOfTokens","type":"uint256"}],"name":"updateBuyLimitToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalLockInTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"admin","type":"address"}],"name":"addAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_tokens","type":"uint256"}],"name":"unStake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCommBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"addLiquidity","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_amount","type":"uint256"},{"name":"nonce","type":"uint256"}],"name":"withdrawStakeEarning","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_etherAmount","type":"uint256"}],"name":"releaseUserIncome","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokens","type":"uint256"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"limit","type":"bool"}],"name":"updateBuyLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellRoadmap","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"updateStakeHolder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"LAST_ROADMAP","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_commissionHolder","type":"address"},{"name":"_stakeHolder","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"staker","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"totalInStake","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"staker","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"totalInStake","type":"uint256"}],"name":"UnStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"CommissionWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"WithdrawTokenCommission","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"WithdrawStakingCommission","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyPrice","type":"uint256"},{"indexed":false,"name":"sellPrice","type":"uint256"},{"indexed":false,"name":"circulatingSupply","type":"uint256"}],"name":"Price","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"totalInStake","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"StakeUser","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LockIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"totalValue","type":"uint256"}],"name":"TransactionFees","type":"event"}]

608060405262186a0060009081556203a98060019081556207d9ea600255600682905561019060075561025860085560fa600955600c805461030061ff001960ff1992831660031716179091556138ca600d819055600e55600f8390556010929092556102ee60115560128054909216179055610834601355600a6014553480156200008a57600080fd5b50604051604080620049e483398101806040526040811015620000ac57600080fd5b5080516020918201513360008181526003855260408082208054600160ff1991821681179092556001600160a01b038088168086529390942080549091169091179055601580546001600160a01b0319908116909417905560048054841690911790556005805490921690831617905590916200012d906200014b811b901c565b505066031529b1be1980600a556603152887b82780600b5562000c29565b6200015562000c08565b506040805160608082018352620186a080835265f5904616e0006020808501918252634a817c8085870190815260016000908152602480845296517fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d65592517fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d755517fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d8558551808501875262061a808152660167400bc8fd80818301908152633b9aca008289019081526002855287845291517f47bb5529a97e2b401b32950f6360fbc9e3f4e70b887dc0f9b9ad1f7402ca11da55517f47bb5529a97e2b401b32950f6360fbc9e3f4e70b887dc0f9b9ad1f7402ca11db55517f47bb5529a97e2b401b32950f6360fbc9e3f4e70b887dc0f9b9ad1f7402ca11dc55855180850187528381526602d30d3c1d258081830190815264012a05f2008289019081526003855287845291517f8a6809e43cef135a96df89aa3c0800baae7c497913adf6156625c15a6f57cdf055517f8a6809e43cef135a96df89aa3c0800baae7c497913adf6156625c15a6f57cdf155517f8a6809e43cef135a96df89aa3c0800baae7c497913adf6156625c15a6f57cdf25585518085018752838152660499cdb88657808183019081526402540be4008289019081526004855287845291517fe0059098054d65c76a17a4d86f8572395c4d366a1d067b0643b918330bac9e1555517fe0059098054d65c76a17a4d86f8572395c4d366a1d067b0643b918330bac9e1655517fe0059098054d65c76a17a4d86f8572395c4d366a1d067b0643b918330bac9e1755855180850187529283526608274eb158bb808382019081526404a817c8008488019081526005845286835293517ff737fbf41dafb4990088c527475c23d7ec8faec34b668fc96ba68bf83b8ad60b55517ff737fbf41dafb4990088c527475c23d7ec8faec34b668fc96ba68bf83b8ad60c5591517ff737fbf41dafb4990088c527475c23d7ec8faec34b668fc96ba68bf83b8ad60d558451808401865262015f90808252660f4251cd037580828501908152640a7a3582008389019081526006855287865292517f9aeda4bfc94a0967e92a3e3f48e3d01d74a39c4cff849e6ec9b6ae18b248bf4455517f9aeda4bfc94a0967e92a3e3f48e3d01d74a39c4cff849e6ec9b6ae18b248bf455590517f9aeda4bfc94a0967e92a3e3f48e3d01d74a39c4cff849e6ec9b6ae18b248bf465585518085018752908152661da5ce0e8433808184019081526412a05f20008288019081526007845286855291517fc8063fc1c441a7c35622a029999f562fc3f4af6fb9445f9ed83a5a94f84407c255517fc8063fc1c441a7c35622a029999f562fc3f4af6fb9445f9ed83a5a94f84407c355517fc8063fc1c441a7c35622a029999f562fc3f4af6fb9445f9ed83a5a94f84407c455845180840186526201117080825266373a41f95d1b808285019081526429e8d608008389019081526008855287865292517f283ad1fa537f2bde05287a438aa5a837917793fc3ef421ca997bcba10fcd57b155517f283ad1fa537f2bde05287a438aa5a837917793fc3ef421ca997bcba10fcd57b25590517f283ad1fa537f2bde05287a438aa5a837917793fc3ef421ca997bcba10fcd57b355855180850187528181526663fe0baa52bf8081850190815264517da02c008289019081526009855287865291517fd15317c11e97357eac85a1b0ceb4d9eb990bb055e9d2fd4ec9602c7914b31ff655517fd15317c11e97357eac85a1b0ceb4d9eb990bb055e9d2fd4ec9602c7914b31ff755517fd15317c11e97357eac85a1b0ceb4d9eb990bb055e9d2fd4ec9602c7914b31ff8558551808501875290815266bb0907912d9f8081840190815264ae9f7bcc00828801908152600a845286855291517f58e3a833cb15d6f76c53a51c4f1055a3d0f1b35d372143cd8d886614508d45b155517f58e3a833cb15d6f76c53a51c4f1055a3d0f1b35d372143cd8d886614508d45b255517f58e3a833cb15d6f76c53a51c4f1055a3d0f1b35d372143cd8d886614508d45b3558451808401865261ea608082526701758e74d4c363808285019081526501a3185c5000838901908152600b855287865292517f689fc8e38deab97189835092711de729617cef9cb2af9cd30b797f55084894b355517f689fc8e38deab97189835092711de729617cef9cb2af9cd30b797f55084894b45590517f689fc8e38deab97189835092711de729617cef9cb2af9cd30b797f55084894b555855180850187528181526702f540cb2d26738081850190815265028bed016000828901908152600c855287865291517fcfd901ba1675b89e59c977e85e6e7a7c4ff7751b63723061dce346746771b92555517fcfd901ba1675b89e59c977e85e6e7a7c4ff7751b63723061dce346746771b92655517fcfd901ba1675b89e59c977e85e6e7a7c4ff7751b63723061dce346746771b927558551808501875290815267054a1ed05e477380818401908152650574fbde6000828801908152600d845286855291517fba34aae0b75e8591ff97e00cc3f6e8df1470d379cc0886440859b851f53e13d655517fba34aae0b75e8591ff97e00cc3f6e8df1470d379cc0886440859b851f53e13d755517fba34aae0b75e8591ff97e00cc3f6e8df1470d379cc0886440859b851f53e13d8558451808401865261c350808252670a491e5d1149d380828501908152650ae9f7bcc000838901908152600e855287865292517fcb8b48384fa57da59db4c36dd093c0351f73b817d50e2c37ca88ae4d4a70a09655517fcb8b48384fa57da59db4c36dd093c0351f73b817d50e2c37ca88ae4d4a70a0975590517fcb8b48384fa57da59db4c36dd093c0351f73b817d50e2c37ca88ae4d4a70a098558551808501875281815267129ccb020ee7a3808185019081526516bcc41e9000828901908152600f855287865291517fade56671733c21a56b831aeafce666eb366266b300c4d2146feebd5529c9e7a855517fade56671733c21a56b831aeafce666eb366266b300c4d2146feebd5529c9e7a955517fade56671733c21a56b831aeafce666eb366266b300c4d2146feebd5529c9e7aa55855180850187529081526723f5c1933d09e3808184019081526528ed6103d0008288019081526010845286855291517f2bca9be5280cb83435960c0a15ed776e282e6d3f26e0cdb8e92862d7f621bedf55517f2bca9be5280cb83435960c0a15ed776e282e6d3f26e0cdb8e92862d7f621bee055517f2bca9be5280cb83435960c0a15ed776e282e6d3f26e0cdb8e92862d7f621bee15584518084018652619c4080825267432f8594d6aeb3808285019081526551dac207a0008389019081526011855287865292517fa58e39ffb33aaa0b71efb51ab249ae7c4a3f628a05974bc1477befab147b6d1955517fa58e39ffb33aaa0b71efb51ab249ae7c4a3f628a05974bc1477befab147b6d1a5590517fa58e39ffb33aaa0b71efb51ab249ae7c4a3f628a05974bc1477befab147b6d1b5585519384018652835267752565cae96e9380838301908152656d23ad5f80009584019586526012909152929052517fdfdaa254b6681d2034ed3c54ccc5ee5a5f195d749713610b82bf840098f0033f55517fdfdaa254b6681d2034ed3c54ccc5ee5a5f195d749713610b82bf840098f0034055517fdfdaa254b6681d2034ed3c54ccc5ee5a5f195d749713610b82bf840098f0034155565b60405180606001604052806000815260200160008152602001600081525090565b613dab8062000c396000396000f3fe6080604052600436106103b85760003560e01c80637bd3026b116101f2578063c6f984c61161010d578063e8078d94116100a0578063f43c3c8c1161006f578063f43c3c8c14610da6578063f4e7bfa714610dd2578063f6335acc14610de7578063fd70fbeb14610e1a576103b8565b8063e8078d9414610cf5578063e8dd29ad14610d11578063edefa6e614610d50578063efef39a114610d89576103b8565b8063d28d8852116100dc578063d28d885214610c68578063d939381414610c7d578063e4849b3214610cb6578063e5b416b614610ce0576103b8565b8063c6f984c614610bc3578063c975b2dc14610bed578063c999117614610c02578063cbf0b0c014610c35576103b8565b8063a456dd9811610185578063b09f126611610154578063b09f126614610af5578063b55c58dd14610b0a578063b7a589b814610b34578063bd6579f214610b90576103b8565b8063a456dd9814610a44578063acad76a914610a6e578063af46aa0814610a98578063b01d6d1b14610acb576103b8565b80638d0bc599116101c15780638d0bc5991461099f5780639358928b146109e157806395d89b41146109f65780639c3821c914610a0b576103b8565b80637bd3026b1461090b57806383613ca8146109205780638620410b1461097557806386aacdfc1461098a576103b8565b80633695a06c116102e25780635269d90e1161027557806370a082311161024457806370a082311461086357806373559c961461089657806377d3550b146108e157806378f4e760146108f6576103b8565b80635269d90e146107dc57806359194d0c146107f15780635e3797971461080657806368fa813414610830576103b8565b806340a65823116102b157806340a658231461077357806343d32e9c146107885780634a1cd7311461079d5780634b750334146107c7576103b8565b80633695a06c146106f557806338e04faf146107345780633b565563146107495780633eaaf86b1461075e576103b8565b80631033125f1161035a5780632934c447116103295780632934c447146105f05780632ed2811e14610605578063313ce567146106b557806332424aa3146106e0576103b8565b80631033125f1461055457806317face841461058757806318160ddd146105b157806324299b4d146105c6576103b8565b806306fdde031161039657806306fdde03146104435780630763f0ce146104cd5780630a766cfa146105005780630c51b88f14610515576103b8565b8063011c2360146103bd578063018a25e8146104025780630697b4ad14610417575b600080fd5b3480156103c957600080fd5b506103f0600480360360208110156103e057600080fd5b50356001600160a01b0316610e2f565b60408051918252519081900360200190f35b34801561040e57600080fd5b506103f0610e41565b34801561042357600080fd5b506104416004803603602081101561043a57600080fd5b5035610e47565b005b34801561044f57600080fd5b50610458610ff6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561049257818101518382015260200161047a565b50505050905090810190601f1680156104bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104d957600080fd5b50610441600480360360208110156104f057600080fd5b50356001600160a01b0316611020565b34801561050c57600080fd5b506103f06110f9565b34801561052157600080fd5b506104416004803603606081101561053857600080fd5b506001600160a01b0381351690602081013590604001356110ff565b34801561056057600080fd5b506104416004803603602081101561057757600080fd5b50356001600160a01b0316611224565b34801561059357600080fd5b50610441600480360360208110156105aa57600080fd5b5035611317565b3480156105bd57600080fd5b506103f06113d5565b3480156105d257600080fd5b50610441600480360360208110156105e957600080fd5b50356113db565b3480156105fc57600080fd5b506103f0611431565b34801561061157600080fd5b506104416004803603602081101561062857600080fd5b81019060208101813564010000000081111561064357600080fd5b82018360208201111561065557600080fd5b8035906020019184602083028401116401000000008311171561067757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611437945050505050565b3480156106c157600080fd5b506106ca611660565b6040805160ff9092168252519081900360200190f35b3480156106ec57600080fd5b506106ca611665565b34801561070157600080fd5b506104416004803603606081101561071857600080fd5b506001600160a01b03813516906020810135906040013561166a565b34801561074057600080fd5b506103f06117a0565b34801561075557600080fd5b506103f06117a6565b34801561076a57600080fd5b506103f06117ac565b34801561077f57600080fd5b506103f06117b2565b34801561079457600080fd5b506103f06117b8565b3480156107a957600080fd5b50610441600480360360208110156107c057600080fd5b50356117be565b3480156107d357600080fd5b506103f0611814565b3480156107e857600080fd5b506103f061181a565b3480156107fd57600080fd5b506103f0611872565b34801561081257600080fd5b506104416004803603602081101561082957600080fd5b5035611877565b34801561083c57600080fd5b506104416004803603602081101561085357600080fd5b50356001600160a01b03166118cd565b34801561086f57600080fd5b506103f06004803603602081101561088657600080fd5b50356001600160a01b03166119b4565b3480156108a257600080fd5b506108c3600480360360208110156108b957600080fd5b503560ff166119d3565b60408051938452602084019290925282820152519081900360600190f35b3480156108ed57600080fd5b506103f06119f4565b34801561090257600080fd5b506103f06119fa565b34801561091757600080fd5b506106ca611a00565b34801561092c57600080fd5b50610441600480360360a081101561094357600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013582169160809091013516611a09565b34801561098157600080fd5b506103f0611ab9565b34801561099657600080fd5b506103f0611abf565b3480156109ab57600080fd5b50610441600480360360a08110156109c257600080fd5b5080359060208101359060408101359060608101359060800135611ac5565b3480156109ed57600080fd5b506103f0611b2d565b348015610a0257600080fd5b50610458611b33565b348015610a1757600080fd5b5061044160048036036040811015610a2e57600080fd5b506001600160a01b038135169060200135611b55565b348015610a5057600080fd5b5061044160048036036020811015610a6757600080fd5b5035611c6f565b348015610a7a57600080fd5b5061044160048036036020811015610a9157600080fd5b5035611cc5565b348015610aa457600080fd5b506103f060048036036020811015610abb57600080fd5b50356001600160a01b0316611d1b565b348015610ad757600080fd5b506103f060048036036020811015610aee57600080fd5b5035611d2d565b348015610b0157600080fd5b50610458611f37565b348015610b1657600080fd5b506103f060048036036020811015610b2d57600080fd5b5035611f5b565b348015610b4057600080fd5b506104416004803603610100811015610b5857600080fd5b5080359060208101359060408101359060ff606082013581169160808101359091169060a08101359060c08101359060e00135612140565b348015610b9c57600080fd5b506103f060048036036020811015610bb357600080fd5b50356001600160a01b03166121d1565b348015610bcf57600080fd5b5061044160048036036020811015610be657600080fd5b503561223d565b348015610bf957600080fd5b506103f0612293565b348015610c0e57600080fd5b5061044160048036036020811015610c2557600080fd5b50356001600160a01b0316612299565b348015610c4157600080fd5b5061044160048036036020811015610c5857600080fd5b50356001600160a01b0316612384565b348015610c7457600080fd5b506104586123e1565b348015610c8957600080fd5b5061044160048036036040811015610ca057600080fd5b506001600160a01b03813516906020013561240d565b348015610cc257600080fd5b5061044160048036036020811015610cd957600080fd5b503561252d565b348015610cec57600080fd5b506103f06125e3565b610cfd6125f5565b604080519115158252519081900360200190f35b348015610d1d57600080fd5b5061044160048036036060811015610d3457600080fd5b506001600160a01b0381351690602081013590604001356125fa565b348015610d5c57600080fd5b5061044160048036036040811015610d7357600080fd5b506001600160a01b03813516906020013561272f565b61044160048036036020811015610d9f57600080fd5b5035612813565b348015610db257600080fd5b5061044160048036036020811015610dc957600080fd5b5035151561281e565b348015610dde57600080fd5b506106ca612882565b348015610df357600080fd5b5061044160048036036020811015610e0a57600080fd5b50356001600160a01b0316612890565b348015610e2657600080fd5b506106ca612983565b60256020526000908152604090205481565b600a5490565b3360009081526003602052604090205460ff16610e9857604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b600654811115610edc57604051600160e51b62461bcd028152600401808060200182810382526024815260200180613d356024913960400191505060405180910390fd5b601f54601e54601d54601c54601b54010101016103e88114610f485760408051600160e51b62461bcd02815260206004820152601960248201527f496e76616c69642050657263656e742073747275637475726500000000000000604482015290519081900360640190fd5b6103e8601b54830281610f5757fe5b6016546001600160a01b039081166000908152602080526040808220805495909404909401909255601c546017548216835283832080546103e8928802839004019055601d546018548316845284842080549188028390049091019055601e546019548316845284842080549188028390049091019055601f54601a549092168352929091208054918502929092040190555060068054919091039055565b60408051808201909152600d8152600160981b6c446967692045786368616e676502602082015290565b3360009081526003602052604090205460ff1661107157604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6015546001600160a01b03828116911614156110d75760408051600160e51b62461bcd02815260206004820152601560248201527f4164647265737320616c72656164792061646465640000000000000000000000604482015290519081900360640190fd5b601580546001600160a01b0319166001600160a01b0392909216919091179055565b60085481565b3360009081526003602052604090205460ff1661115057604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6001600160a01b0383166000908152602260205260409020548211156111aa57604051600160e51b62461bcd028152600401808060200182810382526025815260200180613ca46025913960400191505060405180910390fd5b6001600160a01b0383166000818152602260209081526040808320805487900390556023825291829020805486019055600f805486019081905582518681529182015280820184905290517f5e320786aa09ca8938a3809dea0ba7c671eb08f34dc57bb4885eaabd4eb66c079181900360600190a2505050565b3360009081526003602052604090205460ff1661127557604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6004546001600160a01b03828116911614156112db5760408051600160e51b62461bcd02815260206004820152601460248201527f486f6c64657220616c7265616479206578697374000000000000000000000000604482015290519081900360640190fd5b600480546001600160a01b0390811660009081526022602052604080822054948316825280822085905592549091168152208054919091039055565b33600090815260208052604090205481111561137d5760408051600160e51b62461bcd02815260206004820152601b60248201527f446f6e7420686176652066756e647320746f2077697468647261770000000000604482015290519081900360640190fd5b33600081815260208052604090208054839003905561139c9082612988565b60408051828152905133917fb5499fc99039630a8a9d9534c1c6be6f24fd7fba04c6e7015e7f50b3224972da919081900360200190a250565b60005490565b3360009081526003602052604090205460ff1661142c57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b601455565b60015481565b3360009081526003602052604090205460ff1661148857604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b60005b815181101561165c576101f4602260008484815181106114a757fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055506105dc602560008484815181106114ef57fe5b6020908102919091018101516001600160a01b03908116835282820193909352604091820160009081208054909501909455600454909216835260229091529020805461029a019055815182908290811061154657fe5b60200260200101516001600160a01b0316306001600160a01b0316600080516020613ced8339815191526022600086868151811061158057fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020546040518082815260200191505060405180910390a3306001600160a01b03168282815181106115d457fe5b60200260200101516001600160a01b03167fcb530c4d93d6b7819abcb3c731b1d25e7851bc40b1f45860906c52dc594ecf9d6025600086868151811061161657fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020546040518082815260200191505060405180910390a360010161148b565b5050565b600090565b600081565b3360009081526003602052604090205460ff166116bb57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6004546001600160a01b031660009081526022602052604090205482111561172d5760408051600160e51b62461bcd02815260206004820152601760248201527f446f6e74206861766520656e6f75676820746f6b656e73000000000000000000604482015290519081900360640190fd5b6004546001600160a01b03908116600090815260226020908152604080832080548790039055928616808352918390208054860190558251858152908101849052825191927fd6b035b9b3bd6ef9aeb2f5fc348470c1de8e56519cb14f139b9e88638894252892918290030190a2505050565b60095481565b600d5481565b60005481565b600f5481565b600b5490565b3360009081526003602052604090205460ff1661180f57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b600855565b600b5481565b3360009081526003602052604081205460ff1661186b57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b5060065490565b303190565b3360009081526003602052604090205460ff166118c857604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b600755565b3360009081526003602052604090205460ff1661191e57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615156001146119935760408051600160e51b62461bcd02815260206004820152601260248201527f61646472657373206e6f74206578697374730000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000908152600360205260409020805460ff19169055565b6001600160a01b0381166000908152602260205260409020545b919050565b60246020526000908152604090208054600182015460029092015490919083565b60075481565b60115481565b600c5460ff1681565b3360009081526003602052604090205460ff16611a5a57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601980548416918516919091179055601a80549092169216919091179055565b600a5481565b600e5481565b3360009081526003602052604090205460ff16611b1657604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b601b94909455601c92909255601d55601e55601f55565b60025481565b6040805180820190915260058152600160db1b64088928e92b02602082015290565b3360009081526003602052604090205460ff16611ba657604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6001600160a01b038216600090815260256020526040902054811115611c0057604051600160e51b62461bcd028152600401808060200182810382526027815260200180613d596027913960400191505060405180910390fd5b6001600160a01b03821660008181526025602090815260408083208054869003905560228252918290208054850190556010805485900390558151848152915130927fcb530c4d93d6b7819abcb3c731b1d25e7851bc40b1f45860906c52dc594ecf9d92908290030190a35050565b3360009081526003602052604090205460ff16611cc057604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b600955565b3360009081526003602052604090205460ff16611d1657604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b601155565b60236020526000908152604090205481565b600080611d38613c0b565b50600c5460ff1660009081526024602090815260408083208151606081018352815480825260018301549482019490945260029091015491810191909152600d54909290918211611d8d578251829003611d92565b825182035b905080861015611dcf5760028360400151870284604001518889020288600a5460020202010381611dbf57fe5b049390930193506119ce92505050565b80861415611dfa5760028360400151870284604001518889020288600a5460020202010381611dbf57fe5b600c54869060009060ff165b601260ff821611611f2b5760ff811660009081526024602090815260409182902082516060810184528154808252600183015493820193909352600290910154928101929092529096508511611e60578551859003611e65565b855185035b600c5490945060ff82811691161415611e8257600a549150611e8a565b856020015191505b83831115611ec657600286604001518502876040015186870202868560020202010381611eb357fe5b0487019650838303925060009450611f23565b83831015611f0257600286604001518402876040015185860202858560020202010381611eef57fe5b049690960196506119ce95505050505050565b600286604001518402876040015185860202858560020202010381611eef57fe5b600101611e06565b50505050505050919050565b604051806040016040528060058152602001600160db1b64088928e92b0281525081565b600080611f66613c0b565b50600c54610100900460ff16600081815260246020818152604080842081516060808201845282548083526001840154838701819052600290940154928501839052600e54989097529484528251948501835294845291830191909152810191909152908080861015611ff65760028360400151870284604001518889020288600b5460020202030381611dbf57fe5b808614156120215760028360400151870284604001518889020288600b5460020202030381611dbf57fe5b600c548690600090610100900460ff165b60ff811615611f2b5760ff8082166000818152602460209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152600c549098508796506101009004909116141561209657600b5491506120aa565b604086015186516020880151908202010391505b838311156120f55760408601516002908581028680029091028487028302030360ff600019840116600090815260246020526040902054919004979097019694509183900391612137565b8383101561211a57604086015160029084810285800290910284860283020303611eef565b604086015160029084810285800290910284860283020303611eef565b60001901612032565b3360009081526003602052604090205460ff1661219157604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b600a97909755600b95909555600293909355600c805460ff9283166101000261ff00199490931660ff199091161792909216179055600d55600e55600655565b3360009081526003602052604081205460ff1661222257604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b506001600160a01b0316600090815260208052604090205490565b3360009081526003602052604090205460ff1661228e57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b601355565b60105481565b3360009081526003602052604090205460ff166122ea57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff161515600114156123605760408051600160e51b62461bcd02815260206004820152601660248201527f6164647265737320616c72656164792065786973747300000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b3360009081526003602052604090205460ff166123d557604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b806001600160a01b0316ff5b6040518060400160405280600d8152602001600160981b6c446967692045786368616e67650281525081565b3360009081526003602052604090205460ff1661245e57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6001600160a01b0382166000908152602360205260409020548111156124b857604051600160e51b62461bcd028152600401808060200182810382526029815260200180613c2d6029913960400191505060405180910390fd5b6001600160a01b038216600081815260236020908152604080832080548690039055600f805486900381556022835292819020805486019055915482518581529182015281517f54a9763035584fc4fcad1bc4e0e7a83f93e016f50ae32bd527530a77257393ee929181900390910190a25050565b600081116125855760408051600160e51b62461bcd02815260206004820152601660248201527f546f6b656e732063616e206e6f74206265207a65726f00000000000000000000604482015290519081900360640190fd5b336000908152602260205260409020548111156125d657604051600160e51b62461bcd028152600401808060200182810382526024815260200180613cc96024913960400191505060405180910390fd5b6125e033826129ec565b50565b33600090815260208052604090205490565b600190565b3360009081526003602052604090205460ff1661264b57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6005546001600160a01b03166000908152602260205260409020548211156126bd5760408051600160e51b62461bcd02815260206004820152601760248201527f446f6e74206861766520656e6f75676820746f6b656e73000000000000000000604482015290519081900360640190fd5b6001600160a01b038084166000818152602260209081526040808320805488019055600554909416825290839020805486900390558251858152908101849052825191927f243ef73eb46889f44c92a67393a9135fa6ba7a9d810f2e20e7ac71e4a1a2f82a92918290030190a2505050565b3360009081526003602052604090205460ff1661278057604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6004546001600160a01b03166000908152602160205260409020548111156127f25760408051600160e51b62461bcd02815260206004820152601160248201527f4e6f7420656e6f75676820616d6f756e74000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b039091166000908152602080526040902080549091019055565b6125e0338234612b6e565b3360009081526003602052604090205460ff1661286f57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6012805460ff1916911515919091179055565b600c54610100900460ff1681565b3360009081526003602052604090205460ff166128e157604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6005546001600160a01b03828116911614156129475760408051600160e51b62461bcd02815260206004820152601460248201527f486f6c64657220616c7265616479206578697374000000000000000000000000604482015290519081900360640190fd5b600580546001600160a01b0390811660009081526022602052604080822054948316825280822085905592549091168152208054919091039055565b601281565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505061165c576040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156129e7573d6000803e3d6000fd5b505050565b60006129f782613085565b6001600160a01b03841660009081526022602052604081208054859003905560085491925090612a429061271090612a3690859063ffffffff6134b316565b9063ffffffff61351816565b90506000612a56838363ffffffff61355a16565b6015546001600160a01b0390811660009081526020808052604080832080546103e860c88a0204908101909155600454851684526021835292819020805461271060328a020490810190915560068054858a0383900301905581518a81529151959650929492933093908b1692600080516020613ced833981519152928290030190a3600a54600b5460025460408051938452602084019290925282820152517f4afcb4a87cdbd9974efdb92ee48bc8d7cd0ae4bf217004db3d080cbaee652ca79181900360600190a1604080513081526020810186905281517f8e4e0cf646617e7b0064af88de18264067a22faee033176d2a6d4c48ed5236ff929181900390910190a1612b658784612988565b50505050505050565b601454821015612bc85760408051600160e51b62461bcd02815260206004820152601c60248201527f4d696e696d756d20746f6b656e732073686f756c642062652062757900000000604482015290519081900360640190fd5b60005460025483011115612c265760408051600160e51b62461bcd02815260206004820152601860248201527f416c6c20746f6b656e7320686173207075726368617365640000000000000000604482015290519081900360640190fd5b60008111612c7e5760408051600160e51b62461bcd02815260206004820152601660248201527f616d6f756e742063616e206e6f74206265207a65726f00000000000000000000604482015290519081900360640190fd5b60125460ff1615612d49576000612cb6612ca96103e8612a36600954876134b390919063ffffffff16565b849063ffffffff61355a16565b6013546001600160a01b038616600090815260256020908152604080832054602383528184205460229093529220549394509290920183019091011115612d475760408051600160e51b62461bcd02815260206004820152601360248201527f457863656564696e6720627579204c696d697400000000000000000000000000604482015290519081900360640190fd5b505b823b63ffffffff811615612da75760408051600160e51b62461bcd02815260206004820152601460248201527f63616e6e6f74206265206120636f6e7472616374000000000000000000000000604482015290519081900360640190fd5b6000612dc4612710612a36600754866134b390919063ffffffff16565b90508083036000612dd5868361359c565b6015546001600160a01b0390811660009081526020808052604080832080546103e860c88b02819004918201909255600454909516845260219092528220805461271060648a020490810190915560068054858a038390030190556009549495509293612e489190612a36908c906134b3565b601254909150818a039060ff1615612f7c576000612e776103e8612a36601154856134b390919063ffffffff16565b6004546001600160a01b03908116600090815260226020526040808220805488019055918f1681522080548285030190559050612eb48c82613adf565b6001600160a01b038c1630600080516020613ced833981519152612ede858563ffffffff61355a16565b60408051918252519081900360200190a3600a54600b5460025460408051938452602084019290925282820152517f4afcb4a87cdbd9974efdb92ee48bc8d7cd0ae4bf217004db3d080cbaee652ca79181900360600190a160408051828152905130916001600160a01b038f16917fcb530c4d93d6b7819abcb3c731b1d25e7851bc40b1f45860906c52dc594ecf9d9181900360200190a350613029565b6004546001600160a01b03908116600090815260226020526040808220805486019055918d168082529190208054848d0301905530600080516020613ced833981519152612fd08d8663ffffffff61355a16565b60408051918252519081900360200190a3600a54600b5460025460408051938452602084019290925282820152517f4afcb4a87cdbd9974efdb92ee48bc8d7cd0ae4bf217004db3d080cbaee652ca79181900360600190a15b604080513081526020810189905281517f8e4e0cf646617e7b0064af88de18264067a22faee033176d2a6d4c48ed5236ff929181900390910190a185851015613078576130788b868803612988565b5050505050505050505050565b600080613090613c0b565b50600c54610100900460ff16600081815260246020818152604080842081516060808201845282548083526001840154838701819052600290940154928501839052600e549890975294845282519485018352948452918301919091528101919091529080808610156131865760028360400151870284604001518889020288600b546002020203038161312057fe5b6040850151602090950151928890038086028401869003600b55600101850290920193909303600a55600e805487900390819055600d55600280548790039055600c8054610100810460ff1660ff19909116179055919091049190910191506119ce9050565b808614156132ac5760028360400151870284604001518889020288600b54600202020303816131b157fe5b600c54919004949094019360ff610100909104166001141561321e576001600081815260246020527fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d754600b819055600a55600c805460ff1916909217909155600e819055600d55613299565b600c805460001960ff61010080840482168381018316600090815260246020526040808220600281015481546001928301549082020103600b558383528183200154600a5560ff1990961690911782810484169094018316820261ff001990941693909317948590559093049092168252812054600e55600d555b50506002805485900390555090506119ce565b600c548690600090610100900460ff165b60ff811615611f2b5760ff8082166000818152602460209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152600c549098508796506101009004909116141561332157600b549150613335565b604086015186516020880151908202010391505b838311156133805760408601516002908581028680029091028487028302030360ff6000198401166000908152602460205260409020549190049790970196945091839003916134aa565b8383101561340b576040860151602090960151938390038087028501879003600b55600181018702909401869003600a55600e849055600d93909355600280548990038155600c805460ff191660ff90951694851761ff0019166101009590950294909417909355818502828002909502910282020392909203919091049190910191506119ce9050565b604095860151600019820160ff9081166000818152602460205289812060028082015482546001938401549082020103600b559584168083528b832090910154600a55600c805461ff00191661010094850217808255938404909416825299812054600e55600d5583548c9003845560ff19169097179096558286028380029096029190920282020393909303929092049290920192506119ce915050565b600019016132bd565b6000826134c257506000613512565b828202828482816134cf57fe5b041461350f57604051600160e51b62461bcd028152600401808060200182810382526021815260200180613c566021913960400191505060405180910390fd5b90505b92915050565b600061350f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b09565b600061350f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613bae565b6000806135a7613c0b565b50600c5460ff1660009081526024602090815260408083208151606081018352815480825260018301549482019490945260029091015491810191909152600d549092909182116135fc578251829003613601565b825182035b9050808710156136bc576002836040015188028460400151898a020289600a546002020201038161362e57fe5b04840193508584111561367557604051600160e51b62461bcd028152600401808060200182810382526028815260200180613d0d6028913960400191505060405180910390fd5b505060400151600a805486830201918203600b5555600d8054850190819055600e556002805485019055600c805460ff81166101000261ff00199091161790559050613512565b808714156137a3576002836040015188028460400151898a020289600a54600202020103816136e757fe5b04840193508584111561372e57604051600160e51b62461bcd028152600401808060200182810382526028815260200180613d0d6028913960400191505060405180910390fd5b5050604090810151600a80548783020191909103600b55600c805460ff808216600181810183166000818152602460205288812090920154909655600d8190559081529490942054600e5560ff19169091179182166101000261ff001990921691909117905560028054850190559050613512565b600c54879060009060ff165b601260ff821611613ad25760ff81166000908152602460209081526040918290208251606081018452815480825260018301549382019390935260029091015492810192909252909650851161380957855185900361380e565b855185035b600c5490945060ff8281169116141561382b57600a549150613833565b856020015191505b838311156138b15760028660400151850287604001518687020286856002020201038161385c57fe5b0487019650888711156138a357604051600160e51b62461bcd028152600401808060200182810382526028815260200180613d0d6028913960400191505060405180910390fd5b838303925060009450613aca565b838310156139ef576002866040015184028760400151858602028585600202020103816138da57fe5b04870196508887111561392157604051600160e51b62461bcd028152600401808060200182810382526028815260200180613d0d6028913960400191505060405180910390fd5b826001141561399857600019810160ff908116600081815260246020526040808220600280820154825460018085015491830290910191909103600b55958716845291832091820154919094015490870201600a558190529054600e55600c805461ff0019166101009092029190911790556139c5565b60408601518381028301908103600b55600a55600e839055600c805461ff00191661010060ff8416021790555b600c805460ff191660ff9290921691909117905550600d5550506002805486019055509050613512565b600286604001518402876040015185860202858560020202010381613a1057fe5b048701965088871115613a5757604051600160e51b62461bcd028152600401808060200182810382526028815260200180613d0d6028913960400191505060405180910390fd5b6040958601519283029190910191909103600b55600180820160ff9081166000818152602460205287812090930154600a55600d839055921680825294902054600e556002805489019055600c805460ff191690911761ff00191661010090940293909317909255509091506135129050565b6001016137af565b5050505050505092915050565b6001600160a01b039091166000908152602560205260409020805482019055601080549091019055565b60008183613b9857604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613b5d578181015183820152602001613b45565b50505050905090810190601f168015613b8a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613ba457fe5b0495945050505050565b60008184841115613c0357604051600160e51b62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315613b5d578181015183820152602001613b45565b505050900390565b6040518060600160405280600081526020016000815260200160008152509056fe5573657220646f65736e74206861766520616d6f756e74206f6620746f6b656e20696e207374616b65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f6e6c792061646d696e6973747261746f72732063616e206578656375746520746869732066756e6374696f6e5573657220646f6e74206861766520656e6f75676820746f6b656e7320746f207374616b65596f7520646f6e74206861766520656e6f75676820616d6f756e74206f6620746f6b656eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef446f6e7420686176652073756666696369656e742062616c616e636520746f207075726368617365446f6e74206861766520656e6f7567682066756e647320746f20646973747269627574655573657220646f6e74206861766520656e6f7567682062616c616e636520696e20546f6b656e73a165627a7a723058202107ca4d623de56dad972d0d196ccc3076db7dada87df55252bf6fe6ff9b52380029000000000000000000000000af7c5ddcdc350261ebc8c3cc1aaa2b8295c54c78000000000000000000000000c8a233ef0fb30fe8954851e9ac0bde45b7cda66e

Deployed Bytecode

0x6080604052600436106103b85760003560e01c80637bd3026b116101f2578063c6f984c61161010d578063e8078d94116100a0578063f43c3c8c1161006f578063f43c3c8c14610da6578063f4e7bfa714610dd2578063f6335acc14610de7578063fd70fbeb14610e1a576103b8565b8063e8078d9414610cf5578063e8dd29ad14610d11578063edefa6e614610d50578063efef39a114610d89576103b8565b8063d28d8852116100dc578063d28d885214610c68578063d939381414610c7d578063e4849b3214610cb6578063e5b416b614610ce0576103b8565b8063c6f984c614610bc3578063c975b2dc14610bed578063c999117614610c02578063cbf0b0c014610c35576103b8565b8063a456dd9811610185578063b09f126611610154578063b09f126614610af5578063b55c58dd14610b0a578063b7a589b814610b34578063bd6579f214610b90576103b8565b8063a456dd9814610a44578063acad76a914610a6e578063af46aa0814610a98578063b01d6d1b14610acb576103b8565b80638d0bc599116101c15780638d0bc5991461099f5780639358928b146109e157806395d89b41146109f65780639c3821c914610a0b576103b8565b80637bd3026b1461090b57806383613ca8146109205780638620410b1461097557806386aacdfc1461098a576103b8565b80633695a06c116102e25780635269d90e1161027557806370a082311161024457806370a082311461086357806373559c961461089657806377d3550b146108e157806378f4e760146108f6576103b8565b80635269d90e146107dc57806359194d0c146107f15780635e3797971461080657806368fa813414610830576103b8565b806340a65823116102b157806340a658231461077357806343d32e9c146107885780634a1cd7311461079d5780634b750334146107c7576103b8565b80633695a06c146106f557806338e04faf146107345780633b565563146107495780633eaaf86b1461075e576103b8565b80631033125f1161035a5780632934c447116103295780632934c447146105f05780632ed2811e14610605578063313ce567146106b557806332424aa3146106e0576103b8565b80631033125f1461055457806317face841461058757806318160ddd146105b157806324299b4d146105c6576103b8565b806306fdde031161039657806306fdde03146104435780630763f0ce146104cd5780630a766cfa146105005780630c51b88f14610515576103b8565b8063011c2360146103bd578063018a25e8146104025780630697b4ad14610417575b600080fd5b3480156103c957600080fd5b506103f0600480360360208110156103e057600080fd5b50356001600160a01b0316610e2f565b60408051918252519081900360200190f35b34801561040e57600080fd5b506103f0610e41565b34801561042357600080fd5b506104416004803603602081101561043a57600080fd5b5035610e47565b005b34801561044f57600080fd5b50610458610ff6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561049257818101518382015260200161047a565b50505050905090810190601f1680156104bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104d957600080fd5b50610441600480360360208110156104f057600080fd5b50356001600160a01b0316611020565b34801561050c57600080fd5b506103f06110f9565b34801561052157600080fd5b506104416004803603606081101561053857600080fd5b506001600160a01b0381351690602081013590604001356110ff565b34801561056057600080fd5b506104416004803603602081101561057757600080fd5b50356001600160a01b0316611224565b34801561059357600080fd5b50610441600480360360208110156105aa57600080fd5b5035611317565b3480156105bd57600080fd5b506103f06113d5565b3480156105d257600080fd5b50610441600480360360208110156105e957600080fd5b50356113db565b3480156105fc57600080fd5b506103f0611431565b34801561061157600080fd5b506104416004803603602081101561062857600080fd5b81019060208101813564010000000081111561064357600080fd5b82018360208201111561065557600080fd5b8035906020019184602083028401116401000000008311171561067757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611437945050505050565b3480156106c157600080fd5b506106ca611660565b6040805160ff9092168252519081900360200190f35b3480156106ec57600080fd5b506106ca611665565b34801561070157600080fd5b506104416004803603606081101561071857600080fd5b506001600160a01b03813516906020810135906040013561166a565b34801561074057600080fd5b506103f06117a0565b34801561075557600080fd5b506103f06117a6565b34801561076a57600080fd5b506103f06117ac565b34801561077f57600080fd5b506103f06117b2565b34801561079457600080fd5b506103f06117b8565b3480156107a957600080fd5b50610441600480360360208110156107c057600080fd5b50356117be565b3480156107d357600080fd5b506103f0611814565b3480156107e857600080fd5b506103f061181a565b3480156107fd57600080fd5b506103f0611872565b34801561081257600080fd5b506104416004803603602081101561082957600080fd5b5035611877565b34801561083c57600080fd5b506104416004803603602081101561085357600080fd5b50356001600160a01b03166118cd565b34801561086f57600080fd5b506103f06004803603602081101561088657600080fd5b50356001600160a01b03166119b4565b3480156108a257600080fd5b506108c3600480360360208110156108b957600080fd5b503560ff166119d3565b60408051938452602084019290925282820152519081900360600190f35b3480156108ed57600080fd5b506103f06119f4565b34801561090257600080fd5b506103f06119fa565b34801561091757600080fd5b506106ca611a00565b34801561092c57600080fd5b50610441600480360360a081101561094357600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013582169160809091013516611a09565b34801561098157600080fd5b506103f0611ab9565b34801561099657600080fd5b506103f0611abf565b3480156109ab57600080fd5b50610441600480360360a08110156109c257600080fd5b5080359060208101359060408101359060608101359060800135611ac5565b3480156109ed57600080fd5b506103f0611b2d565b348015610a0257600080fd5b50610458611b33565b348015610a1757600080fd5b5061044160048036036040811015610a2e57600080fd5b506001600160a01b038135169060200135611b55565b348015610a5057600080fd5b5061044160048036036020811015610a6757600080fd5b5035611c6f565b348015610a7a57600080fd5b5061044160048036036020811015610a9157600080fd5b5035611cc5565b348015610aa457600080fd5b506103f060048036036020811015610abb57600080fd5b50356001600160a01b0316611d1b565b348015610ad757600080fd5b506103f060048036036020811015610aee57600080fd5b5035611d2d565b348015610b0157600080fd5b50610458611f37565b348015610b1657600080fd5b506103f060048036036020811015610b2d57600080fd5b5035611f5b565b348015610b4057600080fd5b506104416004803603610100811015610b5857600080fd5b5080359060208101359060408101359060ff606082013581169160808101359091169060a08101359060c08101359060e00135612140565b348015610b9c57600080fd5b506103f060048036036020811015610bb357600080fd5b50356001600160a01b03166121d1565b348015610bcf57600080fd5b5061044160048036036020811015610be657600080fd5b503561223d565b348015610bf957600080fd5b506103f0612293565b348015610c0e57600080fd5b5061044160048036036020811015610c2557600080fd5b50356001600160a01b0316612299565b348015610c4157600080fd5b5061044160048036036020811015610c5857600080fd5b50356001600160a01b0316612384565b348015610c7457600080fd5b506104586123e1565b348015610c8957600080fd5b5061044160048036036040811015610ca057600080fd5b506001600160a01b03813516906020013561240d565b348015610cc257600080fd5b5061044160048036036020811015610cd957600080fd5b503561252d565b348015610cec57600080fd5b506103f06125e3565b610cfd6125f5565b604080519115158252519081900360200190f35b348015610d1d57600080fd5b5061044160048036036060811015610d3457600080fd5b506001600160a01b0381351690602081013590604001356125fa565b348015610d5c57600080fd5b5061044160048036036040811015610d7357600080fd5b506001600160a01b03813516906020013561272f565b61044160048036036020811015610d9f57600080fd5b5035612813565b348015610db257600080fd5b5061044160048036036020811015610dc957600080fd5b5035151561281e565b348015610dde57600080fd5b506106ca612882565b348015610df357600080fd5b5061044160048036036020811015610e0a57600080fd5b50356001600160a01b0316612890565b348015610e2657600080fd5b506106ca612983565b60256020526000908152604090205481565b600a5490565b3360009081526003602052604090205460ff16610e9857604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b600654811115610edc57604051600160e51b62461bcd028152600401808060200182810382526024815260200180613d356024913960400191505060405180910390fd5b601f54601e54601d54601c54601b54010101016103e88114610f485760408051600160e51b62461bcd02815260206004820152601960248201527f496e76616c69642050657263656e742073747275637475726500000000000000604482015290519081900360640190fd5b6103e8601b54830281610f5757fe5b6016546001600160a01b039081166000908152602080526040808220805495909404909401909255601c546017548216835283832080546103e8928802839004019055601d546018548316845284842080549188028390049091019055601e546019548316845284842080549188028390049091019055601f54601a549092168352929091208054918502929092040190555060068054919091039055565b60408051808201909152600d8152600160981b6c446967692045786368616e676502602082015290565b3360009081526003602052604090205460ff1661107157604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6015546001600160a01b03828116911614156110d75760408051600160e51b62461bcd02815260206004820152601560248201527f4164647265737320616c72656164792061646465640000000000000000000000604482015290519081900360640190fd5b601580546001600160a01b0319166001600160a01b0392909216919091179055565b60085481565b3360009081526003602052604090205460ff1661115057604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6001600160a01b0383166000908152602260205260409020548211156111aa57604051600160e51b62461bcd028152600401808060200182810382526025815260200180613ca46025913960400191505060405180910390fd5b6001600160a01b0383166000818152602260209081526040808320805487900390556023825291829020805486019055600f805486019081905582518681529182015280820184905290517f5e320786aa09ca8938a3809dea0ba7c671eb08f34dc57bb4885eaabd4eb66c079181900360600190a2505050565b3360009081526003602052604090205460ff1661127557604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6004546001600160a01b03828116911614156112db5760408051600160e51b62461bcd02815260206004820152601460248201527f486f6c64657220616c7265616479206578697374000000000000000000000000604482015290519081900360640190fd5b600480546001600160a01b0390811660009081526022602052604080822054948316825280822085905592549091168152208054919091039055565b33600090815260208052604090205481111561137d5760408051600160e51b62461bcd02815260206004820152601b60248201527f446f6e7420686176652066756e647320746f2077697468647261770000000000604482015290519081900360640190fd5b33600081815260208052604090208054839003905561139c9082612988565b60408051828152905133917fb5499fc99039630a8a9d9534c1c6be6f24fd7fba04c6e7015e7f50b3224972da919081900360200190a250565b60005490565b3360009081526003602052604090205460ff1661142c57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b601455565b60015481565b3360009081526003602052604090205460ff1661148857604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b60005b815181101561165c576101f4602260008484815181106114a757fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055506105dc602560008484815181106114ef57fe5b6020908102919091018101516001600160a01b03908116835282820193909352604091820160009081208054909501909455600454909216835260229091529020805461029a019055815182908290811061154657fe5b60200260200101516001600160a01b0316306001600160a01b0316600080516020613ced8339815191526022600086868151811061158057fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020546040518082815260200191505060405180910390a3306001600160a01b03168282815181106115d457fe5b60200260200101516001600160a01b03167fcb530c4d93d6b7819abcb3c731b1d25e7851bc40b1f45860906c52dc594ecf9d6025600086868151811061161657fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020546040518082815260200191505060405180910390a360010161148b565b5050565b600090565b600081565b3360009081526003602052604090205460ff166116bb57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6004546001600160a01b031660009081526022602052604090205482111561172d5760408051600160e51b62461bcd02815260206004820152601760248201527f446f6e74206861766520656e6f75676820746f6b656e73000000000000000000604482015290519081900360640190fd5b6004546001600160a01b03908116600090815260226020908152604080832080548790039055928616808352918390208054860190558251858152908101849052825191927fd6b035b9b3bd6ef9aeb2f5fc348470c1de8e56519cb14f139b9e88638894252892918290030190a2505050565b60095481565b600d5481565b60005481565b600f5481565b600b5490565b3360009081526003602052604090205460ff1661180f57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b600855565b600b5481565b3360009081526003602052604081205460ff1661186b57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b5060065490565b303190565b3360009081526003602052604090205460ff166118c857604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b600755565b3360009081526003602052604090205460ff1661191e57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615156001146119935760408051600160e51b62461bcd02815260206004820152601260248201527f61646472657373206e6f74206578697374730000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000908152600360205260409020805460ff19169055565b6001600160a01b0381166000908152602260205260409020545b919050565b60246020526000908152604090208054600182015460029092015490919083565b60075481565b60115481565b600c5460ff1681565b3360009081526003602052604090205460ff16611a5a57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601980548416918516919091179055601a80549092169216919091179055565b600a5481565b600e5481565b3360009081526003602052604090205460ff16611b1657604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b601b94909455601c92909255601d55601e55601f55565b60025481565b6040805180820190915260058152600160db1b64088928e92b02602082015290565b3360009081526003602052604090205460ff16611ba657604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6001600160a01b038216600090815260256020526040902054811115611c0057604051600160e51b62461bcd028152600401808060200182810382526027815260200180613d596027913960400191505060405180910390fd5b6001600160a01b03821660008181526025602090815260408083208054869003905560228252918290208054850190556010805485900390558151848152915130927fcb530c4d93d6b7819abcb3c731b1d25e7851bc40b1f45860906c52dc594ecf9d92908290030190a35050565b3360009081526003602052604090205460ff16611cc057604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b600955565b3360009081526003602052604090205460ff16611d1657604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b601155565b60236020526000908152604090205481565b600080611d38613c0b565b50600c5460ff1660009081526024602090815260408083208151606081018352815480825260018301549482019490945260029091015491810191909152600d54909290918211611d8d578251829003611d92565b825182035b905080861015611dcf5760028360400151870284604001518889020288600a5460020202010381611dbf57fe5b049390930193506119ce92505050565b80861415611dfa5760028360400151870284604001518889020288600a5460020202010381611dbf57fe5b600c54869060009060ff165b601260ff821611611f2b5760ff811660009081526024602090815260409182902082516060810184528154808252600183015493820193909352600290910154928101929092529096508511611e60578551859003611e65565b855185035b600c5490945060ff82811691161415611e8257600a549150611e8a565b856020015191505b83831115611ec657600286604001518502876040015186870202868560020202010381611eb357fe5b0487019650838303925060009450611f23565b83831015611f0257600286604001518402876040015185860202858560020202010381611eef57fe5b049690960196506119ce95505050505050565b600286604001518402876040015185860202858560020202010381611eef57fe5b600101611e06565b50505050505050919050565b604051806040016040528060058152602001600160db1b64088928e92b0281525081565b600080611f66613c0b565b50600c54610100900460ff16600081815260246020818152604080842081516060808201845282548083526001840154838701819052600290940154928501839052600e54989097529484528251948501835294845291830191909152810191909152908080861015611ff65760028360400151870284604001518889020288600b5460020202030381611dbf57fe5b808614156120215760028360400151870284604001518889020288600b5460020202030381611dbf57fe5b600c548690600090610100900460ff165b60ff811615611f2b5760ff8082166000818152602460209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152600c549098508796506101009004909116141561209657600b5491506120aa565b604086015186516020880151908202010391505b838311156120f55760408601516002908581028680029091028487028302030360ff600019840116600090815260246020526040902054919004979097019694509183900391612137565b8383101561211a57604086015160029084810285800290910284860283020303611eef565b604086015160029084810285800290910284860283020303611eef565b60001901612032565b3360009081526003602052604090205460ff1661219157604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b600a97909755600b95909555600293909355600c805460ff9283166101000261ff00199490931660ff199091161792909216179055600d55600e55600655565b3360009081526003602052604081205460ff1661222257604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b506001600160a01b0316600090815260208052604090205490565b3360009081526003602052604090205460ff1661228e57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b601355565b60105481565b3360009081526003602052604090205460ff166122ea57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff161515600114156123605760408051600160e51b62461bcd02815260206004820152601660248201527f6164647265737320616c72656164792065786973747300000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b3360009081526003602052604090205460ff166123d557604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b806001600160a01b0316ff5b6040518060400160405280600d8152602001600160981b6c446967692045786368616e67650281525081565b3360009081526003602052604090205460ff1661245e57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6001600160a01b0382166000908152602360205260409020548111156124b857604051600160e51b62461bcd028152600401808060200182810382526029815260200180613c2d6029913960400191505060405180910390fd5b6001600160a01b038216600081815260236020908152604080832080548690039055600f805486900381556022835292819020805486019055915482518581529182015281517f54a9763035584fc4fcad1bc4e0e7a83f93e016f50ae32bd527530a77257393ee929181900390910190a25050565b600081116125855760408051600160e51b62461bcd02815260206004820152601660248201527f546f6b656e732063616e206e6f74206265207a65726f00000000000000000000604482015290519081900360640190fd5b336000908152602260205260409020548111156125d657604051600160e51b62461bcd028152600401808060200182810382526024815260200180613cc96024913960400191505060405180910390fd5b6125e033826129ec565b50565b33600090815260208052604090205490565b600190565b3360009081526003602052604090205460ff1661264b57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6005546001600160a01b03166000908152602260205260409020548211156126bd5760408051600160e51b62461bcd02815260206004820152601760248201527f446f6e74206861766520656e6f75676820746f6b656e73000000000000000000604482015290519081900360640190fd5b6001600160a01b038084166000818152602260209081526040808320805488019055600554909416825290839020805486900390558251858152908101849052825191927f243ef73eb46889f44c92a67393a9135fa6ba7a9d810f2e20e7ac71e4a1a2f82a92918290030190a2505050565b3360009081526003602052604090205460ff1661278057604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6004546001600160a01b03166000908152602160205260409020548111156127f25760408051600160e51b62461bcd02815260206004820152601160248201527f4e6f7420656e6f75676820616d6f756e74000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b039091166000908152602080526040902080549091019055565b6125e0338234612b6e565b3360009081526003602052604090205460ff1661286f57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6012805460ff1916911515919091179055565b600c54610100900460ff1681565b3360009081526003602052604090205460ff166128e157604051600160e51b62461bcd02815260040180806020018281038252602d815260200180613c77602d913960400191505060405180910390fd5b6005546001600160a01b03828116911614156129475760408051600160e51b62461bcd02815260206004820152601460248201527f486f6c64657220616c7265616479206578697374000000000000000000000000604482015290519081900360640190fd5b600580546001600160a01b0390811660009081526022602052604080822054948316825280822085905592549091168152208054919091039055565b601281565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505061165c576040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156129e7573d6000803e3d6000fd5b505050565b60006129f782613085565b6001600160a01b03841660009081526022602052604081208054859003905560085491925090612a429061271090612a3690859063ffffffff6134b316565b9063ffffffff61351816565b90506000612a56838363ffffffff61355a16565b6015546001600160a01b0390811660009081526020808052604080832080546103e860c88a0204908101909155600454851684526021835292819020805461271060328a020490810190915560068054858a0383900301905581518a81529151959650929492933093908b1692600080516020613ced833981519152928290030190a3600a54600b5460025460408051938452602084019290925282820152517f4afcb4a87cdbd9974efdb92ee48bc8d7cd0ae4bf217004db3d080cbaee652ca79181900360600190a1604080513081526020810186905281517f8e4e0cf646617e7b0064af88de18264067a22faee033176d2a6d4c48ed5236ff929181900390910190a1612b658784612988565b50505050505050565b601454821015612bc85760408051600160e51b62461bcd02815260206004820152601c60248201527f4d696e696d756d20746f6b656e732073686f756c642062652062757900000000604482015290519081900360640190fd5b60005460025483011115612c265760408051600160e51b62461bcd02815260206004820152601860248201527f416c6c20746f6b656e7320686173207075726368617365640000000000000000604482015290519081900360640190fd5b60008111612c7e5760408051600160e51b62461bcd02815260206004820152601660248201527f616d6f756e742063616e206e6f74206265207a65726f00000000000000000000604482015290519081900360640190fd5b60125460ff1615612d49576000612cb6612ca96103e8612a36600954876134b390919063ffffffff16565b849063ffffffff61355a16565b6013546001600160a01b038616600090815260256020908152604080832054602383528184205460229093529220549394509290920183019091011115612d475760408051600160e51b62461bcd02815260206004820152601360248201527f457863656564696e6720627579204c696d697400000000000000000000000000604482015290519081900360640190fd5b505b823b63ffffffff811615612da75760408051600160e51b62461bcd02815260206004820152601460248201527f63616e6e6f74206265206120636f6e7472616374000000000000000000000000604482015290519081900360640190fd5b6000612dc4612710612a36600754866134b390919063ffffffff16565b90508083036000612dd5868361359c565b6015546001600160a01b0390811660009081526020808052604080832080546103e860c88b02819004918201909255600454909516845260219092528220805461271060648a020490810190915560068054858a038390030190556009549495509293612e489190612a36908c906134b3565b601254909150818a039060ff1615612f7c576000612e776103e8612a36601154856134b390919063ffffffff16565b6004546001600160a01b03908116600090815260226020526040808220805488019055918f1681522080548285030190559050612eb48c82613adf565b6001600160a01b038c1630600080516020613ced833981519152612ede858563ffffffff61355a16565b60408051918252519081900360200190a3600a54600b5460025460408051938452602084019290925282820152517f4afcb4a87cdbd9974efdb92ee48bc8d7cd0ae4bf217004db3d080cbaee652ca79181900360600190a160408051828152905130916001600160a01b038f16917fcb530c4d93d6b7819abcb3c731b1d25e7851bc40b1f45860906c52dc594ecf9d9181900360200190a350613029565b6004546001600160a01b03908116600090815260226020526040808220805486019055918d168082529190208054848d0301905530600080516020613ced833981519152612fd08d8663ffffffff61355a16565b60408051918252519081900360200190a3600a54600b5460025460408051938452602084019290925282820152517f4afcb4a87cdbd9974efdb92ee48bc8d7cd0ae4bf217004db3d080cbaee652ca79181900360600190a15b604080513081526020810189905281517f8e4e0cf646617e7b0064af88de18264067a22faee033176d2a6d4c48ed5236ff929181900390910190a185851015613078576130788b868803612988565b5050505050505050505050565b600080613090613c0b565b50600c54610100900460ff16600081815260246020818152604080842081516060808201845282548083526001840154838701819052600290940154928501839052600e549890975294845282519485018352948452918301919091528101919091529080808610156131865760028360400151870284604001518889020288600b546002020203038161312057fe5b6040850151602090950151928890038086028401869003600b55600101850290920193909303600a55600e805487900390819055600d55600280548790039055600c8054610100810460ff1660ff19909116179055919091049190910191506119ce9050565b808614156132ac5760028360400151870284604001518889020288600b54600202020303816131b157fe5b600c54919004949094019360ff610100909104166001141561321e576001600081815260246020527fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d754600b819055600a55600c805460ff1916909217909155600e819055600d55613299565b600c805460001960ff61010080840482168381018316600090815260246020526040808220600281015481546001928301549082020103600b558383528183200154600a5560ff1990961690911782810484169094018316820261ff001990941693909317948590559093049092168252812054600e55600d555b50506002805485900390555090506119ce565b600c548690600090610100900460ff165b60ff811615611f2b5760ff8082166000818152602460209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152600c549098508796506101009004909116141561332157600b549150613335565b604086015186516020880151908202010391505b838311156133805760408601516002908581028680029091028487028302030360ff6000198401166000908152602460205260409020549190049790970196945091839003916134aa565b8383101561340b576040860151602090960151938390038087028501879003600b55600181018702909401869003600a55600e849055600d93909355600280548990038155600c805460ff191660ff90951694851761ff0019166101009590950294909417909355818502828002909502910282020392909203919091049190910191506119ce9050565b604095860151600019820160ff9081166000818152602460205289812060028082015482546001938401549082020103600b559584168083528b832090910154600a55600c805461ff00191661010094850217808255938404909416825299812054600e55600d5583548c9003845560ff19169097179096558286028380029096029190920282020393909303929092049290920192506119ce915050565b600019016132bd565b6000826134c257506000613512565b828202828482816134cf57fe5b041461350f57604051600160e51b62461bcd028152600401808060200182810382526021815260200180613c566021913960400191505060405180910390fd5b90505b92915050565b600061350f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b09565b600061350f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613bae565b6000806135a7613c0b565b50600c5460ff1660009081526024602090815260408083208151606081018352815480825260018301549482019490945260029091015491810191909152600d549092909182116135fc578251829003613601565b825182035b9050808710156136bc576002836040015188028460400151898a020289600a546002020201038161362e57fe5b04840193508584111561367557604051600160e51b62461bcd028152600401808060200182810382526028815260200180613d0d6028913960400191505060405180910390fd5b505060400151600a805486830201918203600b5555600d8054850190819055600e556002805485019055600c805460ff81166101000261ff00199091161790559050613512565b808714156137a3576002836040015188028460400151898a020289600a54600202020103816136e757fe5b04840193508584111561372e57604051600160e51b62461bcd028152600401808060200182810382526028815260200180613d0d6028913960400191505060405180910390fd5b5050604090810151600a80548783020191909103600b55600c805460ff808216600181810183166000818152602460205288812090920154909655600d8190559081529490942054600e5560ff19169091179182166101000261ff001990921691909117905560028054850190559050613512565b600c54879060009060ff165b601260ff821611613ad25760ff81166000908152602460209081526040918290208251606081018452815480825260018301549382019390935260029091015492810192909252909650851161380957855185900361380e565b855185035b600c5490945060ff8281169116141561382b57600a549150613833565b856020015191505b838311156138b15760028660400151850287604001518687020286856002020201038161385c57fe5b0487019650888711156138a357604051600160e51b62461bcd028152600401808060200182810382526028815260200180613d0d6028913960400191505060405180910390fd5b838303925060009450613aca565b838310156139ef576002866040015184028760400151858602028585600202020103816138da57fe5b04870196508887111561392157604051600160e51b62461bcd028152600401808060200182810382526028815260200180613d0d6028913960400191505060405180910390fd5b826001141561399857600019810160ff908116600081815260246020526040808220600280820154825460018085015491830290910191909103600b55958716845291832091820154919094015490870201600a558190529054600e55600c805461ff0019166101009092029190911790556139c5565b60408601518381028301908103600b55600a55600e839055600c805461ff00191661010060ff8416021790555b600c805460ff191660ff9290921691909117905550600d5550506002805486019055509050613512565b600286604001518402876040015185860202858560020202010381613a1057fe5b048701965088871115613a5757604051600160e51b62461bcd028152600401808060200182810382526028815260200180613d0d6028913960400191505060405180910390fd5b6040958601519283029190910191909103600b55600180820160ff9081166000818152602460205287812090930154600a55600d839055921680825294902054600e556002805489019055600c805460ff191690911761ff00191661010090940293909317909255509091506135129050565b6001016137af565b5050505050505092915050565b6001600160a01b039091166000908152602560205260409020805482019055601080549091019055565b60008183613b9857604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613b5d578181015183820152602001613b45565b50505050905090810190601f168015613b8a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613ba457fe5b0495945050505050565b60008184841115613c0357604051600160e51b62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315613b5d578181015183820152602001613b45565b505050900390565b6040518060600160405280600081526020016000815260200160008152509056fe5573657220646f65736e74206861766520616d6f756e74206f6620746f6b656e20696e207374616b65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f6e6c792061646d696e6973747261746f72732063616e206578656375746520746869732066756e6374696f6e5573657220646f6e74206861766520656e6f75676820746f6b656e7320746f207374616b65596f7520646f6e74206861766520656e6f75676820616d6f756e74206f6620746f6b656eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef446f6e7420686176652073756666696369656e742062616c616e636520746f207075726368617365446f6e74206861766520656e6f7567682066756e647320746f20646973747269627574655573657220646f6e74206861766520656e6f7567682062616c616e636520696e20546f6b656e73a165627a7a723058202107ca4d623de56dad972d0d196ccc3076db7dada87df55252bf6fe6ff9b52380029

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

000000000000000000000000af7c5ddcdc350261ebc8c3cc1aaa2b8295c54c78000000000000000000000000c8a233ef0fb30fe8954851e9ac0bde45b7cda66e

-----Decoded View---------------
Arg [0] : _commissionHolder (address): 0xaf7C5dDcDc350261Ebc8c3CC1Aaa2b8295C54c78
Arg [1] : _stakeHolder (address): 0xC8A233ef0FB30fe8954851e9AC0BDE45b7CDa66E

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000af7c5ddcdc350261ebc8c3cc1aaa2b8295c54c78
Arg [1] : 000000000000000000000000c8a233ef0fb30fe8954851e9ac0bde45b7cda66e


Deployed Bytecode Sourcemap

5335:33640:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8446:8;;;7154:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7154:50:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7154:50:0;-1:-1:-1;;;;;7154:50:0;;:::i;:::-;;;;;;;;;;;;;;;;37703:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37703:86:0;;;:::i;31388:655::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31388:655:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31388:655:0;;:::i;:::-;;37893:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37893:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37893:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32323:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32323:165:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32323:165:0;-1:-1:-1;;;;;32323:165:0;;:::i;5978:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5978:35:0;;;:::i;9534:369::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9534:369:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9534:369:0;;;;;;;;;;;;;:::i;33501:278::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33501:278:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33501:278:0;-1:-1:-1;;;;;33501:278:0;;:::i;32496:296::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32496:296:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32496:296:0;;:::i;38170:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38170:91:0;;;:::i;38733:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38733:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;38733:110:0;;:::i;5691:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5691:38:0;;;:::i;8620:435::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8620:435:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8620:435:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;8620:435:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8620:435:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8620:435:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8620:435:0;;-1:-1:-1;8620:435:0;;-1:-1:-1;;;;;8620:435:0:i;38079:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38079:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5605:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5605:35:0;;;:::i;32800:348::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32800:348:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;32800:348:0;;;;;;;;;;;;;:::i;6020:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6020:43:0;;;:::i;6250:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6250:47:0;;;:::i;5647:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5647:37:0;;;:::i;6355:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6355:35:0;;;:::i;37797:88::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37797:88:0;;;:::i;30846:128::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30846:128:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30846:128:0;;:::i;6100:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6100:24:0;;;:::i;29926:121::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29926:121:0;;;:::i;38387:103::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38387:103:0;;;:::i;30714:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30714:124:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30714:124:0;;:::i;30252:189::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30252:189:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30252:189:0;-1:-1:-1;;;;;30252:189:0;;:::i;38269:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38269:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;38269:110:0;-1:-1:-1;;;;;38269:110:0;;:::i;7102:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7102:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7102:45:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5933:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5933:38:0;;;:::i;6440:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6440:37:0;;;:::i;6131:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6131:31:0;;;:::i;30449:257::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30449:257:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;30449:257:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6070:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6070:23:0;;;:::i;6304:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6304:44:0;;;:::i;32051:264::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32051:264:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;32051:264:0;;;;;;;;;;;;;;;;;;;;;;:::i;5736:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5736:41:0;;;:::i;37984:87::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37984:87:0;;;:::i;10768:422::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10768:422:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10768:422:0;;;;;;;;:::i;30982:134::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30982:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30982:134:0;;:::i;38851:121::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38851:121:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;38851:121:0;;:::i;7046:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7046:49:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7046:49:0;-1:-1:-1;;;;;7046:49:0;;:::i;27345:2466::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27345:2466:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27345:2466:0;;:::i;5558:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5558:40:0;;;:::i;25005:2332::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25005:2332:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25005:2332:0;;:::i;9063:463::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9063:463:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;9063:463:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;31237:143::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31237:143:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31237:143:0;-1:-1:-1;;;;;31237:143:0;;:::i;38603:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38603:122:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;38603:122:0;;:::i;6397:36::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6397:36:0;;;:::i;30055:189::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30055:189:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30055:189:0;-1:-1:-1;;;;;30055:189:0;;:::i;29819:99::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29819:99:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29819:99:0;-1:-1:-1;;;;;29819:99:0;;:::i;5505:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5505:46:0;;;:::i;10246:356::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10246:356:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10246:356:0;;;;;;;;:::i;11411:236::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11411:236:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11411:236:0;;:::i;31124:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31124:105:0;;;:::i;11198:85::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;33156:337;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33156:337:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33156:337:0;;;;;;;;;;;;;:::i;24661:230::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24661:230:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24661:230:0;;;;;;;;:::i;11291:112::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11291:112:0;;:::i;38498:97::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38498:97:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;38498:97:0;;;;:::i;6169:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6169:28:0;;;:::i;33787:257::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33787:257:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33787:257:0;-1:-1:-1;;;;;33787:257:0;;:::i;6204:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6204:39:0;;;:::i;7154:50::-;;;;;;;;;;;;;:::o;37703:86::-;37773:8;;37703:86;:::o;31388:655::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31491:15;;31480:7;:26;;31472:75;;;;-1:-1:-1;;;;;31472:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31620:7;;31610;;31600;;31590;;31580;;:17;:27;:37;:47;31661:4;31646:19;;31638:57;;;;;-1:-1:-1;;;;;31638:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;31754:4;31743:7;;31733;:17;31732:26;;;;;31723:4;;-1:-1:-1;;;;;31723:4:0;;;31710:18;;;;:12;:18;;;;;;:48;;31732:26;;;;31710:48;;;;;;31802:7;;31782:4;;;;31769:18;;;;;:48;;31813:4;31792:17;;;31791:26;;;31769:48;;;31861:7;;31841:4;;;;31828:18;;;;;:48;;31851:17;;;31850:26;;;31828:48;;;;;31920:7;;31900:4;;;;31887:18;;;;;:48;;31910:17;;;31909:26;;;31887:48;;;;;31979:7;;31959:4;;;;;31946:18;;;;;;:48;;31969:17;;;31968:26;;;;31946:48;;;-1:-1:-1;32007:15:0;:26;;;;;;;;31388:655::o;37893:83::-;37963:5;;;;;;;;;;;;-1:-1:-1;;;;;37963:5:0;;;;37893:83;:::o;32323:165::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32414:3;;-1:-1:-1;;;;;32414:15:0;;;:3;;:15;;32406:49;;;;;-1:-1:-1;;;;;32406:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32466:3;:14;;-1:-1:-1;;;;;;32466:14:0;-1:-1:-1;;;;;32466:14:0;;;;;;;;;;32323:165::o;5978:35::-;;;;:::o;9534:369::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9652:16:0;;;;;;:9;:16;;;;;;9641:27;;;9633:77;;;;-1:-1:-1;;;;;9633:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9721:16:0;;;;;;:9;:16;;;;;;;;:27;;;;;;;9759:14;:21;;;;;;:32;;;;;;9802:16;:27;;;;;;;;9845:50;;;;;;;;;;;;;;;;;;;;;;;;;;9534:369;;;:::o;33501:278::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33595:16;;-1:-1:-1;;;;;33595:28:0;;;:16;;:28;;33587:61;;;;;-1:-1:-1;;;;;33587:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;33691:16;;;-1:-1:-1;;;;;33691:16:0;;;33681:27;;;;:9;:27;;;;;;;33659:19;;;;;;;;:49;;;33729:16;;;;;33719:27;;;:50;;;;;;;;33501:278::o;32496:296::-;32591:10;32578:24;;;;:12;:24;;;;;;32567:35;;;32559:75;;;;;-1:-1:-1;;;;;32559:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32658:10;32645:24;;;;:12;:24;;;;;:35;;;;;;;32691:38;;32673:7;32691:17;:38::i;:::-;32745:39;;;;;;;;32764:10;;32745:39;;;;;;;;;;32496:296;:::o;38170:91::-;38214:7;38241:12;38170:91;:::o;38733:110::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38814:11;:21;38733:110::o;5691:38::-;;;;:::o;8620:435::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8711:6;8706:342;8727:5;:12;8723:1;:16;8706:342;;;8784:3;8761:9;:19;8771:5;8777:1;8771:8;;;;;;;;;;;;;;-1:-1:-1;;;;;8761:19:0;-1:-1:-1;;;;;8761:19:0;;;;;;;;;;;;;:26;;;;;;;;;;;8831:4;8802:15;:25;8818:5;8824:1;8818:8;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8802:25:0;;;;;;;;;;;;;;;;-1:-1:-1;8802:25:0;;;:33;;;;;;;;8860:16;;;;;8850:27;;:9;:27;;;;;:34;;8881:3;8850:34;;;8928:8;;:5;;8934:1;;8928:8;;;;;;;;;;;;-1:-1:-1;;;;;8904:54:0;8921:4;-1:-1:-1;;;;;8904:54:0;-1:-1:-1;;;;;;;;;;;8938:9:0;:19;8948:5;8954:1;8948:8;;;;;;;;;;;;;;-1:-1:-1;;;;;8938:19:0;-1:-1:-1;;;;;8938:19:0;;;;;;;;;;;;;8904:54;;;;;;;;;;;;;;;;;;9003:4;-1:-1:-1;;;;;8978:58:0;8985:5;8991:1;8985:8;;;;;;;;;;;;;;-1:-1:-1;;;;;8978:58:0;;9010:15;:25;9026:5;9032:1;9026:8;;;;;;;;;;;;;;-1:-1:-1;;;;;9010:25:0;-1:-1:-1;;;;;9010:25:0;;;;;;;;;;;;;8978:58;;;;;;;;;;;;;;;;;;8741:3;;8706:342;;;;8620:435;:::o;38079:83::-;38120:5;38079:83;:::o;5605:35::-;5639:1;5605:35;:::o;32800:348::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32946:16;;-1:-1:-1;;;;;32946:16:0;32936:27;;;;:9;:27;;;;;;32925:38;;;32917:74;;;;;-1:-1:-1;;;;;32917:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;33012:16;;-1:-1:-1;;;;;33012:16:0;;;33002:27;;;;:9;:27;;;;;;;;:38;;;;;;;33051:16;;;;;;;;;;:27;;;;;;33094:46;;;;;;;;;;;;;33051:16;;33094:46;;;;;;;;;32800:348;;;:::o;6020:43::-;;;;:::o;6250:47::-;;;;:::o;5647:37::-;;;;:::o;6355:35::-;;;;:::o;37797:88::-;37868:9;;37797:88;:::o;30846:128::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30941:14;:25;30846:128::o;6100:24::-;;;;:::o;29926:121::-;8531:10;29998:7;8516:26;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30024:15:0;;29926:121;:::o;38387:103::-;38469:4;38461:21;38387:103;:::o;30714:124::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30802:17;:28;30714:124::o;30252:189::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30341:21:0;;;;;;:14;:21;;;;;;;;:29;;:21;:29;30333:60;;;;;-1:-1:-1;;;;;30333:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30404:21:0;30428:5;30404:21;;;:14;:21;;;;;:29;;-1:-1:-1;;30404:29:0;;;30252:189::o;38269:110::-;-1:-1:-1;;;;;38353:18:0;;38326:7;38353:18;;;:9;:18;;;;;;38269:110;;;;:::o;7102:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5933:38::-;;;;:::o;6440:37::-;;;;:::o;6131:31::-;;;;;;:::o;30449:257::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30594:4;:12;;-1:-1:-1;;;;;;30594:12:0;;;-1:-1:-1;;;;;30594:12:0;;;;;;;30617:4;:12;;;;;;;;;;;;;;30640:4;:12;;;;;;;;;;;;;;30663:4;:12;;;;;;;;;;;;;30686:4;:12;;;;;;;;;;;;;30449:257::o;6070:23::-;;;;:::o;6304:44::-;;;;:::o;32051:264::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32188:7;:15;;;;32214:7;:15;;;;32240:7;:15;32266:7;:15;32292:7;:15;32051:264::o;5736:41::-;;;;:::o;37984:87::-;38056:7;;;;;;;;;;;;-1:-1:-1;;;;;38056:7:0;;;;37984:87;:::o;10768:422::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10879:22:0;;;;;;:15;:22;;;;;;10868:33;;;10860:85;;;;-1:-1:-1;;;;;10860:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10981:22:0;;;;;;:15;:22;;;;;;;;;;:32;;;10956:57;;11043:9;:16;;;;;;;;:26;;11024:45;;11102:17;;;:27;;;11082:47;;11145:37;;;;;;;11160:4;;11145:37;;;;;;;;;10768:422;;:::o;30982:134::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31075:22;:33;30982:134::o;38851:121::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38937:16;:27;38851:121::o;7046:49::-;;;;;;;;;;;;;:::o;27345:2466::-;27411:7;;27479:23;;:::i;:::-;-1:-1:-1;27518:14:0;;;;27505:28;;;;:12;:28;;;;;;;;27479:54;;;;;;;;;;;;27518:14;27479:54;;;;;;;;;;;;;;;;;;;;;;27582:24;;27479:54;;27582:24;;27660:43;;:135;;27752:15;;:43;;;27660:135;;;27734:15;;27706:43;;27660:135;27619:176;;27820:30;27810:7;:40;27806:475;;;27989:1;27967:8;:17;;;27957:7;:27;27935:8;:17;;;27925:7;27915;:17;:37;27903:7;27892:8;;27888:1;:12;:22;27887:66;:98;27886:104;;;;;;27867:123;;;;;-1:-1:-1;28005:22:0;;-1:-1:-1;;;28005:22:0;27806:475;28062:30;28051:7;:41;28047:234;;;28231:1;28209:8;:17;;;28199:7;:27;28177:8;:17;;;28167:7;28157;:17;:37;28145:7;28134:8;;28130:1;:12;:22;28129:66;:98;28128:104;;;;28047:234;28395:14;;28321:7;;28295:23;;28395:14;;28380:1424;6241:2;28411:17;;;;28380:1424;;28461:15;;;;;;;:12;:15;;;;;;;;;28450:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28524:43:0;;:135;;28616:15;;:43;;;28524:135;;;28598:15;;28570:43;;28524:135;28683:14;;28491:168;;-1:-1:-1;28683:14:0;28678:19;;;28683:14;;28678:19;28674:152;;;28730:8;;28718:20;;28674:152;;;28791:8;:19;;;28779:31;;28674:152;28862:30;28844:15;:48;28840:953;;;29128:1;29106:8;:17;;;29073:30;:50;29051:8;:17;;;29018:30;28985;:63;:83;28950:30;28938:9;28934:1;:13;:46;28933:136;:191;28932:197;;;;;;28913:216;;;;29167:30;29148:49;;;;29244:1;29216:29;;28840:953;;;29291:30;29273:15;:48;29269:524;;;29497:1;29475:8;:17;;;29457:15;:35;29435:8;:17;;;29417:15;29399;:33;:53;29379:15;29367:9;29363:1;:13;:31;29362:91;:131;29361:137;;;;;;29342:156;;;;;-1:-1:-1;29517:22:0;;-1:-1:-1;;;;;;29517:22:0;29269:524;29735:1;29713:8;:17;;;29695:15;:35;29673:8;:17;;;29655:15;29637;:33;:53;29617:15;29605:9;29601:1;:13;:31;29600:91;:131;29599:137;;;;29269:524;28430:3;;28380:1424;;;;27345:2466;;;;;;;;;:::o;5558:40::-;;;;;;;;;;;;;;-1:-1:-1;;;;;5558:40:0;;;;:::o;25005:2332::-;25067:18;;25142:23;;:::i;:::-;-1:-1:-1;25181:11:0;;;;;;;25168:25;;;;:12;:25;;;;;;;;25142:51;;;;;;;;;;;;;25181:11;25142:51;;;;;;;;;;;;;;;;;;;;25239:21;;25360:25;;;;;;;25349:36;;;;;;;;;;;;;;;;;;;;;;;;25239:21;25400:40;;;25396:463;;;25576:1;25554:8;:17;;;25544:7;:27;25522:8;:17;;;25512:7;25502;:17;:37;25490:7;25478:9;;25474:1;:13;:23;25473:67;:99;25472:105;;;;25396:463;25647:30;25636:7;:41;25632:227;;;25813:1;25791:8;:17;;;25781:7;:27;25759:8;:17;;;25749:7;25739;:17;:37;25727:7;25715:9;;25711:1;:13;:23;25710:67;:99;25709:105;;;;25632:227;25973:11;;25898:7;;25871:24;;25973:11;;;;;25958:1372;25986:5;;;;25958:1372;;26024:15;;;;;;;;:12;:15;;;;;;;;;26013:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26133:11;;26013:26;;-1:-1:-1;26087:22:0;;-1:-1:-1;26133:11:0;;;;;;26128:16;26124:212;;;26178:9;;26165:22;;26124:212;;;26303:17;;;;26264:15;;26241:19;;;;26264:35;;;26241:59;:79;;-1:-1:-1;26124:212:0;26373:30;26354:16;:49;26350:969;;;26614:17;;;;26636:1;;26581:50;;;26493:63;;;:83;;;26441:47;;;;;26440:137;:192;26750:19;-1:-1:-1;;26763:5:0;;26750:19;;;;;:12;:19;;;;;:26;26439:198;;;26424:213;;;;;26750:26;-1:-1:-1;26656:50:0;;;;;26350:969;;;26821:30;26802:16;:49;26798:521;;;27006:17;;;;27028:1;;26987:36;;;26927:35;;;:55;;;26889:33;;;;;26888:95;:136;26887:142;;26798:521;27243:17;;;;27265:1;;27224:36;;;27164:35;;;:55;;;27126:33;;;;;27125:95;:136;27124:142;;26798:521;-1:-1:-1;;25993:3:0;25958:1372;;9063:463;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9249:8;:14;;;;9274:9;:15;;;;9300:17;:28;;;;9339:14;:27;;;9377:21;;;9339:27;9377:21;-1:-1:-1;;9339:27:0;;;;-1:-1:-1;;9339:27:0;;;;9377:21;;;;;;;9409:24;:31;9451:21;:28;9490:15;:28;9063:463::o;31237:143::-;8531:10;31324:7;8516:26;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31350:22:0;;;;;:12;:22;;;;;;;31237:143::o;38603:122::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38690:13;:27;38603:122::o;6397:36::-;;;;:::o;30055:189::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30141:21:0;;;;;;:14;:21;;;;;;;;:29;;:21;:29;;30133:64;;;;;-1:-1:-1;;;;;30133:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30208:21:0;;;;;:14;:21;;;;;:28;;-1:-1:-1;;30208:28:0;30232:4;30208:28;;;30055:189::o;29819:99::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29905:4;-1:-1:-1;;;;;29892:18:0;;5505:46;;;;;;;;;;;;;;-1:-1:-1;;;;;5505:46:0;;;;:::o;10246:356::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10351:21:0;;;;;;:14;:21;;;;;;10340:32;;;10332:86;;;;-1:-1:-1;;;;;10332:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10429:21:0;;;;;;:14;:21;;;;;;;;:32;;;;;;;10472:16;:27;;;;;;;10510:9;:16;;;;;;:27;;;;;;10577:16;;10553:41;;;;;;;;;;;;;;;;;;;;;;10246:356;;:::o;11411:236::-;11478:1;11468:7;:11;11460:46;;;;;-1:-1:-1;;;;;11460:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11546:10;11536:21;;;;:9;:21;;;;;;11525:32;;;11517:81;;;;-1:-1:-1;;;;;11517:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11609:28;11617:10;11629:7;11609;:28::i;:::-;11411:236;:::o;31124:105::-;31210:10;31171:7;31197:24;;;:12;:24;;;;;;31124:105;:::o;11198:85::-;11271:4;11198:85;:::o;33156:337::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33299:11;;-1:-1:-1;;;;;33299:11:0;33289:22;;;;:9;:22;;;;;;33278:33;;;33270:69;;;;;-1:-1:-1;;;;;33270:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33350:16:0;;;;;;;:9;:16;;;;;;;;:27;;;;;;33398:11;;;;;33388:22;;;;;;:33;;;;;;;33437:48;;;;;;;;;;;;;33350:16;;33437:48;;;;;;;;;33156:337;;;:::o;24661:230::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24798:16;;-1:-1:-1;;;;;24798:16:0;24786:29;;;;:11;:29;;;;;;24770:45;;;24762:75;;;;;-1:-1:-1;;;;;24762:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24848:19:0;;;;;;;:12;:19;;;;;:35;;;;;;;24661:230::o;11291:112::-;11353:42;11365:10;11377:6;11385:9;11353:11;:42::i;38498:97::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38571:8;:16;;-1:-1:-1;;38571:16:0;;;;;;;;;;38498:97::o;6169:28::-;;;;;;;;;:::o;33787:257::-;8531:10;8516:26;;;;:14;:26;;;;;;;;8508:84;;;;-1:-1:-1;;;;;8508:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33877:11;;-1:-1:-1;;;;;33877:23:0;;;:11;;:23;;33869:56;;;;;-1:-1:-1;;;;;33869:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;33968:11;;;-1:-1:-1;;;;;33968:11:0;;;33958:22;;;;:9;:22;;;;;;;33936:19;;;;;;;;:44;;;34001:11;;;;;33991:22;;;:45;;;;;;;;33787:257::o;6204:39::-;6241:2;6204:39;:::o;37486:209::-;37573:41;;-1:-1:-1;;;;;37573:32:0;;;:41;;;;;37606:7;;37573:41;;;;37606:7;37573:32;:41;;;;;;;37568:120;;37631:45;;-1:-1:-1;;;;;37631:36:0;;;:45;;;;;37668:7;;37631:45;;;;37668:7;37631:36;:45;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37631:45:0;37486:209;;:::o;11655:796::-;11723:18;11744:19;11755:7;11744:10;:19::i;:::-;-1:-1:-1;;;;;11774:16:0;;;;;;:9;:16;;;;;:27;;;;;;;11849:14;;11723:40;;-1:-1:-1;11774:16:0;11834:41;;11869:5;;11834:30;;11723:40;;11834:30;:14;:30;:::i;:::-;:34;:41;:34;:41;:::i;:::-;11812:63;-1:-1:-1;11886:31:0;11920:27;:10;11812:63;11920:27;:14;:27;:::i;:::-;12024:3;;-1:-1:-1;;;;;12024:3:0;;;11958:15;12011:17;;;:12;:17;;;;;;;:28;;11996:4;11990:3;11976:17;;:24;12011:28;;;;;;12115:16;;;;12103:29;;:11;:29;;;;;;:40;;12087:5;12082:2;12068:16;;:24;12103:40;;;;;;12154:15;:52;;12174:21;;;12173:33;;;12154:52;;;12224:39;;;;;;;11886:61;;-1:-1:-1;11976:24:0;;12068;;12248:4;;12224:39;;;;-1:-1:-1;;;;;;;;;;;12224:39:0;;;;;;;12285:8;;12295:9;;12306:17;;12279:45;;;;;;;;;;;;;;;;;;;;;;;;;;;12340:43;;;12364:4;12340:43;;;;;;;;;;;;;;;;;;;;;12394:49;12412:5;12419:23;12394:17;:49::i;:::-;11655:796;;;;;;;:::o;12459:2462::-;12572:11;;12561:7;:22;;12553:63;;;;;-1:-1:-1;;;;;12553:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12666:12;;12645:17;;12635:7;:27;:43;;12627:80;;;;;-1:-1:-1;;;;;12627:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12741:7;12726:12;:22;12718:57;;;;;-1:-1:-1;;;;;12718:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12794:8;;;;12790:274;;;12819:24;12846:58;12858:45;12898:4;12858:35;12870:22;;12858:7;:11;;:35;;;;:::i;:45::-;12846:7;;:58;:11;:58;:::i;:::-;13015:13;;-1:-1:-1;;;;;12989:22:0;;;;;;:15;:22;;;;;;;;;12946:14;:21;;;;;;12927:9;:16;;;;;;12819:85;;-1:-1:-1;12927:40:0;;;;:59;;:84;;;:101;;12919:133;;;;;-1:-1:-1;;;;;12919:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12790:274;;13130:18;;13177:9;;;;13169:42;;;;;-1:-1:-1;;;;;13169:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13224:19;13246:46;13286:5;13246:35;13263:17;;13246:12;:16;;:35;;;;:::i;:46::-;13224:68;-1:-1:-1;13340:26:0;;;13303:34;13402:51;13417:7;13340:26;13402:14;:51::i;:::-;13584:3;;-1:-1:-1;;;;;13584:3:0;;;13464:15;13571:17;;;:12;:17;;;;;;;:28;;13502:4;13496:3;13482:17;;:24;;;13571:28;;;;;;13622:16;;;;;13610:29;;:11;:29;;;;;:40;;13555:5;13549:3;13535:17;;:25;13610:40;;;;;;13661:15;:52;;13681:21;;;13680:33;;;13661:52;;;13763:22;;13377:76;;-1:-1:-1;13482:24:0;;13751:45;;13502:4;13751:35;;:7;;:11;:35::i;:45::-;13881:8;;13724:72;;-1:-1:-1;13840:26:0;;;;13881:8;;13877:821;;;13906:22;13931:54;13980:4;13931:44;13958:16;;13931:22;:26;;:44;;;;:::i;:54::-;14010:16;;-1:-1:-1;;;;;14010:16:0;;;14000:27;;;;:9;:27;;;;;;:47;;;;;;14062:16;;;;;;:59;;14082:39;;;14062:59;;;13906:79;-1:-1:-1;14136:32:0;14072:5;13906:79;14136:9;:32::i;:::-;-1:-1:-1;;;;;14190:74:0;;14207:4;-1:-1:-1;;;;;;;;;;;14221:42:0;:22;14248:14;14221:42;:26;:42;:::i;:::-;14190:74;;;;;;;;;;;;;;;14290:8;;14300:9;;14311:17;;14284:45;;;;;;;;;;;;;;;;;;;;;;;;;;;14349:44;;;;;;;;14371:4;;-1:-1:-1;;;;;14349:44:0;;;;;;;;;;;;13877:821;;;;14440:16;;-1:-1:-1;;;;;14440:16:0;;;14430:27;;;;:9;:27;;;;;;:47;;;;;;14492:16;;;;;;;;;:46;;14512:26;;;14492:46;;;14577:4;-1:-1:-1;;;;;;;;;;;14591:29:0;14512:7;14461:16;14591:29;:11;:29;:::i;:::-;14560:61;;;;;;;;;;;;;;;14647:8;;14657:9;;14668:17;;14641:45;;;;;;;;;;;;;;;;;;;;;;;;;;;13877:821;14713:43;;;14737:4;14713:43;;;;;;;;;;;;;;;;;;;;;14790:26;14773:14;:43;14769:145;;;14833:69;14851:5;14887:14;14858:26;:43;14833:17;:69::i;:::-;12459:2462;;;;;;;;;;;:::o;14931:4647::-;14985:18;;15060:23;;:::i;:::-;-1:-1:-1;15099:11:0;;;;;;;15086:25;;;;:12;:25;;;;;;;;15060:51;;;;;;;;;;;;;15099:11;15060:51;;;;;;;;;;;;;;;;;;;;15157:21;;15278:25;;;;;;;15267:36;;;;;;;;;;;;;;;;;;;;;;;;15157:21;15318:40;;;15314:1752;;;15494:1;15472:8;:17;;;15462:7;:27;15440:8;:17;;;15430:7;15420;:17;:37;15408:7;15396:9;;15392:1;:13;:23;15391:67;:99;15390:105;;;;;15613:17;;;;15524:19;;;;;15548:40;;;;15547:62;;;15524:86;;:106;;;15512:9;:118;15714:1;15680:46;15679:68;;15656:92;;;:112;;;;15645:8;:123;15783:21;:32;;;;;;;;;15830:24;:48;15893:17;:28;;;;;;;-1:-1:-1;15953:11:0;;;;;;;-1:-1:-1;;15936:28:0;;;;;;15390:105;;;;15375:120;;;;;-1:-1:-1;15979:18:0;;-1:-1:-1;15979:18:0;15314:1752;16032:30;16021:7;:41;16017:1049;;;16198:1;16176:8;:17;;;16166:7;:27;16144:8;:17;;;16134:7;16124;:17;:37;16112:7;16100:9;;16096:1;:13;:23;16095:67;:99;16094:105;;;;;16218:11;;16094:105;;;16079:120;;;;;16218:11;;;;;;;:16;16214:765;;;16280:1;16267:15;;;;:12;:15;;:26;;16255:9;:38;;;16312:8;:37;16368:14;:18;;-1:-1:-1;;16368:18:0;;;;;;;16405:21;:25;;;16449:24;:28;16214:765;;;16668:11;;;-1:-1:-1;;16668:11:0;;;;;;;:15;;;16655:29;;;;;;:12;:29;;;;;;:38;;;;16574:36;;16682:1;16530:40;;;;16574:77;;;16530:122;:163;16518:9;:175;16723:25;;;;;;:36;;16712:8;:47;-1:-1:-1;;16778:28:0;;;;;;16825:16;;;;;;;;;;;;-1:-1:-1;;16825:16:0;;;;;;;;;;;16897:11;;;;;;16884:25;;;;:32;16860:21;:56;16935:24;:28;16214:765;-1:-1:-1;;16993:17:0;:28;;;;;;;-1:-1:-1;17043:11:0;-1:-1:-1;17036:18:0;;16017:1049;17180:11;;17105:7;;17078:24;;17180:11;;;;;17165:2406;17193:5;;;;17165:2406;;17231:15;;;;;;;;:12;:15;;;;;;;;;17220:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17340:11;;17220:26;;-1:-1:-1;17294:22:0;;-1:-1:-1;17340:11:0;;;;;;17335:16;17331:212;;;17385:9;;17372:22;;17331:212;;;17510:17;;;;17471:15;;17448:19;;;;17471:35;;;17448:59;:79;;-1:-1:-1;17331:212:0;17580:30;17561:16;:49;17557:2003;;;17821:17;;;;17843:1;;17788:50;;;17700:63;;;:83;;;17648:47;;;;;17647:137;:192;17957:19;-1:-1:-1;;17970:5:0;;17957:19;;;;;:12;:19;;;;;:26;17646:198;;;17631:213;;;;;17957:26;-1:-1:-1;17863:50:0;;;;;17557:2003;;;18028:30;18009:16;:49;18005:1555;;;18213:17;;;;18269:19;;;;;18293:49;;;;18292:71;;;18269:95;;:115;;;18257:9;:127;18472:1;18438:55;;18437:77;;18414:101;;;:121;;;18403:8;:132;18554:21;:73;;;18646:24;:48;;;;18235:1;18715:28;;;;;;;-1:-1:-1;18762:18:0;;-1:-1:-1;;18762:18:0;;;;;;;;-1:-1:-1;;18799:15:0;18762:18;18799:15;;;;;;;;;;;18194:36;;;18134:35;;;:55;;;18096:33;;;;18095:95;:136;;;;18094:142;;;;18079:157;;;;;-1:-1:-1;18833:18:0;;-1:-1:-1;18833:18:0;18005:1555;19028:17;;;;;-1:-1:-1;;19192:5:0;;19179:19;;;;;;;;:12;:19;;;;;19050:1;19179:28;;;;19118:26;;19196:1;19084:30;;;;19118:57;;;19084:92;:123;19072:9;:135;19237:15;;;;;;;;;:26;;;;19226:8;:37;19282:11;:19;;-1:-1:-1;;19282:19:0;;;;;;;;;19357:11;;;;;;19344:25;;;;;:32;19320:21;:56;19395:24;:28;19442;;;;;;;-1:-1:-1;;19489:18:0;;;;;;;19009:36;;;18949:35;;;:55;;;18911:33;;;;;;18910:95;:136;;;;18909:142;;;;18894:157;;;;;-1:-1:-1;19526:18:0;;-1:-1:-1;;19526:18:0;18005:1555;-1:-1:-1;;17200:3:0;17165:2406;;2229:471;2287:7;2532:6;2528:47;;-1:-1:-1;2562:1:0;2555:8;;2528:47;2599:5;;;2603:1;2599;:5;:1;2623:5;;;;;:10;2615:56;;;;-1:-1:-1;;;;;2615:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2691:1;-1:-1:-1;2229:471:0;;;;;:::o;3176:132::-;3234:7;3261:39;3265:1;3268;3261:39;;;;;;;;;;;;;;;;;:3;:39::i;1339:136::-;1397:7;1424:43;1428:1;1431;1424:43;;;;;;;;;;;;;;;;;:3;:43::i;19586:5067::-;19668:22;;19751:23;;:::i;:::-;-1:-1:-1;19790:14:0;;;;19777:28;;;;:12;:28;;;;;;;;19751:54;;;;;;;;;;;;19790:14;19751:54;;;;;;;;;;;;;;;;;;;;;;19854:24;;19751:54;;19854:24;;19932:43;;:135;;20024:15;;:43;;;19932:135;;;20006:15;;19978:43;;19932:135;19891:176;;20092:30;20082:7;:40;20078:1428;;;20261:1;20239:8;:17;;;20229:7;:27;20207:8;:17;;;20197:7;20187;:17;:37;20175:7;20164:8;;20160:1;:12;:22;20159:66;:98;20158:104;;;;;;20139:123;;;;20304:14;20285:15;:33;;20277:86;;;;-1:-1:-1;;;;;20277:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20435:17:0;;;20392:8;;;20404:27;;;20392:40;:60;;;20380:9;:72;20467:51;20535:24;:35;;;;;;;;20585:21;:48;20648:17;:28;;;;;;-1:-1:-1;20705:14:0;;;;;;20691:28;-1:-1:-1;;20691:28:0;;;;;;20741:15;-1:-1:-1;20734:22:0;;20078:1428;20791:30;20780:7;:41;20776:730;;;20960:1;20938:8;:17;;;20928:7;:27;20906:8;:17;;;20896:7;20886;:17;:37;20874:7;20863:8;;20859:1;:12;:22;20858:66;:98;20857:104;;;;;;20838:123;;;;21003:14;20984:15;:33;;20976:86;;;;-1:-1:-1;;;;;20976:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21134:17:0;;;;;21091:8;;;21103:27;;;21091:40;:60;;;;21079:9;:72;21190:14;;;;;;;;:18;;;21177:32;;-1:-1:-1;21177:32:0;;;:12;:32;;;;;:43;;;;21166:54;;;21235:24;:28;;;21302;;;;;;;:35;21278:21;:59;-1:-1:-1;;21352:19:0;;;;21400:14;;;21190;21386:28;-1:-1:-1;;21386:28:0;;;;;;;;;-1:-1:-1;21429:28:0;;;;;;21479:15;-1:-1:-1;21472:22:0;;20776:730;21620:14;;21546:7;;21520:23;;21620:14;;21605:3039;6241:2;21636:17;;;;21605:3039;;21686:15;;;;;;;:12;:15;;;;;;;;;21675:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21749:43:0;;:135;;21841:15;;:43;;;21749:135;;;21823:15;;21795:43;;21749:135;21908:14;;21716:168;;-1:-1:-1;21908:14:0;21903:19;;;21908:14;;21903:19;21899:152;;;21955:8;;21943:20;;21899:152;;;22016:8;:19;;;22004:31;;21899:152;22087:30;22069:15;:48;22065:2568;;;22353:1;22331:8;:17;;;22298:30;:50;22276:8;:17;;;22243:30;22210;:63;:83;22175:30;22163:9;22159:1;:13;:46;22158:136;:191;22157:197;;;;;;22138:216;;;;22400:14;22381:15;:33;;22373:86;;;;-1:-1:-1;;;;;22373:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22497:30;22478:49;;;;22574:1;22546:29;;22065:2568;;;22621:30;22603:15;:48;22599:2034;;;22827:1;22805:8;:17;;;22787:15;:35;22765:8;:17;;;22747:15;22729;:33;:53;22709:15;22697:9;22693:1;:13;:31;22692:91;:131;22691:137;;;;;;22672:156;;;;22874:14;22855:15;:33;;22847:86;;;;-1:-1:-1;;;;;22847:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22956:15;22975:1;22956:20;22952:741;;;-1:-1:-1;;23121:5:0;;23108:19;;;;;;;;:12;:19;;;;;;:28;;;;;23047:26;;23125:1;23013:30;;;;23047:57;;;23013:92;;;:123;;;;23001:9;:135;23218:15;;;;;;;;:24;;;;23170:26;;;;;23200:42;;;23170:73;23159:8;:84;23290:19;;;:26;;23266:21;:50;23339:11;:19;;-1:-1:-1;;23339:19:0;;;;;;;;;;;22952:741;;;23471:17;;;;23432:35;;;23419:49;;:69;;;23407:9;:81;23511:8;:60;23594:21;:39;;;23656:11;:15;;-1:-1:-1;;23656:15:0;;;;;;;;;22952:741;23713:14;:18;;-1:-1:-1;;23713:18:0;;;;;;;;;;;;-1:-1:-1;23750:24:0;:42;-1:-1:-1;;23811:17:0;:28;;;;;;-1:-1:-1;23865:15:0;-1:-1:-1;23858:22:0;;22599:2034;24076:1;24054:8;:17;;;24036:15;:35;24014:8;:17;;;23996:15;23978;:33;:53;23958:15;23946:9;23942:1;:13;:31;23941:91;:131;23940:137;;;;;;23921:156;;;;24123:14;24104:15;:33;;24096:86;;;;-1:-1:-1;;;;;24096:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24265:17;;;;;24226:35;;;24213:49;;;;:69;;;;24201:9;:81;24329:1;24325:5;;;24312:19;;;;;;;;:12;:19;;;;;:30;;;;24301:8;:41;24361:24;:28;;;24432:15;;;;;;;;:22;24408:21;:46;24473:17;:28;;;;;;-1:-1:-1;24520:22:0;;-1:-1:-1;;24520:22:0;;;;-1:-1:-1;;24561:15:0;24520:22;24561:15;;;;;;;;;;-1:-1:-1;24602:15:0;;-1:-1:-1;24595:22:0;;-1:-1:-1;24595:22:0;22599:2034;21655:3;;21605:3039;;;;19586:5067;;;;;;;;;;:::o;10610:150::-;-1:-1:-1;;;;;10680:22:0;;;;;;;:15;:22;;;;;:33;;;;;;10724:17;:28;;;;;;;10610:150::o;3804:278::-;3890:7;3925:12;3918:5;3910:28;;;;-1:-1:-1;;;;;3910:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3910:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3949:9;3965:1;3961;:5;;;;;;;3804:278;-1:-1:-1;;;;;3804:278:0:o;1778:192::-;1864:7;1900:12;1892:6;;;;1884:29;;;;-1:-1:-1;;;;;1884:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1884:29:0;-1:-1:-1;;;1936:5:0;;;1778:192::o;5335:33640::-;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://2107ca4d623de56dad972d0d196ccc3076db7dada87df55252bf6fe6ff9b5238

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

DIGIEX is an open decentralized finance protocol aims to offer digital asset exchange platform. DIGIX Token is a DeFi token with a proposed hypothetical AMM and will be managed by the DIGIEX Community.

Validator Index Block Amount
View All Withdrawals

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

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