ETH Price: $2,285.86 (-7.88%)

Contract

0xE20B3aE826Cdb43676e418F7C3B84B75b5697a40
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

> 10 Internal Transactions found.

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
196538262024-04-14 12:38:59323 days ago1713098339
0xE20B3aE8...5b5697a40
0 ETH
167922762023-03-09 17:57:23724 days ago1678384643
0xE20B3aE8...5b5697a40
0 ETH
167922442023-03-09 17:50:59724 days ago1678384259
0xE20B3aE8...5b5697a40
0 ETH
167915802023-03-09 15:36:47725 days ago1678376207
0xE20B3aE8...5b5697a40
0 ETH
167915802023-03-09 15:36:47725 days ago1678376207
0xE20B3aE8...5b5697a40
0 ETH
167915802023-03-09 15:36:47725 days ago1678376207
0xE20B3aE8...5b5697a40
0 ETH
167899452023-03-09 10:05:59725 days ago1678356359
0xE20B3aE8...5b5697a40
0 ETH
167899452023-03-09 10:05:59725 days ago1678356359
0xE20B3aE8...5b5697a40
0 ETH
167899442023-03-09 10:05:47725 days ago1678356347
0xE20B3aE8...5b5697a40
0 ETH
167899442023-03-09 10:05:47725 days ago1678356347
0xE20B3aE8...5b5697a40
0 ETH
167858682023-03-08 20:20:35725 days ago1678306835
0xE20B3aE8...5b5697a40
0 ETH
167824702023-03-08 8:51:47726 days ago1678265507
0xE20B3aE8...5b5697a40
0 ETH
167823422023-03-08 8:26:11726 days ago1678263971
0xE20B3aE8...5b5697a40
0 ETH
167823422023-03-08 8:26:11726 days ago1678263971
0xE20B3aE8...5b5697a40
0 ETH
167823412023-03-08 8:25:59726 days ago1678263959
0xE20B3aE8...5b5697a40
0 ETH
167823412023-03-08 8:25:59726 days ago1678263959
0xE20B3aE8...5b5697a40
0 ETH
167823402023-03-08 8:25:47726 days ago1678263947
0xE20B3aE8...5b5697a40
0 ETH
167823402023-03-08 8:25:47726 days ago1678263947
0xE20B3aE8...5b5697a40
0 ETH
167796622023-03-07 23:23:23726 days ago1678231403
0xE20B3aE8...5b5697a40
0 ETH
167793972023-03-07 22:29:47726 days ago1678228187
0xE20B3aE8...5b5697a40
0 ETH
167793532023-03-07 22:20:59726 days ago1678227659
0xE20B3aE8...5b5697a40
0 ETH
167788912023-03-07 20:47:59726 days ago1678222079
0xE20B3aE8...5b5697a40
0 ETH
167771782023-03-07 15:01:11727 days ago1678201271
0xE20B3aE8...5b5697a40
0 ETH
167765962023-03-07 13:02:47727 days ago1678194167
0xE20B3aE8...5b5697a40
0 ETH
167719142023-03-06 21:15:47727 days ago1678137347
0xE20B3aE8...5b5697a40
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenData

Compiler Version
v0.5.7+commit.6da8b019

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Multiple files format)

File 1 of 4: TokenData.sol
/* Copyright (C) 2017 NexusMutual.io

  This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

  This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
    along with this program.  If not, see http://www.gnu.org/licenses/ */
    
pragma solidity 0.5.7;

import "./Iupgradable.sol";
import "./SafeMath.sol";


contract TokenData is Iupgradable {
    using SafeMath for uint;

    address payable public walletAddress;
    uint public lockTokenTimeAfterCoverExp;
    uint public bookTime;
    uint public lockCADays;
    uint public lockMVDays;
    uint public scValidDays;
    uint public joiningFee;
    uint public stakerCommissionPer;
    uint public stakerMaxCommissionPer;
    uint public tokenExponent;
    uint public priceStep;

    struct StakeCommission {
        uint commissionEarned;
        uint commissionRedeemed;
    }

    struct Stake {
        address stakedContractAddress;
        uint stakedContractIndex;
        uint dateAdd;
        uint stakeAmount;
        uint unlockedAmount;
        uint burnedAmount;
        uint unLockableBeforeLastBurn;
    }

    struct Staker {
        address stakerAddress;
        uint stakerIndex;
    }

    struct CoverNote {
        uint amount;
        bool isDeposited;
    }

    /**
     * @dev mapping of uw address to array of sc address to fetch 
     * all staked contract address of underwriter, pushing
     * data into this array of Stake returns stakerIndex 
     */ 
    mapping(address => Stake[]) public stakerStakedContracts; 

    /** 
     * @dev mapping of sc address to array of UW address to fetch
     * all underwritters of the staked smart contract
     * pushing data into this mapped array returns scIndex 
     */
    mapping(address => Staker[]) public stakedContractStakers;

    /**
     * @dev mapping of staked contract Address to the array of StakeCommission
     * here index of this array is stakedContractIndex
     */ 
    mapping(address => mapping(uint => StakeCommission)) public stakedContractStakeCommission;

    mapping(address => uint) public lastCompletedStakeCommission;

    /** 
     * @dev mapping of the staked contract address to the current 
     * staker index who will receive commission.
     */ 
    mapping(address => uint) public stakedContractCurrentCommissionIndex;

    /** 
     * @dev mapping of the staked contract address to the 
     * current staker index to burn token from.
     */ 
    mapping(address => uint) public stakedContractCurrentBurnIndex;

    /** 
     * @dev mapping to return true if Cover Note deposited against coverId
     */ 
    mapping(uint => CoverNote) public depositedCN;

    mapping(address => uint) internal isBookedTokens;

    event Commission(
        address indexed stakedContractAddress,
        address indexed stakerAddress,
        uint indexed scIndex,
        uint commissionAmount
    );

    constructor(address payable _walletAdd) public {
        walletAddress = _walletAdd;
        bookTime = 12 hours;
        joiningFee = 2000000000000000; // 0.002 Ether
        lockTokenTimeAfterCoverExp = 35 days;
        scValidDays = 250;
        lockCADays = 7 days;
        lockMVDays = 2 days;
        stakerCommissionPer = 20;
        stakerMaxCommissionPer = 50;
        tokenExponent = 4;
        priceStep = 1000;

    }

    /**
     * @dev Change the wallet address which receive Joining Fee
     */
    function changeWalletAddress(address payable _address) external onlyInternal {
        walletAddress = _address;
    }

    /**
     * @dev Gets Uint Parameters of a code
     * @param code whose details we want
     * @return string value of the code
     * @return associated amount (time or perc or value) to the code
     */
    function getUintParameters(bytes8 code) external view returns(bytes8 codeVal, uint val) {
        codeVal = code;
        if (code == "TOKEXP") {

            val = tokenExponent; 

        } else if (code == "TOKSTEP") {

            val = priceStep;

        } else if (code == "RALOCKT") {

            val = scValidDays;

        } else if (code == "RACOMM") {

            val = stakerCommissionPer;

        } else if (code == "RAMAXC") {

            val = stakerMaxCommissionPer;

        } else if (code == "CABOOKT") {

            val = bookTime / (1 hours);

        } else if (code == "CALOCKT") {

            val = lockCADays / (1 days);

        } else if (code == "MVLOCKT") {

            val = lockMVDays / (1 days);

        } else if (code == "QUOLOCKT") {

            val = lockTokenTimeAfterCoverExp / (1 days);

        } else if (code == "JOINFEE") {

            val = joiningFee;

        } 
    }

    /**
    * @dev Just for interface
    */
    function changeDependentContractAddress() public { //solhint-disable-line
    }
    
    /**
     * @dev to get the contract staked by a staker 
     * @param _stakerAddress is the address of the staker
     * @param _stakerIndex is the index of staker
     * @return the address of staked contract
     */
    function getStakerStakedContractByIndex(
        address _stakerAddress,
        uint _stakerIndex
    ) 
        public
        view
        returns (address stakedContractAddress) 
    {
        stakedContractAddress = stakerStakedContracts[
            _stakerAddress][_stakerIndex].stakedContractAddress;
    }

    /**
     * @dev to get the staker's staked burned 
     * @param _stakerAddress is the address of the staker
     * @param _stakerIndex is the index of staker
     * @return amount burned
     */
    function getStakerStakedBurnedByIndex(
        address _stakerAddress,
        uint _stakerIndex
    ) 
        public
        view
        returns (uint burnedAmount) 
    {
        burnedAmount = stakerStakedContracts[
            _stakerAddress][_stakerIndex].burnedAmount;
    }

    /**
     * @dev to get the staker's staked unlockable before the last burn 
     * @param _stakerAddress is the address of the staker
     * @param _stakerIndex is the index of staker
     * @return unlockable staked tokens
     */
    function getStakerStakedUnlockableBeforeLastBurnByIndex(
        address _stakerAddress,
        uint _stakerIndex
    ) 
        public
        view
        returns (uint unlockable) 
    {
        unlockable = stakerStakedContracts[
            _stakerAddress][_stakerIndex].unLockableBeforeLastBurn;
    }

    /**
     * @dev to get the staker's staked contract index 
     * @param _stakerAddress is the address of the staker
     * @param _stakerIndex is the index of staker
     * @return is the index of the smart contract address
     */
    function getStakerStakedContractIndex(
        address _stakerAddress,
        uint _stakerIndex
    ) 
        public
        view
        returns (uint scIndex) 
    {
        scIndex = stakerStakedContracts[
            _stakerAddress][_stakerIndex].stakedContractIndex;
    }

    /**
     * @dev to get the staker index of the staked contract
     * @param _stakedContractAddress is the address of the staked contract
     * @param _stakedContractIndex is the index of staked contract
     * @return is the index of the staker
     */
    function getStakedContractStakerIndex(
        address _stakedContractAddress,
        uint _stakedContractIndex
    ) 
        public
        view
        returns (uint sIndex) 
    {
        sIndex = stakedContractStakers[
            _stakedContractAddress][_stakedContractIndex].stakerIndex;
    }

    /**
     * @dev to get the staker's initial staked amount on the contract 
     * @param _stakerAddress is the address of the staker
     * @param _stakerIndex is the index of staker
     * @return staked amount
     */
    function getStakerInitialStakedAmountOnContract(
        address _stakerAddress,
        uint _stakerIndex
    )
        public 
        view
        returns (uint amount)
    {
        amount = stakerStakedContracts[
            _stakerAddress][_stakerIndex].stakeAmount;
    }

    /**
     * @dev to get the staker's staked contract length 
     * @param _stakerAddress is the address of the staker
     * @return length of staked contract
     */
    function getStakerStakedContractLength(
        address _stakerAddress
    ) 
        public
        view
        returns (uint length)
    {
        length = stakerStakedContracts[_stakerAddress].length;
    }

    /**
     * @dev to get the staker's unlocked tokens which were staked 
     * @param _stakerAddress is the address of the staker
     * @param _stakerIndex is the index of staker
     * @return amount
     */
    function getStakerUnlockedStakedTokens(
        address _stakerAddress,
        uint _stakerIndex
    )
        public 
        view
        returns (uint amount)
    {
        amount = stakerStakedContracts[
            _stakerAddress][_stakerIndex].unlockedAmount;
    }

    /**
     * @dev pushes the unlocked staked tokens by a staker.
     * @param _stakerAddress address of staker.
     * @param _stakerIndex index of the staker to distribute commission.
     * @param _amount amount to be given as commission.
     */ 
    function pushUnlockedStakedTokens(
        address _stakerAddress,
        uint _stakerIndex,
        uint _amount
    )   
        public
        onlyInternal
    {   
        stakerStakedContracts[_stakerAddress][
            _stakerIndex].unlockedAmount = stakerStakedContracts[_stakerAddress][
                _stakerIndex].unlockedAmount.add(_amount);
    }

    /**
     * @dev pushes the Burned tokens for a staker.
     * @param _stakerAddress address of staker.
     * @param _stakerIndex index of the staker.
     * @param _amount amount to be burned.
     */ 
    function pushBurnedTokens(
        address _stakerAddress,
        uint _stakerIndex,
        uint _amount
    )   
        public
        onlyInternal
    {   
        stakerStakedContracts[_stakerAddress][
            _stakerIndex].burnedAmount = stakerStakedContracts[_stakerAddress][
                _stakerIndex].burnedAmount.add(_amount);
    }

    /**
     * @dev pushes the unLockable tokens for a staker before last burn.
     * @param _stakerAddress address of staker.
     * @param _stakerIndex index of the staker.
     * @param _amount amount to be added to unlockable.
     */ 
    function pushUnlockableBeforeLastBurnTokens(
        address _stakerAddress,
        uint _stakerIndex,
        uint _amount
    )   
        public
        onlyInternal
    {   
        stakerStakedContracts[_stakerAddress][
            _stakerIndex].unLockableBeforeLastBurn = stakerStakedContracts[_stakerAddress][
                _stakerIndex].unLockableBeforeLastBurn.add(_amount);
    }

    /**
     * @dev sets the unLockable tokens for a staker before last burn.
     * @param _stakerAddress address of staker.
     * @param _stakerIndex index of the staker.
     * @param _amount amount to be added to unlockable.
     */ 
    function setUnlockableBeforeLastBurnTokens(
        address _stakerAddress,
        uint _stakerIndex,
        uint _amount
    )   
        public
        onlyInternal
    {   
        stakerStakedContracts[_stakerAddress][
            _stakerIndex].unLockableBeforeLastBurn = _amount;
    }

    /**
     * @dev pushes the earned commission earned by a staker.
     * @param _stakerAddress address of staker.
     * @param _stakedContractAddress address of smart contract.
     * @param _stakedContractIndex index of the staker to distribute commission.
     * @param _commissionAmount amount to be given as commission.
     */ 
    function pushEarnedStakeCommissions(
        address _stakerAddress,
        address _stakedContractAddress,
        uint _stakedContractIndex,
        uint _commissionAmount
    )   
        public
        onlyInternal
    {
        stakedContractStakeCommission[_stakedContractAddress][_stakedContractIndex].
            commissionEarned = stakedContractStakeCommission[_stakedContractAddress][
                _stakedContractIndex].commissionEarned.add(_commissionAmount);
                
        emit Commission(
            _stakerAddress,
            _stakedContractAddress,
            _stakedContractIndex,
            _commissionAmount
        );
    }

    /**
     * @dev pushes the redeemed commission redeemed by a staker.
     * @param _stakerAddress address of staker.
     * @param _stakerIndex index of the staker to distribute commission.
     * @param _amount amount to be given as commission.
     */ 
    function pushRedeemedStakeCommissions(
        address _stakerAddress,
        uint _stakerIndex,
        uint _amount
    )   
        public
        onlyInternal
    {   
        uint stakedContractIndex = stakerStakedContracts[
            _stakerAddress][_stakerIndex].stakedContractIndex;
        address stakedContractAddress = stakerStakedContracts[
            _stakerAddress][_stakerIndex].stakedContractAddress;
        stakedContractStakeCommission[stakedContractAddress][stakedContractIndex].
            commissionRedeemed = stakedContractStakeCommission[
                stakedContractAddress][stakedContractIndex].commissionRedeemed.add(_amount);
    }

    /**
     * @dev Gets stake commission given to an underwriter
     * for particular stakedcontract on given index.
     * @param _stakerAddress address of staker.
     * @param _stakerIndex index of the staker commission.
     */ 
    function getStakerEarnedStakeCommission(
        address _stakerAddress,
        uint _stakerIndex
    )
        public 
        view
        returns (uint) 
    {
        return _getStakerEarnedStakeCommission(_stakerAddress, _stakerIndex);
    }

    /**
     * @dev Gets stake commission redeemed by an underwriter
     * for particular staked contract on given index.
     * @param _stakerAddress address of staker.
     * @param _stakerIndex index of the staker commission.
     * @return commissionEarned total amount given to staker.
     */ 
    function getStakerRedeemedStakeCommission(
        address _stakerAddress,
        uint _stakerIndex
    )
        public 
        view
        returns (uint) 
    {
        return _getStakerRedeemedStakeCommission(_stakerAddress, _stakerIndex);
    }

    /**
     * @dev Gets total stake commission given to an underwriter
     * @param _stakerAddress address of staker.
     * @return totalCommissionEarned total commission earned by staker.
     */ 
    function getStakerTotalEarnedStakeCommission(
        address _stakerAddress
    )
        public 
        view
        returns (uint totalCommissionEarned) 
    {
        totalCommissionEarned = 0;
        for (uint i = 0; i < stakerStakedContracts[_stakerAddress].length; i++) {
            totalCommissionEarned = totalCommissionEarned.
                add(_getStakerEarnedStakeCommission(_stakerAddress, i));
        }
    }

    /**
     * @dev Gets total stake commission given to an underwriter
     * @param _stakerAddress address of staker.
     * @return totalCommissionEarned total commission earned by staker.
     */ 
    function getStakerTotalReedmedStakeCommission(
        address _stakerAddress
    )
        public 
        view
        returns(uint totalCommissionRedeemed) 
    {
        totalCommissionRedeemed = 0;
        for (uint i = 0; i < stakerStakedContracts[_stakerAddress].length; i++) {
            totalCommissionRedeemed = totalCommissionRedeemed.add(
                _getStakerRedeemedStakeCommission(_stakerAddress, i));
        }
    }

    /**
     * @dev set flag to deposit/ undeposit cover note 
     * against a cover Id
     * @param coverId coverId of Cover
     * @param flag true/false for deposit/undeposit
     */
    function setDepositCN(uint coverId, bool flag) public onlyInternal {

        if (flag == true) {
            require(!depositedCN[coverId].isDeposited, "Cover note already deposited");    
        }

        depositedCN[coverId].isDeposited = flag;
    }

    /**
     * @dev set locked cover note amount
     * against a cover Id
     * @param coverId coverId of Cover
     * @param amount amount of nxm to be locked
     */
    function setDepositCNAmount(uint coverId, uint amount) public onlyInternal {

        depositedCN[coverId].amount = amount;
    }

    /**
     * @dev to get the staker address on a staked contract 
     * @param _stakedContractAddress is the address of the staked contract in concern
     * @param _stakedContractIndex is the index of staked contract's index
     * @return address of staker
     */
    function getStakedContractStakerByIndex(
        address _stakedContractAddress,
        uint _stakedContractIndex
    )
        public
        view
        returns (address stakerAddress)
    {
        stakerAddress = stakedContractStakers[
            _stakedContractAddress][_stakedContractIndex].stakerAddress;
    }

    /**
     * @dev to get the length of stakers on a staked contract 
     * @param _stakedContractAddress is the address of the staked contract in concern
     * @return length in concern
     */
    function getStakedContractStakersLength(
        address _stakedContractAddress
    ) 
        public
        view
        returns (uint length)
    {
        length = stakedContractStakers[_stakedContractAddress].length;
    } 
    
    /**
     * @dev Adds a new stake record.
     * @param _stakerAddress staker address.
     * @param _stakedContractAddress smart contract address.
     * @param _amount amountof NXM to be staked.
     */
    function addStake(
        address _stakerAddress,
        address _stakedContractAddress,
        uint _amount
    ) 
        public
        onlyInternal
        returns(uint scIndex) 
    {
        scIndex = (stakedContractStakers[_stakedContractAddress].push(
            Staker(_stakerAddress, stakerStakedContracts[_stakerAddress].length))).sub(1);
        stakerStakedContracts[_stakerAddress].push(
            Stake(_stakedContractAddress, scIndex, now, _amount, 0, 0, 0));
    }

    /**
     * @dev books the user's tokens for maintaining Assessor Velocity, 
     * i.e. once a token is used to cast a vote as a Claims assessor,
     * @param _of user's address.
     */
    function bookCATokens(address _of) public onlyInternal {
        require(!isCATokensBooked(_of), "Tokens already booked");
        isBookedTokens[_of] = now.add(bookTime);
    }

    /**
     * @dev to know if claim assessor's tokens are booked or not 
     * @param _of is the claim assessor's address in concern
     * @return boolean representing the status of tokens booked
     */
    function isCATokensBooked(address _of) public view returns(bool res) {
        if (now < isBookedTokens[_of])
            res = true;
    }

    /**
     * @dev Sets the index which will receive commission.
     * @param _stakedContractAddress smart contract address.
     * @param _index current index.
     */
    function setStakedContractCurrentCommissionIndex(
        address _stakedContractAddress,
        uint _index
    )
        public
        onlyInternal
    {
        stakedContractCurrentCommissionIndex[_stakedContractAddress] = _index;
    }

    /**
     * @dev Sets the last complete commission index
     * @param _stakerAddress smart contract address.
     * @param _index current index.
     */
    function setLastCompletedStakeCommissionIndex(
        address _stakerAddress,
        uint _index
    )
        public
        onlyInternal
    {
        lastCompletedStakeCommission[_stakerAddress] = _index;
    }

    /**
     * @dev Sets the index till which commission is distrubuted.
     * @param _stakedContractAddress smart contract address.
     * @param _index current index.
     */
    function setStakedContractCurrentBurnIndex(
        address _stakedContractAddress,
        uint _index
    )
        public
        onlyInternal
    {
        stakedContractCurrentBurnIndex[_stakedContractAddress] = _index;
    }

    /**
     * @dev Updates Uint Parameters of a code
     * @param code whose details we want to update
     * @param val value to set
     */
    function updateUintParameters(bytes8 code, uint val) public {
        require(ms.checkIsAuthToGoverned(msg.sender));
        if (code == "TOKEXP") {

            _setTokenExponent(val); 

        } else if (code == "TOKSTEP") {

            _setPriceStep(val);

        } else if (code == "RALOCKT") {

            _changeSCValidDays(val);

        } else if (code == "RACOMM") {

            _setStakerCommissionPer(val);

        } else if (code == "RAMAXC") {

            _setStakerMaxCommissionPer(val);

        } else if (code == "CABOOKT") {

            _changeBookTime(val * 1 hours);

        } else if (code == "CALOCKT") {

            _changelockCADays(val * 1 days);

        } else if (code == "MVLOCKT") {

            _changelockMVDays(val * 1 days);

        } else if (code == "QUOLOCKT") {

            _setLockTokenTimeAfterCoverExp(val * 1 days);

        } else if (code == "JOINFEE") {

            _setJoiningFee(val);

        } else {
            revert("Invalid param code");
        } 
    }

    /**
     * @dev Internal function to get stake commission given to an 
     * underwriter for particular stakedcontract on given index.
     * @param _stakerAddress address of staker.
     * @param _stakerIndex index of the staker commission.
     */ 
    function _getStakerEarnedStakeCommission(
        address _stakerAddress,
        uint _stakerIndex
    )
        internal
        view 
        returns (uint amount) 
    {
        uint _stakedContractIndex;
        address _stakedContractAddress;
        _stakedContractAddress = stakerStakedContracts[
            _stakerAddress][_stakerIndex].stakedContractAddress;
        _stakedContractIndex = stakerStakedContracts[
            _stakerAddress][_stakerIndex].stakedContractIndex;
        amount = stakedContractStakeCommission[
            _stakedContractAddress][_stakedContractIndex].commissionEarned;
    }

    /**
     * @dev Internal function to get stake commission redeemed by an 
     * underwriter for particular stakedcontract on given index.
     * @param _stakerAddress address of staker.
     * @param _stakerIndex index of the staker commission.
     */ 
    function _getStakerRedeemedStakeCommission(
        address _stakerAddress,
        uint _stakerIndex
    )
        internal
        view 
        returns (uint amount) 
    {
        uint _stakedContractIndex;
        address _stakedContractAddress;
        _stakedContractAddress = stakerStakedContracts[
            _stakerAddress][_stakerIndex].stakedContractAddress;
        _stakedContractIndex = stakerStakedContracts[
            _stakerAddress][_stakerIndex].stakedContractIndex;
        amount = stakedContractStakeCommission[
            _stakedContractAddress][_stakedContractIndex].commissionRedeemed;
    }

    /**
     * @dev to set the percentage of staker commission 
     * @param _val is new percentage value
     */
    function _setStakerCommissionPer(uint _val) internal {
        stakerCommissionPer = _val;
    }

    /**
     * @dev to set the max percentage of staker commission 
     * @param _val is new percentage value
     */
    function _setStakerMaxCommissionPer(uint _val) internal {
        stakerMaxCommissionPer = _val;
    }

    /**
     * @dev to set the token exponent value 
     * @param _val is new value
     */
    function _setTokenExponent(uint _val) internal {
        tokenExponent = _val;
    }

    /**
     * @dev to set the price step 
     * @param _val is new value
     */
    function _setPriceStep(uint _val) internal {
        priceStep = _val;
    }

    /**
     * @dev Changes number of days for which NXM needs to staked in case of underwriting
     */ 
    function _changeSCValidDays(uint _days) internal {
        scValidDays = _days;
    }

    /**
     * @dev Changes the time period up to which tokens will be locked.
     *      Used to generate the validity period of tokens booked by
     *      a user for participating in claim's assessment/claim's voting.
     */ 
    function _changeBookTime(uint _time) internal {
        bookTime = _time;
    }

    /**
     * @dev Changes lock CA days - number of days for which tokens 
     * are locked while submitting a vote.
     */ 
    function _changelockCADays(uint _val) internal {
        lockCADays = _val;
    }
    
    /**
     * @dev Changes lock MV days - number of days for which tokens are locked
     * while submitting a vote.
     */ 
    function _changelockMVDays(uint _val) internal {
        lockMVDays = _val;
    }

    /**
     * @dev Changes extra lock period for a cover, post its expiry.
     */ 
    function _setLockTokenTimeAfterCoverExp(uint time) internal {
        lockTokenTimeAfterCoverExp = time;
    }

    /**
     * @dev Set the joining fee for membership
     */
    function _setJoiningFee(uint _amount) internal {
        joiningFee = _amount;
    }
}

File 2 of 4: INXMMaster.sol
/* Copyright (C) 2017 NexusMutual.io

  This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

  This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
    along with this program.  If not, see http://www.gnu.org/licenses/ */

pragma solidity 0.5.7;


contract INXMMaster {

    address public tokenAddress;

    address public owner;


    uint public pauseTime;

    function delegateCallBack(bytes32 myid) external;

    function masterInitialized() public view returns(bool);
    
    function isInternal(address _add) public view returns(bool);

    function isPause() public view returns(bool check);

    function isOwner(address _add) public view returns(bool);

    function isMember(address _add) public view returns(bool);
    
    function checkIsAuthToGoverned(address _add) public view returns(bool);

    function updatePauseTime(uint _time) public;

    function dAppLocker() public view returns(address _add);

    function dAppToken() public view returns(address _add);

    function getLatestAddress(bytes2 _contractName) public view returns(address payable contractAddress);
}

File 3 of 4: Iupgradable.sol
pragma solidity 0.5.7;

import "./INXMMaster.sol";


contract Iupgradable {

    INXMMaster public ms;
    address public nxMasterAddress;

    modifier onlyInternal {
        require(ms.isInternal(msg.sender));
        _;
    }

    modifier isMemberAndcheckPause {
        require(ms.isPause() == false && ms.isMember(msg.sender) == true);
        _;
    }

    modifier onlyOwner {
        require(ms.isOwner(msg.sender));
        _;
    }

    modifier checkPause {
        require(ms.isPause() == false);
        _;
    }

    modifier isMember {
        require(ms.isMember(msg.sender), "Not member");
        _;
    }

    /**
     * @dev Iupgradable Interface to update dependent contract address
     */
    function  changeDependentContractAddress() public;

    /**
     * @dev change master address
     * @param _masterAddress is the new address
     */
    function changeMasterAddress(address _masterAddress) public {
        if (address(ms) != address(0)) {
            require(address(ms) == msg.sender, "Not master");
        }
        ms = INXMMaster(_masterAddress);
        nxMasterAddress = _masterAddress;
    }

}

File 4 of 4: SafeMath.sol
pragma solidity 0.5.7;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that revert on error
 */
library SafeMath {

    /**
    * @dev Multiplies two numbers, reverts on 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);

        return c;
    }

    /**
    * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0); // Solidity only automatically asserts when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two numbers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }

    /**
    * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"pushBurnedTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockCADays","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"changeDependentContractAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"pushUnlockableBeforeLastBurnTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_index","type":"uint256"}],"name":"setLastCompletedStakeCommissionIndex","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"depositedCN","outputs":[{"name":"amount","type":"uint256"},{"name":"isDeposited","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockMVDays","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stakedContractAddress","type":"address"},{"name":"_stakedContractIndex","type":"uint256"}],"name":"getStakedContractStakerIndex","outputs":[{"name":"sIndex","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"}],"name":"getStakerEarnedStakeCommission","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakedContractAddress","type":"address"},{"name":"_stakedContractIndex","type":"uint256"},{"name":"_commissionAmount","type":"uint256"}],"name":"pushEarnedStakeCommissions","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"}],"name":"getStakerStakedBurnedByIndex","outputs":[{"name":"burnedAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_of","type":"address"}],"name":"bookCATokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_stakerAddress","type":"address"}],"name":"getStakerTotalReedmedStakeCommission","outputs":[{"name":"totalCommissionRedeemed","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"}],"name":"getStakerInitialStakedAmountOnContract","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"coverId","type":"uint256"},{"name":"amount","type":"uint256"}],"name":"setDepositCNAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_stakerAddress","type":"address"}],"name":"getStakerTotalEarnedStakeCommission","outputs":[{"name":"totalCommissionEarned","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"code","type":"bytes8"}],"name":"getUintParameters","outputs":[{"name":"codeVal","type":"bytes8"},{"name":"val","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakerMaxCommissionPer","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"walletAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"joiningFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"}],"name":"getStakerStakedContractIndex","outputs":[{"name":"scIndex","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"stakedContractCurrentCommissionIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"coverId","type":"uint256"},{"name":"flag","type":"bool"}],"name":"setDepositCN","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"priceStep","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bookTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"}],"name":"getStakerStakedContractByIndex","outputs":[{"name":"stakedContractAddress","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"pushUnlockedStakedTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"code","type":"bytes8"},{"name":"val","type":"uint256"}],"name":"updateUintParameters","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ms","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"stakedContractStakeCommission","outputs":[{"name":"commissionEarned","type":"uint256"},{"name":"commissionRedeemed","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"}],"name":"getStakerStakedUnlockableBeforeLastBurnByIndex","outputs":[{"name":"unlockable","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stakedContractAddress","type":"address"},{"name":"_stakedContractIndex","type":"uint256"}],"name":"getStakedContractStakerByIndex","outputs":[{"name":"stakerAddress","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"stakedContractStakers","outputs":[{"name":"stakerAddress","type":"address"},{"name":"stakerIndex","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"stakerStakedContracts","outputs":[{"name":"stakedContractAddress","type":"address"},{"name":"stakedContractIndex","type":"uint256"},{"name":"dateAdd","type":"uint256"},{"name":"stakeAmount","type":"uint256"},{"name":"unlockedAmount","type":"uint256"},{"name":"burnedAmount","type":"uint256"},{"name":"unLockableBeforeLastBurn","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"scValidDays","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stakedContractAddress","type":"address"},{"name":"_index","type":"uint256"}],"name":"setStakedContractCurrentCommissionIndex","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockTokenTimeAfterCoverExp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_masterAddress","type":"address"}],"name":"changeMasterAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"pushRedeemedStakeCommissions","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lastCompletedStakeCommission","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakedContractAddress","type":"address"},{"name":"_amount","type":"uint256"}],"name":"addStake","outputs":[{"name":"scIndex","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakerCommissionPer","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"}],"name":"isCATokensBooked","outputs":[{"name":"res","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stakerAddress","type":"address"}],"name":"getStakerStakedContractLength","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stakedContractAddress","type":"address"},{"name":"_index","type":"uint256"}],"name":"setStakedContractCurrentBurnIndex","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"changeWalletAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenExponent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nxMasterAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stakedContractAddress","type":"address"}],"name":"getStakedContractStakersLength","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"}],"name":"getStakerRedeemedStakeCommission","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"stakedContractCurrentBurnIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"setUnlockableBeforeLastBurnTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_stakerAddress","type":"address"},{"name":"_stakerIndex","type":"uint256"}],"name":"getStakerUnlockedStakedTokens","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_walletAdd","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"stakedContractAddress","type":"address"},{"indexed":true,"name":"stakerAddress","type":"address"},{"indexed":true,"name":"scIndex","type":"uint256"},{"indexed":false,"name":"commissionAmount","type":"uint256"}],"name":"Commission","type":"event"}]

608060405234801561001057600080fd5b506040516020806124098339810180604052602081101561003057600080fd5b5051600280546001600160a01b0319166001600160a01b0390921691909117905561a8c0600490815566071afd498d0000600855622e248060035560fa60075562093a806005556202a30060065560146009556032600a55600b556103e8600c55612369806100a06000396000f3fe608060405234801561001057600080fd5b50600436106103275760003560e01c806397440d40116101b8578063ddaffe5811610104578063efd9066f116100a2578063f7138aae1161007c578063f7138aae14610a72578063f75ce5d414610a9e578063fed57f1814610ac4578063ff1b450414610af657610327565b8063efd9066f14610a3c578063f17a3bec14610a44578063f480454a14610a4c57610327565b8063e2950c9c116100de578063e2950c9c1461098a578063e325ef74146109c4578063eaf53c77146109ea578063ec8edf7a14610a1657610327565b8063ddaffe5814610926578063dfc2d1ba1461094c578063e22648501461098257610327565b8063b8ea578e11610171578063c88587031161014b578063c88587031461089a578063ce0a6d5f146108c6578063d46655f4146108ce578063d9249bff146108f457610327565b8063b8ea578e146107d5578063c1ed5a7414610824578063c47ac1ac1461089257610327565b806397440d40146106d15780639dd86e0f14610703578063a0b2d57f14610730578063a1692f0414610738578063a34e79bf1461077d578063a72c3520146107a957610327565b806343148d23116102775780636eeeaaa5116102305780638831d5901161020a5780638831d5901461067057806388d519c4146106955780639532cb2c1461069d57806396cf1455146106a557610327565b80636eeeaaa51461061657806379ade32f1461061e578063832c2e401461064a57610327565b806343148d231461052a5780634e718659146105565780636101c166146105795780636122f8401461059f5780636a964451146105ea5780636ad5b3ea146105f257610327565b8063200e7ccf116102e457806334f15b69116102be57806334f15b691461047657806334f45c3e146104b25780633739e439146104de5780633f4a7efa1461050457610327565b8063200e7ccf1461041657806324da7b691461041e5780632bc226281461044a57610327565b8063048dc9901461032c5780630d2c1104146103605780630ea9c9841461037a57806314f07b3c1461038257806318190817146103b45780631dc130a2146103e0575b600080fd5b61035e6004803603606081101561034257600080fd5b506001600160a01b038135169060208101359060400135610b22565b005b610368610c2d565b60408051918252519081900360200190f35b61035e610c33565b61035e6004803603606081101561039857600080fd5b506001600160a01b038135169060208101359060400135610c35565b61035e600480360360408110156103ca57600080fd5b506001600160a01b038135169060200135610d40565b6103fd600480360360208110156103f657600080fd5b5035610ddf565b6040805192835290151560208301528051918290030190f35b610368610dfb565b6103686004803603604081101561043457600080fd5b506001600160a01b038135169060200135610e01565b6103686004803603604081101561046057600080fd5b506001600160a01b038135169060200135610e3f565b61035e6004803603608081101561048c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610e52565b610368600480360360408110156104c857600080fd5b506001600160a01b038135169060200135610f6e565b61035e600480360360208110156104f457600080fd5b50356001600160a01b0316610fac565b6103686004803603602081101561051a57600080fd5b50356001600160a01b03166110bd565b6103686004803603604081101561054057600080fd5b506001600160a01b03813516906020013561110b565b61035e6004803603604081101561056c57600080fd5b5080359060200135611149565b6103686004803603602081101561058f57600080fd5b50356001600160a01b03166111de565b6105c6600480360360208110156105b557600080fd5b50356001600160c01b031916611219565b604080516001600160c01b0319909316835260208301919091528051918290030190f35b6103686113c6565b6105fa6113cc565b604080516001600160a01b039092168252519081900360200190f35b6103686113db565b6103686004803603604081101561063457600080fd5b506001600160a01b0381351690602001356113e1565b6103686004803603602081101561066057600080fd5b50356001600160a01b031661141f565b61035e6004803603604081101561068657600080fd5b50803590602001351515611431565b61036861154c565b610368611552565b6105fa600480360360408110156106bb57600080fd5b506001600160a01b038135169060200135611558565b61035e600480360360608110156106e757600080fd5b506001600160a01b03813516906020810135906040013561159d565b61035e6004803603604081101561071957600080fd5b506001600160c01b031981351690602001356116a8565b6105fa611925565b6107646004803603604081101561074e57600080fd5b506001600160a01b038135169060200135611934565b6040805192835260208301919091528051918290030190f35b6103686004803603604081101561079357600080fd5b506001600160a01b038135169060200135611958565b6105fa600480360360408110156107bf57600080fd5b506001600160a01b038135169060200135611996565b610801600480360360408110156107eb57600080fd5b506001600160a01b0381351690602001356119db565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6108506004803603604081101561083a57600080fd5b506001600160a01b038135169060200135611a1e565b604080516001600160a01b0390981688526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b610368611a7f565b61035e600480360360408110156108b057600080fd5b506001600160a01b038135169060200135611a85565b610368611b24565b61035e600480360360208110156108e457600080fd5b50356001600160a01b0316611b2a565b61035e6004803603606081101561090a57600080fd5b506001600160a01b038135169060208101359060400135611bb9565b6103686004803603602081101561093c57600080fd5b50356001600160a01b0316611d1c565b6103686004803603606081101561096257600080fd5b506001600160a01b03813581169160208101359091169060400135611d2e565b610368611edd565b6109b0600480360360208110156109a057600080fd5b50356001600160a01b0316611ee3565b604080519115158252519081900360200190f35b610368600480360360208110156109da57600080fd5b50356001600160a01b0316611f0c565b61035e60048036036040811015610a0057600080fd5b506001600160a01b038135169060200135611f27565b61035e60048036036020811015610a2c57600080fd5b50356001600160a01b0316611fc6565b61036861206b565b6105fa612071565b61036860048036036020811015610a6257600080fd5b50356001600160a01b0316612080565b61036860048036036040811015610a8857600080fd5b506001600160a01b03813516906020013561209b565b61036860048036036020811015610ab457600080fd5b50356001600160a01b03166120a7565b61035e60048036036060811015610ada57600080fd5b506001600160a01b0381351690602081013590604001356120b9565b61036860048036036040811015610b0c57600080fd5b506001600160a01b038135169060200135612163565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015610b7057600080fd5b505afa158015610b84573d6000803e3d6000fd5b505050506040513d6020811015610b9a57600080fd5b5051610ba557600080fd5b6001600160a01b0383166000908152600d602052604090208054610bef91839185908110610bcf57fe5b9060005260206000209060070201600501546121a190919063ffffffff16565b6001600160a01b0384166000908152600d60205260409020805484908110610c1357fe5b906000526020600020906007020160050181905550505050565b60055481565b565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015610c8357600080fd5b505afa158015610c97573d6000803e3d6000fd5b505050506040513d6020811015610cad57600080fd5b5051610cb857600080fd5b6001600160a01b0383166000908152600d602052604090208054610d0291839185908110610ce257fe5b9060005260206000209060070201600601546121a190919063ffffffff16565b6001600160a01b0384166000908152600d60205260409020805484908110610d2657fe5b906000526020600020906007020160060181905550505050565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015610d8e57600080fd5b505afa158015610da2573d6000803e3d6000fd5b505050506040513d6020811015610db857600080fd5b5051610dc357600080fd5b6001600160a01b03909116600090815260106020526040902055565b6013602052600090815260409020805460019091015460ff1682565b60065481565b6001600160a01b0382166000908152600e60205260408120805483908110610e2557fe5b906000526020600020906002020160010154905092915050565b6000610e4b83836121b3565b9392505050565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015610ea057600080fd5b505afa158015610eb4573d6000803e3d6000fd5b505050506040513d6020811015610eca57600080fd5b5051610ed557600080fd5b6001600160a01b0383166000908152600f60209081526040808320858452909152902054610f09908263ffffffff6121a116565b6001600160a01b038085166000818152600f602090815260408083208884528252918290209490945580518581529051869492938916927f05456de91d83e21ad7c41a09ae7cb41836049c49e6ddaf07bdfc40c2231885d2928290030190a450505050565b6001600160a01b0382166000908152600d60205260408120805483908110610f9257fe5b906000526020600020906007020160050154905092915050565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015610ffa57600080fd5b505afa15801561100e573d6000803e3d6000fd5b505050506040513d602081101561102457600080fd5b505161102f57600080fd5b61103881611ee3565b1561108d5760408051600160e51b62461bcd02815260206004820152601560248201527f546f6b656e7320616c726561647920626f6f6b65640000000000000000000000604482015290519081900360640190fd5b6004546110a190429063ffffffff6121a116565b6001600160a01b03909116600090815260146020526040902055565b6000805b6001600160a01b0383166000908152600d6020526040902054811015611105576110fb6110ee8483612254565b839063ffffffff6121a116565b91506001016110c1565b50919050565b6001600160a01b0382166000908152600d6020526040812080548390811061112f57fe5b906000526020600020906007020160030154905092915050565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b15801561119757600080fd5b505afa1580156111ab573d6000803e3d6000fd5b505050506040513d60208110156111c157600080fd5b50516111cc57600080fd5b60009182526013602052604090912055565b6000805b6001600160a01b0383166000908152600d60205260409020548110156111055761120f6110ee84836121b3565b91506001016111e2565b806000600160d41b650544f4b45585026001600160c01b0319831614156112435750600b546113c1565b600160cc1b660544f4b5354455026001600160c01b03198416141561126b5750600c546113c1565b600160ca1b6614905313d0d2d5026001600160c01b03198416141561129357506007546113c1565b600160d01b655241434f4d4d026001600160c01b0319841614156112ba57506009546113c1565b600160d01b6552414d415843026001600160c01b0319841614156112e15750600a546113c1565b600160ca1b6610d05093d3d2d5026001600160c01b03198416141561131557610e106004548161130d57fe5b0490506113c1565b600160ca1b6610d05313d0d2d5026001600160c01b03198416141561134257620151806005548161130d57fe5b600160ca1b6613559313d0d2d5026001600160c01b03198416141561136f57620151806006548161130d57fe5b600160c21b67145553d313d0d2d5026001600160c01b03198416141561139d57620151806003548161130d57fe5b600160c81b664a4f494e464545026001600160c01b0319841614156113c157506008545b915091565b600a5481565b6002546001600160a01b031681565b60085481565b6001600160a01b0382166000908152600d6020526040812080548390811061140557fe5b906000526020600020906007020160010154905092915050565b60116020526000908152604090205481565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b15801561147f57600080fd5b505afa158015611493573d6000803e3d6000fd5b505050506040513d60208110156114a957600080fd5b50516114b457600080fd5b600181151514156115295760008281526013602052604090206001015460ff16156115295760408051600160e51b62461bcd02815260206004820152601c60248201527f436f766572206e6f746520616c7265616479206465706f736974656400000000604482015290519081900360640190fd5b600091825260136020526040909120600101805460ff1916911515919091179055565b600c5481565b60045481565b6001600160a01b0382166000908152600d6020526040812080548390811061157c57fe5b60009182526020909120600790910201546001600160a01b03169392505050565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b1580156115eb57600080fd5b505afa1580156115ff573d6000803e3d6000fd5b505050506040513d602081101561161557600080fd5b505161162057600080fd5b6001600160a01b0383166000908152600d60205260409020805461166a9183918590811061164a57fe5b9060005260206000209060070201600401546121a190919063ffffffff16565b6001600160a01b0384166000908152600d6020526040902080548490811061168e57fe5b906000526020600020906007020160040181905550505050565b60005460408051600160e11b632c1a733d02815233600482015290516001600160a01b0390921691635834e67a91602480820192602092909190829003018186803b1580156116f657600080fd5b505afa15801561170a573d6000803e3d6000fd5b505050506040513d602081101561172057600080fd5b505161172b57600080fd5b600160d41b650544f4b45585026001600160c01b03198316141561175757611752816122f6565b611921565b600160cc1b660544f4b5354455026001600160c01b03198316141561177f57611752816122fb565b600160ca1b6614905313d0d2d5026001600160c01b0319831614156117a75761175281612300565b600160d01b655241434f4d4d026001600160c01b0319831614156117ce5761175281612305565b600160d01b6552414d415843026001600160c01b0319831614156117f5576117528161230a565b600160ca1b6610d05093d3d2d5026001600160c01b0319831614156118215761175281610e100261230f565b600160ca1b6610d05313d0d2d5026001600160c01b03198316141561184e57611752816201518002612314565b600160ca1b6613559313d0d2d5026001600160c01b03198316141561187b57611752816201518002612319565b600160c21b67145553d313d0d2d5026001600160c01b0319831614156118a95761175281620151800261231e565b600160c81b664a4f494e464545026001600160c01b0319831614156118d15761175281612323565b60408051600160e51b62461bcd02815260206004820152601260248201527f496e76616c696420706172616d20636f64650000000000000000000000000000604482015290519081900360640190fd5b5050565b6000546001600160a01b031681565b600f6020908152600092835260408084209091529082529020805460019091015482565b6001600160a01b0382166000908152600d6020526040812080548390811061197c57fe5b906000526020600020906007020160060154905092915050565b6001600160a01b0382166000908152600e602052604081208054839081106119ba57fe5b60009182526020909120600290910201546001600160a01b03169392505050565b600e60205281600052604060002081815481106119f457fe5b6000918252602090912060029091020180546001909101546001600160a01b039091169250905082565b600d6020528160005260406000208181548110611a3757fe5b600091825260209091206007909102018054600182015460028301546003840154600485015460058601546006909601546001600160a01b0390951697509295509093909287565b60075481565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015611ad357600080fd5b505afa158015611ae7573d6000803e3d6000fd5b505050506040513d6020811015611afd57600080fd5b5051611b0857600080fd5b6001600160a01b03909116600090815260116020526040902055565b60035481565b6000546001600160a01b031615611b8d576000546001600160a01b03163314611b8d5760408051600160e51b62461bcd02815260206004820152600a6024820152600160b11b692737ba1036b0b9ba32b902604482015290519081900360640190fd5b600080546001600160a01b039092166001600160a01b0319928316811790915560018054909216179055565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015611c0757600080fd5b505afa158015611c1b573d6000803e3d6000fd5b505050506040513d6020811015611c3157600080fd5b5051611c3c57600080fd5b6001600160a01b0383166000908152600d60205260408120805484908110611c6057fe5b90600052602060002090600702016001015490506000600d6000866001600160a01b03166001600160a01b031681526020019081526020016000208481548110611ca657fe5b600091825260208083206007909202909101546001600160a01b0316808352600f82526040808420868552909252912060010154909150611ced908463ffffffff6121a116565b6001600160a01b039091166000908152600f602090815260408083209483529390529190912060010155505050565b60106020526000908152604090205481565b6000805460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015611d7d57600080fd5b505afa158015611d91573d6000803e3d6000fd5b505050506040513d6020811015611da757600080fd5b5051611db257600080fd5b6001600160a01b038381166000908152600e60209081526040808320815180830183528986168082528552600d84529184205482840190815281546001808201808555938752949095209251600290950290920180546001600160a01b031916949095169390931784555192810192909255611e2d91612328565b6001600160a01b039485166000908152600d60209081526040808320815160e081018352978916885287830185815242928901928352606089019788526080890185815260a08a0186815260c08b01878152845460018082018755958952969097209a516007909602909a0180546001600160a01b03191695909b16949094178a555190890155516002880155935160038701559251600486015592516005850155505160069092019190915590565b60095481565b6001600160a01b038116600090815260146020526040812054421015611f07575060015b919050565b6001600160a01b03166000908152600d602052604090205490565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015611f7557600080fd5b505afa158015611f89573d6000803e3d6000fd5b505050506040513d6020811015611f9f57600080fd5b5051611faa57600080fd5b6001600160a01b03909116600090815260126020526040902055565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b15801561201457600080fd5b505afa158015612028573d6000803e3d6000fd5b505050506040513d602081101561203e57600080fd5b505161204957600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600b5481565b6001546001600160a01b031681565b6001600160a01b03166000908152600e602052604090205490565b6000610e4b8383612254565b60126020526000908152604090205481565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b15801561210757600080fd5b505afa15801561211b573d6000803e3d6000fd5b505050506040513d602081101561213157600080fd5b505161213c57600080fd5b6001600160a01b0383166000908152600d60205260409020805482919084908110610d2657fe5b6001600160a01b0382166000908152600d6020526040812080548390811061218757fe5b906000526020600020906007020160040154905092915050565b600082820183811015610e4b57600080fd5b6001600160a01b0382166000908152600d60205260408120805482918291859081106121db57fe5b600091825260208083206007909202909101546001600160a01b038881168452600d909252604090922080549190921692508590811061221757fe5b60009182526020808320600160079093020191909101546001600160a01b039093168252600f815260408083209383529290522054949350505050565b6001600160a01b0382166000908152600d602052604081208054829182918590811061227c57fe5b600091825260208083206007909202909101546001600160a01b038881168452600d90925260409092208054919092169250859081106122b857fe5b6000918252602080832060016007909302018201546001600160a01b039094168352600f815260408084209484529390529190200154949350505050565b600b55565b600c55565b600755565b600955565b600a55565b600455565b600555565b600655565b600355565b600855565b60008282111561233757600080fd5b5090039056fea165627a7a72305820078ad808aa7a058fdad0b26f147a9abc48c77ceee7555c7d0e9a73b2795758fc0029000000000000000000000000cb102cbfad94d71596d7d9172072da8b86e60fbd

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106103275760003560e01c806397440d40116101b8578063ddaffe5811610104578063efd9066f116100a2578063f7138aae1161007c578063f7138aae14610a72578063f75ce5d414610a9e578063fed57f1814610ac4578063ff1b450414610af657610327565b8063efd9066f14610a3c578063f17a3bec14610a44578063f480454a14610a4c57610327565b8063e2950c9c116100de578063e2950c9c1461098a578063e325ef74146109c4578063eaf53c77146109ea578063ec8edf7a14610a1657610327565b8063ddaffe5814610926578063dfc2d1ba1461094c578063e22648501461098257610327565b8063b8ea578e11610171578063c88587031161014b578063c88587031461089a578063ce0a6d5f146108c6578063d46655f4146108ce578063d9249bff146108f457610327565b8063b8ea578e146107d5578063c1ed5a7414610824578063c47ac1ac1461089257610327565b806397440d40146106d15780639dd86e0f14610703578063a0b2d57f14610730578063a1692f0414610738578063a34e79bf1461077d578063a72c3520146107a957610327565b806343148d23116102775780636eeeaaa5116102305780638831d5901161020a5780638831d5901461067057806388d519c4146106955780639532cb2c1461069d57806396cf1455146106a557610327565b80636eeeaaa51461061657806379ade32f1461061e578063832c2e401461064a57610327565b806343148d231461052a5780634e718659146105565780636101c166146105795780636122f8401461059f5780636a964451146105ea5780636ad5b3ea146105f257610327565b8063200e7ccf116102e457806334f15b69116102be57806334f15b691461047657806334f45c3e146104b25780633739e439146104de5780633f4a7efa1461050457610327565b8063200e7ccf1461041657806324da7b691461041e5780632bc226281461044a57610327565b8063048dc9901461032c5780630d2c1104146103605780630ea9c9841461037a57806314f07b3c1461038257806318190817146103b45780631dc130a2146103e0575b600080fd5b61035e6004803603606081101561034257600080fd5b506001600160a01b038135169060208101359060400135610b22565b005b610368610c2d565b60408051918252519081900360200190f35b61035e610c33565b61035e6004803603606081101561039857600080fd5b506001600160a01b038135169060208101359060400135610c35565b61035e600480360360408110156103ca57600080fd5b506001600160a01b038135169060200135610d40565b6103fd600480360360208110156103f657600080fd5b5035610ddf565b6040805192835290151560208301528051918290030190f35b610368610dfb565b6103686004803603604081101561043457600080fd5b506001600160a01b038135169060200135610e01565b6103686004803603604081101561046057600080fd5b506001600160a01b038135169060200135610e3f565b61035e6004803603608081101561048c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610e52565b610368600480360360408110156104c857600080fd5b506001600160a01b038135169060200135610f6e565b61035e600480360360208110156104f457600080fd5b50356001600160a01b0316610fac565b6103686004803603602081101561051a57600080fd5b50356001600160a01b03166110bd565b6103686004803603604081101561054057600080fd5b506001600160a01b03813516906020013561110b565b61035e6004803603604081101561056c57600080fd5b5080359060200135611149565b6103686004803603602081101561058f57600080fd5b50356001600160a01b03166111de565b6105c6600480360360208110156105b557600080fd5b50356001600160c01b031916611219565b604080516001600160c01b0319909316835260208301919091528051918290030190f35b6103686113c6565b6105fa6113cc565b604080516001600160a01b039092168252519081900360200190f35b6103686113db565b6103686004803603604081101561063457600080fd5b506001600160a01b0381351690602001356113e1565b6103686004803603602081101561066057600080fd5b50356001600160a01b031661141f565b61035e6004803603604081101561068657600080fd5b50803590602001351515611431565b61036861154c565b610368611552565b6105fa600480360360408110156106bb57600080fd5b506001600160a01b038135169060200135611558565b61035e600480360360608110156106e757600080fd5b506001600160a01b03813516906020810135906040013561159d565b61035e6004803603604081101561071957600080fd5b506001600160c01b031981351690602001356116a8565b6105fa611925565b6107646004803603604081101561074e57600080fd5b506001600160a01b038135169060200135611934565b6040805192835260208301919091528051918290030190f35b6103686004803603604081101561079357600080fd5b506001600160a01b038135169060200135611958565b6105fa600480360360408110156107bf57600080fd5b506001600160a01b038135169060200135611996565b610801600480360360408110156107eb57600080fd5b506001600160a01b0381351690602001356119db565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6108506004803603604081101561083a57600080fd5b506001600160a01b038135169060200135611a1e565b604080516001600160a01b0390981688526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b610368611a7f565b61035e600480360360408110156108b057600080fd5b506001600160a01b038135169060200135611a85565b610368611b24565b61035e600480360360208110156108e457600080fd5b50356001600160a01b0316611b2a565b61035e6004803603606081101561090a57600080fd5b506001600160a01b038135169060208101359060400135611bb9565b6103686004803603602081101561093c57600080fd5b50356001600160a01b0316611d1c565b6103686004803603606081101561096257600080fd5b506001600160a01b03813581169160208101359091169060400135611d2e565b610368611edd565b6109b0600480360360208110156109a057600080fd5b50356001600160a01b0316611ee3565b604080519115158252519081900360200190f35b610368600480360360208110156109da57600080fd5b50356001600160a01b0316611f0c565b61035e60048036036040811015610a0057600080fd5b506001600160a01b038135169060200135611f27565b61035e60048036036020811015610a2c57600080fd5b50356001600160a01b0316611fc6565b61036861206b565b6105fa612071565b61036860048036036020811015610a6257600080fd5b50356001600160a01b0316612080565b61036860048036036040811015610a8857600080fd5b506001600160a01b03813516906020013561209b565b61036860048036036020811015610ab457600080fd5b50356001600160a01b03166120a7565b61035e60048036036060811015610ada57600080fd5b506001600160a01b0381351690602081013590604001356120b9565b61036860048036036040811015610b0c57600080fd5b506001600160a01b038135169060200135612163565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015610b7057600080fd5b505afa158015610b84573d6000803e3d6000fd5b505050506040513d6020811015610b9a57600080fd5b5051610ba557600080fd5b6001600160a01b0383166000908152600d602052604090208054610bef91839185908110610bcf57fe5b9060005260206000209060070201600501546121a190919063ffffffff16565b6001600160a01b0384166000908152600d60205260409020805484908110610c1357fe5b906000526020600020906007020160050181905550505050565b60055481565b565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015610c8357600080fd5b505afa158015610c97573d6000803e3d6000fd5b505050506040513d6020811015610cad57600080fd5b5051610cb857600080fd5b6001600160a01b0383166000908152600d602052604090208054610d0291839185908110610ce257fe5b9060005260206000209060070201600601546121a190919063ffffffff16565b6001600160a01b0384166000908152600d60205260409020805484908110610d2657fe5b906000526020600020906007020160060181905550505050565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015610d8e57600080fd5b505afa158015610da2573d6000803e3d6000fd5b505050506040513d6020811015610db857600080fd5b5051610dc357600080fd5b6001600160a01b03909116600090815260106020526040902055565b6013602052600090815260409020805460019091015460ff1682565b60065481565b6001600160a01b0382166000908152600e60205260408120805483908110610e2557fe5b906000526020600020906002020160010154905092915050565b6000610e4b83836121b3565b9392505050565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015610ea057600080fd5b505afa158015610eb4573d6000803e3d6000fd5b505050506040513d6020811015610eca57600080fd5b5051610ed557600080fd5b6001600160a01b0383166000908152600f60209081526040808320858452909152902054610f09908263ffffffff6121a116565b6001600160a01b038085166000818152600f602090815260408083208884528252918290209490945580518581529051869492938916927f05456de91d83e21ad7c41a09ae7cb41836049c49e6ddaf07bdfc40c2231885d2928290030190a450505050565b6001600160a01b0382166000908152600d60205260408120805483908110610f9257fe5b906000526020600020906007020160050154905092915050565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015610ffa57600080fd5b505afa15801561100e573d6000803e3d6000fd5b505050506040513d602081101561102457600080fd5b505161102f57600080fd5b61103881611ee3565b1561108d5760408051600160e51b62461bcd02815260206004820152601560248201527f546f6b656e7320616c726561647920626f6f6b65640000000000000000000000604482015290519081900360640190fd5b6004546110a190429063ffffffff6121a116565b6001600160a01b03909116600090815260146020526040902055565b6000805b6001600160a01b0383166000908152600d6020526040902054811015611105576110fb6110ee8483612254565b839063ffffffff6121a116565b91506001016110c1565b50919050565b6001600160a01b0382166000908152600d6020526040812080548390811061112f57fe5b906000526020600020906007020160030154905092915050565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b15801561119757600080fd5b505afa1580156111ab573d6000803e3d6000fd5b505050506040513d60208110156111c157600080fd5b50516111cc57600080fd5b60009182526013602052604090912055565b6000805b6001600160a01b0383166000908152600d60205260409020548110156111055761120f6110ee84836121b3565b91506001016111e2565b806000600160d41b650544f4b45585026001600160c01b0319831614156112435750600b546113c1565b600160cc1b660544f4b5354455026001600160c01b03198416141561126b5750600c546113c1565b600160ca1b6614905313d0d2d5026001600160c01b03198416141561129357506007546113c1565b600160d01b655241434f4d4d026001600160c01b0319841614156112ba57506009546113c1565b600160d01b6552414d415843026001600160c01b0319841614156112e15750600a546113c1565b600160ca1b6610d05093d3d2d5026001600160c01b03198416141561131557610e106004548161130d57fe5b0490506113c1565b600160ca1b6610d05313d0d2d5026001600160c01b03198416141561134257620151806005548161130d57fe5b600160ca1b6613559313d0d2d5026001600160c01b03198416141561136f57620151806006548161130d57fe5b600160c21b67145553d313d0d2d5026001600160c01b03198416141561139d57620151806003548161130d57fe5b600160c81b664a4f494e464545026001600160c01b0319841614156113c157506008545b915091565b600a5481565b6002546001600160a01b031681565b60085481565b6001600160a01b0382166000908152600d6020526040812080548390811061140557fe5b906000526020600020906007020160010154905092915050565b60116020526000908152604090205481565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b15801561147f57600080fd5b505afa158015611493573d6000803e3d6000fd5b505050506040513d60208110156114a957600080fd5b50516114b457600080fd5b600181151514156115295760008281526013602052604090206001015460ff16156115295760408051600160e51b62461bcd02815260206004820152601c60248201527f436f766572206e6f746520616c7265616479206465706f736974656400000000604482015290519081900360640190fd5b600091825260136020526040909120600101805460ff1916911515919091179055565b600c5481565b60045481565b6001600160a01b0382166000908152600d6020526040812080548390811061157c57fe5b60009182526020909120600790910201546001600160a01b03169392505050565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b1580156115eb57600080fd5b505afa1580156115ff573d6000803e3d6000fd5b505050506040513d602081101561161557600080fd5b505161162057600080fd5b6001600160a01b0383166000908152600d60205260409020805461166a9183918590811061164a57fe5b9060005260206000209060070201600401546121a190919063ffffffff16565b6001600160a01b0384166000908152600d6020526040902080548490811061168e57fe5b906000526020600020906007020160040181905550505050565b60005460408051600160e11b632c1a733d02815233600482015290516001600160a01b0390921691635834e67a91602480820192602092909190829003018186803b1580156116f657600080fd5b505afa15801561170a573d6000803e3d6000fd5b505050506040513d602081101561172057600080fd5b505161172b57600080fd5b600160d41b650544f4b45585026001600160c01b03198316141561175757611752816122f6565b611921565b600160cc1b660544f4b5354455026001600160c01b03198316141561177f57611752816122fb565b600160ca1b6614905313d0d2d5026001600160c01b0319831614156117a75761175281612300565b600160d01b655241434f4d4d026001600160c01b0319831614156117ce5761175281612305565b600160d01b6552414d415843026001600160c01b0319831614156117f5576117528161230a565b600160ca1b6610d05093d3d2d5026001600160c01b0319831614156118215761175281610e100261230f565b600160ca1b6610d05313d0d2d5026001600160c01b03198316141561184e57611752816201518002612314565b600160ca1b6613559313d0d2d5026001600160c01b03198316141561187b57611752816201518002612319565b600160c21b67145553d313d0d2d5026001600160c01b0319831614156118a95761175281620151800261231e565b600160c81b664a4f494e464545026001600160c01b0319831614156118d15761175281612323565b60408051600160e51b62461bcd02815260206004820152601260248201527f496e76616c696420706172616d20636f64650000000000000000000000000000604482015290519081900360640190fd5b5050565b6000546001600160a01b031681565b600f6020908152600092835260408084209091529082529020805460019091015482565b6001600160a01b0382166000908152600d6020526040812080548390811061197c57fe5b906000526020600020906007020160060154905092915050565b6001600160a01b0382166000908152600e602052604081208054839081106119ba57fe5b60009182526020909120600290910201546001600160a01b03169392505050565b600e60205281600052604060002081815481106119f457fe5b6000918252602090912060029091020180546001909101546001600160a01b039091169250905082565b600d6020528160005260406000208181548110611a3757fe5b600091825260209091206007909102018054600182015460028301546003840154600485015460058601546006909601546001600160a01b0390951697509295509093909287565b60075481565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015611ad357600080fd5b505afa158015611ae7573d6000803e3d6000fd5b505050506040513d6020811015611afd57600080fd5b5051611b0857600080fd5b6001600160a01b03909116600090815260116020526040902055565b60035481565b6000546001600160a01b031615611b8d576000546001600160a01b03163314611b8d5760408051600160e51b62461bcd02815260206004820152600a6024820152600160b11b692737ba1036b0b9ba32b902604482015290519081900360640190fd5b600080546001600160a01b039092166001600160a01b0319928316811790915560018054909216179055565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015611c0757600080fd5b505afa158015611c1b573d6000803e3d6000fd5b505050506040513d6020811015611c3157600080fd5b5051611c3c57600080fd5b6001600160a01b0383166000908152600d60205260408120805484908110611c6057fe5b90600052602060002090600702016001015490506000600d6000866001600160a01b03166001600160a01b031681526020019081526020016000208481548110611ca657fe5b600091825260208083206007909202909101546001600160a01b0316808352600f82526040808420868552909252912060010154909150611ced908463ffffffff6121a116565b6001600160a01b039091166000908152600f602090815260408083209483529390529190912060010155505050565b60106020526000908152604090205481565b6000805460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015611d7d57600080fd5b505afa158015611d91573d6000803e3d6000fd5b505050506040513d6020811015611da757600080fd5b5051611db257600080fd5b6001600160a01b038381166000908152600e60209081526040808320815180830183528986168082528552600d84529184205482840190815281546001808201808555938752949095209251600290950290920180546001600160a01b031916949095169390931784555192810192909255611e2d91612328565b6001600160a01b039485166000908152600d60209081526040808320815160e081018352978916885287830185815242928901928352606089019788526080890185815260a08a0186815260c08b01878152845460018082018755958952969097209a516007909602909a0180546001600160a01b03191695909b16949094178a555190890155516002880155935160038701559251600486015592516005850155505160069092019190915590565b60095481565b6001600160a01b038116600090815260146020526040812054421015611f07575060015b919050565b6001600160a01b03166000908152600d602052604090205490565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b158015611f7557600080fd5b505afa158015611f89573d6000803e3d6000fd5b505050506040513d6020811015611f9f57600080fd5b5051611faa57600080fd5b6001600160a01b03909116600090815260126020526040902055565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b15801561201457600080fd5b505afa158015612028573d6000803e3d6000fd5b505050506040513d602081101561203e57600080fd5b505161204957600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600b5481565b6001546001600160a01b031681565b6001600160a01b03166000908152600e602052604090205490565b6000610e4b8383612254565b60126020526000908152604090205481565b60005460408051600160e21b6323c5b10702815233600482015290516001600160a01b0390921691638f16c41c91602480820192602092909190829003018186803b15801561210757600080fd5b505afa15801561211b573d6000803e3d6000fd5b505050506040513d602081101561213157600080fd5b505161213c57600080fd5b6001600160a01b0383166000908152600d60205260409020805482919084908110610d2657fe5b6001600160a01b0382166000908152600d6020526040812080548390811061218757fe5b906000526020600020906007020160040154905092915050565b600082820183811015610e4b57600080fd5b6001600160a01b0382166000908152600d60205260408120805482918291859081106121db57fe5b600091825260208083206007909202909101546001600160a01b038881168452600d909252604090922080549190921692508590811061221757fe5b60009182526020808320600160079093020191909101546001600160a01b039093168252600f815260408083209383529290522054949350505050565b6001600160a01b0382166000908152600d602052604081208054829182918590811061227c57fe5b600091825260208083206007909202909101546001600160a01b038881168452600d90925260409092208054919092169250859081106122b857fe5b6000918252602080832060016007909302018201546001600160a01b039094168352600f815260408084209484529390529190200154949350505050565b600b55565b600c55565b600755565b600955565b600a55565b600455565b600555565b600655565b600355565b600855565b60008282111561233757600080fd5b5090039056fea165627a7a72305820078ad808aa7a058fdad0b26f147a9abc48c77ceee7555c7d0e9a73b2795758fc0029

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

000000000000000000000000cb102cbfad94d71596d7d9172072da8b86e60fbd

-----Decoded View---------------
Arg [0] : _walletAdd (address): 0xCB102CbfaD94d71596d7d9172072Da8b86e60fBD

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000cb102cbfad94d71596d7d9172072da8b86e60fbd


Deployed Bytecode Sourcemap

789:25420:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;789:25420:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10470:361;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10470:361:3;;;;;;;;;;;;;:::i;:::-;;977:22;;;:::i;:::-;;;;;;;;;;;;;;;;5330:80;;;:::i;11086:403::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11086:403:3;;;;;;;;;;;;;:::i;20349:223::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20349:223:3;;;;;;;;:::i;3136:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3136:45:3;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1006:22;;;:::i;7861:311::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7861:311:3;;;;;;;;:::i;14281:256::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14281:256:3;;;;;;;;:::i;12396:681::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;12396:681:3;;;;;;;;;;;;;;;;;;;;;;:::i;6188:292::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6188:292:3;;;;;;;;:::i;19203:180::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19203:180:3;-1:-1:-1;;;;;19203:180:3;;:::i;15981:450::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15981:450:3;-1:-1:-1;;;;;15981:450:3;;:::i;8410:288::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8410:288:3;;;;;;;;:::i;17079:132::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17079:132:3;;;;;;;:::i;15327:440::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15327:440:3;-1:-1:-1;;;;;15327:440:3;;:::i;4306:968::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4306:968:3;-1:-1:-1;;;;;;4306:968:3;;:::i;:::-;;;;-1:-1:-1;;;;;;4306:968:3;;;;;;;;;;;;;;;;;;;;;1132:34;;;:::i;862:36::-;;;:::i;:::-;;;;-1:-1:-1;;;;;862:36:3;;;;;;;;;;;;;;1065:22;;;:::i;7299:289::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7299:289:3;;;;;;;;:::i;2763:68::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2763:68:3;-1:-1:-1;;;;;2763:68:3;;:::i;16633:262::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16633:262:3;;;;;;;;;:::i;1205:21::-;;;:::i;950:20::-;;;:::i;5650:324::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5650:324:3;;;;;;;;:::i;9876:373::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9876:373:3;;;;;;;;;;;;;:::i;21158:1066::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;21158:1066:3;;;;;;;;:::i;88:20:1:-;;;:::i;2458:89:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2458:89:3;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6730:318;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6730:318:3;;;;;;;;:::i;17495:330::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17495:330:3;;;;;;;;:::i;2237:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2237:57:3;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2237:57:3;;;;;;;;;;;;;;;;;;;;;1969:56;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1969:56:3;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1969:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:23;;;:::i;19929:250::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19929:250:3;;;;;;;;:::i;905:38::-;;;:::i;915:269:1:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;915:269:1;-1:-1:-1;;;;;915:269:1;;:::i;13350:682:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13350:682:3;;;;;;;;;;;;;:::i;2556:60::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2556:60:3;-1:-1:-1;;;;;2556:60:3;;:::i;18498:500::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18498:500:3;;;;;;;;;;;;;;;;;:::i;1094:31::-;;;:::i;19603:142::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19603:142:3;-1:-1:-1;;;;;19603:142:3;;:::i;:::-;;;;;;;;;;;;;;;;;;8882:218;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8882:218:3;-1:-1:-1;;;;;8882:218:3;;:::i;20763:238::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20763:238:3;;;;;;;;:::i;3963:120::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3963:120:3;-1:-1:-1;;;;;3963:120:3;;:::i;1173:25::-;;;:::i;115:30:1:-;;;:::i;18036:235:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18036:235:3;-1:-1:-1;;;;;18036:235:3;;:::i;14853:260::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14853:260:3;;;;;;;;:::i;2969:62::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2969:62:3;-1:-1:-1;;;;;2969:62:3;;:::i;11742:302::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11742:302:3;;;;;;;;;;;;;:::i;9327:282::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9327:282:3;;;;;;;;:::i;10470:361::-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;-1:-1:-1;;;;;10728:37:3;;;;;;:21;:37;;;;;:69;;:95;;10815:7;;10784:12;;10728:69;;;;;;;;;;;;;;;;:82;;;:86;;:95;;;;:::i;:::-;-1:-1:-1;;;;;10647:37:3;;;;;;:21;:37;;;;;:65;;10699:12;;10647:65;;;;;;;;;;;;;;;;:78;;:176;;;;10470:361;;;:::o;977:22::-;;;;:::o;5330:80::-;:::o;11086:403::-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;-1:-1:-1;;;;;11374:37:3;;;;;;:21;:37;;;;;:69;;:107;;11473:7;;11430:12;;11374:69;;;;;;;;;;;;;;;;:94;;;:98;;:107;;;;:::i;:::-;-1:-1:-1;;;;;11281:37:3;;;;;;:21;:37;;;;;:65;;11333:12;;11281:65;;;;;;;;;;;;;;;;:90;;:200;;;;11086:403;;;:::o;20349:223::-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;-1:-1:-1;;;;;20511:44:3;;;;;;;:28;:44;;;;;:53;20349:223::o;3136:45::-;;;;;;;;;;;;;;;;;;;;;:::o;1006:22::-;;;;:::o;7861:311::-;-1:-1:-1;;;;;8071:59:3;;8032:11;8071:59;;;:21;:59;;;;;:81;;8131:20;;8071:81;;;;;;;;;;;;;;;;:93;;;8062:102;;7861:311;;;;:::o;14281:256::-;14438:4;14468:61;14500:14;14516:12;14468:31;:61::i;:::-;14461:68;14281:256;-1:-1:-1;;;14281:256:3:o;12396:681::-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;-1:-1:-1;;;;;12748:53:3;;;;;;:29;:53;;;;;;;;:93;;;;;;;;:110;:133;;12863:17;12748:133;:114;:133;:::i;:::-;-1:-1:-1;;;;;12639:53:3;;;;;;;:29;:53;;;;;;;;:75;;;;;;;;;:242;;;;12915:154;;;;;;;12693:20;;12639:53;;12915:154;;;;;;;;;;;12396:681;;;;:::o;6188:292::-;-1:-1:-1;;;;;6394:51:3;;6343:17;6394:51;;;:21;:51;;;;;:65;;6446:12;;6394:65;;;;;;;;;;;;;;;;:78;;;6379:93;;6188:292;;;;:::o;19203:180::-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;19278:21:3;19295:3;19278:16;:21::i;:::-;19277:22;19269:56;;;;;-1:-1:-1;;;;;19269:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;19366:8;;19358:17;;:3;;:17;:7;:17;:::i;:::-;-1:-1:-1;;;;;19336:19:3;;;;;;;:14;:19;;;;;:39;19203:180::o;15981:450::-;16115:28;;16200:224;-1:-1:-1;;;;;16221:37:3;;;;;;:21;:37;;;;;:44;16217:48;;16200:224;;;16313:99;16359:52;16393:14;16409:1;16359:33;:52::i;:::-;16313:23;;:99;:27;:99;:::i;:::-;16287:125;-1:-1:-1;16267:3:3;;16200:224;;;;15981:450;;;:::o;8410:288::-;-1:-1:-1;;;;;8613:51:3;;8575:11;8613:51;;;:21;:51;;;;;:65;;8665:12;;8613:65;;;;;;;;;;;;;;;;:77;;;8604:86;;8410:288;;;;:::o;17079:132::-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;17167:20:3;;;;:11;:20;;;;;;:36;17079:132::o;15327:440::-;15461:26;;15542:218;-1:-1:-1;;;;;15563:37:3;;;;;;:21;:37;;;;;:44;15559:48;;15542:218;;;15653:95;15697:50;15729:14;15745:1;15697:31;:50::i;15653:95::-;15629:119;-1:-1:-1;15609:3:3;;15542:218;;4306:968;4415:4;4368:14;-1:-1:-1;;;;;;;;;;;4434:16:3;;;4430:836;;;-1:-1:-1;4475:13:3;;4430:836;;;-1:-1:-1;;;;;;;;;;;4513:17:3;;;4509:757;;;-1:-1:-1;4555:9:3;;4509:757;;;-1:-1:-1;;;;;;;;;;;4588:17:3;;;4584:682;;;-1:-1:-1;4630:11:3;;4584:682;;;-1:-1:-1;;;;;;;;;;;4665:16:3;;;4661:605;;;-1:-1:-1;4706:19:3;;4661:605;;;-1:-1:-1;;;;;;;;;;;4749:16:3;;;4745:521;;;-1:-1:-1;4790:22:3;;4745:521;;;-1:-1:-1;;;;;;;;;;;4836:17:3;;;4832:434;;;4890:7;4878:8;;:20;;;;;;4872:26;;4832:434;;;-1:-1:-1;;;;;;;;;;;4922:17:3;;;4918:348;;;4978:6;4964:10;;:21;;;;4918:348;-1:-1:-1;;;;;;;;;;;5009:17:3;;;5005:261;;;5065:6;5051:10;;:21;;;;5005:261;-1:-1:-1;;;;;;;;;;;5096:18:3;;;5092:174;;;5169:6;5139:26;;:37;;;;5092:174;-1:-1:-1;;;;;;;;;;;5200:17:3;;;5196:70;;;-1:-1:-1;5242:10:3;;5196:70;4306:968;;;:::o;1132:34::-;;;;:::o;862:36::-;;;-1:-1:-1;;;;;862:36:3;;:::o;1065:22::-;;;;:::o;7299:289::-;-1:-1:-1;;;;;7495:51:3;;7454:12;7495:51;;;:21;:51;;;;;:65;;7547:12;;7495:65;;;;;;;;;;;;;;;;:85;;;7485:95;;7299:289;;;;:::o;2763:68::-;;;;;;;;;;;;;:::o;16633:262::-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;16725:4:3;16717:12;;;;16713:123;;;16755:20;;;;:11;:20;;;;;:32;;;;;16754:33;16746:74;;;;;-1:-1:-1;;;;;16746:74:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;16848:20;;;;:11;:20;;;;;;:32;;:39;;-1:-1:-1;;16848:39:3;;;;;;;;;;16633:262::o;1205:21::-;;;;:::o;950:20::-;;;;:::o;5650:324::-;-1:-1:-1;;;;;5879:51:3;;5807:29;5879:51;;;:21;:51;;;;;:65;;5931:12;;5879:65;;;;;;;;;;;;;;;;;;;:87;-1:-1:-1;;;;;5879:87:3;;5650:324;-1:-1:-1;;;5650:324:3:o;9876:373::-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;-1:-1:-1;;;;;10144:37:3;;;;;;:21;:37;;;;;:69;;:97;;10233:7;;10200:12;;10144:69;;;;;;;;;;;;;;;;:84;;;:88;;:97;;;;:::i;:::-;-1:-1:-1;;;;;10061:37:3;;;;;;:21;:37;;;;;:65;;10113:12;;10061:65;;;;;;;;;;;;;;;;:80;;:180;;;;9876:373;;;:::o;21158:1066::-;21237:2;;:36;;;-1:-1:-1;;;;;21237:36:3;;21262:10;21237:36;;;;;;-1:-1:-1;;;;;21237:2:3;;;;:24;;:36;;;;;;;;;;;;;;;:2;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;21237:36:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21237:36:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21237:36:3;21229:45;;;;;;-1:-1:-1;;;;;;;;;;;21289:16:3;;;21285:931;;;21324:22;21342:3;21324:17;:22::i;:::-;21285:931;;;-1:-1:-1;;;;;;;;;;;21371:17:3;;;21367:849;;;21407:18;21421:3;21407:13;:18::i;21367:849::-;-1:-1:-1;;;;;;;;;;;21449:17:3;;;21445:771;;;21485:23;21504:3;21485:18;:23::i;21445:771::-;-1:-1:-1;;;;;;;;;;;21532:16:3;;;21528:688;;;21567:28;21591:3;21567:23;:28::i;21528:688::-;-1:-1:-1;;;;;;;;;;;21619:16:3;;;21615:601;;;21654:31;21681:3;21654:26;:31::i;21615:601::-;-1:-1:-1;;;;;;;;;;;21709:17:3;;;21705:511;;;21745:30;21761:3;21767:7;21761:13;21745:15;:30::i;21705:511::-;-1:-1:-1;;;;;;;;;;;21799:17:3;;;21795:421;;;21835:31;21853:3;21859:6;21853:12;21835:17;:31::i;21795:421::-;-1:-1:-1;;;;;;;;;;;21890:17:3;;;21886:330;;;21926:31;21944:3;21950:6;21944:12;21926:17;:31::i;21886:330::-;-1:-1:-1;;;;;;;;;;;21981:18:3;;;21977:239;;;22018:44;22049:3;22055:6;22049:12;22018:30;:44::i;21977:239::-;-1:-1:-1;;;;;;;;;;;22086:17:3;;;22082:134;;;22122:19;22137:3;22122:14;:19::i;22082:134::-;22176:28;;;-1:-1:-1;;;;;22176:28:3;;;;;;;;;;;;;;;;;;;;;;;;;;;22082:134;21158:1066;;:::o;88:20:1:-;;;-1:-1:-1;;;;;88:20:1;;:::o;2458:89:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6730:318::-;-1:-1:-1;;;;;6950:51:3;;6903:15;6950:51;;;:21;:51;;;;;:65;;7002:12;;6950:65;;;;;;;;;;;;;;;;:90;;;6937:103;;6730:318;;;;:::o;17495:330::-;-1:-1:-1;;;;;17722:59:3;;17667:21;17722:59;;;:21;:59;;;;;:81;;17782:20;;17722:81;;;;;;;;;;;;;;;;;;;:95;-1:-1:-1;;;;;17722:95:3;;17495:330;-1:-1:-1;;;17495:330:3:o;2237:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2237:57:3;;;;-1:-1:-1;2237:57:3;-1:-1:-1;2237:57:3;:::o;1969:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1969:56:3;;;;-1:-1:-1;1969:56:3;;-1:-1:-1;1969:56:3;;;;;:::o;1035:23::-;;;;:::o;19929:250::-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;-1:-1:-1;;;;;20102:60:3;;;;;;;:36;:60;;;;;:69;19929:250::o;905:38::-;;;;:::o;915:269:1:-;1013:1;998:2;-1:-1:-1;;;;;998:2:1;990:25;986:106;;1048:2;;-1:-1:-1;;;;;1048:2:1;1055:10;1040:25;1032:48;;;;;-1:-1:-1;;;;;1032:48:1;;;;;;;;;;;;-1:-1:-1;;;;;1032:48:1;;;;;;;;;;;;;;;1102:2;:31;;-1:-1:-1;;;;;1102:31:1;;;-1:-1:-1;;;;;;1102:31:1;;;;;;;;;1144:32;;;;;;;;915:269::o;13350:682:3:-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;-1:-1:-1;;;;;13566:51:3;;13539:24;13566:51;;;:21;:51;;;;;:65;;13618:12;;13566:65;;;;;;;;;;;;;;;;:85;;;13539:112;;13662:29;13694:21;:51;13730:14;-1:-1:-1;;;;;13694:51:3;-1:-1:-1;;;;;13694:51:3;;;;;;;;;;;;13746:12;13694:65;;;;;;;;;;;;;;;;;;;;;;;:87;-1:-1:-1;;;;;13694:87:3;13901:70;;;:29;:70;;;;;;:91;;;;;;;;13694:87;13901:110;;13694:87;;-1:-1:-1;13901:123:3;;14016:7;13901:123;:114;:123;:::i;:::-;-1:-1:-1;;;;;13792:52:3;;;;;;;:29;:52;;;;;;;;:73;;;;;;;;;;:106;;:232;-1:-1:-1;;;13350:682:3:o;2556:60::-;;;;;;;;;;;;;:::o;18498:500::-;18676:12;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;-1:-1:-1;;;;;18718:45:3;;;;;;;:21;:45;;;;;;;;18783:68;;;;;;;;;;;;;18806:37;;:21;:37;;;;;:44;18783:68;;;;;;27:10:-1;;18858:1:3;23:18:-1;;;45:23;;;18718:134:3;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18718:134:3;;;;;;;;;;;;;;;;;;;18717:143;;:140;:143::i;:::-;-1:-1:-1;;;;;18871:37:3;;;;;;;:21;:37;;;;;;;;18928:61;;;;;;;;;;;;;;;;;;18967:3;18928:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;18871:119:3;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18871:119:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18871:119:3;;;;;;;;;18928:61;18498:500::o;1094:31::-;;;;:::o;19603:142::-;-1:-1:-1;;;;;19693:19:3;;19662:8;19693:19;;;:14;:19;;;;;;19687:3;:25;19683:54;;;-1:-1:-1;19733:4:3;19683:54;19603:142;;;:::o;8882:218::-;-1:-1:-1;;;;;9048:37:3;9010:11;9048:37;;;:21;:37;;;;;:44;;8882:218::o;20763:238::-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;-1:-1:-1;;;;;20930:54:3;;;;;;;:30;:54;;;;;:63;20763:238::o;3963:120::-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;4051:13:3;:24;;-1:-1:-1;;;;;;4051:24:3;-1:-1:-1;;;;;4051:24:3;;;;;;;;;;3963:120::o;1173:25::-;;;;:::o;115:30:1:-;;;-1:-1:-1;;;;;115:30:1;;:::o;18036:235:3:-;-1:-1:-1;;;;;18211:45:3;18173:11;18211:45;;;:21;:45;;;;;:52;;18036:235::o;14853:260::-;15012:4;15042:63;15076:14;15092:12;15042:33;:63::i;2969:62::-;;;;;;;;;;;;;:::o;11742:302::-;195:2:1;;:25;;;-1:-1:-1;;;;;195:25:1;;209:10;195:25;;;;;;-1:-1:-1;;;;;195:2:1;;;;:13;;:25;;;;;;;;;;;;;;;:2;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;195:25:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;195:25:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;195:25:1;187:34;;;;;;-1:-1:-1;;;;;11936:37:3;;;;;;:21;:37;;;;;:65;;12029:7;;11936:37;11988:12;;11936:65;;;;;9327:282;-1:-1:-1;;;;;9521:51:3;;9483:11;9521:51;;;:21;:51;;;;;:65;;9573:12;;9521:65;;;;;;;;;;;;;;;;:80;;;9512:89;;9327:282;;;;:::o;1425:150:2:-;1483:7;1515:5;;;1539:6;;;;1531:15;;;;;22494:632:3;-1:-1:-1;;;;;22786:51:3;;22654:11;22786:51;;;:21;:51;;;;;:65;;22654:11;;;;22838:12;;22786:65;;;;;;;;;;;;;;;;;;;;;:87;-1:-1:-1;;;;;22907:51:3;;;;;:21;:51;;;;;;;:65;;22786:87;;;;;-1:-1:-1;22959:12:3;;22907:65;;;;;;;;;;;;;;:85;:65;;;;;:85;;;;;-1:-1:-1;;;;;23012:67:3;;;;;:29;:67;;;;;;:89;;;;;;;:106;;22494:632;-1:-1:-1;;;;22494:632:3:o;23399:636::-;-1:-1:-1;;;;;23693:51:3;;23561:11;23693:51;;;:21;:51;;;;;:65;;23561:11;;;;23745:12;;23693:65;;;;;;;;;;;;;;;;;;;;;:87;-1:-1:-1;;;;;23814:51:3;;;;;:21;:51;;;;;;;:65;;23693:87;;;;;-1:-1:-1;23866:12:3;;23814:65;;;;;;;;;;;;;;:85;:65;;;;;:85;;;-1:-1:-1;;;;;23919:67:3;;;;;:29;:67;;;;;;:89;;;;;;;;;:108;;;23399:636;-1:-1:-1;;;;23399:636:3:o;24600:86::-;24658:13;:20;24600:86::o;24781:78::-;24835:9;:16;24781:78::o;24976:87::-;25036:11;:19;24976:87::o;24162:98::-;24226:19;:26;24162:98::o;24391:104::-;24458:22;:29;24391:104::o;25308:81::-;25365:8;:16;25308:81::o;25529:83::-;25587:10;:17;25529:83::o;25755:::-;25813:10;:17;25755:83::o;25934:112::-;26005:26;:33;25934:112::o;26120:86::-;26178:10;:20;26120:86::o;1199:150:2:-;1257:7;1290:1;1285;:6;;1277:15;;;;;;-1:-1:-1;1315:5:2;;;1199:150::o

Swarm Source

bzzr://078ad808aa7a058fdad0b26f147a9abc48c77ceee7555c7d0e9a73b2795758fc

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

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.