ETH Price: $1,592.03 (+0.46%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy Level Matrix...101998752020-06-04 14:28:481779 days ago1591280928IN
0x96550954...8EF3191bB
0.05 ETH0.0152534337
Reg User101972392020-06-04 4:44:241779 days ago1591245864IN
0x96550954...8EF3191bB
0.08 ETH0.0064784225
Reg User101917472020-06-03 8:24:401780 days ago1591172680IN
0x96550954...8EF3191bB
0.08 ETH0.0062812821
Reg User101639842020-05-30 0:46:471785 days ago1590799607IN
0x96550954...8EF3191bB
0.08 ETH0.0134697312
Buy Level Matrix...101002132020-05-20 2:39:011794 days ago1589942341IN
0x96550954...8EF3191bB
0.3 ETH0.0021531127.49999923
Buy Level Matrix...101001732020-05-20 2:30:291794 days ago1589941829IN
0x96550954...8EF3191bB
0.05 ETH0.0122439729.69999974
Reg User100969582020-05-19 14:45:281795 days ago1589899528IN
0x96550954...8EF3191bB
0.08 ETH0.0096879236
Reg User100880072020-05-18 5:01:541796 days ago1589778114IN
0x96550954...8EF3191bB
0.08 ETH0.0064784225
Reg User100831222020-05-17 10:48:001797 days ago1589712480IN
0x96550954...8EF3191bB
0.08 ETH0.011006368
Buy Level Matrix...100451652020-05-11 13:22:131803 days ago1589203333IN
0x96550954...8EF3191bB
0.1 ETH0.0014917823
Buy Level Matrix...100435422020-05-11 7:16:061803 days ago1589181366IN
0x96550954...8EF3191bB
0.05 ETH0.000430289
Buy Level Matrix...100422462020-05-11 2:26:091803 days ago1589163969IN
0x96550954...8EF3191bB
0.05 ETH0.004534811
Buy Level Matrix...100421242020-05-11 2:02:431804 days ago1589162563IN
0x96550954...8EF3191bB
0.05 ETH0.004534811
Reg User100389652020-05-10 14:27:311804 days ago1589120851IN
0x96550954...8EF3191bB
0.08 ETH0.0064971722
Buy Level Matrix...100378242020-05-10 10:08:271804 days ago1589105307IN
0x96550954...8EF3191bB
0.05 ETH0.004534811
Reg User100300282020-05-09 4:55:131805 days ago1589000113IN
0x96550954...8EF3191bB
0.08 ETH0.0026910910
Buy Level Matrix...99985272020-05-04 8:06:181810 days ago1588579578IN
0x96550954...8EF3191bB
1.25 ETH0.000666857
Reg User99978422020-05-04 5:34:541810 days ago1588570494IN
0x96550954...8EF3191bB
0.08 ETH0.001734826
Buy Level Matrix...99976242020-05-04 4:46:581810 days ago1588567618IN
0x96550954...8EF3191bB
0.1 ETH0.000389166
Buy Level Matrix...99965162020-05-04 0:39:441811 days ago1588552784IN
0x96550954...8EF3191bB
0.05 ETH0.000824512
Buy Level Matrix...99964232020-05-04 0:21:011811 days ago1588551661IN
0x96550954...8EF3191bB
0.05 ETH0.000382478
Buy Level Matrix...99964212020-05-04 0:20:391811 days ago1588551639IN
0x96550954...8EF3191bB
0.05 ETH0.000286856
Reg User99876962020-05-02 15:55:011812 days ago1588434901IN
0x96550954...8EF3191bB
0.08 ETH0.001794656
Reg User99869582020-05-02 13:19:221812 days ago1588425562IN
0x96550954...8EF3191bB
0.08 ETH0.002023957
Reg User99854212020-05-02 7:31:141812 days ago1588404674IN
0x96550954...8EF3191bB
0.08 ETH0.002421989
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101998752020-06-04 14:28:481779 days ago1591280928
0x96550954...8EF3191bB
0.0025 ETH
-101972392020-06-04 4:44:241779 days ago1591245864
0x96550954...8EF3191bB
0.05 ETH
-101972392020-06-04 4:44:241779 days ago1591245864
0x96550954...8EF3191bB
0.03 ETH
-101917472020-06-03 8:24:401780 days ago1591172680
0x96550954...8EF3191bB
0.05 ETH
-101917472020-06-03 8:24:401780 days ago1591172680
0x96550954...8EF3191bB
0.03 ETH
-101639842020-05-30 0:46:471785 days ago1590799607
0x96550954...8EF3191bB
0.0025 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Etrix

Compiler Version
v0.5.11+commit.c082d0b4

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
Etrix 2.0 
Developed and created with love
*/

pragma solidity 0.5.11;


contract Etrix {

    address public _owner;
    Etrix public oldSC = Etrix(0xCB8E1352034b97Fb60fDD891c0b23A32AF29d25d);
    Etrix public newSC = Etrix(0x81c51a0B5c22dcA578039C7401B245aFd34F52F4);
    uint public oldSCUserId = 2;

      //Structure to store the user related data
      struct UserStruct {
        bool isExist;
        uint id;
        uint referrerIDMatrix1;
        uint referrerIDMatrix2;
        address[] referralMatrix1;
        address[] referralMatrix2;
        uint referralCounter;
        mapping(uint => uint) levelExpiredMatrix1;
        mapping(uint => uint) levelExpiredMatrix2;
        mapping(uint => uint) levelExpiredMatrix3; 
    }

    //A person can have maximum 2 branches
    uint constant private REFERRER_1_LEVEL_LIMIT = 2;
    //period of a particular level
    uint constant private PERIOD_LENGTH = 90 days;
    //person where the new user will be joined
    uint public availablePersonID;
    //Addresses of the Team   
    address [] public shareHoldersM1;
    //Addresses of the Team   
    address [] public shareHoldersM2;
    //Addresses of the Team   
    address [] public shareHoldersM3;
    //cost of each level
    mapping(uint => uint) public LEVEL_PRICE;
    mapping(uint => uint) public LEVEL_PRICEM3;
    uint public REFERRAL_COMMISSION;

    mapping (uint => uint) public uplinesToRcvEth;

    //data of each user from the address
    mapping (address => UserStruct) public users;
    //user address by their id
    mapping (uint => address) public userList;
    //to track latest user ID
    uint public currUserID = 0;

    event regLevelEvent(address indexed _user, address indexed _referrer, uint _time);
    event buyLevelEvent(address indexed _user, uint _level, uint _time, uint _matrix);
    event prolongateLevelEvent(address indexed _user, uint _level, uint _time);
    event getMoneyForLevelEvent(address indexed _user, address indexed _referral, uint _level, uint _time, uint _matrix);
    event lostMoneyForLevelEvent(address indexed _user, address indexed _referral, uint _level, uint _time, uint _matrix);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event syncComplete();

    constructor() public {
        _owner = msg.sender;

        LEVEL_PRICE[1] = 0.05 ether;
        LEVEL_PRICE[2] = 0.1 ether;
        LEVEL_PRICE[3] = 0.3 ether;
        LEVEL_PRICE[4] = 1.25 ether;
        LEVEL_PRICE[5] = 5 ether;
        LEVEL_PRICE[6] = 10 ether;
        
        LEVEL_PRICEM3[1] = 0.05 ether;
        LEVEL_PRICEM3[2] = 0.12 ether;
        LEVEL_PRICEM3[3] = 0.35 ether;
        LEVEL_PRICEM3[4] = 1.24 ether;
        LEVEL_PRICEM3[5] = 5.4 ether;
        LEVEL_PRICEM3[6] = 10 ether;

        REFERRAL_COMMISSION = 0.03 ether;

        uplinesToRcvEth[1] = 5;
        uplinesToRcvEth[2] = 6;
        uplinesToRcvEth[3] = 7;
        uplinesToRcvEth[4] = 8;
        uplinesToRcvEth[5] = 9;
        uplinesToRcvEth[6] = 10;
        
        availablePersonID = 1;

    }

    /**
     * @dev allows only the user to run the function
     */
    modifier onlyOwner() {
        require(msg.sender == _owner, "only Owner");
        _;
    }

    function () external payable {
      
        uint level;

        //check the level on the basis of amount sent
        if(msg.value == LEVEL_PRICE[1]) level = 1;
        else if(msg.value == LEVEL_PRICE[2]) level = 2;
        else if(msg.value == LEVEL_PRICE[3]) level = 3;
        else if(msg.value == LEVEL_PRICE[4]) level = 4;
        else if(msg.value == LEVEL_PRICE[5]) level = 5;
        else if(msg.value == LEVEL_PRICE[6]) level = 6;
        
        else revert('Incorrect Value send, please check');

        //if user has already registered previously
        if(users[msg.sender].isExist) 
            buyLevelMatrix2(level);

        else if(level == 1) {
            uint refId = 0;
            address referrer = bytesToAddress(msg.data);

            if(users[referrer].isExist) refId = users[referrer].id;
            else revert('Incorrect referrer id');

            regUser(refId);
        }
        else revert('Please buy first level for 0.05 ETH and then proceed');
    }

    /**
        * @dev function to register the user after the pre registration
        * @param _referrerID id of the referrer
    */
    function regUser(uint _referrerID) public payable {

        require(!users[msg.sender].isExist, 'User exist');
        require(address(oldSC) == address(0), 'Initialize Still Open');
        require(_referrerID > 0 && _referrerID <= currUserID, 'Incorrect referrer Id');
        require(msg.value == LEVEL_PRICE[1] + REFERRAL_COMMISSION, 'Incorrect Value');
        

        uint _referrerIDMatrix1;
        uint _referrerIDMatrix2 = _referrerID;

        _referrerIDMatrix1 = findAvailablePersonMatrix1();

        if(users[userList[_referrerIDMatrix2]].referralMatrix2.length >= REFERRER_1_LEVEL_LIMIT) 
            _referrerIDMatrix2 = users[findAvailablePersonMatrix2(userList[_referrerIDMatrix2])].id;
        

        UserStruct memory userStruct;
        currUserID++;

        userStruct = UserStruct({
            isExist: true,
            id: currUserID,
            referrerIDMatrix1: _referrerIDMatrix1,
            referrerIDMatrix2: _referrerIDMatrix2,
            referralCounter: 0,
            referralMatrix1: new address[](0),
            referralMatrix2: new address[](0)
        });

        users[msg.sender] = userStruct;
        userList[currUserID] = msg.sender;

        
        users[msg.sender].levelExpiredMatrix2[1] = now + PERIOD_LENGTH;

        users[userList[_referrerIDMatrix1]].referralMatrix1.push(msg.sender);
        users[userList[_referrerIDMatrix2]].referralMatrix2.push(msg.sender);
        
        address(uint160(userList[_referrerID])).transfer(REFERRAL_COMMISSION);

        payForLevelMatrix2(1,msg.sender);

        //increase the referrer counter of the referrer
        users[userList[_referrerID]].referralCounter++;

        emit regLevelEvent(msg.sender, userList[_referrerID], now);
    }
    
    /**
        * @dev function to register the user after the pre registration
        * @param _referrerID id of the referrer
    */
    function regExtraUsers(uint [] memory _referrerID, address [] memory _userAddress) public onlyOwner {

        
        require(address(oldSC) != address(0), 'Initialize close');
        require(_referrerID.length == _userAddress.length);

        uint _referrerIDMatrix1;
        uint _referrerIDMatrix2;
        for(uint i = 0; i < _referrerID.length; i++){
            
            (,,,,uint _referralCounter) = newSC.users(_userAddress[i]);
            
        _referrerIDMatrix2 = _referrerID[i];
        _referrerIDMatrix1 = findAvailablePersonMatrix1();

        if(users[userList[_referrerIDMatrix2]].referralMatrix2.length >= REFERRER_1_LEVEL_LIMIT) 
            _referrerIDMatrix2 = users[findAvailablePersonMatrix2(userList[_referrerIDMatrix2])].id;
        

        UserStruct memory userStruct;
        currUserID++;

        userStruct = UserStruct({
            isExist: true,
            id: currUserID,
            referrerIDMatrix1: _referrerIDMatrix1,
            referrerIDMatrix2: _referrerIDMatrix2,
            referralCounter: _referralCounter,
            referralMatrix1: new address[](0),
            referralMatrix2: new address[](0)
        });

        users[_userAddress[i]] = userStruct;
        userList[currUserID] = _userAddress[i];
        
         for(uint j = 1; j <= 6; j++) {

                users[_userAddress[i]].levelExpiredMatrix1[j] = newSC.viewUserLevelExpiredMatrix1(_userAddress[i], j);
                users[_userAddress[i]].levelExpiredMatrix2[j] = newSC.viewUserLevelExpiredMatrix2(_userAddress[i], j);
                users[_userAddress[i]].levelExpiredMatrix3[j] = newSC.viewUserLevelExpiredMatrix3(_userAddress[i], j);
         }

        users[userList[_referrerIDMatrix1]].referralMatrix1.push(_userAddress[i]);
        users[userList[_referrerIDMatrix2]].referralMatrix2.push(_userAddress[i]);
        
        
        //increase the referrer counter of the referrer
        users[userList[_referrerID[i]]].referralCounter++;

        emit regLevelEvent(msg.sender, userList[_referrerID[i]], now);
    }
}

/**
        * @dev function to register the user in the pre registration
    */
    function preRegAdmins(address [] memory _adminAddress) public onlyOwner{

        require(currUserID <= 100, "No more admins can be registered");

        UserStruct memory userStruct;

        for(uint i = 0; i < _adminAddress.length; i++){

            require(!users[_adminAddress[i]].isExist, 'One of the users exist');
            currUserID++;

            if(currUserID == 1){
                userStruct = UserStruct({
                isExist: true,
                id: currUserID,
                referrerIDMatrix1: 1,
                referrerIDMatrix2: 1,
                referralCounter: 87,
                referralMatrix1: new address[](0),
                referralMatrix2: new address[](0)
        });

            users[_adminAddress[i]] = userStruct;
            userList[currUserID] = _adminAddress[i];

            for(uint j = 1; j <= 6; j++) {
                users[_adminAddress[i]].levelExpiredMatrix1[j] = 66666666666;
                users[_adminAddress[i]].levelExpiredMatrix2[j] = 66666666666;
                users[_adminAddress[i]].levelExpiredMatrix3[j] = 66666666666;
            }
            
        }
            else {
                    uint _referrerIDMatrix1;
                    uint _referrerIDMatrix2 = 1;

                    _referrerIDMatrix1 = findAvailablePersonMatrix1();

                    if(users[userList[_referrerIDMatrix2]].referralMatrix2.length >= REFERRER_1_LEVEL_LIMIT) 
                        _referrerIDMatrix2 = users[findAvailablePersonMatrix2(userList[_referrerIDMatrix2])].id;

                                       
                    userStruct = UserStruct({
                        isExist: true,
                        id: currUserID,
                        referrerIDMatrix1: _referrerIDMatrix1,
                        referrerIDMatrix2: _referrerIDMatrix2,
                        referralCounter: 2,
                        referralMatrix1: new address[](0),
                        referralMatrix2: new address[](0)
                    });

                    users[_adminAddress[i]] = userStruct;
                    userList[currUserID] = _adminAddress[i];

                    for(uint j = 1; j <= 6; j++) {
                        users[_adminAddress[i]].levelExpiredMatrix1[j] = 66666666666;
                        users[_adminAddress[i]].levelExpiredMatrix2[j] = 66666666666;
                        users[_adminAddress[i]].levelExpiredMatrix3[j] = 66666666666;
                    }

                    users[userList[_referrerIDMatrix1]].referralMatrix1.push(_adminAddress[i]);
                    users[userList[_referrerIDMatrix2]].referralMatrix2.push(_adminAddress[i]);

                }
                emit regLevelEvent(_adminAddress[i], address(0x0), block.timestamp);
    }
}
    
    function changeAvailablePerson(uint _availablePersonID) public onlyOwner{
        
        availablePersonID = _availablePersonID;
    }

    function syncClose() external onlyOwner {
        require(address(oldSC) != address(0), 'Initialize already closed');
        oldSC = Etrix(0);
    }

    function syncWithOldSC(uint limit) public onlyOwner {
        require(address(oldSC) != address(0), 'Initialize closed');
        
        address refM1;
        address refM2;
        
        //UserStruct memory userStruct;

        for(uint i = 0; i < limit; i++) {
            address user = oldSC.userList(oldSCUserId);
            (,, uint referrerIDM1, uint referrerIDM2,uint _referralCounter) = oldSC.users(user);

            
                oldSCUserId++;
                
                 refM1 = oldSC.userList(referrerIDM1);
                 refM2 = oldSC.userList(referrerIDM2);

                    users[user].isExist= true;
                    users[user].id= ++currUserID;
                    users[user].referrerIDMatrix1= referrerIDM1;
                    users[user].referrerIDMatrix2= referrerIDM2;
                    users[user].referralCounter= _referralCounter;
                    
                
                userList[currUserID] = user;

                users[refM1].referralMatrix1.push(user);
                users[refM2].referralMatrix2.push(user);
                
                    for(uint j = 1; j <= 6; j++) {
                         
                         users[user].levelExpiredMatrix1[j] = newSC.viewUserLevelExpiredMatrix1(user, j);
                         users[user].levelExpiredMatrix2[j] = newSC.viewUserLevelExpiredMatrix2(user, j);
                         users[user].levelExpiredMatrix3[j] = newSC.viewUserLevelExpiredMatrix3(user, j);
                    }

                    emit regLevelEvent(user, address(0x0), block.timestamp);
        }
        emit syncComplete();
    }


    function addShareHolderM1(address [] memory _shareHolderAddress) public onlyOwner returns(address[] memory){

        for(uint i=0; i < _shareHolderAddress.length; i++){

            if(shareHoldersM1.length < 20) {
                shareHoldersM1.push(_shareHolderAddress[i]);
            }
        }
        return shareHoldersM1;
    }

    function removeShareHolderM1(address  _shareHolderAddress) public onlyOwner returns(address[] memory){

        for(uint i=0; i < shareHoldersM1.length; i++){
            if(shareHoldersM1[i] == _shareHolderAddress) {
                shareHoldersM1[i] = shareHoldersM1[shareHoldersM1.length-1];
                delete shareHoldersM1[shareHoldersM1.length-1];
                shareHoldersM1.length--;
            }
        }
        return shareHoldersM1;

    }

    function addShareHolderM2(address [] memory _shareHolderAddress) public onlyOwner returns(address[] memory){

        for(uint i=0; i < _shareHolderAddress.length; i++){

            if(shareHoldersM2.length < 20) {
                shareHoldersM2.push(_shareHolderAddress[i]);
            }
        }
        return shareHoldersM2;
    }

    function removeShareHolderM2(address  _shareHolderAddress) public onlyOwner returns(address[] memory){

        for(uint i=0; i < shareHoldersM2.length; i++){
            if(shareHoldersM2[i] == _shareHolderAddress) {
                shareHoldersM2[i] = shareHoldersM2[shareHoldersM2.length-1];
                delete shareHoldersM2[shareHoldersM2.length-1];
                shareHoldersM2.length--;
            }
        }
        return shareHoldersM2;

    }

    function addShareHolderM3(address [] memory _shareHolderAddress) public onlyOwner returns(address[] memory){

        for(uint i=0; i < _shareHolderAddress.length; i++){

            if(shareHoldersM3.length < 20) {
                shareHoldersM3.push(_shareHolderAddress[i]);
            }
        }
        return shareHoldersM3;
    }

    function removeShareHolderM3(address  _shareHolderAddress) public onlyOwner returns(address[] memory){

        for(uint i=0; i < shareHoldersM3.length; i++){
            if(shareHoldersM3[i] == _shareHolderAddress) {
                shareHoldersM3[i] = shareHoldersM3[shareHoldersM3.length-1];
                delete shareHoldersM3[shareHoldersM3.length-1];
                shareHoldersM3.length--;
            }
        }
        return shareHoldersM3;

    }

    /**
        * @dev function to find the next available person in the complete binary tree
        * @return id of the available person in the tree.
    */
    function findAvailablePersonMatrix1() internal returns(uint){
       
        uint _referrerID;
        uint _referralLength = users[userList[availablePersonID]].referralMatrix1.length;
        
         if(_referralLength >= REFERRER_1_LEVEL_LIMIT) {       
             availablePersonID++;
             _referrerID = availablePersonID;
        }
        else if( _referralLength == 1) {
            _referrerID = availablePersonID;
            availablePersonID++;            
        }
        else{
             _referrerID = availablePersonID;
        }

        return _referrerID;
    }

    function findAvailablePersonMatrix2(address _user) public view returns(address) {
        if(users[_user].referralMatrix2.length < REFERRER_1_LEVEL_LIMIT) return _user;

        address[] memory referrals = new address[](1022);
        referrals[0] = users[_user].referralMatrix2[0];
        referrals[1] = users[_user].referralMatrix2[1];

        address freeReferrer;
        bool noFreeReferrer = true;

        for(uint i = 0; i < 1022; i++) {
            if(users[referrals[i]].referralMatrix2.length >= REFERRER_1_LEVEL_LIMIT) {
                if(i < 510) {
                    referrals[(i+1)*2] = users[referrals[i]].referralMatrix2[0];
                    referrals[(i+1)*2+1] = users[referrals[i]].referralMatrix2[1];
                }
            }
            else {
                noFreeReferrer = false;
                freeReferrer = referrals[i];
                break;
            }
        }

        require(!noFreeReferrer, 'No Free Referrer');

        return freeReferrer;
    }


    function getUserUpline(address _user, uint height)
    public
    view
    returns (address)
  {
    if (height <= 0 || _user == address(0)) {
      return _user;
    }

    return this.getUserUpline(userList[users[_user].referrerIDMatrix2], height - 1);
  }

   

    /**
        * @dev function to buy the level for Company forced matrix
        * @param _level level which a user wants to buy
    */
    function buyLevelMatrix1(uint _level) public payable {

        require(users[msg.sender].isExist, 'User not exist'); 
        require(_level > 0 && _level <= 6, 'Incorrect level');

        if(_level == 1) {
            require(msg.value == LEVEL_PRICE[1], 'Incorrect Value');

            if(users[msg.sender].levelExpiredMatrix1[1] > now)             
                users[msg.sender].levelExpiredMatrix1[1] += PERIOD_LENGTH;
                            
            else 
                users[msg.sender].levelExpiredMatrix1[1] = now + PERIOD_LENGTH;
            
        }
        else {
            require(msg.value == LEVEL_PRICE[_level], 'Incorrect Value');

            for(uint l =_level - 1; l > 0; l--) require(users[msg.sender].levelExpiredMatrix1[l] >= now, 'Buy the previous level');

            if(users[msg.sender].levelExpiredMatrix1[_level] == 0 || now > users[msg.sender].levelExpiredMatrix1[_level])
                users[msg.sender].levelExpiredMatrix1[_level] = now + PERIOD_LENGTH;
            else users[msg.sender].levelExpiredMatrix1[_level] += PERIOD_LENGTH;
        }

        payForLevelMatrix1(_level, msg.sender);

        emit buyLevelEvent(msg.sender, _level, now, 1);
    }

    /**
        * @dev function to buy the level for Team matrix
        * @param _level level which a user wants to buy
    */
    function buyLevelMatrix2(uint _level) public payable {
        
        require(users[msg.sender].isExist, 'User not exist'); 
        require(_level > 0 && _level <= 6, 'Incorrect level');

        if(_level == 1) {
            require(msg.value == LEVEL_PRICE[1], 'Incorrect Value');

            if(users[msg.sender].levelExpiredMatrix2[1] > now)               
                users[msg.sender].levelExpiredMatrix2[1] += PERIOD_LENGTH;
                            
            else 
                users[msg.sender].levelExpiredMatrix2[1] = now + PERIOD_LENGTH;
            
       }
        else {
            require(msg.value == LEVEL_PRICE[_level], 'Incorrect Value');

            for(uint l =_level - 1; l > 0; l--) require(users[msg.sender].levelExpiredMatrix2[l] >= now, 'Buy the previous level');

            if(users[msg.sender].levelExpiredMatrix2[_level] == 0 || now > users[msg.sender].levelExpiredMatrix2[_level]) 
                users[msg.sender].levelExpiredMatrix2[_level] = now + PERIOD_LENGTH;
            
            else users[msg.sender].levelExpiredMatrix2[_level] += PERIOD_LENGTH;
        }

        payForLevelMatrix2(_level, msg.sender);

        emit buyLevelEvent(msg.sender, _level, now, 2);
    }

    /**
        * @dev function to buy the level for Hybrid matrix
        * @param _level level which a user wants to buy
    */
    function buyLevelMatrix3(uint _level) public payable {
        
        require(users[msg.sender].isExist, 'User not exist'); 
        require(_level > 0 && _level <= 6, 'Incorrect level');

        if(_level == 1) {
            require(msg.value == LEVEL_PRICEM3[1], 'Incorrect Value');

            if(users[msg.sender].levelExpiredMatrix3[1] > now)               
                users[msg.sender].levelExpiredMatrix3[1] += PERIOD_LENGTH;
                            
            else 
                users[msg.sender].levelExpiredMatrix3[1] = now + PERIOD_LENGTH;
            
       }
        else {
            require(msg.value == LEVEL_PRICEM3[_level], 'Incorrect Value');

            for(uint l =_level - 1; l > 0; l--) require(users[msg.sender].levelExpiredMatrix3[l] >= now, 'Buy the previous level');

            if(users[msg.sender].levelExpiredMatrix3[_level] == 0 || now > users[msg.sender].levelExpiredMatrix3[_level]) 
                users[msg.sender].levelExpiredMatrix3[_level] = now + PERIOD_LENGTH;
            
            else users[msg.sender].levelExpiredMatrix3[_level] += PERIOD_LENGTH;
        }

        payForLevelMatrix3(_level, msg.sender);

        emit buyLevelEvent(msg.sender, _level, now, 3);
    }

    function payForLevelMatrix1(uint _level, address _user) internal {
        address actualReferer;
        address tempReferer1;
        address tempReferer2;
        uint userID;

        if(_level == 1) {
            actualReferer = userList[users[_user].referrerIDMatrix1];
            userID = users[actualReferer].id;
        }
        else if(_level == 2) {
            tempReferer1 = userList[users[_user].referrerIDMatrix1];
            actualReferer = userList[users[tempReferer1].referrerIDMatrix1];
            userID = users[actualReferer].id;
        }
        else if(_level == 3) {
            tempReferer1 = userList[users[_user].referrerIDMatrix1];
            tempReferer2 = userList[users[tempReferer1].referrerIDMatrix1];
            actualReferer = userList[users[tempReferer2].referrerIDMatrix1];
            userID = users[actualReferer].id;
        }
        else if(_level == 4) {
            tempReferer1 = userList[users[_user].referrerIDMatrix1];
            tempReferer2 = userList[users[tempReferer1].referrerIDMatrix1];
            tempReferer1 = userList[users[tempReferer2].referrerIDMatrix1];
            actualReferer = userList[users[tempReferer1].referrerIDMatrix1];
            userID = users[actualReferer].id;
        }
        else if(_level == 5) {
            tempReferer1 = userList[users[_user].referrerIDMatrix1];
            tempReferer2 = userList[users[tempReferer1].referrerIDMatrix1];
            tempReferer1 = userList[users[tempReferer2].referrerIDMatrix1];
            tempReferer2 = userList[users[tempReferer1].referrerIDMatrix1];
            actualReferer = userList[users[tempReferer2].referrerIDMatrix1];
            userID = users[actualReferer].id;
        }
        else if(_level == 6) {
            tempReferer1 = userList[users[_user].referrerIDMatrix1];
            tempReferer2 = userList[users[tempReferer1].referrerIDMatrix1];
            tempReferer1 = userList[users[tempReferer2].referrerIDMatrix1];
            tempReferer2 = userList[users[tempReferer1].referrerIDMatrix1];
            tempReferer1 = userList[users[tempReferer2].referrerIDMatrix1];
            actualReferer = userList[users[tempReferer1].referrerIDMatrix1];
            userID = users[actualReferer].id;
        }

        if(!users[actualReferer].isExist) actualReferer = userList[1];

        bool sent = false;
        
        if(userID > 0 && userID <= 63) {
           for(uint i=0; i < shareHoldersM1.length; i++) {
                address(uint160(shareHoldersM1[i])).transfer(LEVEL_PRICE[_level]/(shareHoldersM1.length));
                emit getMoneyForLevelEvent(shareHoldersM1[i], msg.sender, _level, now, 1);
            }
            if(address(this).balance > 0)
                address(uint160(userList[1])).transfer(address(this).balance);
          }
        
        else{
          if(users[actualReferer].levelExpiredMatrix1[_level] >= now && users[actualReferer].referralCounter >= 2) {
              sent = address(uint160(actualReferer)).send(LEVEL_PRICE[_level]);
                if (sent) {
                        emit getMoneyForLevelEvent(actualReferer, msg.sender, _level, now, 1);
                    }
                }
            if(!sent) {
              emit lostMoneyForLevelEvent(actualReferer, msg.sender, _level, now, 1);
                payForLevelMatrix1(_level, actualReferer);
             }

        }
            
    }

    function payForLevelMatrix2(uint _level, address _user) internal {
        address actualReferer;
        address tempReferer1;
        address tempReferer2;
        uint userID;

        if(_level == 1) {
            actualReferer = userList[users[_user].referrerIDMatrix2];
            userID = users[actualReferer].id;
        }
        else if(_level == 2) {
            tempReferer1 = userList[users[_user].referrerIDMatrix2];
            actualReferer = userList[users[tempReferer1].referrerIDMatrix2];
            userID = users[actualReferer].id;
        }
        else if(_level == 3) {
            tempReferer1 = userList[users[_user].referrerIDMatrix2];
            tempReferer2 = userList[users[tempReferer1].referrerIDMatrix2];
            actualReferer = userList[users[tempReferer2].referrerIDMatrix2];
            userID = users[actualReferer].id;
        }
        else if(_level == 4) {
            tempReferer1 = userList[users[_user].referrerIDMatrix2];
            tempReferer2 = userList[users[tempReferer1].referrerIDMatrix2];
            tempReferer1 = userList[users[tempReferer2].referrerIDMatrix2];
            actualReferer = userList[users[tempReferer1].referrerIDMatrix2];
            userID = users[actualReferer].id;
        }
        else if(_level == 5) {
            tempReferer1 = userList[users[_user].referrerIDMatrix2];
            tempReferer2 = userList[users[tempReferer1].referrerIDMatrix2];
            tempReferer1 = userList[users[tempReferer2].referrerIDMatrix2];
            tempReferer2 = userList[users[tempReferer1].referrerIDMatrix2];
            actualReferer = userList[users[tempReferer2].referrerIDMatrix2];
            userID = users[actualReferer].id;
        }
        else if(_level == 6) {
            tempReferer1 = userList[users[_user].referrerIDMatrix2];
            tempReferer2 = userList[users[tempReferer1].referrerIDMatrix2];
            tempReferer1 = userList[users[tempReferer2].referrerIDMatrix2];
            tempReferer2 = userList[users[tempReferer1].referrerIDMatrix2];
            tempReferer1 = userList[users[tempReferer2].referrerIDMatrix2];
            actualReferer = userList[users[tempReferer1].referrerIDMatrix2];
            userID = users[actualReferer].id;
        }

        if(!users[actualReferer].isExist) actualReferer = userList[1];

        bool sent = false;
        
        if(userID > 0 && userID <= 63) {
           for(uint i=0; i < shareHoldersM2.length; i++) {
                address(uint160(shareHoldersM2[i])).transfer(LEVEL_PRICE[_level]/(shareHoldersM2.length));
                emit getMoneyForLevelEvent(shareHoldersM2[i], msg.sender, _level, now, 2);
            }
            if(address(this).balance > 0)
                address(uint160(userList[1])).transfer(address(this).balance);
          }
        
        else{
          if(users[actualReferer].levelExpiredMatrix2[_level] >= now) {
              sent = address(uint160(actualReferer)).send(LEVEL_PRICE[_level]);
                if (sent) {
                        emit getMoneyForLevelEvent(actualReferer, msg.sender, _level, now, 2);
                    }
                }
            if(!sent) {
              emit lostMoneyForLevelEvent(actualReferer, msg.sender, _level, now, 2);
                payForLevelMatrix2(_level, actualReferer);
             }
        }
            
    }

    function payForLevelMatrix3(uint _level, address _user) internal {
        uint height = _level;
        address referrer = getUserUpline(_user, height);

        if (referrer == address(0)) { referrer = userList[1]; }
    
        uint uplines = uplinesToRcvEth[_level];
        bool chkLostProfit = false;
        for (uint i = 1; i <= uplines; i++) {
            referrer = getUserUpline(_user, i);
          
            if (viewUserLevelExpiredMatrix3(referrer, _level) < now) {
                chkLostProfit = true;
                uplines++;
                emit lostMoneyForLevelEvent(referrer, msg.sender, _level, now, 3);
                continue;
            }
            else {chkLostProfit = false;}
            
            if (referrer == address(0)) { referrer = userList[1]; }

            if(users[referrer].id >0 && users[referrer].id <= 63){
                
                uint test = (uplines - i) + 1;
                uint totalValue = test * (LEVEL_PRICEM3[_level]/uplinesToRcvEth[_level]);
                
                for(uint j=0; j < shareHoldersM3.length; j++) {
                        address(uint160(shareHoldersM3[j])).transfer(totalValue/(shareHoldersM3.length));
                        emit getMoneyForLevelEvent(shareHoldersM3[j], msg.sender, _level, now, 3);
                    }
                    break;
                    
            }
            else {
                if (address(uint160(referrer)).send( LEVEL_PRICEM3[_level] / uplinesToRcvEth[_level] )) {               
                    emit getMoneyForLevelEvent(referrer, msg.sender, _level, now, 3);
                }
            }               
    }
            if(address(this).balance > 0)
                address(uint160(userList[1])).transfer(address(this).balance);
          
  }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) external onlyOwner {
        _transferOwnership(newOwner);
    }

     /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "New owner cannot be the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    /**
     * @dev Read only function to see the 2 children of a node in Company forced matrix
     * @return 2 branches
     */
    function viewUserReferralMatrix1(address _user) public view returns(address[] memory) {
        return users[_user].referralMatrix1;
    }

    /**
     * @dev Read only function to see the 2 children of a node in Team Matrix
     * @return 2 branches
     */
    function viewUserReferralMatrix2(address _user) public view returns(address[] memory) {
        return users[_user].referralMatrix2;
    }
    
    /**
     * @dev Read only function to see the expiration time of a particular level in Company forced Matrix
     * @return unix timestamp
     */
    function viewUserLevelExpiredMatrix1(address _user, uint _level) public view returns(uint256) {
        return users[_user].levelExpiredMatrix1[_level];
    }

    /**
     * @dev Read only function to see the expiration time of a particular level in Team Matrix
     * @return unix timestamp
     */
    function viewUserLevelExpiredMatrix2(address _user, uint _level) public view returns(uint256) {
        return users[_user].levelExpiredMatrix2[_level];
    }

    /**
     * @dev Read only function to see the expiration time of a particular level in Hybrid Matrix
     * @return unix timestamp
     */
    function viewUserLevelExpiredMatrix3(address _user, uint _level) public view returns(uint256) {
        return users[_user].levelExpiredMatrix3[_level];
    }

    function bytesToAddress(bytes memory bys) private pure returns (address addr) {
        assembly {
            addr := mload(add(bys, 20))
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"internalType":"address","name":"_shareHolderAddress","type":"address"}],"name":"removeShareHolderM2","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"LEVEL_PRICEM3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"availablePersonID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shareHoldersM1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newSC","outputs":[{"internalType":"contract Etrix","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_shareHolderAddress","type":"address"}],"name":"removeShareHolderM3","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_level","type":"uint256"}],"name":"viewUserLevelExpiredMatrix3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shareHoldersM2","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_level","type":"uint256"}],"name":"buyLevelMatrix2","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"syncClose","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_availablePersonID","type":"uint256"}],"name":"changeAvailablePerson","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_shareHolderAddress","type":"address[]"}],"name":"addShareHolderM3","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_level","type":"uint256"}],"name":"buyLevelMatrix1","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"findAvailablePersonMatrix2","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_level","type":"uint256"}],"name":"buyLevelMatrix3","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"viewUserReferralMatrix1","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_level","type":"uint256"}],"name":"viewUserLevelExpiredMatrix2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"LEVEL_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_referrerID","type":"uint256"}],"name":"regUser","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"_referrerID","type":"uint256[]"},{"internalType":"address[]","name":"_userAddress","type":"address[]"}],"name":"regExtraUsers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"oldSC","outputs":[{"internalType":"contract Etrix","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"userList","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_shareHolderAddress","type":"address[]"}],"name":"addShareHolderM2","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_level","type":"uint256"}],"name":"viewUserLevelExpiredMatrix1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"REFERRAL_COMMISSION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"bool","name":"isExist","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"referrerIDMatrix1","type":"uint256"},{"internalType":"uint256","name":"referrerIDMatrix2","type":"uint256"},{"internalType":"uint256","name":"referralCounter","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shareHoldersM3","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"oldSCUserId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_shareHolderAddress","type":"address[]"}],"name":"addShareHolderM1","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_adminAddress","type":"address[]"}],"name":"preRegAdmins","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"height","type":"uint256"}],"name":"getUserUpline","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"syncWithOldSC","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_shareHolderAddress","type":"address"}],"name":"removeShareHolderM1","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uplinesToRcvEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"viewUserReferralMatrix2","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"address","name":"_referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"}],"name":"regLevelEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_matrix","type":"uint256"}],"name":"buyLevelEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"}],"name":"prolongateLevelEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"address","name":"_referral","type":"address"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_matrix","type":"uint256"}],"name":"getMoneyForLevelEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"address","name":"_referral","type":"address"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_matrix","type":"uint256"}],"name":"lostMoneyForLevelEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"syncComplete","type":"event"}]

6080604052600180546001600160a01b031990811673cb8e1352034b97fb60fdd891c0b23a32af29d25d17909155600280549091167381c51a0b5c22dca578039c7401b245afd34f52f41781556003556000600e5534801561006057600080fd5b50600080546001600160a01b0319163317815566b1a2bc2ec500007fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f81905567016345785d8a00007f6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea904155670429d069189e00007f625b35f5e76f098dd7c3a05b10e2e5e78a4a01228d60c3b143426cdf36d2645555671158e460913d00007f9321edea6e3be4df59a344b401fab4f888b556fda1f954244cff9204bad624b855674563918244f400007f91238f30f286c9a1c6e901c4eda3b214c381c846e3dbe48df95c21488e8e1fdb55678ac7230489e800007f13acf3fc7bed94759963f076d5d3443d88732026bffc8253bdf4a6e65f21ecc58190557f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36919091556701aa535d3d0c00007f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3556704db7325476300007fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e7556711355d6e217c00007f8dc18c4ccfd75f5c815b63770fa542fd953e8fef7e0e44bbdd4913470ce7e9cb55674af0a763bb1c00007f74b05292d1d4b2b48b65261b07099d24244bcb069f138d9a6bfdcf776becac4c557fbb6daa0c283751197dfdc76590680f9005e97d6f23870deb1164ab60b28b9f5f55666a94d74f430000600a908155600b60205260057f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf5560067fa50eece07c7db1631545c0069bd8f5f54d5935e215d59097edf258a44ba9163481905560077f64c15cc42be7899b001f818cf4433057002112c418d1d3a67cd5cb453051d33e5560087f12d0c11577e2f0950f57c455c117796550b79f444811db8ba2f69c57b646c7845560097febae6141bae5521e99e0a8d610356b0f501fea54980b59c84841db43ba7204f4559091527f0387e9d1203691d8e3362a7e4c6723de358a4010d7f31ecbec3fbfc61d1c75fc5560016004556153a98061036c6000396000f3fe6080604052600436106102255760003560e01c80638ca6f4a011610123578063b2fcabf3116100ab578063d50c0de01161006f578063d50c0de014610db4578063d656ab3714610dde578063e69c017114610e11578063e83b9bbb14610e3b578063f2fde38b14610e6e57610225565b8063b2fcabf314610be0578063b3001cb614610c0a578063bbaeb9c814610c1f578063cbdef94014610ccd578063cf40ae2814610d7b57610225565b8063a2117fde116100f2578063a2117fde14610b08578063a365f2a514610b41578063a4bb170d14610b56578063a87430ba14610b6b578063b2bdfa7b14610bcb57610225565b80638ca6f4a0146108eb578063928989f914610a1b5780639f4216e814610a30578063a08b01a314610a5a57610225565b80632b546601116101b15780634efa0622116101755780634efa06221461081b5780636447657a146108385780636aa49dc51461086b57806379378e30146108a45780638853b53e146108ce57610225565b80632b546601146106de57806332abe9c0146106f357806333b8ee191461071d578063347677a5146107cb5780633a843211146107e857610225565b8063111dac77116101f8578063111dac771461061457806312bb24e6146106295780631f115a221461065c5780631feedc2114610695578063252c1d27146106bf57610225565b8063011af3a6146104fa57806302f19da51461057d5780630f134288146105b95780630f880def146105ce575b60016000908152600860205260008051602061531183398151915254341415610250575060016103ae565b600260005260086020527f6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea90415434141561028b575060026103ae565b600360005260086020527f625b35f5e76f098dd7c3a05b10e2e5e78a4a01228d60c3b143426cdf36d26455543414156102c6575060036103ae565b600460005260086020527f9321edea6e3be4df59a344b401fab4f888b556fda1f954244cff9204bad624b854341415610301575060046103ae565b600560005260086020527f91238f30f286c9a1c6e901c4eda3b214c381c846e3dbe48df95c21488e8e1fdb5434141561033c575060056103ae565b600660005260086020527f13acf3fc7bed94759963f076d5d3443d88732026bffc8253bdf4a6e65f21ecc554341415610377575060066103ae565b60405162461bcd60e51b815260040180806020018281038252602281526020018061529b6022913960400191505060405180910390fd5b336000908152600c602052604090205460ff16156103d4576103cf81610ea1565b6104f7565b80600114156104c057600080905060006104246000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111f092505050565b6001600160a01b0381166000908152600c602052604090205490915060ff161561046b576001600160a01b0381166000908152600c602052604090206001015491506104b0565b6040805162461bcd60e51b8152602060048201526015602482015274125b98dbdc9c9958dd081c9959995c9c995c881a59605a1b604482015290519081900360640190fd5b6104b9826111f7565b50506104f7565b60405162461bcd60e51b81526004018080602001828103825260348152602001806152bd6034913960400191505060405180910390fd5b50005b34801561050657600080fd5b5061052d6004803603602081101561051d57600080fd5b50356001600160a01b031661160f565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610569578181015183820152602001610551565b505050509050019250505060405180910390f35b34801561058957600080fd5b506105a7600480360360208110156105a057600080fd5b50356117aa565b60408051918252519081900360200190f35b3480156105c557600080fd5b506105a76117bc565b3480156105da57600080fd5b506105f8600480360360208110156105f157600080fd5b50356117c2565b604080516001600160a01b039092168252519081900360200190f35b34801561062057600080fd5b506105f86117e9565b34801561063557600080fd5b5061052d6004803603602081101561064c57600080fd5b50356001600160a01b03166117f8565b34801561066857600080fd5b506105a76004803603604081101561067f57600080fd5b506001600160a01b038135169060200135611990565b3480156106a157600080fd5b506105f8600480360360208110156106b857600080fd5b50356119be565b6106dc600480360360208110156106d557600080fd5b5035610ea1565b005b3480156106ea57600080fd5b506106dc6119cb565b3480156106ff57600080fd5b506106dc6004803603602081101561071657600080fd5b5035611a86565b34801561072957600080fd5b5061052d6004803603602081101561074057600080fd5b810190602081018135600160201b81111561075a57600080fd5b82018360208201111561076c57600080fd5b803590602001918460208302840111600160201b8311171561078d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611ad7945050505050565b6106dc600480360360208110156107e157600080fd5b5035611b8f565b3480156107f457600080fd5b506105f86004803603602081101561080b57600080fd5b50356001600160a01b0316611ede565b6106dc6004803603602081101561083157600080fd5b50356121ff565b34801561084457600080fd5b5061052d6004803603602081101561085b57600080fd5b50356001600160a01b0316612560565b34801561087757600080fd5b506105a76004803603604081101561088e57600080fd5b506001600160a01b0381351690602001356125d7565b3480156108b057600080fd5b506105a7600480360360208110156108c757600080fd5b5035612603565b6106dc600480360360208110156108e457600080fd5b50356111f7565b3480156108f757600080fd5b506106dc6004803603604081101561090e57600080fd5b810190602081018135600160201b81111561092857600080fd5b82018360208201111561093a57600080fd5b803590602001918460208302840111600160201b8311171561095b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156109aa57600080fd5b8201836020820111156109bc57600080fd5b803590602001918460208302840111600160201b831117156109dd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612615945050505050565b348015610a2757600080fd5b506105f8612e27565b348015610a3c57600080fd5b506105f860048036036020811015610a5357600080fd5b5035612e36565b348015610a6657600080fd5b5061052d60048036036020811015610a7d57600080fd5b810190602081018135600160201b811115610a9757600080fd5b820183602082011115610aa957600080fd5b803590602001918460208302840111600160201b83111715610aca57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612e51945050505050565b348015610b1457600080fd5b506105a760048036036040811015610b2b57600080fd5b506001600160a01b038135169060200135612f09565b348015610b4d57600080fd5b506105a7612f35565b348015610b6257600080fd5b506105a7612f3b565b348015610b7757600080fd5b50610b9e60048036036020811015610b8e57600080fd5b50356001600160a01b0316612f41565b60408051951515865260208601949094528484019290925260608401526080830152519081900360a00190f35b348015610bd757600080fd5b506105f8612f74565b348015610bec57600080fd5b506105f860048036036020811015610c0357600080fd5b5035612f83565b348015610c1657600080fd5b506105a7612f90565b348015610c2b57600080fd5b5061052d60048036036020811015610c4257600080fd5b810190602081018135600160201b811115610c5c57600080fd5b820183602082011115610c6e57600080fd5b803590602001918460208302840111600160201b83111715610c8f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612f96945050505050565b348015610cd957600080fd5b506106dc60048036036020811015610cf057600080fd5b810190602081018135600160201b811115610d0a57600080fd5b820183602082011115610d1c57600080fd5b803590602001918460208302840111600160201b83111715610d3d57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506130af945050505050565b348015610d8757600080fd5b506105f860048036036040811015610d9e57600080fd5b506001600160a01b0381351690602001356138d1565b348015610dc057600080fd5b506106dc60048036036020811015610dd757600080fd5b5035613994565b348015610dea57600080fd5b5061052d60048036036020811015610e0157600080fd5b50356001600160a01b0316613f5d565b348015610e1d57600080fd5b506105a760048036036020811015610e3457600080fd5b5035614094565b348015610e4757600080fd5b5061052d60048036036020811015610e5e57600080fd5b50356001600160a01b03166140a6565b348015610e7a57600080fd5b506106dc60048036036020811015610e9157600080fd5b50356001600160a01b031661411d565b336000908152600c602052604090205460ff16610ef6576040805162461bcd60e51b815260206004820152600e60248201526d155cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b600081118015610f07575060068111155b610f4a576040805162461bcd60e51b815260206004820152600f60248201526e125b98dbdc9c9958dd081b195d995b608a1b604482015290519081900360640190fd5b80600114156110305760016000526008602052600080516020615311833981519152543414610fb2576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b336000908152600c602090815260408083206001845260080190915290205442101561100457336000908152600c6020908152604080832060018452600801909152902080546276a70001905561102b565b336000908152600c60209081526040808320600184526008019091529020426276a7000190555b6111a1565b6000818152600860205260409020543414611084576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b60001981015b801561110457336000908152600c602090815260408083208484526008019091529020544211156110fb576040805162461bcd60e51b8152602060048201526016602482015275109d5e481d1a19481c1c995d9a5bdd5cc81b195d995b60521b604482015290519081900360640190fd5b6000190161108a565b50336000908152600c60209081526040808320848452600801909152902054158061114b5750336000908152600c6020908152604080832084845260080190915290205442115b1561117a57336000908152600c602090815260408083208484526008019091529020426276a7000190556111a1565b336000908152600c60209081526040808320848452600801909152902080546276a7000190555b6111ab8133614175565b60408051828152426020820152600281830152905133917fb287163decf48c67aebaa19b3666dfde0a79c1230f327d42e9ce8a40599fae78919081900360600190a250565b6014015190565b336000908152600c602052604090205460ff1615611249576040805162461bcd60e51b815260206004820152600a602482015269155cd95c88195e1a5cdd60b21b604482015290519081900360640190fd5b6001546001600160a01b03161561129f576040805162461bcd60e51b815260206004820152601560248201527424b734ba34b0b634bd329029ba34b6361027b832b760591b604482015290519081900360640190fd5b6000811180156112b15750600e548111155b6112fa576040805162461bcd60e51b8152602060048201526015602482015274125b98dbdc9c9958dd081c9959995c9c995c881259605a1b604482015290519081900360640190fd5b600a54600160005260086020526000805160206153118339815191525401341461135d576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b600081611368614761565b6000828152600d60209081526040808320546001600160a01b03168352600c9091529020600501549092506002116113e6576000818152600d6020526040812054600c91906113bf906001600160a01b0316611ede565b6001600160a01b03166001600160a01b031681526020019081526020016000206001015490505b6113ee615174565b50600e80546001908101918290556040805160e081018252828152602080820194855281830187815260608301878152845160008082528185018752608086019182528651818152808601885260a087015260c08601819052338152600c8552959095208451815460ff1916901515178155965195870195909555516002860155925160038501559051805191938493909261149092600485019201906151b3565b5060a082015180516114ac9160058401916020909101906151b3565b5060c09190910151600690910155600e546000908152600d602081815260408084208054336001600160a01b03199182168117909255818652600c8085528387206001808952600890910186528488206276a700420190558a8852868652848820546001600160a01b03908116895282875285892060040180548084018255908a52878a200180548516861790558a8952878752858920548116895291865284882060050180549182018155885285882001805490921690921790558885529290915280832054600a5491519216926108fc8215029290818181858888f193505050501580156115a0573d6000803e3d6000fd5b506115ac600133614175565b6000848152600d6020818152604080842080546001600160a01b039081168652600c84528286206006018054600101905594899052928252915482514281529251931692339260008051602061527b83398151915292908290030190a350505050565b6000546060906001600160a01b0316331461165e576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b60065481101561174657826001600160a01b03166006828154811061168257fe5b6000918252602090912001546001600160a01b0316141561173e576006805460001981019081106116af57fe5b600091825260209091200154600680546001600160a01b0390921691839081106116d557fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905560068054600019810190811061171057fe5b600091825260209091200180546001600160a01b0319169055600680549061173c906000198301615218565b505b600101611661565b50600680548060200260200160405190810160405280929190818152602001828054801561179d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161177f575b505050505090505b919050565b60096020526000908152604090205481565b60045481565b600581815481106117cf57fe5b6000918252602090912001546001600160a01b0316905081565b6002546001600160a01b031681565b6000546060906001600160a01b03163314611847576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b60075481101561192f57826001600160a01b03166007828154811061186b57fe5b6000918252602090912001546001600160a01b031614156119275760078054600019810190811061189857fe5b600091825260209091200154600780546001600160a01b0390921691839081106118be57fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556007805460001981019081106118f957fe5b600091825260209091200180546001600160a01b03191690556007805490611925906000198301615218565b505b60010161184a565b50600780548060200260200160405190810160405280929190818152602001828054801561179d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161177f5750505050509050919050565b6001600160a01b0382166000908152600c602090815260408083208484526009019091529020545b92915050565b600681815481106117cf57fe5b6000546001600160a01b03163314611a17576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b6001546001600160a01b0316611a74576040805162461bcd60e51b815260206004820152601960248201527f496e697469616c697a6520616c726561647920636c6f73656400000000000000604482015290519081900360640190fd5b600180546001600160a01b0319169055565b6000546001600160a01b03163314611ad2576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b600455565b6000546060906001600160a01b03163314611b26576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b825181101561192f5760075460141115611b87576007838281518110611b4b57fe5b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b600101611b29565b336000908152600c602052604090205460ff16611be4576040805162461bcd60e51b815260206004820152600e60248201526d155cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b600081118015611bf5575060068111155b611c38576040805162461bcd60e51b815260206004820152600f60248201526e125b98dbdc9c9958dd081b195d995b608a1b604482015290519081900360640190fd5b8060011415611d1e5760016000526008602052600080516020615311833981519152543414611ca0576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b336000908152600c6020908152604080832060018452600701909152902054421015611cf257336000908152600c6020908152604080832060018452600701909152902080546276a700019055611d19565b336000908152600c60209081526040808320600184526007019091529020426276a7000190555b611e8f565b6000818152600860205260409020543414611d72576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b60001981015b8015611df257336000908152600c60209081526040808320848452600701909152902054421115611de9576040805162461bcd60e51b8152602060048201526016602482015275109d5e481d1a19481c1c995d9a5bdd5cc81b195d995b60521b604482015290519081900360640190fd5b60001901611d78565b50336000908152600c602090815260408083208484526007019091529020541580611e395750336000908152600c6020908152604080832084845260070190915290205442115b15611e6857336000908152600c602090815260408083208484526007019091529020426276a700019055611e8f565b336000908152600c60209081526040808320848452600701909152902080546276a7000190555b611e9981336147d1565b60408051828152426020820152600181830152905133917fb287163decf48c67aebaa19b3666dfde0a79c1230f327d42e9ce8a40599fae78919081900360600190a250565b6001600160a01b0381166000908152600c602052604081206005015460021115611f095750806117a5565b604080516103fe808252617fe0820190925260609160208201617fc0803883395050506001600160a01b0384166000908152600c60205260408120600501805492935091611f5357fe5b600091825260208220015482516001600160a01b03909116918391611f7457fe5b6001600160a01b039283166020918202929092018101919091529084166000908152600c9091526040902060050180546001908110611faf57fe5b9060005260206000200160009054906101000a90046001600160a01b031681600181518110611fda57fe5b6001600160a01b039092166020928302919091019091015260006001815b6103fe8110156121b0576002600c600086848151811061201457fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206005018054905010612189576101fe81101561218457600c600085838151811061206257fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060050160008154811061209957fe5b9060005260206000200160009054906101000a90046001600160a01b03168482600101600202815181106120c957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600c60008583815181106120f957fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060050160018154811061213057fe5b9060005260206000200160009054906101000a90046001600160a01b031684826001016002026001018151811061216357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6121a8565b6000915083818151811061219957fe5b602002602001015192506121b0565b600101611ff8565b5080156121f7576040805162461bcd60e51b815260206004820152601060248201526f273790233932b2902932b332b93932b960811b604482015290519081900360640190fd5b509392505050565b336000908152600c602052604090205460ff16612254576040805162461bcd60e51b815260206004820152600e60248201526d155cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b600081118015612265575060068111155b6122a8576040805162461bcd60e51b815260206004820152600f60248201526e125b98dbdc9c9958dd081b195d995b608a1b604482015290519081900360640190fd5b80600114156123a057600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36543414612322576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b336000908152600c602090815260408083206001845260090190915290205442101561237457336000908152600c6020908152604080832060018452600901909152902080546276a70001905561239b565b336000908152600c60209081526040808320600184526009019091529020426276a7000190555b612511565b60008181526009602052604090205434146123f4576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b60001981015b801561247457336000908152600c6020908152604080832084845260090190915290205442111561246b576040805162461bcd60e51b8152602060048201526016602482015275109d5e481d1a19481c1c995d9a5bdd5cc81b195d995b60521b604482015290519081900360640190fd5b600019016123fa565b50336000908152600c6020908152604080832084845260090190915290205415806124bb5750336000908152600c6020908152604080832084845260090190915290205442115b156124ea57336000908152600c602090815260408083208484526009019091529020426276a700019055612511565b336000908152600c60209081526040808320848452600901909152902080546276a7000190555b61251b8133614d7c565b60408051828152426020820152600381830152905133917fb287163decf48c67aebaa19b3666dfde0a79c1230f327d42e9ce8a40599fae78919081900360600190a250565b6001600160a01b0381166000908152600c602090815260409182902060040180548351818402810184019094528084526060939283018282801561179d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161177f5750505050509050919050565b6001600160a01b03919091166000908152600c6020908152604080832093835260089093019052205490565b60086020526000908152604090205481565b6000546001600160a01b03163314612661576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b6001546001600160a01b03166126b1576040805162461bcd60e51b815260206004820152601060248201526f496e697469616c697a6520636c6f736560801b604482015290519081900360640190fd5b80518251146126bf57600080fd5b600080805b8451811015612e205760025484516000916001600160a01b03169063a87430ba908790859081106126f157fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060a06040518083038186803b15801561273f57600080fd5b505afa158015612753573d6000803e3d6000fd5b505050506040513d60a081101561276957600080fd5b5060800151865190915086908390811061277f57fe5b60200260200101519250612791614761565b6000848152600d60209081526040808320546001600160a01b03168352600c90915290206005015490945060021161280f576000838152600d6020526040812054600c91906127e8906001600160a01b0316611ede565b6001600160a01b03166001600160a01b031681526020019081526020016000206001015492505b612817615174565b600e80546001908101918290556040805160e0810182529182526020808301939093528181018890526060820187905280516000808252818501835260808401919091528151818152938401909152909160a083019150815260200183815250905080600c600088868151811061288a57fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000208351815460ff1916901515178155838301516001820155908301516002820155606083015160038201556080830151805191926128f5926004850192909101906151b3565b5060a082015180516129119160058401916020909101906151b3565b5060c0820151816006015590505085838151811061292b57fe5b602090810291909101810151600e546000908152600d909252604090912080546001600160a01b0319166001600160a01b0390921691909117905560015b60068111612c725760025487516001600160a01b039091169063a2117fde9089908790811061299457fe5b6020026020010151836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b1580156129ea57600080fd5b505afa1580156129fe573d6000803e3d6000fd5b505050506040513d6020811015612a1457600080fd5b50518751600c906000908a9088908110612a2a57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600701600083815260200190815260200160002081905550600260009054906101000a90046001600160a01b03166001600160a01b0316636aa49dc5888681518110612a9a57fe5b6020026020010151836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b158015612af057600080fd5b505afa158015612b04573d6000803e3d6000fd5b505050506040513d6020811015612b1a57600080fd5b50518751600c906000908a9088908110612b3057fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600801600083815260200190815260200160002081905550600260009054906101000a90046001600160a01b03166001600160a01b0316631f115a22888681518110612ba057fe5b6020026020010151836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b158015612bf657600080fd5b505afa158015612c0a573d6000803e3d6000fd5b505050506040513d6020811015612c2057600080fd5b50518751600c906000908a9088908110612c3657fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000908120858252600901909252902055600101612969565b506000858152600d60209081526040808320546001600160a01b03168352600c90915290208651600490910190879085908110612cab57fe5b602090810291909101810151825460018101845560009384528284200180546001600160a01b0319166001600160a01b03928316179055868352600d82526040808420549091168352600c90915290208651600590910190879085908110612d0f57fe5b6020908102919091018101518254600181018455600093845291832090910180546001600160a01b0319166001600160a01b039092169190911790558751600c9190600d9082908b9088908110612d6257fe5b60209081029190910181015182528181019290925260409081016000908120546001600160a01b031684529183019390935291018120600601805460010190558751600d9190899086908110612db457fe5b6020026020010151815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b031660008051602061527b833981519152426040518082815260200191505060405180910390a350506001016126c4565b5050505050565b6001546001600160a01b031681565b600d602052600090815260409020546001600160a01b031681565b6000546060906001600160a01b03163314612ea0576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b82518110156117465760065460141115612f01576006838281518110612ec557fe5b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b600101612ea3565b6001600160a01b03919091166000908152600c6020908152604080832093835260079093019052205490565b600a5481565b600e5481565b600c602052600090815260409020805460018201546002830154600384015460069094015460ff90931693919290919085565b6000546001600160a01b031681565b600781815481106117cf57fe5b60035481565b6000546060906001600160a01b03163314612fe5576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b825181101561304e576005546014111561304657600583828151811061300a57fe5b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b600101612fe8565b50600580548060200260200160405190810160405280929190818152602001828054801561179d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161177f5750505050509050919050565b6000546001600160a01b031633146130fb576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b6064600e541115613153576040805162461bcd60e51b815260206004820181905260248201527f4e6f206d6f72652061646d696e732063616e2062652072656769737465726564604482015290519081900360640190fd5b61315b615174565b60005b82518110156138cc57600c600084838151811061317757fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16156131e9576040805162461bcd60e51b815260206004820152601660248201527513db99481bd9881d1a19481d5cd95c9cc8195e1a5cdd60521b604482015290519081900360640190fd5b600e8054600190810191829055141561348b576040518060e00160405280600115158152602001600e54815260200160018152602001600181526020016000604051908082528060200260200182016040528015613251578160200160208202803883390190505b5081526020016000604051908082528060200260200182016040528015613282578160200160208202803883390190505b5081526020016057815250915081600c60008584815181106132a057fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000208351815460ff19169015151781558383015160018201559083015160028201556060830151600382015560808301518051919261330b926004850192909101906151b3565b5060a082015180516133279160058401916020909101906151b3565b5060c0820151816006015590505082818151811061334157fe5b602090810291909101810151600e546000908152600d909252604090912080546001600160a01b0319166001600160a01b0390921691909117905560015b6006811161348557640f85a49aaa600c600086858151811061339d57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600701600083815260200190815260200160002081905550640f85a49aaa600c60008685815181106133f357fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600801600083815260200190815260200160002081905550640f85a49aaa600c600086858151811061344957fe5b6020908102919091018101516001600160a01b03168252818101929092526040908101600090812085825260090190925290205560010161337f565b50613877565b60006001613497614761565b6000828152600d60209081526040808320546001600160a01b03168352600c909152902060050154909250600211613515576000818152600d6020526040812054600c91906134ee906001600160a01b0316611ede565b6001600160a01b03166001600160a01b031681526020019081526020016000206001015490505b6040518060e00160405280600115158152602001600e5481526020018381526020018281526020016000604051908082528060200260200182016040528015613568578160200160208202803883390190505b5081526020016000604051908082528060200260200182016040528015613599578160200160208202803883390190505b5081526020016002815250935083600c60008786815181106135b757fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000208351815460ff191690151517815583830151600182015590830151600282015560608301516003820155608083015180519192613622926004850192909101906151b3565b5060a0820151805161363e9160058401916020909101906151b3565b5060c0820151816006015590505084838151811061365857fe5b602090810291909101810151600e546000908152600d909252604090912080546001600160a01b0319166001600160a01b0390921691909117905560015b6006811161379c57640f85a49aaa600c60008887815181106136b457fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600701600083815260200190815260200160002081905550640f85a49aaa600c600088878151811061370a57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600801600083815260200190815260200160002081905550640f85a49aaa600c600088878151811061376057fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000908120858252600901909252902055600101613696565b506000828152600d60209081526040808320546001600160a01b03168352600c909152902085516004909101908690859081106137d557fe5b602090810291909101810151825460018101845560009384528284200180546001600160a01b0319166001600160a01b03928316179055838352600d82526040808420549091168352600c9091529020855160059091019086908590811061383957fe5b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905550505b60006001600160a01b031683828151811061388e57fe5b60200260200101516001600160a01b031660008051602061527b833981519152426040518082815260200191505060405180910390a360010161315e565b505050565b60008115806138e757506001600160a01b038316155b156138f35750816119b8565b6001600160a01b038381166000908152600c60209081526040808320600301548352600d8252918290205482516319e815c560e31b815293166004840152600019850160248401529051309263cf40ae28926044808301939192829003018186803b15801561396157600080fd5b505afa158015613975573d6000803e3d6000fd5b505050506040513d602081101561398b57600080fd5b50519392505050565b6000546001600160a01b031633146139e0576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b6001546001600160a01b0316613a31576040805162461bcd60e51b8152602060048201526011602482015270125b9a5d1a585b1a5e994818db1bdcd959607a1b604482015290519081900360640190fd5b600080805b83811015613f2e57600154600354604080516313e842dd60e31b81526004810192909252516000926001600160a01b031691639f4216e8916024808301926020929190829003018186803b158015613a8d57600080fd5b505afa158015613aa1573d6000803e3d6000fd5b505050506040513d6020811015613ab757600080fd5b50516001546040805163543a185d60e11b81526001600160a01b038085166004830152915193945060009384938493169163a87430ba9160248083019260a0929190829003018186803b158015613b0d57600080fd5b505afa158015613b21573d6000803e3d6000fd5b505050506040513d60a0811015613b3757600080fd5b5060408082015160608301516080909301516003805460019081019091555483516313e842dd60e31b815260048101849052935192975093955093506001600160a01b0390921691639f4216e891602480820192602092909190829003018186803b158015613ba557600080fd5b505afa158015613bb9573d6000803e3d6000fd5b505050506040513d6020811015613bcf57600080fd5b5051600154604080516313e842dd60e31b81526004810186905290519299506001600160a01b0390911691639f4216e891602480820192602092909190829003018186803b158015613c2057600080fd5b505afa158015613c34573d6000803e3d6000fd5b505050506040513d6020811015613c4a57600080fd5b50516001600160a01b038086166000818152600c60208181526040808420805460ff191660019081178255600e8054820180825583830155600283018d9055600383018c905560069092018a905590548552600d835281852080546001600160a01b031990811688179091558f881686529383528185206004018054808301825590865283862001805485168717905595871684528320600501805480870182559084529220909101805490911690911790559096505b60068111613eee5760025460408051635108bfef60e11b81526001600160a01b038881166004830152602482018590529151919092169163a2117fde916044808301926020929190829003018186803b158015613d5d57600080fd5b505afa158015613d71573d6000803e3d6000fd5b505050506040513d6020811015613d8757600080fd5b50516001600160a01b038087166000818152600c60209081526040808320878452600701825291829020949094556002548151636aa49dc560e01b81526004810193909352602483018690529051921692636aa49dc592604480840193829003018186803b158015613df857600080fd5b505afa158015613e0c573d6000803e3d6000fd5b505050506040513d6020811015613e2257600080fd5b50516001600160a01b038087166000818152600c60209081526040808320878452600801825291829020949094556002548151630f88ad1160e11b81526004810193909352602483018690529051921692631f115a2292604480840193829003018186803b158015613e9357600080fd5b505afa158015613ea7573d6000803e3d6000fd5b505050506040513d6020811015613ebd57600080fd5b50516001600160a01b0386166000908152600c60209081526040808320858452600901909152902055600101613d01565b506040805142815290516000916001600160a01b0387169160008051602061527b8339815191529181900360200190a3505060019092019150613a369050565b506040517fee46b5a9d2ea2faa442859d01ada14d6e7c2c40659245ce34d4888e488c5304190600090a1505050565b6000546060906001600160a01b03163314613fac576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b60055481101561304e57826001600160a01b031660058281548110613fd057fe5b6000918252602090912001546001600160a01b0316141561408c57600580546000198101908110613ffd57fe5b600091825260209091200154600580546001600160a01b03909216918390811061402357fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905560058054600019810190811061405e57fe5b600091825260209091200180546001600160a01b0319169055600580549061408a906000198301615218565b505b600101613faf565b600b6020526000908152604090205481565b6001600160a01b0381166000908152600c602090815260409182902060050180548351818402810184019094528084526060939283018282801561179d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161177f5750505050509050919050565b6000546001600160a01b03163314614169576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b614172816150d4565b50565b60008060008085600114156141c757506001600160a01b038085166000908152600c60208181526040808420600301548452600d825280842054909416808452919052919020600101549093506144b7565b856002141561423157506001600160a01b038085166000908152600c602081815260408084206003908101548552600d80845282862054871680875285855283872090920154865283528185205490951680855292909152909120600101549094509092506144b7565b85600314156142b2575050506001600160a01b038083166000908152600c602081815260408084206003908101548552600d80845282862054871680875285855283872083015487528185528387205488168088528686528488209093015487529084528286205490961680865293909252909220600101549093506144b7565b856004141561434a57505050506001600160a01b038181166000908152600c602081815260408084206003908101548552600d8084528286205487168652848452828620820154865280845282862054871680875285855283872083015487528185528387205488168088528686528488209093015487529084528286205490961680865293909252909220600101549092906144b7565b85600514156143f7575050506001600160a01b038083166000908152600c602081815260408084206003908101548552600d808452828620548716865284845282862082015486528084528286205487168652848452828620820154865280845282862054871680875285855283872083015487528185528387205488168088528686528488209093015487529084528286205490961680865293909252909220600101549093506144b7565b85600614156144b757505050506001600160a01b038181166000908152600c602081815260408084206003908101548552600d80845282862054871686528484528286208201548652808452828620548716865284845282862082015486528084528286205487168652848452828620820154865280845282862054871680875285855283872083015487528185528387205488168088528686528488209093015487529084528286205490961680865293909252909220600101549092905b6001600160a01b0384166000908152600c602052604090205460ff166144fd576001600052600d6020526000805160206152f1833981519152546001600160a01b031693505b6000811580159061450f5750603f8211155b1561465b5760005b6006548110156145f9576006818154811061452e57fe5b60009182526020808320909101546006548b845260089092526040909220546001600160a01b03909216916108fc91908161456557fe5b049081150290604051600060405180830381858888f19350505050158015614591573d6000803e3d6000fd5b50336001600160a01b0316600682815481106145a957fe5b60009182526020918290200154604080518c81524293810193909352600283820152516001600160a01b0390911691600080516020615331833981519152919081900360600190a3600101614517565b503031156146565760016000908152600d6020526000805160206152f1833981519152546040516001600160a01b0390911691303180156108fc02929091818181858888f19350505050158015614654573d6000803e3d6000fd5b505b614758565b6001600160a01b0385166000908152600c602090815260408083208a845260080190915290205442116146fd576000878152600860205260408082205490516001600160a01b0388169282156108fc02929190818181858888f19350505050905080156146fd5760408051888152426020820152600281830152905133916001600160a01b038816916000805160206153318339815191529181900360600190a35b806147585760408051888152426020820152600281830152905133916001600160a01b038816917f42d2b895e7a01667b487e3e39f184c2583eaf835084d248fc5c9591c0a820f739181900360600190a36147588786614175565b50505050505050565b600480546000908152600d60209081526040808320546001600160a01b03168352600c9091528120909101548190600281106147a957600480546001019081905591506147ca565b80600114156147c457600480546001810190915591506147ca565b60045491505b5090505b90565b600080600080856001141561482357506001600160a01b038085166000908152600c60208181526040808420600201548452600d82528084205490941680845291905291902060010154909350614b13565b856002141561488d57506001600160a01b038085166000908152600c602081815260408084206002908101548552600d8084528286205487168087528585528387209092015486528352818520549095168085529290915290912060010154909450909250614b13565b856003141561490e575050506001600160a01b038083166000908152600c602081815260408084206002908101548552600d8084528286205487168087528585528387208301548752818552838720548816808852868652848820909301548752908452828620549096168086529390925290922060010154909350614b13565b85600414156149a657505050506001600160a01b038181166000908152600c602081815260408084206002908101548552600d808452828620548716865284845282862082015486528084528286205487168087528585528387208301548752818552838720548816808852868652848820909301548752908452828620549096168086529390925290922060010154909290614b13565b8560051415614a53575050506001600160a01b038083166000908152600c602081815260408084206002908101548552600d80845282862054871686528484528286208201548652808452828620548716865284845282862082015486528084528286205487168087528585528387208301548752818552838720548816808852868652848820909301548752908452828620549096168086529390925290922060010154909350614b13565b8560061415614b1357505050506001600160a01b038181166000908152600c602081815260408084206002908101548552600d80845282862054871686528484528286208201548652808452828620548716865284845282862082015486528084528286205487168652848452828620820154865280845282862054871680875285855283872083015487528185528387205488168088528686528488209093015487529084528286205490961680865293909252909220600101549092905b6001600160a01b0384166000908152600c602052604090205460ff16614b59576001600052600d6020526000805160206152f1833981519152546001600160a01b031693505b60008115801590614b6b5750603f8211155b15614c555760005b6005548110156145f95760058181548110614b8a57fe5b60009182526020808320909101546005548b845260089092526040909220546001600160a01b03909216916108fc919081614bc157fe5b049081150290604051600060405180830381858888f19350505050158015614bed573d6000803e3d6000fd5b50336001600160a01b031660058281548110614c0557fe5b60009182526020918290200154604080518c81524293810193909352600183820152516001600160a01b0390911691600080516020615331833981519152919081900360600190a3600101614b73565b6001600160a01b0385166000908152600c602090815260408083208a84526007019091529020544211801590614ca757506001600160a01b0385166000908152600c6020526040902060060154600211155b15614d21576000878152600860205260408082205490516001600160a01b0388169282156108fc02929190818181858888f1935050505090508015614d215760408051888152426020820152600181830152905133916001600160a01b038816916000805160206153318339815191529181900360600190a35b806147585760408051888152426020820152600181830152905133916001600160a01b038816917f42d2b895e7a01667b487e3e39f184c2583eaf835084d248fc5c9591c0a820f739181900360600190a361475887866147d1565b816000614d8983836138d1565b90506001600160a01b038116614dbe57506001600052600d6020526000805160206152f1833981519152546001600160a01b03165b6000848152600b60205260408120549060015b82811161507157614de286826138d1565b935042614def8589611990565b1015614e4e57604080518881524260208201526003818301529051600194850194935033916001600160a01b038716917f42d2b895e7a01667b487e3e39f184c2583eaf835084d248fc5c9591c0a820f739181900360600190a3615069565b600091506001600160a01b038416614e86576001600052600d6020526000805160206152f1833981519152546001600160a01b031693505b6001600160a01b0384166000908152600c602052604090206001015415801590614ecc57506001600160a01b0384166000908152600c6020526040902060010154603f10155b15614fdd576000878152600b6020908152604080832054600990925282205460018487030192919081614efb57fe5b048202905060005b600754811015614fd55760078181548110614f1a57fe5b6000918252602090912001546007546001600160a01b03909116906108fc908481614f4157fe5b049081150290604051600060405180830381858888f19350505050158015614f6d573d6000803e3d6000fd5b50336001600160a01b031660078281548110614f8557fe5b60009182526020918290200154604080518e81524293810193909352600383820152516001600160a01b0390911691600080516020615331833981519152919081900360600190a3600101614f03565b505050615071565b6000878152600b60209081526040808320546009909252909120546001600160a01b038616916108fc918161500e57fe5b049081150290604051600060405180830381858888f19350505050156150695760408051888152426020820152600381830152905133916001600160a01b038716916000805160206153318339815191529181900360600190a35b600101614dd1565b503031156150cc5760016000908152600d6020526000805160206152f1833981519152546040516001600160a01b0390911691303180156108fc02929091818181858888f19350505050158015614758573d6000803e3d6000fd5b505050505050565b6001600160a01b0381166151195760405162461bcd60e51b81526004018080602001828103825260248152602001806153516024913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040518060e001604052806000151581526020016000815260200160008152602001600081526020016060815260200160608152602001600081525090565b828054828255906000526020600020908101928215615208579160200282015b8281111561520857825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906151d3565b5061521492915061523c565b5090565b8154818355818111156138cc576000838152602090206138cc918101908301615260565b6147ce91905b808211156152145780546001600160a01b0319168155600101615242565b6147ce91905b80821115615214576000815560010161526656fe788c06d2405ae89dd3f0528d38be7691289474d72176408bc2c2406dc5e342f1496e636f72726563742056616c75652073656e642c20706c6561736520636865636b506c6561736520627579206669727374206c6576656c20666f7220302e30352045544820616e64207468656e2070726f63656564fd54ff1ed53f34a900b24c5ba64f85761163b5d82d98a47b9bd80e45466993c5ad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f48312df7d168f67e4d789b35dfb1e3246e9cf2b96d0af3b36134bf08cd3d728e4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646472657373a265627a7a72315820caaa60e840a11220f3959e65ee9c3eab3dc6677d89b297770b5bfbfafb9e187c64736f6c634300050b0032

Deployed Bytecode

0x6080604052600436106102255760003560e01c80638ca6f4a011610123578063b2fcabf3116100ab578063d50c0de01161006f578063d50c0de014610db4578063d656ab3714610dde578063e69c017114610e11578063e83b9bbb14610e3b578063f2fde38b14610e6e57610225565b8063b2fcabf314610be0578063b3001cb614610c0a578063bbaeb9c814610c1f578063cbdef94014610ccd578063cf40ae2814610d7b57610225565b8063a2117fde116100f2578063a2117fde14610b08578063a365f2a514610b41578063a4bb170d14610b56578063a87430ba14610b6b578063b2bdfa7b14610bcb57610225565b80638ca6f4a0146108eb578063928989f914610a1b5780639f4216e814610a30578063a08b01a314610a5a57610225565b80632b546601116101b15780634efa0622116101755780634efa06221461081b5780636447657a146108385780636aa49dc51461086b57806379378e30146108a45780638853b53e146108ce57610225565b80632b546601146106de57806332abe9c0146106f357806333b8ee191461071d578063347677a5146107cb5780633a843211146107e857610225565b8063111dac77116101f8578063111dac771461061457806312bb24e6146106295780631f115a221461065c5780631feedc2114610695578063252c1d27146106bf57610225565b8063011af3a6146104fa57806302f19da51461057d5780630f134288146105b95780630f880def146105ce575b60016000908152600860205260008051602061531183398151915254341415610250575060016103ae565b600260005260086020527f6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea90415434141561028b575060026103ae565b600360005260086020527f625b35f5e76f098dd7c3a05b10e2e5e78a4a01228d60c3b143426cdf36d26455543414156102c6575060036103ae565b600460005260086020527f9321edea6e3be4df59a344b401fab4f888b556fda1f954244cff9204bad624b854341415610301575060046103ae565b600560005260086020527f91238f30f286c9a1c6e901c4eda3b214c381c846e3dbe48df95c21488e8e1fdb5434141561033c575060056103ae565b600660005260086020527f13acf3fc7bed94759963f076d5d3443d88732026bffc8253bdf4a6e65f21ecc554341415610377575060066103ae565b60405162461bcd60e51b815260040180806020018281038252602281526020018061529b6022913960400191505060405180910390fd5b336000908152600c602052604090205460ff16156103d4576103cf81610ea1565b6104f7565b80600114156104c057600080905060006104246000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111f092505050565b6001600160a01b0381166000908152600c602052604090205490915060ff161561046b576001600160a01b0381166000908152600c602052604090206001015491506104b0565b6040805162461bcd60e51b8152602060048201526015602482015274125b98dbdc9c9958dd081c9959995c9c995c881a59605a1b604482015290519081900360640190fd5b6104b9826111f7565b50506104f7565b60405162461bcd60e51b81526004018080602001828103825260348152602001806152bd6034913960400191505060405180910390fd5b50005b34801561050657600080fd5b5061052d6004803603602081101561051d57600080fd5b50356001600160a01b031661160f565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610569578181015183820152602001610551565b505050509050019250505060405180910390f35b34801561058957600080fd5b506105a7600480360360208110156105a057600080fd5b50356117aa565b60408051918252519081900360200190f35b3480156105c557600080fd5b506105a76117bc565b3480156105da57600080fd5b506105f8600480360360208110156105f157600080fd5b50356117c2565b604080516001600160a01b039092168252519081900360200190f35b34801561062057600080fd5b506105f86117e9565b34801561063557600080fd5b5061052d6004803603602081101561064c57600080fd5b50356001600160a01b03166117f8565b34801561066857600080fd5b506105a76004803603604081101561067f57600080fd5b506001600160a01b038135169060200135611990565b3480156106a157600080fd5b506105f8600480360360208110156106b857600080fd5b50356119be565b6106dc600480360360208110156106d557600080fd5b5035610ea1565b005b3480156106ea57600080fd5b506106dc6119cb565b3480156106ff57600080fd5b506106dc6004803603602081101561071657600080fd5b5035611a86565b34801561072957600080fd5b5061052d6004803603602081101561074057600080fd5b810190602081018135600160201b81111561075a57600080fd5b82018360208201111561076c57600080fd5b803590602001918460208302840111600160201b8311171561078d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611ad7945050505050565b6106dc600480360360208110156107e157600080fd5b5035611b8f565b3480156107f457600080fd5b506105f86004803603602081101561080b57600080fd5b50356001600160a01b0316611ede565b6106dc6004803603602081101561083157600080fd5b50356121ff565b34801561084457600080fd5b5061052d6004803603602081101561085b57600080fd5b50356001600160a01b0316612560565b34801561087757600080fd5b506105a76004803603604081101561088e57600080fd5b506001600160a01b0381351690602001356125d7565b3480156108b057600080fd5b506105a7600480360360208110156108c757600080fd5b5035612603565b6106dc600480360360208110156108e457600080fd5b50356111f7565b3480156108f757600080fd5b506106dc6004803603604081101561090e57600080fd5b810190602081018135600160201b81111561092857600080fd5b82018360208201111561093a57600080fd5b803590602001918460208302840111600160201b8311171561095b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156109aa57600080fd5b8201836020820111156109bc57600080fd5b803590602001918460208302840111600160201b831117156109dd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612615945050505050565b348015610a2757600080fd5b506105f8612e27565b348015610a3c57600080fd5b506105f860048036036020811015610a5357600080fd5b5035612e36565b348015610a6657600080fd5b5061052d60048036036020811015610a7d57600080fd5b810190602081018135600160201b811115610a9757600080fd5b820183602082011115610aa957600080fd5b803590602001918460208302840111600160201b83111715610aca57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612e51945050505050565b348015610b1457600080fd5b506105a760048036036040811015610b2b57600080fd5b506001600160a01b038135169060200135612f09565b348015610b4d57600080fd5b506105a7612f35565b348015610b6257600080fd5b506105a7612f3b565b348015610b7757600080fd5b50610b9e60048036036020811015610b8e57600080fd5b50356001600160a01b0316612f41565b60408051951515865260208601949094528484019290925260608401526080830152519081900360a00190f35b348015610bd757600080fd5b506105f8612f74565b348015610bec57600080fd5b506105f860048036036020811015610c0357600080fd5b5035612f83565b348015610c1657600080fd5b506105a7612f90565b348015610c2b57600080fd5b5061052d60048036036020811015610c4257600080fd5b810190602081018135600160201b811115610c5c57600080fd5b820183602082011115610c6e57600080fd5b803590602001918460208302840111600160201b83111715610c8f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612f96945050505050565b348015610cd957600080fd5b506106dc60048036036020811015610cf057600080fd5b810190602081018135600160201b811115610d0a57600080fd5b820183602082011115610d1c57600080fd5b803590602001918460208302840111600160201b83111715610d3d57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506130af945050505050565b348015610d8757600080fd5b506105f860048036036040811015610d9e57600080fd5b506001600160a01b0381351690602001356138d1565b348015610dc057600080fd5b506106dc60048036036020811015610dd757600080fd5b5035613994565b348015610dea57600080fd5b5061052d60048036036020811015610e0157600080fd5b50356001600160a01b0316613f5d565b348015610e1d57600080fd5b506105a760048036036020811015610e3457600080fd5b5035614094565b348015610e4757600080fd5b5061052d60048036036020811015610e5e57600080fd5b50356001600160a01b03166140a6565b348015610e7a57600080fd5b506106dc60048036036020811015610e9157600080fd5b50356001600160a01b031661411d565b336000908152600c602052604090205460ff16610ef6576040805162461bcd60e51b815260206004820152600e60248201526d155cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b600081118015610f07575060068111155b610f4a576040805162461bcd60e51b815260206004820152600f60248201526e125b98dbdc9c9958dd081b195d995b608a1b604482015290519081900360640190fd5b80600114156110305760016000526008602052600080516020615311833981519152543414610fb2576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b336000908152600c602090815260408083206001845260080190915290205442101561100457336000908152600c6020908152604080832060018452600801909152902080546276a70001905561102b565b336000908152600c60209081526040808320600184526008019091529020426276a7000190555b6111a1565b6000818152600860205260409020543414611084576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b60001981015b801561110457336000908152600c602090815260408083208484526008019091529020544211156110fb576040805162461bcd60e51b8152602060048201526016602482015275109d5e481d1a19481c1c995d9a5bdd5cc81b195d995b60521b604482015290519081900360640190fd5b6000190161108a565b50336000908152600c60209081526040808320848452600801909152902054158061114b5750336000908152600c6020908152604080832084845260080190915290205442115b1561117a57336000908152600c602090815260408083208484526008019091529020426276a7000190556111a1565b336000908152600c60209081526040808320848452600801909152902080546276a7000190555b6111ab8133614175565b60408051828152426020820152600281830152905133917fb287163decf48c67aebaa19b3666dfde0a79c1230f327d42e9ce8a40599fae78919081900360600190a250565b6014015190565b336000908152600c602052604090205460ff1615611249576040805162461bcd60e51b815260206004820152600a602482015269155cd95c88195e1a5cdd60b21b604482015290519081900360640190fd5b6001546001600160a01b03161561129f576040805162461bcd60e51b815260206004820152601560248201527424b734ba34b0b634bd329029ba34b6361027b832b760591b604482015290519081900360640190fd5b6000811180156112b15750600e548111155b6112fa576040805162461bcd60e51b8152602060048201526015602482015274125b98dbdc9c9958dd081c9959995c9c995c881259605a1b604482015290519081900360640190fd5b600a54600160005260086020526000805160206153118339815191525401341461135d576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b600081611368614761565b6000828152600d60209081526040808320546001600160a01b03168352600c9091529020600501549092506002116113e6576000818152600d6020526040812054600c91906113bf906001600160a01b0316611ede565b6001600160a01b03166001600160a01b031681526020019081526020016000206001015490505b6113ee615174565b50600e80546001908101918290556040805160e081018252828152602080820194855281830187815260608301878152845160008082528185018752608086019182528651818152808601885260a087015260c08601819052338152600c8552959095208451815460ff1916901515178155965195870195909555516002860155925160038501559051805191938493909261149092600485019201906151b3565b5060a082015180516114ac9160058401916020909101906151b3565b5060c09190910151600690910155600e546000908152600d602081815260408084208054336001600160a01b03199182168117909255818652600c8085528387206001808952600890910186528488206276a700420190558a8852868652848820546001600160a01b03908116895282875285892060040180548084018255908a52878a200180548516861790558a8952878752858920548116895291865284882060050180549182018155885285882001805490921690921790558885529290915280832054600a5491519216926108fc8215029290818181858888f193505050501580156115a0573d6000803e3d6000fd5b506115ac600133614175565b6000848152600d6020818152604080842080546001600160a01b039081168652600c84528286206006018054600101905594899052928252915482514281529251931692339260008051602061527b83398151915292908290030190a350505050565b6000546060906001600160a01b0316331461165e576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b60065481101561174657826001600160a01b03166006828154811061168257fe5b6000918252602090912001546001600160a01b0316141561173e576006805460001981019081106116af57fe5b600091825260209091200154600680546001600160a01b0390921691839081106116d557fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905560068054600019810190811061171057fe5b600091825260209091200180546001600160a01b0319169055600680549061173c906000198301615218565b505b600101611661565b50600680548060200260200160405190810160405280929190818152602001828054801561179d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161177f575b505050505090505b919050565b60096020526000908152604090205481565b60045481565b600581815481106117cf57fe5b6000918252602090912001546001600160a01b0316905081565b6002546001600160a01b031681565b6000546060906001600160a01b03163314611847576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b60075481101561192f57826001600160a01b03166007828154811061186b57fe5b6000918252602090912001546001600160a01b031614156119275760078054600019810190811061189857fe5b600091825260209091200154600780546001600160a01b0390921691839081106118be57fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556007805460001981019081106118f957fe5b600091825260209091200180546001600160a01b03191690556007805490611925906000198301615218565b505b60010161184a565b50600780548060200260200160405190810160405280929190818152602001828054801561179d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161177f5750505050509050919050565b6001600160a01b0382166000908152600c602090815260408083208484526009019091529020545b92915050565b600681815481106117cf57fe5b6000546001600160a01b03163314611a17576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b6001546001600160a01b0316611a74576040805162461bcd60e51b815260206004820152601960248201527f496e697469616c697a6520616c726561647920636c6f73656400000000000000604482015290519081900360640190fd5b600180546001600160a01b0319169055565b6000546001600160a01b03163314611ad2576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b600455565b6000546060906001600160a01b03163314611b26576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b825181101561192f5760075460141115611b87576007838281518110611b4b57fe5b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b600101611b29565b336000908152600c602052604090205460ff16611be4576040805162461bcd60e51b815260206004820152600e60248201526d155cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b600081118015611bf5575060068111155b611c38576040805162461bcd60e51b815260206004820152600f60248201526e125b98dbdc9c9958dd081b195d995b608a1b604482015290519081900360640190fd5b8060011415611d1e5760016000526008602052600080516020615311833981519152543414611ca0576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b336000908152600c6020908152604080832060018452600701909152902054421015611cf257336000908152600c6020908152604080832060018452600701909152902080546276a700019055611d19565b336000908152600c60209081526040808320600184526007019091529020426276a7000190555b611e8f565b6000818152600860205260409020543414611d72576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b60001981015b8015611df257336000908152600c60209081526040808320848452600701909152902054421115611de9576040805162461bcd60e51b8152602060048201526016602482015275109d5e481d1a19481c1c995d9a5bdd5cc81b195d995b60521b604482015290519081900360640190fd5b60001901611d78565b50336000908152600c602090815260408083208484526007019091529020541580611e395750336000908152600c6020908152604080832084845260070190915290205442115b15611e6857336000908152600c602090815260408083208484526007019091529020426276a700019055611e8f565b336000908152600c60209081526040808320848452600701909152902080546276a7000190555b611e9981336147d1565b60408051828152426020820152600181830152905133917fb287163decf48c67aebaa19b3666dfde0a79c1230f327d42e9ce8a40599fae78919081900360600190a250565b6001600160a01b0381166000908152600c602052604081206005015460021115611f095750806117a5565b604080516103fe808252617fe0820190925260609160208201617fc0803883395050506001600160a01b0384166000908152600c60205260408120600501805492935091611f5357fe5b600091825260208220015482516001600160a01b03909116918391611f7457fe5b6001600160a01b039283166020918202929092018101919091529084166000908152600c9091526040902060050180546001908110611faf57fe5b9060005260206000200160009054906101000a90046001600160a01b031681600181518110611fda57fe5b6001600160a01b039092166020928302919091019091015260006001815b6103fe8110156121b0576002600c600086848151811061201457fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206005018054905010612189576101fe81101561218457600c600085838151811061206257fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060050160008154811061209957fe5b9060005260206000200160009054906101000a90046001600160a01b03168482600101600202815181106120c957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600c60008583815181106120f957fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060050160018154811061213057fe5b9060005260206000200160009054906101000a90046001600160a01b031684826001016002026001018151811061216357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6121a8565b6000915083818151811061219957fe5b602002602001015192506121b0565b600101611ff8565b5080156121f7576040805162461bcd60e51b815260206004820152601060248201526f273790233932b2902932b332b93932b960811b604482015290519081900360640190fd5b509392505050565b336000908152600c602052604090205460ff16612254576040805162461bcd60e51b815260206004820152600e60248201526d155cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b600081118015612265575060068111155b6122a8576040805162461bcd60e51b815260206004820152600f60248201526e125b98dbdc9c9958dd081b195d995b608a1b604482015290519081900360640190fd5b80600114156123a057600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36543414612322576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b336000908152600c602090815260408083206001845260090190915290205442101561237457336000908152600c6020908152604080832060018452600901909152902080546276a70001905561239b565b336000908152600c60209081526040808320600184526009019091529020426276a7000190555b612511565b60008181526009602052604090205434146123f4576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b60001981015b801561247457336000908152600c6020908152604080832084845260090190915290205442111561246b576040805162461bcd60e51b8152602060048201526016602482015275109d5e481d1a19481c1c995d9a5bdd5cc81b195d995b60521b604482015290519081900360640190fd5b600019016123fa565b50336000908152600c6020908152604080832084845260090190915290205415806124bb5750336000908152600c6020908152604080832084845260090190915290205442115b156124ea57336000908152600c602090815260408083208484526009019091529020426276a700019055612511565b336000908152600c60209081526040808320848452600901909152902080546276a7000190555b61251b8133614d7c565b60408051828152426020820152600381830152905133917fb287163decf48c67aebaa19b3666dfde0a79c1230f327d42e9ce8a40599fae78919081900360600190a250565b6001600160a01b0381166000908152600c602090815260409182902060040180548351818402810184019094528084526060939283018282801561179d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161177f5750505050509050919050565b6001600160a01b03919091166000908152600c6020908152604080832093835260089093019052205490565b60086020526000908152604090205481565b6000546001600160a01b03163314612661576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b6001546001600160a01b03166126b1576040805162461bcd60e51b815260206004820152601060248201526f496e697469616c697a6520636c6f736560801b604482015290519081900360640190fd5b80518251146126bf57600080fd5b600080805b8451811015612e205760025484516000916001600160a01b03169063a87430ba908790859081106126f157fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060a06040518083038186803b15801561273f57600080fd5b505afa158015612753573d6000803e3d6000fd5b505050506040513d60a081101561276957600080fd5b5060800151865190915086908390811061277f57fe5b60200260200101519250612791614761565b6000848152600d60209081526040808320546001600160a01b03168352600c90915290206005015490945060021161280f576000838152600d6020526040812054600c91906127e8906001600160a01b0316611ede565b6001600160a01b03166001600160a01b031681526020019081526020016000206001015492505b612817615174565b600e80546001908101918290556040805160e0810182529182526020808301939093528181018890526060820187905280516000808252818501835260808401919091528151818152938401909152909160a083019150815260200183815250905080600c600088868151811061288a57fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000208351815460ff1916901515178155838301516001820155908301516002820155606083015160038201556080830151805191926128f5926004850192909101906151b3565b5060a082015180516129119160058401916020909101906151b3565b5060c0820151816006015590505085838151811061292b57fe5b602090810291909101810151600e546000908152600d909252604090912080546001600160a01b0319166001600160a01b0390921691909117905560015b60068111612c725760025487516001600160a01b039091169063a2117fde9089908790811061299457fe5b6020026020010151836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b1580156129ea57600080fd5b505afa1580156129fe573d6000803e3d6000fd5b505050506040513d6020811015612a1457600080fd5b50518751600c906000908a9088908110612a2a57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600701600083815260200190815260200160002081905550600260009054906101000a90046001600160a01b03166001600160a01b0316636aa49dc5888681518110612a9a57fe5b6020026020010151836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b158015612af057600080fd5b505afa158015612b04573d6000803e3d6000fd5b505050506040513d6020811015612b1a57600080fd5b50518751600c906000908a9088908110612b3057fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600801600083815260200190815260200160002081905550600260009054906101000a90046001600160a01b03166001600160a01b0316631f115a22888681518110612ba057fe5b6020026020010151836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b158015612bf657600080fd5b505afa158015612c0a573d6000803e3d6000fd5b505050506040513d6020811015612c2057600080fd5b50518751600c906000908a9088908110612c3657fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000908120858252600901909252902055600101612969565b506000858152600d60209081526040808320546001600160a01b03168352600c90915290208651600490910190879085908110612cab57fe5b602090810291909101810151825460018101845560009384528284200180546001600160a01b0319166001600160a01b03928316179055868352600d82526040808420549091168352600c90915290208651600590910190879085908110612d0f57fe5b6020908102919091018101518254600181018455600093845291832090910180546001600160a01b0319166001600160a01b039092169190911790558751600c9190600d9082908b9088908110612d6257fe5b60209081029190910181015182528181019290925260409081016000908120546001600160a01b031684529183019390935291018120600601805460010190558751600d9190899086908110612db457fe5b6020026020010151815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b031660008051602061527b833981519152426040518082815260200191505060405180910390a350506001016126c4565b5050505050565b6001546001600160a01b031681565b600d602052600090815260409020546001600160a01b031681565b6000546060906001600160a01b03163314612ea0576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b82518110156117465760065460141115612f01576006838281518110612ec557fe5b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b600101612ea3565b6001600160a01b03919091166000908152600c6020908152604080832093835260079093019052205490565b600a5481565b600e5481565b600c602052600090815260409020805460018201546002830154600384015460069094015460ff90931693919290919085565b6000546001600160a01b031681565b600781815481106117cf57fe5b60035481565b6000546060906001600160a01b03163314612fe5576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b825181101561304e576005546014111561304657600583828151811061300a57fe5b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b600101612fe8565b50600580548060200260200160405190810160405280929190818152602001828054801561179d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161177f5750505050509050919050565b6000546001600160a01b031633146130fb576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b6064600e541115613153576040805162461bcd60e51b815260206004820181905260248201527f4e6f206d6f72652061646d696e732063616e2062652072656769737465726564604482015290519081900360640190fd5b61315b615174565b60005b82518110156138cc57600c600084838151811061317757fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16156131e9576040805162461bcd60e51b815260206004820152601660248201527513db99481bd9881d1a19481d5cd95c9cc8195e1a5cdd60521b604482015290519081900360640190fd5b600e8054600190810191829055141561348b576040518060e00160405280600115158152602001600e54815260200160018152602001600181526020016000604051908082528060200260200182016040528015613251578160200160208202803883390190505b5081526020016000604051908082528060200260200182016040528015613282578160200160208202803883390190505b5081526020016057815250915081600c60008584815181106132a057fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000208351815460ff19169015151781558383015160018201559083015160028201556060830151600382015560808301518051919261330b926004850192909101906151b3565b5060a082015180516133279160058401916020909101906151b3565b5060c0820151816006015590505082818151811061334157fe5b602090810291909101810151600e546000908152600d909252604090912080546001600160a01b0319166001600160a01b0390921691909117905560015b6006811161348557640f85a49aaa600c600086858151811061339d57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600701600083815260200190815260200160002081905550640f85a49aaa600c60008685815181106133f357fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600801600083815260200190815260200160002081905550640f85a49aaa600c600086858151811061344957fe5b6020908102919091018101516001600160a01b03168252818101929092526040908101600090812085825260090190925290205560010161337f565b50613877565b60006001613497614761565b6000828152600d60209081526040808320546001600160a01b03168352600c909152902060050154909250600211613515576000818152600d6020526040812054600c91906134ee906001600160a01b0316611ede565b6001600160a01b03166001600160a01b031681526020019081526020016000206001015490505b6040518060e00160405280600115158152602001600e5481526020018381526020018281526020016000604051908082528060200260200182016040528015613568578160200160208202803883390190505b5081526020016000604051908082528060200260200182016040528015613599578160200160208202803883390190505b5081526020016002815250935083600c60008786815181106135b757fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000208351815460ff191690151517815583830151600182015590830151600282015560608301516003820155608083015180519192613622926004850192909101906151b3565b5060a0820151805161363e9160058401916020909101906151b3565b5060c0820151816006015590505084838151811061365857fe5b602090810291909101810151600e546000908152600d909252604090912080546001600160a01b0319166001600160a01b0390921691909117905560015b6006811161379c57640f85a49aaa600c60008887815181106136b457fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600701600083815260200190815260200160002081905550640f85a49aaa600c600088878151811061370a57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600801600083815260200190815260200160002081905550640f85a49aaa600c600088878151811061376057fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000908120858252600901909252902055600101613696565b506000828152600d60209081526040808320546001600160a01b03168352600c909152902085516004909101908690859081106137d557fe5b602090810291909101810151825460018101845560009384528284200180546001600160a01b0319166001600160a01b03928316179055838352600d82526040808420549091168352600c9091529020855160059091019086908590811061383957fe5b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905550505b60006001600160a01b031683828151811061388e57fe5b60200260200101516001600160a01b031660008051602061527b833981519152426040518082815260200191505060405180910390a360010161315e565b505050565b60008115806138e757506001600160a01b038316155b156138f35750816119b8565b6001600160a01b038381166000908152600c60209081526040808320600301548352600d8252918290205482516319e815c560e31b815293166004840152600019850160248401529051309263cf40ae28926044808301939192829003018186803b15801561396157600080fd5b505afa158015613975573d6000803e3d6000fd5b505050506040513d602081101561398b57600080fd5b50519392505050565b6000546001600160a01b031633146139e0576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b6001546001600160a01b0316613a31576040805162461bcd60e51b8152602060048201526011602482015270125b9a5d1a585b1a5e994818db1bdcd959607a1b604482015290519081900360640190fd5b600080805b83811015613f2e57600154600354604080516313e842dd60e31b81526004810192909252516000926001600160a01b031691639f4216e8916024808301926020929190829003018186803b158015613a8d57600080fd5b505afa158015613aa1573d6000803e3d6000fd5b505050506040513d6020811015613ab757600080fd5b50516001546040805163543a185d60e11b81526001600160a01b038085166004830152915193945060009384938493169163a87430ba9160248083019260a0929190829003018186803b158015613b0d57600080fd5b505afa158015613b21573d6000803e3d6000fd5b505050506040513d60a0811015613b3757600080fd5b5060408082015160608301516080909301516003805460019081019091555483516313e842dd60e31b815260048101849052935192975093955093506001600160a01b0390921691639f4216e891602480820192602092909190829003018186803b158015613ba557600080fd5b505afa158015613bb9573d6000803e3d6000fd5b505050506040513d6020811015613bcf57600080fd5b5051600154604080516313e842dd60e31b81526004810186905290519299506001600160a01b0390911691639f4216e891602480820192602092909190829003018186803b158015613c2057600080fd5b505afa158015613c34573d6000803e3d6000fd5b505050506040513d6020811015613c4a57600080fd5b50516001600160a01b038086166000818152600c60208181526040808420805460ff191660019081178255600e8054820180825583830155600283018d9055600383018c905560069092018a905590548552600d835281852080546001600160a01b031990811688179091558f881686529383528185206004018054808301825590865283862001805485168717905595871684528320600501805480870182559084529220909101805490911690911790559096505b60068111613eee5760025460408051635108bfef60e11b81526001600160a01b038881166004830152602482018590529151919092169163a2117fde916044808301926020929190829003018186803b158015613d5d57600080fd5b505afa158015613d71573d6000803e3d6000fd5b505050506040513d6020811015613d8757600080fd5b50516001600160a01b038087166000818152600c60209081526040808320878452600701825291829020949094556002548151636aa49dc560e01b81526004810193909352602483018690529051921692636aa49dc592604480840193829003018186803b158015613df857600080fd5b505afa158015613e0c573d6000803e3d6000fd5b505050506040513d6020811015613e2257600080fd5b50516001600160a01b038087166000818152600c60209081526040808320878452600801825291829020949094556002548151630f88ad1160e11b81526004810193909352602483018690529051921692631f115a2292604480840193829003018186803b158015613e9357600080fd5b505afa158015613ea7573d6000803e3d6000fd5b505050506040513d6020811015613ebd57600080fd5b50516001600160a01b0386166000908152600c60209081526040808320858452600901909152902055600101613d01565b506040805142815290516000916001600160a01b0387169160008051602061527b8339815191529181900360200190a3505060019092019150613a369050565b506040517fee46b5a9d2ea2faa442859d01ada14d6e7c2c40659245ce34d4888e488c5304190600090a1505050565b6000546060906001600160a01b03163314613fac576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b60055481101561304e57826001600160a01b031660058281548110613fd057fe5b6000918252602090912001546001600160a01b0316141561408c57600580546000198101908110613ffd57fe5b600091825260209091200154600580546001600160a01b03909216918390811061402357fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905560058054600019810190811061405e57fe5b600091825260209091200180546001600160a01b0319169055600580549061408a906000198301615218565b505b600101613faf565b600b6020526000908152604090205481565b6001600160a01b0381166000908152600c602090815260409182902060050180548351818402810184019094528084526060939283018282801561179d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161177f5750505050509050919050565b6000546001600160a01b03163314614169576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b614172816150d4565b50565b60008060008085600114156141c757506001600160a01b038085166000908152600c60208181526040808420600301548452600d825280842054909416808452919052919020600101549093506144b7565b856002141561423157506001600160a01b038085166000908152600c602081815260408084206003908101548552600d80845282862054871680875285855283872090920154865283528185205490951680855292909152909120600101549094509092506144b7565b85600314156142b2575050506001600160a01b038083166000908152600c602081815260408084206003908101548552600d80845282862054871680875285855283872083015487528185528387205488168088528686528488209093015487529084528286205490961680865293909252909220600101549093506144b7565b856004141561434a57505050506001600160a01b038181166000908152600c602081815260408084206003908101548552600d8084528286205487168652848452828620820154865280845282862054871680875285855283872083015487528185528387205488168088528686528488209093015487529084528286205490961680865293909252909220600101549092906144b7565b85600514156143f7575050506001600160a01b038083166000908152600c602081815260408084206003908101548552600d808452828620548716865284845282862082015486528084528286205487168652848452828620820154865280845282862054871680875285855283872083015487528185528387205488168088528686528488209093015487529084528286205490961680865293909252909220600101549093506144b7565b85600614156144b757505050506001600160a01b038181166000908152600c602081815260408084206003908101548552600d80845282862054871686528484528286208201548652808452828620548716865284845282862082015486528084528286205487168652848452828620820154865280845282862054871680875285855283872083015487528185528387205488168088528686528488209093015487529084528286205490961680865293909252909220600101549092905b6001600160a01b0384166000908152600c602052604090205460ff166144fd576001600052600d6020526000805160206152f1833981519152546001600160a01b031693505b6000811580159061450f5750603f8211155b1561465b5760005b6006548110156145f9576006818154811061452e57fe5b60009182526020808320909101546006548b845260089092526040909220546001600160a01b03909216916108fc91908161456557fe5b049081150290604051600060405180830381858888f19350505050158015614591573d6000803e3d6000fd5b50336001600160a01b0316600682815481106145a957fe5b60009182526020918290200154604080518c81524293810193909352600283820152516001600160a01b0390911691600080516020615331833981519152919081900360600190a3600101614517565b503031156146565760016000908152600d6020526000805160206152f1833981519152546040516001600160a01b0390911691303180156108fc02929091818181858888f19350505050158015614654573d6000803e3d6000fd5b505b614758565b6001600160a01b0385166000908152600c602090815260408083208a845260080190915290205442116146fd576000878152600860205260408082205490516001600160a01b0388169282156108fc02929190818181858888f19350505050905080156146fd5760408051888152426020820152600281830152905133916001600160a01b038816916000805160206153318339815191529181900360600190a35b806147585760408051888152426020820152600281830152905133916001600160a01b038816917f42d2b895e7a01667b487e3e39f184c2583eaf835084d248fc5c9591c0a820f739181900360600190a36147588786614175565b50505050505050565b600480546000908152600d60209081526040808320546001600160a01b03168352600c9091528120909101548190600281106147a957600480546001019081905591506147ca565b80600114156147c457600480546001810190915591506147ca565b60045491505b5090505b90565b600080600080856001141561482357506001600160a01b038085166000908152600c60208181526040808420600201548452600d82528084205490941680845291905291902060010154909350614b13565b856002141561488d57506001600160a01b038085166000908152600c602081815260408084206002908101548552600d8084528286205487168087528585528387209092015486528352818520549095168085529290915290912060010154909450909250614b13565b856003141561490e575050506001600160a01b038083166000908152600c602081815260408084206002908101548552600d8084528286205487168087528585528387208301548752818552838720548816808852868652848820909301548752908452828620549096168086529390925290922060010154909350614b13565b85600414156149a657505050506001600160a01b038181166000908152600c602081815260408084206002908101548552600d808452828620548716865284845282862082015486528084528286205487168087528585528387208301548752818552838720548816808852868652848820909301548752908452828620549096168086529390925290922060010154909290614b13565b8560051415614a53575050506001600160a01b038083166000908152600c602081815260408084206002908101548552600d80845282862054871686528484528286208201548652808452828620548716865284845282862082015486528084528286205487168087528585528387208301548752818552838720548816808852868652848820909301548752908452828620549096168086529390925290922060010154909350614b13565b8560061415614b1357505050506001600160a01b038181166000908152600c602081815260408084206002908101548552600d80845282862054871686528484528286208201548652808452828620548716865284845282862082015486528084528286205487168652848452828620820154865280845282862054871680875285855283872083015487528185528387205488168088528686528488209093015487529084528286205490961680865293909252909220600101549092905b6001600160a01b0384166000908152600c602052604090205460ff16614b59576001600052600d6020526000805160206152f1833981519152546001600160a01b031693505b60008115801590614b6b5750603f8211155b15614c555760005b6005548110156145f95760058181548110614b8a57fe5b60009182526020808320909101546005548b845260089092526040909220546001600160a01b03909216916108fc919081614bc157fe5b049081150290604051600060405180830381858888f19350505050158015614bed573d6000803e3d6000fd5b50336001600160a01b031660058281548110614c0557fe5b60009182526020918290200154604080518c81524293810193909352600183820152516001600160a01b0390911691600080516020615331833981519152919081900360600190a3600101614b73565b6001600160a01b0385166000908152600c602090815260408083208a84526007019091529020544211801590614ca757506001600160a01b0385166000908152600c6020526040902060060154600211155b15614d21576000878152600860205260408082205490516001600160a01b0388169282156108fc02929190818181858888f1935050505090508015614d215760408051888152426020820152600181830152905133916001600160a01b038816916000805160206153318339815191529181900360600190a35b806147585760408051888152426020820152600181830152905133916001600160a01b038816917f42d2b895e7a01667b487e3e39f184c2583eaf835084d248fc5c9591c0a820f739181900360600190a361475887866147d1565b816000614d8983836138d1565b90506001600160a01b038116614dbe57506001600052600d6020526000805160206152f1833981519152546001600160a01b03165b6000848152600b60205260408120549060015b82811161507157614de286826138d1565b935042614def8589611990565b1015614e4e57604080518881524260208201526003818301529051600194850194935033916001600160a01b038716917f42d2b895e7a01667b487e3e39f184c2583eaf835084d248fc5c9591c0a820f739181900360600190a3615069565b600091506001600160a01b038416614e86576001600052600d6020526000805160206152f1833981519152546001600160a01b031693505b6001600160a01b0384166000908152600c602052604090206001015415801590614ecc57506001600160a01b0384166000908152600c6020526040902060010154603f10155b15614fdd576000878152600b6020908152604080832054600990925282205460018487030192919081614efb57fe5b048202905060005b600754811015614fd55760078181548110614f1a57fe5b6000918252602090912001546007546001600160a01b03909116906108fc908481614f4157fe5b049081150290604051600060405180830381858888f19350505050158015614f6d573d6000803e3d6000fd5b50336001600160a01b031660078281548110614f8557fe5b60009182526020918290200154604080518e81524293810193909352600383820152516001600160a01b0390911691600080516020615331833981519152919081900360600190a3600101614f03565b505050615071565b6000878152600b60209081526040808320546009909252909120546001600160a01b038616916108fc918161500e57fe5b049081150290604051600060405180830381858888f19350505050156150695760408051888152426020820152600381830152905133916001600160a01b038716916000805160206153318339815191529181900360600190a35b600101614dd1565b503031156150cc5760016000908152600d6020526000805160206152f1833981519152546040516001600160a01b0390911691303180156108fc02929091818181858888f19350505050158015614758573d6000803e3d6000fd5b505050505050565b6001600160a01b0381166151195760405162461bcd60e51b81526004018080602001828103825260248152602001806153516024913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040518060e001604052806000151581526020016000815260200160008152602001600081526020016060815260200160608152602001600081525090565b828054828255906000526020600020908101928215615208579160200282015b8281111561520857825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906151d3565b5061521492915061523c565b5090565b8154818355818111156138cc576000838152602090206138cc918101908301615260565b6147ce91905b808211156152145780546001600160a01b0319168155600101615242565b6147ce91905b80821115615214576000815560010161526656fe788c06d2405ae89dd3f0528d38be7691289474d72176408bc2c2406dc5e342f1496e636f72726563742056616c75652073656e642c20706c6561736520636865636b506c6561736520627579206669727374206c6576656c20666f7220302e30352045544820616e64207468656e2070726f63656564fd54ff1ed53f34a900b24c5ba64f85761163b5d82d98a47b9bd80e45466993c5ad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f48312df7d168f67e4d789b35dfb1e3246e9cf2b96d0af3b36134bf08cd3d728e4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646472657373a265627a7a72315820caaa60e840a11220f3959e65ee9c3eab3dc6677d89b297770b5bfbfafb9e187c64736f6c634300050b0032

Deployed Bytecode Sourcemap

84:33303:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3497:1;3391:10;3485:14;;;:11;:14;;-1:-1:-1;;;;;;;;;;;3485:14:0;3472:9;:27;3469:396;;;-1:-1:-1;3509:1:0;3469:396;;;3554:1;3542:14;;:11;:14;;;;3529:9;:27;3526:339;;;-1:-1:-1;3566:1:0;3526:339;;;3611:1;3599:14;;:11;:14;;;;3586:9;:27;3583:282;;;-1:-1:-1;3623:1:0;3583:282;;;3668:1;3656:14;;:11;:14;;;;3643:9;:27;3640:225;;;-1:-1:-1;3680:1:0;3640:225;;;3725:1;3713:14;;:11;:14;;;;3700:9;:27;3697:168;;;-1:-1:-1;3737:1:0;3697:168;;;3782:1;3770:14;;:11;:14;;;;3757:9;:27;3754:111;;;-1:-1:-1;3794:1:0;3754:111;;;3821:44;;-1:-1:-1;;;3821:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3754:111;3940:10;3934:17;;;;:5;:17;;;;;:25;;;3931:428;;;3975:22;3991:5;3975:15;:22::i;:::-;3931:428;;;4018:5;4027:1;4018:10;4015:344;;;4045:10;4058:1;4045:14;;4074:16;4093:24;4108:8;;4093:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4093:14:0;;-1:-1:-1;;;4093:24:0:i;:::-;-1:-1:-1;;;;;4137:15:0;;;;;;:5;:15;;;;;:23;4074:43;;-1:-1:-1;4137:23:0;;4134:105;;;-1:-1:-1;;;;;4170:15:0;;;;;;:5;:15;;;;;:18;;;;-1:-1:-1;4134:105:0;;;4208:31;;;-1:-1:-1;;;4208:31:0;;;;;;;;;;;;-1:-1:-1;;;4208:31:0;;;;;;;;;;;;;;4134:105;4256:14;4264:5;4256:7;:14::i;:::-;4015:344;;;;;4297:62;;-1:-1:-1;;;4297:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4015:344;3343:1024;84:33303;14713:472;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14713:472:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14713:472:0;-1:-1:-1;;;;;14713:472:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14713:472:0;;;;;;;;;;;;;;;;;1336:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1336:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1336:42:0;;:::i;:::-;;;;;;;;;;;;;;;;1014:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1014:29:0;;;:::i;1082:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1082:32:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1082:32:0;;:::i;:::-;;;;-1:-1:-1;;;;;1082:32:0;;;;;;;;;;;;;;213:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;213:70:0;;;:::i;15547:472::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15547:472:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15547:472:0;-1:-1:-1;;;;;15547:472:0;;:::i;33058:160::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33058:160:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33058:160:0;;;;;;;;:::i;1153:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1153:32:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1153:32:0;;:::i;19655:1264::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19655:1264:0;;:::i;:::-;;11672:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11672:152:0;;;:::i;11525:139::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11525:139:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11525:139:0;;:::i;15193:346::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15193:346:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15193:346:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;15193:346:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15193:346:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15193:346:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15193:346:0;;-1:-1:-1;15193:346:0;;-1:-1:-1;;;;;15193:346:0:i;18275:1240::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18275:1240:0;;:::i;16810:1030::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16810:1030:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16810:1030:0;-1:-1:-1;;;;;16810:1030:0;;:::i;21061:1268::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21061:1268:0;;:::i;31851:140::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31851:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31851:140:0;-1:-1:-1;;;;;31851:140:0;;:::i;32743:160::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32743:160:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;32743:160:0;;;;;;;;:::i;1289:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1289:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1289:40:0;;:::i;4514:1796::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4514:1796:0;;:::i;6461:2118::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6461:2118:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6461:2118:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6461:2118:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6461:2118:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6461:2118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6461:2118:0;;;;;;;;-1:-1:-1;6461:2118:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6461:2118:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6461:2118:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6461:2118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6461:2118:0;;-1:-1:-1;6461:2118:0;;-1:-1:-1;;;;;6461:2118:0:i;136:70::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;136:70:0;;;:::i;1604:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1604:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1604:41:0;;:::i;14359:346::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14359:346:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14359:346:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;14359:346:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14359:346:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;14359:346:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14359:346:0;;-1:-1:-1;14359:346:0;;-1:-1:-1;;;;;14359:346:0:i;32430:160::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32430:160:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;32430:160:0;;;;;;;;:::i;1385:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1385:31:0;;;:::i;1683:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1683:26:0;;;:::i;1521:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1521:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1521:44:0;-1:-1:-1;;;;;1521:44:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;108:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;108:21:0;;;:::i;1224:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1224:32:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1224:32:0;;:::i;290:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;290:27:0;;;:::i;13525:346::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13525:346:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13525:346:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13525:346:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13525:346:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13525:346:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;13525:346:0;;-1:-1:-1;13525:346:0;;-1:-1:-1;;;;;13525:346:0:i;8670:2843::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8670:2843:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8670:2843:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8670:2843:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8670:2843:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8670:2843:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8670:2843:0;;-1:-1:-1;8670:2843:0;;-1:-1:-1;;;;;8670:2843:0:i;17850:268::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17850:268:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17850:268:0;;;;;;;;:::i;11832:1683::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11832:1683:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11832:1683:0;;:::i;13879:472::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13879:472:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13879:472:0;-1:-1:-1;;;;;13879:472:0;;:::i;1425:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1425:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1425:45:0;;:::i;32123:140::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32123:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32123:140:0;-1:-1:-1;;;;;32123:140:0;;:::i;31264:111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31264:111:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31264:111:0;-1:-1:-1;;;;;31264:111:0;;:::i;19655:1264::-;19743:10;19737:17;;;;:5;:17;;;;;:25;;;19729:52;;;;;-1:-1:-1;;;19729:52:0;;;;;;;;;;;;-1:-1:-1;;;19729:52:0;;;;;;;;;;;;;;;19810:1;19801:6;:10;:25;;;;;19825:1;19815:6;:11;;19801:25;19793:53;;;;;-1:-1:-1;;;19793:53:0;;;;;;;;;;;;-1:-1:-1;;;19793:53:0;;;;;;;;;;;;;;;19862:6;19872:1;19862:11;19859:943;;;19923:1;19911:14;;:11;:14;;-1:-1:-1;;;;;;;;;;;19911:14:0;19898:9;:27;19890:55;;;;;-1:-1:-1;;;19890:55:0;;;;;;;;;;;;-1:-1:-1;;;19890:55:0;;;;;;;;;;;;;;;19971:10;19965:17;;;;:5;:17;;;;;;;;20003:1;19965:40;;:37;;:40;;;;;;20008:3;-1:-1:-1;19962:270:0;;;20051:10;20045:17;;;;:5;:17;;;;;;;;20083:1;20045:40;;:37;;:40;;;;;:57;;952:7;20045:57;;;19962:270;;;20176:10;20170:17;;;;:5;:17;;;;;;;;20208:1;20170:40;;:37;;:40;;;;;20213:3;952:7;20213:19;20170:62;;19962:270;19859:943;;;20308:19;;;;:11;:19;;;;;;20295:9;:32;20287:60;;;;;-1:-1:-1;;;20287:60:0;;;;;;;;;;;;-1:-1:-1;;;20287:60:0;;;;;;;;;;;;;;;-1:-1:-1;;20376:10:0;;20364:118;20388:5;;20364:118;;20414:10;20408:17;;;;:5;:17;;;;;;;;:40;;;:37;;:40;;;;;;20452:3;-1:-1:-1;20408:47:0;20400:82;;;;;-1:-1:-1;;;20400:82:0;;;;;;;;;;;;-1:-1:-1;;;20400:82:0;;;;;;;;;;;;;;;-1:-1:-1;;20395:3:0;20364:118;;;-1:-1:-1;20508:10:0;20502:17;;;;:5;:17;;;;;;;;:45;;;:37;;:45;;;;;;:50;;:105;;-1:-1:-1;20568:10:0;20562:17;;;;:5;:17;;;;;;;;:45;;;:37;;:45;;;;;;20556:3;:51;20502:105;20499:291;;;20633:10;20627:17;;;;:5;:17;;;;;;;;:45;;;:37;;:45;;;;;20675:3;952:7;20675:19;20627:67;;20499:291;;;20734:10;20728:17;;;;:5;:17;;;;;;;;:45;;;:37;;:45;;;;;:62;;952:7;20728:62;;;20499:291;20814:38;20833:6;20841:10;20814:18;:38::i;:::-;20870:41;;;;;;20904:3;20870:41;;;;20909:1;20870:41;;;;;;20884:10;;20870:41;;;;;;;;;;19655:1264;:::o;33226:158::-;33362:2;33353:12;33347:19;;33324:53::o;4514:1796::-;4592:10;4586:17;;;;:5;:17;;;;;:25;;;4585:26;4577:49;;;;;-1:-1:-1;;;4577:49:0;;;;;;;;;;;;-1:-1:-1;;;4577:49:0;;;;;;;;;;;;;;;4653:5;;-1:-1:-1;;;;;4653:5:0;4645:28;4637:62;;;;;-1:-1:-1;;;4637:62:0;;;;;;;;;;;;-1:-1:-1;;;4637:62:0;;;;;;;;;;;;;;;4732:1;4718:11;:15;:44;;;;;4752:10;;4737:11;:25;;4718:44;4710:78;;;;;-1:-1:-1;;;4710:78:0;;;;;;;;;;;;-1:-1:-1;;;4710:78:0;;;;;;;;;;;;;;;4837:19;;4832:1;4820:14;;:11;:14;;-1:-1:-1;;;;;;;;;;;4820:14:0;:36;4807:9;:49;4799:77;;;;;-1:-1:-1;;;4799:77:0;;;;;;;;;;;;-1:-1:-1;;;4799:77:0;;;;;;;;;;;;;;;4899:23;4959:11;5004:28;:26;:28::i;:::-;5048:35;5054:28;;;:8;:28;;;;;;;;;-1:-1:-1;;;;;5054:28:0;5048:35;;:5;:35;;;;;:51;;:58;4983:49;;-1:-1:-1;870:1:0;-1:-1:-1;5045:190:0;;5169:63;5202:28;;;:8;:28;;;;;;5169:5;;:63;5175:56;;-1:-1:-1;;;;;5202:28:0;5175:26;:56::i;:::-;-1:-1:-1;;;;;5169:63:0;-1:-1:-1;;;;;5169:63:0;;;;;;;;;;;;:66;;;5148:87;;5045:190;5258:28;;:::i;:::-;-1:-1:-1;5297:10:0;:12;;;;;;;;;;5335:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5572:16;;-1:-1:-1;5572:16:0;;;;;;;;5335:313;;;;;;5620:16;;;;;;;;;;5335:313;;;;;;;;;;5667:10;5661:17;;:5;:17;;;;;;:30;;;;-1:-1:-1;;5661:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5335:313;;;;5661:17;;:30;;;;;;;;;:::i;:::-;-1:-1:-1;5661:30:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5661:30:0;;;;;;;;;;;5711:10;;5702:20;;;;:8;:20;;;;;;;;:33;;5725:10;-1:-1:-1;;;;;;5702:33:0;;;;;;;;5758:17;;;:5;:17;;;;;;-1:-1:-1;5758:40:0;;;:37;;;;:40;;;;;952:7;5801:3;:19;5758:62;;5839:28;;;;;;;;;;-1:-1:-1;;;;;5839:28:0;;;5833:35;;;;;;;;:51;;27:10:-1;;23:18;;;45:23;;5833:68:0;;;;;;;;;;;;;;;5918:28;;;;;;;;;;;;5912:35;;;;;;;;:51;;27:10:-1;;23:18;;;45:23;;5912:68:0;;;;;;;;;;;;;;;;6017:21;;;;;;;;;;;6050:19;;6001:69;;6017:21;;;6001:69;;;;;;;5702:20;6001:69;6050:19;6017:21;6001:69;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6001:69:0;6083:32;6102:1;6104:10;6083:18;:32::i;:::-;6185:28;6191:21;;;:8;:21;;;;;;;;;;-1:-1:-1;;;;;6191:21:0;;;6185:28;;:5;:28;;;;;:44;;:46;;6191:21;6185:46;;;6275:21;;;;;;;;;6249:53;;6298:3;6249:53;;;;6275:21;;;6263:10;;-1:-1:-1;;;;;;;;;;;6249:53:0;;;;;;;;4514:1796;;;;:::o;14713:472::-;3294:6;;14797:16;;-1:-1:-1;;;;;3294:6:0;3280:10;:20;3272:43;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;;;;14831:6;14827:317;14845:14;:21;14841:25;;14827:317;;;14911:19;-1:-1:-1;;;;;14890:40:0;:14;14905:1;14890:17;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14890:17:0;:40;14887:246;;;14971:14;14986:21;;-1:-1:-1;;14986:23:0;;;14971:39;;;;;;;;;;;;;;;;14951:14;:17;;-1:-1:-1;;;;;14971:39:0;;;;14966:1;;14951:17;;;;;;;;;;;;;;;:59;;-1:-1:-1;;;;;;14951:59:0;-1:-1:-1;;;;;14951:59:0;;;;;;;;;;15036:14;15051:21;;-1:-1:-1;;15051:23:0;;;15036:39;;;;;;;;;;;;;;;15029:46;;-1:-1:-1;;;;;;15029:46:0;;;15094:14;:23;;;;;-1:-1:-1;;15094:23:0;;;:::i;:::-;;14887:246;14868:3;;14827:317;;;;15161:14;15154:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15154:21:0;;;;;;;;;;;;;;;;;;;;;;;3326:1;14713:472;;;:::o;1336:42::-;;;;;;;;;;;;;:::o;1014:29::-;;;;:::o;1082:32::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1082:32:0;;-1:-1:-1;1082:32:0;:::o;213:70::-;;;-1:-1:-1;;;;;213:70:0;;:::o;15547:472::-;3294:6;;15631:16;;-1:-1:-1;;;;;3294:6:0;3280:10;:20;3272:43;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;;;;15665:6;15661:317;15679:14;:21;15675:25;;15661:317;;;15745:19;-1:-1:-1;;;;;15724:40:0;:14;15739:1;15724:17;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15724:17:0;:40;15721:246;;;15805:14;15820:21;;-1:-1:-1;;15820:23:0;;;15805:39;;;;;;;;;;;;;;;;15785:14;:17;;-1:-1:-1;;;;;15805:39:0;;;;15800:1;;15785:17;;;;;;;;;;;;;;;:59;;-1:-1:-1;;;;;;15785:59:0;-1:-1:-1;;;;;15785:59:0;;;;;;;;;;15870:14;15885:21;;-1:-1:-1;;15885:23:0;;;15870:39;;;;;;;;;;;;;;;15863:46;;-1:-1:-1;;;;;;15863:46:0;;;15928:14;:23;;;;;-1:-1:-1;;15928:23:0;;;:::i;:::-;;15721:246;15702:3;;15661:317;;;;15995:14;15988:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15988:21:0;;;;;;;;;;;;;;;;;;;;;;15547:472;;;:::o;33058:160::-;-1:-1:-1;;;;;33170:12:0;;33143:7;33170:12;;;:5;:12;;;;;;;;:40;;;:32;;:40;;;;;;33058:160;;;;;:::o;1153:32::-;;;;;;;;;;11672:152;3294:6;;-1:-1:-1;;;;;3294:6:0;3280:10;:20;3272:43;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;;;;11739:5;;-1:-1:-1;;;;;11739:5:0;11723:66;;;;;-1:-1:-1;;;11723:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11800:5;:16;;-1:-1:-1;;;;;;11800:16:0;;;11672:152::o;11525:139::-;3294:6;;-1:-1:-1;;;;;3294:6:0;3280:10;:20;3272:43;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;;;;11618:17;:38;11525:139::o;15193:346::-;3294:6;;15283:16;;-1:-1:-1;;;;;3294:6:0;3280:10;:20;3272:43;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;;;;15317:6;15313:187;15331:19;:26;15327:1;:30;15313:187;;;15383:14;:21;15407:2;-1:-1:-1;15380:109:0;;;15430:14;15450:19;15470:1;15450:22;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;15430:43:0;;;;;;;;;;-1:-1:-1;;;;;;15430:43:0;-1:-1:-1;;;;;15430:43:0;;;;;;;;;15380:109;15359:3;;15313:187;;18275:1240;18355:10;18349:17;;;;:5;:17;;;;;:25;;;18341:52;;;;;-1:-1:-1;;;18341:52:0;;;;;;;;;;;;-1:-1:-1;;;18341:52:0;;;;;;;;;;;;;;;18422:1;18413:6;:10;:25;;;;;18437:1;18427:6;:11;;18413:25;18405:53;;;;;-1:-1:-1;;;18405:53:0;;;;;;;;;;;;-1:-1:-1;;;18405:53:0;;;;;;;;;;;;;;;18474:6;18484:1;18474:11;18471:927;;;18535:1;18523:14;;:11;:14;;-1:-1:-1;;;;;;;;;;;18523:14:0;18510:9;:27;18502:55;;;;;-1:-1:-1;;;18502:55:0;;;;;;;;;;;;-1:-1:-1;;;18502:55:0;;;;;;;;;;;;;;;18583:10;18577:17;;;;:5;:17;;;;;;;;18615:1;18577:40;;:37;;:40;;;;;;18620:3;-1:-1:-1;18574:268:0;;;18661:10;18655:17;;;;:5;:17;;;;;;;;18693:1;18655:40;;:37;;:40;;;;;:57;;952:7;18655:57;;;18574:268;;;18786:10;18780:17;;;;:5;:17;;;;;;;;18818:1;18780:40;;:37;;:40;;;;;18823:3;952:7;18823:19;18780:62;;18574:268;18471:927;;;18919:19;;;;:11;:19;;;;;;18906:9;:32;18898:60;;;;;-1:-1:-1;;;18898:60:0;;;;;;;;;;;;-1:-1:-1;;;18898:60:0;;;;;;;;;;;;;;;-1:-1:-1;;18987:10:0;;18975:118;18999:5;;18975:118;;19025:10;19019:17;;;;:5;:17;;;;;;;;:40;;;:37;;:40;;;;;;19063:3;-1:-1:-1;19019:47:0;19011:82;;;;;-1:-1:-1;;;19011:82:0;;;;;;;;;;;;-1:-1:-1;;;19011:82:0;;;;;;;;;;;;;;;-1:-1:-1;;19006:3:0;18975:118;;;-1:-1:-1;19119:10:0;19113:17;;;;:5;:17;;;;;;;;:45;;;:37;;:45;;;;;;:50;;:105;;-1:-1:-1;19179:10:0;19173:17;;;;:5;:17;;;;;;;;:45;;;:37;;:45;;;;;;19167:3;:51;19113:105;19110:276;;;19243:10;19237:17;;;;:5;:17;;;;;;;;:45;;;:37;;:45;;;;;19285:3;952:7;19285:19;19237:67;;19110:276;;;19330:10;19324:17;;;;:5;:17;;;;;;;;:45;;;:37;;:45;;;;;:62;;952:7;19324:62;;;19110:276;19410:38;19429:6;19437:10;19410:18;:38::i;:::-;19466:41;;;;;;19500:3;19466:41;;;;19505:1;19466:41;;;;;;19480:10;;19466:41;;;;;;;;;;18275:1240;:::o;16810:1030::-;-1:-1:-1;;;;;16904:12:0;;16881:7;16904:12;;;:5;:12;;;;;:28;;:35;870:1;-1:-1:-1;16901:77:0;;;-1:-1:-1;16973:5:0;16966:12;;16901:77;17020:19;;;17034:4;17020:19;;;;;;;;;16991:26;;17020:19;;;17:15:-1;;105:10;17020:19:0;88:34:-1;-1:-1;;;;;;;;17065:12:0;;;;;;:5;:12;;;;;:28;;:31;;16991:48;;-1:-1:-1;17065:28:0;:31;;;;;;;;;;;;;17050:12;;-1:-1:-1;;;;;17065:31:0;;;;17050:9;;:12;;;;-1:-1:-1;;;;;17050:46:0;;;:12;;;;;;;;;;:46;;;;17122:12;;;;;;;:5;:12;;;;;;:28;;:31;;17151:1;;17122:31;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17122:31:0;17107:9;17117:1;17107:12;;;;;;;;-1:-1:-1;;;;;17107:46:0;;;:12;;;;;;;;;;;:46;17166:20;17219:4;17166:20;17236:508;17256:4;17252:1;:8;17236:508;;;870:1;17285:5;:19;17291:9;17301:1;17291:12;;;;;;;;;;;;;;-1:-1:-1;;;;;17285:19:0;-1:-1:-1;;;;;17285:19:0;;;;;;;;;;;;:35;;:42;;;;:68;17282:451;;17381:3;17377:1;:7;17374:198;;;17430:5;:19;17436:9;17446:1;17436:12;;;;;;;;;;;;;;-1:-1:-1;;;;;17430:19:0;-1:-1:-1;;;;;17430:19:0;;;;;;;;;;;;:35;;17466:1;17430:38;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17430:38:0;17409:9;17420:1;17422;17420:3;17425:1;17419:7;17409:18;;;;;;;;;;;;;:59;-1:-1:-1;;;;;17409:59:0;;;-1:-1:-1;;;;;17409:59:0;;;;;17514:5;:19;17520:9;17530:1;17520:12;;;;;;;;;;;;;;-1:-1:-1;;;;;17514:19:0;-1:-1:-1;;;;;17514:19:0;;;;;;;;;;;;:35;;17550:1;17514:38;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17514:38:0;17491:9;17502:1;17504;17502:3;17507:1;17501:7;17509:1;17501:9;17491:20;;;;;;;;;;;;;:61;-1:-1:-1;;;;;17491:61:0;;;-1:-1:-1;;;;;17491:61:0;;;;;17374:198;17282:451;;;17642:5;17625:22;;17681:9;17691:1;17681:12;;;;;;;;;;;;;;17666:27;;17712:5;;17282:451;17262:3;;17236:508;;;;17765:14;17764:15;17756:44;;;;;-1:-1:-1;;;17756:44:0;;;;;;;;;;;;-1:-1:-1;;;17756:44:0;;;;;;;;;;;;;;;-1:-1:-1;17820:12:0;16810:1030;-1:-1:-1;;;16810:1030:0:o;21061:1268::-;21149:10;21143:17;;;;:5;:17;;;;;:25;;;21135:52;;;;;-1:-1:-1;;;21135:52:0;;;;;;;;;;;;-1:-1:-1;;;21135:52:0;;;;;;;;;;;;;;;21216:1;21207:6;:10;:25;;;;;21231:1;21221:6;:11;;21207:25;21199:53;;;;;-1:-1:-1;;;21199:53:0;;;;;;;;;;;;-1:-1:-1;;;21199:53:0;;;;;;;;;;;;;;;21268:6;21278:1;21268:11;21265:947;;;21331:1;21317:16;;:13;:16;;;;21304:9;:29;21296:57;;;;;-1:-1:-1;;;21296:57:0;;;;;;;;;;;;-1:-1:-1;;;21296:57:0;;;;;;;;;;;;;;;21379:10;21373:17;;;;:5;:17;;;;;;;;21411:1;21373:40;;:37;;:40;;;;;;21416:3;-1:-1:-1;21370:270:0;;;21459:10;21453:17;;;;:5;:17;;;;;;;;21491:1;21453:40;;:37;;:40;;;;;:57;;952:7;21453:57;;;21370:270;;;21584:10;21578:17;;;;:5;:17;;;;;;;;21616:1;21578:40;;:37;;:40;;;;;21621:3;952:7;21621:19;21578:62;;21370:270;21265:947;;;21716:21;;;;:13;:21;;;;;;21703:9;:34;21695:62;;;;;-1:-1:-1;;;21695:62:0;;;;;;;;;;;;-1:-1:-1;;;21695:62:0;;;;;;;;;;;;;;;-1:-1:-1;;21786:10:0;;21774:118;21798:5;;21774:118;;21824:10;21818:17;;;;:5;:17;;;;;;;;:40;;;:37;;:40;;;;;;21862:3;-1:-1:-1;21818:47:0;21810:82;;;;;-1:-1:-1;;;21810:82:0;;;;;;;;;;;;-1:-1:-1;;;21810:82:0;;;;;;;;;;;;;;;-1:-1:-1;;21805:3:0;21774:118;;;-1:-1:-1;21918:10:0;21912:17;;;;:5;:17;;;;;;;;:45;;;:37;;:45;;;;;;:50;;:105;;-1:-1:-1;21978:10:0;21972:17;;;;:5;:17;;;;;;;;:45;;;:37;;:45;;;;;;21966:3;:51;21912:105;21909:291;;;22043:10;22037:17;;;;:5;:17;;;;;;;;:45;;;:37;;:45;;;;;22085:3;952:7;22085:19;22037:67;;21909:291;;;22144:10;22138:17;;;;:5;:17;;;;;;;;:45;;;:37;;:45;;;;;:62;;952:7;22138:62;;;21909:291;22224:38;22243:6;22251:10;22224:18;:38::i;:::-;22280:41;;;;;;22314:3;22280:41;;;;22319:1;22280:41;;;;;;22294:10;;22280:41;;;;;;;;;;21061:1268;:::o;31851:140::-;-1:-1:-1;;;;;31955:12:0;;;;;;:5;:12;;;;;;;;;:28;;31948:35;;;;;;;;;;;;;;;;;31919:16;;31948:35;;;31955:28;31948:35;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31948:35:0;;;;;;;;;;;;;;;;;;;;;;31851:140;;;:::o;32743:160::-;-1:-1:-1;;;;;32855:12:0;;;;32828:7;32855:12;;;:5;:12;;;;;;;;:40;;;:32;;;;:40;;;;;32743:160::o;1289:40::-;;;;;;;;;;;;;:::o;6461:2118::-;3294:6;;-1:-1:-1;;;;;3294:6:0;3280:10;:20;3272:43;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;;;;6600:5;;-1:-1:-1;;;;;6600:5:0;6584:57;;;;;-1:-1:-1;;;6584:57:0;;;;;;;;;;;;-1:-1:-1;;;6584:57:0;;;;;;;;;;;;;;;6682:12;:19;6660:11;:18;:41;6652:50;;;;;;6715:23;;;6783:1793;6803:11;:18;6799:1;:22;6783:1793;;;6886:5;;6898:15;;6861:21;;-1:-1:-1;;;;;6886:5:0;;:11;;6898:12;;6911:1;;6898:15;;;;;;;;;;;;6886:28;;;;;;;;;;;;;-1:-1:-1;;;;;6886:28:0;-1:-1:-1;;;;;6886:28:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6886:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6886:28:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;6886:28:0;;;6960:14;;6886:28;;-1:-1:-1;6960:11:0;;6972:1;;6960:14;;;;;;;;;;;;6939:35;;7006:28;:26;:28::i;:::-;7050:35;7056:28;;;:8;:28;;;;;;;;;-1:-1:-1;;;;;7056:28:0;7050:35;;:5;:35;;;;;:51;;:58;6985:49;;-1:-1:-1;870:1:0;-1:-1:-1;7047:190:0;;7171:63;7204:28;;;:8;:28;;;;;;7171:5;;:63;7177:56;;-1:-1:-1;;;;;7204:28:0;7177:26;:56::i;:::-;-1:-1:-1;;;;;7171:63:0;-1:-1:-1;;;;;7171:63:0;;;;;;;;;;;;:66;;;7150:87;;7047:190;7260:28;;:::i;:::-;7299:10;:12;;;;;;;;;;7337:328;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7589:16;;-1:-1:-1;7589:16:0;;;;;;;;7337:328;;;;;;;7637:16;;;;;;;;;;;7337:328;;;;;;7637:16;7337:328;;;;7541:16;7337:328;;;7324:341;;7703:10;7678:5;:22;7684:12;7697:1;7684:15;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7678:22:0;;;;;;;;;;;;;;-1:-1:-1;7678:22:0;:35;;;;-1:-1:-1;;7678:35:0;;;;;;;;;;;-1:-1:-1;7678:35:0;;;;;;;;;;;;;;;;;;;;;;;;;:22;;:35;;;;;;;;;;;:::i;:::-;-1:-1:-1;7678:35:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7747:12;7760:1;7747:15;;;;;;;;;;;;;;;;;;;7733:10;;7724:20;;;;:8;:20;;;;;;;:38;;-1:-1:-1;;;;;;7724:38:0;-1:-1:-1;;;;;7724:38:0;;;;;;;;;-1:-1:-1;7784:404:0;7805:1;7800;:6;7784:404;;7882:5;;7916:15;;-1:-1:-1;;;;;7882:5:0;;;;:33;;7916:12;;7929:1;;7916:15;;;;;;;;;;;;7933:1;7882:53;;;;;;;;;;;;;-1:-1:-1;;;;;7882:53:0;-1:-1:-1;;;;;7882:53:0;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7882:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7882:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7882:53:0;7840:15;;7834:5;;:22;;7840:12;;7853:1;;7840:15;;;;;;;;;;;;-1:-1:-1;;;;;7834:22:0;-1:-1:-1;;;;;7834:22:0;;;;;;;;;;;;:42;;:45;7877:1;7834:45;;;;;;;;;;;:101;;;;8002:5;;;;;;;;;-1:-1:-1;;;;;8002:5:0;-1:-1:-1;;;;;8002:33:0;;8036:12;8049:1;8036:15;;;;;;;;;;;;;;8053:1;8002:53;;;;;;;;;;;;;-1:-1:-1;;;;;8002:53:0;-1:-1:-1;;;;;8002:53:0;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8002:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8002:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8002:53:0;7960:15;;7954:5;;:22;;7960:12;;7973:1;;7960:15;;;;;;;;;;;;-1:-1:-1;;;;;7954:22:0;-1:-1:-1;;;;;7954:22:0;;;;;;;;;;;;:42;;:45;7997:1;7954:45;;;;;;;;;;;:101;;;;8122:5;;;;;;;;;-1:-1:-1;;;;;8122:5:0;-1:-1:-1;;;;;8122:33:0;;8156:12;8169:1;8156:15;;;;;;;;;;;;;;8173:1;8122:53;;;;;;;;;;;;;-1:-1:-1;;;;;8122:53:0;-1:-1:-1;;;;;8122:53:0;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8122:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8122:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8122:53:0;8080:15;;8074:5;;:22;;8080:12;;8093:1;;8080:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8074:22:0;;;;;;;;;;;;;;-1:-1:-1;8074:22:0;;;:45;;;:42;;:45;;;;;:101;7808:3;;7784:404;;;-1:-1:-1;8200:35:0;8206:28;;;:8;:28;;;;;;;;;-1:-1:-1;;;;;8206:28:0;8200:35;;:5;:35;;;;;8257:15;;8200:51;;;;;8257:12;;8270:1;;8257:15;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;8200:73:0;;;;;;;;;-1:-1:-1;;;;;;8200:73:0;-1:-1:-1;;;;;8200:73:0;;;;;;8290:28;;;:8;:28;;;;;;;;;;8284:35;;:5;:35;;;;;8341:15;;8284:51;;;;;8341:15;;8354:1;;8341:15;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;8284:73:0;;;;;;;;;;;-1:-1:-1;;;;;;8284:73:0;-1:-1:-1;;;;;8284:73:0;;;;;;;;;8460:14;;8445:5;;-1:-1:-1;8451:8:0;;-1:-1:-1;;8460:14:0;;8472:1;;8460:14;;;;;;;;;;;;;;;;;8451:24;;;;;;;;;;;;;-1:-1:-1;8451:24:0;;;;-1:-1:-1;;;;;8451:24:0;8445:31;;;;;;;;;;;;;:47;;:49;;8451:24;8445:49;;;8547:14;;8538:8;;-1:-1:-1;8547:11:0;;8559:1;;8547:14;;;;;;;;;;;;8538:24;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8538:24:0;-1:-1:-1;;;;;8512:56:0;8526:10;-1:-1:-1;;;;;8512:56:0;-1:-1:-1;;;;;;;;;;;8564:3:0;8512:56;;;;;;;;;;;;;;;;;;-1:-1:-1;;6823:3:0;;6783:1793;;;;3326:1;;6461:2118;;:::o;136:70::-;;;-1:-1:-1;;;;;136:70:0;;:::o;1604:41::-;;;;;;;;;;;;-1:-1:-1;;;;;1604:41:0;;:::o;14359:346::-;3294:6;;14449:16;;-1:-1:-1;;;;;3294:6:0;3280:10;:20;3272:43;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;;;;14483:6;14479:187;14497:19;:26;14493:1;:30;14479:187;;;14549:14;:21;14573:2;-1:-1:-1;14546:109:0;;;14596:14;14616:19;14636:1;14616:22;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;14596:43:0;;;;;;;;;;-1:-1:-1;;;;;;14596:43:0;-1:-1:-1;;;;;14596:43:0;;;;;;;;;14546:109;14525:3;;14479:187;;32430:160;-1:-1:-1;;;;;32542:12:0;;;;32515:7;32542:12;;;:5;:12;;;;;;;;:40;;;:32;;;;:40;;;;;32430:160::o;1385:31::-;;;;:::o;1683:26::-;;;;:::o;1521:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;108:21::-;;;-1:-1:-1;;;;;108:21:0;;:::o;1224:32::-;;;;;;;;;;290:27;;;;:::o;13525:346::-;3294:6;;13615:16;;-1:-1:-1;;;;;3294:6:0;3280:10;:20;3272:43;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;;;;13649:6;13645:187;13663:19;:26;13659:1;:30;13645:187;;;13715:14;:21;13739:2;-1:-1:-1;13712:109:0;;;13762:14;13782:19;13802:1;13782:22;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;13762:43:0;;;;;;;;;;-1:-1:-1;;;;;;13762:43:0;-1:-1:-1;;;;;13762:43:0;;;;;;;;;13712:109;13691:3;;13645:187;;;;13849:14;13842:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13842:21:0;;;;;;;;;;;;;;;;;;;;;;13525:346;;;:::o;8670:2843::-;3294:6;;-1:-1:-1;;;;;3294:6:0;3280:10;:20;3272:43;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;;;;8776:3;8762:10;;:17;;8754:62;;;;;-1:-1:-1;;;8754:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8829:28;;:::i;:::-;8874:6;8870:2640;8890:13;:20;8886:1;:24;8870:2640;;;8942:5;:23;8948:13;8962:1;8948:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8942:23:0;;;;;;;;;;;-1:-1:-1;8942:23:0;:31;;;8941:32;8933:67;;;;;-1:-1:-1;;;8933:67:0;;;;;;;;;;;;-1:-1:-1;;;8933:67:0;;;;;;;;;;;;;;;9015:10;:12;;;;;;;;;;9047:15;9044:2373;;;9095:308;;;;;;;;9134:4;9095:308;;;;;;9161:10;;9095:308;;;;9209:1;9095:308;;;;9248:1;9095:308;;;;9337:1;9323:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;9323:16:0;;9095:308;;;;9389:1;9375:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;9375:16:0;;9095:308;;;;9285:2;9095:308;;;9082:321;;9446:10;9420:5;:23;9426:13;9440:1;9426:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9420:23:0;;;;;;;;;;;;;;-1:-1:-1;9420:23:0;:36;;;;-1:-1:-1;;9420:36:0;;;;;;;;;;;-1:-1:-1;9420:36:0;;;;;;;;;;;;;;;;;;;;;;;;;:23;;:36;;;;;;;;;;;:::i;:::-;-1:-1:-1;9420:36:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9494:13;9508:1;9494:16;;;;;;;;;;;;;;;;;;;9480:10;;9471:20;;;;:8;:20;;;;;;;:39;;-1:-1:-1;;;;;;9471:39:0;-1:-1:-1;;;;;9471:39:0;;;;;;;;;-1:-1:-1;9527:282:0;9548:1;9543;:6;9527:282;;9624:11;9575:5;:23;9581:13;9595:1;9581:16;;;;;;;;;;;;;;-1:-1:-1;;;;;9575:23:0;-1:-1:-1;;;;;9575:23:0;;;;;;;;;;;;:43;;:46;9619:1;9575:46;;;;;;;;;;;:60;;;;9703:11;9654:5;:23;9660:13;9674:1;9660:16;;;;;;;;;;;;;;-1:-1:-1;;;;;9654:23:0;-1:-1:-1;;;;;9654:23:0;;;;;;;;;;;;:43;;:46;9698:1;9654:46;;;;;;;;;;;:60;;;;9782:11;9733:5;:23;9739:13;9753:1;9739:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9733:23:0;;;;;;;;;;;;;;-1:-1:-1;9733:23:0;;;:46;;;:43;;:46;;;;;:60;9551:3;;9527:282;;;;9044:2373;;;9876:23;9948:1;9995:28;:26;:28::i;:::-;10051:35;10057:28;;;:8;:28;;;;;;;;;-1:-1:-1;;;;;10057:28:0;10051:35;;:5;:35;;;;;:51;;:58;9974:49;;-1:-1:-1;870:1:0;-1:-1:-1;10048:202:0;;10184:63;10217:28;;;:8;:28;;;;;;10184:5;;:63;10190:56;;-1:-1:-1;;;;;10217:28:0;10190:26;:56::i;:::-;-1:-1:-1;;;;;10184:63:0;-1:-1:-1;;;;;10184:63:0;;;;;;;;;;;;:66;;;10163:87;;10048:202;10329:409;;;;;;;;10376:4;10329:409;;;;;;10411:10;;10329:409;;;;10467:18;10329:409;;;;10531:18;10329:409;;;;10652:1;10638:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;10638:16:0;;10329:409;;;;10712:1;10698:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;10698:16:0;;10329:409;;;;10593:1;10329:409;;;10316:422;;10789:10;10763:5;:23;10769:13;10783:1;10769:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10763:23:0;;;;;;;;;;;;;;-1:-1:-1;10763:23:0;:36;;;;-1:-1:-1;;10763:36:0;;;;;;;;;;;-1:-1:-1;10763:36:0;;;;;;;;;;;;;;;;;;;;;;;;;:23;;:36;;;;;;;;;;;:::i;:::-;-1:-1:-1;10763:36:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10845:13;10859:1;10845:16;;;;;;;;;;;;;;;;;;;10831:10;;10822:20;;;;:8;:20;;;;;;;:39;;-1:-1:-1;;;;;;10822:39:0;-1:-1:-1;;;;;10822:39:0;;;;;;;;;-1:-1:-1;10886:314:0;10907:1;10902;:6;10886:314;;10991:11;10942:5;:23;10948:13;10962:1;10948:16;;;;;;;;;;;;;;-1:-1:-1;;;;;10942:23:0;-1:-1:-1;;;;;10942:23:0;;;;;;;;;;;;:43;;:46;10986:1;10942:46;;;;;;;;;;;:60;;;;11078:11;11029:5;:23;11035:13;11049:1;11035:16;;;;;;;;;;;;;;-1:-1:-1;;;;;11029:23:0;-1:-1:-1;;;;;11029:23:0;;;;;;;;;;;;:43;;:46;11073:1;11029:46;;;;;;;;;;;:60;;;;11165:11;11116:5;:23;11122:13;11136:1;11122:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11116:23:0;;;;;;;;;;;;;;-1:-1:-1;11116:23:0;;;:46;;;:43;;:46;;;;;:60;10910:3;;10886:314;;;-1:-1:-1;11224:35:0;11230:28;;;:8;:28;;;;;;;;;-1:-1:-1;;;;;11230:28:0;11224:35;;:5;:35;;;;;11281:16;;11224:51;;;;;11281:13;;11295:1;;11281:16;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;11224:74:0;;;;;;;;;-1:-1:-1;;;;;;11224:74:0;-1:-1:-1;;;;;11224:74:0;;;;;;11327:28;;;:8;:28;;;;;;;;;;11321:35;;:5;:35;;;;;11378:16;;11321:51;;;;;11378:16;;11392:1;;11378:16;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;11321:74:0;;;;;;;;;;-1:-1:-1;;;;;;11321:74:0;-1:-1:-1;;;;;11321:74:0;;;;;;;;;-1:-1:-1;;9044:2373:0;11480:3;-1:-1:-1;;;;;11440:62:0;11454:13;11468:1;11454:16;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:62:0;-1:-1:-1;;;;;;;;;;;11486:15:0;11440:62;;;;;;;;;;;;;;;;;;8912:3;;8870:2640;;;;3326:1;8670:2843;:::o;17850:268::-;17937:7;17960:11;;;:34;;-1:-1:-1;;;;;;17975:19:0;;;17960:34;17956:69;;;-1:-1:-1;18012:5:0;18005:12;;17956:69;-1:-1:-1;;;;;18068:12:0;;;18059:40;18068:12;;;:5;:12;;;;;;;;:30;;;18059:40;;:8;:40;;;;;;;18040:72;;-1:-1:-1;;;18040:72:0;;18059:40;;18040:72;;;;-1:-1:-1;;18101:10:0;;18040:72;;;;;;:4;;:18;;:72;;;;;18068:12;;18040:72;;;;;:4;:72;;;5:2:-1;;;;30:1;27;20:12;5:2;18040:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18040:72:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18040:72:0;;17850:268;-1:-1:-1;;;17850:268:0:o;11832:1683::-;3294:6;;-1:-1:-1;;;;;3294:6:0;3280:10;:20;3272:43;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;;;;11911:5;;-1:-1:-1;;;;;11911:5:0;11895:58;;;;;-1:-1:-1;;;11895:58:0;;;;;;;;;;;;-1:-1:-1;;;11895:58:0;;;;;;;;;;;;;;;11974:13;;;12075:1403;12095:5;12091:1;:9;12075:1403;;;12137:5;;12152:11;;12137:27;;;-1:-1:-1;;;12137:27:0;;;;;;;;;;12122:12;;-1:-1:-1;;;;;12137:5:0;;:14;;:27;;;;;;;;;;;;;;:5;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;12137:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12137:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12137:27:0;12245:5;;:17;;;-1:-1:-1;;;12245:17:0;;-1:-1:-1;;;;;12245:17:0;;;;;;;;;12137:27;;-1:-1:-1;12183:17:0;;;;;;12245:5;;:11;;:17;;;;;;;;;;;;;;:5;:17;;;5:2:-1;;;;30:1;27;20:12;5:2;12245:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12245:17:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;12245:17:0;;;;;;;;;;;;;;12297:11;:13;;;;;;;;;12356:5;:28;;-1:-1:-1;;;12356:28:0;;;;;;;;;;12245:17;;-1:-1:-1;12245:17:0;;-1:-1:-1;12245:17:0;-1:-1:-1;;;;;;12356:5:0;;;;:14;;:28;;;;;12245:17;;12356:28;;;;;;;;:5;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;12356:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12356:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12356:28:0;12412:5;;:28;;;-1:-1:-1;;;12412:28:0;;;;;;;;;;12356;;-1:-1:-1;;;;;;12412:5:0;;;;:14;;:28;;;;;12356;;12412;;;;;;;;:5;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;12412:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12412:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12412:28:0;-1:-1:-1;;;;;12465:11:0;;;;;;;:5;12412:28;12465:11;;;;;;;:25;;-1:-1:-1;;12465:25:0;12486:4;12465:25;;;;;12531:10;12529:12;;;;;;;12513:14;;;:28;12564:29;;;:43;;;12630:29;;;:43;;;12696:27;;;;:45;;;12809:10;;12800:20;;:8;:20;;;;;:27;;-1:-1:-1;;;;;;12800:27:0;;;;;;;;12848:12;;;;;;;;;;;:28;;27:10:-1;;23:18;;;45:23;;12848:39:0;;;;;;;;;;;;;;;12906:12;;;;;;;:28;;27:10:-1;;23:18;;;45:23;;12906:39:0;;;;;;;;;;;;;;;;;;12412:28;;-1:-1:-1;12986:401:0;13007:1;13002;:6;12986:401;;13107:5;;:42;;;-1:-1:-1;;;13107:42:0;;-1:-1:-1;;;;;13107:42:0;;;;;;;;;;;;;;;:5;;;;;:33;;:42;;;;;;;;;;;;;;:5;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;13107:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13107:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13107:42:0;-1:-1:-1;;;;;13070:11:0;;;;;;;:5;13107:42;13070:11;;;;;;;:34;;;:31;;:34;;;;;;:79;;;;13214:5;;:42;;-1:-1:-1;;;13214:42:0;;;;;;;;;;;;;;;;;:5;;;:33;;:42;;;;;;;;;;:5;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;13214:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13214:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13214:42:0;-1:-1:-1;;;;;13177:11:0;;;;;;;:5;13214:42;13177:11;;;;;;;:34;;;:31;;:34;;;;;;:79;;;;13321:5;;:42;;-1:-1:-1;;;13321:42:0;;;;;;;;;;;;;;;;;:5;;;:33;;:42;;;;;;;;;;:5;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;13321:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13321:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13321:42:0;-1:-1:-1;;;;;13284:11:0;;;;;;:5;13321:42;13284:11;;;;;;;:34;;;:31;;:34;;;;;:79;13010:3;;12986:401;;;-1:-1:-1;13416:50:0;;;13450:15;13416:50;;;;13444:3;;-1:-1:-1;;;;;13416:50:0;;;-1:-1:-1;;;;;;;;;;;13416:50:0;;;;;;;;-1:-1:-1;;12102:3:0;;;;;-1:-1:-1;12075:1403:0;;-1:-1:-1;12075:1403:0;;-1:-1:-1;13493:14:0;;;;;;;3326:1;;11832:1683;:::o;13879:472::-;3294:6;;13963:16;;-1:-1:-1;;;;;3294:6:0;3280:10;:20;3272:43;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;;;;13997:6;13993:317;14011:14;:21;14007:25;;13993:317;;;14077:19;-1:-1:-1;;;;;14056:40:0;:14;14071:1;14056:17;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14056:17:0;:40;14053:246;;;14137:14;14152:21;;-1:-1:-1;;14152:23:0;;;14137:39;;;;;;;;;;;;;;;;14117:14;:17;;-1:-1:-1;;;;;14137:39:0;;;;14132:1;;14117:17;;;;;;;;;;;;;;;:59;;-1:-1:-1;;;;;;14117:59:0;-1:-1:-1;;;;;14117:59:0;;;;;;;;;;14202:14;14217:21;;-1:-1:-1;;14217:23:0;;;14202:39;;;;;;;;;;;;;;;14195:46;;-1:-1:-1;;;;;;14195:46:0;;;14260:14;:23;;;;;-1:-1:-1;;14260:23:0;;;:::i;:::-;;14053:246;14034:3;;13993:317;;1425:45;;;;;;;;;;;;;:::o;32123:140::-;-1:-1:-1;;;;;32227:12:0;;;;;;:5;:12;;;;;;;;;:28;;32220:35;;;;;;;;;;;;;;;;;32191:16;;32220:35;;;32227:28;32220:35;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32220:35:0;;;;;;;;;;;;;;;;;;;;;;32123:140;;;:::o;31264:111::-;3294:6;;-1:-1:-1;;;;;3294:6:0;3280:10;:20;3272:43;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;-1:-1:-1;;;3272:43:0;;;;;;;;;;;;;;;31339:28;31358:8;31339:18;:28::i;:::-;31264:111;:::o;25825:3433::-;25901:21;25933:20;25964;25995:11;26022:6;26032:1;26022:11;26019:2106;;;-1:-1:-1;;;;;;26075:12:0;;;26066:40;26075:12;;;:5;:12;;;;;;;;:30;;;26066:40;;:8;:40;;;;;;;;;26130:20;;;;;;;;;26066:40;26130:23;;26066:40;;-1:-1:-1;26019:2106:0;;;26183:6;26193:1;26183:11;26180:1945;;;-1:-1:-1;;;;;;26235:12:0;;;26226:40;26235:12;;;:5;:12;;;;;;;;:30;;;;;26226:40;;:8;:40;;;;;;;;;26306:19;;;;;;;;;:37;;;;26297:47;;;;;;;;;;;26368:20;;;;;;;;;;26226:40;26368:23;;26297:47;;-1:-1:-1;26226:40:0;;-1:-1:-1;26180:1945:0;;;26421:6;26431:1;26421:11;26418:1707;;;-1:-1:-1;;;;;;;;26473:12:0;;;26464:40;26473:12;;;:5;:12;;;;;;;;:30;;;;;26464:40;;:8;:40;;;;;;;;;26543:19;;;;;;;;;:37;;;26534:47;;;;;;;;;;;26621:19;;;;;;;;;:37;;;;26612:47;;;;;;;;;;;;26683:20;;;;;;;;;;26464:40;26683:23;;26612:47;;-1:-1:-1;26418:1707:0;;;26736:6;26746:1;26736:11;26733:1392;;;-1:-1:-1;;;;;;;;;26788:12:0;;;26779:40;26788:12;;;:5;:12;;;;;;;;:30;;;;;26779:40;;:8;:40;;;;;;;;;26858:19;;;;;;;;:37;;;26849:47;;;;;;;;;;;26935:19;;;;;;;;;:37;;;26926:47;;;;;;;;;;;27013:19;;;;;;;;;:37;;;;27004:47;;;;;;;;;;;;27075:20;;;;;;;;;;26779:40;27075:23;;27004:47;;26849;26733:1392;;;27128:6;27138:1;27128:11;27125:1000;;;-1:-1:-1;;;;;;;;27180:12:0;;;27171:40;27180:12;;;:5;:12;;;;;;;;:30;;;;;27171:40;;:8;:40;;;;;;;;;27250:19;;;;;;;;:37;;;27241:47;;;;;;;;;;;27327:19;;;;;;;;:37;;;27318:47;;;;;;;;;;;27404:19;;;;;;;;;:37;;;27395:47;;;;;;;;;;;27482:19;;;;;;;;;:37;;;;27473:47;;;;;;;;;;;;27544:20;;;;;;;;;;27171:40;27544:23;;27473:47;;-1:-1:-1;27125:1000:0;;;27597:6;27607:1;27597:11;27594:531;;;-1:-1:-1;;;;;;;;;27649:12:0;;;27640:40;27649:12;;;:5;:12;;;;;;;;:30;;;;;27640:40;;:8;:40;;;;;;;;;27719:19;;;;;;;;:37;;;27710:47;;;;;;;;;;;27796:19;;;;;;;;:37;;;27787:47;;;;;;;;;;;27873:19;;;;;;;;:37;;;27864:47;;;;;;;;;;;27950:19;;;;;;;;;:37;;;27941:47;;;;;;;;;;;28028:19;;;;;;;;;:37;;;;28019:47;;;;;;;;;;;;28090:20;;;;;;;;;;27640:40;28090:23;;28019:47;;27864;27594:531;-1:-1:-1;;;;;28141:20:0;;;;;;:5;:20;;;;;:28;;;28137:61;;28196:1;28187:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;28187:11:0;-1:-1:-1;;;;;28187:11:0;;-1:-1:-1;28137:61:0;28211:9;28252:10;;;;;:26;;;28276:2;28266:6;:12;;28252:26;28249:988;;;28298:6;28294:262;28312:14;:21;28308:25;;28294:262;;;28375:14;28390:1;28375:17;;;;;;;;;;;;;;;;;;;;28425:14;:21;28404:19;;;:11;:19;;;;;;;;-1:-1:-1;;;;;28375:17:0;;;;28359:89;;28425:21;;28404:43;;;;;28359:89;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28359:89:0;28513:10;-1:-1:-1;;;;;28472:68:0;28494:14;28509:1;28494:17;;;;;;;;;;;;;;;;;;;28472:68;;;;;;28533:3;28472:68;;;;;;;28538:1;28472:68;;;;;-1:-1:-1;;;;;28494:17:0;;;;-1:-1:-1;;;;;;;;;;;28472:68:0;;;;;;;;;28335:3;;28294:262;;;-1:-1:-1;28581:4:0;28573:21;:25;28570:108;;28642:1;28633:11;;;;:8;:11;;-1:-1:-1;;;;;;;;;;;28633:11:0;;28617:61;-1:-1:-1;;;;;28633:11:0;;;;28664:4;28656:21;28617:61;;;;;28656:21;;28617:61;28633:11;28617:61;28656:21;28633:11;28617:61;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28617:61:0;28570:108;28249:988;;;-1:-1:-1;;;;;28732:20:0;;;;;;:5;:20;;;;;;;;:48;;;:40;;:48;;;;;;28784:3;-1:-1:-1;28729:309:0;;28850:19;;;;:11;:19;;;;;;;28813:57;;-1:-1:-1;;;;;28813:36:0;;;:57;;;;;28850:19;28813:57;;28850:19;28813:57;28850:19;28813:36;:57;;;;;;;28806:64;;28893:4;28889:130;;;28931:64;;;;;;28988:3;28931:64;;;;28993:1;28931:64;;;;;;28968:10;;-1:-1:-1;;;;;28931:64:0;;;-1:-1:-1;;;;;;;;;;;28931:64:0;;;;;;;;28889:130;29056:4;29052:174;;29084:65;;;;;;29142:3;29084:65;;;;29147:1;29084:65;;;;;;29122:10;;-1:-1:-1;;;;;29084:65:0;;;;;;;;;;;;29168:41;29187:6;29195:13;29168:18;:41::i;:::-;25825:3433;;;;;;;:::o;16190:612::-;16335:17;;;16245:4;16326:27;;;:8;:27;;;;;;;;;-1:-1:-1;;;;;16326:27:0;16320:34;;:5;:34;;;;;:50;;;:57;16245:4;;870:1;16402:41;;16399:365;;16468:17;:19;;;;;;;;;-1:-1:-1;16399:365:0;;;16565:15;16584:1;16565:20;16561:203;;;16616:17;;;16648:19;;;;;;16616:17;-1:-1:-1;16561:203:0;;;16735:17;;16721:31;;16561:203;-1:-1:-1;16783:11:0;-1:-1:-1;16190:612:0;;:::o;22337:3480::-;22413:21;22445:20;22476;22507:11;22534:6;22544:1;22534:11;22531:2106;;;-1:-1:-1;;;;;;22587:12:0;;;22578:40;22587:12;;;:5;:12;;;;;;;;:30;;;22578:40;;:8;:40;;;;;;;;;22642:20;;;;;;;;;22578:40;22642:23;;22578:40;;-1:-1:-1;22531:2106:0;;;22695:6;22705:1;22695:11;22692:1945;;;-1:-1:-1;;;;;;22747:12:0;;;22738:40;22747:12;;;:5;:12;;;;;;;;:30;;;;;22738:40;;:8;:40;;;;;;;;;22818:19;;;;;;;;;:37;;;;22809:47;;;;;;;;;;;22880:20;;;;;;;;;;22738:40;22880:23;;22809:47;;-1:-1:-1;22738:40:0;;-1:-1:-1;22692:1945:0;;;22933:6;22943:1;22933:11;22930:1707;;;-1:-1:-1;;;;;;;;22985:12:0;;;22976:40;22985:12;;;:5;:12;;;;;;;;:30;;;;;22976:40;;:8;:40;;;;;;;;;23055:19;;;;;;;;;:37;;;23046:47;;;;;;;;;;;23133:19;;;;;;;;;:37;;;;23124:47;;;;;;;;;;;;23195:20;;;;;;;;;;22976:40;23195:23;;23124:47;;-1:-1:-1;22930:1707:0;;;23248:6;23258:1;23248:11;23245:1392;;;-1:-1:-1;;;;;;;;;23300:12:0;;;23291:40;23300:12;;;:5;:12;;;;;;;;:30;;;;;23291:40;;:8;:40;;;;;;;;;23370:19;;;;;;;;:37;;;23361:47;;;;;;;;;;;23447:19;;;;;;;;;:37;;;23438:47;;;;;;;;;;;23525:19;;;;;;;;;:37;;;;23516:47;;;;;;;;;;;;23587:20;;;;;;;;;;23291:40;23587:23;;23516:47;;23361;23245:1392;;;23640:6;23650:1;23640:11;23637:1000;;;-1:-1:-1;;;;;;;;23692:12:0;;;23683:40;23692:12;;;:5;:12;;;;;;;;:30;;;;;23683:40;;:8;:40;;;;;;;;;23762:19;;;;;;;;:37;;;23753:47;;;;;;;;;;;23839:19;;;;;;;;:37;;;23830:47;;;;;;;;;;;23916:19;;;;;;;;;:37;;;23907:47;;;;;;;;;;;23994:19;;;;;;;;;:37;;;;23985:47;;;;;;;;;;;;24056:20;;;;;;;;;;23683:40;24056:23;;23985:47;;-1:-1:-1;23637:1000:0;;;24109:6;24119:1;24109:11;24106:531;;;-1:-1:-1;;;;;;;;;24161:12:0;;;24152:40;24161:12;;;:5;:12;;;;;;;;:30;;;;;24152:40;;:8;:40;;;;;;;;;24231:19;;;;;;;;:37;;;24222:47;;;;;;;;;;;24308:19;;;;;;;;:37;;;24299:47;;;;;;;;;;;24385:19;;;;;;;;:37;;;24376:47;;;;;;;;;;;24462:19;;;;;;;;;:37;;;24453:47;;;;;;;;;;;24540:19;;;;;;;;;:37;;;;24531:47;;;;;;;;;;;;24602:20;;;;;;;;;;24152:40;24602:23;;24531:47;;24376;24106:531;-1:-1:-1;;;;;24653:20:0;;;;;;:5;:20;;;;;:28;;;24649:61;;24708:1;24699:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;24699:11:0;-1:-1:-1;;;;;24699:11:0;;-1:-1:-1;24649:61:0;24723:9;24764:10;;;;;:26;;;24788:2;24778:6;:12;;24764:26;24761:1035;;;24810:6;24806:262;24824:14;:21;24820:25;;24806:262;;;24887:14;24902:1;24887:17;;;;;;;;;;;;;;;;;;;;24937:14;:21;24916:19;;;:11;:19;;;;;;;;-1:-1:-1;;;;;24887:17:0;;;;24871:89;;24937:21;;24916:43;;;;;24871:89;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24871:89:0;25025:10;-1:-1:-1;;;;;24984:68:0;25006:14;25021:1;25006:17;;;;;;;;;;;;;;;;;;;24984:68;;;;;;25045:3;24984:68;;;;;;;25006:17;24984:68;;;;;-1:-1:-1;;;;;25006:17:0;;;;-1:-1:-1;;;;;;;;;;;24984:68:0;;;;;;;;;24847:3;;24806:262;;24761:1035;-1:-1:-1;;;;;25244:20:0;;;;;;:5;:20;;;;;;;;:48;;;:40;;:48;;;;;;25296:3;-1:-1:-1;25244:55:0;;;:100;;-1:-1:-1;;;;;;25303:20:0;;;;;;:5;:20;;;;;:36;;;25343:1;-1:-1:-1;25303:41:0;25244:100;25241:354;;;25407:19;;;;:11;:19;;;;;;;25370:57;;-1:-1:-1;;;;;25370:36:0;;;:57;;;;;25407:19;25370:57;;25407:19;25370:57;25407:19;25370:36;:57;;;;;;;25363:64;;25450:4;25446:130;;;25488:64;;;;;;25545:3;25488:64;;;;25550:1;25488:64;;;;;;25525:10;;-1:-1:-1;;;;;25488:64:0;;;-1:-1:-1;;;;;;;;;;;25488:64:0;;;;;;;;25446:130;25613:4;25609:174;;25641:65;;;;;;25699:3;25641:65;;;;25704:1;25641:65;;;;;;25679:10;;-1:-1:-1;;;;;25641:65:0;;;;;;;;;;;;25725:41;25744:6;25752:13;25725:18;:41::i;29266:1843::-;29356:6;29342:11;29392:28;29406:5;29356:6;29392:13;:28::i;:::-;29373:47;-1:-1:-1;;;;;;29437:22:0;;29433:55;;-1:-1:-1;29483:1:0;29474:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;29474:11:0;-1:-1:-1;;;;;29474:11:0;29433:55;29504:12;29519:23;;;:15;:23;;;;;;;29604:1;29590:1379;29612:7;29607:1;:12;29590:1379;;29652:23;29666:5;29673:1;29652:13;:23::i;:::-;29641:34;;29754:3;29706:45;29734:8;29744:6;29706:27;:45::i;:::-;:51;29702:294;;;29850:60;;;;;;29903:3;29850:60;;;;29908:1;29850:60;;;;;;29794:4;29817:9;;;;29794:4;-1:-1:-1;29883:10:0;;-1:-1:-1;;;;;29850:60:0;;;;;;;;;;;;29929:8;;29702:294;29989:5;29973:21;;-1:-1:-1;;;;;30028:22:0;;30024:55;;30074:1;30065:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;30065:11:0;-1:-1:-1;;;;;30065:11:0;;-1:-1:-1;30024:55:0;-1:-1:-1;;;;;30098:15:0;;30118:1;30098:15;;;:5;:15;;;;;:18;;;:21;;;;:49;;-1:-1:-1;;;;;;30123:15:0;;;;;;:5;:15;;;;;:18;;;30145:2;-1:-1:-1;30123:24:0;30098:49;30095:852;;;30185:9;30281:23;;;:15;:23;;;;;;;;;30259:13;:21;;;;;;30213:1;30198:11;;;30197:17;;30185:9;30281:23;;30259:45;;;;;30251:54;;;-1:-1:-1;30346:6:0;30342:277;30360:14;:21;30356:25;;30342:277;;;30431:14;30446:1;30431:17;;;;;;;;;;;;;;;;;;30472:14;:21;-1:-1:-1;;;;;30431:17:0;;;;30415:80;;30460:10;30472:21;30460:34;;;;;30415:80;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30415:80:0;30568:10;-1:-1:-1;;;;;30527:68:0;30549:14;30564:1;30549:17;;;;;;;;;;;;;;;;;;;30527:68;;;;;;30588:3;30527:68;;;;;;;30593:1;30527:68;;;;;-1:-1:-1;;;;;30549:17:0;;;;-1:-1:-1;;;;;;;;;;;30527:68:0;;;;;;;;;30383:3;;30342:277;;;;30641:5;;;;30095:852;30783:23;;;;:15;:23;;;;;;;;;30759:13;:21;;;;;;;-1:-1:-1;;;;;30726:31:0;;;:82;;30783:23;30759:47;;;;;30726:82;;;;;;;;;;;;;;;;;;;;;;;30722:210;;;30853:59;;;;;;30905:3;30853:59;;;;30910:1;30853:59;;;;;;30885:10;;-1:-1:-1;;;;;30853:59:0;;;-1:-1:-1;;;;;;;;;;;30853:59:0;;;;;;;;30722:210;29621:3;;29590:1379;;;-1:-1:-1;30994:4:0;30986:21;:25;30983:108;;31055:1;31046:11;;;;:8;:11;;-1:-1:-1;;;;;;;;;;;31046:11:0;;31030:61;-1:-1:-1;;;;;31046:11:0;;;;31077:4;31069:21;31030:61;;;;;31069:21;;31030:61;31046:11;31030:61;31069:21;31046:11;31030:61;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;30983:108:0;29266:1843;;;;;;:::o;31482:227::-;-1:-1:-1;;;;;31556:22:0;;31548:71;;;;-1:-1:-1;;;31548:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31656:6;;;31635:38;;-1:-1:-1;;;;;31635:38:0;;;;31656:6;;;31635:38;;;31684:6;:17;;-1:-1:-1;;;;;;31684:17:0;-1:-1:-1;;;;;31684:17:0;;;;;;;;;;31482:227::o;84:33303::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;84:33303:0;-1:-1:-1;;;;;84:33303:0;;;;;;;;;;;-1:-1:-1;84:33303:0;;;;;;;-1:-1:-1;84:33303:0;;;-1:-1:-1;84:33303:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;84:33303:0;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://caaa60e840a11220f3959e65ee9c3eab3dc6677d89b297770b5bfbfafb9e187c

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.