ETH Price: $2,014.13 (+4.90%)
Gas: 0.03 Gwei
 

Overview

Max Total Supply

68.829090909090917 MUS

Holders

33

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 15 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
MUSystem

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-08-23
*/

// MUSystem is based of the mathematical algorithm created 
// by the Mavrodi brothers - Sergey and Vyacheslav. 
// The solidity code was written by the enthusiast and devoted MMM participant Andrew from Russia.
// According to these rules MMM worked in Russia in the nineties. 
// Today you help someone — Tomorrow you will be helped out!
// Mutual Uniting System (MUSystem) email: mutualunitingsystem@gmail.com
// http:// Musystem.online
// Hello from Russia with love! ;) Привет из России! ;)
// "MMM IS A FINANCIAL NUCLEAR WEAPON.
// They say Baba Vanga predicted, “Pyramid from Russia will travel the world.”
// When Sergey Mavrodi passed away, many people thought this prediction 
// wasn't going to come true. What if it's just started to materialize?"

// Financial apocalypse is inevitable! Together we can do a lot!
// Thank you Sergey Mavrodi. You've opened my eyes.

pragma solidity ^0.4.21;

library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    if (a == 0) {
      return 0;
    }
    c = a * b;
    assert(c / a == b);
    return c;
  }
  function div(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a / b;
    return c;
  }
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}

contract MUSystem {
    
    using SafeMath for uint;
    
    string public constant name = "Mutual Uniting System";
    string public constant symbol = "MUS";
    uint public constant decimals = 15;
    uint public totalSupply;
    address private creatorOwner;
    address private userAddr;
    mapping (address => uint) balances;
    struct UserWhoBuy {
        uint UserAmt;
        uint UserTokenObtain;
        uint UserBuyDate;
        uint UserBuyFirstDate;
        uint UserBuyTokenPackNum;
        uint UserFirstAmt;
        uint UserContinued;
        uint UserTotalAmtDepositCurrentPack;
    }
    mapping (address => UserWhoBuy) usersWhoBuy;
    address[] private userWhoBuyDatas;
    struct UserWhoSell {
        uint UserAmtWithdrawal;
        uint UserTokenSell;
        uint UserSellDate;
        uint UserSellTokenPackNum;
        uint UserTotalAmtWithdrawal;
        uint UserTotalAmtWithdrawalCurrentPack;
    }
    mapping (address => UserWhoSell) usersWhoSell;
    address[] private userWhoSellDatas;

// The basic parameters of MUSystem that determine 
// the participant's income per package, 
// the initial price of one token, 
// the number of tokens in pack, Disparity mode percentage
// and another internal constants.

    uint private CoMargin = 101; 
    uint private CoOverlap = 110; 
    uint private Disparity = 70; 
    bool private DisparityMode;
    uint private RestartModeDate;
    bool private RestartMode;
    uint private PackVolume = 50;  
    uint private FirstPackTokenPriceSellout = 50;    
    uint private BigAmt = 250 * 1 ether; 
    bool private feeTransfered;
    uint private PrevPrevPackTokenPriceSellout;
    uint private PrevPackTokenPriceSellout;
    uint private PrevPackTokenPriceBuyout; 
    uint private PrevPackDelta; 
    uint private PrevPackCost;
    uint private PrevPackTotalAmt;
    uint private CurrentPackYield;
    uint private CurrentPackDelta;
    uint private CurrentPackCost;
    uint private CurrentPackTotalToPay;
    uint private CurrentPackTotalAmt;
    uint private CurrentPackRestAmt;
    uint private CurrentPackFee;
    uint private CurrentPackTotalToPayDisparity;
    uint private CurrentPackNumber; 
    uint private CurrentPackStartDate; 
    uint private CurrentPackTokenPriceSellout;  
    uint private CurrentPackTokenPriceBuyout;
    uint private CurrentPackTokenAvailablePercent;
    uint private NextPackTokenPriceBuyout; 
    uint private NextPackYield; 
    uint private NextPackDelta;
    uint private userContinued;
    uint private userAmt; 
    uint private userFirstAmt;
    uint private userTotalAmtDepositCurrentPack;
    uint private userBuyFirstDate;
    uint private userTotalAmtWithdrawal;
    uint private userTotalAmtWithdrawalCurrentPack;
    uint private UserTokensReturn;
    bool private returnTokenInCurrentPack;
    uint private withdrawAmtToCurrentPack;
    uint private withdrawAmtAboveCurrentPack;
    uint private UserTokensReturnToCurrentPack;
    uint private UserTokensReturnAboveCurrentPack;
    uint private bonus;
    uint private userAmtOverloadToSend;

// MUSystem is launched at the time of the contract deployment. 
// It all starts with the first package. 
// Settings are applied and the number of tokens is released.

    constructor () public payable {
        creatorOwner = msg.sender;
        PackVolume = (10 ** decimals).mul(PackVolume);
        DisparityMode = false;
        RestartMode = false;
        CurrentPackNumber = 1; 
        CurrentPackStartDate = now;
        mint(PackVolume);
        packSettings(CurrentPackNumber);
    }

// Write down participants who make deposits.

    function addUserWhoBuy (
    address _address, 
    uint _UserAmt, 
    uint _UserTokenObtain, 
    uint _UserBuyDate,
    uint _UserBuyFirstDate,
    uint _UserBuyTokenPackNum,
    uint _UserFirstAmt,
    uint _UserContinued,
    uint _UserTotalAmtDepositCurrentPack) internal {
        UserWhoBuy storage userWhoBuy = usersWhoBuy[_address];
        userWhoBuy.UserAmt = _UserAmt;
        userWhoBuy.UserTokenObtain = _UserTokenObtain;
        userWhoBuy.UserBuyDate = _UserBuyDate;
        userWhoBuy.UserBuyFirstDate = _UserBuyFirstDate;
        userWhoBuy.UserBuyTokenPackNum = _UserBuyTokenPackNum;
        userWhoBuy.UserFirstAmt = _UserFirstAmt;
        userWhoBuy.UserContinued = _UserContinued;
        userWhoBuy.UserTotalAmtDepositCurrentPack = _UserTotalAmtDepositCurrentPack;
        userWhoBuyDatas.push(_address) -1;
    }
// Write down also participants who make withdrawals.

    function addUserWhoSell (
    address _address, 
    uint _UserAmtWithdrawal, 
    uint _UserTokenSell, 
    uint _UserSellDate,
    uint _UserSellTokenPackNum,
    uint _UserTotalAmtWithdrawal,
    uint _UserTotalAmtWithdrawalCurrentPack) internal {
        UserWhoSell storage userWhoSell = usersWhoSell[_address];
        userWhoSell.UserAmtWithdrawal = _UserAmtWithdrawal;
        userWhoSell.UserTokenSell = _UserTokenSell;
        userWhoSell.UserSellDate = _UserSellDate;
        userWhoSell.UserSellTokenPackNum = _UserSellTokenPackNum;
        userWhoSell.UserTotalAmtWithdrawal = _UserTotalAmtWithdrawal; 
        userWhoSell.UserTotalAmtWithdrawalCurrentPack = _UserTotalAmtWithdrawalCurrentPack;
        userWhoSellDatas.push(_address) -1;
    }

// Calculation of pack's parameters "on the fly". 
// Course (price) of tokens is growing by a special technique, 
// which designed increases with the passage of time the size 
// of a possible return donations for the participants, 
// subject to a maximum system stability.

    function packSettings (uint _currentPackNumber) internal {
        CurrentPackNumber = _currentPackNumber;
        if(CurrentPackNumber == 1){
            PrevPackDelta = 0;
            PrevPackCost = 0;
            PrevPackTotalAmt = 0;
            CurrentPackStartDate = now;
            CurrentPackTokenPriceSellout = FirstPackTokenPriceSellout;
            CurrentPackTokenPriceBuyout = FirstPackTokenPriceSellout; 
            CurrentPackCost = PackVolume.mul(CurrentPackTokenPriceSellout);
            CurrentPackTotalToPay = 0;
            CurrentPackTotalToPayDisparity = 0;
            CurrentPackYield = 0;
            CurrentPackDelta = 0;
            CurrentPackTotalAmt = CurrentPackCost;
            CurrentPackFee = 0;
            CurrentPackRestAmt = CurrentPackCost.sub(CurrentPackTotalToPay);
            if (FirstPackTokenPriceSellout == 50){NextPackTokenPriceBuyout = 60;}else{NextPackTokenPriceBuyout = FirstPackTokenPriceSellout+5;}
        }
        if(CurrentPackNumber == 2){
            PrevPrevPackTokenPriceSellout = 0;
            PrevPackTokenPriceSellout = CurrentPackTokenPriceSellout;
            PrevPackTokenPriceBuyout = CurrentPackTokenPriceBuyout;
            PrevPackDelta = CurrentPackDelta;
            PrevPackCost = CurrentPackCost;
            PrevPackTotalAmt = CurrentPackTotalAmt;
            CurrentPackYield = 0;
            CurrentPackDelta = 0;
            NextPackTokenPriceBuyout = PrevPackTokenPriceSellout.mul(CoOverlap).div(100);
            NextPackYield = NextPackTokenPriceBuyout.sub(PrevPackTokenPriceSellout);
            NextPackDelta = NextPackYield;
            CurrentPackTokenPriceSellout = NextPackTokenPriceBuyout.add(NextPackDelta);
            CurrentPackTokenPriceBuyout = CurrentPackTokenPriceSellout;
            CurrentPackCost = PackVolume.mul(CurrentPackTokenPriceSellout);
            CurrentPackTotalToPay = 0;
            CurrentPackTotalAmt = CurrentPackCost.add(PrevPackTotalAmt);
            CurrentPackFee = 0;
            CurrentPackTotalToPayDisparity = PrevPackCost.mul(Disparity).div(100);
            CurrentPackRestAmt = CurrentPackCost.sub(CurrentPackTotalToPay);
        }
        if(CurrentPackNumber > 2){
            PrevPackTokenPriceSellout = CurrentPackTokenPriceSellout;
            PrevPackTokenPriceBuyout = CurrentPackTokenPriceBuyout;
            PrevPackDelta = CurrentPackDelta;
            PrevPackCost = CurrentPackCost;
            PrevPackTotalAmt = CurrentPackTotalAmt;
            CurrentPackYield = NextPackYield;
            CurrentPackDelta = NextPackDelta;
            CurrentPackTokenPriceBuyout = NextPackTokenPriceBuyout;
            NextPackTokenPriceBuyout = PrevPackTokenPriceSellout.mul(CoOverlap);
            if(NextPackTokenPriceBuyout<=100){  
                NextPackTokenPriceBuyout=PrevPackTokenPriceSellout.mul(CoOverlap).div(100);
            }
            if(NextPackTokenPriceBuyout>100){ 
                NextPackTokenPriceBuyout=NextPackTokenPriceBuyout*10**3;
                NextPackTokenPriceBuyout=((NextPackTokenPriceBuyout/10000)+5)/10;
            }
            NextPackYield = NextPackTokenPriceBuyout.sub(PrevPackTokenPriceSellout);
            NextPackDelta = NextPackYield.mul(CoMargin);
            if(NextPackDelta <= 100){ 
                NextPackDelta = CurrentPackDelta.add(NextPackYield.mul(CoMargin).div(100));
            }
            if(NextPackDelta > 100){
                NextPackDelta = NextPackDelta*10**3;
                NextPackDelta = ((NextPackDelta/10000)+5)/10;
                NextPackDelta = CurrentPackDelta.add(NextPackDelta);
            }
            CurrentPackTokenPriceSellout = NextPackTokenPriceBuyout.add(NextPackDelta);
            CurrentPackCost = PackVolume.mul(CurrentPackTokenPriceSellout);
            CurrentPackTotalToPay = PackVolume.mul(CurrentPackTokenPriceBuyout);
            CurrentPackTotalToPayDisparity = PrevPackCost.mul(Disparity).div(100);
            CurrentPackRestAmt = CurrentPackCost.sub(CurrentPackTotalToPay);
            CurrentPackTotalAmt = CurrentPackRestAmt.add(PrevPackTotalAmt);
            CurrentPackFee = PrevPackTotalAmt.sub(CurrentPackTotalToPay).sub(CurrentPackTotalToPayDisparity);
        }
        CurrentPackTokenAvailablePercent = balances[address(this)].mul(100).div(PackVolume);
        emit NextPack(CurrentPackTokenPriceSellout, CurrentPackTokenPriceBuyout);
    }

// The data of the current package can be obtained 
// by performing this function.
// Available tokens - the remaining number of available 
// tokens in the current package. 
// At onetime you can not buy more than this number of tokens.
// Available tokens in percentage - the percentage of 
// remaining available tokens in the current package.
// Available amount to deposit in wei - the maximum amount 
// that can be deposited in the current package.
// Attempt to exceed this amount too much 
// (i.e., an attempt to buy more tokens than the Available tokens 
// in the current package) will be rejected. 
// In case of a small excess of the amount, the unused leftover 
// will return to your Ethereum account.
// Current pack token price sellout -  the price at which 
// tokens are bought by a participant.
// Current pack token price buyout - the price at which 
// tokens are sold by a participant (are bought by the system).

    function aboutCurrentPack () public constant returns (uint availableTokens, uint availableTokensInPercentage, uint availableAmountToDepositInWei, uint tokenPriceSellout, uint tokenPriceBuyout){
        uint _availableTokens = balances[address(this)];
        uint _availableAmountToDepositInWei = _availableTokens.mul(CurrentPackTokenPriceSellout);
        return (_availableTokens, CurrentPackTokenAvailablePercent, _availableAmountToDepositInWei, CurrentPackTokenPriceSellout, CurrentPackTokenPriceBuyout);
    }

// Move to the next package. Sending a reward to the owner. 
// Minting of new tokens.

    function nextPack (uint _currentPackNumber) internal { 
        transferFee();
        feeTransfered = false;
        CurrentPackNumber=_currentPackNumber.add(1);
        CurrentPackStartDate = now;
        mint(PackVolume);
        packSettings(CurrentPackNumber);
    }

// Restart occurs if the Disparity mode is enabled and 
// there were no new donations within 14 days. 
// Everything will start with the first package. 
// After restart, the system saves the participant's tokens. 
// Moreover, by participating from the very beginning 
// (starting from the first package of the new cycle), 
// the participant can easily compensate for his 
// insignificant losses. And quickly achieve a good profit!

    function restart(bool _dm)internal{
        if(_dm==true){if(RestartMode==false){RestartMode=true;RestartModeDate=now;}
            else{if(now>RestartModeDate+14*1 days){RestartMode=false;DisparityMode=false;nextPack(0);}}}
        else{if(RestartMode==true){RestartMode=false;RestartModeDate=0;}}
    }

// Sending reward to the owner. 
// No more and no less - just as much as it does not hurt. 
// Exactly as much as provided by the algorithm.

    function transferFee()internal{
        if(CurrentPackNumber > 2 && feeTransfered == false){
            if(address(this).balance>=CurrentPackFee){
                creatorOwner.transfer(CurrentPackFee);
                feeTransfered = true;
            }
        }
    }

// Receiving a donation and calculating the number of participant tokens. 
// Bonuses, penalties.

    function deposit() public payable returns (uint UserTokenObtain){ 
        require(msg.sender != 0x0 && msg.sender != 0);
        require(msg.value < BigAmt); 
        uint availableTokens = balances[address(this)];
        require(msg.value <= availableTokens.mul(CurrentPackTokenPriceSellout).add(availableTokens.mul(CurrentPackTokenPriceSellout).mul(10).div(100)).add(10*1 finney)); 
        require(msg.value.div(CurrentPackTokenPriceSellout) > 0);
        userAddr = msg.sender;
        userAmt = msg.value;
        if(usersWhoBuy[userAddr].UserBuyTokenPackNum == CurrentPackNumber){
            userTotalAmtDepositCurrentPack = usersWhoBuy[userAddr].UserTotalAmtDepositCurrentPack;
        }
        else{
            userTotalAmtDepositCurrentPack = 0;
        }
        if(usersWhoBuy[userAddr].UserBuyTokenPackNum == CurrentPackNumber){
            require(userTotalAmtDepositCurrentPack.add(userAmt) < BigAmt);
        }

// If the participant making a donation in the current package 
// has already received a backward donation in the same package, 
// the amount of the new donation is reduced by 5% of the amount
// of the received donation; a kind of "penalty" is imposed in 
// the amount of 5% of the amount received earlier 
// by the participant in the same package.

        if(usersWhoSell[userAddr].UserSellTokenPackNum == CurrentPackNumber){
            uint penalty = usersWhoSell[userAddr].UserTotalAmtWithdrawalCurrentPack.mul(5).div(100);
            userAmt = userAmt.sub(penalty);
            require(userAmt.div(CurrentPackTokenPriceSellout) > 0);
            penalty=0;
        }
        UserTokenObtain = userAmt.div(CurrentPackTokenPriceSellout);
        bonus = 0;

// Participants who made donation amounting to at least  0.1 ether:
// In the 1st day of the current package is entitled to receive 
// the amount of possible backward donation to 0.75% more than usual.
// In the 2nd day of the current package - 0.5% more than usual.
// In the 3rd day of the current package - 0.25% more than usual.

        if(userAmt >= 100*1 finney){
            if(now <= (CurrentPackStartDate + 1*1 days)){
                bonus = UserTokenObtain.mul(75).div(10000);
            }
            if(now > (CurrentPackStartDate + 1*1 days) && now <= (CurrentPackStartDate + 2*1 days)){
                bonus = UserTokenObtain.mul(50).div(10000);
            }
            if(now > (CurrentPackStartDate + 2*1 days) && now <= (CurrentPackStartDate + 3*1 days)){
                bonus = UserTokenObtain.mul(25).div(10000);
            }
        }

// For continuous long-time participation, 
// starting from the second week of participation 
// (starting from the 4th participation package), 
// bonus incentives for the continuous participation 
// of 1% of the contributed amount for each subsequent 
// "own" package are accrued for the participant.

        if(userContinued > 4 && now > (userBuyFirstDate + 1 * 1 weeks)){
            bonus = bonus.add(UserTokenObtain.mul(1).div(100));
        }
        UserTokenObtain = UserTokenObtain.add(bonus);  
        if(UserTokenObtain > availableTokens){
            userAmtOverloadToSend = CurrentPackTokenPriceSellout.mul(UserTokenObtain.sub(availableTokens)); 
            transfer(address(this), userAddr, availableTokens);
            UserTokenObtain = availableTokens;
            if(address(this).balance>=userAmtOverloadToSend){
                userAddr.transfer(userAmtOverloadToSend);
            }
        }                
        else{                 
            transfer(address(this), userAddr, UserTokenObtain);
        }
        if(usersWhoBuy[userAddr].UserBuyTokenPackNum == 0){
            userFirstAmt = userAmt;
            userBuyFirstDate = now;
        }
        else{
            userFirstAmt = usersWhoBuy[userAddr].UserFirstAmt;
            userBuyFirstDate = usersWhoBuy[userAddr].UserBuyFirstDate;
        }
        if(usersWhoBuy[userAddr].UserContinued == 0){
            userContinued = 1;
        }
        else{
            if(usersWhoBuy[userAddr].UserBuyTokenPackNum == CurrentPackNumber.sub(1)){
                userContinued = userContinued.add(1);
            }
            else{
                userContinued = 1;
            }
        }
        userTotalAmtDepositCurrentPack = userTotalAmtDepositCurrentPack.add(userAmt);
        addUserWhoBuy(userAddr, userAmt, UserTokenObtain, now, userBuyFirstDate, CurrentPackNumber, userFirstAmt, userContinued, userTotalAmtDepositCurrentPack);
        CurrentPackTokenAvailablePercent = balances[address(this)].mul(100).div(PackVolume);
        bonus = 0;
        availableTokens = 0;
        userAmtOverloadToSend = 0;
        userAddr = 0;
        userAmt = 0;
        restart(false);
        DisparityMode = false;

// Move to the next pack, if all the tokens of the current one are over.

        if(balances[address(this)] == 0){nextPack(CurrentPackNumber);}
        return UserTokenObtain;
    } 

// And here the participant decided to sell his tokens (some or all at once) and sends us his withdrawal request.

    function withdraw(uint WithdrawAmount, uint WithdrawTokens) public returns (uint withdrawAmt){
        require(msg.sender != 0x0 && msg.sender != 0);
        require(WithdrawTokens > 0 || WithdrawAmount > 0);
        require(WithdrawTokens<=balances[msg.sender]); 
        require(WithdrawAmount.mul(1 finney)<=balances[msg.sender].mul(CurrentPackTokenPriceSellout).add(balances[msg.sender].mul(CurrentPackTokenPriceSellout).mul(5).div(100)));

// If the normal work is braked then Disparity mode is turning on.
// If Disparity mode is already enabled, then we check whether it's time to restart.

        if(RestartMode==true){restart(true);}
        if(address(this).balance<=CurrentPackTotalToPayDisparity){
            DisparityMode=true;}else{DisparityMode=false;}

// The participant can apply at any time for the selling 
// his tokens at the buyout price of the last realized (current) package.
// Let calculate how much tokens are returned in the current package, 
// and how much was purchased earlier.

        userTotalAmtWithdrawal = usersWhoSell[msg.sender].UserTotalAmtWithdrawal;
        if(usersWhoSell[msg.sender].UserSellTokenPackNum == CurrentPackNumber){
            userTotalAmtWithdrawalCurrentPack = usersWhoSell[msg.sender].UserTotalAmtWithdrawalCurrentPack;
        }
        else{
            userTotalAmtWithdrawalCurrentPack = 0;
        }
        if(usersWhoBuy[msg.sender].UserBuyTokenPackNum == CurrentPackNumber && userTotalAmtWithdrawalCurrentPack < usersWhoBuy[msg.sender].UserTotalAmtDepositCurrentPack){
            returnTokenInCurrentPack = true;
            withdrawAmtToCurrentPack = usersWhoBuy[msg.sender].UserTotalAmtDepositCurrentPack.sub(userTotalAmtWithdrawalCurrentPack);
        }
        else{ 
            returnTokenInCurrentPack = false;
        }
        if(WithdrawAmount > 0){
            withdrawAmt = WithdrawAmount.mul(1 finney);
            if(returnTokenInCurrentPack == true){
                UserTokensReturnToCurrentPack = withdrawAmtToCurrentPack.div(CurrentPackTokenPriceSellout);
                if(withdrawAmt>withdrawAmtToCurrentPack){ 
                    withdrawAmtAboveCurrentPack = withdrawAmt.sub(withdrawAmtToCurrentPack);
                    UserTokensReturnAboveCurrentPack = withdrawAmtAboveCurrentPack.div(CurrentPackTokenPriceBuyout);
                } 
                else{
                    withdrawAmtToCurrentPack = withdrawAmt;
                    UserTokensReturnToCurrentPack = withdrawAmtToCurrentPack.div(CurrentPackTokenPriceSellout);
                    withdrawAmtAboveCurrentPack = 0;
                    UserTokensReturnAboveCurrentPack = 0;
                }
            }
            else{
                withdrawAmtToCurrentPack = 0;
                UserTokensReturnToCurrentPack = 0;
                withdrawAmtAboveCurrentPack = withdrawAmt;
                UserTokensReturnAboveCurrentPack = withdrawAmtAboveCurrentPack.div(CurrentPackTokenPriceBuyout);
            }
        }
        else{
            UserTokensReturn = WithdrawTokens;
            if(returnTokenInCurrentPack == true){
                UserTokensReturnToCurrentPack = withdrawAmtToCurrentPack.div(CurrentPackTokenPriceSellout);
                if(UserTokensReturn>UserTokensReturnToCurrentPack){
                    UserTokensReturnAboveCurrentPack = UserTokensReturn.sub(UserTokensReturnToCurrentPack);
                    withdrawAmtAboveCurrentPack = UserTokensReturnAboveCurrentPack.mul(CurrentPackTokenPriceBuyout);
                }
                else{
                    withdrawAmtToCurrentPack = UserTokensReturn.mul(CurrentPackTokenPriceSellout);
                    UserTokensReturnToCurrentPack = UserTokensReturn;
                    withdrawAmtAboveCurrentPack = 0;
                    UserTokensReturnAboveCurrentPack = 0;
                }
            }
            else{
                withdrawAmtToCurrentPack = 0;
                UserTokensReturnToCurrentPack = 0;
                UserTokensReturnAboveCurrentPack = UserTokensReturn;
                withdrawAmtAboveCurrentPack = UserTokensReturnAboveCurrentPack.mul(CurrentPackTokenPriceBuyout);
            }    
        }
        withdrawAmt = withdrawAmtToCurrentPack.add(withdrawAmtAboveCurrentPack);

// When applying for a donation, if the remaining number 
// of available tokens of the current package is less than 10%, 
// participants are entitled to withdraw of 1% more than usual.

        if(balances[address(this)]<=(PackVolume.mul(10).div(100))){
            withdrawAmtAboveCurrentPack = withdrawAmtAboveCurrentPack.add(withdrawAmt.mul(1).div(100));
        }

// With each withdrawal, the system checks the total balance 
// and if the system is on the verge, when it can pay to each participant 
// 70% of his initial donation, the protection mode called "Disparity mode" is activated.
// In disparity mode: participant who made a donation in the current package 
// can withdraw up to 100% of his initial donation amount,
// participant who made a donation earlier (in previous packs) 
// can withdraw up to 70% of his initial donation amount.

        if(address(this).balance<CurrentPackTotalToPayDisparity || withdrawAmt > address(this).balance || DisparityMode == true){
            uint disparityAmt = usersWhoBuy[msg.sender].UserFirstAmt.mul(Disparity).div(100);
            if(userTotalAmtWithdrawal >= disparityAmt){
                withdrawAmtAboveCurrentPack = 0;
                UserTokensReturnAboveCurrentPack = 0;
            }
            else{
                if(withdrawAmtAboveCurrentPack.add(userTotalAmtWithdrawal) >= disparityAmt){
                    withdrawAmtAboveCurrentPack = disparityAmt.sub(userTotalAmtWithdrawal);
                    UserTokensReturnAboveCurrentPack = withdrawAmtAboveCurrentPack.div(CurrentPackTokenPriceBuyout);
                }
            }
            DisparityMode = true;
            if(CurrentPackNumber>2){restart(true);}
        }
        if(withdrawAmt>address(this).balance){
            withdrawAmt = address(this).balance;
            withdrawAmtAboveCurrentPack = address(this).balance.sub(withdrawAmtToCurrentPack);
            UserTokensReturnAboveCurrentPack = withdrawAmtAboveCurrentPack.div(CurrentPackTokenPriceBuyout);
            if(CurrentPackNumber>2){restart(true);}
        }
        withdrawAmt = withdrawAmtToCurrentPack.add(withdrawAmtAboveCurrentPack);
        UserTokensReturn = UserTokensReturnToCurrentPack.add(UserTokensReturnAboveCurrentPack);
        require(UserTokensReturn<=balances[msg.sender]); 
        transfer(msg.sender, address(this), UserTokensReturn);
        msg.sender.transfer(withdrawAmt);
        userTotalAmtWithdrawal = userTotalAmtWithdrawal.add(withdrawAmt);
        userTotalAmtWithdrawalCurrentPack = userTotalAmtWithdrawalCurrentPack.add(withdrawAmt);
        addUserWhoSell(msg.sender, withdrawAmt, UserTokensReturn, now, CurrentPackNumber, userTotalAmtWithdrawal, userTotalAmtWithdrawalCurrentPack);
        CurrentPackTokenAvailablePercent = balances[address(this)].mul(100).div(PackVolume);
        withdrawAmtToCurrentPack = 0;
        withdrawAmtAboveCurrentPack = 0;
        UserTokensReturnToCurrentPack = 0;
        UserTokensReturnAboveCurrentPack = 0;
        return withdrawAmt;
    }

// If tokens purchased in the current package are returned, 
// they are again available for purchase by other participants.
// If tokens purchased in previous packages are returned, 
// then such tokens are no longer available to anyone.

    function transfer(address _from, address _to, uint _value) internal returns (bool success) {
        balances[_from] = balances[_from].sub(_value); 
        if(_to == address(this)){ 
            if(returnTokenInCurrentPack == true){
                balances[_to] = balances[_to].add(UserTokensReturnToCurrentPack);
            }
            else{
                balances[_to] = balances[_to];
            }
            totalSupply = totalSupply.sub(UserTokensReturnAboveCurrentPack);
        }
        else{
            balances[_to] = balances[_to].add(_value);
        }
        emit Transfer(_from, _to, _value); 
        return true;
    }  

// BalanceOf — get balance of tokens.

    function balanceOf(address tokenOwner) public constant returns (uint balance) {
        return balances[tokenOwner];
    }

// Minting new tokens if the moving to a new package occurred.

    function mint(uint _value) internal returns (bool) {
        balances[address(this)] = balances[address(this)].add(_value);
        totalSupply = totalSupply.add(_value);
        return true;
    }

    event Transfer(address indexed _from, address indexed _to, uint _value);
    event NextPack(uint indexed CurrentPackTokenPriceSellout, uint indexed CurrentPackTokenPriceBuyout);
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"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":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"WithdrawAmount","type":"uint256"},{"name":"WithdrawTokens","type":"uint256"}],"name":"withdraw","outputs":[{"name":"withdrawAmt","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","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":"deposit","outputs":[{"name":"UserTokenObtain","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"aboutCurrentPack","outputs":[{"name":"availableTokens","type":"uint256"},{"name":"availableTokensInPercentage","type":"uint256"},{"name":"availableAmountToDepositInWei","type":"uint256"},{"name":"tokenPriceSellout","type":"uint256"},{"name":"tokenPriceBuyout","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"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":"CurrentPackTokenPriceSellout","type":"uint256"},{"indexed":true,"name":"CurrentPackTokenPriceBuyout","type":"uint256"}],"name":"NextPack","type":"event"}]

60806040526065600855606e6009556046600a556032600e556032600f55680d8d726b7177a8000060105533600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000094600e54600f600a0a6200011e6401000000000262001a98179091906401000000009004565b600e819055506000600b60006101000a81548160ff0219169083151502179055506000600d60006101000a81548160ff021916908315150217905550600160208190555042602181905550620000fb600e546200015a640100000000026401000000009004565b506200011860205462000235640100000000026401000000009004565b62000a21565b60008083141562000133576000905062000154565b81830290508183828115156200014557fe5b041415156200015057fe5b8090505b92915050565b6000620001be82600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009d06401000000000262001ae9179091906401000000009004565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200022682600054620009d06401000000000262001ae9179091906401000000009004565b60008190555060019050919050565b80602081905550600160205414156200032c5760006015819055506000601681905550600060178190555042602181905550600f54602281905550600f54602381905550620002a0602254600e546200011e6401000000000262001a98179091906401000000009004565b601a819055506000601b819055506000601f8190555060006018819055506000601981905550601a54601c819055506000601e81905550620002fe601b54601a54620009ed6401000000000262001bef179091906401000000009004565b601d819055506032600f5414156200031e57603c6025819055506200032b565b6005600f54016025819055505b5b6002602054141562000521576000601281905550602254601381905550602354601481905550601954601581905550601a54601681905550601c5460178190555060006018819055506000601981905550620003c76064620003aa6009546013546200011e6401000000000262001a98179091906401000000009004565b62000a076401000000000262001ad0179091906401000000009004565b602581905550620003f4601354602554620009ed6401000000000262001bef179091906401000000009004565b6026819055506026546027819055506200042a602754602554620009d06401000000000262001ae9179091906401000000009004565b60228190555060225460238190555062000460602254600e546200011e6401000000000262001a98179091906401000000009004565b601a819055506000601b8190555062000495601754601a54620009d06401000000000262001ae9179091906401000000009004565b601c819055506000601e81905550620004ed6064620004d0600a546016546200011e6401000000000262001a98179091906401000000009004565b62000a076401000000000262001ad0179091906401000000009004565b601f819055506200051a601b54601a54620009ed6401000000000262001bef179091906401000000009004565b601d819055505b600260205411156200090e57602254601381905550602354601481905550601954601581905550601a54601681905550601c546017819055506026546018819055506027546019819055506025546023819055506200059c6009546013546200011e6401000000000262001a98179091906401000000009004565b60258190555060646025541115156200060057620005f96064620005dc6009546013546200011e6401000000000262001a98179091906401000000009004565b62000a076401000000000262001ad0179091906401000000009004565b6025819055505b6064602554111562000641576103e860255402602581905550600a60056127106025548115156200062d57fe5b04018115156200063957fe5b046025819055505b62000668601354602554620009ed6401000000000262001bef179091906401000000009004565b602681905550620006956008546026546200011e6401000000000262001a98179091906401000000009004565b60278190555060646027541115156200071d5762000716620006f66064620006d96008546026546200011e6401000000000262001a98179091906401000000009004565b62000a076401000000000262001ad0179091906401000000009004565b601954620009d06401000000000262001ae9179091906401000000009004565b6027819055505b606460275411156200078b576103e860275402602781905550600a60056127106027548115156200074a57fe5b04018115156200075657fe5b0460278190555062000784602754601954620009d06401000000000262001ae9179091906401000000009004565b6027819055505b620007b2602754602554620009d06401000000000262001ae9179091906401000000009004565b602281905550620007df602254600e546200011e6401000000000262001a98179091906401000000009004565b601a819055506200080c602354600e546200011e6401000000000262001a98179091906401000000009004565b601b819055506200085c60646200083f600a546016546200011e6401000000000262001a98179091906401000000009004565b62000a076401000000000262001ad0179091906401000000009004565b601f8190555062000889601b54601a54620009ed6401000000000262001bef179091906401000000009004565b601d81905550620008b6601754601d54620009d06401000000000262001ae9179091906401000000009004565b601c8190555062000907601f54620008ea601b54601754620009ed6401000000000262001bef179091906401000000009004565b620009ed6401000000000262001bef179091906401000000009004565b601e819055505b62000995600e54620009786064600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200011e6401000000000262001a98179091906401000000009004565b62000a076401000000000262001ad0179091906401000000009004565b6024819055506023546022547f80123097a76fe2b82a8a76c7c41e432f73fce3311a85c3ca296fdfa52f6d57d860405160405180910390a350565b60008183019050828110151515620009e457fe5b80905092915050565b6000828211151515620009fc57fe5b818303905092915050565b6000818381151562000a1557fe5b04905080905092915050565b6128dc8062000a316000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461009357806318160ddd14610123578063313ce5671461014e578063441a3e701461017957806370a08231146101c457806395d89b411461021b578063d0e30db0146102ab578063d89fec58146102c9575b600080fd5b34801561009f57600080fd5b506100a8610310565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100e85780820151818401526020810190506100cd565b50505050905090810190601f1680156101155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561012f57600080fd5b50610138610349565b6040518082815260200191505060405180910390f35b34801561015a57600080fd5b5061016361034f565b6040518082815260200191505060405180910390f35b34801561018557600080fd5b506101ae6004803603810190808035906020019092919080359060200190929190505050610354565b6040518082815260200191505060405180910390f35b3480156101d057600080fd5b50610205600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e6b565b6040518082815260200191505060405180910390f35b34801561022757600080fd5b50610230610eb4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610270578082015181840152602081019050610255565b50505050905090810190601f16801561029d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b3610eed565b6040518082815260200191505060405180910390f35b3480156102d557600080fd5b506102de611a16565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b6040805190810160405280601581526020017f4d757475616c20556e6974696e672053797374656d000000000000000000000081525081565b60005481565b600f81565b60008060003373ffffffffffffffffffffffffffffffffffffffff1614158015610395575060003373ffffffffffffffffffffffffffffffffffffffff1614155b15156103a057600080fd5b60008311806103af5750600084115b15156103ba57600080fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115151561040857600080fd5b6104e761048560646104776005610469602254600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9890919063ffffffff16565b611a9890919063ffffffff16565b611ad090919063ffffffff16565b6104d9602254600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9890919063ffffffff16565b611ae990919063ffffffff16565b61050166038d7ea4c6800086611a9890919063ffffffff16565b1115151561050e57600080fd5b60011515600d60009054906101000a900460ff1615151415610535576105346001611b05565b5b601f543073ffffffffffffffffffffffffffffffffffffffff1631111515610577576001600b60006101000a81548160ff021916908315150217905550610593565b6000600b60006101000a81548160ff0219169083151502179055505b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154602d81905550602054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154141561067657600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154602e8190555061067f565b6000602e819055505b602054600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401541480156107155750600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154602e54105b15610797576001603060006101000a81548160ff02191690831515021790555061078c602e54600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154611bef90919063ffffffff16565b6031819055506107b3565b6000603060006101000a81548160ff0219169083151502179055505b60008411156108cc576107d666038d7ea4c6800085611a9890919063ffffffff16565b915060011515603060009054906101000a900460ff16151514156108925761080b602254603154611ad090919063ffffffff16565b6033819055506031548211156108585761083060315483611bef90919063ffffffff16565b60328190555061084d602354603254611ad090919063ffffffff16565b60348190555061088d565b81603181905550610876602254603154611ad090919063ffffffff16565b603381905550600060328190555060006034819055505b6108c7565b60006031819055506000603381905550816032819055506108c0602354603254611ad090919063ffffffff16565b6034819055505b6109cb565b82602f8190555060011515603060009054906101000a900460ff161515141561099357610906602254603154611ad090919063ffffffff16565b603381905550603354602f5411156109575761092f603354602f54611bef90919063ffffffff16565b60348190555061094c602354603454611a9890919063ffffffff16565b60328190555061098e565b61096e602254602f54611a9890919063ffffffff16565b603181905550602f54603381905550600060328190555060006034819055505b6109ca565b60006031819055506000603381905550602f546034819055506109c3602354603454611a9890919063ffffffff16565b6032819055505b5b6109e2603254603154611ae990919063ffffffff16565b9150610a0d60646109ff600a600e54611a9890919063ffffffff16565b611ad090919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515610a9657610a8f610a7e6064610a70600186611a9890919063ffffffff16565b611ad090919063ffffffff16565b603254611ae990919063ffffffff16565b6032819055505b601f543073ffffffffffffffffffffffffffffffffffffffff16311080610ad357503073ffffffffffffffffffffffffffffffffffffffff163182115b80610af1575060011515600b60009054906101000a900460ff161515145b15610c0d57610b606064610b52600a54600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154611a9890919063ffffffff16565b611ad090919063ffffffff16565b905080602d54101515610b825760006032819055506000603481905550610bdb565b80610b9a602d54603254611ae990919063ffffffff16565b101515610bda57610bb6602d5482611bef90919063ffffffff16565b603281905550610bd3602354603254611ad090919063ffffffff16565b6034819055505b5b6001600b60006101000a81548160ff02191690831515021790555060026020541115610c0c57610c0b6001611b05565b5b5b3073ffffffffffffffffffffffffffffffffffffffff1631821115610cac573073ffffffffffffffffffffffffffffffffffffffff16319150610c726031543073ffffffffffffffffffffffffffffffffffffffff1631611bef90919063ffffffff16565b603281905550610c8f602354603254611ad090919063ffffffff16565b60348190555060026020541115610cab57610caa6001611b05565b5b5b610cc3603254603154611ae990919063ffffffff16565b9150610cdc603454603354611ae990919063ffffffff16565b602f81905550600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602f5411151515610d3257600080fd5b610d3f3330602f54611c08565b503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610d86573d6000803e3d6000fd5b50610d9c82602d54611ae990919063ffffffff16565b602d81905550610db782602e54611ae990919063ffffffff16565b602e81905550610dd43383602f5442602054602d54602e54611f37565b610e3b600e54610e2d6064600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9890919063ffffffff16565b611ad090919063ffffffff16565b60248190555060006031819055506000603281905550600060338190555060006034819055508191505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600381526020017f4d5553000000000000000000000000000000000000000000000000000000000081525081565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1614158015610f2f575060003373ffffffffffffffffffffffffffffffffffffffff1614155b1515610f3a57600080fd5b60105434101515610f4a57600080fd5b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150611006662386f26fc10000610ff8610fd56064610fc7600a610fb96022548a611a9890919063ffffffff16565b611a9890919063ffffffff16565b611ad090919063ffffffff16565b610fea60225487611a9890919063ffffffff16565b611ae990919063ffffffff16565b611ae990919063ffffffff16565b341115151561101457600080fd5b600061102b60225434611ad090919063ffffffff16565b11151561103757600080fd5b33600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503460298190555060205460046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154141561115d5760046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154602b81905550611166565b6000602b819055505b60205460046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015414156111fb576010546111ee602954602b54611ae990919063ffffffff16565b1015156111fa57600080fd5b5b60205460066000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154141561133b576112f460646112e6600560066000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154611a9890919063ffffffff16565b611ad090919063ffffffff16565b905061130b81602954611bef90919063ffffffff16565b602981905550600061132a602254602954611ad090919063ffffffff16565b11151561133657600080fd5b600090505b611352602254602954611ad090919063ffffffff16565b9250600060358190555067016345785d8a0000602954101515611451576201518060215401421115156113ae576113a7612710611399604b86611a9890919063ffffffff16565b611ad090919063ffffffff16565b6035819055505b6201518060215401421180156113cb57506202a300602154014211155b156113ff576113f86127106113ea603286611a9890919063ffffffff16565b611ad090919063ffffffff16565b6035819055505b6202a300602154014211801561141c57506203f480602154014211155b156114505761144961271061143b601986611a9890919063ffffffff16565b611ad090919063ffffffff16565b6035819055505b5b6004602854118015611469575062093a80602c540142115b156114b0576114a9611498606461148a600187611a9890919063ffffffff16565b611ad090919063ffffffff16565b603554611ae990919063ffffffff16565b6035819055505b6114c560355484611ae990919063ffffffff16565b9250818311156115c0576114f66114e58385611bef90919063ffffffff16565b602254611a9890919063ffffffff16565b60368190555061152930600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c08565b508192506036543073ffffffffffffffffffffffffffffffffffffffff16311015156115bb57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6036549081150290604051600060405180830381858888f193505050501580156115b9573d6000803e3d6000fd5b505b6115ef565b6115ed30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611c08565b505b600060046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154141561167157602954602a8190555042602c81905550611748565b60046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154602a8190555060046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154602c819055505b600060046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015414156117c257600160288190555061186e565b6117d86001602054611bef90919063ffffffff16565b60046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401541415611864576118596001602854611ae990919063ffffffff16565b60288190555061186d565b60016028819055505b5b611885602954602b54611ae990919063ffffffff16565b602b819055506118ca600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166029548542602c54602054602a54602854602b54612023565b611931600e546119236064600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9890919063ffffffff16565b611ad090919063ffffffff16565b60248190555060006035819055506000915060006036819055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060298190555061199f6000611b05565b6000600b60006101000a81548160ff0219169083151502179055506000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611a0e57611a0d602054612123565b5b829250505090565b6000806000806000806000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150611a7860225483611a9890919063ffffffff16565b905081602454826022546023549650965096509650965050509091929394565b600080831415611aab5760009050611aca565b8183029050818382811515611abc57fe5b04141515611ac657fe5b8090505b92915050565b60008183811515611add57fe5b04905080905092915050565b60008183019050828110151515611afc57fe5b80905092915050565b600115158115151415611bab5760001515600d60009054906101000a900460ff1615151415611b55576001600d60006101000a81548160ff02191690831515021790555042600c81905550611ba6565b62127500600c5401421115611ba5576000600d60006101000a81548160ff0219169083151502179055506000600b60006101000a81548160ff021916908315150217905550611ba46000612123565b5b5b611bec565b60011515600d60009054906101000a900460ff1615151415611beb576000600d60006101000a81548160ff0219169083151502179055506000600c819055505b5b50565b6000828211151515611bfd57fe5b818303905092915050565b6000611c5c82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bef90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e315760011515603060009054906101000a900460ff1615151415611d8b57611d43603354600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e0f565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611e26603454600054611bef90919063ffffffff16565b600081905550611ec7565b611e8382600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050868160000181905550858160010181905550848160020181905550838160030181905550828160040181905550818160050181905550600160078990806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050505050565b6000600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050888160000181905550878160010181905550868160020181905550858160030181905550848160040181905550838160050181905550828160060181905550818160070181905550600160058b90806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505050505050565b61212b612181565b6000601160006101000a81548160ff02191690831515021790555061215a600182611ae990919063ffffffff16565b60208190555042602181905550612172600e54612257565b5061217e602054612312565b50565b60026020541180156121a6575060001515601160009054906101000a900460ff161515145b1561225557601e543073ffffffffffffffffffffffffffffffffffffffff163110151561225457600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601e549081150290604051600060405180830381858888f19350505050158015612237573d6000803e3d6000fd5b506001601160006101000a81548160ff0219169083151502179055505b5b565b60006122ab82600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061230382600054611ae990919063ffffffff16565b60008190555060019050919050565b80602081905550600160205414156123e65760006015819055506000601681905550600060178190555042602181905550600f54602281905550600f5460238190555061236c602254600e54611a9890919063ffffffff16565b601a819055506000601b819055506000601f8190555060006018819055506000601981905550601a54601c819055506000601e819055506123ba601b54601a54611bef90919063ffffffff16565b601d819055506032600f5414156123d857603c6025819055506123e5565b6005600f54016025819055505b5b6002602054141561254a576000601281905550602254601381905550602354601481905550601954601581905550601a54601681905550601c54601781905550600060188190555060006019819055506124606064612452600954601354611a9890919063ffffffff16565b611ad090919063ffffffff16565b60258190555061247d601354602554611bef90919063ffffffff16565b6026819055506026546027819055506124a3602754602554611ae990919063ffffffff16565b6022819055506022546023819055506124c9602254600e54611a9890919063ffffffff16565b601a819055506000601b819055506124ee601754601a54611ae990919063ffffffff16565b601c819055506000601e819055506125266064612518600a54601654611a9890919063ffffffff16565b611ad090919063ffffffff16565b601f81905550612543601b54601a54611bef90919063ffffffff16565b601d819055505b6002602054111561280e57602254601381905550602354601481905550601954601581905550601a54601681905550601c546017819055506026546018819055506027546019819055506025546023819055506125b4600954601354611a9890919063ffffffff16565b60258190555060646025541115156125f7576125f060646125e2600954601354611a9890919063ffffffff16565b611ad090919063ffffffff16565b6025819055505b60646025541115612635576103e860255402602581905550600a600561271060255481151561262257fe5b040181151561262d57fe5b046025819055505b61264c601354602554611bef90919063ffffffff16565b602681905550612669600854602654611a9890919063ffffffff16565b60278190555060646027541115156126c0576126b96126a8606461269a600854602654611a9890919063ffffffff16565b611ad090919063ffffffff16565b601954611ae990919063ffffffff16565b6027819055505b6064602754111561271b576103e860275402602781905550600a60056127106027548115156126eb57fe5b04018115156126f657fe5b04602781905550612714602754601954611ae990919063ffffffff16565b6027819055505b612732602754602554611ae990919063ffffffff16565b60228190555061274f602254600e54611a9890919063ffffffff16565b601a8190555061276c602354600e54611a9890919063ffffffff16565b601b8190555061279c606461278e600a54601654611a9890919063ffffffff16565b611ad090919063ffffffff16565b601f819055506127b9601b54601a54611bef90919063ffffffff16565b601d819055506127d6601754601d54611ae990919063ffffffff16565b601c81905550612807601f546127f9601b54601754611bef90919063ffffffff16565b611bef90919063ffffffff16565b601e819055505b612875600e546128676064600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9890919063ffffffff16565b611ad090919063ffffffff16565b6024819055506023546022547f80123097a76fe2b82a8a76c7c41e432f73fce3311a85c3ca296fdfa52f6d57d860405160405180910390a3505600a165627a7a723058203ce2a4aa512e887637a71fb6db38d20eb9fc84a658f60a5eef2a7c364857c9a80029

Deployed Bytecode

0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461009357806318160ddd14610123578063313ce5671461014e578063441a3e701461017957806370a08231146101c457806395d89b411461021b578063d0e30db0146102ab578063d89fec58146102c9575b600080fd5b34801561009f57600080fd5b506100a8610310565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100e85780820151818401526020810190506100cd565b50505050905090810190601f1680156101155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561012f57600080fd5b50610138610349565b6040518082815260200191505060405180910390f35b34801561015a57600080fd5b5061016361034f565b6040518082815260200191505060405180910390f35b34801561018557600080fd5b506101ae6004803603810190808035906020019092919080359060200190929190505050610354565b6040518082815260200191505060405180910390f35b3480156101d057600080fd5b50610205600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e6b565b6040518082815260200191505060405180910390f35b34801561022757600080fd5b50610230610eb4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610270578082015181840152602081019050610255565b50505050905090810190601f16801561029d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b3610eed565b6040518082815260200191505060405180910390f35b3480156102d557600080fd5b506102de611a16565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b6040805190810160405280601581526020017f4d757475616c20556e6974696e672053797374656d000000000000000000000081525081565b60005481565b600f81565b60008060003373ffffffffffffffffffffffffffffffffffffffff1614158015610395575060003373ffffffffffffffffffffffffffffffffffffffff1614155b15156103a057600080fd5b60008311806103af5750600084115b15156103ba57600080fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115151561040857600080fd5b6104e761048560646104776005610469602254600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9890919063ffffffff16565b611a9890919063ffffffff16565b611ad090919063ffffffff16565b6104d9602254600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9890919063ffffffff16565b611ae990919063ffffffff16565b61050166038d7ea4c6800086611a9890919063ffffffff16565b1115151561050e57600080fd5b60011515600d60009054906101000a900460ff1615151415610535576105346001611b05565b5b601f543073ffffffffffffffffffffffffffffffffffffffff1631111515610577576001600b60006101000a81548160ff021916908315150217905550610593565b6000600b60006101000a81548160ff0219169083151502179055505b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154602d81905550602054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154141561067657600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154602e8190555061067f565b6000602e819055505b602054600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401541480156107155750600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154602e54105b15610797576001603060006101000a81548160ff02191690831515021790555061078c602e54600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154611bef90919063ffffffff16565b6031819055506107b3565b6000603060006101000a81548160ff0219169083151502179055505b60008411156108cc576107d666038d7ea4c6800085611a9890919063ffffffff16565b915060011515603060009054906101000a900460ff16151514156108925761080b602254603154611ad090919063ffffffff16565b6033819055506031548211156108585761083060315483611bef90919063ffffffff16565b60328190555061084d602354603254611ad090919063ffffffff16565b60348190555061088d565b81603181905550610876602254603154611ad090919063ffffffff16565b603381905550600060328190555060006034819055505b6108c7565b60006031819055506000603381905550816032819055506108c0602354603254611ad090919063ffffffff16565b6034819055505b6109cb565b82602f8190555060011515603060009054906101000a900460ff161515141561099357610906602254603154611ad090919063ffffffff16565b603381905550603354602f5411156109575761092f603354602f54611bef90919063ffffffff16565b60348190555061094c602354603454611a9890919063ffffffff16565b60328190555061098e565b61096e602254602f54611a9890919063ffffffff16565b603181905550602f54603381905550600060328190555060006034819055505b6109ca565b60006031819055506000603381905550602f546034819055506109c3602354603454611a9890919063ffffffff16565b6032819055505b5b6109e2603254603154611ae990919063ffffffff16565b9150610a0d60646109ff600a600e54611a9890919063ffffffff16565b611ad090919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515610a9657610a8f610a7e6064610a70600186611a9890919063ffffffff16565b611ad090919063ffffffff16565b603254611ae990919063ffffffff16565b6032819055505b601f543073ffffffffffffffffffffffffffffffffffffffff16311080610ad357503073ffffffffffffffffffffffffffffffffffffffff163182115b80610af1575060011515600b60009054906101000a900460ff161515145b15610c0d57610b606064610b52600a54600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154611a9890919063ffffffff16565b611ad090919063ffffffff16565b905080602d54101515610b825760006032819055506000603481905550610bdb565b80610b9a602d54603254611ae990919063ffffffff16565b101515610bda57610bb6602d5482611bef90919063ffffffff16565b603281905550610bd3602354603254611ad090919063ffffffff16565b6034819055505b5b6001600b60006101000a81548160ff02191690831515021790555060026020541115610c0c57610c0b6001611b05565b5b5b3073ffffffffffffffffffffffffffffffffffffffff1631821115610cac573073ffffffffffffffffffffffffffffffffffffffff16319150610c726031543073ffffffffffffffffffffffffffffffffffffffff1631611bef90919063ffffffff16565b603281905550610c8f602354603254611ad090919063ffffffff16565b60348190555060026020541115610cab57610caa6001611b05565b5b5b610cc3603254603154611ae990919063ffffffff16565b9150610cdc603454603354611ae990919063ffffffff16565b602f81905550600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602f5411151515610d3257600080fd5b610d3f3330602f54611c08565b503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610d86573d6000803e3d6000fd5b50610d9c82602d54611ae990919063ffffffff16565b602d81905550610db782602e54611ae990919063ffffffff16565b602e81905550610dd43383602f5442602054602d54602e54611f37565b610e3b600e54610e2d6064600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9890919063ffffffff16565b611ad090919063ffffffff16565b60248190555060006031819055506000603281905550600060338190555060006034819055508191505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600381526020017f4d5553000000000000000000000000000000000000000000000000000000000081525081565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1614158015610f2f575060003373ffffffffffffffffffffffffffffffffffffffff1614155b1515610f3a57600080fd5b60105434101515610f4a57600080fd5b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150611006662386f26fc10000610ff8610fd56064610fc7600a610fb96022548a611a9890919063ffffffff16565b611a9890919063ffffffff16565b611ad090919063ffffffff16565b610fea60225487611a9890919063ffffffff16565b611ae990919063ffffffff16565b611ae990919063ffffffff16565b341115151561101457600080fd5b600061102b60225434611ad090919063ffffffff16565b11151561103757600080fd5b33600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503460298190555060205460046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154141561115d5760046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154602b81905550611166565b6000602b819055505b60205460046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015414156111fb576010546111ee602954602b54611ae990919063ffffffff16565b1015156111fa57600080fd5b5b60205460066000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154141561133b576112f460646112e6600560066000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154611a9890919063ffffffff16565b611ad090919063ffffffff16565b905061130b81602954611bef90919063ffffffff16565b602981905550600061132a602254602954611ad090919063ffffffff16565b11151561133657600080fd5b600090505b611352602254602954611ad090919063ffffffff16565b9250600060358190555067016345785d8a0000602954101515611451576201518060215401421115156113ae576113a7612710611399604b86611a9890919063ffffffff16565b611ad090919063ffffffff16565b6035819055505b6201518060215401421180156113cb57506202a300602154014211155b156113ff576113f86127106113ea603286611a9890919063ffffffff16565b611ad090919063ffffffff16565b6035819055505b6202a300602154014211801561141c57506203f480602154014211155b156114505761144961271061143b601986611a9890919063ffffffff16565b611ad090919063ffffffff16565b6035819055505b5b6004602854118015611469575062093a80602c540142115b156114b0576114a9611498606461148a600187611a9890919063ffffffff16565b611ad090919063ffffffff16565b603554611ae990919063ffffffff16565b6035819055505b6114c560355484611ae990919063ffffffff16565b9250818311156115c0576114f66114e58385611bef90919063ffffffff16565b602254611a9890919063ffffffff16565b60368190555061152930600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c08565b508192506036543073ffffffffffffffffffffffffffffffffffffffff16311015156115bb57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6036549081150290604051600060405180830381858888f193505050501580156115b9573d6000803e3d6000fd5b505b6115ef565b6115ed30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611c08565b505b600060046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154141561167157602954602a8190555042602c81905550611748565b60046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154602a8190555060046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154602c819055505b600060046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015414156117c257600160288190555061186e565b6117d86001602054611bef90919063ffffffff16565b60046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401541415611864576118596001602854611ae990919063ffffffff16565b60288190555061186d565b60016028819055505b5b611885602954602b54611ae990919063ffffffff16565b602b819055506118ca600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166029548542602c54602054602a54602854602b54612023565b611931600e546119236064600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9890919063ffffffff16565b611ad090919063ffffffff16565b60248190555060006035819055506000915060006036819055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060298190555061199f6000611b05565b6000600b60006101000a81548160ff0219169083151502179055506000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611a0e57611a0d602054612123565b5b829250505090565b6000806000806000806000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150611a7860225483611a9890919063ffffffff16565b905081602454826022546023549650965096509650965050509091929394565b600080831415611aab5760009050611aca565b8183029050818382811515611abc57fe5b04141515611ac657fe5b8090505b92915050565b60008183811515611add57fe5b04905080905092915050565b60008183019050828110151515611afc57fe5b80905092915050565b600115158115151415611bab5760001515600d60009054906101000a900460ff1615151415611b55576001600d60006101000a81548160ff02191690831515021790555042600c81905550611ba6565b62127500600c5401421115611ba5576000600d60006101000a81548160ff0219169083151502179055506000600b60006101000a81548160ff021916908315150217905550611ba46000612123565b5b5b611bec565b60011515600d60009054906101000a900460ff1615151415611beb576000600d60006101000a81548160ff0219169083151502179055506000600c819055505b5b50565b6000828211151515611bfd57fe5b818303905092915050565b6000611c5c82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bef90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e315760011515603060009054906101000a900460ff1615151415611d8b57611d43603354600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e0f565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611e26603454600054611bef90919063ffffffff16565b600081905550611ec7565b611e8382600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050868160000181905550858160010181905550848160020181905550838160030181905550828160040181905550818160050181905550600160078990806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050505050565b6000600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050888160000181905550878160010181905550868160020181905550858160030181905550848160040181905550838160050181905550828160060181905550818160070181905550600160058b90806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505050505050565b61212b612181565b6000601160006101000a81548160ff02191690831515021790555061215a600182611ae990919063ffffffff16565b60208190555042602181905550612172600e54612257565b5061217e602054612312565b50565b60026020541180156121a6575060001515601160009054906101000a900460ff161515145b1561225557601e543073ffffffffffffffffffffffffffffffffffffffff163110151561225457600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601e549081150290604051600060405180830381858888f19350505050158015612237573d6000803e3d6000fd5b506001601160006101000a81548160ff0219169083151502179055505b5b565b60006122ab82600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061230382600054611ae990919063ffffffff16565b60008190555060019050919050565b80602081905550600160205414156123e65760006015819055506000601681905550600060178190555042602181905550600f54602281905550600f5460238190555061236c602254600e54611a9890919063ffffffff16565b601a819055506000601b819055506000601f8190555060006018819055506000601981905550601a54601c819055506000601e819055506123ba601b54601a54611bef90919063ffffffff16565b601d819055506032600f5414156123d857603c6025819055506123e5565b6005600f54016025819055505b5b6002602054141561254a576000601281905550602254601381905550602354601481905550601954601581905550601a54601681905550601c54601781905550600060188190555060006019819055506124606064612452600954601354611a9890919063ffffffff16565b611ad090919063ffffffff16565b60258190555061247d601354602554611bef90919063ffffffff16565b6026819055506026546027819055506124a3602754602554611ae990919063ffffffff16565b6022819055506022546023819055506124c9602254600e54611a9890919063ffffffff16565b601a819055506000601b819055506124ee601754601a54611ae990919063ffffffff16565b601c819055506000601e819055506125266064612518600a54601654611a9890919063ffffffff16565b611ad090919063ffffffff16565b601f81905550612543601b54601a54611bef90919063ffffffff16565b601d819055505b6002602054111561280e57602254601381905550602354601481905550601954601581905550601a54601681905550601c546017819055506026546018819055506027546019819055506025546023819055506125b4600954601354611a9890919063ffffffff16565b60258190555060646025541115156125f7576125f060646125e2600954601354611a9890919063ffffffff16565b611ad090919063ffffffff16565b6025819055505b60646025541115612635576103e860255402602581905550600a600561271060255481151561262257fe5b040181151561262d57fe5b046025819055505b61264c601354602554611bef90919063ffffffff16565b602681905550612669600854602654611a9890919063ffffffff16565b60278190555060646027541115156126c0576126b96126a8606461269a600854602654611a9890919063ffffffff16565b611ad090919063ffffffff16565b601954611ae990919063ffffffff16565b6027819055505b6064602754111561271b576103e860275402602781905550600a60056127106027548115156126eb57fe5b04018115156126f657fe5b04602781905550612714602754601954611ae990919063ffffffff16565b6027819055505b612732602754602554611ae990919063ffffffff16565b60228190555061274f602254600e54611a9890919063ffffffff16565b601a8190555061276c602354600e54611a9890919063ffffffff16565b601b8190555061279c606461278e600a54601654611a9890919063ffffffff16565b611ad090919063ffffffff16565b601f819055506127b9601b54601a54611bef90919063ffffffff16565b601d819055506127d6601754601d54611ae990919063ffffffff16565b601c81905550612807601f546127f9601b54601754611bef90919063ffffffff16565b611bef90919063ffffffff16565b601e819055505b612875600e546128676064600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a9890919063ffffffff16565b611ad090919063ffffffff16565b6024819055506023546022547f80123097a76fe2b82a8a76c7c41e432f73fce3311a85c3ca296fdfa52f6d57d860405160405180910390a3505600a165627a7a723058203ce2a4aa512e887637a71fb6db38d20eb9fc84a658f60a5eef2a7c364857c9a80029

Swarm Source

bzzr://3ce2a4aa512e887637a71fb6db38d20eb9fc84a658f60a5eef2a7c364857c9a8
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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