ETH Price: $2,392.35 (-3.45%)

Contract

0xf1d113059517dbdDd99aB9caffa76Fc01f0557CD
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Exit202714312024-07-09 20:50:2385 days ago1720558223IN
Decentral Games: Staking Contract
0 ETH0.00058415.8256789
Exit202714292024-07-09 20:49:5985 days ago1720558199IN
Decentral Games: Staking Contract
0 ETH0.000477325.53149972
Exit202714282024-07-09 20:49:4785 days ago1720558187IN
Decentral Games: Staking Contract
0 ETH0.000475734.84141235
Exit202695832024-07-09 14:38:5985 days ago1720535939IN
Decentral Games: Staking Contract
0 ETH0.000724818.39951259
Exit198280642024-05-08 21:37:47147 days ago1715204267IN
Decentral Games: Staking Contract
0 ETH0.00020474.81167437
Withdraw198280642024-05-08 21:37:47147 days ago1715204267IN
Decentral Games: Staking Contract
0 ETH0.000221244.81167437
Get Reward198280622024-05-08 21:37:23147 days ago1715204243IN
Decentral Games: Staking Contract
0 ETH0.000189184.2329732
Withdraw198280602024-05-08 21:36:59147 days ago1715204219IN
Decentral Games: Staking Contract
0 ETH0.000195464.2498898
Exit196998542024-04-20 23:18:11165 days ago1713655091IN
Decentral Games: Staking Contract
0 ETH0.000583935.82400361
Exit194163942024-03-12 3:43:59205 days ago1710215039IN
Decentral Games: Staking Contract
0 ETH0.0042509952.37542436
Get Reward191342742024-02-01 14:48:23244 days ago1706798903IN
Decentral Games: Staking Contract
0 ETH0.0021397333.83250751
Withdraw191342712024-02-01 14:47:47244 days ago1706798867IN
Decentral Games: Staking Contract
0 ETH0.0030596135.06196119
Get Reward190333552024-01-18 11:08:59258 days ago1705576139IN
Decentral Games: Staking Contract
0 ETH0.0019360330.61173994
Withdraw190333532024-01-18 11:08:35258 days ago1705576115IN
Decentral Games: Staking Contract
0 ETH0.002181131.09152773
Exit172438202023-05-12 11:25:47509 days ago1683890747IN
Decentral Games: Staking Contract
0 ETH0.0031714944.1
Get Reward172438152023-05-12 11:24:47509 days ago1683890687IN
Decentral Games: Staking Contract
0 ETH0.0036718944.1
Get Reward172437762023-05-12 11:16:47509 days ago1683890207IN
Decentral Games: Staking Contract
0 ETH0.0027827844
Get Reward167696302023-03-06 13:32:47576 days ago1678109567IN
Decentral Games: Staking Contract
0 ETH0.0021241533.58611999
Withdraw167696272023-03-06 13:32:11576 days ago1678109531IN
Decentral Games: Staking Contract
0 ETH0.0029912834.27892037
Get Reward163870872023-01-12 0:17:47630 days ago1673482667IN
Decentral Games: Staking Contract
0 ETH0.0024373438.53813619
Withdraw163870852023-01-12 0:17:23630 days ago1673482643IN
Decentral Games: Staking Contract
0 ETH0.0033877538.82238544
Get Reward163833482023-01-11 11:43:23630 days ago1673437403IN
Decentral Games: Staking Contract
0 ETH0.0009975815.77328182
Withdraw163833462023-01-11 11:42:59630 days ago1673437379IN
Decentral Games: Staking Contract
0 ETH0.001709116.37844003
Get Reward163628082023-01-08 14:56:47633 days ago1673189807IN
Decentral Games: Staking Contract
0 ETH0.0012898520.39455646
Withdraw163628042023-01-08 14:55:59633 days ago1673189759IN
Decentral Games: Staking Contract
0 ETH0.0021880220.96793695
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:
dgStaking

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-12-09
*/

// SPDX-License-Identifier: -- 🎲 --

pragma solidity ^0.7.5;

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'SafeMath: addition overflow');
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, 'SafeMath: subtraction overflow');
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, 'SafeMath: division by zero');
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, 'SafeMath: modulo by zero');
        return a % b;
    }
}

library Math {

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}

contract Context {

    constructor() {}

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {

    address private _owner;

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

    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(
            address(0),
            _owner
        );
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(
            isOwner(),
            'Ownable: caller is not the owner'
        );
        _;
    }

    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(
            _owner,
            address(0x0)
        );
        _owner = address(0x0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(
            newOwner != address(0x0),
            'Ownable: new owner is the zero address'
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {

    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }

    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            'Address: insufficient balance'
        );

        (bool success, ) = recipient.call{value: amount}('');

        require(
            success,
            'Address: unable to send value'
        );
    }
}

library SafeERC20 {

    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    )
        internal
    {
        callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.transfer.selector,
                to,
                value
            )
        );
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    )
        internal
    {
        callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.transferFrom.selector,
                from,
                to,
                value
            )
        );
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    )
        internal
    {
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            'SafeERC20: approve from non-zero to non-zero allowance'
        );
        callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                value
            )
        );
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    )
        internal
    {
        uint256 newAllowance = token.allowance(
            address(this),
            spender
        ).add(value);

        callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                newAllowance
            )
        );
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    )
        internal
    {
        uint256 newAllowance = token.allowance(
            address(this),
            spender
        ).sub(value);

        callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                newAllowance
            )
        );
    }

    function callOptionalReturn(
        IERC20 token,
        bytes memory data
    )
        private
    {
        require(
            address(token).isContract(),
            'SafeERC20: call to non-contract'
        );

        (bool success, bytes memory returndata) = address(token).call(data);
        require(
            success,
            'SafeERC20: low-level call failed'
        );

        if (returndata.length > 0) {
            require(
                abi.decode(returndata, (bool)),
                'SafeERC20: ERC20 operation did not succeed'
            );
        }
    }
}

contract LPTokenWrapper {

    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    IERC20 public bpt = IERC20(
        0xEE06A81a695750E71a662B51066F2c74CF4478a0
    );

    uint256 private _totalSupply;
    mapping(address => uint256) private _balances;

    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    function _stake(uint256 amount) internal {

        _totalSupply = _totalSupply.add(amount);

        _balances[msg.sender] =
        _balances[msg.sender].add(amount);

        bpt.safeTransferFrom(
            msg.sender,
            address(this),
            amount
        );
    }

    function _withdraw(uint256 amount) internal {

        _totalSupply = _totalSupply.sub(amount);

        _balances[msg.sender] =
        _balances[msg.sender].sub(amount);

        bpt.safeTransfer(
            msg.sender,
            amount
        );
    }
}

contract dgStaking is LPTokenWrapper, Ownable {

    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    IERC20 public dg = IERC20(
        0xEE06A81a695750E71a662B51066F2c74CF4478a0
    );

    uint256 public constant DURATION = 5 weeks;
    
    uint256 public periodFinish;
    uint256 public rewardRate;
    uint256 public lastUpdateTime;
    uint256 public rewardPerTokenStored;

    mapping(address => uint256) public userRewardPerTokenPaid;
    mapping(address => uint256) public rewards;

    event RewardAdded(
        uint256 reward
    );

    event Staked(
        address indexed user,
        uint256 amount
    );

    event Withdrawn(
        address indexed user,
        uint256 amount
    );

    event RewardPaid(
        address indexed user,
        uint256 reward
    );

    modifier updateReward(address account) {

        rewardPerTokenStored = rewardPerToken();
        lastUpdateTime = lastTimeRewardApplicable();

        if (account != address(0)) {
            rewards[account] = earned(account);
            userRewardPerTokenPaid[account] = rewardPerTokenStored;
        }
        _;
    }

    function lastTimeRewardApplicable()
        public
        view
        returns (uint256)
    {
        return Math.min(
            block.timestamp,
            periodFinish
        );
    }

    function rewardPerToken()
        public
        view
        returns (uint256)
    {
        if (totalSupply() == 0) {
            return rewardPerTokenStored;
        }

        return rewardPerTokenStored.add(
            lastTimeRewardApplicable()
                .sub(lastUpdateTime)
                .mul(rewardRate)
                .mul(1e18)
                .div(totalSupply())
        );
    }

    function earned(
        address account
    )
        public
        view
        returns (uint256)
    {
        return balanceOf(account)
            .mul(rewardPerToken().sub(userRewardPerTokenPaid[account]))
            .div(1E18)
            .add(rewards[account]);
    }

    function stake(
        uint256 amount
    )
        public
        updateReward(msg.sender)
    {
        require(
            amount > 0,
            'Cannot stake 0'
        );

        _stake(amount);

        emit Staked(
            msg.sender,
            amount
        );
    }

    function withdraw(
        uint256 amount
    )
        public
        updateReward(msg.sender)
    {
        require(
            amount > 0,
            'Cannot withdraw 0'
        );

        _withdraw(amount);

        emit Withdrawn(
            msg.sender,
            amount
        );
    }

    function exit() external {
        withdraw(balanceOf(msg.sender));
        getReward();
    }

    function getReward()
        public
        updateReward(msg.sender)
        returns (uint256 reward)
    {
        reward = earned(msg.sender);
        if (reward > 0) {
            rewards[msg.sender] = 0;
            dg.safeTransfer(msg.sender, reward);
            emit RewardPaid(msg.sender, reward);
        }
    }

    function notifyRewardAmount(uint256 reward)
        external
        onlyOwner
        updateReward(address(0x0))
    {
        if (block.timestamp >= periodFinish) {
            rewardRate = reward.div(DURATION);
        } else {
            uint256 remaining = periodFinish.sub(block.timestamp);
            uint256 leftover = remaining.mul(rewardRate);
            rewardRate = reward.add(leftover).div(DURATION);
        }
        lastUpdateTime = block.timestamp;
        periodFinish = block.timestamp.add(DURATION);
        emit RewardAdded(reward);
    }
}

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":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bpt","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dg","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReward","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405273ee06a81a695750e71a662b51066f2c74cf4478a06000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ee06a81a695750e71a662b51066f2c74cf4478a0600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156100b957600080fd5b506100c861018a60201b60201c565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3610192565b600033905090565b611bff806101a16000396000f3fe608060405234801561001057600080fd5b506004361061014c5760003560e01c80637b0a47ee116100c3578063c8f33c911161007c578063c8f33c9114610497578063cd3daf9d146104b5578063df136d65146104d3578063e9fad8ee146104f1578063ebe2b12b146104fb578063f2fde38b146105195761014c565b80637b0a47ee1461038157806380faa57d1461039f5780638b876347146103bd5780638da5cb5b146104155780638f32d59b14610449578063a694fc3a146104695761014c565b80633c6b16ab116101155780633c6b16ab1461026b5780633d18b91214610299578063546af3c3146102b757806355568b03146102eb57806370a082311461031f578063715018a6146103775761014c565b80628cc262146101515780630700037d146101a957806318160ddd146102015780631be052891461021f5780632e1a7d4d1461023d575b600080fd5b6101936004803603602081101561016757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061055d565b6040518082815260200191505060405180910390f35b6101eb600480360360208110156101bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610644565b6040518082815260200191505060405180910390f35b61020961065c565b6040518082815260200191505060405180910390f35b610227610666565b6040518082815260200191505060405180910390f35b6102696004803603602081101561025357600080fd5b810190808035906020019092919050505061066d565b005b6102976004803603602081101561028157600080fd5b8101908080359060200190929190505050610822565b005b6102a1610a6c565b6040518082815260200191505060405180910390f35b6102bf610c4b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102f3610c6f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103616004803603602081101561033557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c95565b6040518082815260200191505060405180910390f35b61037f610cde565b005b610389610e19565b6040518082815260200191505060405180910390f35b6103a7610e1f565b6040518082815260200191505060405180910390f35b6103ff600480360360208110156103d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e32565b6040518082815260200191505060405180910390f35b61041d610e4a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610451610e74565b60405180821515815260200191505060405180910390f35b6104956004803603602081101561047f57600080fd5b8101908080359060200190929190505050610ed3565b005b61049f611088565b6040518082815260200191505060405180910390f35b6104bd61108e565b6040518082815260200191505060405180910390f35b6104db611126565b6040518082815260200191505060405180910390f35b6104f961112c565b005b610503611148565b6040518082815260200191505060405180910390f35b61055b6004803603602081101561052f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061114e565b005b600061063d600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461062f670de0b6b3a764000061062161060a600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105fc61108e565b6111d490919063ffffffff16565b61061388610c95565b61125d90919063ffffffff16565b6112e390919063ffffffff16565b61137290919063ffffffff16565b9050919050565b600a6020528060005260406000206000915090505481565b6000600154905090565b622e248081565b3361067661108e565b600881905550610684610e1f565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610751576106c78161055d565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600082116107c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616e6e6f74207769746864726177203000000000000000000000000000000081525060200191505060405180910390fd5b6107d0826113fa565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a25050565b61082a610e74565b61089c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60006108a661108e565b6008819055506108b4610e1f565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610981576108f78161055d565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60055442106109ab576109a0622e2480836112e390919063ffffffff16565b600681905550610a0e565b60006109c2426005546111d490919063ffffffff16565b905060006109db6006548361125d90919063ffffffff16565b9050610a05622e24806109f7838761137290919063ffffffff16565b6112e390919063ffffffff16565b60068190555050505b42600781905550610a2b622e24804261137290919063ffffffff16565b6005819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d826040518082815260200191505060405180910390a15050565b600033610a7761108e565b600881905550610a85610e1f565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b5257610ac88161055d565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b5b3361055d565b91506000821115610c47576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bf83383600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486836040518082815260200191505060405180910390a25b5090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ce6610e74565b610d58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065481565b6000610e2d4260055461159a565b905090565b60096020528060005260406000206000915090505481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eb76115b3565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b33610edc61108e565b600881905550610eea610e1f565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610fb757610f2d8161055d565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000821161102d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b611036826115bb565b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a25050565b60075481565b60008061109961065c565b14156110a9576008549050611123565b61112061110f6110b761065c565b611101670de0b6b3a76400006110f36006546110e56007546110d7610e1f565b6111d490919063ffffffff16565b61125d90919063ffffffff16565b61125d90919063ffffffff16565b6112e390919063ffffffff16565b60085461137290919063ffffffff16565b90505b90565b60085481565b61113d61113833610c95565b61066d565b611145610a6c565b50565b60055481565b611156610e74565b6111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6111d1816116bb565b50565b60008282111561124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b60008083141561127057600090506112dd565b600082840290508284828161128157fe5b04146112d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611b7f6021913960400191505060405180910390fd5b809150505b92915050565b600080821161135a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b600082848161136557fe5b0490508091505092915050565b6000808284019050838110156113f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61140f816001546111d490919063ffffffff16565b60018190555061146781600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111d490919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114f5338260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b50565b6115958363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611801565b505050565b60008183106115a957816115ab565b825b905092915050565b600033905090565b6115d08160015461137290919063ffffffff16565b60018190555061162881600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137290919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116b833308360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a4c909392919063ffffffff16565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611741576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611b596026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118208273ffffffffffffffffffffffffffffffffffffffff16611b0d565b611892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106118e157805182526020820191506020810190506020830392506118be565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611943576040519150601f19603f3d011682016040523d82523d6000602084013e611948565b606091505b5091509150816119c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115611a46578080602001905160208110156119df57600080fd5b8101908080519060200190929190505050611a45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611ba0602a913960400191505060405180910390fd5b5b50505050565b611b07846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611801565b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015611b4f5750808214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220379e7770a11f10b493ad1f1fb955affc57948796363107f6409995db3702f62764736f6c63430007050033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014c5760003560e01c80637b0a47ee116100c3578063c8f33c911161007c578063c8f33c9114610497578063cd3daf9d146104b5578063df136d65146104d3578063e9fad8ee146104f1578063ebe2b12b146104fb578063f2fde38b146105195761014c565b80637b0a47ee1461038157806380faa57d1461039f5780638b876347146103bd5780638da5cb5b146104155780638f32d59b14610449578063a694fc3a146104695761014c565b80633c6b16ab116101155780633c6b16ab1461026b5780633d18b91214610299578063546af3c3146102b757806355568b03146102eb57806370a082311461031f578063715018a6146103775761014c565b80628cc262146101515780630700037d146101a957806318160ddd146102015780631be052891461021f5780632e1a7d4d1461023d575b600080fd5b6101936004803603602081101561016757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061055d565b6040518082815260200191505060405180910390f35b6101eb600480360360208110156101bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610644565b6040518082815260200191505060405180910390f35b61020961065c565b6040518082815260200191505060405180910390f35b610227610666565b6040518082815260200191505060405180910390f35b6102696004803603602081101561025357600080fd5b810190808035906020019092919050505061066d565b005b6102976004803603602081101561028157600080fd5b8101908080359060200190929190505050610822565b005b6102a1610a6c565b6040518082815260200191505060405180910390f35b6102bf610c4b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102f3610c6f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103616004803603602081101561033557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c95565b6040518082815260200191505060405180910390f35b61037f610cde565b005b610389610e19565b6040518082815260200191505060405180910390f35b6103a7610e1f565b6040518082815260200191505060405180910390f35b6103ff600480360360208110156103d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e32565b6040518082815260200191505060405180910390f35b61041d610e4a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610451610e74565b60405180821515815260200191505060405180910390f35b6104956004803603602081101561047f57600080fd5b8101908080359060200190929190505050610ed3565b005b61049f611088565b6040518082815260200191505060405180910390f35b6104bd61108e565b6040518082815260200191505060405180910390f35b6104db611126565b6040518082815260200191505060405180910390f35b6104f961112c565b005b610503611148565b6040518082815260200191505060405180910390f35b61055b6004803603602081101561052f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061114e565b005b600061063d600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461062f670de0b6b3a764000061062161060a600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105fc61108e565b6111d490919063ffffffff16565b61061388610c95565b61125d90919063ffffffff16565b6112e390919063ffffffff16565b61137290919063ffffffff16565b9050919050565b600a6020528060005260406000206000915090505481565b6000600154905090565b622e248081565b3361067661108e565b600881905550610684610e1f565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610751576106c78161055d565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600082116107c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616e6e6f74207769746864726177203000000000000000000000000000000081525060200191505060405180910390fd5b6107d0826113fa565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a25050565b61082a610e74565b61089c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60006108a661108e565b6008819055506108b4610e1f565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610981576108f78161055d565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60055442106109ab576109a0622e2480836112e390919063ffffffff16565b600681905550610a0e565b60006109c2426005546111d490919063ffffffff16565b905060006109db6006548361125d90919063ffffffff16565b9050610a05622e24806109f7838761137290919063ffffffff16565b6112e390919063ffffffff16565b60068190555050505b42600781905550610a2b622e24804261137290919063ffffffff16565b6005819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d826040518082815260200191505060405180910390a15050565b600033610a7761108e565b600881905550610a85610e1f565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b5257610ac88161055d565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b5b3361055d565b91506000821115610c47576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bf83383600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486836040518082815260200191505060405180910390a25b5090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ce6610e74565b610d58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065481565b6000610e2d4260055461159a565b905090565b60096020528060005260406000206000915090505481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eb76115b3565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b33610edc61108e565b600881905550610eea610e1f565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610fb757610f2d8161055d565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000821161102d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b611036826115bb565b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a25050565b60075481565b60008061109961065c565b14156110a9576008549050611123565b61112061110f6110b761065c565b611101670de0b6b3a76400006110f36006546110e56007546110d7610e1f565b6111d490919063ffffffff16565b61125d90919063ffffffff16565b61125d90919063ffffffff16565b6112e390919063ffffffff16565b60085461137290919063ffffffff16565b90505b90565b60085481565b61113d61113833610c95565b61066d565b611145610a6c565b50565b60055481565b611156610e74565b6111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6111d1816116bb565b50565b60008282111561124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b60008083141561127057600090506112dd565b600082840290508284828161128157fe5b04146112d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611b7f6021913960400191505060405180910390fd5b809150505b92915050565b600080821161135a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b600082848161136557fe5b0490508091505092915050565b6000808284019050838110156113f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61140f816001546111d490919063ffffffff16565b60018190555061146781600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111d490919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114f5338260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b50565b6115958363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611801565b505050565b60008183106115a957816115ab565b825b905092915050565b600033905090565b6115d08160015461137290919063ffffffff16565b60018190555061162881600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137290919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116b833308360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a4c909392919063ffffffff16565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611741576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611b596026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118208273ffffffffffffffffffffffffffffffffffffffff16611b0d565b611892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106118e157805182526020820191506020810190506020830392506118be565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611943576040519150601f19603f3d011682016040523d82523d6000602084013e611948565b606091505b5091509150816119c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115611a46578080602001905160208110156119df57600080fd5b8101908080519060200190929190505050611a45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611ba0602a913960400191505060405180910390fd5b5b50505050565b611b07846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611801565b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015611b4f5750808214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220379e7770a11f10b493ad1f1fb955affc57948796363107f6409995db3702f62764736f6c63430007050033

Deployed Bytecode Sourcemap

8644:3780:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10469:288;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9126:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7845:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8861:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11076:315;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11844:577;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11504:332;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7661:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8767:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7944:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2504:181;;;:::i;:::-;;8950:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9836:200;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9062:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2164:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2402:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10765:303;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8982:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10044:417;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9018:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11399:97;;;:::i;:::-;;8916:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2693:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10469:288;10566:7;10598:151;10732:7;:16;10740:7;10732:16;;;;;;;;;;;;;;;;10598:115;10708:4;10598:91;10635:53;10656:22;:31;10679:7;10656:31;;;;;;;;;;;;;;;;10635:16;:14;:16::i;:::-;:20;;:53;;;;:::i;:::-;10598:18;10608:7;10598:9;:18::i;:::-;:36;;:91;;;;:::i;:::-;:109;;:115;;;;:::i;:::-;:133;;:151;;;;:::i;:::-;10591:158;;10469:288;;;:::o;9126:42::-;;;;;;;;;;;;;;;;;:::o;7845:91::-;7889:7;7916:12;;7909:19;;7845:91;:::o;8861:42::-;8896:7;8861:42;:::o;11076:315::-;11164:10;9569:16;:14;:16::i;:::-;9546:20;:39;;;;9613:26;:24;:26::i;:::-;9596:14;:43;;;;9675:1;9656:21;;:7;:21;;;9652:157;;9713:15;9720:7;9713:6;:15::i;:::-;9694:7;:16;9702:7;9694:16;;;;;;;;;;;;;;;:34;;;;9777:20;;9743:22;:31;9766:7;9743:31;;;;;;;;;;;;;;;:54;;;;9652:157;11223:1:::1;11214:6;:10;11192:77;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;11282:17;11292:6;11282:9;:17::i;:::-;11341:10;11317:66;;;11366:6;11317:66;;;;;;;;;;;;;;;;;;11076:315:::0;;:::o;11844:577::-;2305:9;:7;:9::i;:::-;2283:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11955:3:::1;9569:16;:14;:16::i;:::-;9546:20;:39;;;;9613:26;:24;:26::i;:::-;9596:14;:43;;;;9675:1;9656:21;;:7;:21;;;9652:157;;9713:15;9720:7;9713:6;:15::i;:::-;9694:7;:16;9702:7;9694:16;;;;;;;;;;;;;;;:34;;;;9777:20;;9743:22;:31;9766:7;9743:31;;;;;;;;;;;;;;;:54;;;;9652:157;12000:12:::2;;11981:15;:31;11977:304;;12042:20;8896:7;12042:6;:10;;:20;;;;:::i;:::-;12029:10;:33;;;;11977:304;;;12095:17;12115:33;12132:15;12115:12;;:16;;:33;;;;:::i;:::-;12095:53;;12163:16;12182:25;12196:10;;12182:9;:13;;:25;;;;:::i;:::-;12163:44;;12235:34;8896:7;12235:20;12246:8;12235:6;:10;;:20;;;;:::i;:::-;:24;;:34;;;;:::i;:::-;12222:10;:47;;;;11977:304;;;12308:15;12291:14;:32;;;;12349:29;8896:7;12349:15;:19;;:29;;;;:::i;:::-;12334:12;:44;;;;12394:19;12406:6;12394:19;;;;;;;;;;;;;;;;;;2385:1:::1;11844:577:::0;:::o;11504:332::-;11593:14;11563:10;9569:16;:14;:16::i;:::-;9546:20;:39;;;;9613:26;:24;:26::i;:::-;9596:14;:43;;;;9675:1;9656:21;;:7;:21;;;9652:157;;9713:15;9720:7;9713:6;:15::i;:::-;9694:7;:16;9702:7;9694:16;;;;;;;;;;;;;;;:34;;;;9777:20;;9743:22;:31;9766:7;9743:31;;;;;;;;;;;;;;;:54;;;;9652:157;11634:18:::1;11641:10;11634:6;:18::i;:::-;11625:27;;11676:1;11667:6;:10;11663:166;;;11716:1;11694:7;:19;11702:10;11694:19;;;;;;;;;;;;;;;:23;;;;11732:35;11748:10;11760:6;11732:2;;;;;;;;;;;:15;;;;:35;;;;;:::i;:::-;11798:10;11787:30;;;11810:6;11787:30;;;;;;;;;;;;;;;;;;11663:166;11504:332:::0;;:::o;7661:86::-;;;;;;;;;;;;:::o;8767:85::-;;;;;;;;;;;;;:::o;7944:110::-;8001:7;8028:9;:18;8038:7;8028:18;;;;;;;;;;;;;;;;8021:25;;7944:110;;;:::o;2504:181::-;2305:9;:7;:9::i;:::-;2283:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2630:3:::1;2566:79;;2601:6;;;;;;;;;;;2566:79;;;;;;;;;;;;2673:3;2656:6;;:21;;;;;;;;;;;;;;;;;;2504:181::o:0;8950:25::-;;;;:::o;9836:200::-;9920:7;9952:76;9975:15;10005:12;;9952:8;:76::i;:::-;9945:83;;9836:200;:::o;9062:57::-;;;;;;;;;;;;;;;;;:::o;2164:79::-;2202:7;2229:6;;;;;;;;;;;2222:13;;2164:79;:::o;2402:94::-;2442:4;2482:6;;;;;;;;;;;2466:22;;:12;:10;:12::i;:::-;:22;;;2459:29;;2402:94;:::o;10765:303::-;10850:10;9569:16;:14;:16::i;:::-;9546:20;:39;;;;9613:26;:24;:26::i;:::-;9596:14;:43;;;;9675:1;9656:21;;:7;:21;;;9652:157;;9713:15;9720:7;9713:6;:15::i;:::-;9694:7;:16;9702:7;9694:16;;;;;;;;;;;;;;;:34;;;;9777:20;;9743:22;:31;9766:7;9743:31;;;;;;;;;;;;;;;:54;;;;9652:157;10909:1:::1;10900:6;:10;10878:74;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;10965:14;10972:6;10965;:14::i;:::-;11018:10;10997:63;;;11043:6;10997:63;;;;;;;;;;;;;;;;;;10765:303:::0;;:::o;8982:29::-;;;;:::o;10044:417::-;10118:7;10164:1;10147:13;:11;:13::i;:::-;:18;10143:78;;;10189:20;;10182:27;;;;10143:78;10240:213;10279:163;10428:13;:11;:13::i;:::-;10279:126;10400:4;10279:98;10366:10;;10279:64;10328:14;;10279:26;:24;:26::i;:::-;:48;;:64;;;;:::i;:::-;:86;;:98;;;;:::i;:::-;:120;;:126;;;;:::i;:::-;:148;;:163;;;;:::i;:::-;10240:20;;:24;;:213;;;;:::i;:::-;10233:220;;10044:417;;:::o;9018:35::-;;;;:::o;11399:97::-;11435:31;11444:21;11454:10;11444:9;:21::i;:::-;11435:8;:31::i;:::-;11477:11;:9;:11::i;:::-;;11399:97::o;8916:27::-;;;;:::o;2693:109::-;2305:9;:7;:9::i;:::-;2283:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2766:28:::1;2785:8;2766:18;:28::i;:::-;2693:109:::0;:::o;282:182::-;340:7;373:1;368;:6;;360:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;420:9;436:1;432;:5;420:17;;455:1;448:8;;;282:182;;;;:::o;472:248::-;530:7;559:1;554;:6;550:47;;;584:1;577:8;;;;550:47;609:9;625:1;621;:5;609:17;;654:1;649;645;:5;;;;;;:10;637:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;711:1;704:8;;;472:248;;;;;:::o;728:264::-;786:7;818:1;814;:5;806:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;861:9;877:1;873;:5;;;;;;861:17;;983:1;976:8;;;728:264;;;;:::o;95:179::-;153:7;173:9;189:1;185;:5;173:17;;214:1;209;:6;;201:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;265:1;258:8;;;95:179;;;;:::o;8368:269::-;8440:24;8457:6;8440:12;;:16;;:24;;;;:::i;:::-;8425:12;:39;;;;8510:33;8536:6;8510:9;:21;8520:10;8510:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;8477:9;:21;8487:10;8477:21;;;;;;;;;;;;;;;:66;;;;8556:73;8587:10;8612:6;8556:3;;;;;;;;;;:16;;;;:73;;;;;:::i;:::-;8368:269;:::o;4728:327::-;4859:188;4892:5;4953:23;;;4995:2;5016:5;4912:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4859:18;:188::i;:::-;4728:327;;;:::o;1296:106::-;1354:7;1385:1;1381;:5;:13;;1393:1;1381:13;;;1389:1;1381:13;1374:20;;1296:106;;;;:::o;1605:98::-;1650:15;1685:10;1678:17;;1605:98;:::o;8062:298::-;8131:24;8148:6;8131:12;;:16;;:24;;;;:::i;:::-;8116:12;:39;;;;8201:33;8227:6;8201:9;:21;8211:10;8201:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;8168:9;:21;8178:10;8168:21;;;;;;;;;;;;;;;:66;;;;8247:105;8282:10;8315:4;8335:6;8247:3;;;;;;;;;;:20;;;;:105;;;;;;:::i;:::-;8062:298;:::o;2810:268::-;2918:3;2898:24;;:8;:24;;;;2876:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3033:8;3004:38;;3025:6;;;;;;;;;;;3004:38;;;;;;;;;;;;3062:8;3053:6;;:17;;;;;;;;;;;;;;;;;;2810:268;:::o;6938:615::-;7079:27;7087:5;7079:25;;;:27::i;:::-;7057:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7179:12;7193:23;7228:5;7220:19;;7240:4;7220:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7178:67;;;;7278:7;7256:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7382:1;7362:10;:17;:21;7358:188;;;7437:10;7426:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7400:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7358:188;6938:615;;;;:::o;5063:381::-;5221:215;5254:5;5315:27;;;5361:4;5384:2;5405:5;5274:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5221:18;:215::i;:::-;5063:381;;;;:::o;3803:317::-;3863:4;3880:16;3907:19;3929:66;3907:88;;;;4041:7;4029:20;4017:32;;4081:3;4069:15;;:8;:15;;:42;;;;;4100:11;4088:8;:23;;4069:42;4061:51;;;;3803:317;;;:::o

Swarm Source

ipfs://379e7770a11f10b493ad1f1fb955affc57948796363107f6409995db3702f627

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.