ETH Price: $2,456.63 (+0.62%)

Contract

0xD2f8F51B0488a9A8bcdc0D1FfAC5D78bb84d054b
 

Overview

ETH Balance

2 wei

Eth Value

Less Than $0.01 (@ $2,456.63/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim181707052023-09-19 14:59:11351 days ago1695135551IN
0xD2f8F51B...bb84d054b
0 ETH0.0010645915.79913249
Start Distributi...181707032023-09-19 14:58:47351 days ago1695135527IN
0xD2f8F51B...bb84d054b
0 ETH0.0015848615.85527132
Deposit181707012023-09-19 14:58:23351 days ago1695135503IN
0xD2f8F51B...bb84d054b
0 ETH0.0022356215.14127643
Open Staking181706992023-09-19 14:57:59351 days ago1695135479IN
0xD2f8F51B...bb84d054b
0 ETH0.0006788914.81212444
Set Amount ETH T...181706982023-09-19 14:57:47351 days ago1695135467IN
0xD2f8F51B...bb84d054b
0 ETH0.0004699915.54679702
Set Token181706942023-09-19 14:56:59351 days ago1695135419IN
0xD2f8F51B...bb84d054b
0 ETH0.0004384214.96385273
Set Token181354472023-09-14 15:38:59356 days ago1694705939IN
0xD2f8F51B...bb84d054b
0 ETH0.0009790921.10166116
0x60806040181351632023-09-14 14:40:35356 days ago1694702435IN
 Create: Staking
0 ETH0.0723143430

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
202721712024-07-09 23:19:2356 days ago1720567163
0xD2f8F51B...bb84d054b
0.01644345 ETH
185134892023-11-06 14:18:59303 days ago1699280339
0xD2f8F51B...bb84d054b
0.01644345 ETH
183805382023-10-18 23:32:35321 days ago1697671955
0xD2f8F51B...bb84d054b
0.01644345 ETH
183804572023-10-18 23:16:23321 days ago1697670983
0xD2f8F51B...bb84d054b
0.01644345 ETH
182301762023-09-27 22:48:59342 days ago1695854939
0xD2f8F51B...bb84d054b
0.01644345 ETH
182199282023-09-26 12:23:59344 days ago1695731039
0xD2f8F51B...bb84d054b
0.01644345 ETH
181980472023-09-23 10:52:59347 days ago1695466379
0xD2f8F51B...bb84d054b
0.01644345 ETH
181906082023-09-22 9:51:59348 days ago1695376319
0xD2f8F51B...bb84d054b
0.01644345 ETH
181707932023-09-19 15:16:47351 days ago1695136607
0xD2f8F51B...bb84d054b
0.0162162 ETH
181707052023-09-19 14:59:11351 days ago1695135551
0xD2f8F51B...bb84d054b
29.01971207 ETH
181705382023-09-19 14:25:35351 days ago1695133535
0xD2f8F51B...bb84d054b
0.01892187 ETH
181703442023-09-19 13:46:23351 days ago1695131183
0xD2f8F51B...bb84d054b
0.01992886 ETH
181702982023-09-19 13:36:59351 days ago1695130619
0xD2f8F51B...bb84d054b
0.02161006 ETH
181702282023-09-19 13:22:47351 days ago1695129767
0xD2f8F51B...bb84d054b
0.01868582 ETH
181702162023-09-19 13:20:23351 days ago1695129623
0xD2f8F51B...bb84d054b
0.02147003 ETH
181702152023-09-19 13:20:11351 days ago1695129611
0xD2f8F51B...bb84d054b
0.02191528 ETH
181702122023-09-19 13:19:35351 days ago1695129575
0xD2f8F51B...bb84d054b
0.0245523 ETH
181701632023-09-19 13:09:47351 days ago1695128987
0xD2f8F51B...bb84d054b
0.02471378 ETH
181701592023-09-19 13:08:59351 days ago1695128939
0xD2f8F51B...bb84d054b
0.0250387 ETH
181701452023-09-19 13:06:11351 days ago1695128771
0xD2f8F51B...bb84d054b
0.03173214 ETH
181700902023-09-19 12:55:11351 days ago1695128111
0xD2f8F51B...bb84d054b
0.0722299 ETH
181698072023-09-19 11:58:11351 days ago1695124691
0xD2f8F51B...bb84d054b
0.07545369 ETH
181690422023-09-19 9:23:35351 days ago1695115415
0xD2f8F51B...bb84d054b
0.0653022 ETH
181671422023-09-19 2:59:59351 days ago1695092399
0xD2f8F51B...bb84d054b
0.0653145 ETH
181663862023-09-19 0:26:47351 days ago1695083207
0xD2f8F51B...bb84d054b
0.06743859 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Staking

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-14
*/

// Gauro.io

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File @openzeppelin/contracts/access/[email protected]

// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File @openzeppelin/contracts/security/[email protected]

// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

// File @openzeppelin/contracts/token/ERC20/[email protected]

// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

// File contracts/Staking.sol

// Original license: SPDX_License_Identifier: MIT
pragma solidity ^0.8.21;

interface IUniswapRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract Staking is Ownable, ReentrancyGuard {
    IERC20 public token;
    uint256 public lockDuration = 1 days;
    uint256 public totalETHDistributed;
    uint256 public amountETHToRelease = 5 ether;
    uint256 public releaseInterval = 1 days;
    uint256 public lastRelease;
    uint256 public totalStaked;

    bool public stakingOpen;
    bool public distributedOpened;

    uint256 public magnifiedPerShare;
    uint256 internal constant magnitude = 2 ** 128;

    mapping(address => uint256) public staked;
    mapping(address => uint256) public claimed;
    mapping(address => uint256) public lastActive;
    mapping(address => uint256) public magnifiedCorrections;

    event Staked(address indexed user, uint256 amount);
    event Withdrawn(address indexed user, uint256 amount);
    event Claimed(address indexed user, uint256 amount);
    event Distributed(uint256 amount);
    event RealeaseIntervalChanged(uint256 amount);
    event AmountETHToRealeaseChanged(uint256 amount);
    event StakingOpened();
    event Compound(
        address indexed user,
        uint256 amountETH,
        uint256 amountToken
    );

    function setToken(address _token) external onlyOwner {
        token = IERC20(_token);
    }

    function setRealeaseInterval(uint256 _realeaseInterval) external onlyOwner {
        releaseInterval = _realeaseInterval;
        emit RealeaseIntervalChanged(_realeaseInterval);
    }

    function openStaking() external onlyOwner {
        require(!stakingOpen, "staking already open");
        stakingOpen = true;
    }

    function setAmountETHToRealease(
        uint256 _amountETHToRealease
    ) external onlyOwner {
        amountETHToRelease = _amountETHToRealease;
        emit AmountETHToRealeaseChanged(_amountETHToRealease);
    }

    function claimableOf(address _owner) public view returns (uint256) {
        return accumulativeOf(_owner) - claimed[_owner];
    }

    function deposit(uint256 _amount) external {
        require(_amount > 0, "Cannot stake 0");
        require(stakingOpen, "staking not open");
        token.transferFrom(msg.sender, address(this), _amount);
        this.claim(msg.sender);
        unchecked {
            staked[msg.sender] += _amount;
            totalStaked += _amount;
            magnifiedCorrections[msg.sender] -= (magnifiedPerShare * _amount);
        }
        emit Staked(msg.sender, _amount);
    }

    function withdraw() external {
        require(staked[msg.sender] > 0, "Cannot withdraw 0");
        require(
            lastActive[msg.sender] + lockDuration <= block.timestamp,
            "Cannot withdraw before lock duration"
        );
        this.claim(msg.sender);
        unchecked {
            staked[msg.sender] = 0;
            totalStaked -= staked[msg.sender];
            magnifiedCorrections[msg.sender] += (magnifiedPerShare *
                staked[msg.sender]);
        }
        token.transfer(msg.sender, staked[msg.sender]);
        emit Withdrawn(msg.sender, staked[msg.sender]);
    }

    function compound() external nonReentrant {
        uint256 claimable = claimableOf(msg.sender);
        IUniswapRouter router = IUniswapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        require(claimable > 0, "Nothing to compound");
        claimed[msg.sender] += claimable;
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(token);
        uint256 balanceBefore = token.balanceOf(address(this));
        router.swapExactETHForTokens{value: claimable}(
            0,
            path,
            address(this),
            block.timestamp + 360
        );
        uint256 amountToken = token.balanceOf(address(this)) - balanceBefore;
        unchecked {
            staked[msg.sender] += amountToken;
            totalStaked += amountToken;
            magnifiedCorrections[msg.sender] -= (magnifiedPerShare *
                amountToken);
        }
        emit Compound(msg.sender, claimable, amountToken);
    }

    function claim(address _user) external nonReentrant {
        require(
            msg.sender == _user || msg.sender == address(this),
            "not allowed"
        );
        uint256 claimable = claimableOf(_user);
        lastActive[_user] = block.timestamp;
        if (claimable > 0) {
            claimed[_user] += claimable;
            payable(_user).transfer(claimable);
        }
        emit Claimed(_user, claimable);
    }

    function accumulativeOf(address _owner) public view returns (uint256) {
        unchecked {
            return
                ((magnifiedPerShare * staked[_owner]) +
                    magnifiedCorrections[_owner]) / magnitude;
        }
    }

    function startDistribution() external onlyOwner {
        require(!distributedOpened, "distribution already started");
        require(stakingOpen, "staking not open");
        require(address(this).balance >= amountETHToRelease, "not enough eth");
        require(totalStaked > 0, "no stakers");
        distributedOpened = true;
        lastRelease = block.timestamp;
        unchecked {
            totalETHDistributed += amountETHToRelease;
            magnifiedPerShare =
                magnifiedPerShare +
                ((amountETHToRelease * magnitude) / totalStaked);
        }
    }

    receive() external payable {
        uint256 balance = address(this).balance;
        if (
            balance - totalETHDistributed >= amountETHToRelease &&
            lastRelease + releaseInterval <= block.timestamp &&
            totalStaked > 0 &&
            distributedOpened
        ) {
            unchecked {
                totalETHDistributed += amountETHToRelease;
                magnifiedPerShare =
                    magnifiedPerShare +
                    ((amountETHToRelease * magnitude) / totalStaked);
            }
            lastRelease = block.timestamp;
            emit Distributed(amountETHToRelease);
        }
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AmountETHToRealeaseChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"Compound","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Distributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RealeaseIntervalChanged","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":[],"name":"StakingOpened","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":[{"internalType":"address","name":"_owner","type":"address"}],"name":"accumulativeOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountETHToRelease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"claimableOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributedOpened","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastActive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRelease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"magnifiedCorrections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"magnifiedPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amountETHToRealease","type":"uint256"}],"name":"setAmountETHToRealease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_realeaseInterval","type":"uint256"}],"name":"setRealeaseInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"staked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalETHDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","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":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262015180600355674563918244f40000600555620151806006553480156200002a575f80fd5b506200004b6200003f6200005860201b60201c565b6200005f60201b60201c565b6001808190555062000120565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6128a3806200012e5f395ff3fe6080604052600436106101ba575f3560e01c8063817b1cd2116100eb578063ca1557e411610089578063ef15f81111610063578063ef15f81114610695578063f2fde38b146106d1578063f69e2046146106f9578063fc0c546a1461070f576102a1565b8063ca1557e41461062b578063d83623dd14610655578063ea3a0e3e1461066b576102a1565b806398807d84116100c557806398807d841461054f578063b6b55f251461058b578063c2ec28d6146105b3578063c884ef83146105ef576102a1565b8063817b1cd2146104bf5780638903ab9d146104e95780638da5cb5b14610525576102a1565b80633ccfd60b116101585780636258173311610132578063625817331461042f5780636b541a1614610445578063700060d81461046d578063715018a6146104a9576102a1565b80633ccfd60b146103c75780635bf3648c146103dd5780636115078c14610405576102a1565b8063180b260711610194578063180b2607146103215780631e83409a1461034b5780631f8db26814610373578063387602981461039d576102a1565b806304554443146102a557806309ae1e58146102cf578063144fa6d7146102f9576102a1565b366102a1575f479050600554600454826101d49190611c00565b101580156101f15750426006546007546101ee9190611c33565b11155b80156101fe57505f600854115b80156102165750600960019054906101000a900460ff165b1561029f5760055460045f8282540192505081905550600854700100000000000000000000000000000000600554028161025357610252611c66565b5b04600a5401600a81905550426007819055507fddc9c30275a04c48091f24199f9c405765de34d979d6847f5b9798a57232d2e56005546040516102969190611ca2565b60405180910390a15b005b5f80fd5b3480156102b0575f80fd5b506102b9610739565b6040516102c69190611ca2565b60405180910390f35b3480156102da575f80fd5b506102e361073f565b6040516102f09190611ca2565b60405180910390f35b348015610304575f80fd5b5061031f600480360381019061031a9190611d26565b610745565b005b34801561032c575f80fd5b50610335610790565b6040516103429190611ca2565b60405180910390f35b348015610356575f80fd5b50610371600480360381019061036c9190611d26565b610796565b005b34801561037e575f80fd5b5061038761098a565b6040516103949190611ca2565b60405180910390f35b3480156103a8575f80fd5b506103b1610990565b6040516103be9190611d6b565b60405180910390f35b3480156103d2575f80fd5b506103db6109a2565b005b3480156103e8575f80fd5b5061040360048036038101906103fe9190611dae565b610d94565b005b348015610410575f80fd5b50610419610ddd565b6040516104269190611ca2565b60405180910390f35b34801561043a575f80fd5b50610443610de3565b005b348015610450575f80fd5b5061046b60048036038101906104669190611dae565b610e56565b005b348015610478575f80fd5b50610493600480360381019061048e9190611d26565b610e9f565b6040516104a09190611ca2565b60405180910390f35b3480156104b4575f80fd5b506104bd610eb4565b005b3480156104ca575f80fd5b506104d3610ec7565b6040516104e09190611ca2565b60405180910390f35b3480156104f4575f80fd5b5061050f600480360381019061050a9190611d26565b610ecd565b60405161051c9190611ca2565b60405180910390f35b348015610530575f80fd5b50610539610f26565b6040516105469190611de8565b60405180910390f35b34801561055a575f80fd5b5061057560048036038101906105709190611d26565b610f4d565b6040516105829190611ca2565b60405180910390f35b348015610596575f80fd5b506105b160048036038101906105ac9190611dae565b610f62565b005b3480156105be575f80fd5b506105d960048036038101906105d49190611d26565b6111ef565b6040516105e69190611ca2565b60405180910390f35b3480156105fa575f80fd5b5061061560048036038101906106109190611d26565b611204565b6040516106229190611ca2565b60405180910390f35b348015610636575f80fd5b5061063f611219565b60405161064c9190611d6b565b60405180910390f35b348015610660575f80fd5b5061066961122c565b005b348015610676575f80fd5b5061067f6113c2565b60405161068c9190611ca2565b60405180910390f35b3480156106a0575f80fd5b506106bb60048036038101906106b69190611d26565b6113c8565b6040516106c89190611ca2565b60405180910390f35b3480156106dc575f80fd5b506106f760048036038101906106f29190611d26565b611472565b005b348015610704575f80fd5b5061070d6114f4565b005b34801561071a575f80fd5b50610723611a07565b6040516107309190611e5c565b60405180910390f35b60035481565b60055481565b61074d611a2c565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b61079e611aaa565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061080357503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990611ecf565b60405180910390fd5b5f61084c82610ecd565b905042600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8111156109305780600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108e49190611c33565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561092e573d5f803e3d5ffd5b505b8173ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a826040516109769190611ca2565b60405180910390a250610987611af9565b50565b60065481565b60095f9054906101000a900460ff1681565b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890611f37565b60405180910390fd5b42600354600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a6d9190611c33565b1115610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa590611fc5565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16631e83409a336040518263ffffffff1660e01b8152600401610ae79190611de8565b5f604051808303815f87803b158015610afe575f80fd5b505af1158015610b10573d5f803e3d5ffd5b505050505f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460085f8282540392505081905550600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600a5402600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b8152600401610cc6929190611fe3565b6020604051808303815f875af1158015610ce2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d069190612034565b503373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051610d8a9190611ca2565b60405180910390a2565b610d9c611a2c565b806006819055507ffff5a3f0f865b51ab29ba8b2a7a8a842aba29850a0aac105769fc4002bf1659481604051610dd29190611ca2565b60405180910390a150565b600a5481565b610deb611a2c565b60095f9054906101000a900460ff1615610e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e31906120a9565b60405180910390fd5b600160095f6101000a81548160ff021916908315150217905550565b610e5e611a2c565b806005819055507fe50e018c701765b9b32105984ecbc9625d67efa07e401054de647ad901369f4281604051610e949190611ca2565b60405180910390a150565b600e602052805f5260405f205f915090505481565b610ebc611a2c565b610ec55f611b02565b565b60085481565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f15836113c8565b610f1f9190611c00565b9050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b602052805f5260405f205f915090505481565b5f8111610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90612111565b60405180910390fd5b60095f9054906101000a900460ff16610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe990612179565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161105093929190612197565b6020604051808303815f875af115801561106c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110909190612034565b503073ffffffffffffffffffffffffffffffffffffffff16631e83409a336040518263ffffffff1660e01b81526004016110ca9190611de8565b5f604051808303815f87803b1580156110e1575f80fd5b505af11580156110f3573d5f803e3d5ffd5b5050505080600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508060085f828254019250508190555080600a5402600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d826040516111e49190611ca2565b60405180910390a250565b600d602052805f5260405f205f915090505481565b600c602052805f5260405f205f915090505481565b600960019054906101000a900460ff1681565b611234611a2c565b600960019054906101000a900460ff1615611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90612216565b60405180910390fd5b60095f9054906101000a900460ff166112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c990612179565b60405180910390fd5b600554471015611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e9061227e565b60405180910390fd5b5f6008541161135b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611352906122e6565b60405180910390fd5b6001600960016101000a81548160ff0219169083151502179055504260078190555060055460045f828254019250508190555060085470010000000000000000000000000000000060055402816113b5576113b4611c66565b5b04600a5401600a81905550565b60045481565b5f700100000000000000000000000000000000600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600a5402018161146a57611469611c66565b5b049050919050565b61147a611a2c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90612374565b60405180910390fd5b6114f181611b02565b50565b6114fc611aaa565b5f61150633610ecd565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8211611562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611559906123dc565b60405180910390fd5b81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115ae9190611c33565b925050819055505f600267ffffffffffffffff8111156115d1576115d06123fa565b5b6040519080825280602002602001820160405280156115ff5781602001602082028036833780820191505090505b5090508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166f919061243b565b815f8151811061168257611681612466565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106116f2576116f1612466565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117879190611de8565b602060405180830381865afa1580156117a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c691906124a7565b90508273ffffffffffffffffffffffffffffffffffffffff16637ff36ab5855f8530610168426117f69190611c33565b6040518663ffffffff1660e01b815260040161181594939291906125c2565b5f6040518083038185885af1158015611830573d5f803e3d5ffd5b50505050506040513d5f823e3d601f19601f82011682018060405250810190611859919061272f565b505f8160025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118b69190611de8565b602060405180830381865afa1580156118d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f591906124a7565b6118ff9190611c00565b905080600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508060085f828254019250508190555080600a5402600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f0e311a2c6dbfb0153ec3a8a5bdca09070b3e5f60768fdc10a20453f38d18687386836040516119f0929190612776565b60405180910390a25050505050611a05611af9565b565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a34611bc3565b73ffffffffffffffffffffffffffffffffffffffff16611a52610f26565b73ffffffffffffffffffffffffffffffffffffffff1614611aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9f906127e7565b60405180910390fd5b565b600260015403611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae69061284f565b60405180910390fd5b6002600181905550565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c0a82611bca565b9150611c1583611bca565b9250828203905081811115611c2d57611c2c611bd3565b5b92915050565b5f611c3d82611bca565b9150611c4883611bca565b9250828201905080821115611c6057611c5f611bd3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b611c9c81611bca565b82525050565b5f602082019050611cb55f830184611c93565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611cf582611ccc565b9050919050565b611d0581611ceb565b8114611d0f575f80fd5b50565b5f81359050611d2081611cfc565b92915050565b5f60208284031215611d3b57611d3a611cc4565b5b5f611d4884828501611d12565b91505092915050565b5f8115159050919050565b611d6581611d51565b82525050565b5f602082019050611d7e5f830184611d5c565b92915050565b611d8d81611bca565b8114611d97575f80fd5b50565b5f81359050611da881611d84565b92915050565b5f60208284031215611dc357611dc2611cc4565b5b5f611dd084828501611d9a565b91505092915050565b611de281611ceb565b82525050565b5f602082019050611dfb5f830184611dd9565b92915050565b5f819050919050565b5f611e24611e1f611e1a84611ccc565b611e01565b611ccc565b9050919050565b5f611e3582611e0a565b9050919050565b5f611e4682611e2b565b9050919050565b611e5681611e3c565b82525050565b5f602082019050611e6f5f830184611e4d565b92915050565b5f82825260208201905092915050565b7f6e6f7420616c6c6f7765640000000000000000000000000000000000000000005f82015250565b5f611eb9600b83611e75565b9150611ec482611e85565b602082019050919050565b5f6020820190508181035f830152611ee681611ead565b9050919050565b7f43616e6e6f7420776974686472617720300000000000000000000000000000005f82015250565b5f611f21601183611e75565b9150611f2c82611eed565b602082019050919050565b5f6020820190508181035f830152611f4e81611f15565b9050919050565b7f43616e6e6f74207769746864726177206265666f7265206c6f636b20647572615f8201527f74696f6e00000000000000000000000000000000000000000000000000000000602082015250565b5f611faf602483611e75565b9150611fba82611f55565b604082019050919050565b5f6020820190508181035f830152611fdc81611fa3565b9050919050565b5f604082019050611ff65f830185611dd9565b6120036020830184611c93565b9392505050565b61201381611d51565b811461201d575f80fd5b50565b5f8151905061202e8161200a565b92915050565b5f6020828403121561204957612048611cc4565b5b5f61205684828501612020565b91505092915050565b7f7374616b696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f612093601483611e75565b915061209e8261205f565b602082019050919050565b5f6020820190508181035f8301526120c081612087565b9050919050565b7f43616e6e6f74207374616b6520300000000000000000000000000000000000005f82015250565b5f6120fb600e83611e75565b9150612106826120c7565b602082019050919050565b5f6020820190508181035f830152612128816120ef565b9050919050565b7f7374616b696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f612163601083611e75565b915061216e8261212f565b602082019050919050565b5f6020820190508181035f83015261219081612157565b9050919050565b5f6060820190506121aa5f830186611dd9565b6121b76020830185611dd9565b6121c46040830184611c93565b949350505050565b7f646973747269627574696f6e20616c72656164792073746172746564000000005f82015250565b5f612200601c83611e75565b915061220b826121cc565b602082019050919050565b5f6020820190508181035f83015261222d816121f4565b9050919050565b7f6e6f7420656e6f756768206574680000000000000000000000000000000000005f82015250565b5f612268600e83611e75565b915061227382612234565b602082019050919050565b5f6020820190508181035f8301526122958161225c565b9050919050565b7f6e6f207374616b657273000000000000000000000000000000000000000000005f82015250565b5f6122d0600a83611e75565b91506122db8261229c565b602082019050919050565b5f6020820190508181035f8301526122fd816122c4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61235e602683611e75565b915061236982612304565b604082019050919050565b5f6020820190508181035f83015261238b81612352565b9050919050565b7f4e6f7468696e6720746f20636f6d706f756e64000000000000000000000000005f82015250565b5f6123c6601383611e75565b91506123d182612392565b602082019050919050565b5f6020820190508181035f8301526123f3816123ba565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061243581611cfc565b92915050565b5f602082840312156124505761244f611cc4565b5b5f61245d84828501612427565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506124a181611d84565b92915050565b5f602082840312156124bc576124bb611cc4565b5b5f6124c984828501612493565b91505092915050565b5f819050919050565b5f6124f56124f06124eb846124d2565b611e01565b611bca565b9050919050565b612505816124db565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61253d81611ceb565b82525050565b5f61254e8383612534565b60208301905092915050565b5f602082019050919050565b5f6125708261250b565b61257a8185612515565b935061258583612525565b805f5b838110156125b557815161259c8882612543565b97506125a78361255a565b925050600181019050612588565b5085935050505092915050565b5f6080820190506125d55f8301876124fc565b81810360208301526125e78186612566565b90506125f66040830185611dd9565b6126036060830184611c93565b95945050505050565b5f80fd5b5f601f19601f8301169050919050565b61262982612610565b810181811067ffffffffffffffff82111715612648576126476123fa565b5b80604052505050565b5f61265a611cbb565b90506126668282612620565b919050565b5f67ffffffffffffffff821115612685576126846123fa565b5b602082029050602081019050919050565b5f80fd5b5f6126ac6126a78461266b565b612651565b905080838252602082019050602084028301858111156126cf576126ce612696565b5b835b818110156126f857806126e48882612493565b8452602084019350506020810190506126d1565b5050509392505050565b5f82601f8301126127165761271561260c565b5b815161272684826020860161269a565b91505092915050565b5f6020828403121561274457612743611cc4565b5b5f82015167ffffffffffffffff81111561276157612760611cc8565b5b61276d84828501612702565b91505092915050565b5f6040820190506127895f830185611c93565b6127966020830184611c93565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127d1602083611e75565b91506127dc8261279d565b602082019050919050565b5f6020820190508181035f8301526127fe816127c5565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612839601f83611e75565b915061284482612805565b602082019050919050565b5f6020820190508181035f8301526128668161282d565b905091905056fea2646970667358221220c3b0f3fb554c7d0063939ae78f332ee4e827a6e07d8dbd7dad5cacb8a6adf42a64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c8063817b1cd2116100eb578063ca1557e411610089578063ef15f81111610063578063ef15f81114610695578063f2fde38b146106d1578063f69e2046146106f9578063fc0c546a1461070f576102a1565b8063ca1557e41461062b578063d83623dd14610655578063ea3a0e3e1461066b576102a1565b806398807d84116100c557806398807d841461054f578063b6b55f251461058b578063c2ec28d6146105b3578063c884ef83146105ef576102a1565b8063817b1cd2146104bf5780638903ab9d146104e95780638da5cb5b14610525576102a1565b80633ccfd60b116101585780636258173311610132578063625817331461042f5780636b541a1614610445578063700060d81461046d578063715018a6146104a9576102a1565b80633ccfd60b146103c75780635bf3648c146103dd5780636115078c14610405576102a1565b8063180b260711610194578063180b2607146103215780631e83409a1461034b5780631f8db26814610373578063387602981461039d576102a1565b806304554443146102a557806309ae1e58146102cf578063144fa6d7146102f9576102a1565b366102a1575f479050600554600454826101d49190611c00565b101580156101f15750426006546007546101ee9190611c33565b11155b80156101fe57505f600854115b80156102165750600960019054906101000a900460ff165b1561029f5760055460045f8282540192505081905550600854700100000000000000000000000000000000600554028161025357610252611c66565b5b04600a5401600a81905550426007819055507fddc9c30275a04c48091f24199f9c405765de34d979d6847f5b9798a57232d2e56005546040516102969190611ca2565b60405180910390a15b005b5f80fd5b3480156102b0575f80fd5b506102b9610739565b6040516102c69190611ca2565b60405180910390f35b3480156102da575f80fd5b506102e361073f565b6040516102f09190611ca2565b60405180910390f35b348015610304575f80fd5b5061031f600480360381019061031a9190611d26565b610745565b005b34801561032c575f80fd5b50610335610790565b6040516103429190611ca2565b60405180910390f35b348015610356575f80fd5b50610371600480360381019061036c9190611d26565b610796565b005b34801561037e575f80fd5b5061038761098a565b6040516103949190611ca2565b60405180910390f35b3480156103a8575f80fd5b506103b1610990565b6040516103be9190611d6b565b60405180910390f35b3480156103d2575f80fd5b506103db6109a2565b005b3480156103e8575f80fd5b5061040360048036038101906103fe9190611dae565b610d94565b005b348015610410575f80fd5b50610419610ddd565b6040516104269190611ca2565b60405180910390f35b34801561043a575f80fd5b50610443610de3565b005b348015610450575f80fd5b5061046b60048036038101906104669190611dae565b610e56565b005b348015610478575f80fd5b50610493600480360381019061048e9190611d26565b610e9f565b6040516104a09190611ca2565b60405180910390f35b3480156104b4575f80fd5b506104bd610eb4565b005b3480156104ca575f80fd5b506104d3610ec7565b6040516104e09190611ca2565b60405180910390f35b3480156104f4575f80fd5b5061050f600480360381019061050a9190611d26565b610ecd565b60405161051c9190611ca2565b60405180910390f35b348015610530575f80fd5b50610539610f26565b6040516105469190611de8565b60405180910390f35b34801561055a575f80fd5b5061057560048036038101906105709190611d26565b610f4d565b6040516105829190611ca2565b60405180910390f35b348015610596575f80fd5b506105b160048036038101906105ac9190611dae565b610f62565b005b3480156105be575f80fd5b506105d960048036038101906105d49190611d26565b6111ef565b6040516105e69190611ca2565b60405180910390f35b3480156105fa575f80fd5b5061061560048036038101906106109190611d26565b611204565b6040516106229190611ca2565b60405180910390f35b348015610636575f80fd5b5061063f611219565b60405161064c9190611d6b565b60405180910390f35b348015610660575f80fd5b5061066961122c565b005b348015610676575f80fd5b5061067f6113c2565b60405161068c9190611ca2565b60405180910390f35b3480156106a0575f80fd5b506106bb60048036038101906106b69190611d26565b6113c8565b6040516106c89190611ca2565b60405180910390f35b3480156106dc575f80fd5b506106f760048036038101906106f29190611d26565b611472565b005b348015610704575f80fd5b5061070d6114f4565b005b34801561071a575f80fd5b50610723611a07565b6040516107309190611e5c565b60405180910390f35b60035481565b60055481565b61074d611a2c565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b61079e611aaa565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061080357503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990611ecf565b60405180910390fd5b5f61084c82610ecd565b905042600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8111156109305780600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108e49190611c33565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561092e573d5f803e3d5ffd5b505b8173ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a826040516109769190611ca2565b60405180910390a250610987611af9565b50565b60065481565b60095f9054906101000a900460ff1681565b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890611f37565b60405180910390fd5b42600354600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a6d9190611c33565b1115610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa590611fc5565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16631e83409a336040518263ffffffff1660e01b8152600401610ae79190611de8565b5f604051808303815f87803b158015610afe575f80fd5b505af1158015610b10573d5f803e3d5ffd5b505050505f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460085f8282540392505081905550600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600a5402600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b8152600401610cc6929190611fe3565b6020604051808303815f875af1158015610ce2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d069190612034565b503373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051610d8a9190611ca2565b60405180910390a2565b610d9c611a2c565b806006819055507ffff5a3f0f865b51ab29ba8b2a7a8a842aba29850a0aac105769fc4002bf1659481604051610dd29190611ca2565b60405180910390a150565b600a5481565b610deb611a2c565b60095f9054906101000a900460ff1615610e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e31906120a9565b60405180910390fd5b600160095f6101000a81548160ff021916908315150217905550565b610e5e611a2c565b806005819055507fe50e018c701765b9b32105984ecbc9625d67efa07e401054de647ad901369f4281604051610e949190611ca2565b60405180910390a150565b600e602052805f5260405f205f915090505481565b610ebc611a2c565b610ec55f611b02565b565b60085481565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f15836113c8565b610f1f9190611c00565b9050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b602052805f5260405f205f915090505481565b5f8111610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90612111565b60405180910390fd5b60095f9054906101000a900460ff16610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe990612179565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161105093929190612197565b6020604051808303815f875af115801561106c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110909190612034565b503073ffffffffffffffffffffffffffffffffffffffff16631e83409a336040518263ffffffff1660e01b81526004016110ca9190611de8565b5f604051808303815f87803b1580156110e1575f80fd5b505af11580156110f3573d5f803e3d5ffd5b5050505080600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508060085f828254019250508190555080600a5402600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d826040516111e49190611ca2565b60405180910390a250565b600d602052805f5260405f205f915090505481565b600c602052805f5260405f205f915090505481565b600960019054906101000a900460ff1681565b611234611a2c565b600960019054906101000a900460ff1615611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90612216565b60405180910390fd5b60095f9054906101000a900460ff166112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c990612179565b60405180910390fd5b600554471015611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e9061227e565b60405180910390fd5b5f6008541161135b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611352906122e6565b60405180910390fd5b6001600960016101000a81548160ff0219169083151502179055504260078190555060055460045f828254019250508190555060085470010000000000000000000000000000000060055402816113b5576113b4611c66565b5b04600a5401600a81905550565b60045481565b5f700100000000000000000000000000000000600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600a5402018161146a57611469611c66565b5b049050919050565b61147a611a2c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90612374565b60405180910390fd5b6114f181611b02565b50565b6114fc611aaa565b5f61150633610ecd565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8211611562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611559906123dc565b60405180910390fd5b81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115ae9190611c33565b925050819055505f600267ffffffffffffffff8111156115d1576115d06123fa565b5b6040519080825280602002602001820160405280156115ff5781602001602082028036833780820191505090505b5090508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166f919061243b565b815f8151811061168257611681612466565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106116f2576116f1612466565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117879190611de8565b602060405180830381865afa1580156117a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c691906124a7565b90508273ffffffffffffffffffffffffffffffffffffffff16637ff36ab5855f8530610168426117f69190611c33565b6040518663ffffffff1660e01b815260040161181594939291906125c2565b5f6040518083038185885af1158015611830573d5f803e3d5ffd5b50505050506040513d5f823e3d601f19601f82011682018060405250810190611859919061272f565b505f8160025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118b69190611de8565b602060405180830381865afa1580156118d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f591906124a7565b6118ff9190611c00565b905080600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508060085f828254019250508190555080600a5402600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f0e311a2c6dbfb0153ec3a8a5bdca09070b3e5f60768fdc10a20453f38d18687386836040516119f0929190612776565b60405180910390a25050505050611a05611af9565b565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a34611bc3565b73ffffffffffffffffffffffffffffffffffffffff16611a52610f26565b73ffffffffffffffffffffffffffffffffffffffff1614611aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9f906127e7565b60405180910390fd5b565b600260015403611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae69061284f565b60405180910390fd5b6002600181905550565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c0a82611bca565b9150611c1583611bca565b9250828203905081811115611c2d57611c2c611bd3565b5b92915050565b5f611c3d82611bca565b9150611c4883611bca565b9250828201905080821115611c6057611c5f611bd3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b611c9c81611bca565b82525050565b5f602082019050611cb55f830184611c93565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611cf582611ccc565b9050919050565b611d0581611ceb565b8114611d0f575f80fd5b50565b5f81359050611d2081611cfc565b92915050565b5f60208284031215611d3b57611d3a611cc4565b5b5f611d4884828501611d12565b91505092915050565b5f8115159050919050565b611d6581611d51565b82525050565b5f602082019050611d7e5f830184611d5c565b92915050565b611d8d81611bca565b8114611d97575f80fd5b50565b5f81359050611da881611d84565b92915050565b5f60208284031215611dc357611dc2611cc4565b5b5f611dd084828501611d9a565b91505092915050565b611de281611ceb565b82525050565b5f602082019050611dfb5f830184611dd9565b92915050565b5f819050919050565b5f611e24611e1f611e1a84611ccc565b611e01565b611ccc565b9050919050565b5f611e3582611e0a565b9050919050565b5f611e4682611e2b565b9050919050565b611e5681611e3c565b82525050565b5f602082019050611e6f5f830184611e4d565b92915050565b5f82825260208201905092915050565b7f6e6f7420616c6c6f7765640000000000000000000000000000000000000000005f82015250565b5f611eb9600b83611e75565b9150611ec482611e85565b602082019050919050565b5f6020820190508181035f830152611ee681611ead565b9050919050565b7f43616e6e6f7420776974686472617720300000000000000000000000000000005f82015250565b5f611f21601183611e75565b9150611f2c82611eed565b602082019050919050565b5f6020820190508181035f830152611f4e81611f15565b9050919050565b7f43616e6e6f74207769746864726177206265666f7265206c6f636b20647572615f8201527f74696f6e00000000000000000000000000000000000000000000000000000000602082015250565b5f611faf602483611e75565b9150611fba82611f55565b604082019050919050565b5f6020820190508181035f830152611fdc81611fa3565b9050919050565b5f604082019050611ff65f830185611dd9565b6120036020830184611c93565b9392505050565b61201381611d51565b811461201d575f80fd5b50565b5f8151905061202e8161200a565b92915050565b5f6020828403121561204957612048611cc4565b5b5f61205684828501612020565b91505092915050565b7f7374616b696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f612093601483611e75565b915061209e8261205f565b602082019050919050565b5f6020820190508181035f8301526120c081612087565b9050919050565b7f43616e6e6f74207374616b6520300000000000000000000000000000000000005f82015250565b5f6120fb600e83611e75565b9150612106826120c7565b602082019050919050565b5f6020820190508181035f830152612128816120ef565b9050919050565b7f7374616b696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f612163601083611e75565b915061216e8261212f565b602082019050919050565b5f6020820190508181035f83015261219081612157565b9050919050565b5f6060820190506121aa5f830186611dd9565b6121b76020830185611dd9565b6121c46040830184611c93565b949350505050565b7f646973747269627574696f6e20616c72656164792073746172746564000000005f82015250565b5f612200601c83611e75565b915061220b826121cc565b602082019050919050565b5f6020820190508181035f83015261222d816121f4565b9050919050565b7f6e6f7420656e6f756768206574680000000000000000000000000000000000005f82015250565b5f612268600e83611e75565b915061227382612234565b602082019050919050565b5f6020820190508181035f8301526122958161225c565b9050919050565b7f6e6f207374616b657273000000000000000000000000000000000000000000005f82015250565b5f6122d0600a83611e75565b91506122db8261229c565b602082019050919050565b5f6020820190508181035f8301526122fd816122c4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61235e602683611e75565b915061236982612304565b604082019050919050565b5f6020820190508181035f83015261238b81612352565b9050919050565b7f4e6f7468696e6720746f20636f6d706f756e64000000000000000000000000005f82015250565b5f6123c6601383611e75565b91506123d182612392565b602082019050919050565b5f6020820190508181035f8301526123f3816123ba565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061243581611cfc565b92915050565b5f602082840312156124505761244f611cc4565b5b5f61245d84828501612427565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506124a181611d84565b92915050565b5f602082840312156124bc576124bb611cc4565b5b5f6124c984828501612493565b91505092915050565b5f819050919050565b5f6124f56124f06124eb846124d2565b611e01565b611bca565b9050919050565b612505816124db565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61253d81611ceb565b82525050565b5f61254e8383612534565b60208301905092915050565b5f602082019050919050565b5f6125708261250b565b61257a8185612515565b935061258583612525565b805f5b838110156125b557815161259c8882612543565b97506125a78361255a565b925050600181019050612588565b5085935050505092915050565b5f6080820190506125d55f8301876124fc565b81810360208301526125e78186612566565b90506125f66040830185611dd9565b6126036060830184611c93565b95945050505050565b5f80fd5b5f601f19601f8301169050919050565b61262982612610565b810181811067ffffffffffffffff82111715612648576126476123fa565b5b80604052505050565b5f61265a611cbb565b90506126668282612620565b919050565b5f67ffffffffffffffff821115612685576126846123fa565b5b602082029050602081019050919050565b5f80fd5b5f6126ac6126a78461266b565b612651565b905080838252602082019050602084028301858111156126cf576126ce612696565b5b835b818110156126f857806126e48882612493565b8452602084019350506020810190506126d1565b5050509392505050565b5f82601f8301126127165761271561260c565b5b815161272684826020860161269a565b91505092915050565b5f6020828403121561274457612743611cc4565b5b5f82015167ffffffffffffffff81111561276157612760611cc8565b5b61276d84828501612702565b91505092915050565b5f6040820190506127895f830185611c93565b6127966020830184611c93565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127d1602083611e75565b91506127dc8261279d565b602082019050919050565b5f6020820190508181035f8301526127fe816127c5565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612839601f83611e75565b915061284482612805565b602082019050919050565b5f6020820190508181035f8301526128668161282d565b905091905056fea2646970667358221220c3b0f3fb554c7d0063939ae78f332ee4e827a6e07d8dbd7dad5cacb8a6adf42a64736f6c63430008150033

Deployed Bytecode Sourcemap

11017:6145:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16534:15;16552:21;16534:39;;16635:18;;16612:19;;16602:7;:29;;;;:::i;:::-;:51;;:116;;;;;16703:15;16684;;16670:11;;:29;;;;:::i;:::-;:48;;16602:116;:148;;;;;16749:1;16735:11;;:15;16602:148;:182;;;;;16767:17;;;;;;;;;;;16602:182;16584:568;;;16863:18;;16840:19;;:41;;;;;;;;;;;17018:11;;11488:8;16984:18;;:30;16983:46;;;;;:::i;:::-;;;16941:17;;:89;16900:17;:130;;;;17074:15;17060:11;:29;;;;17109:31;17121:18;;17109:31;;;;;;:::i;:::-;;;;;;;;16584:568;16523:636;11017:6145;;;;11095:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11179:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12187:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11275:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15164:450;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11229:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11343:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13490:625;;;;;;;;;;;;;:::i;:::-;;12289:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11411:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12484:135;;;;;;;;;;;;;:::i;:::-;;12627:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11654:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2760:103;;;;;;;;;;;;;:::i;:::-;;11308:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12856:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2119:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11505:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12997:485;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11602:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11553:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11373:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15881:607;;;;;;;;;;;;;:::i;:::-;;11138:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15622:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3018:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14123:1033;;;;;;;;;;;;;:::i;:::-;;11069:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11095:36;;;;:::o;11179:43::-;;;;:::o;12187:94::-;2005:13;:11;:13::i;:::-;12266:6:::1;12251:5;;:22;;;;;;;;;;;;;;;;;;12187:94:::0;:::o;11275:26::-;;;;:::o;15164:450::-;5977:21;:19;:21::i;:::-;15263:5:::1;15249:19;;:10;:19;;;:50;;;;15294:4;15272:27;;:10;:27;;;15249:50;15227:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15349:17;15369:18;15381:5;15369:11;:18::i;:::-;15349:38;;15418:15;15398:10;:17;15409:5;15398:17;;;;;;;;;;;;;;;:35;;;;15460:1;15448:9;:13;15444:122;;;15496:9;15478:7;:14;15486:5;15478:14;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;15528:5;15520:23;;:34;15544:9;15520:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15444:122;15589:5;15581:25;;;15596:9;15581:25;;;;;;:::i;:::-;;;;;;;;15216:398;6021:20:::0;:18;:20::i;:::-;15164:450;:::o;11229:39::-;;;;:::o;11343:23::-;;;;;;;;;;;;;:::o;13490:625::-;13559:1;13538:6;:18;13545:10;13538:18;;;;;;;;;;;;;;;;:22;13530:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13656:15;13640:12;;13615:10;:22;13626:10;13615:22;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;;13593:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;13746:4;:10;;;13757;13746:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13825:1;13804:6;:18;13811:10;13804:18;;;;;;;;;;;;;;;:22;;;;13856:6;:18;13863:10;13856:18;;;;;;;;;;;;;;;;13841:11;;:33;;;;;;;;;;;13963:6;:18;13970:10;13963:18;;;;;;;;;;;;;;;;13926:17;;:55;13889:20;:32;13910:10;13889:32;;;;;;;;;;;;;;;;:93;;;;;;;;;;;14004:5;;;;;;;;;;;:14;;;14019:10;14031:6;:18;14038:10;14031:18;;;;;;;;;;;;;;;;14004:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14076:10;14066:41;;;14088:6;:18;14095:10;14088:18;;;;;;;;;;;;;;;;14066:41;;;;;;:::i;:::-;;;;;;;;13490:625::o;12289:187::-;2005:13;:11;:13::i;:::-;12393:17:::1;12375:15;:35;;;;12426:42;12450:17;12426:42;;;;;;:::i;:::-;;;;;;;;12289:187:::0;:::o;11411:32::-;;;;:::o;12484:135::-;2005:13;:11;:13::i;:::-;12546:11:::1;;;;;;;;;;;12545:12;12537:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;12607:4;12593:11;;:18;;;;;;;;;;;;;;;;;;12484:135::o:0;12627:221::-;2005:13;:11;:13::i;:::-;12756:20:::1;12735:18;:41;;;;12792:48;12819:20;12792:48;;;;;;:::i;:::-;;;;;;;;12627:221:::0;:::o;11654:55::-;;;;;;;;;;;;;;;;;:::o;2760:103::-;2005:13;:11;:13::i;:::-;2825:30:::1;2852:1;2825:18;:30::i;:::-;2760:103::o:0;11308:26::-;;;;:::o;12856:133::-;12914:7;12966;:15;12974:6;12966:15;;;;;;;;;;;;;;;;12941:22;12956:6;12941:14;:22::i;:::-;:40;;;;:::i;:::-;12934:47;;12856:133;;;:::o;2119:87::-;2165:7;2192:6;;;;;;;;;;;2185:13;;2119:87;:::o;11505:41::-;;;;;;;;;;;;;;;;;:::o;12997:485::-;13069:1;13059:7;:11;13051:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13108:11;;;;;;;;;;;13100:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;13151:5;;;;;;;;;;;:18;;;13170:10;13190:4;13197:7;13151:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13216:4;:10;;;13227;13216:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13296:7;13274:6;:18;13281:10;13274:18;;;;;;;;;;;;;;;;:29;;;;;;;;;;;13333:7;13318:11;;:22;;;;;;;;;;;13412:7;13392:17;;:27;13355:20;:32;13376:10;13355:32;;;;;;;;;;;;;;;;:65;;;;;;;;;;;13454:10;13447:27;;;13466:7;13447:27;;;;;;:::i;:::-;;;;;;;;12997:485;:::o;11602:45::-;;;;;;;;;;;;;;;;;:::o;11553:42::-;;;;;;;;;;;;;;;;;:::o;11373:29::-;;;;;;;;;;;;;:::o;15881:607::-;2005:13;:11;:13::i;:::-;15949:17:::1;;;;;;;;;;;15948:18;15940:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16018:11;;;;;;;;;;;16010:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;16094:18;;16069:21;:43;;16061:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16164:1;16150:11;;:15;16142:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16211:4;16191:17;;:24;;;;;;;;;;;;;;;;;;16240:15;16226:11;:29;;;;16314:18;;16291:19;;:41;;;;;;;;;;;16457:11;;11488:8;16423:18;;:30;16422:46;;;;;:::i;:::-;;;16384:17;;:85;16347:17;:122;;;;15881:607::o:0;11138:34::-;;;;:::o;15622:251::-;15683:7;11488:8;15813:20;:28;15834:6;15813:28;;;;;;;;;;;;;;;;15774:6;:14;15781:6;15774:14;;;;;;;;;;;;;;;;15754:17;;:34;15753:88;15752:102;;;;;:::i;:::-;;;15728:126;;15622:251;;;:::o;3018:201::-;2005:13;:11;:13::i;:::-;3127:1:::1;3107:22;;:8;:22;;::::0;3099:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3183:28;3202:8;3183:18;:28::i;:::-;3018:201:::0;:::o;14123:1033::-;5977:21;:19;:21::i;:::-;14176:17:::1;14196:23;14208:10;14196:11;:23::i;:::-;14176:43;;14230:21;14283:42;14230:106;;14367:1;14355:9;:13;14347:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;14426:9;14403:7;:19;14411:10;14403:19;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;14446:21;14484:1;14470:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14446:40;;14507:6;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14497:4;14502:1;14497:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14549:5;;;;;;;;;;;14531:4;14536:1;14531:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;::::0;::::1;14566:21;14590:5;;;;;;;;;;;:15;;;14614:4;14590:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14566:54;;14631:6;:28;;;14667:9;14692:1;14708:4;14735;14773:3;14755:15;:21;;;;:::i;:::-;14631:156;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14798:19;14853:13;14820:5;;;;;;;;;;;:15;;;14844:4;14820:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;:::i;:::-;14798:68;;14924:11;14902:6;:18;14909:10;14902:18;;;;;;;;;;;;;;;;:33;;;;;;;;;;;14965:11;14950;;:26;;;;;;;;;;;15065:11;15028:17;;:48;14991:20;:32;15012:10;14991:32;;;;;;;;;;;;;;;;:86;;;;;;;;;;;15113:10;15104:44;;;15125:9;15136:11;15104:44;;;;;;;:::i;:::-;;;;;;;;14165:991;;;;;6021:20:::0;:18;:20::i;:::-;14123:1033::o;11069:19::-;;;;;;;;;;;;;:::o;2284:132::-;2359:12;:10;:12::i;:::-;2348:23;;:7;:5;:7::i;:::-;:23;;;2340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2284:132::o;6057:293::-;5459:1;6191:7;;:19;6183:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;5459:1;6324:7;:18;;;;6057:293::o;6358:213::-;5415:1;6541:7;:22;;;;6358:213::o;3379:191::-;3453:16;3472:6;;;;;;;;;;;3453:25;;3498:8;3489:6;;:17;;;;;;;;;;;;;;;;;;3553:8;3522:40;;3543:8;3522:40;;;;;;;;;;;;3442:128;3379:191;:::o;617:98::-;670:7;697:10;690:17;;617:98;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;476:191::-;516:3;535:20;553:1;535:20;:::i;:::-;530:25;;569:20;587:1;569:20;:::i;:::-;564:25;;612:1;609;605:9;598:16;;633:3;630:1;627:10;624:36;;;640:18;;:::i;:::-;624:36;476:191;;;;:::o;673:180::-;721:77;718:1;711:88;818:4;815:1;808:15;842:4;839:1;832:15;859:118;946:24;964:5;946:24;:::i;:::-;941:3;934:37;859:118;;:::o;983:222::-;1076:4;1114:2;1103:9;1099:18;1091:26;;1127:71;1195:1;1184:9;1180:17;1171:6;1127:71;:::i;:::-;983:222;;;;:::o;1211:75::-;1244:6;1277:2;1271:9;1261:19;;1211:75;:::o;1292:117::-;1401:1;1398;1391:12;1415:117;1524:1;1521;1514:12;1538:126;1575:7;1615:42;1608:5;1604:54;1593:65;;1538:126;;;:::o;1670:96::-;1707:7;1736:24;1754:5;1736:24;:::i;:::-;1725:35;;1670:96;;;:::o;1772:122::-;1845:24;1863:5;1845:24;:::i;:::-;1838:5;1835:35;1825:63;;1884:1;1881;1874:12;1825:63;1772:122;:::o;1900:139::-;1946:5;1984:6;1971:20;1962:29;;2000:33;2027:5;2000:33;:::i;:::-;1900:139;;;;:::o;2045:329::-;2104:6;2153:2;2141:9;2132:7;2128:23;2124:32;2121:119;;;2159:79;;:::i;:::-;2121:119;2279:1;2304:53;2349:7;2340:6;2329:9;2325:22;2304:53;:::i;:::-;2294:63;;2250:117;2045:329;;;;:::o;2380:90::-;2414:7;2457:5;2450:13;2443:21;2432:32;;2380:90;;;:::o;2476:109::-;2557:21;2572:5;2557:21;:::i;:::-;2552:3;2545:34;2476:109;;:::o;2591:210::-;2678:4;2716:2;2705:9;2701:18;2693:26;;2729:65;2791:1;2780:9;2776:17;2767:6;2729:65;:::i;:::-;2591:210;;;;:::o;2807:122::-;2880:24;2898:5;2880:24;:::i;:::-;2873:5;2870:35;2860:63;;2919:1;2916;2909:12;2860:63;2807:122;:::o;2935:139::-;2981:5;3019:6;3006:20;2997:29;;3035:33;3062:5;3035:33;:::i;:::-;2935:139;;;;:::o;3080:329::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:119;;;3194:79;;:::i;:::-;3156:119;3314:1;3339:53;3384:7;3375:6;3364:9;3360:22;3339:53;:::i;:::-;3329:63;;3285:117;3080:329;;;;:::o;3415:118::-;3502:24;3520:5;3502:24;:::i;:::-;3497:3;3490:37;3415:118;;:::o;3539:222::-;3632:4;3670:2;3659:9;3655:18;3647:26;;3683:71;3751:1;3740:9;3736:17;3727:6;3683:71;:::i;:::-;3539:222;;;;:::o;3767:60::-;3795:3;3816:5;3809:12;;3767:60;;;:::o;3833:142::-;3883:9;3916:53;3934:34;3943:24;3961:5;3943:24;:::i;:::-;3934:34;:::i;:::-;3916:53;:::i;:::-;3903:66;;3833:142;;;:::o;3981:126::-;4031:9;4064:37;4095:5;4064:37;:::i;:::-;4051:50;;3981:126;;;:::o;4113:140::-;4177:9;4210:37;4241:5;4210:37;:::i;:::-;4197:50;;4113:140;;;:::o;4259:159::-;4360:51;4405:5;4360:51;:::i;:::-;4355:3;4348:64;4259:159;;:::o;4424:250::-;4531:4;4569:2;4558:9;4554:18;4546:26;;4582:85;4664:1;4653:9;4649:17;4640:6;4582:85;:::i;:::-;4424:250;;;;:::o;4680:169::-;4764:11;4798:6;4793:3;4786:19;4838:4;4833:3;4829:14;4814:29;;4680:169;;;;:::o;4855:161::-;4995:13;4991:1;4983:6;4979:14;4972:37;4855:161;:::o;5022:366::-;5164:3;5185:67;5249:2;5244:3;5185:67;:::i;:::-;5178:74;;5261:93;5350:3;5261:93;:::i;:::-;5379:2;5374:3;5370:12;5363:19;;5022:366;;;:::o;5394:419::-;5560:4;5598:2;5587:9;5583:18;5575:26;;5647:9;5641:4;5637:20;5633:1;5622:9;5618:17;5611:47;5675:131;5801:4;5675:131;:::i;:::-;5667:139;;5394:419;;;:::o;5819:167::-;5959:19;5955:1;5947:6;5943:14;5936:43;5819:167;:::o;5992:366::-;6134:3;6155:67;6219:2;6214:3;6155:67;:::i;:::-;6148:74;;6231:93;6320:3;6231:93;:::i;:::-;6349:2;6344:3;6340:12;6333:19;;5992:366;;;:::o;6364:419::-;6530:4;6568:2;6557:9;6553:18;6545:26;;6617:9;6611:4;6607:20;6603:1;6592:9;6588:17;6581:47;6645:131;6771:4;6645:131;:::i;:::-;6637:139;;6364:419;;;:::o;6789:223::-;6929:34;6925:1;6917:6;6913:14;6906:58;6998:6;6993:2;6985:6;6981:15;6974:31;6789:223;:::o;7018:366::-;7160:3;7181:67;7245:2;7240:3;7181:67;:::i;:::-;7174:74;;7257:93;7346:3;7257:93;:::i;:::-;7375:2;7370:3;7366:12;7359:19;;7018:366;;;:::o;7390:419::-;7556:4;7594:2;7583:9;7579:18;7571:26;;7643:9;7637:4;7633:20;7629:1;7618:9;7614:17;7607:47;7671:131;7797:4;7671:131;:::i;:::-;7663:139;;7390:419;;;:::o;7815:332::-;7936:4;7974:2;7963:9;7959:18;7951:26;;7987:71;8055:1;8044:9;8040:17;8031:6;7987:71;:::i;:::-;8068:72;8136:2;8125:9;8121:18;8112:6;8068:72;:::i;:::-;7815:332;;;;;:::o;8153:116::-;8223:21;8238:5;8223:21;:::i;:::-;8216:5;8213:32;8203:60;;8259:1;8256;8249:12;8203:60;8153:116;:::o;8275:137::-;8329:5;8360:6;8354:13;8345:22;;8376:30;8400:5;8376:30;:::i;:::-;8275:137;;;;:::o;8418:345::-;8485:6;8534:2;8522:9;8513:7;8509:23;8505:32;8502:119;;;8540:79;;:::i;:::-;8502:119;8660:1;8685:61;8738:7;8729:6;8718:9;8714:22;8685:61;:::i;:::-;8675:71;;8631:125;8418:345;;;;:::o;8769:170::-;8909:22;8905:1;8897:6;8893:14;8886:46;8769:170;:::o;8945:366::-;9087:3;9108:67;9172:2;9167:3;9108:67;:::i;:::-;9101:74;;9184:93;9273:3;9184:93;:::i;:::-;9302:2;9297:3;9293:12;9286:19;;8945:366;;;:::o;9317:419::-;9483:4;9521:2;9510:9;9506:18;9498:26;;9570:9;9564:4;9560:20;9556:1;9545:9;9541:17;9534:47;9598:131;9724:4;9598:131;:::i;:::-;9590:139;;9317:419;;;:::o;9742:164::-;9882:16;9878:1;9870:6;9866:14;9859:40;9742:164;:::o;9912:366::-;10054:3;10075:67;10139:2;10134:3;10075:67;:::i;:::-;10068:74;;10151:93;10240:3;10151:93;:::i;:::-;10269:2;10264:3;10260:12;10253:19;;9912:366;;;:::o;10284:419::-;10450:4;10488:2;10477:9;10473:18;10465:26;;10537:9;10531:4;10527:20;10523:1;10512:9;10508:17;10501:47;10565:131;10691:4;10565:131;:::i;:::-;10557:139;;10284:419;;;:::o;10709:166::-;10849:18;10845:1;10837:6;10833:14;10826:42;10709:166;:::o;10881:366::-;11023:3;11044:67;11108:2;11103:3;11044:67;:::i;:::-;11037:74;;11120:93;11209:3;11120:93;:::i;:::-;11238:2;11233:3;11229:12;11222:19;;10881:366;;;:::o;11253:419::-;11419:4;11457:2;11446:9;11442:18;11434:26;;11506:9;11500:4;11496:20;11492:1;11481:9;11477:17;11470:47;11534:131;11660:4;11534:131;:::i;:::-;11526:139;;11253:419;;;:::o;11678:442::-;11827:4;11865:2;11854:9;11850:18;11842:26;;11878:71;11946:1;11935:9;11931:17;11922:6;11878:71;:::i;:::-;11959:72;12027:2;12016:9;12012:18;12003:6;11959:72;:::i;:::-;12041;12109:2;12098:9;12094:18;12085:6;12041:72;:::i;:::-;11678:442;;;;;;:::o;12126:178::-;12266:30;12262:1;12254:6;12250:14;12243:54;12126:178;:::o;12310:366::-;12452:3;12473:67;12537:2;12532:3;12473:67;:::i;:::-;12466:74;;12549:93;12638:3;12549:93;:::i;:::-;12667:2;12662:3;12658:12;12651:19;;12310:366;;;:::o;12682:419::-;12848:4;12886:2;12875:9;12871:18;12863:26;;12935:9;12929:4;12925:20;12921:1;12910:9;12906:17;12899:47;12963:131;13089:4;12963:131;:::i;:::-;12955:139;;12682:419;;;:::o;13107:164::-;13247:16;13243:1;13235:6;13231:14;13224:40;13107:164;:::o;13277:366::-;13419:3;13440:67;13504:2;13499:3;13440:67;:::i;:::-;13433:74;;13516:93;13605:3;13516:93;:::i;:::-;13634:2;13629:3;13625:12;13618:19;;13277:366;;;:::o;13649:419::-;13815:4;13853:2;13842:9;13838:18;13830:26;;13902:9;13896:4;13892:20;13888:1;13877:9;13873:17;13866:47;13930:131;14056:4;13930:131;:::i;:::-;13922:139;;13649:419;;;:::o;14074:160::-;14214:12;14210:1;14202:6;14198:14;14191:36;14074:160;:::o;14240:366::-;14382:3;14403:67;14467:2;14462:3;14403:67;:::i;:::-;14396:74;;14479:93;14568:3;14479:93;:::i;:::-;14597:2;14592:3;14588:12;14581:19;;14240:366;;;:::o;14612:419::-;14778:4;14816:2;14805:9;14801:18;14793:26;;14865:9;14859:4;14855:20;14851:1;14840:9;14836:17;14829:47;14893:131;15019:4;14893:131;:::i;:::-;14885:139;;14612:419;;;:::o;15037:225::-;15177:34;15173:1;15165:6;15161:14;15154:58;15246:8;15241:2;15233:6;15229:15;15222:33;15037:225;:::o;15268:366::-;15410:3;15431:67;15495:2;15490:3;15431:67;:::i;:::-;15424:74;;15507:93;15596:3;15507:93;:::i;:::-;15625:2;15620:3;15616:12;15609:19;;15268:366;;;:::o;15640:419::-;15806:4;15844:2;15833:9;15829:18;15821:26;;15893:9;15887:4;15883:20;15879:1;15868:9;15864:17;15857:47;15921:131;16047:4;15921:131;:::i;:::-;15913:139;;15640:419;;;:::o;16065:169::-;16205:21;16201:1;16193:6;16189:14;16182:45;16065:169;:::o;16240:366::-;16382:3;16403:67;16467:2;16462:3;16403:67;:::i;:::-;16396:74;;16479:93;16568:3;16479:93;:::i;:::-;16597:2;16592:3;16588:12;16581:19;;16240:366;;;:::o;16612:419::-;16778:4;16816:2;16805:9;16801:18;16793:26;;16865:9;16859:4;16855:20;16851:1;16840:9;16836:17;16829:47;16893:131;17019:4;16893:131;:::i;:::-;16885:139;;16612:419;;;:::o;17037:180::-;17085:77;17082:1;17075:88;17182:4;17179:1;17172:15;17206:4;17203:1;17196:15;17223:143;17280:5;17311:6;17305:13;17296:22;;17327:33;17354:5;17327:33;:::i;:::-;17223:143;;;;:::o;17372:351::-;17442:6;17491:2;17479:9;17470:7;17466:23;17462:32;17459:119;;;17497:79;;:::i;:::-;17459:119;17617:1;17642:64;17698:7;17689:6;17678:9;17674:22;17642:64;:::i;:::-;17632:74;;17588:128;17372:351;;;;:::o;17729:180::-;17777:77;17774:1;17767:88;17874:4;17871:1;17864:15;17898:4;17895:1;17888:15;17915:143;17972:5;18003:6;17997:13;17988:22;;18019:33;18046:5;18019:33;:::i;:::-;17915:143;;;;:::o;18064:351::-;18134:6;18183:2;18171:9;18162:7;18158:23;18154:32;18151:119;;;18189:79;;:::i;:::-;18151:119;18309:1;18334:64;18390:7;18381:6;18370:9;18366:22;18334:64;:::i;:::-;18324:74;;18280:128;18064:351;;;;:::o;18421:85::-;18466:7;18495:5;18484:16;;18421:85;;;:::o;18512:158::-;18570:9;18603:61;18621:42;18630:32;18656:5;18630:32;:::i;:::-;18621:42;:::i;:::-;18603:61;:::i;:::-;18590:74;;18512:158;;;:::o;18676:147::-;18771:45;18810:5;18771:45;:::i;:::-;18766:3;18759:58;18676:147;;:::o;18829:114::-;18896:6;18930:5;18924:12;18914:22;;18829:114;;;:::o;18949:184::-;19048:11;19082:6;19077:3;19070:19;19122:4;19117:3;19113:14;19098:29;;18949:184;;;;:::o;19139:132::-;19206:4;19229:3;19221:11;;19259:4;19254:3;19250:14;19242:22;;19139:132;;;:::o;19277:108::-;19354:24;19372:5;19354:24;:::i;:::-;19349:3;19342:37;19277:108;;:::o;19391:179::-;19460:10;19481:46;19523:3;19515:6;19481:46;:::i;:::-;19559:4;19554:3;19550:14;19536:28;;19391:179;;;;:::o;19576:113::-;19646:4;19678;19673:3;19669:14;19661:22;;19576:113;;;:::o;19725:732::-;19844:3;19873:54;19921:5;19873:54;:::i;:::-;19943:86;20022:6;20017:3;19943:86;:::i;:::-;19936:93;;20053:56;20103:5;20053:56;:::i;:::-;20132:7;20163:1;20148:284;20173:6;20170:1;20167:13;20148:284;;;20249:6;20243:13;20276:63;20335:3;20320:13;20276:63;:::i;:::-;20269:70;;20362:60;20415:6;20362:60;:::i;:::-;20352:70;;20208:224;20195:1;20192;20188:9;20183:14;;20148:284;;;20152:14;20448:3;20441:10;;19849:608;;;19725:732;;;;:::o;20463:720::-;20698:4;20736:3;20725:9;20721:19;20713:27;;20750:79;20826:1;20815:9;20811:17;20802:6;20750:79;:::i;:::-;20876:9;20870:4;20866:20;20861:2;20850:9;20846:18;20839:48;20904:108;21007:4;20998:6;20904:108;:::i;:::-;20896:116;;21022:72;21090:2;21079:9;21075:18;21066:6;21022:72;:::i;:::-;21104;21172:2;21161:9;21157:18;21148:6;21104:72;:::i;:::-;20463:720;;;;;;;:::o;21189:117::-;21298:1;21295;21288:12;21312:102;21353:6;21404:2;21400:7;21395:2;21388:5;21384:14;21380:28;21370:38;;21312:102;;;:::o;21420:281::-;21503:27;21525:4;21503:27;:::i;:::-;21495:6;21491:40;21633:6;21621:10;21618:22;21597:18;21585:10;21582:34;21579:62;21576:88;;;21644:18;;:::i;:::-;21576:88;21684:10;21680:2;21673:22;21463:238;21420:281;;:::o;21707:129::-;21741:6;21768:20;;:::i;:::-;21758:30;;21797:33;21825:4;21817:6;21797:33;:::i;:::-;21707:129;;;:::o;21842:311::-;21919:4;22009:18;22001:6;21998:30;21995:56;;;22031:18;;:::i;:::-;21995:56;22081:4;22073:6;22069:17;22061:25;;22141:4;22135;22131:15;22123:23;;21842:311;;;:::o;22159:117::-;22268:1;22265;22258:12;22299:732;22406:5;22431:81;22447:64;22504:6;22447:64;:::i;:::-;22431:81;:::i;:::-;22422:90;;22532:5;22561:6;22554:5;22547:21;22595:4;22588:5;22584:16;22577:23;;22648:4;22640:6;22636:17;22628:6;22624:30;22677:3;22669:6;22666:15;22663:122;;;22696:79;;:::i;:::-;22663:122;22811:6;22794:231;22828:6;22823:3;22820:15;22794:231;;;22903:3;22932:48;22976:3;22964:10;22932:48;:::i;:::-;22927:3;22920:61;23010:4;23005:3;23001:14;22994:21;;22870:155;22854:4;22849:3;22845:14;22838:21;;22794:231;;;22798:21;22412:619;;22299:732;;;;;:::o;23054:385::-;23136:5;23185:3;23178:4;23170:6;23166:17;23162:27;23152:122;;23193:79;;:::i;:::-;23152:122;23303:6;23297:13;23328:105;23429:3;23421:6;23414:4;23406:6;23402:17;23328:105;:::i;:::-;23319:114;;23142:297;23054:385;;;;:::o;23445:554::-;23540:6;23589:2;23577:9;23568:7;23564:23;23560:32;23557:119;;;23595:79;;:::i;:::-;23557:119;23736:1;23725:9;23721:17;23715:24;23766:18;23758:6;23755:30;23752:117;;;23788:79;;:::i;:::-;23752:117;23893:89;23974:7;23965:6;23954:9;23950:22;23893:89;:::i;:::-;23883:99;;23686:306;23445:554;;;;:::o;24005:332::-;24126:4;24164:2;24153:9;24149:18;24141:26;;24177:71;24245:1;24234:9;24230:17;24221:6;24177:71;:::i;:::-;24258:72;24326:2;24315:9;24311:18;24302:6;24258:72;:::i;:::-;24005:332;;;;;:::o;24343:182::-;24483:34;24479:1;24471:6;24467:14;24460:58;24343:182;:::o;24531:366::-;24673:3;24694:67;24758:2;24753:3;24694:67;:::i;:::-;24687:74;;24770:93;24859:3;24770:93;:::i;:::-;24888:2;24883:3;24879:12;24872:19;;24531:366;;;:::o;24903:419::-;25069:4;25107:2;25096:9;25092:18;25084:26;;25156:9;25150:4;25146:20;25142:1;25131:9;25127:17;25120:47;25184:131;25310:4;25184:131;:::i;:::-;25176:139;;24903:419;;;:::o;25328:181::-;25468:33;25464:1;25456:6;25452:14;25445:57;25328:181;:::o;25515:366::-;25657:3;25678:67;25742:2;25737:3;25678:67;:::i;:::-;25671:74;;25754:93;25843:3;25754:93;:::i;:::-;25872:2;25867:3;25863:12;25856:19;;25515:366;;;:::o;25887:419::-;26053:4;26091:2;26080:9;26076:18;26068:26;;26140:9;26134:4;26130:20;26126:1;26115:9;26111:17;26104:47;26168:131;26294:4;26168:131;:::i;:::-;26160:139;;25887:419;;;:::o

Swarm Source

ipfs://c3b0f3fb554c7d0063939ae78f332ee4e827a6e07d8dbd7dad5cacb8a6adf42a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.