ETH Price: $3,643.69 (-1.53%)

Contract

0x698ea00f5F9716c9A5B89D1f1E5C17c01E1829F7
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deposit114271502020-12-10 19:47:271461 days ago1607629647IN
0x698ea00f...01E1829F7
0 ETH0.01999404180
Withdraw113926812020-12-05 12:38:581466 days ago1607171938IN
0x698ea00f...01E1829F7
0 ETH0.0020046621.7
Claim Divs113926692020-12-05 12:36:331466 days ago1607171793IN
0x698ea00f...01E1829F7
0 ETH0.0016414721.7
Withdraw113768872020-12-03 2:24:011468 days ago1606962241IN
0x698ea00f...01E1829F7
0 ETH0.00124816
Withdraw113731602020-12-02 12:48:051469 days ago1606913285IN
0x698ea00f...01E1829F7
0 ETH0.001801823.1
Claim Divs113731592020-12-02 12:47:571469 days ago1606913277IN
0x698ea00f...01E1829F7
0 ETH0.0014008723.1
Withdraw113705672020-12-02 3:08:091469 days ago1606878489IN
0x698ea00f...01E1829F7
0 ETH0.01404216180
Claim Divs113696182020-12-01 23:23:481469 days ago1606865028IN
0x698ea00f...01E1829F7
0 ETH0.01631592180
Claim Divs113688402020-12-01 20:28:031470 days ago1606854483IN
0x698ea00f...01E1829F7
0 ETH0.0003852314
Claim Divs113682582020-12-01 18:30:451470 days ago1606847445IN
0x698ea00f...01E1829F7
0 ETH0.0015128820
Withdraw113643132020-12-01 3:50:301470 days ago1606794630IN
0x698ea00f...01E1829F7
0 ETH0.01404216180
Claim Divs113643122020-12-01 3:50:161470 days ago1606794616IN
0x698ea00f...01E1829F7
0 ETH0.01631592180
Withdraw113635612020-12-01 1:05:351470 days ago1606784735IN
0x698ea00f...01E1829F7
0 ETH0.005851875
Deposit113630122020-11-30 23:04:571470 days ago1606777497IN
0x698ea00f...01E1829F7
0 ETH0.02538972180
Withdraw113621332020-11-30 19:54:501471 days ago1606766090IN
0x698ea00f...01E1829F7
0 ETH0.0037804235
Withdraw113611682020-11-30 16:17:471471 days ago1606753067IN
0x698ea00f...01E1829F7
0 ETH0.01404432180
Claim Divs113611662020-11-30 16:17:141471 days ago1606753034IN
0x698ea00f...01E1829F7
0 ETH0.01091592180
Withdraw113611522020-11-30 16:14:191471 days ago1606752859IN
0x698ea00f...01E1829F7
0 ETH0.0058575
Withdraw113610922020-11-30 16:01:361471 days ago1606752096IN
0x698ea00f...01E1829F7
0 ETH0.001131650
Withdraw113610772020-11-30 15:59:111471 days ago1606751951IN
0x698ea00f...01E1829F7
0 ETH0.0046807260
Deposit113605972020-11-30 14:09:091471 days ago1606745349IN
0x698ea00f...01E1829F7
0 ETH0.0085595
Deposit113605542020-11-30 13:59:341471 days ago1606744774IN
0x698ea00f...01E1829F7
0 ETH0.00927103
Deposit113605522020-11-30 13:59:131471 days ago1606744753IN
0x698ea00f...01E1829F7
0 ETH0.0103103
Withdraw113605042020-11-30 13:50:451471 days ago1606744245IN
0x698ea00f...01E1829F7
0 ETH0.00436856
Withdraw113604952020-11-30 13:49:201471 days ago1606744160IN
0x698ea00f...01E1829F7
0 ETH0.01404216180
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
YFIClassicStaking

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-10-13
*/

pragma solidity 0.6.12;

// SPDX-License-Identifier: none

library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

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

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

library EnumerableSet {

    struct Set {
        bytes32[] _values;

        mapping (bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);

            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        // We read and store the value's index to prevent multiple reads from the same storage slot
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) { // Equivalent to contains(set, value)
        
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;


            bytes32 lastvalue = set._values[lastIndex];

            // Move the last value to the index where the value to delete is
            set._values[toDeleteIndex] = lastvalue;
            // Update the index for the moved value
            set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based

            // Delete the slot where the moved value was stored
            set._values.pop();

            // Delete the index for the deleted slot
            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    /**
     * @dev Returns true if the value is in the set. O(1).
     */
    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }

    // AddressSet

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(value)));
    }

    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(value)));
    }

    /**
     * @dev Returns true if the value is in the set. O(1).
     */
    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(value)));
    }

    /**
     * @dev Returns the number of values in the set. O(1).
     */
    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint256(_at(set._inner, index)));
    }


    // UintSet

    struct UintSet {
        Set _inner;
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    /**
     * @dev Returns true if the value is in the set. O(1).
     */
    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }
}

contract Ownable {
  address public owner;


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

  constructor() public {
    owner = msg.sender;
  }

  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  function transferOwnership(address newOwner) onlyOwner public {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }
}


interface Token {
    function transferFrom(address, address, uint) external returns (bool);
    function transfer(address, uint) external returns (bool);
}

contract YFIClassicStaking is Ownable {
    using SafeMath for uint;
    using EnumerableSet for EnumerableSet.AddressSet;
    
    event RewardsTransferred(address holder, uint amount);
    
    // YFIC token contract address
    address public constant tokenAddress = 0x704135ECBb0BEA17FD3DAad8E3583ccC6f6f7f0E;
    
    // reward rate 100.00% per year
    uint public constant rewardRate = 10000;            // 10000 ÷ 100 = 100 %
    uint public constant rewardInterval = 365 days;
    
    // staking fee 1 percent
    uint public constant stakingFeeRate = 100;           // 100 ÷ 100 =   1 %       
    
    // unstaking fee 0.5 percent
    uint public constant unstakingFeeRate = 50;         // 50 ÷ 100 = 0.5 %
    
    // unstaking possible after 72 hours // 3 Days
    uint public constant cliffTime = 72 hours;
    
    uint public totalClaimedRewards = 0;
    
    EnumerableSet.AddressSet private holders;
    
    mapping (address => uint) public depositedTokens;
    mapping (address => uint) public stakingTime;
    mapping (address => uint) public lastClaimedTime;
    mapping (address => uint) public totalEarnedTokens;
    
    function updateAccount(address account) private {
        uint pendingDivs = getPendingDivs(account);
        if (pendingDivs > 0) {
            require(Token(tokenAddress).transfer(account, pendingDivs), "Could not transfer tokens.");
            totalEarnedTokens[account] = totalEarnedTokens[account].add(pendingDivs);
            totalClaimedRewards = totalClaimedRewards.add(pendingDivs);
            emit RewardsTransferred(account, pendingDivs);
        }
        lastClaimedTime[account] = now;
    }
    
    function getPendingDivs(address _holder) public view returns (uint) {
        if (!holders.contains(_holder)) return 0;
        if (depositedTokens[_holder] == 0) return 0;

        uint timeDiff = now.sub(lastClaimedTime[_holder]);
        uint stakedAmount = depositedTokens[_holder];
        
        uint pendingDivs = stakedAmount
                            .mul(rewardRate)
                            .mul(timeDiff)
                            .div(rewardInterval)
                            .div(1e4);
            
        return pendingDivs;
    }
    
    function getNumberOfHolders() public view returns (uint) {
        return holders.length();
    }
    
    
    function deposit(uint amountToStake) public {
        require(amountToStake > 0, "Cannot deposit 0 Tokens");
        require(Token(tokenAddress).transferFrom(msg.sender, address(this), amountToStake), "Insufficient Token Allowance");
        
        updateAccount(msg.sender);
        
        uint fee = amountToStake.mul(stakingFeeRate).div(1e4);
        uint amountAfterFee = amountToStake.sub(fee);
        require(Token(tokenAddress).transfer(owner, fee), "Could not transfer deposit fee.");
        
        depositedTokens[msg.sender] = depositedTokens[msg.sender].add(amountAfterFee);
        
        if (!holders.contains(msg.sender)) {
            holders.add(msg.sender);
            stakingTime[msg.sender] = now;
        }
    }
    
    function withdraw(uint amountToWithdraw) public {
        require(depositedTokens[msg.sender] >= amountToWithdraw, "Invalid amount to withdraw");
        
        require(now.sub(stakingTime[msg.sender]) > cliffTime, "You recently staked, please wait before withdrawing.");
        
        updateAccount(msg.sender);
        
        uint fee = amountToWithdraw.mul(unstakingFeeRate).div(1e4);
        uint amountAfterFee = amountToWithdraw.sub(fee);
        
        require(Token(tokenAddress).transfer(owner, fee), "Could not transfer withdraw fee.");
        require(Token(tokenAddress).transfer(msg.sender, amountAfterFee), "Could not transfer tokens.");
        
        depositedTokens[msg.sender] = depositedTokens[msg.sender].sub(amountToWithdraw);
        
        if (holders.contains(msg.sender) && depositedTokens[msg.sender] == 0) {
            holders.remove(msg.sender);
        }
    }
    
    function claimDivs() public {
        updateAccount(msg.sender);
    }
    
    
    uint private constant stakingAndDaoTokens = 7350e18;
    
    function getStakingAndDaoAmount() public view returns (uint) {
        if (totalClaimedRewards >= stakingAndDaoTokens) {
            return 0;
        }
        uint remaining = stakingAndDaoTokens.sub(totalClaimedRewards);
        return remaining;
    }
    
    // function to allow admin to claim *other* ERC20 tokens sent to this contract (by mistake)
    function transferAnyERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        if (_tokenAddr == tokenAddress) {
            if (_amount > getStakingAndDaoAmount()) {
                revert();
            }
            totalClaimedRewards = totalClaimedRewards.add(_amount);
        }
        Token(_tokenAddr).transfer(_to, _amount);
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsTransferred","type":"event"},{"inputs":[],"name":"claimDivs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cliffTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToStake","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"getPendingDivs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStakingAndDaoAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalEarnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstakingFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600060015534801561001557600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a20806100656000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063c326bf4f11610071578063c326bf4f14610429578063d578ceab14610481578063d816c7d51461049f578063f2fde38b146104bd578063f3f91fa0146105015761012c565b80638da5cb5b1461031d57806398896d10146103515780639d76ea58146103a9578063b6b55f25146103dd578063bec4de3f1461040b5761012c565b8063583d42fd116100f4578063583d42fd146101c35780635ef057be1461021b5780636270cd18146102395780636a395ccb146102915780637b0a47ee146102ff5761012c565b80630f1a64441461013157806319aa70e71461014f578063268cab49146101595780632e1a7d4d14610177578063308feec3146101a5575b600080fd5b610139610559565b6040518082815260200191505060405180910390f35b610157610560565b005b61016161056b565b6040518082815260200191505060405180910390f35b6101a36004803603602081101561018d57600080fd5b81019080803590602001909291905050506105b4565b005b6101ad610af9565b6040518082815260200191505060405180910390f35b610205600480360360208110156101d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b0a565b6040518082815260200191505060405180910390f35b610223610b22565b6040518082815260200191505060405180910390f35b61027b6004803603602081101561024f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b27565b6040518082815260200191505060405180910390f35b6102fd600480360360608110156102a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b3f565b005b610307610cc1565b6040518082815260200191505060405180910390f35b610325610cc7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103936004803603602081101561036757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ceb565b6040518082815260200191505060405180910390f35b6103b1610e5a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610409600480360360208110156103f357600080fd5b8101908080359060200190929190505050610e72565b005b6104136112e2565b6040518082815260200191505060405180910390f35b61046b6004803603602081101561043f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ea565b6040518082815260200191505060405180910390f35b610489611302565b6040518082815260200191505060405180910390f35b6104a7611308565b6040518082815260200191505060405180910390f35b6104ff600480360360208110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061130d565b005b6105436004803603602081101561051757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061145c565b6040518082815260200191505060405180910390f35b6203f48081565b61056933611474565b565b600069018e71bd8a07f11800006001541061058957600090506105b1565b60006105aa60015469018e71bd8a07f118000061170a90919063ffffffff16565b9050809150505b90565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b6203f4806106bf600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261170a90919063ffffffff16565b11610715576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119b76034913960400191505060405180910390fd5b61071e33611474565b600061074861271061073a60328561172190919063ffffffff16565b61175090919063ffffffff16565b9050600061075f828461170a90919063ffffffff16565b905073704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561080657600080fd5b505af115801561081a573d6000803e3d6000fd5b505050506040513d602081101561083057600080fd5b81019080805190602001909291905050506108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74207472616e73666572207769746864726177206665652e81525060200191505060405180910390fd5b73704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561093857600080fd5b505af115801561094c573d6000803e3d6000fd5b505050506040513d602081101561096257600080fd5b81019080805190602001909291905050506109e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b610a3783600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461170a90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a8e33600261176990919063ffffffff16565b8015610ad957506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15610af457610af233600261179990919063ffffffff16565b505b505050565b6000610b0560026117c9565b905090565b60056020528060005260406000206000915090505481565b606481565b60076020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b9757600080fd5b73704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c0f57610be761056b565b811115610bf357600080fd5b610c08816001546117de90919063ffffffff16565b6001819055505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c8057600080fd5b505af1158015610c94573d6000803e3d6000fd5b505050506040513d6020811015610caa57600080fd5b810190808051906020019092919050505050505050565b61271081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d0182600261176990919063ffffffff16565b610d0e5760009050610e55565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610d5f5760009050610e55565b6000610db3600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261170a90919063ffffffff16565b90506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000610e4c612710610e3e6301e13380610e3087610e226127108961172190919063ffffffff16565b61172190919063ffffffff16565b61175090919063ffffffff16565b61175090919063ffffffff16565b90508093505050505b919050565b73704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e81565b60008111610ee8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b73704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b505050506040513d6020811015610fb557600080fd5b8101908080519060200190929190505050611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b61104133611474565b600061106b61271061105d60648561172190919063ffffffff16565b61175090919063ffffffff16565b90506000611082828461170a90919063ffffffff16565b905073704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561112957600080fd5b505af115801561113d573d6000803e3d6000fd5b505050506040513d602081101561115357600080fd5b81019080805190602001909291905050506111d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f74207472616e73666572206465706f736974206665652e0081525060200191505060405180910390fd5b61122881600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117de90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061127f33600261176990919063ffffffff16565b6112dd576112973360026117fa90919063ffffffff16565b5042600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6301e1338081565b60046020528060005260406000206000915090505481565b60015481565b603281565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461136557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561139f57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915090505481565b600061147f82610ceb565b905060008111156116c25773704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561150f57600080fd5b505af1158015611523573d6000803e3d6000fd5b505050506040513d602081101561153957600080fd5b81019080805190602001909291905050506115bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b61160e81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117de90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611666816001546117de90919063ffffffff16565b6001819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008282111561171657fe5b818303905092915050565b6000808284029050600084148061174057508284828161173d57fe5b04145b61174657fe5b8091505092915050565b60008082848161175c57fe5b0490508091505092915050565b6000611791836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61182a565b905092915050565b60006117c1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61184d565b905092915050565b60006117d782600001611935565b9050919050565b6000808284019050838110156117f057fe5b8091505092915050565b6000611822836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611946565b905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114611929576000600182039050600060018660000180549050039050600086600001828154811061189857fe5b90600052602060002001549050808760000184815481106118b557fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806118ed57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061192f565b60009150505b92915050565b600081600001805490509050919050565b6000611952838361182a565b6119ab5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506119b0565b600090505b9291505056fe596f7520726563656e746c79207374616b65642c20706c656173652077616974206265666f7265207769746864726177696e672ea2646970667358221220e36987e4fb9267a66e4f7bdb2720322bb2ccc7ebf89c6cedcafe59c563a697da64736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063c326bf4f11610071578063c326bf4f14610429578063d578ceab14610481578063d816c7d51461049f578063f2fde38b146104bd578063f3f91fa0146105015761012c565b80638da5cb5b1461031d57806398896d10146103515780639d76ea58146103a9578063b6b55f25146103dd578063bec4de3f1461040b5761012c565b8063583d42fd116100f4578063583d42fd146101c35780635ef057be1461021b5780636270cd18146102395780636a395ccb146102915780637b0a47ee146102ff5761012c565b80630f1a64441461013157806319aa70e71461014f578063268cab49146101595780632e1a7d4d14610177578063308feec3146101a5575b600080fd5b610139610559565b6040518082815260200191505060405180910390f35b610157610560565b005b61016161056b565b6040518082815260200191505060405180910390f35b6101a36004803603602081101561018d57600080fd5b81019080803590602001909291905050506105b4565b005b6101ad610af9565b6040518082815260200191505060405180910390f35b610205600480360360208110156101d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b0a565b6040518082815260200191505060405180910390f35b610223610b22565b6040518082815260200191505060405180910390f35b61027b6004803603602081101561024f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b27565b6040518082815260200191505060405180910390f35b6102fd600480360360608110156102a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b3f565b005b610307610cc1565b6040518082815260200191505060405180910390f35b610325610cc7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103936004803603602081101561036757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ceb565b6040518082815260200191505060405180910390f35b6103b1610e5a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610409600480360360208110156103f357600080fd5b8101908080359060200190929190505050610e72565b005b6104136112e2565b6040518082815260200191505060405180910390f35b61046b6004803603602081101561043f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ea565b6040518082815260200191505060405180910390f35b610489611302565b6040518082815260200191505060405180910390f35b6104a7611308565b6040518082815260200191505060405180910390f35b6104ff600480360360208110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061130d565b005b6105436004803603602081101561051757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061145c565b6040518082815260200191505060405180910390f35b6203f48081565b61056933611474565b565b600069018e71bd8a07f11800006001541061058957600090506105b1565b60006105aa60015469018e71bd8a07f118000061170a90919063ffffffff16565b9050809150505b90565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b6203f4806106bf600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261170a90919063ffffffff16565b11610715576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119b76034913960400191505060405180910390fd5b61071e33611474565b600061074861271061073a60328561172190919063ffffffff16565b61175090919063ffffffff16565b9050600061075f828461170a90919063ffffffff16565b905073704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561080657600080fd5b505af115801561081a573d6000803e3d6000fd5b505050506040513d602081101561083057600080fd5b81019080805190602001909291905050506108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74207472616e73666572207769746864726177206665652e81525060200191505060405180910390fd5b73704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561093857600080fd5b505af115801561094c573d6000803e3d6000fd5b505050506040513d602081101561096257600080fd5b81019080805190602001909291905050506109e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b610a3783600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461170a90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a8e33600261176990919063ffffffff16565b8015610ad957506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15610af457610af233600261179990919063ffffffff16565b505b505050565b6000610b0560026117c9565b905090565b60056020528060005260406000206000915090505481565b606481565b60076020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b9757600080fd5b73704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c0f57610be761056b565b811115610bf357600080fd5b610c08816001546117de90919063ffffffff16565b6001819055505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c8057600080fd5b505af1158015610c94573d6000803e3d6000fd5b505050506040513d6020811015610caa57600080fd5b810190808051906020019092919050505050505050565b61271081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d0182600261176990919063ffffffff16565b610d0e5760009050610e55565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610d5f5760009050610e55565b6000610db3600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261170a90919063ffffffff16565b90506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000610e4c612710610e3e6301e13380610e3087610e226127108961172190919063ffffffff16565b61172190919063ffffffff16565b61175090919063ffffffff16565b61175090919063ffffffff16565b90508093505050505b919050565b73704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e81565b60008111610ee8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b73704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b505050506040513d6020811015610fb557600080fd5b8101908080519060200190929190505050611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b61104133611474565b600061106b61271061105d60648561172190919063ffffffff16565b61175090919063ffffffff16565b90506000611082828461170a90919063ffffffff16565b905073704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561112957600080fd5b505af115801561113d573d6000803e3d6000fd5b505050506040513d602081101561115357600080fd5b81019080805190602001909291905050506111d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f74207472616e73666572206465706f736974206665652e0081525060200191505060405180910390fd5b61122881600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117de90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061127f33600261176990919063ffffffff16565b6112dd576112973360026117fa90919063ffffffff16565b5042600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6301e1338081565b60046020528060005260406000206000915090505481565b60015481565b603281565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461136557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561139f57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915090505481565b600061147f82610ceb565b905060008111156116c25773704135ecbb0bea17fd3daad8e3583ccc6f6f7f0e73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561150f57600080fd5b505af1158015611523573d6000803e3d6000fd5b505050506040513d602081101561153957600080fd5b81019080805190602001909291905050506115bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b61160e81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117de90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611666816001546117de90919063ffffffff16565b6001819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008282111561171657fe5b818303905092915050565b6000808284029050600084148061174057508284828161173d57fe5b04145b61174657fe5b8091505092915050565b60008082848161175c57fe5b0490508091505092915050565b6000611791836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61182a565b905092915050565b60006117c1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61184d565b905092915050565b60006117d782600001611935565b9050919050565b6000808284019050838110156117f057fe5b8091505092915050565b6000611822836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611946565b905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114611929576000600182039050600060018660000180549050039050600086600001828154811061189857fe5b90600052602060002001549050808760000184815481106118b557fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806118ed57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061192f565b60009150505b92915050565b600081600001805490509050919050565b6000611952838361182a565b6119ab5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506119b0565b600090505b9291505056fe596f7520726563656e746c79207374616b65642c20706c656173652077616974206265666f7265207769746864726177696e672ea2646970667358221220e36987e4fb9267a66e4f7bdb2720322bb2ccc7ebf89c6cedcafe59c563a697da64736f6c634300060c0033

Deployed Bytecode Sourcemap

5265:5017:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6067:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9380:72;;;:::i;:::-;;9534:261;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8447:921;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7559:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6277:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5804:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6383:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9904:375;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5634:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4662:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6975:572;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5503:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7676:759;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5715:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6222:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6121:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5931:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4915:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6328:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6067:41;6100:8;6067:41;:::o;9380:72::-;9419:25;9433:10;9419:13;:25::i;:::-;9380:72::o;9534:261::-;9589:4;9514:7;9610:19;;:42;9606:83;;9676:1;9669:8;;;;9606:83;9699:14;9716:44;9740:19;;9514:7;9716:23;;:44;;;;:::i;:::-;9699:61;;9778:9;9771:16;;;9534:261;;:::o;8447:921::-;8545:16;8514:15;:27;8530:10;8514:27;;;;;;;;;;;;;;;;:47;;8506:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6100:8;8621:32;8629:11;:23;8641:10;8629:23;;;;;;;;;;;;;;;;8621:3;:7;;:32;;;;:::i;:::-;:44;8613:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8743:25;8757:10;8743:13;:25::i;:::-;8789:8;8800:47;8843:3;8800:38;5971:2;8800:16;:20;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;8789:58;;8858:19;8880:25;8901:3;8880:16;:20;;:25;;;;:::i;:::-;8858:47;;5542:42;8934:28;;;8963:5;;;;;;;;;;8970:3;8934:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8926:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5542:42;9030:28;;;9059:10;9071:14;9030:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9022:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9168:49;9200:16;9168:15;:27;9184:10;9168:27;;;;;;;;;;;;;;;;:31;;:49;;;;:::i;:::-;9138:15;:27;9154:10;9138:27;;;;;;;;;;;;;;;:79;;;;9242:28;9259:10;9242:7;:16;;:28;;;;:::i;:::-;:64;;;;;9305:1;9274:15;:27;9290:10;9274:27;;;;;;;;;;;;;;;;:32;9242:64;9238:123;;;9323:26;9338:10;9323:7;:14;;:26;;;;:::i;:::-;;9238:123;8447:921;;;:::o;7559:99::-;7610:4;7634:16;:7;:14;:16::i;:::-;7627:23;;7559:99;:::o;6277:44::-;;;;;;;;;;;;;;;;;:::o;5804:41::-;5842:3;5804:41;:::o;6383:50::-;;;;;;;;;;;;;;;;;:::o;9904:375::-;4889:5;;;;;;;;;;4875:19;;:10;:19;;;4867:28;;;;;;5542:42:::1;10015:26;;:10;:26;;;10011:210;;;10072:24;:22;:24::i;:::-;10062:7;:34;10058:83;;;10117:8;::::0;::::1;10058:83;10177:32;10201:7;10177:19;;:23;;:32;;;;:::i;:::-;10155:19;:54;;;;10011:210;10237:10;10231:26;;;10258:3;10263:7;10231:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;9904:375:::0;;;:::o;5634:39::-;5668:5;5634:39;:::o;4662:20::-;;;;;;;;;;;;:::o;6975:572::-;7037:4;7059:25;7076:7;7059;:16;;:25;;;;:::i;:::-;7054:40;;7093:1;7086:8;;;;7054:40;7137:1;7109:15;:24;7125:7;7109:24;;;;;;;;;;;;;;;;:29;7105:43;;;7147:1;7140:8;;;;7105:43;7161:13;7177:33;7185:15;:24;7201:7;7185:24;;;;;;;;;;;;;;;;7177:3;:7;;:33;;;;:::i;:::-;7161:49;;7221:17;7241:15;:24;7257:7;7241:24;;;;;;;;;;;;;;;;7221:44;;7286:16;7305:191;7492:3;7305:152;5753:8;7305:102;7398:8;7305:58;5668:5;7305:12;:46;;:58;;;;:::i;:::-;:92;;:102;;;;:::i;:::-;:136;;:152;;;;:::i;:::-;:186;;:191;;;;:::i;:::-;7286:210;;7528:11;7521:18;;;;;6975:572;;;;:::o;5503:81::-;5542:42;5503:81;:::o;7676:759::-;7755:1;7739:13;:17;7731:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5542:42;7803:32;;;7836:10;7856:4;7863:13;7803:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7795:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7931:25;7945:10;7931:13;:25::i;:::-;7977:8;7988:42;8026:3;7988:33;5842:3;7988:13;:17;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;7977:53;;8041:19;8063:22;8081:3;8063:13;:17;;:22;;;;:::i;:::-;8041:44;;5542:42;8104:28;;;8133:5;;;;;;;;;;8140:3;8104:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8096:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8231:47;8263:14;8231:15;:27;8247:10;8231:27;;;;;;;;;;;;;;;;:31;;:47;;;;:::i;:::-;8201:15;:27;8217:10;8201:27;;;;;;;;;;;;;;;:77;;;;8304:28;8321:10;8304:7;:16;;:28;;;;:::i;:::-;8299:129;;8349:23;8361:10;8349:7;:11;;:23;;;;:::i;:::-;;8413:3;8387:11;:23;8399:10;8387:23;;;;;;;;;;;;;;;:29;;;;8299:129;7676:759;;;:::o;5715:46::-;5753:8;5715:46;:::o;6222:48::-;;;;;;;;;;;;;;;;;:::o;6121:35::-;;;;:::o;5931:42::-;5971:2;5931:42;:::o;4915:178::-;4889:5;;;;;;;;;;4875:19;;:10;:19;;;4867:28;;;;;;5012:1:::1;4992:22;;:8;:22;;;;4984:31;;;::::0;::::1;;5055:8;5027:37;;5048:5;::::0;::::1;;;;;;;;5027:37;;;;;;;;;;;;5079:8;5071:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;4915:178:::0;:::o;6328:48::-;;;;;;;;;;;;;;;;;:::o;6446:517::-;6505:16;6524:23;6539:7;6524:14;:23::i;:::-;6505:42;;6576:1;6562:11;:15;6558:357;;;5542:42;6602:28;;;6631:7;6640:11;6602:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6594:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6727:43;6758:11;6727:17;:26;6745:7;6727:26;;;;;;;;;;;;;;;;:30;;:43;;;;:::i;:::-;6698:17;:26;6716:7;6698:26;;;;;;;;;;;;;;;:72;;;;6807:36;6831:11;6807:19;;:23;;:36;;;;:::i;:::-;6785:19;:58;;;;6863:40;6882:7;6891:11;6863:40;;;;;;;;;;;;;;;;;;;;;;;;;;6558:357;6952:3;6925:15;:24;6941:7;6925:24;;;;;;;;;;;;;;;:30;;;;6446:517;;:::o;514:113::-;572:7;600:1;595;:6;;588:14;;;;620:1;616;:5;609:12;;514:113;;;;:::o;85:147::-;143:7;159:9;175:1;171;:5;159:17;;195:1;190;:6;:20;;;;209:1;204;200;:5;;;;;;:10;190:20;183:28;;;;225:1;218:8;;;85:147;;;;:::o;238:270::-;296:7;387:9;403:1;399;:5;;;;;;387:17;;501:1;494:8;;;238:270;;;;:::o;3260:158::-;3340:4;3364:46;3374:3;:10;;3402:5;3394:14;;3386:23;;3364:9;:46::i;:::-;3357:53;;3260:158;;;;:::o;3025:149::-;3098:4;3122:44;3130:3;:10;;3158:5;3150:14;;3142:23;;3122:7;:44::i;:::-;3115:51;;3025:149;;;;:::o;3504:117::-;3567:7;3594:19;3602:3;:10;;3594:7;:19::i;:::-;3587:26;;3504:117;;;:::o;633:133::-;691:7;707:9;723:1;719;:5;707:17;;743:1;738;:6;;731:14;;;;759:1;752:8;;;633:133;;;;:::o;2874:143::-;2944:4;2968:41;2973:3;:10;;3001:5;2993:14;;2985:23;;2968:4;:41::i;:::-;2961:48;;2874:143;;;;:::o;2332:129::-;2405:4;2452:1;2429:3;:12;;:19;2442:5;2429:19;;;;;;;;;;;;:24;;2422:31;;2332:129;;;;:::o;1210:1036::-;1276:4;1394:18;1415:3;:12;;:19;1428:5;1415:19;;;;;;;;;;;;1394:40;;1465:1;1451:10;:15;1447:792;;1531:21;1568:1;1555:10;:14;1531:38;;1584:17;1625:1;1604:3;:11;;:18;;;;:22;1584:42;;1645:17;1665:3;:11;;1677:9;1665:22;;;;;;;;;;;;;;;;1645:42;;1811:9;1782:3;:11;;1794:13;1782:26;;;;;;;;;;;;;;;:38;;;;1930:1;1914:13;:17;1888:3;:12;;:23;1901:9;1888:23;;;;;;;;;;;:43;;;;2040:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;2135:3;:12;;:19;2148:5;2135:19;;;;;;;;;;;2128:26;;;2178:4;2171:11;;;;;;;;1447:792;2222:5;2215:12;;;1210:1036;;;;;:::o;2469:109::-;2525:7;2552:3;:11;;:18;;;;2545:25;;2469:109;;;:::o;909:293::-;972:4;994:21;1004:3;1009:5;994:9;:21::i;:::-;989:206;;1032:3;:11;;1049:5;1032:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1094:3;:11;;:18;;;;1072:3;:12;;:19;1085:5;1072:19;;;;;;;;;;;:40;;;;1134:4;1127:11;;;;989:206;1178:5;1171:12;;909:293;;;;;:::o

Swarm Source

ipfs://e36987e4fb9267a66e4f7bdb2720322bb2ccc7ebf89c6cedcafe59c563a697da

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

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.