ETH Price: $3,221.42 (-2.71%)

Contract

0xA79CcEDaF7e9d6257ce22E1B5eFb7995775AfA75
 

Overview

ETH Balance

0.007111727847116135 ETH

Eth Value

$22.91 (@ $3,221.42/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Wd Earn125276632021-05-29 6:35:591263 days ago1622270159IN
0xA79CcEDa...5775AfA75
0 ETH0.0015855821
Wd Earn125276062021-05-29 6:20:081263 days ago1622269208IN
0xA79CcEDa...5775AfA75
0 ETH0.0015855821
Wd Earn125275712021-05-29 6:12:061263 days ago1622268726IN
0xA79CcEDa...5775AfA75
0 ETH0.0015855821
Wd Earn125275512021-05-29 6:09:051263 days ago1622268545IN
0xA79CcEDa...5775AfA75
0 ETH0.0015855821
Wd Earn125208442021-05-28 5:06:161264 days ago1622178376IN
0xA79CcEDa...5775AfA75
0 ETH0.0017365923
Wd Earn124890402021-05-23 6:41:121269 days ago1621752072IN
0xA79CcEDa...5775AfA75
0 ETH0.0022726730.1
Wd Earn116854412021-01-19 11:22:471393 days ago1611055367IN
0xA79CcEDa...5775AfA75
0 ETH0.0059459379
Wd Earn115082512020-12-23 6:44:461420 days ago1608705886IN
0xA79CcEDa...5775AfA75
0 ETH0.0047364663
Wd Earn115082372020-12-23 6:41:331420 days ago1608705693IN
0xA79CcEDa...5775AfA75
0 ETH0.0063904785
Wd Earn114447002020-12-13 12:31:121430 days ago1607862672IN
0xA79CcEDa...5775AfA75
0 ETH0.0018816225
Wd Earn114441072020-12-13 10:27:551430 days ago1607855275IN
0xA79CcEDa...5775AfA75
0 ETH0.0011289715.00000072
Wd Earn113955402020-12-05 23:17:581438 days ago1607210278IN
0xA79CcEDa...5775AfA75
0 ETH0.001736723.1
Wd Earn113955402020-12-05 23:17:581438 days ago1607210278IN
0xA79CcEDa...5775AfA75
0 ETH0.0021050928
Wd Earn113955402020-12-05 23:17:581438 days ago1607210278IN
0xA79CcEDa...5775AfA75
0 ETH0.0014284519
Wd Earn112611222020-11-15 7:46:001458 days ago1605426360IN
0xA79CcEDa...5775AfA75
0 ETH0.0011671315.50704785
Wd Earn112598212020-11-15 2:59:251458 days ago1605409165IN
0xA79CcEDa...5775AfA75
0 ETH0.0014300319
Wd Earn112323352020-11-10 21:56:301463 days ago1605045390IN
0xA79CcEDa...5775AfA75
0 ETH0.0022579530
Wd Earn112323242020-11-10 21:54:371463 days ago1605045277IN
0xA79CcEDa...5775AfA75
0 ETH0.0014375619.1
Wd Earn112293712020-11-10 10:52:141463 days ago1605005534IN
0xA79CcEDa...5775AfA75
0 ETH0.0031611342
Wd Earn112271362020-11-10 2:30:501463 days ago1604975450IN
0xA79CcEDa...5775AfA75
0 ETH0.0037632550
Wd Earn112271352020-11-10 2:30:471463 days ago1604975447IN
0xA79CcEDa...5775AfA75
0 ETH0.0019568926
Wd Earn112271252020-11-10 2:29:231463 days ago1604975363IN
0xA79CcEDa...5775AfA75
0 ETH0.0019568926.00000123
Wd Earn112163892020-11-08 11:11:561465 days ago1604833916IN
0xA79CcEDa...5775AfA75
0 ETH0.0014300319
Wd Earn111959362020-11-05 7:51:431468 days ago1604562703IN
0xA79CcEDa...5775AfA75
0 ETH0.0015880921.1
Wd Earn111957522020-11-05 7:12:581468 days ago1604560378IN
0xA79CcEDa...5775AfA75
0 ETH0.0018043624
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
111753442020-11-02 3:58:151471 days ago1604289495
0xA79CcEDa...5775AfA75
0.04 ETH
111742022020-11-01 23:32:231472 days ago1604273543
0xA79CcEDa...5775AfA75
0.045 ETH
111733102020-11-01 20:20:331472 days ago1604262033
0xA79CcEDa...5775AfA75
0.019161 ETH
111732962020-11-01 20:17:421472 days ago1604261862
0xA79CcEDa...5775AfA75
0.01801 ETH
111707582020-11-01 10:55:431472 days ago1604228143
0xA79CcEDa...5775AfA75
0.126 ETH
111707352020-11-01 10:50:051472 days ago1604227805
0xA79CcEDa...5775AfA75
0.117 ETH
111702622020-11-01 9:07:551472 days ago1604221675
0xA79CcEDa...5775AfA75
0.005 ETH
111702532020-11-01 9:06:031472 days ago1604221563
0xA79CcEDa...5775AfA75
0.044 ETH
111702492020-11-01 9:05:301472 days ago1604221530
0xA79CcEDa...5775AfA75
0.07109408 ETH
111702472020-11-01 9:04:461472 days ago1604221486
0xA79CcEDa...5775AfA75
0.0702328 ETH
111702402020-11-01 9:04:061472 days ago1604221446
0xA79CcEDa...5775AfA75
0.18 ETH
111698712020-11-01 7:44:531472 days ago1604216693
0xA79CcEDa...5775AfA75
0.036 ETH
111697982020-11-01 7:32:041472 days ago1604215924
0xA79CcEDa...5775AfA75
0.125 ETH
111697342020-11-01 7:14:231472 days ago1604214863
0xA79CcEDa...5775AfA75
0.286 ETH
111690842020-11-01 4:38:511472 days ago1604205531
0xA79CcEDa...5775AfA75
0.21134 ETH
111690712020-11-01 4:36:131472 days ago1604205373
0xA79CcEDa...5775AfA75
0.027 ETH
111685762020-11-01 2:48:271472 days ago1604198907
0xA79CcEDa...5775AfA75
0.0378 ETH
111684472020-11-01 2:19:411473 days ago1604197181
0xA79CcEDa...5775AfA75
0.04 ETH
111679832020-11-01 0:38:481473 days ago1604191128
0xA79CcEDa...5775AfA75
0.12 ETH
111668732020-10-31 20:41:161473 days ago1604176876
0xA79CcEDa...5775AfA75
0.0297 ETH
111668272020-10-31 20:30:411473 days ago1604176241
0xA79CcEDa...5775AfA75
0.005 ETH
111668272020-10-31 20:30:411473 days ago1604176241
0xA79CcEDa...5775AfA75
0.006 ETH
111668152020-10-31 20:27:271473 days ago1604176047
0xA79CcEDa...5775AfA75
0.208 ETH
111668122020-10-31 20:27:021473 days ago1604176022
0xA79CcEDa...5775AfA75
0.0052 ETH
111668092020-10-31 20:26:031473 days ago1604175963
0xA79CcEDa...5775AfA75
0.026 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
INSSMiner

Compiler Version
v0.6.9+commit.3e3065ac

Optimization Enabled:
No with 200 runs

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

pragma solidity =0.6.9;


/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the `nonReentrant` modifier
 * available, which can be aplied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 */
contract ReentrancyGuard {
    /// @dev counter to allow mutex lock with only one SSTORE operation
    uint256 private _guardCounter;

    constructor () internal {
        // The counter starts at one to prevent changing it from zero to a non-zero
        // value, which is a more expensive operation.
        _guardCounter = 1;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _guardCounter += 1;
        uint256 localCounter = _guardCounter;
        _;
        require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call");
    }
}

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

        return c;
    }

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

        return c;
    }

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

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

        return c;
    }

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

        return c;
    }

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

/**
###########################################################################################################################
#    ###                                                                                                               
#     #    #    #  #####  ######  #####    ####   #####  ######  #       #         ##    #####    ####         #    ####  
#     #    ##   #    #    #       #    #  #         #    #       #       #        #  #   #    #  #             #   #    # 
#     #    # #  #    #    #####   #    #   ####     #    #####   #       #       #    #  #    #   ####         #   #    # 
#     #    #  # #    #    #       #####        #    #    #       #       #       ######  #####        #  ###   #   #    # 
#     #    #   ##    #    #       #   #   #    #    #    #       #       #       #    #  #   #   #    #  ###   #   #    # 
#    ###   #    #    #    ######  #    #   ####     #    ######  ######  ######  #    #  #    #   ####   ###   #    ####  
############################################################################################################################
**/
interface IINSS {
  function mint(address user, uint amount) external;
  function totalSupply() external view returns (uint256);
}

// SPDX-License-Identifier: UNLICENSED
contract INSSMiner is ReentrancyGuard {

  using SafeMath for uint256;

  uint constant DAY = 24 * 60 * 60;
  uint constant ONE = 10 ** 18;
  uint constant PERDIFF = 100000; 
  uint constant PERCENT_250 = 250;
  uint constant PERCENT_100 = 100;
  uint constant LUCKY_1000_AMOUNT = 1000 ether;
  uint constant LUCKY_100_AMOUNT  = 100 ether;

  address private immutable feeTo;

  address private immutable referFrom;

  IINSS private inss;


  // a slot for save gas
  uint96 private topPool;    
  uint80 private luckyPool;   // Up to 1.2 million eth
  uint80 private feePool;    

  struct Order {
    uint104 value;
    uint112 withdrawed;
    uint8 level;
    uint32 ts;
  }

  struct Earn {
    uint32  earnTs;
    uint112 luckyBonus;
    uint112 superBonus;
    

    uint96 referBonus;
    uint80 matchBonus;
    uint80 topBonus;
  }

  struct Lucky {
    uint112 inValue;
    uint112 luckyValue;
    uint32 ts;
    address user;
  }
  
  mapping(address => Order) orders;
  mapping(address => Earn) earns;

  mapping(address => address) refers;
  mapping(address => uint) cycles;    

  Lucky lucky;

  // total 
  uint totalDeposit;   // 

  mapping(address => uint) refereeNums;
  mapping(address => uint) partners;
  mapping(address => uint) referValues;

  mapping(uint => mapping(address => uint)) public dayReferValues;
  mapping(uint => address[]) private topAddrs;

  event NewStaking(address indexed user, address indexed partner, uint256 amount);

  constructor (address feeto, address referfrom) public {
    feeTo = feeto;
    referFrom = referfrom;
  }

  function initINSS(address token) external {
    require(msg.sender == token && address(inss) == address(0), "inss error");
    inss = IINSS(token);
  }

  function getLucky() external view returns (uint112, uint112, uint32, address) {
    return (lucky.inValue, lucky.luckyValue, lucky.ts, lucky.user);
  }

  function getPools() external view returns (uint , uint96, uint80, uint80) {
    return (totalDeposit, topPool, luckyPool, feePool);
  }

  function referInfo() external view returns (uint, uint, uint) {
    return (refereeNums[msg.sender], referValues[msg.sender], partners[msg.sender] );
  }

  function myOrder() external view returns (uint104, uint112, uint8, uint, 
    uint32, uint112, uint112, 
    uint96, uint80, uint80, uint, uint) {
    Order memory order = orders[msg.sender];
    Earn memory earn = earns[msg.sender];

    (uint wdableEarn, uint edays,) = myEarns(msg.sender);

    return (order.value, order.withdrawed, order.level, cycles[msg.sender], 
      earn.earnTs, earn.luckyBonus, earn.superBonus, 
      earn.referBonus, earn.matchBonus, earn.topBonus, wdableEarn, edays);
  }

  function dayTopAddrs(uint day) external view returns (address[] memory) {
    return topAddrs[day];
  }

  function join(address p, uint8 level) external payable nonReentrant {
    address user = msg.sender;
    uint value = msg.value;

    require(user != referFrom, "E/refer error");
    (uint earned, ,) = myEarns(user);
    require(earned == 0, "E/need wd");
    require(orders[user].withdrawed >= (PERCENT_250 * orders[user].value / PERCENT_100) || !liveUser(user) , "E/aleady");
    require(checkValue(user, value), "E/invalid value");
    emit NewStaking(user, p, value);

    mintInss(user, value * (10 + level) / 10);

    totalDeposit += value;
    topPool   += uint96(value / 20);
    luckyPool += uint80(value * 3 / 100);
    feePool   += uint80(value * 5 / 100);

    orders[user] = Order(uint104(value), uint112(0), level, uint32(block.timestamp));
    earns[user] = Earn(uint32(block.timestamp), uint112(0), uint112(0),  uint96(0), uint80(0), uint80(0));

    address refer = refers[user];
    if(refer == address(0)) {
      refer = p;
      if(!liveUser(p)) {
        refer = referFrom;
      } else {
        refereeNums[refer] += 1;
        
        address partnerRefer = refers[refer];
        for(uint layer=2; layer<=10 && partnerRefer != referFrom; layer++) {
          partners[partnerRefer] += 1;  
          partnerRefer = refers[partnerRefer];
        }

      }
      refers[user] = refer;  
    }
    
    awardRefer(refer, 1, value);

    lucky1000(user, value);
  }

  function inssPrice() public view returns  (uint) {
    return ONE - (inss.totalSupply() / ONE * ONE / PERDIFF);
  }

  function mintInss(address user, uint value) internal {
    uint amount = inssAmount(value);
    inss.mint(user, amount);
    inss.mint(feeTo, amount / 20);
  } 

  function inssAmount(uint ethAmount) public view returns  (uint) {
    uint price = inssPrice();
    if(price == 0) {
      return 0;
    }

    uint leftEth = ethAmount; 
    uint inssTotal = 0;

    uint leftInss = ONE - (inss.totalSupply() % ONE);
    uint spendEth;

    while(leftEth > 0) {
      spendEth = leftInss * ONE / price;

      if (leftEth >= spendEth) {
        inssTotal += leftInss;
        leftEth -= spendEth;
        price -= PERDIFF;
        leftInss = ONE;
      } else {
        inssTotal += leftEth.mul(price).div(ONE);
        return inssTotal;
      }
    }
    return inssTotal;
  }


  function openDayTop() external {
    return openTopAward(block.timestamp - DAY);
  }

  function openTopAward(uint timestamp) public nonReentrant {
    require(timestamp < block.timestamp, "ts not valid");
    uint day = getDay(timestamp);
    uint nowDay = getDay(block.timestamp);
    require(nowDay > day, "day not end");
    require(topAddrs[day].length > 0, "aleady opened");

    uint length = topAddrs[day].length;
    uint topAward = topPool/10;
    uint awarded;
    address topUser;
    uint percent;

    for (uint i=0;i < length && i<8; i++) {
      topUser = topAddrs[day][i];
      if(i==0) {
        percent = 40;
      } else if (i == 1) {
        percent = 20;
      } else if (i == 2) {
        percent = 12;
      } else if (i == 3) {
        percent = 8;
      } else if (i >= 4) {
        percent = 5;
      }

      earns[topUser].topBonus += uint80(topAward * percent / PERCENT_100);
      awarded += topAward * percent / PERCENT_100;
    }

    topPool -= uint96(awarded);

    delete topAddrs[day];
  }

  function awardRefer(address refer, uint layer, uint value) internal {
    if(layer == 1) {
      earns[refer].referBonus +=  uint96(value * 7 / PERCENT_100);

      if (referFrom == refer) {
        return;
      }

      referValues[refer] += value;
      superRefer100(refer, value);
      
      uint day = getDay(block.timestamp);
      dayReferValues[day][refer] += value;
      fitTopPos(day, refer);

      if(refers[refer] == referFrom || !liveUser(refers[refer]) || refereeNums[refers[refer]] < 3) {
        awardRefer(referFrom, 2, value);
      } else {
        awardRefer(refers[refer], 2, value);
      }
    } else if (layer == 2) {
      earns[refer].referBonus += uint96(value * 3 / PERCENT_100);
    }
  }

  function liveUser(address user) internal view returns (bool) {
    Order memory order = orders[user];
    if(order.value > 0) {
      Earn memory earn = earns[user];
      uint earnedValue = userEarn(user);

      uint valueTop =  order.value * PERCENT_250 / PERCENT_100;
      if(order.withdrawed + earnedValue < valueTop) {
        uint passDays = (block.timestamp - earn.earnTs) / DAY; 

        if (order.level > 0) {
          passDays = (passDays / (order.level + 1)) * (order.level + 1);
        }

        uint interest = order.value * passDays * (10 + order.level) / 1000;
        
        if(order.withdrawed + earnedValue + interest < valueTop) {
          return true;
        }
      }
    }
  }

  function userEarn(address user) internal view returns (uint) {
    Earn memory earn = earns[user];
    return earn.referBonus + earn.matchBonus + earn.topBonus + earn.luckyBonus;
  } 

  function checkValue(address user, uint value) internal view returns (bool) {
    uint lastValue = orders[user].value;
    if(cycles[user] == 0) {
      if(value >= 0.1 ether && value <= 20 ether) {
        return true;
      }
    } else if (cycles[user] >= 5) {
      if(value >= lastValue) {
        return true;
      }
    } else {
      if(value >= lastValue && value <= (10 * (2 ** (cycles[user] + 1 ))) * 1 ether) {
        return true;
      }
    }
    return false;
  }


  // UTC+2 (8:00)     OK 
  function getDay(uint ts) internal pure returns (uint) {   
    return (ts - 21600) / DAY;   //  6 * 60 * 60    86400
  }

  function lucky1000(address user, uint value) internal {

    uint times = 1 + ((address(this).balance - value) / LUCKY_1000_AMOUNT);
    uint luckyV = times * LUCKY_1000_AMOUNT;

    if(address(this).balance >= luckyV && (address(this).balance - value) < luckyV ) {
      uint112 lv = uint112(luckyPool/2);
      earns[user].luckyBonus += lv;
      luckyPool = luckyPool / 2;
      lucky = Lucky(uint112(value), lv, uint32(block.timestamp), user);
    }
  }

  // super bonus 
  function superRefer100(address refer, uint value) internal {
    uint times = 1 + ((referValues[refer] - value) / LUCKY_100_AMOUNT);
    uint luckyV = times * LUCKY_100_AMOUNT;
    if(referValues[refer] >= luckyV && (referValues[refer] - value) < luckyV ) {
      earns[refer].superBonus += 3 ether;
    }
  }
  
  function wdFee() external {
    uint fee = feePool;
    feePool = 0;
    payable(feeTo).transfer(fee);
  }

  function wdEarn() external nonReentrant {
    address payable user = msg.sender;

    (uint earn, uint earnDays, bool over) = myEarns(user);
    uint superBonus = earns[user].superBonus;
    if(earn + superBonus == 0) {
      return;
    }

    orders[user].withdrawed += uint112(earn);

    uint32 earnTs = earns[user].earnTs + uint32(earnDays * DAY);

    earns[user] = Earn(earnTs, uint112(0), uint112(0),  uint96(0), uint80(0), uint80(0));
    
    if(over) {
      cycles[user] += 1;
    } 

    user.transfer(earn + superBonus);

    address refer = user;
    for(uint layer=1; layer<=10 && refer != referFrom; layer++) {
      refer = refers[refer];
      matchAward(refer, layer, earn);
    }
  }

  function matchAward(address refer, uint layer, uint value) internal {
    if(layer == 1) {
      earns[refer].matchBonus += uint80(value * 20 / PERCENT_100);
    } else if(refereeNums[refer] >= layer) {
      if(layer == 2) {
        earns[refer].matchBonus += uint80(value * 10 / PERCENT_100);
      } else if(layer == 3 || layer == 4 || layer == 5 ) {
        earns[refer].matchBonus += uint80(value * 7 / PERCENT_100);
      } else if (layer >= 6) {
        earns[refer].matchBonus += uint80(value * 3 / PERCENT_100);
      }
    }
  }


  // bool : over
  function myEarns(address user) internal view returns(uint, uint , bool) {
    if(user == referFrom) {
      return (earns[user].referBonus + earns[user].matchBonus, 0 , false);
    }

    Order memory order = orders[user];
    Earn memory earned = earns[user];
    uint earnedValue = userEarn(user);

    uint valueTop = order.value * PERCENT_250 / PERCENT_100;
    if(order.value > 0 && order.withdrawed < valueTop) {
      uint passDays = (block.timestamp - earned.earnTs) / DAY; 

      if (order.level > 0) {
        passDays = (passDays / (order.level + 1)) * (order.level + 1);
      }

      uint yield = order.value * passDays * (10 + order.level) / 1000;
      
      if(order.withdrawed + earnedValue + yield < valueTop) {
        return (earnedValue + yield, passDays, false);
      } else {
        return (valueTop - order.withdrawed, passDays, true);
      }
    }
  }

    function fitTopPos(uint day, address refer) internal {
        uint length = topAddrs[day].length ;
        for (uint i = 0 ; i < length ; i++) {
            if (refer == topAddrs[day][i]) {  // aleady in top8.
                swapLast(day, i, refer);
                return ;
            }
        }

        //  if top8 list has space.
        if (length < 8) {
            topAddrs[day].push(refer);
            swapLast(day, length, refer);
        } else {  // compare the last one.
            if(dayReferValues[day][refer] > dayReferValues[day][topAddrs[day][7]]) {
              topAddrs[day][7] = refer;
              swapLast(day, 7, refer);
            }
        }
    }

    function swapLast(uint  day, uint pos, address refer) internal {
        while (pos >= 1 && dayReferValues[day][refer] > dayReferValues[day][topAddrs[day][pos-1]]  ) {   // big then pre , then swap
            topAddrs[day][pos] = topAddrs[day][pos-1];   // pre move to back
            topAddrs[day][pos-1] = refer;   //  move the curr to pre
            pos -= 1;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"feeto","type":"address"},{"internalType":"address","name":"referfrom","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"partner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NewStaking","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"dayReferValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"day","type":"uint256"}],"name":"dayTopAddrs","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLucky","outputs":[{"internalType":"uint112","name":"","type":"uint112"},{"internalType":"uint112","name":"","type":"uint112"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPools","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint96","name":"","type":"uint96"},{"internalType":"uint80","name":"","type":"uint80"},{"internalType":"uint80","name":"","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"initINSS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"inssAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inssPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"join","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"myOrder","outputs":[{"internalType":"uint104","name":"","type":"uint104"},{"internalType":"uint112","name":"","type":"uint112"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"uint112","name":"","type":"uint112"},{"internalType":"uint112","name":"","type":"uint112"},{"internalType":"uint96","name":"","type":"uint96"},{"internalType":"uint80","name":"","type":"uint80"},{"internalType":"uint80","name":"","type":"uint80"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openDayTop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"openTopAward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"referInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wdEarn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wdFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c060405234801561001057600080fd5b5060405162004a7f38038062004a7f8339818101604052604081101561003557600080fd5b81019080805190602001909291908051906020019092919050505060016000819055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505060805160601c60a05160601c6149656200011a600039806116c65280611a72528061231d528061240a52806126e4528061387e528061398c5280613b5b5250806106a7528061371152506149656000f3fe6080604052600436106100dd5760003560e01c806397392cdf1161007f578063da3ef8d011610059578063da3ef8d0146104df578063e5147f6f1461052e578063ee9a9ef414610545578063f43706a814610596576100dd565b806397392cdf146103e7578063985019f714610438578063b7a347081461044f576100dd565b8063673a2a1f116100bb578063673a2a1f146101935780636b5a53831461021f57806378169c671461025857806383faec0814610293576100dd565b8063496f03d3146100e25780634cf2f4c8146100f957806363757a0d14610124575b600080fd5b3480156100ee57600080fd5b506100f761064e565b005b34801561010557600080fd5b5061010e61070f565b6040518082815260200191505060405180910390f35b34801561013057600080fd5b5061017d6004803603604081101561014757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107e2565b6040518082815260200191505060405180910390f35b34801561019f57600080fd5b506101a8610807565b60405180858152602001846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020018369ffffffffffffffffffff1669ffffffffffffffffffff1681526020018269ffffffffffffffffffff1669ffffffffffffffffffff16815260200194505050505060405180910390f35b34801561022b57600080fd5b5061023461086b565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561026457600080fd5b506102916004803603602081101561027b57600080fd5b810190808035906020019092919050505061093b565b005b34801561029f57600080fd5b506102a8610da6565b604051808d6cffffffffffffffffffffffffff166cffffffffffffffffffffffffff1681526020018c6dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018b60ff1660ff1681526020018a81526020018963ffffffff1663ffffffff168152602001886dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001876dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020018569ffffffffffffffffffff1669ffffffffffffffffffff1681526020018469ffffffffffffffffffff1669ffffffffffffffffffff1681526020018381526020018281526020019c5050505050505050505050505060405180910390f35b3480156103f357600080fd5b506104366004803603602081101561040a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061112e565b005b34801561044457600080fd5b5061044d61126d565b005b34801561045b57600080fd5b506104886004803603602081101561047257600080fd5b8101908080359060200190929190505050611817565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104cb5780820151818401526020810190506104b0565b505050509050019250505060405180910390f35b3480156104eb57600080fd5b506105186004803603602081101561050257600080fd5b81019080803590602001909291905050506118b8565b6040518082815260200191505060405180910390f35b34801561053a57600080fd5b50610543611a40565b005b6105946004803603604081101561055b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611a50565b005b3480156105a257600080fd5b506105ab612633565b60405180856dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001846dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018363ffffffff1663ffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390f35b60006002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16905060006002600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561070b573d6000803e3d6000fd5b5050565b6000620186a0670de0b6b3a764000080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078757600080fd5b505afa15801561079b573d6000803e3d6000fd5b505050506040513d60208110156107b157600080fd5b8101908080519060200190929190505050816107c957fe5b0402816107d257fe5b04670de0b6b3a764000003905090565b600d602052816000526040600020602052806000526040600020600091509150505481565b600080600080600954600160149054906101000a90046bffffffffffffffffffffffff16600260009054906101000a900469ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff16935093509350935090919293565b6000806000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925092509250909192565b600160008082825401925050819055506000805490504282106109c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7473206e6f742076616c6964000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006109d1836126c3565b905060006109de426126c3565b9050818111610a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f646179206e6f7420656e6400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600e60008481526020019081526020016000208054905011610ae1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f616c65616479206f70656e65640000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600e60008481526020019081526020016000208054905090506000600a600160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1681610b3057fe5b046bffffffffffffffffffffffff169050600080600080600090505b8581108015610b5b5750600881105b15610cb657600e60008981526020019081526020016000208181548110610b7e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506000811415610bbd5760289150610c04565b6001811415610bcf5760149150610c03565b6002811415610be157600c9150610c02565b6003811415610bf35760089150610c01565b60048110610c0057600591505b5b5b5b5b606482860281610c1057fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160168282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550606482860281610ca457fe5b04840193508080600101915050610b4c565b5082600160148282829054906101000a90046bffffffffffffffffffffffff160392506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600e60008881526020019081526020016000206000610d2491906147f6565b505050505050506000548114610da2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b5050565b600080600080600080600080600080600080610dc0614817565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050610edc614867565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff16815250509050600080611090336126dd565b5091509150836000015184602001518560400151600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486600001518760200151886040015189606001518a608001518b60a001518b8b9f509f509f509f509f509f509f509f509f509f509f509f5050505050909192939495969798999a9b565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156111b75750600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f696e7373206572726f720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001600080828254019250508190555060008054905060003390506000806000611296846126dd565b9250925092506000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1690506000818501141561132257505050505061179d565b83600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600d8282829054906101000a90046dffffffffffffffffffffffffffff160192506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055506000620151808402600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff160190506040518060c001604052808263ffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff16815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060408201518160000160126101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060608201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550608082015181600101600c6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a08201518160010160166101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055509050508215611663576001600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8573ffffffffffffffffffffffffffffffffffffffff166108fc8387019081150290604051600060405180830381858888f193505050501580156116ab573d6000803e3d6000fd5b5060008690506000600190505b600a811115801561171557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561179457600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150611787828289612c41565b80806001019150506116b8565b50505050505050505b6000548114611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b50565b6060600e60008381526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156118ac57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611862575b50505050509050919050565b6000806118c361070f565b905060008114156118d8576000915050611a3b565b600083905060008090506000670de0b6b3a7640000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561195557600080fd5b505afa158015611969573d6000803e3d6000fd5b505050506040513d602081101561197f57600080fd5b81019080805190602001909291905050508161199757fe5b06670de0b6b3a764000003905060005b6000841115611a325784670de0b6b3a76400008302816119c357fe5b0490508084106119ef5781830192508084039350620186a085039450670de0b6b3a76400009150611a2d565b611a1c670de0b6b3a7640000611a0e8787612f2d90919063ffffffff16565b612fb390919063ffffffff16565b830192508295505050505050611a3b565b6119a7565b82955050505050505b919050565b611a4e62015180420361093b565b565b60016000808282540192505081905550600080549050600033905060003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f452f7265666572206572726f720000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611b3d836126dd565b5050905060008114611bb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f452f6e656564207764000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6064600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff1660fa0281611c2e57fe5b04600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16101580611caf5750611cad83613042565b155b611d21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f452f616c6561647900000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611d2b838361343a565b611d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f452f696e76616c69642076616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fbc77f75c7aee3e428696f7c010334a24f2af57782220ce937041f2f6ddb3b09f846040518082815260200191505060405180910390a3611e1e83600a87600a0160ff16850281611e1857fe5b04613603565b8160096000828254019250508190555060148281611e3857fe5b04600160148282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060646003830281611e9357fe5b04600260008282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060646005830281611ee857fe5b046002600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506040518060800160405280836cffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff1681526020018660ff1681526020014263ffffffff16815250600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff160217905550602082015181600001600d6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550604082015181600001601b6101000a81548160ff021916908360ff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff1602179055509050506040518060c001604052804263ffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff16815250600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060408201518160000160126101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060608201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550608082015181600101600c6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a08201518160010160166101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055509050506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561259d5786905061231787613042565b612343577f0000000000000000000000000000000000000000000000000000000000000000905061251e565b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600290505b600a811115801561245957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561251b576001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915080806001019150506123fc565b50505b80600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6125a9816001856137c1565b6125b38484613ca5565b50505050600054811461262e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b505050565b600080600080600760000160009054906101000a90046dffffffffffffffffffffffffffff166007600001600e9054906101000a90046dffffffffffffffffffffffffffff166007600001601c9054906101000a900463ffffffff16600760010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000620151806154608303816126d557fe5b049050919050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561281957600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046bffffffffffffffffffffffff1601600080826bffffffffffffffffffffffff169250819150925092509250612c3a565b612821614817565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905061293d614867565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff168152505090506000612af087613f61565b90506000606460fa85600001516cffffffffffffffffffffffffff160281612b1457fe5b049050600084600001516cffffffffffffffffffffffffff16118015612b4d57508084602001516dffffffffffffffffffffffffffff16105b15612c3557600062015180846000015163ffffffff16420381612b6c57fe5b0490506000856040015160ff161115612ba257600185604001510160ff16600186604001510160ff168281612b9d57fe5b040290505b60006103e88660400151600a0160ff168388600001516cffffffffffffffffffffffffff16020281612bd057fe5b04905082818588602001516dffffffffffffffffffffffffffff1601011015612c0a57808401826000985098509850505050505050612c3a565b85602001516dffffffffffffffffffffffffffff168303826001985098509850505050505050612c3a565b505050505b9193909250565b6001821415612ce45760646014820281612c5757fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612f28565b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f27576002821415612dcd576064600a820281612d4057fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612f26565b6003821480612ddc5750600482145b80612de75750600582145b15612e865760646007820281612df957fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612f25565b60068210612f245760646003820281612e9b57fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505b5b5b5b5b505050565b600080831415612f405760009050612fad565b6000828402905082848281612f5157fe5b0414612fa8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061490f6021913960400191505060405180910390fd5b809150505b92915050565b600080821161302a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b600082848161303557fe5b0490508091505092915050565b600061304c614817565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050600081600001516cffffffffffffffffffffffffff16111561343357613184614867565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff16815250509050600061333785613f61565b90506000606460fa85600001516cffffffffffffffffffffffffff16028161335b57fe5b049050808285602001516dffffffffffffffffffffffffffff1601101561342f57600062015180846000015163ffffffff1642038161339657fe5b0490506000856040015160ff1611156133cc57600185604001510160ff16600186604001510160ff1682816133c757fe5b040290505b60006103e88660400151600a0160ff168388600001516cffffffffffffffffffffffffff160202816133fa57fe5b04905082818588602001516dffffffffffffffffffffffffffff160101101561342c5760019650505050505050613435565b50505b5050505b505b919050565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff1690506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156135275767016345785d8a0000831015801561351357506801158e460913d000008311155b156135225760019150506135fd565b6135f7565b6005600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106135845780831061357f5760019150506135fd565b6135f6565b8083101580156135e65750670de0b6b3a76400006001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540160020a600a02028311155b156135f55760019150506135fd565b5b5b60009150505b92915050565b600061360e826118b8565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1984836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156136b957600080fd5b505af11580156136cd573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f197f00000000000000000000000000000000000000000000000000000000000000006014848161373a57fe5b046040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156137a457600080fd5b505af11580156137b8573d6000803e3d6000fd5b50505050505050565b6001821415613bf957606460078202816137d757fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614156138be57613ca0565b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506139158382614168565b6000613920426126c3565b905081600d600083815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061398a818561430a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480613aa85750613aa6600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613042565b155b80613b5157506003600a6000600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15613b8757613b827f00000000000000000000000000000000000000000000000000000000000000006002846137c1565b613bf3565b613bf2600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002846137c1565b5b50613c9f565b6002821415613c9e5760646003820281613c0f57fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505b5b5b505050565b6000683635c9adc5dea0000082470381613cbb57fe5b0460010190506000683635c9adc5dea0000082029050804710158015613ce2575080834703105b15613f5b57600060028060009054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1681613d1657fe5b0469ffffffffffffffffffff16905080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160048282829054906101000a90046dffffffffffffffffffffffffffff160192506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060028060009054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1681613de657fe5b04600260006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506040518060800160405280856dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020014263ffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815250600760008201518160000160006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550602082015181600001600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550604082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060608201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050505b50505050565b6000613f6b614867565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681525050905080602001518160a0015169ffffffffffffffffffff16826080015169ffffffffffffffffffff16836060015101016bffffffffffffffffffffffff16016dffffffffffffffffffffffffffff16915050919050565b600068056bc75e2d6310000082600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403816141bd57fe5b046001019050600068056bc75e2d631000008202905080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561426257508083600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403105b15614304576729a2241af62c0000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160128282829054906101000a90046dffffffffffffffffffffffffffff160192506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505b50505050565b6000600e600084815260200190815260200160002080549050905060008090505b818110156143ce57600e6000858152602001908152602001600020818154811061435157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156143c1576143ba8482856145c9565b50506145c5565b808060010191505061432b565b50600881101561445c57600e6000848152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506144578382846145c9565b6145c3565b600d60008481526020019081526020016000206000600e600086815260200190815260200160002060078154811061449057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156145c25781600e600085815260200190815260200160002060078154811061456d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506145c1836007846145c9565b5b5b505b5050565b5b600182101580156146c55750600d60008481526020019081526020016000206000600e6000868152602001908152602001600020600185038154811061460c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d600085815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156147f157600e600084815260200190815260200160002060018303815481106146eb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e6000858152602001908152602001600020838154811061473457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e6000858152602001908152602001600020600184038154811061479e57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820391506145ca565b505050565b508054600082559060005260206000209081019061481491906148e9565b50565b604051806080016040528060006cffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff168152602001600060ff168152602001600063ffffffff1681525090565b6040518060c00160405280600063ffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff1681525090565b61490b91905b808211156149075760008160009055506001016148ef565b5090565b9056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122040a1c13ce8c373343e433935689c7243fdb952688db7f7f8a1eeb3b293a57d2c64736f6c63430006090033000000000000000000000000bb46bb15f1f710c9c559cddf0325ccd16c1f970d000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d725

Deployed Bytecode

0x6080604052600436106100dd5760003560e01c806397392cdf1161007f578063da3ef8d011610059578063da3ef8d0146104df578063e5147f6f1461052e578063ee9a9ef414610545578063f43706a814610596576100dd565b806397392cdf146103e7578063985019f714610438578063b7a347081461044f576100dd565b8063673a2a1f116100bb578063673a2a1f146101935780636b5a53831461021f57806378169c671461025857806383faec0814610293576100dd565b8063496f03d3146100e25780634cf2f4c8146100f957806363757a0d14610124575b600080fd5b3480156100ee57600080fd5b506100f761064e565b005b34801561010557600080fd5b5061010e61070f565b6040518082815260200191505060405180910390f35b34801561013057600080fd5b5061017d6004803603604081101561014757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107e2565b6040518082815260200191505060405180910390f35b34801561019f57600080fd5b506101a8610807565b60405180858152602001846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020018369ffffffffffffffffffff1669ffffffffffffffffffff1681526020018269ffffffffffffffffffff1669ffffffffffffffffffff16815260200194505050505060405180910390f35b34801561022b57600080fd5b5061023461086b565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561026457600080fd5b506102916004803603602081101561027b57600080fd5b810190808035906020019092919050505061093b565b005b34801561029f57600080fd5b506102a8610da6565b604051808d6cffffffffffffffffffffffffff166cffffffffffffffffffffffffff1681526020018c6dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018b60ff1660ff1681526020018a81526020018963ffffffff1663ffffffff168152602001886dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001876dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020018569ffffffffffffffffffff1669ffffffffffffffffffff1681526020018469ffffffffffffffffffff1669ffffffffffffffffffff1681526020018381526020018281526020019c5050505050505050505050505060405180910390f35b3480156103f357600080fd5b506104366004803603602081101561040a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061112e565b005b34801561044457600080fd5b5061044d61126d565b005b34801561045b57600080fd5b506104886004803603602081101561047257600080fd5b8101908080359060200190929190505050611817565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104cb5780820151818401526020810190506104b0565b505050509050019250505060405180910390f35b3480156104eb57600080fd5b506105186004803603602081101561050257600080fd5b81019080803590602001909291905050506118b8565b6040518082815260200191505060405180910390f35b34801561053a57600080fd5b50610543611a40565b005b6105946004803603604081101561055b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611a50565b005b3480156105a257600080fd5b506105ab612633565b60405180856dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001846dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018363ffffffff1663ffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390f35b60006002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16905060006002600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055507f000000000000000000000000bb46bb15f1f710c9c559cddf0325ccd16c1f970d73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561070b573d6000803e3d6000fd5b5050565b6000620186a0670de0b6b3a764000080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078757600080fd5b505afa15801561079b573d6000803e3d6000fd5b505050506040513d60208110156107b157600080fd5b8101908080519060200190929190505050816107c957fe5b0402816107d257fe5b04670de0b6b3a764000003905090565b600d602052816000526040600020602052806000526040600020600091509150505481565b600080600080600954600160149054906101000a90046bffffffffffffffffffffffff16600260009054906101000a900469ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff16935093509350935090919293565b6000806000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925092509250909192565b600160008082825401925050819055506000805490504282106109c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7473206e6f742076616c6964000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006109d1836126c3565b905060006109de426126c3565b9050818111610a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f646179206e6f7420656e6400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600e60008481526020019081526020016000208054905011610ae1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f616c65616479206f70656e65640000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600e60008481526020019081526020016000208054905090506000600a600160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1681610b3057fe5b046bffffffffffffffffffffffff169050600080600080600090505b8581108015610b5b5750600881105b15610cb657600e60008981526020019081526020016000208181548110610b7e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506000811415610bbd5760289150610c04565b6001811415610bcf5760149150610c03565b6002811415610be157600c9150610c02565b6003811415610bf35760089150610c01565b60048110610c0057600591505b5b5b5b5b606482860281610c1057fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160168282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550606482860281610ca457fe5b04840193508080600101915050610b4c565b5082600160148282829054906101000a90046bffffffffffffffffffffffff160392506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600e60008881526020019081526020016000206000610d2491906147f6565b505050505050506000548114610da2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b5050565b600080600080600080600080600080600080610dc0614817565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050610edc614867565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff16815250509050600080611090336126dd565b5091509150836000015184602001518560400151600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486600001518760200151886040015189606001518a608001518b60a001518b8b9f509f509f509f509f509f509f509f509f509f509f509f5050505050909192939495969798999a9b565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156111b75750600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f696e7373206572726f720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001600080828254019250508190555060008054905060003390506000806000611296846126dd565b9250925092506000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1690506000818501141561132257505050505061179d565b83600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600d8282829054906101000a90046dffffffffffffffffffffffffffff160192506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055506000620151808402600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff160190506040518060c001604052808263ffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff16815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060408201518160000160126101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060608201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550608082015181600101600c6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a08201518160010160166101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055509050508215611663576001600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8573ffffffffffffffffffffffffffffffffffffffff166108fc8387019081150290604051600060405180830381858888f193505050501580156116ab573d6000803e3d6000fd5b5060008690506000600190505b600a811115801561171557507f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d72573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561179457600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150611787828289612c41565b80806001019150506116b8565b50505050505050505b6000548114611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b50565b6060600e60008381526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156118ac57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611862575b50505050509050919050565b6000806118c361070f565b905060008114156118d8576000915050611a3b565b600083905060008090506000670de0b6b3a7640000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561195557600080fd5b505afa158015611969573d6000803e3d6000fd5b505050506040513d602081101561197f57600080fd5b81019080805190602001909291905050508161199757fe5b06670de0b6b3a764000003905060005b6000841115611a325784670de0b6b3a76400008302816119c357fe5b0490508084106119ef5781830192508084039350620186a085039450670de0b6b3a76400009150611a2d565b611a1c670de0b6b3a7640000611a0e8787612f2d90919063ffffffff16565b612fb390919063ffffffff16565b830192508295505050505050611a3b565b6119a7565b82955050505050505b919050565b611a4e62015180420361093b565b565b60016000808282540192505081905550600080549050600033905060003490507f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d72573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f452f7265666572206572726f720000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611b3d836126dd565b5050905060008114611bb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f452f6e656564207764000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6064600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff1660fa0281611c2e57fe5b04600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16101580611caf5750611cad83613042565b155b611d21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f452f616c6561647900000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611d2b838361343a565b611d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f452f696e76616c69642076616c7565000000000000000000000000000000000081525060200191505060405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fbc77f75c7aee3e428696f7c010334a24f2af57782220ce937041f2f6ddb3b09f846040518082815260200191505060405180910390a3611e1e83600a87600a0160ff16850281611e1857fe5b04613603565b8160096000828254019250508190555060148281611e3857fe5b04600160148282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060646003830281611e9357fe5b04600260008282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060646005830281611ee857fe5b046002600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506040518060800160405280836cffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff1681526020018660ff1681526020014263ffffffff16815250600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff160217905550602082015181600001600d6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550604082015181600001601b6101000a81548160ff021916908360ff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff1602179055509050506040518060c001604052804263ffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff16815250600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060408201518160000160126101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060608201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550608082015181600101600c6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a08201518160010160166101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055509050506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561259d5786905061231787613042565b612343577f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d725905061251e565b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600290505b600a811115801561245957507f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d72573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561251b576001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915080806001019150506123fc565b50505b80600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6125a9816001856137c1565b6125b38484613ca5565b50505050600054811461262e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b505050565b600080600080600760000160009054906101000a90046dffffffffffffffffffffffffffff166007600001600e9054906101000a90046dffffffffffffffffffffffffffff166007600001601c9054906101000a900463ffffffff16600760010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000620151806154608303816126d557fe5b049050919050565b60008060007f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d72573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561281957600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046bffffffffffffffffffffffff1601600080826bffffffffffffffffffffffff169250819150925092509250612c3a565b612821614817565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905061293d614867565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff168152505090506000612af087613f61565b90506000606460fa85600001516cffffffffffffffffffffffffff160281612b1457fe5b049050600084600001516cffffffffffffffffffffffffff16118015612b4d57508084602001516dffffffffffffffffffffffffffff16105b15612c3557600062015180846000015163ffffffff16420381612b6c57fe5b0490506000856040015160ff161115612ba257600185604001510160ff16600186604001510160ff168281612b9d57fe5b040290505b60006103e88660400151600a0160ff168388600001516cffffffffffffffffffffffffff16020281612bd057fe5b04905082818588602001516dffffffffffffffffffffffffffff1601011015612c0a57808401826000985098509850505050505050612c3a565b85602001516dffffffffffffffffffffffffffff168303826001985098509850505050505050612c3a565b505050505b9193909250565b6001821415612ce45760646014820281612c5757fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612f28565b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f27576002821415612dcd576064600a820281612d4057fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612f26565b6003821480612ddc5750600482145b80612de75750600582145b15612e865760646007820281612df957fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550612f25565b60068210612f245760646003820281612e9b57fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600c8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505b5b5b5b5b505050565b600080831415612f405760009050612fad565b6000828402905082848281612f5157fe5b0414612fa8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061490f6021913960400191505060405180910390fd5b809150505b92915050565b600080821161302a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b600082848161303557fe5b0490508091505092915050565b600061304c614817565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff166cffffffffffffffffffffffffff16815260200160008201600d9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050600081600001516cffffffffffffffffffffffffff16111561343357613184614867565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff16815250509050600061333785613f61565b90506000606460fa85600001516cffffffffffffffffffffffffff16028161335b57fe5b049050808285602001516dffffffffffffffffffffffffffff1601101561342f57600062015180846000015163ffffffff1642038161339657fe5b0490506000856040015160ff1611156133cc57600185604001510160ff16600186604001510160ff1682816133c757fe5b040290505b60006103e88660400151600a0160ff168388600001516cffffffffffffffffffffffffff160202816133fa57fe5b04905082818588602001516dffffffffffffffffffffffffffff160101101561342c5760019650505050505050613435565b50505b5050505b505b919050565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046cffffffffffffffffffffffffff166cffffffffffffffffffffffffff1690506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156135275767016345785d8a0000831015801561351357506801158e460913d000008311155b156135225760019150506135fd565b6135f7565b6005600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106135845780831061357f5760019150506135fd565b6135f6565b8083101580156135e65750670de0b6b3a76400006001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540160020a600a02028311155b156135f55760019150506135fd565b5b5b60009150505b92915050565b600061360e826118b8565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1984836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156136b957600080fd5b505af11580156136cd573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f197f000000000000000000000000bb46bb15f1f710c9c559cddf0325ccd16c1f970d6014848161373a57fe5b046040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156137a457600080fd5b505af11580156137b8573d6000803e3d6000fd5b50505050505050565b6001821415613bf957606460078202816137d757fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d72573ffffffffffffffffffffffffffffffffffffffff1614156138be57613ca0565b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506139158382614168565b6000613920426126c3565b905081600d600083815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061398a818561430a565b7f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d72573ffffffffffffffffffffffffffffffffffffffff16600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480613aa85750613aa6600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613042565b155b80613b5157506003600a6000600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15613b8757613b827f000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d7256002846137c1565b613bf3565b613bf2600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002846137c1565b5b50613c9f565b6002821415613c9e5760646003820281613c0f57fe5b04600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505b5b5b505050565b6000683635c9adc5dea0000082470381613cbb57fe5b0460010190506000683635c9adc5dea0000082029050804710158015613ce2575080834703105b15613f5b57600060028060009054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1681613d1657fe5b0469ffffffffffffffffffff16905080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160048282829054906101000a90046dffffffffffffffffffffffffffff160192506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060028060009054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1681613de657fe5b04600260006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506040518060800160405280856dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020014263ffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815250600760008201518160000160006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550602082015181600001600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550604082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060608201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050505b50505050565b6000613f6b614867565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016000820160129054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020016001820160169054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681525050905080602001518160a0015169ffffffffffffffffffff16826080015169ffffffffffffffffffff16836060015101016bffffffffffffffffffffffff16016dffffffffffffffffffffffffffff16915050919050565b600068056bc75e2d6310000082600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403816141bd57fe5b046001019050600068056bc75e2d631000008202905080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561426257508083600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403105b15614304576729a2241af62c0000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160128282829054906101000a90046dffffffffffffffffffffffffffff160192506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505b50505050565b6000600e600084815260200190815260200160002080549050905060008090505b818110156143ce57600e6000858152602001908152602001600020818154811061435157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156143c1576143ba8482856145c9565b50506145c5565b808060010191505061432b565b50600881101561445c57600e6000848152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506144578382846145c9565b6145c3565b600d60008481526020019081526020016000206000600e600086815260200190815260200160002060078154811061449057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156145c25781600e600085815260200190815260200160002060078154811061456d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506145c1836007846145c9565b5b5b505b5050565b5b600182101580156146c55750600d60008481526020019081526020016000206000600e6000868152602001908152602001600020600185038154811061460c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d600085815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156147f157600e600084815260200190815260200160002060018303815481106146eb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e6000858152602001908152602001600020838154811061473457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e6000858152602001908152602001600020600184038154811061479e57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820391506145ca565b505050565b508054600082559060005260206000209081019061481491906148e9565b50565b604051806080016040528060006cffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff168152602001600060ff168152602001600063ffffffff1681525090565b6040518060c00160405280600063ffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff1681525090565b61490b91905b808211156149075760008160009055506001016148ef565b5090565b9056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122040a1c13ce8c373343e433935689c7243fdb952688db7f7f8a1eeb3b293a57d2c64736f6c63430006090033

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

000000000000000000000000bb46bb15f1f710c9c559cddf0325ccd16c1f970d000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d725

-----Decoded View---------------
Arg [0] : feeto (address): 0xbB46Bb15F1F710C9C559CdDf0325ccd16C1f970d
Arg [1] : referfrom (address): 0xb2ff63B2a2dFc719523f169Ed13D36604839d725

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000bb46bb15f1f710c9c559cddf0325ccd16c1f970d
Arg [1] : 000000000000000000000000b2ff63b2a2dfc719523f169ed13d36604839d725


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.