ETH Price: $2,532.86 (+3.03%)

Contract

0xdE46fcF6aB7559E4355b8eE3D7fBa0f2730CDdd8
 

Overview

ETH Balance

9.4512015000000001 ETH

Eth Value

$23,938.59 (@ $2,532.86/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Settlement Stati...128007692021-07-10 16:40:091145 days ago1625935209IN
0xdE46fcF6...2730CDdd8
0 ETH0.0004689416.72000023
Settlement Stati...124050632021-05-10 6:35:401206 days ago1620628540IN
0xdE46fcF6...2730CDdd8
0 ETH0.0026925196.00000145
Settlement Stati...121360942021-03-29 19:41:481248 days ago1617046908IN
0xdE46fcF6...2730CDdd8
0 ETH0.00332021137.50000023
Settlement Stati...116559712021-01-14 22:49:171322 days ago1610664557IN
0xdE46fcF6...2730CDdd8
0 ETH0.0008451435.00000112
Settlement Stati...116521782021-01-14 8:35:531322 days ago1610613353IN
0xdE46fcF6...2730CDdd8
0 ETH0.0014971162.00000145
Settlement Stati...116458292021-01-13 9:30:511323 days ago1610530251IN
0xdE46fcF6...2730CDdd8
0 ETH0.0012483951.70000023
Settlement Stati...116437372021-01-13 1:37:361323 days ago1610501856IN
0xdE46fcF6...2730CDdd8
0 ETH0.0012073550.00000134
Settlement Stati...116437052021-01-13 1:30:281323 days ago1610501428IN
0xdE46fcF6...2730CDdd8
0 ETH0.0015212663.00000145
Settlement Stati...116401042021-01-12 12:26:061324 days ago1610454366IN
0xdE46fcF6...2730CDdd8
0 ETH0.0010141742.00000112
Settlement Stati...116382422021-01-12 5:32:411324 days ago1610429561IN
0xdE46fcF6...2730CDdd8
0 ETH0.0011107646.00000112
Settlement Stati...116328772021-01-11 9:50:501325 days ago1610358650IN
0xdE46fcF6...2730CDdd8
0 ETH0.0013280855.00000112
Settlement Stati...115408982020-12-28 7:00:331339 days ago1609138833IN
0xdE46fcF6...2730CDdd8
0 ETH0.0011421547.30000023
Settlement Stati...114430572020-12-13 6:40:421354 days ago1607841642IN
0xdE46fcF6...2730CDdd8
0 ETH0.000362215.00000112
Settlement Stati...114389692020-12-12 15:38:461355 days ago1607787526IN
0xdE46fcF6...2730CDdd8
0 ETH0.0009296538.50000023
Settlement Stati...114255192020-12-10 13:45:061357 days ago1607607906IN
0xdE46fcF6...2730CDdd8
0 ETH0.0004829420.00000112
Settlement Stati...114065302020-12-07 15:39:491360 days ago1607355589IN
0xdE46fcF6...2730CDdd8
0 ETH0.0014343359.40000023
Settlement Stati...113705962020-12-02 3:13:081365 days ago1606878788IN
0xdE46fcF6...2730CDdd8
0 ETH0.001035942.90000023
Withdraw113705952020-12-02 3:13:051365 days ago1606878785IN
0xdE46fcF6...2730CDdd8
0 ETH0.0005835824.20000023
Withdraw113701212020-12-02 1:18:571365 days ago1606871937IN
0xdE46fcF6...2730CDdd8
0 ETH0.0006578527.28000023
Settlement Stati...113698782020-12-02 0:21:331365 days ago1606868493IN
0xdE46fcF6...2730CDdd8
0 ETH0.0365968633.00000156
Settlement Stati...113698762020-12-02 0:20:471365 days ago1606868447IN
0xdE46fcF6...2730CDdd8
0 ETH0.0071337735.00000156
Settlement Stati...113698732020-12-02 0:20:231365 days ago1606868423IN
0xdE46fcF6...2730CDdd8
0 ETH0.0069299434.00000156
Settlement Stati...113698722020-12-02 0:19:561365 days ago1606868396IN
0xdE46fcF6...2730CDdd8
0 ETH0.0085605242.00000156
Settlement Stati...113698702020-12-02 0:18:521365 days ago1606868332IN
0xdE46fcF6...2730CDdd8
0 ETH0.0075410837.00000156
Withdraw113698662020-12-02 0:17:061365 days ago1606868226IN
0xdE46fcF6...2730CDdd8
0 ETH0.0037685132.00000156
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
191386412024-02-02 5:28:47208 days ago1706851727
0xdE46fcF6...2730CDdd8
36.09999999 ETH
191386412024-02-02 5:28:47208 days ago1706851727
0xdE46fcF6...2730CDdd8
15 ETH
113698662020-12-02 0:17:061365 days ago1606868226
0xdE46fcF6...2730CDdd8
0.165 ETH
113698562020-12-02 0:14:541365 days ago1606868094
0xdE46fcF6...2730CDdd8
0.165 ETH
113698452020-12-02 0:12:381365 days ago1606867958
0xdE46fcF6...2730CDdd8
0.165 ETH
113696932020-12-01 23:39:261366 days ago1606865966
0xdE46fcF6...2730CDdd8
0.055 ETH
113694942020-12-01 22:54:341366 days ago1606863274
0xdE46fcF6...2730CDdd8
0.11 ETH
113694862020-12-01 22:53:301366 days ago1606863210
0xdE46fcF6...2730CDdd8
0.11 ETH
113694742020-12-01 22:50:291366 days ago1606863029
0xdE46fcF6...2730CDdd8
0.205 ETH
113694372020-12-01 22:41:431366 days ago1606862503
0xdE46fcF6...2730CDdd8
0.261 ETH
113679192020-12-01 17:09:551366 days ago1606842595
0xdE46fcF6...2730CDdd8
0.11 ETH
113678862020-12-01 17:03:351366 days ago1606842215
0xdE46fcF6...2730CDdd8
0.11 ETH
113678412020-12-01 16:51:091366 days ago1606841469
0xdE46fcF6...2730CDdd8
0.11 ETH
113675812020-12-01 15:49:591366 days ago1606837799
0xdE46fcF6...2730CDdd8
0.4775 ETH
113665752020-12-01 12:11:541366 days ago1606824714
0xdE46fcF6...2730CDdd8
0.186 ETH
113665562020-12-01 12:08:501366 days ago1606824530
0xdE46fcF6...2730CDdd8
0.155 ETH
113665192020-12-01 12:01:251366 days ago1606824085
0xdE46fcF6...2730CDdd8
0.332 ETH
113663032020-12-01 11:14:081366 days ago1606821248
0xdE46fcF6...2730CDdd8
0.35125 ETH
113662982020-12-01 11:13:181366 days ago1606821198
0xdE46fcF6...2730CDdd8
0.432 ETH
113662382020-12-01 11:01:581366 days ago1606820518
0xdE46fcF6...2730CDdd8
0.11 ETH
113662352020-12-01 11:01:341366 days ago1606820494
0xdE46fcF6...2730CDdd8
0.383 ETH
113662122020-12-01 10:58:341366 days ago1606820314
0xdE46fcF6...2730CDdd8
0.261 ETH
113661962020-12-01 10:56:131366 days ago1606820173
0xdE46fcF6...2730CDdd8
0.177 ETH
113661952020-12-01 10:56:041366 days ago1606820164
0xdE46fcF6...2730CDdd8
0.177 ETH
113661932020-12-01 10:55:321366 days ago1606820132
0xdE46fcF6...2730CDdd8
0.055 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MainPool

Compiler Version
v0.5.7+commit.6da8b019

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: MainPool.sol
pragma solidity 0.5.7;

import "./SafeMath.sol";
import "./AddrMInterface.sol";

interface TickectInerface{
    function calDeductionADC(uint256 _value,bool isIn_) external returns(uint256 disADC_);
}

interface ERC20 {
  function balanceOf(address) external view returns (uint256);
  function distroy(address _owner,uint256 _value) external;
}

library gameDataSet{
    struct PlyRelationship{
        uint256 parentPID;         //parent PID
        uint256 topPID;
        uint256 sonNumber;
        uint256 bigPotSonPID;    // big pot son ID 
        uint256 totalRecmdplys; // total recommanded players 
        uint256 totalRecmdAmount;     // total Recommended ETH  without  himself
        uint8   nodeLevel;       // this is node level for V1-V6
        //mapping(uint256 => uint256)  sonPIDList;     // son number -> son PID list
        mapping(uint256 => bool)  sonPIDListMap;     //son PID list mapping
        mapping(uint256 => uint256) sonTotalBalance; // PID-> total balance 
       
    }
    
    struct Player{
        //uint256 pID;
        uint256 ticketInCost;     // how many eth can join
        uint256   withdrawAmount;     // how many eth can join
        uint256 startTime;      // join the game time
        uint256 totalSettled;   // rturn  funds
        uint256 staticIncome;
        uint256 lastCalcSITime;      // last Calc staticIncome Time  
        //uint256 lastCalcDITime; //  last Calc dynamicIncome Time
        uint256 dynamicIncome; //  last Calc dynamicIncome
        uint256 stepIncome;
        bool isActive; // 1 mean is 10eth,2 have new one son,3,
        bool isAlreadGetIns;// already get insePoolBalance income;
    }
    
    
    struct Round{
        uint256 rID;            //Round ID
        uint256 rStartTime;      //Round start ID
        uint256 rPlys;           // new round players
        uint256 lastPID;         // last Player ID pID
        uint256 totalInseAmount; // 
        uint256 fritInsePoint;
        uint256 fritInseAmount;
        uint256[] plyInList;
    }
}

contract MainPool{
    using SafeMath for *;
    
    //address manager 
    AddrMInterface addrM ;
    TickectInerface  tickect;
    ERC20  adcERC20;
    
    // pool
    mapping(uint256 => uint256)     public allInBalance;
    mapping(uint256 => uint256)     public mainPoolLockBal; // lock balance do not sub
    mapping(uint256 => uint256)     public mainPoolBalance; // RID -> balance total Main pool balance 
    mapping(uint256 => uint256)     public mainPoolWithdrawBalance; // RID -> balance total Main pool balance 
    mapping(uint256 => uint256)     public alreadyWithDrawBal; // RID -> balance total Main pool balance 
    mapping(uint256 => uint256)     public insePoolBalance; // total insurance pool Banacle 
    
    uint256 public mainPoolSTime ;
    uint256 public totalDistroyADC;
    
    uint256 public constant oneDay = 86400 seconds ;
    
    
    //node level
    mapping(uint8 => uint256)       private nlThdAmount; // node level threshold amount
    mapping(uint8 => uint8)         private nlIncome; // node level threshold amount
    mapping(uint256 => uint256 )    private doubleV6PID; // id -> pID ,is start is 1 ;
    mapping(uint256 => bool )       private isDoubleV6; // PID -> TRUE ,is start is 1 ;
    mapping(uint256 => mapping(uint256 => uint256 )) private plydV6Income; // rid -> pid->balance ,is start is 1 ;
    uint256 totalV6Number;
    
    // Round 
    uint256 public RID;
    mapping(uint256 => gameDataSet.Round) public round; // RID => round Info
    mapping(uint256 => mapping(uint256=>bool)) public luckPID;
    
    // Player
    uint256 lastPID;
    mapping(uint256 => gameDataSet.PlyRelationship) public plyRShip;
    mapping(uint256 => mapping(uint256 => gameDataSet.Player)) public plyr; // rid-> pid-> player
    mapping(address => uint256) public plyrID; // address -> pid-> playerID
    mapping(uint256 => address) private plyrAddr; // pid -> addr-> playerID
    //mapping(uint256 =>mapping(uint256 => uint256)) public plyBalance; // player total can without balance  
    mapping(uint256 =>mapping(uint256 => uint256)) private plyWithdrawBalance; // player total can without balance  
    mapping(uint256 =>mapping(uint256 => uint256)) public playBiggertReward; // player total can without balance 
    mapping(uint256 =>uint256) private playDistroyADC; // PID-ADC balance player total can without balance 
    mapping(address=>bool) private vipPly;
    mapping(uint256=>bool) private vipPlayerID;
    mapping(uint256=>mapping(uint256 => uint256))     public  plyLucklyAmount; //rid-pid-amount
    
    // ambassador 
   mapping(address => bool) public ambassadorList; //addr-true-BOOL
    //uint256[] ambRewardList;// PID list
    mapping(uint256=>bool) private ambRewardMap;
    //mapping(uint256=>uint256) ambRewardIdx;
    mapping(uint256 => mapping(uint256=>uint256)) public ambRewardBalance;
    
    //vip
    address constant vip1Addr = address(0x953ad059b61aA4A23fa48d5eca617D4920E3343e);
    //address constant vip1Addr = address(0xa9A2CbA5d5d16DE370375B42662F3272279B2b89);
    //address constant vip2Addr = address(0x6bE9780954580FCC268944e9D6271B3Dfc886997);
    address constant vip2Addr = address(0xfbcB561D76a622341E6e537a17c5C17af33c4628);
    address constant vip3Addr = address(0x669f366427ea8184FdCDCda6D6201a6bAAf9b156);
    address constant vip4Addr = address(0xBcA44B04e10e04b7FeD7F262cAd70A683D753981);
    address constant vip5Addr = address(0x0D3c20D9102200242398dE26fdF09F29f435421b);
    address constant vip6Addr = address(0xbb3c82CD454911F140B68FE2E67504af9A2b5D16);
    //address constant vip6Addr = address(0xa9A2CbA5d5d16DE370375B42662F3272279B2b89);
   
    address constant vip7Addr = address(0xbE6DFD74AF0848b9cf6C6DFBc8bb24d2920e6aDe);
    address constant vip8Addr = address(0x5b9347799602D0164DF3926c10f237543eaa5b9F);
    address constant vip9Addr = address(0xa2221dE49E4085Be8098d1A8B4538734ce4977C7);
    address constant vip10Addr = address(0xAc1c0B39F3A1450E53BA0dA1bCAB5D9572DCed57);
    address constant vip11Addr = address(0x7721a0C6eb2F2a056C48D107d0a2C4Cff261e98c);
    //address constant vip11Addr = address(0xa9A2CbA5d5d16DE370375B42662F3272279B2b89);

    
    constructor(address addressM_) public{
        
        addrM = AddrMInterface(addressM_);
        tickect = TickectInerface(addrM.getAddr("TICKET"));
        adcERC20 = ERC20(addrM.getAddr("ADC"));
        
        mainPoolSTime = now;
        RID = 1;
        uint256[] memory temparry;
        round[RID] = gameDataSet.Round(RID,now,0,11,0,1,0,temparry);
        lastPID = 11;
        nlThdAmount[1] = 200000000000000000000; //bigger then 200 eth 
        nlThdAmount[2] = 600000000000000000000;
        nlThdAmount[3] = 2000000000000000000000;
        nlThdAmount[4] = 6000000000000000000000;
        nlThdAmount[5] = 12000000000000000000000;
        nlThdAmount[6] = 25000000000000000000000;
        
        nlIncome[1] = 5; // 5% 5/100
        nlIncome[2] = 7;
        nlIncome[3] = 9;
        nlIncome[4] = 11;
        nlIncome[5] = 13;
        nlIncome[6] = 15;
        //initVip();
        initVipPlay();
    }
    
    function initVipPlay() internal{
        vipPly[vip1Addr] = true;
        vipPly[vip2Addr] = true;
        vipPly[vip3Addr] = true;
        vipPly[vip4Addr] = true;
        vipPly[vip5Addr] = true;
        vipPly[vip6Addr] = true;
        vipPly[vip7Addr] = true;
        vipPly[vip8Addr] = true;
        
        vipPly[vip9Addr] = true;
        vipPly[vip10Addr] = true;
        vipPly[vip11Addr] = true;
        
        
        
    }
    
    modifier notContract(address _addr){
        uint size;
        assembly { size := extcodesize(_addr) }
        require(size == 0,"") ;
        _;
    }
    
    function joinGame(address parentAddr) public payable notContract(msg.sender){
        // check ticket
        uint256 tmPid = plyrID[msg.sender];
        if(tmPid ==0){
            require(msg.sender != parentAddr,"parent same as msg sender");
        }
        require(checkTicket(msg.sender,msg.value),"check ticket fail");
        
        // check invite
        uint256 pID =plyrID[msg.sender];
        
        uint256 parentPid_ = plyrID[parentAddr];
        uint256 inBalance = plyr[RID][pID].ticketInCost;
        
        allInBalance[RID] += inBalance;
        
        if(tmPid == 0 && !vipPly[msg.sender]){
            plyRShip[pID].parentPID = parentPid_;
            // topPID
            if(parentPid_ == 0){
                plyRShip[pID].topPID = pID;
            }else{
                plyRShip[pID].topPID = plyRShip[parentPid_].topPID;
            }
        }
        
        /*if(plyr[RID][parentPid_].lastCalcDITime == 0){
            plyr[RID][parentPid_].lastCalcDITime = now;
        }*/
        
        if (RID > 1 && !vipPly[msg.sender] && !vipPlayerID[parentPid_]){
            activeParent(pID,parentPid_,plyr[RID][pID].ticketInCost);
        } 
    
        // the pool  5% for insurance pool
        if(insePoolBalance[RID] >= 50000*10**18){
           mainPoolBalance[RID] += inBalance; 
           mainPoolLockBal[RID] += inBalance;
           mainPoolWithdrawBalance[RID] += inBalance;
        }else{
            uint256 temp = inBalance*95/100;
            insePoolBalance[RID] += inBalance*5/100;
            mainPoolBalance[RID] += temp;
            mainPoolLockBal[RID] += temp;
            mainPoolWithdrawBalance[RID] += temp;
        }
        
        
    
        // find parents calc earn
        calcEarn(pID,inBalance);
        
        //check pool state
        setRoundInfo(pID);
        
    }
    
    function withdraw() public{
        //check ADC 
        uint256 pid = plyrID[msg.sender];
        uint256 bunlers = 0;
        //if(pid > 11){
            require(plyr[RID][pid].isActive,"ply not active");
        //}
        require(mainPoolWithdrawBalance[RID]>0,"pool not withdraw balance");
        if(RID > 1 && !plyr[RID-1][pid].isAlreadGetIns){
            //check last round 
            if(luckPID[RID-1][pid]&& insePoolBalance[RID-1] > 0 ){
                if(pid == round[RID-1].plyInList[round[RID-1].fritInsePoint]){
                    bunlers = round[RID-1].fritInseAmount;
                    insePoolBalance[RID-1] -= bunlers;
                }else{
                    bunlers = plyr[RID-1][pid].ticketInCost*2;
                    if(bunlers > insePoolBalance[RID-1]){
                        insePoolBalance[RID-1] = 0;
                        bunlers = insePoolBalance[RID-1] ;
                    }else{
                        insePoolBalance[RID-1] -= bunlers;
                    }
                    
                }
                
                mainPoolBalance[RID] -= bunlers;
                plyr[RID-1][pid].isAlreadGetIns = true;
                plyLucklyAmount[RID-1][pid] = bunlers;
            }
        }/*else{
            require(plyWithdrawBalance[RID][pid] <= plyBalance[RID][pid],"not enought balance can withdraw");
        }*/
        
        uint256 wdBalance;
        if(plyr[RID][pid].totalSettled>plyWithdrawBalance[RID][pid] ){
            wdBalance = plyr[RID][pid].totalSettled-plyWithdrawBalance[RID][pid] ;
        }
        if(bunlers == 0){
            require(wdBalance > 0,"not enought balance can withdraw");
        }
        
        
        uint256 totalWdBal = wdBalance + bunlers;
        //wdBalance += bunlers;
        if(totalWdBal > mainPoolWithdrawBalance[RID]){
            totalWdBal = mainPoolWithdrawBalance[RID];
        }
        uint256 disAmount  = tickect.calDeductionADC(totalWdBal,false);
        require(adcERC20.balanceOf(msg.sender)>disAmount,"not adc to buy out tikcet");
        adcERC20.distroy(msg.sender,disAmount);
        playDistroyADC[pid] += disAmount;
        totalDistroyADC += disAmount;
        if(totalWdBal >= mainPoolWithdrawBalance[RID]){
            mainPoolWithdrawBalance[RID] = 0;
            plyr[RID][pid].withdrawAmount += mainPoolWithdrawBalance[RID];
            alreadyWithDrawBal[RID] += mainPoolWithdrawBalance[RID];
            msg.sender.transfer(mainPoolWithdrawBalance[RID]);
            
        }else{
            mainPoolWithdrawBalance[RID] -= totalWdBal;
            plyr[RID][pid].withdrawAmount += wdBalance;
            alreadyWithDrawBal[RID] += totalWdBal;
            msg.sender.transfer(totalWdBal);
            
        }
        
        plyWithdrawBalance[RID][pid] += wdBalance;
        
        plyr[RID][pid].staticIncome = 0;
        plyr[RID][pid].dynamicIncome = 0;
        plyr[RID][pid].stepIncome = 0;
        ambRewardBalance[RID][pid] = 0;
        plydV6Income[RID][pid] = 0;
    }
    
    // settlement Static income by web
    function settlementStatic() public {// that is temp balance
        
        //uint256 reward;
        uint256 pid = plyrID[msg.sender];
        uint256 temp = 0;
        gameDataSet.Player storage  rPlyer = plyr[RID][pid];
        //require(pid>11,"is vip");
        require(rPlyer.isActive,"not active");
        require(rPlyer.ticketInCost >0,"not charge");
        require(rPlyer.totalSettled < playBiggertReward[RID][pid],"already to top reward");
        
        
        require(now-rPlyer.lastCalcSITime > oneDay,"not enought one day");
        if(rPlyer.lastCalcSITime == 0){
            temp = calcS_T(rPlyer.startTime,rPlyer.ticketInCost);
        }else if(now - rPlyer.lastCalcSITime > oneDay){
            temp = calcS_T(rPlyer.lastCalcSITime,rPlyer.ticketInCost);
        }
        //temp = temp*50;
        if(rPlyer.totalSettled + temp > playBiggertReward[RID][pid]){
            temp = playBiggertReward[RID][pid] - rPlyer.totalSettled;
        }
        if(temp == 0){
            return ;
        }
       
        if(mainPoolBalance[RID] > temp){
            //plyBalance[RID][pid] += reward;
            rPlyer.staticIncome += temp;
            rPlyer.totalSettled += temp;
            mainPoolBalance[RID] -=temp;
            
            calcDynamic(pid,temp); 
        }else{
           // plyBalance[RID][pid] += mainPoolBalance[RID];
            rPlyer.staticIncome += mainPoolBalance[RID];
            rPlyer.totalSettled += mainPoolBalance[RID];
            mainPoolBalance[RID] =0;
            
            // need start new rand
            startNewRount();
            
        }
        
        
        rPlyer.lastCalcSITime = rPlyer.startTime + ((now - rPlyer.startTime) / oneDay) * oneDay; // remark the last calc income time
        
    }
    
    function calcDynamic(uint256 plyid_,uint256 staticIncome_) internal{
        uint256 parenID = plyRShip[plyid_].parentPID;
        uint256 sonLen = plyRShip[parenID].sonNumber;
        uint256 dIncome = 0;
        
        uint256 temp = staticIncome_;
        //if((sonLen_ == 1 && treeHight_<=2) || (sonLen_ == 2 && treeHight_ <= 4) || (sonLen_ == 3 && treeHight_<= 6) || (sonLen_ == 4 && treeHight_<= 8)){
        for(uint8 i=1; i<= 8;i++){
            //find parent
            temp = staticIncome_;
            if(parenID == 0){
                return;
            }
            //if(!vipPlayerID[parenID]){
            if(plyr[RID][parenID].totalSettled >= playBiggertReward[RID][parenID] || !plyr[RID][parenID].isActive){
                parenID = plyRShip[parenID].parentPID;
                sonLen = plyRShip[parenID].sonNumber;
                continue;
            }//}
            //if(parenID !=0 ){
                /*if(plyr[RID][parenID].ticketInCost == 0 && RID > 1 ){
                    if(!vipPlayerID[parenID] && plyr[RID-1][parenID].ticketInCost <=10*10**18 && plyr[RID-1][parenID].ticketInCost < plyr[RID][plyid_].ticketInCost){
                 
                        if(plyr[RID][plyid_].lastCalcSITime == 0){
                            temp = calcS_T(plyr[RID][plyid_].startTime,plyr[RID-1][parenID].ticketInCost);
                        }else if(now - plyr[RID][plyid_].lastCalcSITime > oneDay){
                            temp = calcS_T(plyr[RID][plyid_].lastCalcSITime,plyr[RID-1][parenID].ticketInCost);
                        }
                    }
                        
                }else{*/
                    if(!vipPlayerID[parenID] && plyr[RID][parenID].ticketInCost <=10*10**18 && plyr[RID][parenID].ticketInCost < plyr[RID][plyid_].ticketInCost){
                    
                        if(plyr[RID][plyid_].lastCalcSITime == 0){
                            temp = calcS_T(plyr[RID][plyid_].startTime,plyr[RID][parenID].ticketInCost);
                        }else if(now - plyr[RID][plyid_].lastCalcSITime > oneDay){
                            temp = calcS_T(plyr[RID][plyid_].lastCalcSITime,plyr[RID][parenID].ticketInCost);
                        }
                    }
               // }
                if(i == 1){
                    dIncome = (temp*20)/100;
                }else if(i>=2 && i<=3){
                    dIncome = (temp*10)/100;
                }else if(i>=4 && i<=8){
                    dIncome = (temp*5)/100;
                }
                if(i==3 ||i==4){
                    if(sonLen<2){
                       dIncome = 0; 
                    }
                }else if(i==5 || i==6){
                    if(sonLen <3){
                        dIncome = 0;
                    } 
                }else if(i==7 || i==8){
                    if(sonLen < 4){
                        dIncome = 0;
                    }
                }
                
                if(dIncome > 0){
                    if(plyr[RID][parenID].totalSettled + dIncome > playBiggertReward[RID][parenID]){
                       dIncome = playBiggertReward[RID][parenID] - plyr[RID][parenID].totalSettled;
                   }
                   
                   if(mainPoolBalance[RID] > dIncome){
                        //plyBalance[RID][parenID] += dIncome;
                        plyr[RID][parenID].dynamicIncome += dIncome;
                        plyr[RID][parenID].totalSettled += dIncome;
                        mainPoolBalance[RID] -= dIncome;
                        
                    }else{
                        //plyBalance[RID][parenID] += mainPoolBalance[RID];
                        plyr[RID][parenID].dynamicIncome += mainPoolBalance[RID];
                        plyr[RID][parenID].totalSettled += mainPoolBalance[RID];
                        mainPoolBalance[RID] =0;
            
                    // need start new rand
                        startNewRount();
                        break;
                    } 
                }
            
            dIncome = 0;
            parenID = plyRShip[parenID].parentPID;
            sonLen = plyRShip[parenID].sonNumber;
            
        }
    }
    
    function setAmbFlag(address ply_) public{
        require(msg.sender == addrM.getAddr("TICKET"),"msg sender not TICKET");
       
        ambassadorList[ply_] = true;
        
    }
    
    //ambassador
    function getPlayerInfo(address ply_,uint256 rid_) public view returns(
        uint256 stIncome_,
        uint256 dtIncome_,
        uint256 stepIncome_,
        uint256 ambIncome_,
        uint256 doubV6Income_,
        uint256 totoalIncome_,
        uint256 withdrawAmount_,
        uint256 ticketIn_,
        uint256 canWithdrawAmount_,
        uint256 startTime_,
        uint256 liveRountAmount_)
    {
            uint256 pid = plyrID[ply_];
            
            stIncome_ = plyr[rid_][pid].staticIncome;
            dtIncome_ = plyr[rid_][pid].dynamicIncome;
            stepIncome_ =  plyr[rid_][pid].stepIncome;
            ambIncome_ = ambRewardBalance[rid_][pid];
            doubV6Income_ = plydV6Income[rid_][pid];
            totoalIncome_ = plyr[rid_][pid].totalSettled;//plyBalance[rid_][pid];
            ticketIn_ = plyr[rid_][pid].ticketInCost;
            withdrawAmount_ = plyr[rid_][pid].withdrawAmount;
            //canWithdrawAmount_ =  rPlyer.staticIncome + rPlyer.stepIncome+ ambRewardBalance[rid_][pid] + plydV6Income[RID][pid] + rPlyer.dynamicIncome;
            if(plyr[rid_][pid].totalSettled > plyr[rid_][pid].withdrawAmount){
                canWithdrawAmount_ = plyr[rid_][pid].totalSettled - plyr[rid_][pid].withdrawAmount;
            }else{
                canWithdrawAmount_ = 0;
            }
            startTime_ = plyr[rid_][pid].startTime;
            //if(playBiggertReward[RID][pid] > plyr[rid_][pid].totalSettled){
            liveRountAmount_ = playBiggertReward[rid_][pid] - plyr[rid_][pid].totalSettled;
            //}
            
    }
    
    function getPlayerRelship(address ply_) public view returns(
        uint256 sonNumber_,
        uint256 allNumber_,
        uint256 curLevel_,
        bool    isamb_,
        uint256 bigPotBalance_,
        uint256 smailPotBalance_,
        bool isDoubleV6_,
        uint256 distroyADC_)
    {
        uint256 pid = plyrID[ply_]; 
        sonNumber_= plyRShip[pid].sonNumber;
        allNumber_= plyRShip[pid].totalRecmdplys;
        curLevel_=plyRShip[pid].nodeLevel;
        
        bigPotBalance_=plyRShip[pid].sonTotalBalance[plyRShip[pid].bigPotSonPID];
        isDoubleV6_ = isDoubleV6[pid];
        distroyADC_ = playDistroyADC[pid];
        smailPotBalance_ = plyRShip[pid].totalRecmdAmount - plyRShip[pid].sonTotalBalance[plyRShip[pid].bigPotSonPID];
        isamb_ = ambRewardMap[pid];
    }
    
   
    
    function getPoolInfo(uint256 rid_) public view returns(
        uint256 totalInBalance_, // all in balanace
        uint256 totalDivBalance_, // Dividend  pool balance
        uint256 totalInsBalance_,//Insurance pool balance
        uint256 totalPlayers_,
        uint256 totalDisADC_)
    {
        totalInBalance_ = allInBalance[rid_];
        totalDivBalance_ = mainPoolBalance[rid_];
        totalInsBalance_ = insePoolBalance[rid_];
        totalPlayers_ = round[rid_].lastPID;
        totalDisADC_ = totalDistroyADC;
    }
    
    function getRID() public view returns(uint256 rid_){
        rid_ = RID;
    }
    
    
    function activeParent(uint256 sonID_,uint256 parentPid_,uint256 value_) internal{
        
        if(!plyr[RID][parentPid_].isActive){
            if(value_ >= 10*10**18 && !plyRShip[parentPid_].sonPIDListMap[sonID_]){
                plyr[RID][parentPid_].isActive = true;
                if(playBiggertReward[RID-1][parentPid_] > plyr[RID-1][parentPid_].totalSettled){
                    playBiggertReward[RID][parentPid_] += (playBiggertReward[RID-1][parentPid_] - plyr[RID-1][parentPid_].totalSettled);
                    plyr[RID][parentPid_].ticketInCost = plyr[RID-1][parentPid_].ticketInCost;
                    plyr[RID][parentPid_].lastCalcSITime = plyr[RID-1][parentPid_].lastCalcSITime;
                }
                
            }
        }
       
    }
    
    function checkTicket(address payable ply_,uint256 value_) internal returns(bool){ 
        
       
       if(vipPly[ply_]){
           initVip(ply_);
       }
       
       uint256 pid =plyrID[ply_];
       uint256 disAmount;
       
        if(pid != 0 ){
           if(plyr[RID][pid].totalSettled >= playBiggertReward[RID][pid]){
                   
               plyr[RID][pid].totalSettled = 0;
               plyr[RID][pid].withdrawAmount = 0;
               plyr[RID][pid].ticketInCost = 0;
               plyr[RID][pid].staticIncome = 0;
               plyr[RID][pid].dynamicIncome = 0;
               plyr[RID][pid].stepIncome = 0;
               playBiggertReward[RID][pid] = 0;
               ambRewardBalance[RID][pid] = 0;
               plydV6Income[RID][pid] = 0;
               plyWithdrawBalance[RID][pid] = 0;
            } 
        }
        
        if (plyr[RID][pid].ticketInCost > 0 ){
            return false;
        }
       
        require(value_ >= 1*10**18,"transfer to smail");
        disAmount = tickect.calDeductionADC(value_,true);
        //require(adcERC20.balanceOf(ply_)>disAmount,"not adc to buy in tikcet");
        adcERC20.distroy(ply_,disAmount);
        totalDistroyADC += disAmount;
        
        
        if(pid == 0){
            lastPID += 1;
            pid = lastPID;
            
            plyrID[ply_] = pid; 
            plyrAddr[pid] = ply_;
            plyr[RID][pid].isActive = true;
            if(ambassadorList[ply_]){
                ambRewardMap[pid] = true;
            }
            
        }
        
        playDistroyADC[pid] += disAmount;
        plyr[RID][pid].startTime = now;
        plyr[RID][pid].ticketInCost = value_;
        if(vipPly[ply_]){
            playBiggertReward[RID][pid] += value_*20000;
            vipPlayerID[pid] = true;
        }else{
           if(value_ >= 31*10**18){
                playBiggertReward[RID][pid] += value_*3;
            }else if(value_ < 31*10**18 && value_ >= 11*10**18){
                playBiggertReward[RID][pid] +=value_*25/10;
            }else{
                playBiggertReward[RID][pid] += value_*2;
            } 
        }
        
        return true;
        
    }
    
    function setRoundInfo(uint256 plyID_) internal{
        
        if(vipPlayerID[plyID_]){
            return;
        }
        round[RID].rPlys += 1;
        round[RID].lastPID = plyID_;
        round[RID].plyInList.push(plyID_);
        
    }
    
    function calcEarn(uint256 plyID_,uint256 value_) internal{
        //check Insurance pool
        
        uint256 aveIncome ;
       // uint256 len = ambRewardList.length;
        //uint256  reward;
        if(totalV6Number > 0){
            aveIncome= (value_*3/100) /totalV6Number;
            uint256 doubpid;
            for(uint256 i = 1; i <= totalV6Number; i++){
                doubpid = doubleV6PID[i];
                if(RID == 1 || (RID >1 && plyr[RID][doubpid].isActive) /*|| vipPlayerID[plyID_]*/){
                    if(plyr[RID][doubpid].totalSettled >= playBiggertReward[RID][doubpid]){
                        continue;
                    }else{
                        if( plyr[RID][doubpid].totalSettled + aveIncome > playBiggertReward[RID][doubpid]){
                            uint256  temp = playBiggertReward[RID][doubpid] - plyr[RID][doubpid].totalSettled;
                            
                            plyr[RID][doubpid].totalSettled +=temp;
                            plydV6Income[RID][doubpid] += temp;
                            mainPoolBalance[RID] -= temp;
                        }else{
                             plydV6Income[RID][doubpid] += aveIncome;
                            //plyBalance[RID][doubpid] += aveIncome;
                            plyr[RID][doubpid].totalSettled += aveIncome; 
                            mainPoolBalance[RID] -= aveIncome;
                        }
                    }
                    
                    
                }
            }
        }
        
        findParentByFor(plyID_,value_);
    }
    
    function findParentByFor(uint256 plyID_,uint256 value_) internal{
            
            uint256 parentPID_ ;
            uint256 pp = plyID_;
            //uint8 dividendAccount = nlIncome[plyRShip[toppid].nodeLevel]; 
            uint256 haveOneV6;
            uint8 parnetNodeLevel;
            uint8 biggestNodeLevel=0;
            uint256[] memory stepPlyerList = new uint256[](120);
            uint256 stepPlyNum;
            
            uint256 ambPid = 0 ;
            
            for(uint8 i=0;i<120;i++){
                parentPID_ = plyRShip[pp].parentPID;
                parnetNodeLevel = plyRShip[parentPID_].nodeLevel;
                if(parentPID_ == 0){
                    break;
                }
                
                if(ambRewardMap[parentPID_] && ambPid == 0&&plyr[RID][parentPID_].isActive){
                    ambPid = parentPID_;
                }
                //if(parentPID_ !=0){
                    //set releaseship
                    setRelationship(pp,parentPID_,value_);
                
                    //double v6
                    if(parnetNodeLevel > 0){
                        if(parnetNodeLevel == 6 && haveOneV6 >=1 && !isDoubleV6[parentPID_]){
                            isDoubleV6[parentPID_] = true;
                            totalV6Number +=1;
                            doubleV6PID[totalV6Number] = parentPID_;
                        }
                        if(parnetNodeLevel == 6 && !isDoubleV6[parentPID_]){
                            haveOneV6++;
                        }
                    
                        //step income calc 
                        if(plyr[RID][parentPID_].isActive){
                            if(parnetNodeLevel > biggestNodeLevel){
                                biggestNodeLevel = parnetNodeLevel;
                                stepPlyerList[stepPlyNum] = parentPID_;
                                stepPlyNum++;
                            }
                        }
                    }
                    //check level
                    if((plyr[RID][parentPID_].ticketInCost >= 11*10**18 && plyRShip[parentPID_].sonNumber >= 5)){
                        for (uint8 j = 1; j <= 6; j++) {
                            if(plyRShip[parentPID_].totalRecmdAmount - plyRShip[parentPID_].sonTotalBalance[plyRShip[parentPID_].bigPotSonPID] > nlThdAmount[j]){
                                plyRShip[parentPID_].nodeLevel = j;
                            }
                        }
                    }
                    
                    pp = parentPID_;
                
                //}
            }
            
            //calc step income
            if(stepPlyNum >0){
                calcStepByList(stepPlyNum,stepPlyerList,biggestNodeLevel,value_);
                
            }
             
            //calc ambReward 
            if(ambPid > 0){
                setAmbRewardBalance(ambPid,value_);
            }
            
            
    }
    
    function calcStepByList(uint256 stepNum_,uint256[] memory stepPlyerList,uint8 biggestNodeLevel,uint256 value_) internal{
                uint8 dividendAccount  = nlIncome[biggestNodeLevel];
                uint8 totalDiv;
                uint8 curDiv;
                uint8 plyNlevel;
                uint256 steppid;
                for(uint8 i=0;i<stepNum_;i++){
                    steppid = stepPlyerList[i];
                    
                    plyNlevel = plyRShip[steppid].nodeLevel;
                    if(totalDiv == 0){
                        curDiv = nlIncome[plyNlevel];
                    }else{
                        if(dividendAccount >nlIncome[plyNlevel] - totalDiv){
                            curDiv = nlIncome[plyNlevel] - totalDiv;
                        }else{
                            curDiv = dividendAccount;
                        }
                    } 
                   
                    calcStepIncome(steppid,value_,curDiv);
                    
                    totalDiv += curDiv;
                    if(dividendAccount > curDiv){
                        dividendAccount -=curDiv;
                    }else{
                        break;
                    }
                }
            
    }
    
    function setAmbRewardBalance(uint256 pid_,uint256 value_) internal{
       
        uint256 ambincom;
        if(plyr[RID][pid_].totalSettled < playBiggertReward[RID][pid_]){
            ambincom = plyr[RID][pid_].totalSettled + (value_*5)/100 > playBiggertReward[RID][pid_]? playBiggertReward[RID][pid_]-plyr[RID][pid_].totalSettled:(value_*5)/100;
            plyr[RID][pid_].totalSettled += ambincom;//(value_*5)/100;
            ambRewardBalance[RID][pid_] += ambincom;// (value_*5)/100;
            mainPoolBalance[RID] -=  ambincom;}//(value_*5)/100;}
             
    }
    
    
    
    function setRelationship(uint256 sonID_,uint256 plyID_,uint256 value_) internal{
    
        gameDataSet.PlyRelationship storage  rship = plyRShip[plyID_];
       
            
        if(!rship.sonPIDListMap[sonID_]){
            rship.sonNumber += 1;
            //rship.sonPIDList[rship.sonNumber] = sonID_;//add son
            rship.sonPIDListMap[sonID_] = true;
        }
        //rship.totalRecmdplys++;
        rship.sonTotalBalance[sonID_] += value_; // add son toto balance value
        rship.totalRecmdAmount += value_;
        
        //check the big one some
        if(rship.sonTotalBalance[sonID_] > rship.sonTotalBalance[rship.bigPotSonPID]){
            rship.bigPotSonPID = sonID_;
        }
        
    }
    
    
    
    
    function calcS_T(uint256 lastTime_,uint256 value_) internal view returns(uint256 _earnAmount){
        
        
            if(now - mainPoolSTime <= (60 * oneDay)){ // 2 month
                
                _earnAmount = (((now -  lastTime_  ) / oneDay ) * value_ * (70))/10000;
            }else if(now - mainPoolSTime <= (120 * oneDay)){ // 4 month
                uint256 oneTime = mainPoolSTime + 60*oneDay;
                if(lastTime_ < oneTime){
                    _earnAmount = (((oneTime - lastTime_)/oneDay) * value_ * 70)/10000 + (((now - oneTime) / oneDay  ) * value_ * (65))/10000;
                }else{
                    _earnAmount = (((now -  lastTime_  ) / oneDay ) * value_ * (65))/10000;
                }
                
            }else{// langer then 6 month
                uint256 oneTime = mainPoolSTime + 60*oneDay;
                uint256 twoTime = mainPoolSTime+ 120*oneDay;
                if(lastTime_ < oneTime){
                    _earnAmount = (((oneTime - lastTime_)/oneDay) * value_ * 70)/10000 + (60  * value_ * 65)/10000 + (((now - twoTime) / oneDay ) * value_ * 50)/10000;
                }else if(lastTime_ < twoTime){
                    _earnAmount = (((twoTime - lastTime_)/oneDay) * value_ * 65)/10000 + (((now - twoTime) / oneDay ) * value_ * (50))/10000;
                }else{
                    _earnAmount = (((now -  lastTime_  ) / oneDay ) * value_ * (50))/10000;
                } 
        
        }   
        
        
        
    }
    
    function calcStepIncome(uint256 pid_,uint256 value_,uint8 dividendAccount_) public{
    
        
            uint256    spIncome = (value_*dividendAccount_)/100;
                if(plyr[RID][pid_].totalSettled >= playBiggertReward[RID][pid_]){
                    return;
                }
                if(plyr[RID][pid_].totalSettled+spIncome>playBiggertReward[RID][pid_]){
                    spIncome = playBiggertReward[RID][pid_]-plyr[RID][pid_].totalSettled;
                }
                //if(mainPoolBalance[RID] > spIncome){
                    plyr[RID][pid_].stepIncome += spIncome;
                    //plyBalance[RID][pid_] += spIncome;
                    plyr[RID][pid_].totalSettled += spIncome;
                    mainPoolBalance[RID] -= spIncome;
                /*}else{
                    
                    plyr[RID][pid_].stepIncome += mainPoolBalance[RID];
                    //plyBalance[RID][pid_] += mainPoolBalance[RID];
                    plyr[RID][pid_].totalSettled += mainPoolBalance[RID];
                    mainPoolBalance[RID] =0;
                }*/
            
        
        
    }
    
    
    function startNewRount() internal {
        
        uint256 tisbalance;
        uint256 pid ;
        uint256 len = round[RID].rPlys;
        uint256 starti ;
        if(len > 100){
            starti = round[RID].rPlys-100;
        }
        for(uint256 i=starti ; i<len; i++){
            pid = round[RID].plyInList[len-i-1];
            luckPID[RID][pid] = true;
            tisbalance += plyr[RID][pid].ticketInCost *2;
            if(tisbalance>=insePoolBalance[RID]){
                //luckPID[RID][pid] = true;
                round[RID].fritInsePoint = len-i-1;
                round[RID].fritInseAmount = insePoolBalance[RID] - (tisbalance-plyr[RID][pid].ticketInCost *2);
                round[RID].totalInseAmount = insePoolBalance[RID];
                break;
            }else{
                
                if(i==len-1){
                    round[RID].fritInsePoint = starti;
                    round[RID].totalInseAmount = tisbalance ;
                }
            }
            
        }
        
        RID++;
        round[RID].rID = RID;
        round[RID].rStartTime = now;
        round[RID].rPlys = 0;
        mainPoolBalance[RID] = insePoolBalance[RID-1];
        mainPoolWithdrawBalance[RID] = insePoolBalance[RID-1];
        
        if(mainPoolLockBal[RID-1] > alreadyWithDrawBal[RID-1]   ){
            mainPoolBalance[RID] += mainPoolLockBal[RID-1]-alreadyWithDrawBal[RID-1];
            mainPoolWithdrawBalance[RID] += mainPoolLockBal[RID-1]-alreadyWithDrawBal[RID-1];
        }
        
        newRoundVIP();
    
    }
    
    function initVip(address ply_) internal{
       
        
        //lastPID = 18;
         
        //1
        if(ply_ == vip1Addr){initVIPInfo(vip1Addr,1,0);}
        if(ply_ == vip2Addr){initVIPInfo(vip2Addr,2,0);}
        if(ply_ == vip3Addr){initVIPInfo(vip3Addr,3,0);}
        if(ply_ == vip4Addr){initVIPInfo(vip4Addr,4,0); }
        if(ply_ == vip5Addr){initVIPInfo(vip5Addr,5,2);}
        
        if(ply_ == vip6Addr){initVIPInfo(vip6Addr,6,2);}
        if(ply_ == vip7Addr){initVIPInfo(vip7Addr,7,2);}
        if(ply_ == vip8Addr){initVIPInfo(vip8Addr,8,3);}
        if(ply_ == vip9Addr){initVIPInfo(vip9Addr,9,3);}
        if(ply_ == vip10Addr){initVIPInfo(vip10Addr,10,4);}
        if(ply_ == vip11Addr){initVIPInfo(vip11Addr,11,4);}
        
    
    }
    
    
    function initVIPInfo(address ply_,uint256 pid_ ,uint256 parentid_) internal{
        
        plyrID[ply_] = pid_;
        //plyr[RID][pid_].pID = pid_;
        plyrAddr[pid_] = ply_;
        plyr[RID][pid_].isActive = true;
        
        
        if(pid_ == 1){
            plyRShip[pid_].parentPID = 0;
            plyRShip[pid_].sonNumber = 3;
            plyRShip[pid_].sonPIDListMap[2] = true;
            plyRShip[pid_].sonPIDListMap[3] = true;
            plyRShip[pid_].sonPIDListMap[4] = true;
            //plyRShip[pid_].sonPIDList[1] = 2;
            //plyRShip[pid_].sonPIDList[2] = 3;
            //plyRShip[pid_].sonPIDList[3] = 4;
        }else if(pid_ == 2){
            plyRShip[pid_].parentPID = 1;
            plyRShip[pid_].sonNumber = 3;
            plyRShip[pid_].sonPIDListMap[5] = true;
            plyRShip[pid_].sonPIDListMap[6] = true;
            plyRShip[pid_].sonPIDListMap[7] = true;
            //plyRShip[pid_].sonPIDList[1] = 5;
            //plyRShip[pid_].sonPIDList[2] = 6;
            //plyRShip[pid_].sonPIDList[3] = 7;
        }else if(pid_ == 3 ){
            plyRShip[pid_].parentPID = 1;
            plyRShip[pid_].sonNumber = 2;
            plyRShip[pid_].sonPIDListMap[8] = true;
            plyRShip[pid_].sonPIDListMap[9] = true;
            //plyRShip[pid_].sonPIDList[1] = 8;
            //plyRShip[pid_].sonPIDList[2] = 9;
        }else if(pid_ == 4){
            plyRShip[pid_].parentPID = 1;
            plyRShip[pid_].sonNumber = 2;
            plyRShip[pid_].sonPIDListMap[10] = true;
            plyRShip[pid_].sonPIDListMap[11] = true;
            //plyRShip[pid_].sonPIDList[1] = 10;
            //plyRShip[pid_].sonPIDList[2] = 11;
        }else if(pid_ >=5 && pid_ <= 11){
           plyRShip[pid_].parentPID = parentid_; 
           ambRewardMap[pid_] = true;
           ambassadorList[ply_] = true;
       
        }
        
        plyRShip[pid_].topPID = 1;
        
    }
    
    function newRoundVIP() internal{
        for(uint8 i=1;i<=11;i++){
            playBiggertReward[RID][i] = playBiggertReward[RID-1][i];
            plyr[RID][i].isActive = true;
            plyr[RID][i].ticketInCost = plyr[RID][i-1].ticketInCost;
            plyr[RID][i].lastCalcSITime = plyr[RID-1][i].lastCalcSITime;
        }   
    }
    
    
    
}

File 2 of 3: AddrMInterface.sol
pragma solidity ^0.5.7;

interface AddrMInterface {
     function getAddr(string calldata name_) external view returns(address);
}

File 3 of 3: SafeMath.sol
pragma solidity ^0.5.7;


library SafeMath {
 
    function mul(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256 c) 
    {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b, "SafeMath mul failed");
        return c;
    }

  
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }
    
  
    function sub(uint256 a, uint256 b)
        internal
        pure
        returns (uint256) 
    {
        require(b <= a, "SafeMath sub failed");
        return a - b;
    }


    function add(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c) 
    {
        c = a + b;
        require(c >= a, "SafeMath add failed");
        return c;
    }
    

    function sqrt(uint256 x)
        internal
        pure
        returns (uint256 y) 
    {
        uint256 z = ((add(x,1)) / 2);
        y = x;
        while (z < y) 
        {
            y = z;
            z = ((add((x / z),z)) / 2);
        }
    }
    
    function sq(uint256 x)
        internal
        pure
        returns (uint256)
    {
        return (mul(x,x));
    }

    function pwr(uint256 x, uint256 y)
        internal 
        pure 
        returns (uint256)
    {
        if (x==0)
            return (0);
        else if (y==0)
            return (1);
        else 
        {
            uint256 z = x;
            for (uint256 i=1; i < y; i++)
                z = mul(z,x);
            return (z);
        }
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"plyrID","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ambassadorList","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"ambRewardBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"plyRShip","outputs":[{"name":"parentPID","type":"uint256"},{"name":"topPID","type":"uint256"},{"name":"sonNumber","type":"uint256"},{"name":"bigPotSonPID","type":"uint256"},{"name":"totalRecmdplys","type":"uint256"},{"name":"totalRecmdAmount","type":"uint256"},{"name":"nodeLevel","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"parentAddr","type":"address"}],"name":"joinGame","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"luckPID","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"rid_","type":"uint256"}],"name":"getPoolInfo","outputs":[{"name":"totalInBalance_","type":"uint256"},{"name":"totalDivBalance_","type":"uint256"},{"name":"totalInsBalance_","type":"uint256"},{"name":"totalPlayers_","type":"uint256"},{"name":"totalDisADC_","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round","outputs":[{"name":"rID","type":"uint256"},{"name":"rStartTime","type":"uint256"},{"name":"rPlys","type":"uint256"},{"name":"lastPID","type":"uint256"},{"name":"totalInseAmount","type":"uint256"},{"name":"fritInsePoint","type":"uint256"},{"name":"fritInseAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"plyr","outputs":[{"name":"ticketInCost","type":"uint256"},{"name":"withdrawAmount","type":"uint256"},{"name":"startTime","type":"uint256"},{"name":"totalSettled","type":"uint256"},{"name":"staticIncome","type":"uint256"},{"name":"lastCalcSITime","type":"uint256"},{"name":"dynamicIncome","type":"uint256"},{"name":"stepIncome","type":"uint256"},{"name":"isActive","type":"bool"},{"name":"isAlreadGetIns","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"oneDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"alreadyWithDrawBal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"playBiggertReward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RID","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalDistroyADC","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"mainPoolBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ply_","type":"address"},{"name":"rid_","type":"uint256"}],"name":"getPlayerInfo","outputs":[{"name":"stIncome_","type":"uint256"},{"name":"dtIncome_","type":"uint256"},{"name":"stepIncome_","type":"uint256"},{"name":"ambIncome_","type":"uint256"},{"name":"doubV6Income_","type":"uint256"},{"name":"totoalIncome_","type":"uint256"},{"name":"withdrawAmount_","type":"uint256"},{"name":"ticketIn_","type":"uint256"},{"name":"canWithdrawAmount_","type":"uint256"},{"name":"startTime_","type":"uint256"},{"name":"liveRountAmount_","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"allInBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"insePoolBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"mainPoolWithdrawBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pid_","type":"uint256"},{"name":"value_","type":"uint256"},{"name":"dividendAccount_","type":"uint8"}],"name":"calcStepIncome","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"mainPoolLockBal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ply_","type":"address"}],"name":"setAmbFlag","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"settlementStatic","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"ply_","type":"address"}],"name":"getPlayerRelship","outputs":[{"name":"sonNumber_","type":"uint256"},{"name":"allNumber_","type":"uint256"},{"name":"curLevel_","type":"uint256"},{"name":"isamb_","type":"bool"},{"name":"bigPotBalance_","type":"uint256"},{"name":"smailPotBalance_","type":"uint256"},{"name":"isDoubleV6_","type":"bool"},{"name":"distroyADC_","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mainPoolSTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRID","outputs":[{"name":"rid_","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"plyLucklyAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"addressM_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]

60806040523480156200001157600080fd5b506040516020806200655b833981018060405260208110156200003357600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d502db976040518163ffffffff1660e01b81526004018080602001828103825260068152602001807f5449434b4554000000000000000000000000000000000000000000000000000081525060200191505060206040518083038186803b1580156200012857600080fd5b505afa1580156200013d573d6000803e3d6000fd5b505050506040513d60208110156200015457600080fd5b8101908080519060200190929190505050600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d502db976040518163ffffffff1660e01b81526004018080602001828103825260038152602001807f414443000000000000000000000000000000000000000000000000000000000081525060200191505060206040518083038186803b1580156200024957600080fd5b505afa1580156200025e573d6000803e3d6000fd5b505050506040513d60208110156200027557600080fd5b8101908080519060200190929190505050600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260098190555060016011819055506060604051806101000160405280601154815260200142815260200160008152602001600b815260200160008152602001600181526020016000815260200182815250601260006011548152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070190805190602001906200039192919062000a62565b50905050600b601481905550680ad78ebc5ac6200000600b6000600160ff16815260200190815260200160002081905550682086ac351052600000600b6000600260ff16815260200190815260200160002081905550686c6b935b8bbd400000600b6000600360ff1681526020019081526020016000208190555069014542ba12a337c00000600b6000600460ff1681526020019081526020016000208190555069028a857425466f800000600b6000600560ff1681526020019081526020016000208190555069054b40b1f852bda00000600b6000600660ff168152602001908152602001600020819055506005600c6000600160ff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055506007600c6000600260ff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055506009600c6000600360ff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550600b600c6000600460ff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550600d600c6000600560ff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550600f600c6000600660ff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550620005b4620005bc60201b60201c565b505062000adc565b6001601c600073953ad059b61aa4a23fa48d5eca617d4920e3343e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c600073fbcb561d76a622341e6e537a17c5c17af33c462873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c600073669f366427ea8184fdcdcda6d6201a6baaf9b15673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c600073bca44b04e10e04b7fed7f262cad70a683d75398173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000730d3c20d9102200242398de26fdf09f29f435421b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c600073bb3c82cd454911f140b68fe2e67504af9a2b5d1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c600073be6dfd74af0848b9cf6c6dfbc8bb24d2920e6ade73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000735b9347799602d0164df3926c10f237543eaa5b9f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c600073a2221de49e4085be8098d1a8b4538734ce4977c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c600073ac1c0b39f3a1450e53ba0da1bcab5d9572dced5773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000737721a0c6eb2f2a056c48d107d0a2c4cff261e98c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b82805482825590600052602060002090810192821562000aa1579160200282015b8281111562000aa057825182559160200191906001019062000a83565b5b50905062000ab0919062000ab4565b5090565b62000ad991905b8082111562000ad557600081600090555060010162000abb565b5090565b90565b615a6f8062000aec6000396000f3fe6080604052600436106101b75760003560e01c806388cb86b8116100ec578063b5e8bf181161008a578063c92cdd9f11610064578063c92cdd9f146109c1578063cafeaeba14610a5f578063e6347b7114610a8a578063e65cec3a14610ab5576101b7565b8063b5e8bf181461090a578063bc95099914610959578063c87e0849146109aa576101b7565b80639cb03857116100c65780639cb03857146107cb578063a59833691461081a578063a9da1fb914610869578063aed3d0dd146108b8576101b7565b806388cb86b81461069c5780638dee17c8146106c75780639391c77a14610716576101b7565b806334d5f37b116101595780634bd9351b116101335780634bd9351b1461059e5780635129433e146105c95780636d8ed941146106185780636edf728314610671576101b7565b806334d5f37b1461046e5780633ccfd60b146104e75780633f3ec6f4146104fe576101b7565b80631c8fdef3116101955780631c8fdef3146102e35780632389a2901461036257806323ba5dd2146103a65780632f380b3514610403576101b7565b806302e79a0d146101bc5780630ad654a0146102215780630aef778c1461028a575b600080fd5b3480156101c857600080fd5b5061020b600480360360208110156101df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b0e565b6040518082815260200191505060405180910390f35b34801561022d57600080fd5b506102706004803603602081101561024457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b26565b604051808215151515815260200191505060405180910390f35b34801561029657600080fd5b506102cd600480360360408110156102ad57600080fd5b810190808035906020019092919080359060200190929190505050610b46565b6040518082815260200191505060405180910390f35b3480156102ef57600080fd5b5061031c6004803603602081101561030657600080fd5b8101908080359060200190929190505050610b6b565b604051808881526020018781526020018681526020018581526020018481526020018381526020018260ff1660ff16815260200197505050505050505060405180910390f35b6103a46004803603602081101561037857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bba565b005b3480156103b257600080fd5b506103e9600480360360408110156103c957600080fd5b81019080803590602001909291908035906020019092919050505061114a565b604051808215151515815260200191505060405180910390f35b34801561040f57600080fd5b5061043c6004803603602081101561042657600080fd5b8101908080359060200190929190505050611179565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b34801561047a57600080fd5b506104a76004803603602081101561049157600080fd5b81019080803590602001909291905050506111ea565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b3480156104f357600080fd5b506104fc61122c565b005b34801561050a57600080fd5b506105416004803603604081101561052157600080fd5b810190808035906020019092919080359060200190929190505050611db0565b604051808b81526020018a815260200189815260200188815260200187815260200186815260200185815260200184815260200183151515158152602001821515151581526020019a505050505050505050505060405180910390f35b3480156105aa57600080fd5b506105b3611e2b565b6040518082815260200191505060405180910390f35b3480156105d557600080fd5b50610602600480360360208110156105ec57600080fd5b8101908080359060200190929190505050611e32565b6040518082815260200191505060405180910390f35b34801561062457600080fd5b5061065b6004803603604081101561063b57600080fd5b810190808035906020019092919080359060200190929190505050611e4a565b6040518082815260200191505060405180910390f35b34801561067d57600080fd5b50610686611e6f565b6040518082815260200191505060405180910390f35b3480156106a857600080fd5b506106b1611e75565b6040518082815260200191505060405180910390f35b3480156106d357600080fd5b50610700600480360360208110156106ea57600080fd5b8101908080359060200190929190505050611e7b565b6040518082815260200191505060405180910390f35b34801561072257600080fd5b5061076f6004803603604081101561073957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e93565b604051808c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390f35b3480156107d757600080fd5b50610804600480360360208110156107ee57600080fd5b810190808035906020019092919050505061216f565b6040518082815260200191505060405180910390f35b34801561082657600080fd5b506108536004803603602081101561083d57600080fd5b8101908080359060200190929190505050612187565b6040518082815260200191505060405180910390f35b34801561087557600080fd5b506108a26004803603602081101561088c57600080fd5b810190808035906020019092919050505061219f565b6040518082815260200191505060405180910390f35b3480156108c457600080fd5b50610908600480360360608110156108db57600080fd5b810190808035906020019092919080359060200190929190803560ff1690602001909291905050506121b7565b005b34801561091657600080fd5b506109436004803603602081101561092d57600080fd5b810190808035906020019092919050505061236d565b6040518082815260200191505060405180910390f35b34801561096557600080fd5b506109a86004803603602081101561097c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612385565b005b3480156109b657600080fd5b506109bf61255e565b005b3480156109cd57600080fd5b50610a10600480360360208110156109e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129bc565b6040518089815260200188815260200187815260200186151515158152602001858152602001848152602001831515151581526020018281526020019850505050505050505060405180910390f35b348015610a6b57600080fd5b50610a74612b67565b6040518082815260200191505060405180910390f35b348015610a9657600080fd5b50610a9f612b6d565b6040518082815260200191505060405180910390f35b348015610ac157600080fd5b50610af860048036036040811015610ad857600080fd5b810190808035906020019092919080359060200190929190505050612b77565b6040518082815260200191505060405180910390f35b60176020528060005260406000206000915090505481565b601f6020528060005260406000206000915054906101000a900460ff1681565b6021602052816000526040600020602052806000526040600020600091509150505481565b60156020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060160009054906101000a900460ff16905087565b336000813b905060008114610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526000815260200160200191505060405180910390fd5b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415610d02578373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610d01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f706172656e742073616d65206173206d73672073656e6465720000000000000081525060200191505060405180910390fd5b5b610d0c3334612b9c565b610d7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f636865636b207469636b6574206661696c00000000000000000000000000000081525060200191505060405180910390fd5b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600060166000601154815260200190815260200160002060008481526020019081526020016000206000015490508060036000601154815260200190815260200160002060008282540192505081905550600084148015610eb15750601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f2d578160156000858152602001908152602001600020600001819055506000821415610efa57826015600085815260200190815260200160002060010181905550610f2c565b601560008381526020019081526020016000206001015460156000858152602001908152602001600020600101819055505b5b6001601154118015610f895750601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610fb35750601d600083815260200190815260200160002060009054906101000a900460ff16155b15610fed57610fec8383601660006011548152602001908152602001600020600087815260200190815260200160002060000154613461565b5b690a968163f0a57b40000060086000601154815260200190815260200160002054106110815780600560006011548152602001908152602001600020600082825401925050819055508060046000601154815260200190815260200160002060008282540192505081905550806006600060115481526020019081526020016000206000828254019250508190555061112e565b60006064605f83028161109057fe5b049050606460058302816110a057fe5b0460086000601154815260200190815260200160002060008282540192505081905550806005600060115481526020019081526020016000206000828254019250508190555080600460006011548152602001908152602001600020600082825401925050819055508060066000601154815260200190815260200160002060008282540192505081905550505b61113883826136d1565b611141836139c4565b50505050505050565b60136020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600080600060036000878152602001908152602001600020549450600560008781526020019081526020016000205493506008600087815260200190815260200160002054925060126000878152602001908152602001600020600301549150600a54905091939590929450565b60126020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000809050601660006011548152602001908152602001600020600083815260200190815260200160002060080160009054906101000a900460ff1661131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f706c79206e6f742061637469766500000000000000000000000000000000000081525060200191505060405180910390fd5b600060066000601154815260200190815260200160002054116113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f706f6f6c206e6f742077697468647261772062616c616e63650000000000000081525060200191505060405180910390fd5b60016011541180156113f25750601660006001601154038152602001908152602001600020600083815260200190815260200160002060080160019054906101000a900460ff16155b1561164357601360006001601154038152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff1680156114525750600060086000600160115403815260200190815260200160002054115b1561164257601260006001601154038152602001908152602001600020600701601260006001601154038152602001908152602001600020600501548154811061149857fe5b90600052602060002001548214156114f35760126000600160115403815260200190815260200160002060060154905080600860006001601154038152602001908152602001600020600082825403925050819055506115ab565b600260166000600160115403815260200190815260200160002060008481526020019081526020016000206000015402905060086000600160115403815260200190815260200160002054811115611583576000600860006001601154038152602001908152602001600020819055506008600060016011540381526020019081526020016000205490506115aa565b80600860006001601154038152602001908152602001600020600082825403925050819055505b5b80600560006011548152602001908152602001600020600082825403925050819055506001601660006001601154038152602001908152602001600020600084815260200190815260200160002060080160016101000a81548160ff02191690831515021790555080601e600060016011540381526020019081526020016000206000848152602001908152602001600020819055505b5b600060196000601154815260200190815260200160002060008481526020019081526020016000205460166000601154815260200190815260200160002060008581526020019081526020016000206003015411156116f1576019600060115481526020019081526020016000206000848152602001908152602001600020546016600060115481526020019081526020016000206000858152602001908152602001600020600301540390505b60008214156117715760008111611770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6e6f7420656e6f756768742062616c616e63652063616e20776974686472617781525060200191505060405180910390fd5b5b60008282019050600660006011548152602001908152602001600020548111156117ae576006600060115481526020019081526020016000205490505b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635529f8cd8360006040518363ffffffff1660e01b8152600401808381526020018215151515815260200192505050602060405180830381600087803b15801561183257600080fd5b505af1158015611846573d6000803e3d6000fd5b505050506040513d602081101561185c57600080fd5b8101908080519060200190929190505050905080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561190f57600080fd5b505afa158015611923573d6000803e3d6000fd5b505050506040513d602081101561193957600080fd5b8101908080519060200190929190505050116119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6e6f742061646320746f20627579206f75742074696b6365740000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c363789733836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611a6657600080fd5b505af1158015611a7a573d6000803e3d6000fd5b5050505080601b60008781526020019081526020016000206000828254019250508190555080600a60008282540192505081905550600660006011548152602001908152602001600020548210611bcb576000600660006011548152602001908152602001600020819055506006600060115481526020019081526020016000205460166000601154815260200190815260200160002060008781526020019081526020016000206001016000828254019250508190555060066000601154815260200190815260200160002054600760006011548152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc600660006011548152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015611bc5573d6000803e3d6000fd5b50611c90565b81600660006011548152602001908152602001600020600082825403925050819055508260166000601154815260200190815260200160002060008781526020019081526020016000206001016000828254019250508190555081600760006011548152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611c8e573d6000803e3d6000fd5b505b8260196000601154815260200190815260200160002060008781526020019081526020016000206000828254019250508190555060006016600060115481526020019081526020016000206000878152602001908152602001600020600401819055506000601660006011548152602001908152602001600020600087815260200190815260200160002060060181905550600060166000601154815260200190815260200160002060008781526020019081526020016000206007018190555060006021600060115481526020019081526020016000206000878152602001908152602001600020819055506000600f600060115481526020019081526020016000206000878152602001908152602001600020819055505050505050565b6016602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080160009054906101000a900460ff16908060080160019054906101000a900460ff1690508a565b6201518081565b60076020528060005260406000206000915090505481565b601a602052816000526040600020602052806000526040600020600091509150505481565b60115481565b600a5481565b60056020528060005260406000206000915090505481565b600080600080600080600080600080600080601760008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601660008e81526020019081526020016000206000828152602001908152602001600020600401549b50601660008e81526020019081526020016000206000828152602001908152602001600020600601549a50601660008e81526020019081526020016000206000828152602001908152602001600020600701549950602160008e81526020019081526020016000206000828152602001908152602001600020549850600f60008e81526020019081526020016000206000828152602001908152602001600020549750601660008e81526020019081526020016000206000828152602001908152602001600020600301549650601660008e81526020019081526020016000206000828152602001908152602001600020600001549450601660008e81526020019081526020016000206000828152602001908152602001600020600101549550601660008e8152602001908152602001600020600082815260200190815260200160002060010154601660008f815260200190815260200160002060008381526020019081526020016000206003015411156120df57601660008e8152602001908152602001600020600082815260200190815260200160002060010154601660008f81526020019081526020016000206000838152602001908152602001600020600301540393506120e4565b600093505b601660008e81526020019081526020016000206000828152602001908152602001600020600201549250601660008e8152602001908152602001600020600082815260200190815260200160002060030154601a60008f8152602001908152602001600020600083815260200190815260200160002054039150509295989b509295989b9093969950565b60036020528060005260406000206000915090505481565b60086020528060005260406000206000915090505481565b60066020528060005260406000206000915090505481565b600060648260ff168402816121c857fe5b049050601a60006011548152602001908152602001600020600085815260200190815260200160002054601660006011548152602001908152602001600020600086815260200190815260200160002060030154106122275750612368565b601a60006011548152602001908152602001600020600085815260200190815260200160002054816016600060115481526020019081526020016000206000878152602001908152602001600020600301540111156122d557601660006011548152602001908152602001600020600085815260200190815260200160002060030154601a600060115481526020019081526020016000206000868152602001908152602001600020540390505b80601660006011548152602001908152602001600020600086815260200190815260200160002060070160008282540192505081905550806016600060115481526020019081526020016000206000868152602001908152602001600020600301600082825401925050819055508060056000601154815260200190815260200160002060008282540392505081905550505b505050565b60046020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d502db976040518163ffffffff1660e01b81526004018080602001828103825260068152602001807f5449434b4554000000000000000000000000000000000000000000000000000081525060200191505060206040518083038186803b15801561242857600080fd5b505afa15801561243c573d6000803e3d6000fd5b505050506040513d602081101561245257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6d73672073656e646572206e6f74205449434b4554000000000000000000000081525060200191505060405180910390fd5b6001601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008090506000601660006011548152602001908152602001600020600084815260200190815260200160002090508060080160009054906101000a900460ff16612655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6e6f74206163746976650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008160000154116126cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6e6f74206368617267650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b601a6000601154815260200190815260200160002060008481526020019081526020016000205481600301541061276e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f616c726561647920746f20746f7020726577617264000000000000000000000081525060200191505060405180910390fd5b6201518081600501544203116127ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6e6f7420656e6f75676874206f6e65206461790000000000000000000000000081525060200191505060405180910390fd5b6000816005015414156128125761280b81600201548260000154613a79565b9150612839565b620151808160050154420311156128385761283581600501548260000154613a79565b91505b5b601a6000601154815260200190815260200160002060008481526020019081526020016000205482826003015401111561289d578060030154601a600060115481526020019081526020016000206000858152602001908152602001600020540391505b60008214156128ae575050506129ba565b8160056000601154815260200190815260200160002054111561292157818160040160008282540192505081905550818160030160008282540192505081905550816005600060115481526020019081526020016000206000828254039250508190555061291c8383613c42565b612993565b6005600060115481526020019081526020016000205481600401600082825401925050819055506005600060115481526020019081526020016000205481600301600082825401925050819055506000600560006011548152602001908152602001600020819055506129926142e6565b5b620151808082600201544203816129a657fe5b040281600201540181600501819055505050505b565b6000806000806000806000806000601760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060156000828152602001908152602001600020600201549850601560008281526020019081526020016000206004015497506015600082815260200190815260200160002060060160009054906101000a900460ff1660ff16965060156000828152602001908152602001600020600801600060156000848152602001908152602001600020600301548152602001908152602001600020549450600e600082815260200190815260200160002060009054906101000a900460ff169250601b6000828152602001908152602001600020549150601560008281526020019081526020016000206008016000601560008481526020019081526020016000206003015481526020019081526020016000205460156000838152602001908152602001600020600501540393506020600082815260200190815260200160002060009054906101000a900460ff16955050919395975091939597565b60095481565b6000601154905090565b601e602052816000526040600020602052806000526040600020600091509150505481565b6000601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bfa57612bf9836146cf565b5b6000601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000808214612e6957601a6000601154815260200190815260200160002060008381526020019081526020016000205460166000601154815260200190815260200160002060008481526020019081526020016000206003015410612e68576000601660006011548152602001908152602001600020600084815260200190815260200160002060030181905550600060166000601154815260200190815260200160002060008481526020019081526020016000206001018190555060006016600060115481526020019081526020016000206000848152602001908152602001600020600001819055506000601660006011548152602001908152602001600020600084815260200190815260200160002060040181905550600060166000601154815260200190815260200160002060008481526020019081526020016000206006018190555060006016600060115481526020019081526020016000206000848152602001908152602001600020600701819055506000601a6000601154815260200190815260200160002060008481526020019081526020016000208190555060006021600060115481526020019081526020016000206000848152602001908152602001600020819055506000600f6000601154815260200190815260200160002060008481526020019081526020016000208190555060006019600060115481526020019081526020016000206000848152602001908152602001600020819055505b5b60006016600060115481526020019081526020016000206000848152602001908152602001600020600001541115612ea65760009250505061345b565b670de0b6b3a7640000841015612f24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7472616e7366657220746f20736d61696c00000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635529f8cd8560016040518363ffffffff1660e01b8152600401808381526020018215151515815260200192505050602060405180830381600087803b158015612fa657600080fd5b505af1158015612fba573d6000803e3d6000fd5b505050506040513d6020811015612fd057600080fd5b81019080805190602001909291905050509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c363789786836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561308c57600080fd5b505af11580156130a0573d6000803e3d6000fd5b5050505080600a60008282540192505081905550600082141561322b576001601460008282540192505081905550601454915081601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550846018600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660006011548152602001908152602001600020600084815260200190815260200160002060080160006101000a81548160ff021916908315150217905550601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561322a5760016020600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b80601b6000848152602001908152602001600020600082825401925050819055504260166000601154815260200190815260200160002060008481526020019081526020016000206002018190555083601660006011548152602001908152602001600020600084815260200190815260200160002060000181905550601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561336357614e208402601a600060115481526020019081526020016000206000848152602001908152602001600020600082825401925050819055506001601d600084815260200190815260200160002060006101000a81548160ff021916908315150217905550613454565b6801ae361fc1451c000084106133af5760038402601a60006011548152602001908152602001600020600084815260200190815260200160002060008282540192505081905550613453565b6801ae361fc1451c0000841080156133cf57506798a7d9b8314c00008410155b1561341a57600a60198502816133e157fe5b04601a60006011548152602001908152602001600020600084815260200190815260200160002060008282540192505081905550613452565b60028402601a600060115481526020019081526020016000206000848152602001908152602001600020600082825401925050819055505b5b5b6001925050505b92915050565b601660006011548152602001908152602001600020600083815260200190815260200160002060080160009054906101000a900460ff166136cc57678ac7230489e8000081101580156134e6575060156000838152602001908152602001600020600701600084815260200190815260200160002060009054906101000a900460ff16155b156136cb576001601660006011548152602001908152602001600020600084815260200190815260200160002060080160006101000a81548160ff021916908315150217905550601660006001601154038152602001908152602001600020600083815260200190815260200160002060030154601a6000600160115403815260200190815260200160002060008481526020019081526020016000205411156136ca57601660006001601154038152602001908152602001600020600083815260200190815260200160002060030154601a6000600160115403815260200190815260200160002060008481526020019081526020016000205403601a600060115481526020019081526020016000206000848152602001908152602001600020600082825401925050819055506016600060016011540381526020019081526020016000206000838152602001908152602001600020600001546016600060115481526020019081526020016000206000848152602001908152602001600020600001819055506016600060016011540381526020019081526020016000206000838152602001908152602001600020600501546016600060115481526020019081526020016000206000848152602001908152602001600020600501819055505b5b5b505050565b60008060105411156139b557601054606460038402816136ed57fe5b04816136f557fe5b049050600080600190505b60105481116139b257600d600082815260200190815260200160002054915060016011541480613771575060016011541180156137705750601660006011548152602001908152602001600020600083815260200190815260200160002060080160009054906101000a900460ff165b5b156139a457601a60006011548152602001908152602001600020600083815260200190815260200160002054601660006011548152602001908152602001600020600084815260200190815260200160002060030154106137d1576139a5565b601a6000601154815260200190815260200160002060008381526020019081526020016000205483601660006011548152602001908152602001600020600085815260200190815260200160002060030154011115613914576000601660006011548152602001908152602001600020600084815260200190815260200160002060030154601a600060115481526020019081526020016000206000858152602001908152602001600020540390508060166000601154815260200190815260200160002060008581526020019081526020016000206003016000828254019250508190555080600f600060115481526020019081526020016000206000858152602001908152602001600020600082825401925050819055508060056000601154815260200190815260200160002060008282540392505081905550506139a3565b82600f600060115481526020019081526020016000206000848152602001908152602001600020600082825401925050819055508260166000601154815260200190815260200160002060008481526020019081526020016000206003016000828254019250508190555082600560006011548152602001908152602001600020600082825403925050819055505b5b5b8080600101915050613700565b50505b6139bf8383614b60565b505050565b601d600082815260200190815260200160002060009054906101000a900460ff16156139ef57613a76565b60016012600060115481526020019081526020016000206002016000828254019250508190555080601260006011548152602001908152602001600020600301819055506012600060115481526020019081526020016000206007018190806001815401808255809150509060018203906000526020600020016000909192909190915055505b50565b600062015180603c02600954420311613ab2576127106046836201518086420381613aa057fe5b04020281613aaa57fe5b049050613c3c565b62015180607802600954420311613b4857600062015180603c0260095401905080841015613b20576127106041846201518084420381613aee57fe5b04020281613af857fe5b046127106046856201518088860381613b0d57fe5b04020281613b1757fe5b04019150613b42565b6127106041846201518087420381613b3457fe5b04020281613b3e57fe5b0491505b50613c3b565b600062015180603c0260095401905060006201518060780260095401905081851015613bc7576127106032856201518084420381613b8257fe5b04020281613b8c57fe5b04612710604186603c020281613b9e57fe5b04612710604687620151808a880381613bb357fe5b04020281613bbd57fe5b0401019250613c38565b80851015613c15576127106032856201518084420381613be357fe5b04020281613bed57fe5b046127106041866201518089860381613c0257fe5b04020281613c0c57fe5b04019250613c37565b6127106032856201518088420381613c2957fe5b04020281613c3357fe5b0492505b5b50505b5b92915050565b600060156000848152602001908152602001600020600001549050600060156000838152602001908152602001600020600201549050600080905060008490506000600190505b60088160ff16116142dc578591506000851415613caa5750505050506142e2565b601a60006011548152602001908152602001600020600086815260200190815260200160002054601660006011548152602001908152602001600020600087815260200190815260200160002060030154101580613d3c5750601660006011548152602001908152602001600020600086815260200190815260200160002060080160009054906101000a900460ff16155b15613d785760156000868152602001908152602001600020600001549450601560008681526020019081526020016000206002015493506142cf565b601d600086815260200190815260200160002060009054906101000a900460ff16158015613dd75750678ac7230489e8000060166000601154815260200190815260200160002060008781526020019081526020016000206000015411155b8015613e345750601660006011548152602001908152602001600020600088815260200190815260200160002060000154601660006011548152602001908152602001600020600087815260200190815260200160002060000154105b15613f655760006016600060115481526020019081526020016000206000898152602001908152602001600020600501541415613ece57613ec7601660006011548152602001908152602001600020600089815260200190815260200160002060020154601660006011548152602001908152602001600020600088815260200190815260200160002060000154613a79565b9150613f64565b6201518060166000601154815260200190815260200160002060008981526020019081526020016000206005015442031115613f6357613f60601660006011548152602001908152602001600020600089815260200190815260200160002060050154601660006011548152602001908152602001600020600088815260200190815260200160002060000154613a79565b91505b5b5b60018160ff161415613f865760646014830281613f7e57fe5b049250613fe8565b60028160ff1610158015613f9e575060038160ff1611155b15613fb8576064600a830281613fb057fe5b049250613fe7565b60048160ff1610158015613fd0575060088160ff1611155b15613fe65760646005830281613fe257fe5b0492505b5b5b60038160ff161480613ffd575060048160ff16145b1561401557600284101561401057600092505b61406d565b60058160ff16148061402a575060068160ff16145b1561404257600384101561403d57600092505b61406c565b60078160ff161480614057575060088160ff16145b1561406b57600484101561406a57600092505b5b5b5b600083111561429857601a600060115481526020019081526020016000206000868152602001908152602001600020548360166000601154815260200190815260200160002060008881526020019081526020016000206003015401111561412457601660006011548152602001908152602001600020600086815260200190815260200160002060030154601a600060115481526020019081526020016000206000878152602001908152602001600020540392505b826005600060115481526020019081526020016000205411156141d75782601660006011548152602001908152602001600020600087815260200190815260200160002060060160008282540192505081905550826016600060115481526020019081526020016000206000878152602001908152602001600020600301600082825401925050819055508260056000601154815260200190815260200160002060008282540392505081905550614297565b60056000601154815260200190815260200160002054601660006011548152602001908152602001600020600087815260200190815260200160002060060160008282540192505081905550600560006011548152602001908152602001600020546016600060115481526020019081526020016000206000878152602001908152602001600020600301600082825401925050819055506000600560006011548152602001908152602001600020819055506142926142e6565b6142dc565b5b6000925060156000868152602001908152602001600020600001549450601560008681526020019081526020016000206002015493505b8080600101915050613c89565b50505050505b5050565b600080600060126000601154815260200190815260200160002060020154905060006064821115614330576064601260006011548152602001908152602001600020600201540390505b60008190505b8281101561450d576012600060115481526020019081526020016000206007016001828503038154811061436657fe5b906000526020600020015493506001601360006011548152602001908152602001600020600086815260200190815260200160002060006101000a81548160ff021916908315150217905550600260166000601154815260200190815260200160002060008681526020019081526020016000206000015402850194506008600060115481526020019081526020016000205485106144ba57600181840303601260006011548152602001908152602001600020600501819055506002601660006011548152602001908152602001600020600086815260200190815260200160002060000154028503600860006011548152602001908152602001600020540360126000601154815260200190815260200160002060060181905550600860006011548152602001908152602001600020546012600060115481526020019081526020016000206004018190555061450d565b6001830381141561450057816012600060115481526020019081526020016000206005018190555084601260006011548152602001908152602001600020600401819055505b8080600101915050614336565b5060116000815480929190600101919050555060115460126000601154815260200190815260200160002060000181905550426012600060115481526020019081526020016000206001018190555060006012600060115481526020019081526020016000206002018190555060086000600160115403815260200190815260200160002054600560006011548152602001908152602001600020819055506008600060016011540381526020019081526020016000205460066000601154815260200190815260200160002081905550600760006001601154038152602001908152602001600020546004600060016011540381526020019081526020016000205411156146c15760076000600160115403815260200190815260200160002054600460006001601154038152602001908152602001600020540360056000601154815260200190815260200160002060008282540192505081905550600760006001601154038152602001908152602001600020546004600060016011540381526020019081526020016000205403600660006011548152602001908152602001600020600082825401925050819055505b6146c9614f4b565b50505050565b73953ad059b61aa4a23fa48d5eca617d4920e3343e73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156147395761473873953ad059b61aa4a23fa48d5eca617d4920e3343e600160006150cc565b5b73fbcb561d76a622341e6e537a17c5c17af33c462873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156147a3576147a273fbcb561d76a622341e6e537a17c5c17af33c4628600260006150cc565b5b73669f366427ea8184fdcdcda6d6201a6baaf9b15673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561480d5761480c73669f366427ea8184fdcdcda6d6201a6baaf9b156600360006150cc565b5b73bca44b04e10e04b7fed7f262cad70a683d75398173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156148775761487673bca44b04e10e04b7fed7f262cad70a683d753981600460006150cc565b5b730d3c20d9102200242398de26fdf09f29f435421b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156148e1576148e0730d3c20d9102200242398de26fdf09f29f435421b600560026150cc565b5b73bb3c82cd454911f140b68fe2e67504af9a2b5d1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561494b5761494a73bb3c82cd454911f140b68fe2e67504af9a2b5d16600660026150cc565b5b73be6dfd74af0848b9cf6c6dfbc8bb24d2920e6ade73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156149b5576149b473be6dfd74af0848b9cf6c6dfbc8bb24d2920e6ade600760026150cc565b5b735b9347799602d0164df3926c10f237543eaa5b9f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614a1f57614a1e735b9347799602d0164df3926c10f237543eaa5b9f600860036150cc565b5b73a2221de49e4085be8098d1a8b4538734ce4977c773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614a8957614a8873a2221de49e4085be8098d1a8b4538734ce4977c7600960036150cc565b5b73ac1c0b39f3a1450e53ba0da1bcab5d9572dced5773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614af357614af273ac1c0b39f3a1450e53ba0da1bcab5d9572dced57600a60046150cc565b5b737721a0c6eb2f2a056c48d107d0a2c4cff261e98c73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614b5d57614b5c737721a0c6eb2f2a056c48d107d0a2c4cff261e98c600b60046150cc565b5b50565b600080839050600080600080905060606078604051908082528060200260200182016040528015614ba05781602001602082028038833980820191505090505b5090506000806000905060008090505b60788160ff161015614f145760156000898152602001908152602001600020600001549850601560008a815260200190815260200160002060060160009054906101000a900460ff1695506000891415614c0957614f14565b602060008a815260200190815260200160002060009054906101000a900460ff168015614c365750600082145b8015614c75575060166000601154815260200190815260200160002060008a815260200190815260200160002060080160009054906101000a900460ff165b15614c7e578891505b614c89888a8c615622565b60008660ff161115614de05760068660ff16148015614ca9575060018710155b8015614cd35750600e60008a815260200190815260200160002060009054906101000a900460ff16155b15614d30576001600e60008b815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000828254019250508190555088600d60006010548152602001908152602001600020819055505b60068660ff16148015614d615750600e60008a815260200190815260200160002060009054906101000a900460ff16155b15614d6f5786806001019750505b60166000601154815260200190815260200160002060008a815260200190815260200160002060080160009054906101000a900460ff1615614ddf578460ff168660ff161115614dde5785945088848481518110614dc957fe5b60200260200101818152505082806001019350505b5b5b6798a7d9b8314c000060166000601154815260200190815260200160002060008b81526020019081526020016000206000015410158015614e3857506005601560008b81526020019081526020016000206002015410155b15614f04576000600190505b60068160ff1611614f0257600b60008260ff1660ff16815260200190815260200160002054601560008c81526020019081526020016000206008016000601560008e815260200190815260200160002060030154815260200190815260200160002054601560008d815260200190815260200160002060050154031115614ef55780601560008c815260200190815260200160002060060160006101000a81548160ff021916908360ff1602179055505b8080600101915050614e44565b505b8897508080600101915050614bb0565b506000821115614f2b57614f2a8284868c61571d565b5b6000811115614f3f57614f3e818a615889565b5b50505050505050505050565b6000600190505b600b8160ff16116150c957601a6000600160115403815260200190815260200160002060008260ff16815260200190815260200160002054601a6000601154815260200190815260200160002060008360ff16815260200190815260200160002081905550600160166000601154815260200190815260200160002060008360ff16815260200190815260200160002060080160006101000a81548160ff02191690831515021790555060166000601154815260200190815260200160002060006001830360ff1681526020019081526020016000206000015460166000601154815260200190815260200160002060008360ff1681526020019081526020016000206000018190555060166000600160115403815260200190815260200160002060008260ff1681526020019081526020016000206005015460166000601154815260200190815260200160002060008360ff168152602001908152602001600020600501819055508080600101915050614f52565b50565b81601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550826018600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660006011548152602001908152602001600020600084815260200190815260200160002060080160006101000a81548160ff02191690831515021790555060018214156152ad57600060156000848152602001908152602001600020600001819055506003601560008481526020019081526020016000206002018190555060016015600084815260200190815260200160002060070160006002815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600084815260200190815260200160002060070160006003815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600084815260200190815260200160002060070160006004815260200190815260200160002060006101000a81548160ff021916908315150217905550615601565b60028214156153b657600160156000848152602001908152602001600020600001819055506003601560008481526020019081526020016000206002018190555060016015600084815260200190815260200160002060070160006005815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600084815260200190815260200160002060070160006006815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600084815260200190815260200160002060070160006007815260200190815260200160002060006101000a81548160ff021916908315150217905550615600565b600382141561547e57600160156000848152602001908152602001600020600001819055506002601560008481526020019081526020016000206002018190555060016015600084815260200190815260200160002060070160006008815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600084815260200190815260200160002060070160006009815260200190815260200160002060006101000a81548160ff0219169083151502179055506155ff565b60048214156155465760016015600084815260200190815260200160002060000181905550600260156000848152602001908152602001600020600201819055506001601560008481526020019081526020016000206007016000600a815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560008481526020019081526020016000206007016000600b815260200190815260200160002060006101000a81548160ff0219169083151502179055506155fe565b600582101580156155585750600b8211155b156155fd5780601560008481526020019081526020016000206000018190555060016020600084815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b5b60016015600084815260200190815260200160002060010181905550505050565b600060156000848152602001908152602001600020905080600701600085815260200190815260200160002060009054906101000a900460ff166156a25760018160020160008282540192505081905550600181600701600086815260200190815260200160002060006101000a81548160ff0219169083151502179055505b81816008016000868152602001908152602001600020600082825401925050819055508181600501600082825401925050819055508060080160008260030154815260200190815260200160002054816008016000868152602001908152602001600020541115615717578381600301819055505b50505050565b6000600c60008460ff1660ff16815260200190815260200160002060009054906101000a900460ff16905060008060008060008090505b898160ff16101561587d57888160ff168151811061576e57fe5b602002602001015191506015600083815260200190815260200160002060060160009054906101000a900460ff16925060008560ff1614156157d857600c60008460ff1660ff16815260200190815260200160002060009054906101000a900460ff169350615843565b84600c60008560ff1660ff16815260200190815260200160002060009054906101000a900460ff160360ff168660ff16111561583e5784600c60008560ff1660ff16815260200190815260200160002060009054906101000a900460ff16039350615842565b8593505b5b61584e8288866121b7565b83850194508360ff168660ff16111561586b578386039550615870565b61587d565b8080600101915050615754565b50505050505050505050565b6000601a600060115481526020019081526020016000206000848152602001908152602001600020546016600060115481526020019081526020016000206000858152602001908152602001600020600301541015615a3e57601a600060115481526020019081526020016000206000848152602001908152602001600020546064600584028161591657fe5b04601660006011548152602001908152602001600020600086815260200190815260200160002060030154011161595a576064600583028161595457fe5b046159ad565b601660006011548152602001908152602001600020600084815260200190815260200160002060030154601a60006011548152602001908152602001600020600085815260200190815260200160002054035b9050806016600060115481526020019081526020016000206000858152602001908152602001600020600301600082825401925050819055508060216000601154815260200190815260200160002060008581526020019081526020016000206000828254019250508190555080600560006011548152602001908152602001600020600082825403925050819055505b50505056fea165627a7a7230582000ed826875b4610194c1e09fd9d39b07cf2f4936717190ee5c5b18bf3ba564a7002900000000000000000000000049e298b95bda30e6518509187ff348e01117f404

Deployed Bytecode

0x6080604052600436106101b75760003560e01c806388cb86b8116100ec578063b5e8bf181161008a578063c92cdd9f11610064578063c92cdd9f146109c1578063cafeaeba14610a5f578063e6347b7114610a8a578063e65cec3a14610ab5576101b7565b8063b5e8bf181461090a578063bc95099914610959578063c87e0849146109aa576101b7565b80639cb03857116100c65780639cb03857146107cb578063a59833691461081a578063a9da1fb914610869578063aed3d0dd146108b8576101b7565b806388cb86b81461069c5780638dee17c8146106c75780639391c77a14610716576101b7565b806334d5f37b116101595780634bd9351b116101335780634bd9351b1461059e5780635129433e146105c95780636d8ed941146106185780636edf728314610671576101b7565b806334d5f37b1461046e5780633ccfd60b146104e75780633f3ec6f4146104fe576101b7565b80631c8fdef3116101955780631c8fdef3146102e35780632389a2901461036257806323ba5dd2146103a65780632f380b3514610403576101b7565b806302e79a0d146101bc5780630ad654a0146102215780630aef778c1461028a575b600080fd5b3480156101c857600080fd5b5061020b600480360360208110156101df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b0e565b6040518082815260200191505060405180910390f35b34801561022d57600080fd5b506102706004803603602081101561024457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b26565b604051808215151515815260200191505060405180910390f35b34801561029657600080fd5b506102cd600480360360408110156102ad57600080fd5b810190808035906020019092919080359060200190929190505050610b46565b6040518082815260200191505060405180910390f35b3480156102ef57600080fd5b5061031c6004803603602081101561030657600080fd5b8101908080359060200190929190505050610b6b565b604051808881526020018781526020018681526020018581526020018481526020018381526020018260ff1660ff16815260200197505050505050505060405180910390f35b6103a46004803603602081101561037857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bba565b005b3480156103b257600080fd5b506103e9600480360360408110156103c957600080fd5b81019080803590602001909291908035906020019092919050505061114a565b604051808215151515815260200191505060405180910390f35b34801561040f57600080fd5b5061043c6004803603602081101561042657600080fd5b8101908080359060200190929190505050611179565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b34801561047a57600080fd5b506104a76004803603602081101561049157600080fd5b81019080803590602001909291905050506111ea565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b3480156104f357600080fd5b506104fc61122c565b005b34801561050a57600080fd5b506105416004803603604081101561052157600080fd5b810190808035906020019092919080359060200190929190505050611db0565b604051808b81526020018a815260200189815260200188815260200187815260200186815260200185815260200184815260200183151515158152602001821515151581526020019a505050505050505050505060405180910390f35b3480156105aa57600080fd5b506105b3611e2b565b6040518082815260200191505060405180910390f35b3480156105d557600080fd5b50610602600480360360208110156105ec57600080fd5b8101908080359060200190929190505050611e32565b6040518082815260200191505060405180910390f35b34801561062457600080fd5b5061065b6004803603604081101561063b57600080fd5b810190808035906020019092919080359060200190929190505050611e4a565b6040518082815260200191505060405180910390f35b34801561067d57600080fd5b50610686611e6f565b6040518082815260200191505060405180910390f35b3480156106a857600080fd5b506106b1611e75565b6040518082815260200191505060405180910390f35b3480156106d357600080fd5b50610700600480360360208110156106ea57600080fd5b8101908080359060200190929190505050611e7b565b6040518082815260200191505060405180910390f35b34801561072257600080fd5b5061076f6004803603604081101561073957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e93565b604051808c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390f35b3480156107d757600080fd5b50610804600480360360208110156107ee57600080fd5b810190808035906020019092919050505061216f565b6040518082815260200191505060405180910390f35b34801561082657600080fd5b506108536004803603602081101561083d57600080fd5b8101908080359060200190929190505050612187565b6040518082815260200191505060405180910390f35b34801561087557600080fd5b506108a26004803603602081101561088c57600080fd5b810190808035906020019092919050505061219f565b6040518082815260200191505060405180910390f35b3480156108c457600080fd5b50610908600480360360608110156108db57600080fd5b810190808035906020019092919080359060200190929190803560ff1690602001909291905050506121b7565b005b34801561091657600080fd5b506109436004803603602081101561092d57600080fd5b810190808035906020019092919050505061236d565b6040518082815260200191505060405180910390f35b34801561096557600080fd5b506109a86004803603602081101561097c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612385565b005b3480156109b657600080fd5b506109bf61255e565b005b3480156109cd57600080fd5b50610a10600480360360208110156109e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129bc565b6040518089815260200188815260200187815260200186151515158152602001858152602001848152602001831515151581526020018281526020019850505050505050505060405180910390f35b348015610a6b57600080fd5b50610a74612b67565b6040518082815260200191505060405180910390f35b348015610a9657600080fd5b50610a9f612b6d565b6040518082815260200191505060405180910390f35b348015610ac157600080fd5b50610af860048036036040811015610ad857600080fd5b810190808035906020019092919080359060200190929190505050612b77565b6040518082815260200191505060405180910390f35b60176020528060005260406000206000915090505481565b601f6020528060005260406000206000915054906101000a900460ff1681565b6021602052816000526040600020602052806000526040600020600091509150505481565b60156020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060160009054906101000a900460ff16905087565b336000813b905060008114610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526000815260200160200191505060405180910390fd5b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415610d02578373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610d01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f706172656e742073616d65206173206d73672073656e6465720000000000000081525060200191505060405180910390fd5b5b610d0c3334612b9c565b610d7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f636865636b207469636b6574206661696c00000000000000000000000000000081525060200191505060405180910390fd5b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600060166000601154815260200190815260200160002060008481526020019081526020016000206000015490508060036000601154815260200190815260200160002060008282540192505081905550600084148015610eb15750601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f2d578160156000858152602001908152602001600020600001819055506000821415610efa57826015600085815260200190815260200160002060010181905550610f2c565b601560008381526020019081526020016000206001015460156000858152602001908152602001600020600101819055505b5b6001601154118015610f895750601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610fb35750601d600083815260200190815260200160002060009054906101000a900460ff16155b15610fed57610fec8383601660006011548152602001908152602001600020600087815260200190815260200160002060000154613461565b5b690a968163f0a57b40000060086000601154815260200190815260200160002054106110815780600560006011548152602001908152602001600020600082825401925050819055508060046000601154815260200190815260200160002060008282540192505081905550806006600060115481526020019081526020016000206000828254019250508190555061112e565b60006064605f83028161109057fe5b049050606460058302816110a057fe5b0460086000601154815260200190815260200160002060008282540192505081905550806005600060115481526020019081526020016000206000828254019250508190555080600460006011548152602001908152602001600020600082825401925050819055508060066000601154815260200190815260200160002060008282540192505081905550505b61113883826136d1565b611141836139c4565b50505050505050565b60136020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600080600060036000878152602001908152602001600020549450600560008781526020019081526020016000205493506008600087815260200190815260200160002054925060126000878152602001908152602001600020600301549150600a54905091939590929450565b60126020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000809050601660006011548152602001908152602001600020600083815260200190815260200160002060080160009054906101000a900460ff1661131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f706c79206e6f742061637469766500000000000000000000000000000000000081525060200191505060405180910390fd5b600060066000601154815260200190815260200160002054116113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f706f6f6c206e6f742077697468647261772062616c616e63650000000000000081525060200191505060405180910390fd5b60016011541180156113f25750601660006001601154038152602001908152602001600020600083815260200190815260200160002060080160019054906101000a900460ff16155b1561164357601360006001601154038152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff1680156114525750600060086000600160115403815260200190815260200160002054115b1561164257601260006001601154038152602001908152602001600020600701601260006001601154038152602001908152602001600020600501548154811061149857fe5b90600052602060002001548214156114f35760126000600160115403815260200190815260200160002060060154905080600860006001601154038152602001908152602001600020600082825403925050819055506115ab565b600260166000600160115403815260200190815260200160002060008481526020019081526020016000206000015402905060086000600160115403815260200190815260200160002054811115611583576000600860006001601154038152602001908152602001600020819055506008600060016011540381526020019081526020016000205490506115aa565b80600860006001601154038152602001908152602001600020600082825403925050819055505b5b80600560006011548152602001908152602001600020600082825403925050819055506001601660006001601154038152602001908152602001600020600084815260200190815260200160002060080160016101000a81548160ff02191690831515021790555080601e600060016011540381526020019081526020016000206000848152602001908152602001600020819055505b5b600060196000601154815260200190815260200160002060008481526020019081526020016000205460166000601154815260200190815260200160002060008581526020019081526020016000206003015411156116f1576019600060115481526020019081526020016000206000848152602001908152602001600020546016600060115481526020019081526020016000206000858152602001908152602001600020600301540390505b60008214156117715760008111611770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6e6f7420656e6f756768742062616c616e63652063616e20776974686472617781525060200191505060405180910390fd5b5b60008282019050600660006011548152602001908152602001600020548111156117ae576006600060115481526020019081526020016000205490505b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635529f8cd8360006040518363ffffffff1660e01b8152600401808381526020018215151515815260200192505050602060405180830381600087803b15801561183257600080fd5b505af1158015611846573d6000803e3d6000fd5b505050506040513d602081101561185c57600080fd5b8101908080519060200190929190505050905080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561190f57600080fd5b505afa158015611923573d6000803e3d6000fd5b505050506040513d602081101561193957600080fd5b8101908080519060200190929190505050116119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6e6f742061646320746f20627579206f75742074696b6365740000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c363789733836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611a6657600080fd5b505af1158015611a7a573d6000803e3d6000fd5b5050505080601b60008781526020019081526020016000206000828254019250508190555080600a60008282540192505081905550600660006011548152602001908152602001600020548210611bcb576000600660006011548152602001908152602001600020819055506006600060115481526020019081526020016000205460166000601154815260200190815260200160002060008781526020019081526020016000206001016000828254019250508190555060066000601154815260200190815260200160002054600760006011548152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc600660006011548152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015611bc5573d6000803e3d6000fd5b50611c90565b81600660006011548152602001908152602001600020600082825403925050819055508260166000601154815260200190815260200160002060008781526020019081526020016000206001016000828254019250508190555081600760006011548152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611c8e573d6000803e3d6000fd5b505b8260196000601154815260200190815260200160002060008781526020019081526020016000206000828254019250508190555060006016600060115481526020019081526020016000206000878152602001908152602001600020600401819055506000601660006011548152602001908152602001600020600087815260200190815260200160002060060181905550600060166000601154815260200190815260200160002060008781526020019081526020016000206007018190555060006021600060115481526020019081526020016000206000878152602001908152602001600020819055506000600f600060115481526020019081526020016000206000878152602001908152602001600020819055505050505050565b6016602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080160009054906101000a900460ff16908060080160019054906101000a900460ff1690508a565b6201518081565b60076020528060005260406000206000915090505481565b601a602052816000526040600020602052806000526040600020600091509150505481565b60115481565b600a5481565b60056020528060005260406000206000915090505481565b600080600080600080600080600080600080601760008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601660008e81526020019081526020016000206000828152602001908152602001600020600401549b50601660008e81526020019081526020016000206000828152602001908152602001600020600601549a50601660008e81526020019081526020016000206000828152602001908152602001600020600701549950602160008e81526020019081526020016000206000828152602001908152602001600020549850600f60008e81526020019081526020016000206000828152602001908152602001600020549750601660008e81526020019081526020016000206000828152602001908152602001600020600301549650601660008e81526020019081526020016000206000828152602001908152602001600020600001549450601660008e81526020019081526020016000206000828152602001908152602001600020600101549550601660008e8152602001908152602001600020600082815260200190815260200160002060010154601660008f815260200190815260200160002060008381526020019081526020016000206003015411156120df57601660008e8152602001908152602001600020600082815260200190815260200160002060010154601660008f81526020019081526020016000206000838152602001908152602001600020600301540393506120e4565b600093505b601660008e81526020019081526020016000206000828152602001908152602001600020600201549250601660008e8152602001908152602001600020600082815260200190815260200160002060030154601a60008f8152602001908152602001600020600083815260200190815260200160002054039150509295989b509295989b9093969950565b60036020528060005260406000206000915090505481565b60086020528060005260406000206000915090505481565b60066020528060005260406000206000915090505481565b600060648260ff168402816121c857fe5b049050601a60006011548152602001908152602001600020600085815260200190815260200160002054601660006011548152602001908152602001600020600086815260200190815260200160002060030154106122275750612368565b601a60006011548152602001908152602001600020600085815260200190815260200160002054816016600060115481526020019081526020016000206000878152602001908152602001600020600301540111156122d557601660006011548152602001908152602001600020600085815260200190815260200160002060030154601a600060115481526020019081526020016000206000868152602001908152602001600020540390505b80601660006011548152602001908152602001600020600086815260200190815260200160002060070160008282540192505081905550806016600060115481526020019081526020016000206000868152602001908152602001600020600301600082825401925050819055508060056000601154815260200190815260200160002060008282540392505081905550505b505050565b60046020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d502db976040518163ffffffff1660e01b81526004018080602001828103825260068152602001807f5449434b4554000000000000000000000000000000000000000000000000000081525060200191505060206040518083038186803b15801561242857600080fd5b505afa15801561243c573d6000803e3d6000fd5b505050506040513d602081101561245257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6d73672073656e646572206e6f74205449434b4554000000000000000000000081525060200191505060405180910390fd5b6001601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008090506000601660006011548152602001908152602001600020600084815260200190815260200160002090508060080160009054906101000a900460ff16612655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6e6f74206163746976650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008160000154116126cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6e6f74206368617267650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b601a6000601154815260200190815260200160002060008481526020019081526020016000205481600301541061276e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f616c726561647920746f20746f7020726577617264000000000000000000000081525060200191505060405180910390fd5b6201518081600501544203116127ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6e6f7420656e6f75676874206f6e65206461790000000000000000000000000081525060200191505060405180910390fd5b6000816005015414156128125761280b81600201548260000154613a79565b9150612839565b620151808160050154420311156128385761283581600501548260000154613a79565b91505b5b601a6000601154815260200190815260200160002060008481526020019081526020016000205482826003015401111561289d578060030154601a600060115481526020019081526020016000206000858152602001908152602001600020540391505b60008214156128ae575050506129ba565b8160056000601154815260200190815260200160002054111561292157818160040160008282540192505081905550818160030160008282540192505081905550816005600060115481526020019081526020016000206000828254039250508190555061291c8383613c42565b612993565b6005600060115481526020019081526020016000205481600401600082825401925050819055506005600060115481526020019081526020016000205481600301600082825401925050819055506000600560006011548152602001908152602001600020819055506129926142e6565b5b620151808082600201544203816129a657fe5b040281600201540181600501819055505050505b565b6000806000806000806000806000601760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060156000828152602001908152602001600020600201549850601560008281526020019081526020016000206004015497506015600082815260200190815260200160002060060160009054906101000a900460ff1660ff16965060156000828152602001908152602001600020600801600060156000848152602001908152602001600020600301548152602001908152602001600020549450600e600082815260200190815260200160002060009054906101000a900460ff169250601b6000828152602001908152602001600020549150601560008281526020019081526020016000206008016000601560008481526020019081526020016000206003015481526020019081526020016000205460156000838152602001908152602001600020600501540393506020600082815260200190815260200160002060009054906101000a900460ff16955050919395975091939597565b60095481565b6000601154905090565b601e602052816000526040600020602052806000526040600020600091509150505481565b6000601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bfa57612bf9836146cf565b5b6000601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000808214612e6957601a6000601154815260200190815260200160002060008381526020019081526020016000205460166000601154815260200190815260200160002060008481526020019081526020016000206003015410612e68576000601660006011548152602001908152602001600020600084815260200190815260200160002060030181905550600060166000601154815260200190815260200160002060008481526020019081526020016000206001018190555060006016600060115481526020019081526020016000206000848152602001908152602001600020600001819055506000601660006011548152602001908152602001600020600084815260200190815260200160002060040181905550600060166000601154815260200190815260200160002060008481526020019081526020016000206006018190555060006016600060115481526020019081526020016000206000848152602001908152602001600020600701819055506000601a6000601154815260200190815260200160002060008481526020019081526020016000208190555060006021600060115481526020019081526020016000206000848152602001908152602001600020819055506000600f6000601154815260200190815260200160002060008481526020019081526020016000208190555060006019600060115481526020019081526020016000206000848152602001908152602001600020819055505b5b60006016600060115481526020019081526020016000206000848152602001908152602001600020600001541115612ea65760009250505061345b565b670de0b6b3a7640000841015612f24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7472616e7366657220746f20736d61696c00000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635529f8cd8560016040518363ffffffff1660e01b8152600401808381526020018215151515815260200192505050602060405180830381600087803b158015612fa657600080fd5b505af1158015612fba573d6000803e3d6000fd5b505050506040513d6020811015612fd057600080fd5b81019080805190602001909291905050509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c363789786836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561308c57600080fd5b505af11580156130a0573d6000803e3d6000fd5b5050505080600a60008282540192505081905550600082141561322b576001601460008282540192505081905550601454915081601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550846018600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660006011548152602001908152602001600020600084815260200190815260200160002060080160006101000a81548160ff021916908315150217905550601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561322a5760016020600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b80601b6000848152602001908152602001600020600082825401925050819055504260166000601154815260200190815260200160002060008481526020019081526020016000206002018190555083601660006011548152602001908152602001600020600084815260200190815260200160002060000181905550601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561336357614e208402601a600060115481526020019081526020016000206000848152602001908152602001600020600082825401925050819055506001601d600084815260200190815260200160002060006101000a81548160ff021916908315150217905550613454565b6801ae361fc1451c000084106133af5760038402601a60006011548152602001908152602001600020600084815260200190815260200160002060008282540192505081905550613453565b6801ae361fc1451c0000841080156133cf57506798a7d9b8314c00008410155b1561341a57600a60198502816133e157fe5b04601a60006011548152602001908152602001600020600084815260200190815260200160002060008282540192505081905550613452565b60028402601a600060115481526020019081526020016000206000848152602001908152602001600020600082825401925050819055505b5b5b6001925050505b92915050565b601660006011548152602001908152602001600020600083815260200190815260200160002060080160009054906101000a900460ff166136cc57678ac7230489e8000081101580156134e6575060156000838152602001908152602001600020600701600084815260200190815260200160002060009054906101000a900460ff16155b156136cb576001601660006011548152602001908152602001600020600084815260200190815260200160002060080160006101000a81548160ff021916908315150217905550601660006001601154038152602001908152602001600020600083815260200190815260200160002060030154601a6000600160115403815260200190815260200160002060008481526020019081526020016000205411156136ca57601660006001601154038152602001908152602001600020600083815260200190815260200160002060030154601a6000600160115403815260200190815260200160002060008481526020019081526020016000205403601a600060115481526020019081526020016000206000848152602001908152602001600020600082825401925050819055506016600060016011540381526020019081526020016000206000838152602001908152602001600020600001546016600060115481526020019081526020016000206000848152602001908152602001600020600001819055506016600060016011540381526020019081526020016000206000838152602001908152602001600020600501546016600060115481526020019081526020016000206000848152602001908152602001600020600501819055505b5b5b505050565b60008060105411156139b557601054606460038402816136ed57fe5b04816136f557fe5b049050600080600190505b60105481116139b257600d600082815260200190815260200160002054915060016011541480613771575060016011541180156137705750601660006011548152602001908152602001600020600083815260200190815260200160002060080160009054906101000a900460ff165b5b156139a457601a60006011548152602001908152602001600020600083815260200190815260200160002054601660006011548152602001908152602001600020600084815260200190815260200160002060030154106137d1576139a5565b601a6000601154815260200190815260200160002060008381526020019081526020016000205483601660006011548152602001908152602001600020600085815260200190815260200160002060030154011115613914576000601660006011548152602001908152602001600020600084815260200190815260200160002060030154601a600060115481526020019081526020016000206000858152602001908152602001600020540390508060166000601154815260200190815260200160002060008581526020019081526020016000206003016000828254019250508190555080600f600060115481526020019081526020016000206000858152602001908152602001600020600082825401925050819055508060056000601154815260200190815260200160002060008282540392505081905550506139a3565b82600f600060115481526020019081526020016000206000848152602001908152602001600020600082825401925050819055508260166000601154815260200190815260200160002060008481526020019081526020016000206003016000828254019250508190555082600560006011548152602001908152602001600020600082825403925050819055505b5b5b8080600101915050613700565b50505b6139bf8383614b60565b505050565b601d600082815260200190815260200160002060009054906101000a900460ff16156139ef57613a76565b60016012600060115481526020019081526020016000206002016000828254019250508190555080601260006011548152602001908152602001600020600301819055506012600060115481526020019081526020016000206007018190806001815401808255809150509060018203906000526020600020016000909192909190915055505b50565b600062015180603c02600954420311613ab2576127106046836201518086420381613aa057fe5b04020281613aaa57fe5b049050613c3c565b62015180607802600954420311613b4857600062015180603c0260095401905080841015613b20576127106041846201518084420381613aee57fe5b04020281613af857fe5b046127106046856201518088860381613b0d57fe5b04020281613b1757fe5b04019150613b42565b6127106041846201518087420381613b3457fe5b04020281613b3e57fe5b0491505b50613c3b565b600062015180603c0260095401905060006201518060780260095401905081851015613bc7576127106032856201518084420381613b8257fe5b04020281613b8c57fe5b04612710604186603c020281613b9e57fe5b04612710604687620151808a880381613bb357fe5b04020281613bbd57fe5b0401019250613c38565b80851015613c15576127106032856201518084420381613be357fe5b04020281613bed57fe5b046127106041866201518089860381613c0257fe5b04020281613c0c57fe5b04019250613c37565b6127106032856201518088420381613c2957fe5b04020281613c3357fe5b0492505b5b50505b5b92915050565b600060156000848152602001908152602001600020600001549050600060156000838152602001908152602001600020600201549050600080905060008490506000600190505b60088160ff16116142dc578591506000851415613caa5750505050506142e2565b601a60006011548152602001908152602001600020600086815260200190815260200160002054601660006011548152602001908152602001600020600087815260200190815260200160002060030154101580613d3c5750601660006011548152602001908152602001600020600086815260200190815260200160002060080160009054906101000a900460ff16155b15613d785760156000868152602001908152602001600020600001549450601560008681526020019081526020016000206002015493506142cf565b601d600086815260200190815260200160002060009054906101000a900460ff16158015613dd75750678ac7230489e8000060166000601154815260200190815260200160002060008781526020019081526020016000206000015411155b8015613e345750601660006011548152602001908152602001600020600088815260200190815260200160002060000154601660006011548152602001908152602001600020600087815260200190815260200160002060000154105b15613f655760006016600060115481526020019081526020016000206000898152602001908152602001600020600501541415613ece57613ec7601660006011548152602001908152602001600020600089815260200190815260200160002060020154601660006011548152602001908152602001600020600088815260200190815260200160002060000154613a79565b9150613f64565b6201518060166000601154815260200190815260200160002060008981526020019081526020016000206005015442031115613f6357613f60601660006011548152602001908152602001600020600089815260200190815260200160002060050154601660006011548152602001908152602001600020600088815260200190815260200160002060000154613a79565b91505b5b5b60018160ff161415613f865760646014830281613f7e57fe5b049250613fe8565b60028160ff1610158015613f9e575060038160ff1611155b15613fb8576064600a830281613fb057fe5b049250613fe7565b60048160ff1610158015613fd0575060088160ff1611155b15613fe65760646005830281613fe257fe5b0492505b5b5b60038160ff161480613ffd575060048160ff16145b1561401557600284101561401057600092505b61406d565b60058160ff16148061402a575060068160ff16145b1561404257600384101561403d57600092505b61406c565b60078160ff161480614057575060088160ff16145b1561406b57600484101561406a57600092505b5b5b5b600083111561429857601a600060115481526020019081526020016000206000868152602001908152602001600020548360166000601154815260200190815260200160002060008881526020019081526020016000206003015401111561412457601660006011548152602001908152602001600020600086815260200190815260200160002060030154601a600060115481526020019081526020016000206000878152602001908152602001600020540392505b826005600060115481526020019081526020016000205411156141d75782601660006011548152602001908152602001600020600087815260200190815260200160002060060160008282540192505081905550826016600060115481526020019081526020016000206000878152602001908152602001600020600301600082825401925050819055508260056000601154815260200190815260200160002060008282540392505081905550614297565b60056000601154815260200190815260200160002054601660006011548152602001908152602001600020600087815260200190815260200160002060060160008282540192505081905550600560006011548152602001908152602001600020546016600060115481526020019081526020016000206000878152602001908152602001600020600301600082825401925050819055506000600560006011548152602001908152602001600020819055506142926142e6565b6142dc565b5b6000925060156000868152602001908152602001600020600001549450601560008681526020019081526020016000206002015493505b8080600101915050613c89565b50505050505b5050565b600080600060126000601154815260200190815260200160002060020154905060006064821115614330576064601260006011548152602001908152602001600020600201540390505b60008190505b8281101561450d576012600060115481526020019081526020016000206007016001828503038154811061436657fe5b906000526020600020015493506001601360006011548152602001908152602001600020600086815260200190815260200160002060006101000a81548160ff021916908315150217905550600260166000601154815260200190815260200160002060008681526020019081526020016000206000015402850194506008600060115481526020019081526020016000205485106144ba57600181840303601260006011548152602001908152602001600020600501819055506002601660006011548152602001908152602001600020600086815260200190815260200160002060000154028503600860006011548152602001908152602001600020540360126000601154815260200190815260200160002060060181905550600860006011548152602001908152602001600020546012600060115481526020019081526020016000206004018190555061450d565b6001830381141561450057816012600060115481526020019081526020016000206005018190555084601260006011548152602001908152602001600020600401819055505b8080600101915050614336565b5060116000815480929190600101919050555060115460126000601154815260200190815260200160002060000181905550426012600060115481526020019081526020016000206001018190555060006012600060115481526020019081526020016000206002018190555060086000600160115403815260200190815260200160002054600560006011548152602001908152602001600020819055506008600060016011540381526020019081526020016000205460066000601154815260200190815260200160002081905550600760006001601154038152602001908152602001600020546004600060016011540381526020019081526020016000205411156146c15760076000600160115403815260200190815260200160002054600460006001601154038152602001908152602001600020540360056000601154815260200190815260200160002060008282540192505081905550600760006001601154038152602001908152602001600020546004600060016011540381526020019081526020016000205403600660006011548152602001908152602001600020600082825401925050819055505b6146c9614f4b565b50505050565b73953ad059b61aa4a23fa48d5eca617d4920e3343e73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156147395761473873953ad059b61aa4a23fa48d5eca617d4920e3343e600160006150cc565b5b73fbcb561d76a622341e6e537a17c5c17af33c462873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156147a3576147a273fbcb561d76a622341e6e537a17c5c17af33c4628600260006150cc565b5b73669f366427ea8184fdcdcda6d6201a6baaf9b15673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561480d5761480c73669f366427ea8184fdcdcda6d6201a6baaf9b156600360006150cc565b5b73bca44b04e10e04b7fed7f262cad70a683d75398173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156148775761487673bca44b04e10e04b7fed7f262cad70a683d753981600460006150cc565b5b730d3c20d9102200242398de26fdf09f29f435421b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156148e1576148e0730d3c20d9102200242398de26fdf09f29f435421b600560026150cc565b5b73bb3c82cd454911f140b68fe2e67504af9a2b5d1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561494b5761494a73bb3c82cd454911f140b68fe2e67504af9a2b5d16600660026150cc565b5b73be6dfd74af0848b9cf6c6dfbc8bb24d2920e6ade73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156149b5576149b473be6dfd74af0848b9cf6c6dfbc8bb24d2920e6ade600760026150cc565b5b735b9347799602d0164df3926c10f237543eaa5b9f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614a1f57614a1e735b9347799602d0164df3926c10f237543eaa5b9f600860036150cc565b5b73a2221de49e4085be8098d1a8b4538734ce4977c773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614a8957614a8873a2221de49e4085be8098d1a8b4538734ce4977c7600960036150cc565b5b73ac1c0b39f3a1450e53ba0da1bcab5d9572dced5773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614af357614af273ac1c0b39f3a1450e53ba0da1bcab5d9572dced57600a60046150cc565b5b737721a0c6eb2f2a056c48d107d0a2c4cff261e98c73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614b5d57614b5c737721a0c6eb2f2a056c48d107d0a2c4cff261e98c600b60046150cc565b5b50565b600080839050600080600080905060606078604051908082528060200260200182016040528015614ba05781602001602082028038833980820191505090505b5090506000806000905060008090505b60788160ff161015614f145760156000898152602001908152602001600020600001549850601560008a815260200190815260200160002060060160009054906101000a900460ff1695506000891415614c0957614f14565b602060008a815260200190815260200160002060009054906101000a900460ff168015614c365750600082145b8015614c75575060166000601154815260200190815260200160002060008a815260200190815260200160002060080160009054906101000a900460ff165b15614c7e578891505b614c89888a8c615622565b60008660ff161115614de05760068660ff16148015614ca9575060018710155b8015614cd35750600e60008a815260200190815260200160002060009054906101000a900460ff16155b15614d30576001600e60008b815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000828254019250508190555088600d60006010548152602001908152602001600020819055505b60068660ff16148015614d615750600e60008a815260200190815260200160002060009054906101000a900460ff16155b15614d6f5786806001019750505b60166000601154815260200190815260200160002060008a815260200190815260200160002060080160009054906101000a900460ff1615614ddf578460ff168660ff161115614dde5785945088848481518110614dc957fe5b60200260200101818152505082806001019350505b5b5b6798a7d9b8314c000060166000601154815260200190815260200160002060008b81526020019081526020016000206000015410158015614e3857506005601560008b81526020019081526020016000206002015410155b15614f04576000600190505b60068160ff1611614f0257600b60008260ff1660ff16815260200190815260200160002054601560008c81526020019081526020016000206008016000601560008e815260200190815260200160002060030154815260200190815260200160002054601560008d815260200190815260200160002060050154031115614ef55780601560008c815260200190815260200160002060060160006101000a81548160ff021916908360ff1602179055505b8080600101915050614e44565b505b8897508080600101915050614bb0565b506000821115614f2b57614f2a8284868c61571d565b5b6000811115614f3f57614f3e818a615889565b5b50505050505050505050565b6000600190505b600b8160ff16116150c957601a6000600160115403815260200190815260200160002060008260ff16815260200190815260200160002054601a6000601154815260200190815260200160002060008360ff16815260200190815260200160002081905550600160166000601154815260200190815260200160002060008360ff16815260200190815260200160002060080160006101000a81548160ff02191690831515021790555060166000601154815260200190815260200160002060006001830360ff1681526020019081526020016000206000015460166000601154815260200190815260200160002060008360ff1681526020019081526020016000206000018190555060166000600160115403815260200190815260200160002060008260ff1681526020019081526020016000206005015460166000601154815260200190815260200160002060008360ff168152602001908152602001600020600501819055508080600101915050614f52565b50565b81601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550826018600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660006011548152602001908152602001600020600084815260200190815260200160002060080160006101000a81548160ff02191690831515021790555060018214156152ad57600060156000848152602001908152602001600020600001819055506003601560008481526020019081526020016000206002018190555060016015600084815260200190815260200160002060070160006002815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600084815260200190815260200160002060070160006003815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600084815260200190815260200160002060070160006004815260200190815260200160002060006101000a81548160ff021916908315150217905550615601565b60028214156153b657600160156000848152602001908152602001600020600001819055506003601560008481526020019081526020016000206002018190555060016015600084815260200190815260200160002060070160006005815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600084815260200190815260200160002060070160006006815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600084815260200190815260200160002060070160006007815260200190815260200160002060006101000a81548160ff021916908315150217905550615600565b600382141561547e57600160156000848152602001908152602001600020600001819055506002601560008481526020019081526020016000206002018190555060016015600084815260200190815260200160002060070160006008815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600084815260200190815260200160002060070160006009815260200190815260200160002060006101000a81548160ff0219169083151502179055506155ff565b60048214156155465760016015600084815260200190815260200160002060000181905550600260156000848152602001908152602001600020600201819055506001601560008481526020019081526020016000206007016000600a815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560008481526020019081526020016000206007016000600b815260200190815260200160002060006101000a81548160ff0219169083151502179055506155fe565b600582101580156155585750600b8211155b156155fd5780601560008481526020019081526020016000206000018190555060016020600084815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b5b60016015600084815260200190815260200160002060010181905550505050565b600060156000848152602001908152602001600020905080600701600085815260200190815260200160002060009054906101000a900460ff166156a25760018160020160008282540192505081905550600181600701600086815260200190815260200160002060006101000a81548160ff0219169083151502179055505b81816008016000868152602001908152602001600020600082825401925050819055508181600501600082825401925050819055508060080160008260030154815260200190815260200160002054816008016000868152602001908152602001600020541115615717578381600301819055505b50505050565b6000600c60008460ff1660ff16815260200190815260200160002060009054906101000a900460ff16905060008060008060008090505b898160ff16101561587d57888160ff168151811061576e57fe5b602002602001015191506015600083815260200190815260200160002060060160009054906101000a900460ff16925060008560ff1614156157d857600c60008460ff1660ff16815260200190815260200160002060009054906101000a900460ff169350615843565b84600c60008560ff1660ff16815260200190815260200160002060009054906101000a900460ff160360ff168660ff16111561583e5784600c60008560ff1660ff16815260200190815260200160002060009054906101000a900460ff16039350615842565b8593505b5b61584e8288866121b7565b83850194508360ff168660ff16111561586b578386039550615870565b61587d565b8080600101915050615754565b50505050505050505050565b6000601a600060115481526020019081526020016000206000848152602001908152602001600020546016600060115481526020019081526020016000206000858152602001908152602001600020600301541015615a3e57601a600060115481526020019081526020016000206000848152602001908152602001600020546064600584028161591657fe5b04601660006011548152602001908152602001600020600086815260200190815260200160002060030154011161595a576064600583028161595457fe5b046159ad565b601660006011548152602001908152602001600020600084815260200190815260200160002060030154601a60006011548152602001908152602001600020600085815260200190815260200160002054035b9050806016600060115481526020019081526020016000206000858152602001908152602001600020600301600082825401925050819055508060216000601154815260200190815260200160002060008581526020019081526020016000206000828254019250508190555080600560006011548152602001908152602001600020600082825403925050819055505b50505056fea165627a7a7230582000ed826875b4610194c1e09fd9d39b07cf2f4936717190ee5c5b18bf3ba564a70029

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

00000000000000000000000049e298b95bda30e6518509187ff348e01117f404

-----Decoded View---------------
Arg [0] : addressM_ (address): 0x49E298B95Bda30e6518509187Ff348e01117f404

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000049e298b95bda30e6518509187ff348e01117f404


Deployed Bytecode Sourcemap

2036:37706:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3806:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3806:41:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3806:41:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4617:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4617:46:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4617:46:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4823:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4823:69:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4823:69:1;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3639:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3639:63:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3639:63:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7750:1846;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7750:1846:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;3536:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3536:57:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3536:57:1;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21321:529;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21321:529:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21321:529:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3459:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3459:50:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3459:50:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9606:3031;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9606:3031:1;;;:::i;:::-;;3708:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3708:70:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3708:70:1;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2846:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2846:46:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2566:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2566:57:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2566:57:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4185:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4185:71:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4185:71:1;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3435:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3435:18:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2805:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2805:30:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2352:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2352:54:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2352:54:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18897:1592;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18897:1592:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18897:1592:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2208:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2208:51:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2208:51:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2672:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2672:54:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2672:54:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2455:62;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2455:62:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2455:62:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33936:1137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33936:1137:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33936:1137:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2265:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2265:54:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2265:54:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18689:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18689:181:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18689:181:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;12686:1777;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12686:1777:1;;;:::i;:::-;;20499:803;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20499:803:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20499:803:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2770:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2770:28:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21860:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21860:78:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4498:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4498:73:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4498:73:1;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3806:41;;;;;;;;;;;;;;;;;:::o;4617:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;4823:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3639:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7750:1846::-;7815:10;7633:9;7683:5;7671:18;7663:26;;7716:1;7708:4;:9;7700:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7860:13;7876:6;:18;7883:10;7876:18;;;;;;;;;;;;;;;;7860:34;;7915:1;7907:5;:9;7904:99;;;7953:10;7939:24;;:10;:24;;;;7931:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7904:99;8020:33;8032:10;8043:9;8020:11;:33::i;:::-;8012:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8117:11;8130:6;:18;8137:10;8130:18;;;;;;;;;;;;;;;;8117:31;;8167:18;8188:6;:18;8195:10;8188:18;;;;;;;;;;;;;;;;8167:39;;8216:17;8236:4;:9;8241:3;;8236:9;;;;;;;;;;;:14;8246:3;8236:14;;;;;;;;;;;:27;;;8216:47;;8303:9;8282:12;:17;8295:3;;8282:17;;;;;;;;;;;;:30;;;;;;;;;;;8343:1;8334:5;:10;:33;;;;;8349:6;:18;8356:10;8349:18;;;;;;;;;;;;;;;;;;;;;;;;;8348:19;8334:33;8331:298;;;8408:10;8382:8;:13;8391:3;8382:13;;;;;;;;;;;:23;;:36;;;;8471:1;8457:10;:15;8454:165;;;8514:3;8491:8;:13;8500:3;8491:13;;;;;;;;;;;:20;;:26;;;;8454:165;;;8577:8;:20;8586:10;8577:20;;;;;;;;;;;:27;;;8554:8;:13;8563:3;8554:13;;;;;;;;;;;:20;;:50;;;;8454:165;8331:298;8791:1;8785:3;;:7;:30;;;;;8797:6;:18;8804:10;8797:18;;;;;;;;;;;;;;;;;;;;;;;;;8796:19;8785:30;:58;;;;;8820:11;:23;8832:10;8820:23;;;;;;;;;;;;;;;;;;;;;8819:24;8785:58;8781:144;;;8858:56;8871:3;8875:10;8886:4;:9;8891:3;;8886:9;;;;;;;;;;;:14;8896:3;8886:14;;;;;;;;;;;:27;;;8858:12;:56::i;:::-;8781:144;9010:12;8986:15;:20;9002:3;;8986:20;;;;;;;;;;;;:36;8983:445;;9060:9;9036:15;:20;9052:3;;9036:20;;;;;;;;;;;;:33;;;;;;;;;;;9107:9;9083:15;:20;9099:3;;9083:20;;;;;;;;;;;;:33;;;;;;;;;;;9161:9;9129:23;:28;9153:3;;9129:28;;;;;;;;;;;;:41;;;;;;;;;;;8983:445;;;9199:12;9227:3;9224:2;9214:9;:12;:16;;;;;;9199:31;;9280:3;9278:1;9268:9;:11;:15;;;;;;9244;:20;9260:3;;9244:20;;;;;;;;;;;;:39;;;;;;;;;;;9321:4;9297:15;:20;9313:3;;9297:20;;;;;;;;;;;;:28;;;;;;;;;;;9363:4;9339:15;:20;9355:3;;9339:20;;;;;;;;;;;;:28;;;;;;;;;;;9413:4;9381:23;:28;9405:3;;9381:28;;;;;;;;;;;;:36;;;;;;;;;;;8983:445;;9494:23;9503:3;9507:9;9494:8;:23::i;:::-;9563:17;9576:3;9563:12;:17::i;:::-;7732:1;;;;7750:1846;;;:::o;3536:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21321:529::-;21385:23;21437:24;21497;21555:21;21586:20;21640:12;:18;21653:4;21640:18;;;;;;;;;;;;21622:36;;21687:15;:21;21703:4;21687:21;;;;;;;;;;;;21668:40;;21737:15;:21;21753:4;21737:21;;;;;;;;;;;;21718:40;;21784:5;:11;21790:4;21784:11;;;;;;;;;;;:19;;;21768:35;;21828:15;;21813:30;;21321:529;;;;;;;:::o;3459:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9606:3031::-;9663:11;9677:6;:18;9684:10;9677:18;;;;;;;;;;;;;;;;9663:32;;9705:15;9723:1;9705:19;;9770:4;:9;9775:3;;9770:9;;;;;;;;;;;:14;9780:3;9770:14;;;;;;;;;;;:23;;;;;;;;;;;;9762:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9870:1;9841:23;:28;9865:3;;9841:28;;;;;;;;;;;;:30;9833:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9919:1;9913:3;;:7;:43;;;;;9925:4;:11;9934:1;9930:3;;:5;9925:11;;;;;;;;;;;:16;9937:3;9925:16;;;;;;;;;;;:31;;;;;;;;;;;;9924:32;9913:43;9910:943;;;10006:7;:14;10018:1;10014:3;;:5;10006:14;;;;;;;;;;;:19;10021:3;10006:19;;;;;;;;;;;;;;;;;;;;;:48;;;;;10053:1;10028:15;:22;10048:1;10044:3;;:5;10028:22;;;;;;;;;;;;:26;10006:48;10003:840;;;10084:5;:12;10094:1;10090:3;;:5;10084:12;;;;;;;;;;;:22;;10107:5;:12;10117:1;10113:3;;:5;10107:12;;;;;;;;;;;:26;;;10084:50;;;;;;;;;;;;;;;;10077:3;:57;10074:578;;;10167:5;:12;10177:1;10173:3;;:5;10167:12;;;;;;;;;;;:27;;;10157:37;;10242:7;10216:15;:22;10236:1;10232:3;;:5;10216:22;;;;;;;;;;;;:33;;;;;;;;;;;10074:578;;;10334:1;10304:4;:11;10313:1;10309:3;;:5;10304:11;;;;;;;;;;;:16;10316:3;10304:16;;;;;;;;;;;:29;;;:31;10294:41;;10370:15;:22;10390:1;10386:3;;:5;10370:22;;;;;;;;;;;;10360:7;:32;10357:256;;;10444:1;10419:15;:22;10439:1;10435:3;;:5;10419:22;;;;;;;;;;;:26;;;;10481:15;:22;10501:1;10497:3;;:5;10481:22;;;;;;;;;;;;10471:32;;10357:256;;;10583:7;10557:15;:22;10577:1;10573:3;;:5;10557:22;;;;;;;;;;;;:33;;;;;;;;;;;10357:256;10074:578;10710:7;10686:15;:20;10702:3;;10686:20;;;;;;;;;;;;:31;;;;;;;;;;;10769:4;10735;:11;10744:1;10740:3;;:5;10735:11;;;;;;;;;;;:16;10747:3;10735:16;;;;;;;;;;;:31;;;:38;;;;;;;;;;;;;;;;;;10821:7;10791:15;:22;10811:1;10807:3;;:5;10791:22;;;;;;;;;;;:27;10814:3;10791:27;;;;;;;;;;;:37;;;;10003:840;9910:943;11000:17;11058:18;:23;11077:3;;11058:23;;;;;;;;;;;:28;11082:3;11058:28;;;;;;;;;;;;11030:4;:9;11035:3;;11030:9;;;;;;;;;;;:14;11040:3;11030:14;;;;;;;;;;;:27;;;:56;11027:155;;;11142:18;:23;11161:3;;11142:23;;;;;;;;;;;:28;11166:3;11142:28;;;;;;;;;;;;11114:4;:9;11119:3;;11114:9;;;;;;;;;;;:14;11124:3;11114:14;;;;;;;;;;;:27;;;:56;11102:68;;11027:155;11205:1;11194:7;:12;11191:98;;;11241:1;11229:9;:13;11221:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11191:98;11316:18;11349:7;11337:9;:19;11316:40;;11414:23;:28;11438:3;;11414:28;;;;;;;;;;;;11401:10;:41;11398:111;;;11470:23;:28;11494:3;;11470:28;;;;;;;;;;;;11457:41;;11398:111;11518:17;11539:7;;;;;;;;;;;:23;;;11563:10;11574:5;11539:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11539:41:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11539:41:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11539:41:1;;;;;;;;;;;;;;;;11518:62;;11629:9;11598:8;;;;;;;;;;;:18;;;11617:10;11598:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11598:30:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11598:30:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11598:30:1;;;;;;;;;;;;;;;;:40;11590:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11677:8;;;;;;;;;;;:16;;;11694:10;11705:9;11677:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11677:38:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11677:38:1;;;;11748:9;11725:14;:19;11740:3;11725:19;;;;;;;;;;;;:32;;;;;;;;;;;11786:9;11767:15;;:28;;;;;;;;;;;11822:23;:28;11846:3;;11822:28;;;;;;;;;;;;11808:10;:42;11805:559;;11896:1;11865:23;:28;11889:3;;11865:28;;;;;;;;;;;:32;;;;11944:23;:28;11968:3;;11944:28;;;;;;;;;;;;11911:4;:9;11916:3;;11911:9;;;;;;;;;;;:14;11921:3;11911:14;;;;;;;;;;;:29;;;:61;;;;;;;;;;;12013:23;:28;12037:3;;12013:28;;;;;;;;;;;;11986:18;:23;12005:3;;11986:23;;;;;;;;;;;;:55;;;;;;;;;;;12055:10;:19;;:49;12075:23;:28;12099:3;;12075:28;;;;;;;;;;;;12055:49;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12055:49:1;11805:559;;;12178:10;12146:23;:28;12170:3;;12146:28;;;;;;;;;;;;:42;;;;;;;;;;;12235:9;12202:4;:9;12207:3;;12202:9;;;;;;;;;;;:14;12212:3;12202:14;;;;;;;;;;;:29;;;:42;;;;;;;;;;;12285:10;12258:18;:23;12277:3;;12258:23;;;;;;;;;;;;:37;;;;;;;;;;;12309:10;:19;;:31;12329:10;12309:31;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12309:31:1;11805:559;12414:9;12382:18;:23;12401:3;;12382:23;;;;;;;;;;;:28;12406:3;12382:28;;;;;;;;;;;;:41;;;;;;;;;;;12472:1;12442:4;:9;12447:3;;12442:9;;;;;;;;;;;:14;12452:3;12442:14;;;;;;;;;;;:27;;:31;;;;12514:1;12483:4;:9;12488:3;;12483:9;;;;;;;;;;;:14;12493:3;12483:14;;;;;;;;;;;:28;;:32;;;;12553:1;12525:4;:9;12530:3;;12525:9;;;;;;;;;;;:14;12535:3;12525:14;;;;;;;;;;;:25;;:29;;;;12593:1;12564:16;:21;12581:3;;12564:21;;;;;;;;;;;:26;12586:3;12564:26;;;;;;;;;;;:30;;;;12629:1;12604:12;:17;12617:3;;12604:17;;;;;;;;;;;:22;12622:3;12604:22;;;;;;;;;;;:26;;;;9606:3031;;;;;:::o;3708:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2846:46::-;2879:13;2846:46;:::o;2566:57::-;;;;;;;;;;;;;;;;;:::o;4185:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3435:18::-;;;;:::o;2805:30::-;;;;:::o;2352:54::-;;;;;;;;;;;;;;;;;:::o;18897:1592::-;18976:17;19003;19030:19;19059:18;19087:21;19118;19149:23;19182:17;19209:26;19245:18;19273:24;19317:11;19331:6;:12;19338:4;19331:12;;;;;;;;;;;;;;;;19317:26;;19382:4;:10;19387:4;19382:10;;;;;;;;;;;:15;19393:3;19382:15;;;;;;;;;;;:28;;;19370:40;;19436:4;:10;19441:4;19436:10;;;;;;;;;;;:15;19447:3;19436:15;;;;;;;;;;;:29;;;19424:41;;19494:4;:10;19499:4;19494:10;;;;;;;;;;;:15;19505:3;19494:15;;;;;;;;;;;:26;;;19479:41;;19547:16;:22;19564:4;19547:22;;;;;;;;;;;:27;19570:3;19547:27;;;;;;;;;;;;19534:40;;19604:12;:18;19617:4;19604:18;;;;;;;;;;;:23;19623:3;19604:23;;;;;;;;;;;;19588:39;;19657:4;:10;19662:4;19657:10;;;;;;;;;;;:15;19668:3;19657:15;;;;;;;;;;;:28;;;19641:44;;19735:4;:10;19740:4;19735:10;;;;;;;;;;;:15;19746:3;19735:15;;;;;;;;;;;:28;;;19723:40;;19795:4;:10;19800:4;19795:10;;;;;;;;;;;:15;19806:3;19795:15;;;;;;;;;;;:30;;;19777:48;;20027:4;:10;20032:4;20027:10;;;;;;;;;;;:15;20038:3;20027:15;;;;;;;;;;;:30;;;19996:4;:10;20001:4;19996:10;;;;;;;;;;;:15;20007:3;19996:15;;;;;;;;;;;:28;;;:61;19993:239;;;20128:4;:10;20133:4;20128:10;;;;;;;;;;;:15;20139:3;20128:15;;;;;;;;;;;:30;;;20097:4;:10;20102:4;20097:10;;;;;;;;;;;:15;20108:3;20097:15;;;;;;;;;;;:28;;;:61;20076:82;;19993:239;;;20216:1;20195:22;;19993:239;20258:4;:10;20263:4;20258:10;;;;;;;;;;;:15;20269:3;20258:15;;;;;;;;;;;:25;;;20245:38;;20425:4;:10;20430:4;20425:10;;;;;;;;;;;:15;20436:3;20425:15;;;;;;;;;;;:28;;;20394:17;:23;20412:4;20394:23;;;;;;;;;;;:28;20418:3;20394:28;;;;;;;;;;;;:59;20375:78;;18897:1592;;;;;;;;;;;;;;;:::o;2208:51::-;;;;;;;;;;;;;;;;;:::o;2672:54::-;;;;;;;;;;;;;;;;;:::o;2455:62::-;;;;;;;;;;;;;;;;;:::o;33936:1137::-;34046:19;34094:3;34076:16;34069:23;;:6;:23;34068:29;;;;;;34046:51;;34150:17;:22;34168:3;;34150:22;;;;;;;;;;;:28;34173:4;34150:28;;;;;;;;;;;;34118:4;:9;34123:3;;34118:9;;;;;;;;;;;:15;34128:4;34118:15;;;;;;;;;;;:28;;;:60;34115:111;;34201:7;;;34115:111;34284:17;:22;34302:3;;34284:22;;;;;;;;;;;:28;34307:4;34284:28;;;;;;;;;;;;34275:8;34246:4;:9;34251:3;;34246:9;;;;;;;;;;;:15;34256:4;34246:15;;;;;;;;;;;:28;;;:37;:66;34243:179;;;34375:4;:9;34380:3;;34375:9;;;;;;;;;;;:15;34385:4;34375:15;;;;;;;;;;;:28;;;34346:17;:22;34364:3;;34346:22;;;;;;;;;;;:28;34369:4;34346:28;;;;;;;;;;;;:57;34335:68;;34243:179;34528:8;34498:4;:9;34503:3;;34498:9;;;;;;;;;;;:15;34508:4;34498:15;;;;;;;;;;;:26;;;:38;;;;;;;;;;;34647:8;34615:4;:9;34620:3;;34615:9;;;;;;;;;;;:15;34625:4;34615:15;;;;;;;;;;;:28;;;:40;;;;;;;;;;;34701:8;34677:15;:20;34693:3;;34677:20;;;;;;;;;;;;:32;;;;;;;;;;;33936:1137;;;;;:::o;2265:54::-;;;;;;;;;;;;;;;;;:::o;18689:181::-;18761:5;;;;;;;;;;;:13;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18761:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18761:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18761:23:1;;;;;;;;;;;;;;;;18747:37;;:10;:37;;;18739:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18850:4;18827:14;:20;18842:4;18827:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;18689:181;:::o;12686:1777::-;12789:11;12803:6;:18;12810:10;12803:18;;;;;;;;;;;;;;;;12789:32;;12831:12;12846:1;12831:16;;12857:34;12894:4;:9;12899:3;;12894:9;;;;;;;;;;;:14;12904:3;12894:14;;;;;;;;;;;12857:51;;12962:6;:15;;;;;;;;;;;;12954:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13030:1;13009:6;:19;;;:22;13001:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13085:17;:22;13103:3;;13085:22;;;;;;;;;;;:27;13108:3;13085:27;;;;;;;;;;;;13063:6;:19;;;:49;13055:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2879:13;13177:6;:21;;;13173:3;:25;:34;13165:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13268:1;13243:6;:21;;;:26;13240:234;;;13291:45;13299:6;:16;;;13316:6;:19;;;13291:7;:45::i;:::-;13284:52;;13240:234;;;2879:13;13361:6;:21;;;13355:3;:27;:36;13352:122;;;13413:50;13421:6;:21;;;13443:6;:19;;;13413:7;:50::i;:::-;13406:57;;13352:122;13240:234;13541:17;:22;13559:3;;13541:22;;;;;;;;;;;:27;13564:3;13541:27;;;;;;;;;;;;13534:4;13512:6;:19;;;:26;:56;13509:141;;;13620:6;:19;;;13590:17;:22;13608:3;;13590:22;;;;;;;;;;;:27;13613:3;13590:27;;;;;;;;;;;;:49;13583:56;;13509:141;13670:1;13662:4;:9;13659:45;;;13686:8;;;;;13659:45;13747:4;13724:15;:20;13740:3;;13724:20;;;;;;;;;;;;:27;13721:576;;;13835:4;13812:6;:19;;;:27;;;;;;;;;;;13876:4;13853:6;:19;;;:27;;;;;;;;;;;13917:4;13894:15;:20;13910:3;;13894:20;;;;;;;;;;;;:27;;;;;;;;;;;13948:21;13960:3;13964:4;13948:11;:21::i;:::-;13721:576;;;14082:15;:20;14098:3;;14082:20;;;;;;;;;;;;14059:6;:19;;;:43;;;;;;;;;;;14139:15;:20;14155:3;;14139:20;;;;;;;;;;;;14116:6;:19;;;:43;;;;;;;;;;;14195:1;14173:15;:20;14189:3;;14173:20;;;;;;;;;;;:23;;;;14258:15;:13;:15::i;:::-;13721:576;2879:13;;14375:6;:16;;;14369:3;:22;14368:33;;;;;;14367:44;14348:6;:16;;;:63;14324:6;:21;;:87;;;;12686:1777;;;;:::o;20499:803::-;20568:18;20596;20624:17;20651:14;20675:22;20707:24;20741:16;20767:19;20802:11;20816:6;:12;20823:4;20816:12;;;;;;;;;;;;;;;;20802:26;;20851:8;:13;20860:3;20851:13;;;;;;;;;;;:23;;;20839:35;;20896:8;:13;20905:3;20896:13;;;;;;;;;;;:28;;;20884:40;;20944:8;:13;20953:3;20944:13;;;;;;;;;;;:23;;;;;;;;;;;;20934:33;;;;21001:8;:13;21010:3;21001:13;;;;;;;;;;;:29;;:57;21031:8;:13;21040:3;21031:13;;;;;;;;;;;:26;;;21001:57;;;;;;;;;;;;20986:72;;21082:10;:15;21093:3;21082:15;;;;;;;;;;;;;;;;;;;;;21068:29;;21121:14;:19;21136:3;21121:19;;;;;;;;;;;;21107:33;;21202:8;:13;21211:3;21202:13;;;;;;;;;;;:29;;:57;21232:8;:13;21241:3;21232:13;;;;;;;;;;;:26;;;21202:57;;;;;;;;;;;;21169:8;:13;21178:3;21169:13;;;;;;;;;;;:30;;;:90;21150:109;;21278:12;:17;21291:3;21278:17;;;;;;;;;;;;;;;;;;;;;21269:26;;20499:803;;;;;;;;;;:::o;2770:28::-;;;;:::o;21860:78::-;21898:12;21928:3;;21921:10;;21860:78;:::o;4498:73::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22738:2201::-;22813:4;22848:6;:12;22855:4;22848:12;;;;;;;;;;;;;;;;;;;;;;;;;22845:52;;;22874:13;22882:4;22874:7;:13::i;:::-;22845:52;22913:11;22926:6;:12;22933:4;22926:12;;;;;;;;;;;;;;;;22913:25;;22947:17;22992:1;22985:3;:8;22982:610;;23042:17;:22;23060:3;;23042:22;;;;;;;;;;;:27;23065:3;23042:27;;;;;;;;;;;;23011:4;:9;23016:3;;23011:9;;;;;;;;;;;:14;23021:3;23011:14;;;;;;;;;;;:27;;;:58;23008:573;;23137:1;23107:4;:9;23112:3;;23107:9;;;;;;;;;;;:14;23117:3;23107:14;;;;;;;;;;;:27;;:31;;;;23187:1;23155:4;:9;23160:3;;23155:9;;;;;;;;;;;:14;23165:3;23155:14;;;;;;;;;;;:29;;:33;;;;23235:1;23205:4;:9;23210:3;;23205:9;;;;;;;;;;;:14;23215:3;23205:14;;;;;;;;;;;:27;;:31;;;;23283:1;23253:4;:9;23258:3;;23253:9;;;;;;;;;;;:14;23263:3;23253:14;;;;;;;;;;;:27;;:31;;;;23332:1;23301:4;:9;23306:3;;23301:9;;;;;;;;;;;:14;23311:3;23301:14;;;;;;;;;;;:28;;:32;;;;23378:1;23350:4;:9;23355:3;;23350:9;;;;;;;;;;;:14;23360:3;23350:14;;;;;;;;;;;:25;;:29;;;;23426:1;23396:17;:22;23414:3;;23396:22;;;;;;;;;;;:27;23419:3;23396:27;;;;;;;;;;;:31;;;;23473:1;23444:16;:21;23461:3;;23444:21;;;;;;;;;;;:26;23466:3;23444:26;;;;;;;;;;;:30;;;;23516:1;23491:12;:17;23504:3;;23491:17;;;;;;;;;;;:22;23509:3;23491:22;;;;;;;;;;;:26;;;;23565:1;23534:18;:23;23553:3;;23534:23;;;;;;;;;;;:28;23558:3;23534:28;;;;;;;;;;;:32;;;;23008:573;22982:610;23644:1;23614:4;:9;23619:3;;23614:9;;;;;;;;;;;:14;23624:3;23614:14;;;;;;;;;;;:27;;;:31;23610:74;;;23668:5;23661:12;;;;;;23610:74;23719:8;23709:6;:18;;23701:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23770:7;;;;;;;;;;;:23;;;23794:6;23801:4;23770:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23770:36:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23770:36:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23770:36:1;;;;;;;;;;;;;;;;23758:48;;23898:8;;;;;;;;;;;:16;;;23915:4;23920:9;23898:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23898:32:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23898:32:1;;;;23959:9;23940:15;;:28;;;;;;;;;;;24006:1;23999:3;:8;23996:307;;;24033:1;24022:7;;:12;;;;;;;;;;;24054:7;;24048:13;;24103:3;24088:6;:12;24095:4;24088:12;;;;;;;;;;;;;;;:18;;;;24137:4;24121:8;:13;24130:3;24121:13;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;24181:4;24155;:9;24160:3;;24155:9;;;;;;;;;;;:14;24165:3;24155:14;;;;;;;;;;;:23;;;:30;;;;;;;;;;;;;;;;;;24202:14;:20;24217:4;24202:20;;;;;;;;;;;;;;;;;;;;;;;;;24199:81;;;24261:4;24241:12;:17;24254:3;24241:17;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;24199:81;23996:307;24344:9;24321:14;:19;24336:3;24321:19;;;;;;;;;;;;:32;;;;;;;;;;;24390:3;24363:4;:9;24368:3;;24363:9;;;;;;;;;;;:14;24373:3;24363:14;;;;;;;;;;;:24;;:30;;;;24433:6;24403:4;:9;24408:3;;24403:9;;;;;;;;;;;:14;24413:3;24403:14;;;;;;;;;;;:27;;:36;;;;24452:6;:12;24459:4;24452:12;;;;;;;;;;;;;;;;;;;;;;;;;24449:445;;;24517:5;24510:6;:12;24479:17;:22;24497:3;;24479:22;;;;;;;;;;;:27;24502:3;24479:27;;;;;;;;;;;;:43;;;;;;;;;;;24555:4;24536:11;:16;24548:3;24536:16;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;24449:445;;;24600:9;24590:6;:19;24587:296;;24666:1;24659:6;:8;24628:17;:22;24646:3;;24628:22;;;;;;;;;;;:27;24651:3;24628:27;;;;;;;;;;;;:39;;;;;;;;;;;24587:296;;;24699:9;24690:6;:18;:41;;;;;24722:9;24712:6;:19;;24690:41;24687:196;;;24790:2;24787;24780:6;:9;:12;;;;;;24750:17;:22;24768:3;;24750:22;;;;;;;;;;;:27;24773:3;24750:27;;;;;;;;;;;;:42;;;;;;;;;;;24687:196;;;24867:1;24860:6;:8;24829:17;:22;24847:3;;24829:22;;;;;;;;;;;:27;24852:3;24829:27;;;;;;;;;;;;:39;;;;;;;;;;;24687:196;24587:296;24449:445;24919:4;24912:11;;;;22738:2201;;;;;:::o;21953:775::-;22056:4;:9;22061:3;;22056:9;;;;;;;;;;;:21;22066:10;22056:21;;;;;;;;;;;:30;;;;;;;;;;;;22052:662;;22114:9;22104:6;:19;;:66;;;;;22128:8;:20;22137:10;22128:20;;;;;;;;;;;:34;;:42;22163:6;22128:42;;;;;;;;;;;;;;;;;;;;;22127:43;22104:66;22101:603;;;22222:4;22189;:9;22194:3;;22189:9;;;;;;;;;;;:21;22199:10;22189:21;;;;;;;;;;;:30;;;:37;;;;;;;;;;;;;;;;;;22286:4;:11;22295:1;22291:3;;:5;22286:11;;;;;;;;;;;:23;22298:10;22286:23;;;;;;;;;;;:36;;;22247:17;:24;22269:1;22265:3;;:5;22247:24;;;;;;;;;;;:36;22272:10;22247:36;;;;;;;;;;;;:75;22244:429;;;22423:4;:11;22432:1;22428:3;;:5;22423:11;;;;;;;;;;;:23;22435:10;22423:23;;;;;;;;;;;:36;;;22384:17;:24;22406:1;22402:3;;:5;22384:24;;;;;;;;;;;:36;22409:10;22384:36;;;;;;;;;;;;:75;22345:17;:22;22363:3;;22345:22;;;;;;;;;;;:34;22368:10;22345:34;;;;;;;;;;;;:115;;;;;;;;;;;22519:4;:11;22528:1;22524:3;;:5;22519:11;;;;;;;;;;;:23;22531:10;22519:23;;;;;;;;;;;:36;;;22482:4;:9;22487:3;;22482:9;;;;;;;;;;;:21;22492:10;22482:21;;;;;;;;;;;:34;;:73;;;;22616:4;:11;22625:1;22621:3;;:5;22616:11;;;;;;;;;;;:23;22628:10;22616:23;;;;;;;;;;;:38;;;22577:4;:9;22582:3;;22577:9;;;;;;;;;;;:21;22587:10;22577:21;;;;;;;;;;;:36;;:77;;;;22244:429;22101:603;22052:662;21953:775;;;:::o;25204:1598::-;25311:17;25431:1;25415:13;;:17;25412:1335;;;25474:13;;25468:3;25466:1;25459:6;:8;:12;;;;;;25458:29;;;;;;25447:40;;25501:15;25534:9;25546:1;25534:13;;25530:1207;25554:13;;25549:1;:18;25530:1207;;25601:11;:14;25613:1;25601:14;;;;;;;;;;;;25591:24;;25643:1;25636:3;;:8;:51;;;;25654:1;25649:3;;:6;:37;;;;;25659:4;:9;25664:3;;25659:9;;;;;;;;;;;:18;25669:7;25659:18;;;;;;;;;;;:27;;;;;;;;;;;;25649:37;25636:51;25633:1090;;;25775:17;:22;25793:3;;25775:22;;;;;;;;;;;:31;25798:7;25775:31;;;;;;;;;;;;25740:4;:9;25745:3;;25740:9;;;;;;;;;;;:18;25750:7;25740:18;;;;;;;;;;;:31;;;:66;25737:926;;25833:8;;25737:926;25944:17;:22;25962:3;;25944:22;;;;;;;;;;;:31;25967:7;25944:31;;;;;;;;;;;;25932:9;25898:4;:9;25903:3;;25898:9;;;;;;;;;;;:18;25908:7;25898:18;;;;;;;;;;;:31;;;:43;:77;25894:747;;;26006:13;26056:4;:9;26061:3;;26056:9;;;;;;;;;;;:18;26066:7;26056:18;;;;;;;;;;;:31;;;26022:17;:22;26040:3;;26022:22;;;;;;;;;;;:31;26045:7;26022:31;;;;;;;;;;;;:65;26006:81;;26180:4;26146;:9;26151:3;;26146:9;;;;;;;;;;;:18;26156:7;26146:18;;;;;;;;;;;:31;;;:38;;;;;;;;;;;26244:4;26214:12;:17;26227:3;;26214:17;;;;;;;;;;;:26;26232:7;26214:26;;;;;;;;;;;;:34;;;;;;;;;;;26302:4;26278:15;:20;26294:3;;26278:20;;;;;;;;;;;;:28;;;;;;;;;;;25894:747;;;;26398:9;26368:12;:17;26381:3;;26368:17;;;;;;;;;;;:26;26386:7;26368:26;;;;;;;;;;;;:39;;;;;;;;;;;26541:9;26506:4;:9;26511:3;;26506:9;;;;;;;;;;;:18;26516:7;26506:18;;;;;;;;;;;:31;;;:44;;;;;;;;;;;26605:9;26581:15;:20;26597:3;;26581:20;;;;;;;;;;;;:33;;;;;;;;;;;25894:747;25633:1090;25530:1207;25569:3;;;;;;;25530:1207;;;;25412:1335;;26765:30;26781:6;26788;26765:15;:30::i;:::-;25204:1598;;;:::o;24949:245::-;25017:11;:19;25029:6;25017:19;;;;;;;;;;;;;;;;;;;;;25014:54;;;25051:7;;25014:54;25097:1;25077:5;:10;25083:3;;25077:10;;;;;;;;;;;:16;;;:21;;;;;;;;;;;25129:6;25108:5;:10;25114:3;;25108:10;;;;;;;;;;;:18;;:27;;;;25145:5;:10;25151:3;;25145:10;;;;;;;;;;;:20;;25171:6;25145:33;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;25145:33:1;;;;;;;;;;;;;;;;;;;;;;24949:245;;:::o;32427:1499::-;32500:19;2879:13;32579:2;:11;32561:13;;32555:3;:19;:36;32552:1338;;32703:5;32698:2;32688:6;2879:13;32662:9;32655:3;:16;32654:29;;;;;;32653:41;:48;32652:56;;;;;;32638:70;;32552:1338;;;2879:13;32755:3;:12;32737:13;;32731:3;:19;:37;32728:1162;;32798:15;2879:13;32832:2;:9;32816:13;;:25;32798:43;;32874:7;32862:9;:19;32859:300;;;33020:5;33015:2;33005:6;2879:13;32982:7;32976:3;:13;32975:24;;;;;;32974:37;:44;32973:52;;;;;;32965:5;32961:2;32952:6;2879:13;32931:9;32921:7;:19;32920:28;;;;;;32919:39;:44;32918:52;;;;;;:107;32904:121;;32859:300;;;33135:5;33130:2;33120:6;2879:13;33094:9;33087:3;:16;33086:29;;;;;;33085:41;:48;33084:56;;;;;;33070:70;;32859:300;32728:1162;;;;33234:15;2879:13;33268:2;:9;33252:13;;:25;33234:43;;33295:15;2879:13;33328:3;:10;33313:13;;:25;33295:43;;33371:7;33359:9;:19;33356:514;;;33542:5;33538:2;33529:6;2879:13;33507:7;33501:3;:13;33500:24;;;;;;33499:36;:41;33498:49;;;;;;33490:5;33486:2;33477:6;33471:2;:12;:17;33470:25;;;;;;33462:5;33458:2;33449:6;2879:13;33428:9;33418:7;:19;33417:28;;;;;;33416:39;:44;33415:52;;;;;;:80;:132;33401:146;;33356:514;;;33586:7;33574:9;:19;33571:299;;;33731:5;33726:2;33716:6;2879:13;33694:7;33688:3;:13;33687:24;;;;;;33686:36;:43;33685:51;;;;;;33677:5;33673:2;33664:6;2879:13;33643:9;33633:7;:19;33632:28;;;;;;33631:39;:44;33630:52;;;;;;:106;33616:120;;33571:299;;;33846:5;33841:2;33831:6;2879:13;33805:9;33798:3;:16;33797:29;;;;;;33796:41;:48;33795:56;;;;;;33781:70;;33571:299;33356:514;32728:1162;;;32552:1338;32427:1499;;;;:::o;14473:4206::-;14550:15;14568:8;:16;14577:6;14568:16;;;;;;;;;;;:26;;;14550:44;;14604:14;14621:8;:17;14630:7;14621:17;;;;;;;;;;;:27;;;14604:44;;14658:15;14676:1;14658:19;;14696:12;14711:13;14696:28;;14894:7;14902:1;14894:9;;14890:3783;14909:1;14905;:5;;;14890:3783;;14962:13;14955:20;;15003:1;14992:7;:12;14989:55;;;15023:7;;;;;;;14989:55;15136:17;:22;15154:3;;15136:22;;;;;;;;;;;:31;15159:7;15136:31;;;;;;;;;;;;15101:4;:9;15106:3;;15101:9;;;;;;;;;;;:18;15111:7;15101:18;;;;;;;;;;;:31;;;:66;;:98;;;;15172:4;:9;15177:3;;15172:9;;;;;;;;;;;:18;15182:7;15172:18;;;;;;;;;;;:27;;;;;;;;;;;;15171:28;15101:98;15098:252;;;15228:8;:17;15237:7;15228:17;;;;;;;;;;;:27;;;15218:37;;15282:8;:17;15291:7;15282:17;;;;;;;;;;;:27;;;15273:36;;15327:8;;15098:252;16133:11;:20;16145:7;16133:20;;;;;;;;;;;;;;;;;;;;;16132:21;:68;;;;;16191:9;16157:4;:9;16162:3;;16157:9;;;;;;;;;;;:18;16167:7;16157:18;;;;;;;;;;;:31;;;:43;;16132:68;:136;;;;;16238:4;:9;16243:3;;16238:9;;;;;;;;;;;:17;16248:6;16238:17;;;;;;;;;;;:30;;;16204:4;:9;16209:3;;16204:9;;;;;;;;;;;:18;16214:7;16204:18;;;;;;;;;;;:31;;;:64;16132:136;16129:575;;;16355:1;16319:4;:9;16324:3;;16319:9;;;;;;;;;;;:17;16329:6;16319:17;;;;;;;;;;;:32;;;:37;16316:366;;;16394:68;16402:4;:9;16407:3;;16402:9;;;;;;;;;;;:17;16412:6;16402:17;;;;;;;;;;;:27;;;16430:4;:9;16435:3;;16430:9;;;;;;;;;;;:18;16440:7;16430:18;;;;;;;;;;;:31;;;16394:7;:68::i;:::-;16387:75;;16316:366;;;2879:13;16503:4;:9;16508:3;;16503:9;;;;;;;;;;;:17;16513:6;16503:17;;;;;;;;;;;:32;;;16497:3;:38;:47;16494:188;;;16582:73;16590:4;:9;16595:3;;16590:9;;;;;;;;;;;:17;16600:6;16590:17;;;;;;;;;;;:32;;;16623:4;:9;16628:3;;16623:9;;;;;;;;;;;:18;16633:7;16623:18;;;;;;;;;;;:31;;;16582:7;:73::i;:::-;16575:80;;16494:188;16316:366;16129:575;16749:1;16744;:6;;;16741:243;;;16793:3;16789:2;16784:4;:7;16783:13;;;;;;16773:23;;16741:243;;;16826:1;16823;:4;;;;:12;;;;;16834:1;16831;:4;;;;16823:12;16820:164;;;16878:3;16874:2;16869:4;:7;16868:13;;;;;;16858:23;;16820:164;;;16911:1;16908;:4;;;;:12;;;;;16919:1;16916;:4;;;;16908:12;16905:79;;;16962:3;16959:1;16954:4;:6;16953:12;;;;;;16943:22;;16905:79;16820:164;16741:243;17007:1;17004;:4;;;:11;;;;17014:1;17011;:4;;;17004:11;17001:397;;;17048:1;17041:6;:8;17038:72;;;17085:1;17075:11;;17038:72;17001:397;;;17139:1;17136;:4;;;:12;;;;17147:1;17144;:4;;;17136:12;17133:265;;;17182:1;17174:6;:9;17171:73;;;17220:1;17210:11;;17171:73;17133:265;;;17274:1;17271;:4;;;:12;;;;17282:1;17279;:4;;;17271:12;17268:130;;;17318:1;17309:6;:10;17306:74;;;17356:1;17346:11;;17306:74;17268:130;17133:265;17001:397;17445:1;17435:7;:11;17432:1079;;;17516:17;:22;17534:3;;17516:22;;;;;;;;;;;:31;17539:7;17516:31;;;;;;;;;;;;17506:7;17472:4;:9;17477:3;;17472:9;;;;;;;;;;;:18;17482:7;17472:18;;;;;;;;;;;:31;;;:41;:75;17469:201;;;17617:4;:9;17622:3;;17617:9;;;;;;;;;;;:18;17627:7;17617:18;;;;;;;;;;;:31;;;17583:17;:22;17601:3;;17583:22;;;;;;;;;;;:31;17606:7;17583:31;;;;;;;;;;;;:65;17573:75;;17469:201;17736:7;17713:15;:20;17729:3;;17713:20;;;;;;;;;;;;:30;17710:782;;;17869:7;17833:4;:9;17838:3;;17833:9;;;;;;;;;;;:18;17843:7;17833:18;;;;;;;;;;;:32;;;:43;;;;;;;;;;;17937:7;17902:4;:9;17907:3;;17902:9;;;;;;;;;;;:18;17912:7;17902:18;;;;;;;;;;;:31;;;:42;;;;;;;;;;;17994:7;17970:15;:20;17986:3;;17970:20;;;;;;;;;;;;:31;;;;;;;;;;;17710:782;;;18191:15;:20;18207:3;;18191:20;;;;;;;;;;;;18155:4;:9;18160:3;;18155:9;;;;;;;;;;;:18;18165:7;18155:18;;;;;;;;;;;:32;;;:56;;;;;;;;;;;18272:15;:20;18288:3;;18272:20;;;;;;;;;;;;18237:4;:9;18242:3;;18237:9;;;;;;;;;;;:18;18247:7;18237:18;;;;;;;;;;;:31;;;:55;;;;;;;;;;;18340:1;18318:15;:20;18334:3;;18318:20;;;;;;;;;;;:23;;;;18423:15;:13;:15::i;:::-;18464:5;;17710:782;17432:1079;18547:1;18537:11;;18572:8;:17;18581:7;18572:17;;;;;;;;;;;:27;;;18562:37;;18622:8;:17;18631:7;18622:17;;;;;;;;;;;:27;;;18613:36;;14890:3783;14911:3;;;;;;;14890:3783;;;;14473:4206;;;;;;;:::o;35088:1558::-;35141:18;35169:11;35191;35205:5;:10;35211:3;;35205:10;;;;;;;;;;;:16;;;35191:30;;35231:14;35265:3;35259;:9;35256:67;;;35309:3;35292:5;:10;35298:3;;35292:10;;;;;;;;;;;:16;;;:20;35283:29;;35256:67;35336:9;35346:6;35336:16;;35332:766;35357:3;35355:1;:5;35332:766;;;35386:5;:10;35392:3;;35386:10;;;;;;;;;;;:20;;35413:1;35411;35407:3;:5;:7;35386:29;;;;;;;;;;;;;;;;35380:35;;35449:4;35429:7;:12;35437:3;;35429:12;;;;;;;;;;;:17;35442:3;35429:17;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;35510:1;35481:4;:9;35486:3;;35481:9;;;;;;;;;;;:14;35491:3;35481:14;;;;;;;;;;;:27;;;:30;35467:44;;;;35540:15;:20;35556:3;;35540:20;;;;;;;;;;;;35528:10;:32;35525:550;;35656:1;35654;35650:3;:5;:7;35623:5;:10;35629:3;;35623:10;;;;;;;;;;;:24;;:34;;;;35767:1;35738:4;:9;35743:3;;35738:9;;;;;;;;;;;:14;35748:3;35738:14;;;;;;;;;;;:27;;;:30;35727:10;:41;35703:15;:20;35719:3;;35703:20;;;;;;;;;;;;:66;35675:5;:10;35681:3;;35675:10;;;;;;;;;;;:25;;:94;;;;35816:15;:20;35832:3;;35816:20;;;;;;;;;;;;35787:5;:10;35793:3;;35787:10;;;;;;;;;;;:26;;:49;;;;35854:5;;35525:550;35923:1;35919:3;:5;35916:1;:8;35913:148;;;35974:6;35947:5;:10;35953:3;;35947:10;;;;;;;;;;;:24;;:33;;;;36031:10;36002:5;:10;36008:3;;36002:10;;;;;;;;;;;:26;;:39;;;;35913:148;35362:3;;;;;;;35332:766;;;;36116:3;;:5;;;;;;;;;;;;;36148:3;;36131:5;:10;36137:3;;36131:10;;;;;;;;;;;:14;;:20;;;;36185:3;36161:5;:10;36167:3;;36161:10;;;;;;;;;;;:21;;:27;;;;36217:1;36198:5;:10;36204:3;;36198:10;;;;;;;;;;;:16;;:20;;;;36251:15;:22;36271:1;36267:3;;:5;36251:22;;;;;;;;;;;;36228:15;:20;36244:3;;36228:20;;;;;;;;;;;:45;;;;36314:15;:22;36334:1;36330:3;;:5;36314:22;;;;;;;;;;;;36283:23;:28;36307:3;;36283:28;;;;;;;;;;;:53;;;;36383:18;:25;36406:1;36402:3;;:5;36383:25;;;;;;;;;;;;36358:15;:22;36378:1;36374:3;;:5;36358:22;;;;;;;;;;;;:50;36355:248;;;36473:18;:25;36496:1;36492:3;;:5;36473:25;;;;;;;;;;;;36450:15;:22;36470:1;36466:3;;:5;36450:22;;;;;;;;;;;;:48;36426:15;:20;36442:3;;36426:20;;;;;;;;;;;;:72;;;;;;;;;;;36567:18;:25;36590:1;36586:3;;:5;36567:25;;;;;;;;;;;;36544:15;:22;36564:1;36560:3;;:5;36544:22;;;;;;;;;;;;:48;36512:23;:28;36536:3;;36512:28;;;;;;;;;;;;:80;;;;;;;;;;;36355:248;36621:13;:11;:13::i;:::-;35088:1558;;;;:::o;36656:766::-;4949:42;36771:16;;:4;:16;;;36768:48;;;36789:25;4949:42;36810:1;36812;36789:11;:25::i;:::-;36768:48;5208:42;36828:16;;:4;:16;;;36825:48;;;36846:25;5208:42;36867:1;36869;36846:11;:25::i;:::-;36825:48;5293:42;36885:16;;:4;:16;;;36882:48;;;36903:25;5293:42;36924:1;36926;36903:11;:25::i;:::-;36882:48;5378:42;36942:16;;:4;:16;;;36939:49;;;36960:25;5378:42;36981:1;36983;36960:11;:25::i;:::-;36939:49;5463:42;37000:16;;:4;:16;;;36997:48;;;37018:25;5463:42;37039:1;37041;37018:11;:25::i;:::-;36997:48;5548:42;37066:16;;:4;:16;;;37063:48;;;37084:25;5548:42;37105:1;37107;37084:11;:25::i;:::-;37063:48;5724:42;37123:16;;:4;:16;;;37120:48;;;37141:25;5724:42;37162:1;37164;37141:11;:25::i;:::-;37120:48;5809:42;37180:16;;:4;:16;;;37177:48;;;37198:25;5809:42;37219:1;37221;37198:11;:25::i;:::-;37177:48;5894:42;37237:16;;:4;:16;;;37234:48;;;37255:25;5894:42;37276:1;37278;37255:11;:25::i;:::-;37234:48;5980:42;37294:17;;:4;:17;;;37291:51;;;37313:27;5980:42;37335:2;37338:1;37313:11;:27::i;:::-;37291:51;6066:42;37354:17;;:4;:17;;;37351:51;;;37373:27;6066:42;37395:2;37398:1;37373:11;:27::i;:::-;37351:51;36656:766;:::o;26812:2994::-;26903:18;26936:10;26949:6;26936:19;;27046:17;27077:21;27112:22;27135:1;27112:24;;27150:30;27197:3;27183:18;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;27183:18:1;;;;27150:51;;27215:18;27260:14;27277:1;27260:18;;27310:7;27318:1;27310:9;;27306:2142;27322:3;27320:1;:5;;;27306:2142;;;27361:8;:12;27370:2;27361:12;;;;;;;;;;;:22;;;27348:35;;27419:8;:20;27428:10;27419:20;;;;;;;;;;;:30;;;;;;;;;;;;27401:48;;27484:1;27470:10;:15;27467:65;;;27508:5;;27467:65;27569:12;:24;27582:10;27569:24;;;;;;;;;;;;;;;;;;;;;:39;;;;;27607:1;27597:6;:11;27569:39;:71;;;;;27610:4;:9;27615:3;;27610:9;;;;;;;;;;;:21;27620:10;27610:21;;;;;;;;;;;:30;;;;;;;;;;;;27569:71;27566:135;;;27672:10;27663:19;;27566:135;27798:37;27814:2;27817:10;27828:6;27798:15;:37::i;:::-;27927:1;27909:15;:19;;;27906:920;;;27977:1;27958:15;:20;;;:37;;;;;27994:1;27982:9;:13;;27958:37;:64;;;;;28000:10;:22;28011:10;28000:22;;;;;;;;;;;;;;;;;;;;;27999:23;27958:64;27955:270;;;28078:4;28053:10;:22;28064:10;28053:22;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;28128:1;28112:13;;:17;;;;;;;;;;;28188:10;28159:11;:26;28171:13;;28159:26;;;;;;;;;;;:39;;;;27955:270;28272:1;28253:15;:20;;;:47;;;;;28278:10;:22;28289:10;28278:22;;;;;;;;;;;;;;;;;;;;;28277:23;28253:47;28250:119;;;28331:11;;;;;;;28250:119;28462:4;:9;28467:3;;28462:9;;;;;;;;;;;:21;28472:10;28462:21;;;;;;;;;;;:30;;;;;;;;;;;;28459:345;;;28544:16;28526:34;;:15;:34;;;28523:255;;;28614:15;28595:34;;28691:10;28663:13;28677:10;28663:25;;;;;;;;;;;;;:38;;;;;28735:12;;;;;;;28523:255;28459:345;27906:920;28923:9;28885:4;:9;28890:3;;28885:9;;;;;;;;;;;:21;28895:10;28885:21;;;;;;;;;;;:34;;;:47;;:86;;;;;28970:1;28936:8;:20;28945:10;28936:20;;;;;;;;;;;:30;;;:35;;28885:86;28881:458;;;29004:7;29014:1;29004:11;;28999:318;29022:1;29017;:6;;;28999:318;;29177:11;:14;29189:1;29177:14;;;;;;;;;;;;;;;;29103:8;:20;29112:10;29103:20;;;;;;;;;;;:36;;:71;29140:8;:20;29149:10;29140:20;;;;;;;;;;;:33;;;29103:71;;;;;;;;;;;;29063:8;:20;29072:10;29063:20;;;;;;;;;;;:37;;;:111;:128;29060:231;;;29259:1;29226:8;:20;29235:10;29226:20;;;;;;;;;;;:30;;;:34;;;;;;;;;;;;;;;;;;29060:231;29025:3;;;;;;;28999:318;;;;28881:458;29386:10;29381:15;;27326:3;;;;;;;27306:2142;;;;29520:1;29508:10;:13;29505:131;;;29540:64;29555:10;29566:13;29580:16;29597:6;29540:14;:64::i;:::-;29505:131;29705:1;29696:6;:10;29693:81;;;29725:34;29745:6;29752;29725:19;:34::i;:::-;29693:81;26812:2994;;;;;;;;;;:::o;39387:338::-;39432:7;39440:1;39432:9;;39428:288;39445:2;39442:1;:5;;;39428:288;;39494:17;:24;39516:1;39512:3;;:5;39494:24;;;;;;;;;;;:27;39519:1;39494:27;;;;;;;;;;;;;;39466:17;:22;39484:3;;39466:22;;;;;;;;;;;:25;39489:1;39466:25;;;;;;;;;;;;;:55;;;;39559:4;39535;:9;39540:3;;39535:9;;;;;;;;;;;:12;39545:1;39535:12;;;;;;;;;;;;;:21;;;:28;;;;;;;;;;;;;;;;;;39605:4;:9;39610:3;;39605:9;;;;;;;;;;;:14;39617:1;39615;:3;39605:14;;;;;;;;;;;;;:27;;;39577:4;:9;39582:3;;39577:9;;;;;;;;;;;:12;39587:1;39577:12;;;;;;;;;;;;;:25;;:55;;;;39676:4;:11;39685:1;39681:3;;:5;39676:11;;;;;;;;;;;:14;39688:1;39676:14;;;;;;;;;;;;;:29;;;39646:4;:9;39651:3;;39646:9;;;;;;;;;;;:12;39656:1;39646:12;;;;;;;;;;;;;:27;;:59;;;;39448:3;;;;;;;39428:288;;;;39387:338::o;37437:1940::-;37546:4;37531:6;:12;37538:4;37531:12;;;;;;;;;;;;;;;:19;;;;37615:4;37598:8;:14;37607:4;37598:14;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;37656:4;37629;:9;37634:3;;37629:9;;;;;;;;;;;:15;37639:4;37629:15;;;;;;;;;;;:24;;;:31;;;;;;;;;;;;;;;;;;37699:1;37691:4;:9;37688:1630;;;37742:1;37715:8;:14;37724:4;37715:14;;;;;;;;;;;:24;;:28;;;;37784:1;37757:8;:14;37766:4;37757:14;;;;;;;;;;;:24;;:28;;;;37833:4;37799:8;:14;37808:4;37799:14;;;;;;;;;;;:28;;:31;37828:1;37799:31;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;37885:4;37851:8;:14;37860:4;37851:14;;;;;;;;;;;:28;;:31;37880:1;37851:31;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;37937:4;37903:8;:14;37912:4;37903:14;;;;;;;;;;;:28;;:31;37932:1;37903:31;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;37688:1630;;;38112:1;38104:4;:9;38101:1217;;;38155:1;38128:8;:14;38137:4;38128:14;;;;;;;;;;;:24;;:28;;;;38197:1;38170:8;:14;38179:4;38170:14;;;;;;;;;;;:24;;:28;;;;38246:4;38212:8;:14;38221:4;38212:14;;;;;;;;;;;:28;;:31;38241:1;38212:31;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;38298:4;38264:8;:14;38273:4;38264:14;;;;;;;;;;;:28;;:31;38293:1;38264:31;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;38350:4;38316:8;:14;38325:4;38316:14;;;;;;;;;;;:28;;:31;38345:1;38316:31;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;38101:1217;;;38525:1;38517:4;:9;38514:804;;;38569:1;38542:8;:14;38551:4;38542:14;;;;;;;;;;;:24;;:28;;;;38611:1;38584:8;:14;38593:4;38584:14;;;;;;;;;;;:24;;:28;;;;38660:4;38626:8;:14;38635:4;38626:14;;;;;;;;;;;:28;;:31;38655:1;38626:31;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;38712:4;38678:8;:14;38687:4;38678:14;;;;;;;;;;;:28;;:31;38707:1;38678:31;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;38514:804;;;38839:1;38831:4;:9;38828:490;;;38882:1;38855:8;:14;38864:4;38855:14;;;;;;;;;;;:24;;:28;;;;38924:1;38897:8;:14;38906:4;38897:14;;;;;;;;;;;:24;;:28;;;;38974:4;38939:8;:14;38948:4;38939:14;;;;;;;;;;;:28;;:32;38968:2;38939:32;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;39027:4;38992:8;:14;39001:4;38992:14;;;;;;;;;;;:28;;:32;39021:2;38992:32;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;38828:490;;;39155:1;39148:4;:8;;:22;;;;;39168:2;39160:4;:10;;39148:22;39145:173;;;39211:9;39184:8;:14;39193:4;39184:14;;;;;;;;;;;:24;;:36;;;;39255:4;39234:12;:18;39247:4;39234:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;39295:4;39272:14;:20;39287:4;39272:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;39145:173;38828:490;38514:804;38101:1217;37688:1630;39360:1;39336:8;:14;39345:4;39336:14;;;;;;;;;;;:21;;:25;;;;37437:1940;;;:::o;31674:728::-;31768:42;31813:8;:16;31822:6;31813:16;;;;;;;;;;;31768:61;;31864:5;:19;;:27;31884:6;31864:27;;;;;;;;;;;;;;;;;;;;;31860:192;;31925:1;31906:5;:15;;;:20;;;;;;;;;;;32037:4;32007:5;:19;;:27;32027:6;32007:27;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;31860:192;32128:6;32095:5;:21;;:29;32117:6;32095:29;;;;;;;;;;;;:39;;;;;;;;;;;32200:6;32174:5;:22;;;:32;;;;;;;;;;;32293:5;:21;;:41;32315:5;:18;;;32293:41;;;;;;;;;;;;32261:5;:21;;:29;32283:6;32261:29;;;;;;;;;;;;:73;32258:129;;;32370:6;32349:5;:18;;:27;;;;32258:129;31674:728;;;;:::o;29816:1251::-;29953:21;29978:8;:26;29987:16;29978:26;;;;;;;;;;;;;;;;;;;;;;;;;29953:51;;30022:14;30054:12;30084:15;30117;30154:7;30162:1;30154:9;;30150:898;30166:8;30164:1;:10;;;30150:898;;;30211:13;30225:1;30211:16;;;;;;;;;;;;;;;;30201:26;;30282:8;:17;30291:7;30282:17;;;;;;;;;;;:27;;;;;;;;;;;;30270:39;;30346:1;30334:8;:13;;;30331:378;;;30383:8;:19;30392:9;30383:19;;;;;;;;;;;;;;;;;;;;;;;;;30374:28;;30331:378;;;30497:8;30475;:19;30484:9;30475:19;;;;;;;;;;;;;;;;;;;;;;;;;:30;30458:47;;:15;:47;;;30455:232;;;30567:8;30545;:19;30554:9;30545:19;;;;;;;;;;;;;;;;;;;;;;;;;:30;30536:39;;30455:232;;;30645:15;30636:24;;30455:232;30331:378;30751:37;30766:7;30774:6;30781;30751:14;:37::i;:::-;30843:6;30831:18;;;;30892:6;30874:24;;:15;:24;;;30871:159;;;30943:6;30925:24;;;;30871:159;;;31002:5;;30871:159;30175:3;;;;;;;30150:898;;;;29816:1251;;;;;;;;;:::o;31077:577::-;31161:16;31221:17;:22;31239:3;;31221:22;;;;;;;;;;;:28;31244:4;31221:28;;;;;;;;;;;;31190:4;:9;31195:3;;31190:9;;;;;;;;;;;:15;31200:4;31190:15;;;;;;;;;;;:28;;;:59;31187:429;;;31323:17;:22;31341:3;;31323:22;;;;;;;;;;;:28;31346:4;31323:28;;;;;;;;;;;;31317:3;31314:1;31307:6;:8;31306:14;;;;;;31275:4;:9;31280:3;;31275:9;;;;;;;;;;;:15;31285:4;31275:15;;;;;;;;;;;:28;;;:45;:76;:150;;31422:3;31419:1;31412:6;:8;31411:14;;;;;;31275:150;;;31382:4;:9;31387:3;;31382:9;;;;;;;;;;;:15;31392:4;31382:15;;;;;;;;;;;:28;;;31353:17;:22;31371:3;;31353:22;;;;;;;;;;;:28;31376:4;31353:28;;;;;;;;;;;;:57;31275:150;31264:161;;31471:8;31439:4;:9;31444:3;;31439:9;;;;;;;;;;;:15;31449:4;31439:15;;;;;;;;;;;:28;;;:40;;;;;;;;;;;31541:8;31510:16;:21;31527:3;;31510:21;;;;;;;;;;;:27;31532:4;31510:27;;;;;;;;;;;;:39;;;;;;;;;;;31606:8;31581:15;:20;31597:3;;31581:20;;;;;;;;;;;;:33;;;;;;;;;;;31187:429;31077:577;;;:::o

Swarm Source

bzzr://00ed826875b4610194c1e09fd9d39b07cf2f4936717190ee5c5b18bf3ba564a7

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.