ETH Price: $3,441.93 (-1.29%)

Contract

0x5f577b1e949B17DADF9ECf146A4B08699eD2fa90
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw148871312022-06-01 21:26:28938 days ago1654118788IN
0x5f577b1e...99eD2fa90
0 ETH0.0064980851.59869405
Add Reward146090042022-04-18 11:46:28982 days ago1650282388IN
0x5f577b1e...99eD2fa90
0 ETH0.0019632330.78080154
Withdraw138195352021-12-17 0:57:301105 days ago1639702650IN
0x5f577b1e...99eD2fa90
0 ETH0.0090459765.95920784
Withdraw136824692021-11-25 8:40:171126 days ago1637829617IN
0x5f577b1e...99eD2fa90
0 ETH0.0162321118.35721979
Withdraw136302112021-11-17 2:08:371135 days ago1637114917IN
0x5f577b1e...99eD2fa90
0 ETH0.0117120195.33981132
Stake135187532021-10-30 13:39:221152 days ago1635601162IN
0x5f577b1e...99eD2fa90
0 ETH0.01750161164.9431033
Withdraw135187212021-10-30 13:32:191152 days ago1635600739IN
0x5f577b1e...99eD2fa90
0 ETH0.00318798134.58226217
Withdraw135187202021-10-30 13:32:111152 days ago1635600731IN
0x5f577b1e...99eD2fa90
0 ETH0.01560866127.05984687
Stake134385882021-10-18 0:13:461165 days ago1634516026IN
0x5f577b1e...99eD2fa90
0 ETH0.0072625366.68567312
Withdraw134383532021-10-17 23:21:181165 days ago1634512878IN
0x5f577b1e...99eD2fa90
0 ETH0.0069817558.1595083
Withdraw134164522021-10-14 12:59:591168 days ago1634216399IN
0x5f577b1e...99eD2fa90
0 ETH0.0022929996.79965019
Withdraw134164522021-10-14 12:59:591168 days ago1634216399IN
0x5f577b1e...99eD2fa90
0 ETH0.01359876110.69856475
Stake133170362021-09-28 22:50:061184 days ago1632869406IN
0x5f577b1e...99eD2fa90
0 ETH0.0065565561.7919414
Withdraw133170272021-09-28 22:48:181184 days ago1632869298IN
0x5f577b1e...99eD2fa90
0 ETH0.0089042974.17462589
Withdraw132982152021-09-26 0:20:541187 days ago1632615654IN
0x5f577b1e...99eD2fa90
0 ETH0.0072209351.59839906
Stake132457332021-09-17 21:48:241195 days ago1631915304IN
0x5f577b1e...99eD2fa90
0 ETH0.0069569263.87948176
Withdraw132456492021-09-17 21:25:271195 days ago1631913927IN
0x5f577b1e...99eD2fa90
0 ETH0.0087229182.49007059
Stake132160352021-09-13 7:32:421199 days ago1631518362IN
0x5f577b1e...99eD2fa90
0 ETH0.0080198773.63968393
Withdraw132159622021-09-13 7:16:341199 days ago1631517394IN
0x5f577b1e...99eD2fa90
0 ETH0.0062551360.76188242
Withdraw131312072021-08-31 4:27:391213 days ago1630384059IN
0x5f577b1e...99eD2fa90
0 ETH0.0105033985.50119541
Stake131149192021-08-28 16:15:401215 days ago1630167340IN
0x5f577b1e...99eD2fa90
0 ETH0.0080933876.27565733
Withdraw131149122021-08-28 16:14:161215 days ago1630167256IN
0x5f577b1e...99eD2fa90
0 ETH0.0099995881.4
Stake130490802021-08-18 11:59:061225 days ago1629287946IN
0x5f577b1e...99eD2fa90
0 ETH0.0044651841
Withdraw130450252021-08-17 20:52:371226 days ago1629233557IN
0x5f577b1e...99eD2fa90
0 ETH0.0014426560.90252428
Withdraw130450252021-08-17 20:52:371226 days ago1629233557IN
0x5f577b1e...99eD2fa90
0 ETH0.0059626649.67025878
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:
Liquidity_v8

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-04-13
*/

// Liquidity contract with pegged value
pragma solidity 0.5.16;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see `ERC20Detailed`.
 */
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 token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    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
    );
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

pragma solidity 0.5.16;

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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

// File: @openzeppelin/contracts/GSN/Context.sol

pragma solidity 0.5.16;

contract Context {
    constructor() internal {}

    // solhint-disable-previous-line no-empty-blocks

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

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode
        return msg.data;
    }
}

// File: @openzeppelin/contracts/ownership/Ownable.sol

pragma solidity 0.5.16;

contract Ownable is Context {
    address private _owner;

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

    constructor() internal {
        _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(0));
        _owner = address(0);
    }

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

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

pragma solidity 0.5.16;

contract Liquidity_v8 is Ownable {
    using SafeMath for uint256;

    /**
     * @dev Structs to store user staking data.
     */
    struct Deposits {
        uint256 depositAmount;
        uint256 depositTime;
        uint256 endTime;
        uint64 userIndex;
        bool paid;
    }

    /**
     * @dev Structs to store interest rate change.
     */
    struct Rates {
        uint64 newInterestRate;
        uint256 timeStamp;
    }

    mapping(address => bool) private hasStaked;
    mapping(address => Deposits) private deposits;
    mapping(uint64 => Rates) public rates;

    string public name;
    address public tokenAddress;
    address public rewardTokenAddress;
    uint256 public stakedTotal;
    uint256 public totalReward;
    uint256 public rewardBalance;
    uint256 public stakedBalance;
    uint64 public rate;
    uint64 public index;
    uint256 public lockDuration;

    IERC20 public ERC20Interface;

    /**
     * @dev Emitted when user stakes 'stakedAmount' value of tokens
     */
    event Staked(
        address indexed token,
        address indexed staker_,
        uint256 stakedAmount_
    );

    /**
     * @dev Emitted when user withdraws his stakings
     */
    event PaidOut(
        address indexed token,
        address indexed rewardToken,
        address indexed staker_,
        uint256 amount_,
        uint256 reward_
    );

    /**
     *   @param
     *   name_ name of the contract
     *   tokenAddress_ contract address of the token
     *   rewardTokenAddress_ contract address of the reward token
     *   rate_ rate multiplied by 100
     *   lockduration_ duration in days
     */
    constructor(
        string memory name_,
        address tokenAddress_,
        address rewardTokenAddress_,
        uint64 rate_,
        uint256 lockDuration_
    ) public Ownable() {
        name = name_;
        require(tokenAddress_ != address(0), "Token address: 0 address");
        tokenAddress = tokenAddress_;
        require(
            rewardTokenAddress_ != address(0),
            "Reward token address: 0 address"
        );
        rewardTokenAddress = rewardTokenAddress_;
        require(rate_ != 0, "Zero interest rate");
        rate = rate_;
        lockDuration = lockDuration_;
        rates[index] = Rates(rate, block.timestamp);
    }

    /**
     * @dev to set interest rates
     */
    function setRate(uint64 rate_) external onlyOwner {
        require(rate_ != 0, "Zero interest rate");
        index++;
        rates[index] = Rates(rate_, block.timestamp);
        rate = rate_;
    }

    /**
     *  Requirements:
     *  'lockduration_' lock days
     *  @dev to set lock duration days
     */
    function changeLockDuration(uint256 lockduration_) external onlyOwner {
        lockDuration = lockduration_;
    }

    /**
     * @dev to add rewards to the staking contract
     * once the allowance is given to this contract for 'rewardAmount' by the user
     */
    function addReward(uint256 rewardAmount)
        external
        _hasAllowance(msg.sender, rewardAmount, rewardTokenAddress)
        returns (bool)
    {
        require(rewardAmount > 0, "Reward must be positive");
        address from = msg.sender;
        if (!_payMe(from, rewardAmount, rewardTokenAddress)) {
            return false;
        }
        totalReward = totalReward.add(rewardAmount);
        rewardBalance = rewardBalance.add(rewardAmount);
        return true;
    }

    /**
     * @dev returns user staking data
     */
    function userDeposits(address user)
        external
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            bool
        )
    {
        if (hasStaked[user]) {
            return (
                deposits[user].depositAmount,
                deposits[user].depositTime,
                deposits[user].endTime,
                deposits[user].userIndex,
                deposits[user].paid
            );
        }
    }

    /**
     * Requirements:
     * - 'amount' Amount to be staked
     /**
     * @dev to stake 'amount' value of tokens 
     * once the user has given allowance to the staking contract
     */
    function stake(uint256 amount)
        external
        _hasAllowance(msg.sender, amount, tokenAddress)
        returns (bool)
    {
        require(amount > 0, "Can't stake 0 amount");
        address from = msg.sender;
        require(!hasStaked[from], "Already staked");
        return _stake(from, amount);
    }

    function _stake(address staker, uint256 amount) private returns (bool) {
        if (!_payMe(staker, amount, tokenAddress)) {
            return false;
        }
        hasStaked[staker] = true;
        deposits[staker] = Deposits(
            amount,
            block.timestamp,
            block.timestamp.add((lockDuration.mul(86400))), //(lockDuration * 24 * 3600)
            index,
            false
        );
        emit Staked(tokenAddress, staker, amount);

        // Transfer is completed
        stakedBalance = stakedBalance.add(amount);
        stakedTotal = stakedTotal.add(amount);
        return true;
    }

    /**
     * @dev to withdraw user stakings after the lock period ends.
     */
    function withdraw() external returns (bool) {
        address from = msg.sender;
        require(hasStaked[from], "No stakes found for user");
        require(
            block.timestamp >= deposits[from].endTime,
            "Requesting before lock time"
        );
        require(!deposits[from].paid, "Already paid out");

        return (_withdraw(from));
    }

    function _withdraw(address from) private returns (bool) {
        uint256 getPeggedBNF = getPeggedValue();
        uint256 reward = _calculate(from).mul(getPeggedBNF).div(10**18);
        uint256 amount = deposits[from].depositAmount;
        require(reward <= rewardBalance, "Not enough rewards");

        stakedBalance = stakedBalance.sub(amount);
        rewardBalance = rewardBalance.sub(reward);
        deposits[from].paid = true;
        hasStaked[from] = false; //Check-Effects-Interactions pattern

        bool principalPaid = _payDirect(from, amount, tokenAddress);
        bool rewardPaid = _payDirect(from, reward, rewardTokenAddress);
        require(principalPaid && rewardPaid, "Error paying");
        emit PaidOut(tokenAddress, rewardTokenAddress, from, amount, reward);

        return true;
    }

    /**
     * @dev to calculate the price of BNF per UNIv2 in the LP
     */
    function getPeggedValue() private returns (uint256) {
        ERC20Interface = IERC20(tokenAddress);
        uint256 getReserves;
        if (ERC20Interface.token0() == rewardTokenAddress) {
            (getReserves, , ) = ERC20Interface.getReserves();
        } else {
            (, getReserves, ) = ERC20Interface.getReserves();
        }

        uint256 totalSupply = ERC20Interface.totalSupply();
        return (getReserves.mul(10**18).div(totalSupply));
    }

    function emergencyWithdraw() external returns (bool) {
        address from = msg.sender;
        require(hasStaked[from], "No stakes found for user");
        require(
            block.timestamp >= deposits[from].endTime,
            "Requesting before lock time"
        );
        require(!deposits[from].paid, "Already paid out");

        return (_emergencyWithdraw(from));
    }

    function _emergencyWithdraw(address from) private returns (bool) {
        uint256 amount = deposits[from].depositAmount;
        stakedBalance = stakedBalance.sub(amount);
        deposits[from].paid = true;
        hasStaked[from] = false; //Check-Effects-Interactions pattern

        bool principalPaid = _payDirect(from, amount, tokenAddress);
        require(principalPaid, "Error paying");
        emit PaidOut(tokenAddress, address(0), from, amount, 0);

        return true;
    }

    /**
     * @param
     * from user wallet address
     * @dev to calculate the rewards based on user staked 'amount'
     */
    function calculate(address from) external view returns (uint256) {
        return _calculate(from);
    }

    function _calculate(address from) private view returns (uint256) {
        if (!hasStaked[from]) return 0;
        (
            uint256 amount,
            uint256 depositTime,
            uint256 endTime,
            uint64 userIndex
        ) =
            (
                deposits[from].depositAmount,
                deposits[from].depositTime,
                deposits[from].endTime,
                deposits[from].userIndex
            );

        uint256 time;
        uint256 interest;
        uint256 _lockduration = endTime.sub(depositTime);
        for (uint64 i = userIndex; i < index; i++) {
            //loop runs till the latest index/interest rate change
            if (endTime < rates[i + 1].timeStamp) {
                //if the change occurs after the endTime loop breaks
                break;
            } else {
                time = rates[i + 1].timeStamp.sub(depositTime);
                interest = amount.mul(rates[i].newInterestRate).mul(time).div(
                    _lockduration.mul(10000)
                ); //replace with (_lockduration * 10000)
                amount += interest;
                depositTime = rates[i + 1].timeStamp;
                userIndex++;
            }
        }

        if (depositTime < endTime) {
            //final calculation for the remaining time period
            time = endTime.sub(depositTime);

            interest = time
                .mul(amount)
                .mul(rates[userIndex].newInterestRate)
                .div(_lockduration.mul(10000)); //replace with (lockduration * 10000)

            amount += interest;
        }

        return (interest);
    }

    function _payMe(
        address payer,
        uint256 amount,
        address token
    ) private returns (bool) {
        return _payTo(payer, address(this), amount, token);
    }

    function _payTo(
        address allower,
        address receiver,
        uint256 amount,
        address token
    ) private _hasAllowance(allower, amount, token) returns (bool) {
        // Request to transfer amount from the contract to receiver.
        // contract does not own the funds, so the allower must have added allowance to the contract
        // Allower is the original owner.
        ERC20Interface = IERC20(token);
        return ERC20Interface.transferFrom(allower, receiver, amount);
    }

    function _payDirect(
        address to,
        uint256 amount,
        address token
    ) private returns (bool) {
        ERC20Interface = IERC20(token);
        return ERC20Interface.transfer(to, amount);
    }

    modifier _hasAllowance(
        address allower,
        uint256 amount,
        address token
    ) {
        // Make sure the allower has provided the right allowance.
        ERC20Interface = IERC20(token);
        uint256 ourAllowance = ERC20Interface.allowance(allower, address(this));
        require(amount <= ourAllowance, "Make sure to add enough allowance");
        _;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"address","name":"tokenAddress_","type":"address"},{"internalType":"address","name":"rewardTokenAddress_","type":"address"},{"internalType":"uint64","name":"rate_","type":"uint64"},{"internalType":"uint256","name":"lockDuration_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"rewardToken","type":"address"},{"indexed":true,"internalType":"address","name":"staker_","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward_","type":"uint256"}],"name":"PaidOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"staker_","type":"address"},{"indexed":false,"internalType":"uint256","name":"stakedAmount_","type":"uint256"}],"name":"Staked","type":"event"},{"constant":true,"inputs":[],"name":"ERC20Interface","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"addReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"calculate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"lockduration_","type":"uint256"}],"name":"changeLockDuration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"emergencyWithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"index","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"rates","outputs":[{"internalType":"uint64","name":"newInterestRate","type":"uint64"},{"internalType":"uint256","name":"timeStamp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint64","name":"rate_","type":"uint64"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620038bb380380620038bb833981810160405260a08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805190602001909291908051906020019092919080519060200190929190505050620001336200053c60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a384600490805190602001906200020692919062000544565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415620002ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e20616464726573733a20302061646472657373000000000000000081525060200191505060405180910390fd5b83600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f52657761726420746f6b656e20616464726573733a203020616464726573730081525060200191505060405180910390fd5b82600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008267ffffffffffffffff16141562000453576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5a65726f20696e7465726573742072617465000000000000000000000000000081525060200191505060405180910390fd5b81600b60006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600c819055506040518060400160405280600b60009054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020014281525060036000600b60089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550602082015181600101559050505050505050620005f3565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200058757805160ff1916838001178555620005b8565b82800160010185558215620005b8579182015b82811115620005b75782518255916020019190600101906200059a565b5b509050620005c79190620005cb565b5090565b620005f091905b80821115620005ec576000816000905550600101620005d2565b5090565b90565b6132b880620006036000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80635b9f0016116100c35780639d76ea581161007c5780639d76ea58146105ad578063a694fc3a146105f7578063aa5c3ab41461063d578063d66692a71461065b578063db2e21bc14610679578063f2fde38b1461069b57610158565b80635b9f0016146104b5578063715018a6146104d357806374de4ec4146104dd578063750142e6146105235780638da5cb5b146105415780638f32d59b1461058b57610158565b806327a59fb81161011557806327a59fb8146103715780632986c0e51461039f5780632c4e722e146103d1578063398327e6146104035780633ccfd60b1461043b57806350003ca61461045d57610158565b8063045544431461015d57806306fdde031461017b5780630ba36dcd146101fe5780630f0a3d1314610276578063125f9e33146102dd5780631bbc4b8314610327575b600080fd5b6101656106df565b6040518082815260200191505060405180910390f35b6101836106e5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c35780820151818401526020810190506101a8565b50505050905090810190601f1680156101f05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102406004803603602081101561021457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b60405180868152602001858152602001848152602001838152602001821515151581526020019550505050505060405180910390f35b6102ac6004803603602081101561028c57600080fd5b81019080803567ffffffffffffffff169060200190929190505050610973565b604051808367ffffffffffffffff1667ffffffffffffffff1681526020018281526020019250505060405180910390f35b6102e56109ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61032f6109d1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61039d6004803603602081101561038757600080fd5b81019080803590602001909291905050506109f7565b005b6103a7610a7b565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b6103d9610a95565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b6104396004803603602081101561041957600080fd5b81019080803567ffffffffffffffff169060200190929190505050610aaf565b005b610443610cb5565b604051808215151515815260200191505060405180910390f35b61049f6004803603602081101561047357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f04565b6040518082815260200191505060405180910390f35b6104bd610f16565b6040518082815260200191505060405180910390f35b6104db610f1c565b005b610509600480360360208110156104f357600080fd5b8101908080359060200190929190505050611055565b604051808215151515815260200191505060405180910390f35b61052b611323565b6040518082815260200191505060405180910390f35b610549611329565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610593611352565b604051808215151515815260200191505060405180910390f35b6105b56113b0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106236004803603602081101561060d57600080fd5b81019080803590602001909291905050506113d6565b604051808215151515815260200191505060405180910390f35b6106456116fa565b6040518082815260200191505060405180910390f35b610663611700565b6040518082815260200191505060405180910390f35b610681611706565b604051808215151515815260200191505060405180910390f35b6106dd600480360360208110156106b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611955565b005b600c5481565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561077b5780601f106107505761010080835404028352916020019161077b565b820191906000526020600020905b81548152906001019060200180831161075e57829003601f168201915b505050505081565b6000806000806000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561096957600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160009054906101000a900467ffffffffffffffff16600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160089054906101000a900460ff168167ffffffffffffffff1691509450945094509450945061096a565b5b91939590929450565b60036020528060005260406000206000915090508060000160009054906101000a900467ffffffffffffffff16908060010154905082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109ff611352565b610a71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600c8190555050565b600b60089054906101000a900467ffffffffffffffff1681565b600b60009054906101000a900467ffffffffffffffff1681565b610ab7611352565b610b29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008167ffffffffffffffff161415610baa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5a65726f20696e7465726573742072617465000000000000000000000000000081525060200191505060405180910390fd5b600b600881819054906101000a900467ffffffffffffffff168092919060010191906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505060405180604001604052808267ffffffffffffffff1681526020014281525060036000600b60089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506020820151816001015590505080600b60006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b600080339050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f207374616b657320666f756e6420666f722075736572000000000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154421015610e32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f52657175657374696e67206265666f7265206c6f636b2074696d65000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160089054906101000a900460ff1615610ef5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f416c72656164792070616964206f75740000000000000000000000000000000081525060200191505060405180910390fd5b610efe816119db565b91505090565b6000610f0f82611d7d565b9050919050565b600a5481565b610f24611352565b610f96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60003382600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1680600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e85306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561119257600080fd5b505afa1580156111a6573d6000803e3d6000fd5b505050506040513d60208110156111bc57600080fd5b8101908080519060200190929190505050905080831115611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061321c6021913960400191505060405180910390fd5b6000861161129e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f526577617264206d75737420626520706f73697469766500000000000000000081525060200191505060405180910390fd5b60003390506112d08188600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661217d565b6112de57600095505061131a565b6112f38760085461219490919063ffffffff16565b60088190555061130e8760095461219490919063ffffffff16565b60098190555060019550505b50505050919050565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661139461221c565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003382600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1680600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e85306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561151357600080fd5b505afa158015611527573d6000803e3d6000fd5b505050506040513d602081101561153d57600080fd5b81019080805190602001909291905050509050808311156115a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061321c6021913960400191505060405180910390fd5b6000861161161f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43616e2774207374616b65203020616d6f756e7400000000000000000000000081525060200191505060405180910390fd5b6000339050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f416c7265616479207374616b656400000000000000000000000000000000000081525060200191505060405180910390fd5b6116ee8188612224565b95505050505050919050565b60095481565b60075481565b600080339050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f207374616b657320666f756e6420666f722075736572000000000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154421015611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f52657175657374696e67206265666f7265206c6f636b2074696d65000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160089054906101000a900460ff1615611946576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f416c72656164792070616964206f75740000000000000000000000000000000081525060200191505060405180910390fd5b61194f816124a1565b91505090565b61195d611352565b6119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6119d88161270e565b50565b6000806119e6612852565b90506000611a1f670de0b6b3a7640000611a1184611a0388611d7d565b612c3590919063ffffffff16565b612cbb90919063ffffffff16565b90506000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600954821115611ae0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682072657761726473000000000000000000000000000081525060200191505060405180910390fd5b611af581600a54612d4a90919063ffffffff16565b600a81905550611b1082600954612d4a90919063ffffffff16565b6009819055506001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160086101000a81548160ff0219169083151502179055506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000611bf88683600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612dd3565b90506000611c298785600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612dd3565b9050818015611c355750805b611ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4572726f7220706179696e67000000000000000000000000000000000000000081525060200191505060405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0fd12da3890315fa38b862dc2fff7f24c95981f6508cc2be090640de791b671e8688604051808381526020018281526020019250505060405180910390a4600195505050505050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611dd95760009050612178565b600080600080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160009054906101000a900467ffffffffffffffff1693509350935093506000806000611f1f8686612d4a90919063ffffffff16565b905060008490505b600b60089054906101000a900467ffffffffffffffff1667ffffffffffffffff168167ffffffffffffffff1610156120b457600360006001830167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010154861015611f93576120b4565b611fd387600360006001850167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010154612d4a90919063ffffffff16565b9350612068611fed61271084612c3590919063ffffffff16565b61205a8661204c600360008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff168d612c3590919063ffffffff16565b612c3590919063ffffffff16565b612cbb90919063ffffffff16565b92508288019750600360006001830167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010154965084806001019550508080600101915050611f27565b508486101561216d576120d08686612d4a90919063ffffffff16565b92506121656120ea61271083612c3590919063ffffffff16565b612157600360008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff166121498b88612c3590919063ffffffff16565b612c3590919063ffffffff16565b612cbb90919063ffffffff16565b915081870196505b819750505050505050505b919050565b600061218b84308585612f03565b90509392505050565b600080828401905083811015612212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b60006122538383600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661217d565b612260576000905061249b565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040518060a001604052808381526020014281526020016122f86122e962015180600c54612c3590919063ffffffff16565b4261219490919063ffffffff16565b8152602001600b60089054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200160001515815250600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160030160086101000a81548160ff0219169083151502179055509050508273ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f5dac0c1b1112564a045ba943c9d50270893e8e826c49be8e7073adc713ab7bd7846040518082815260200191505060405180910390a361247582600a5461219490919063ffffffff16565b600a819055506124908260075461219490919063ffffffff16565b600781905550600190505b92915050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506124fe81600a54612d4a90919063ffffffff16565b600a819055506001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160086101000a81548160ff0219169083151502179055506000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006125e68483600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612dd3565b90508061265b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4572726f7220706179696e67000000000000000000000000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0fd12da3890315fa38b862dc2fff7f24c95981f6508cc2be090640de791b671e856000604051808381526020018281526020019250505060405180910390a4600192505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061323d6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561295a57600080fd5b505afa15801561296e573d6000803e3d6000fd5b505050506040513d602081101561298457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161415612a8757600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015612a1957600080fd5b505afa158015612a2d573d6000803e3d6000fd5b505050506040513d6060811015612a4357600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050826dffffffffffffffffffffffffffff16925090505080915050612b5a565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015612aef57600080fd5b505afa158015612b03573d6000803e3d6000fd5b505050506040513d6060811015612b1957600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050909150816dffffffffffffffffffffffffffff16915050809150505b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612bc457600080fd5b505afa158015612bd8573d6000803e3d6000fd5b505050506040513d6020811015612bee57600080fd5b81019080805190602001909291905050509050612c2e81612c20670de0b6b3a764000085612c3590919063ffffffff16565b612cbb90919063ffffffff16565b9250505090565b600080831415612c485760009050612cb5565b6000828402905082848281612c5957fe5b0414612cb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132636021913960400191505060405180910390fd5b809150505b92915050565b6000808211612d32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b6000828481612d3d57fe5b0490508091505092915050565b600082821115612dc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612ebf57600080fd5b505af1158015612ed3573d6000803e3d6000fd5b505050506040513d6020811015612ee957600080fd5b810190808051906020019092919050505090509392505050565b600084838380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e85306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561301e57600080fd5b505afa158015613032573d6000803e3d6000fd5b505050506040513d602081101561304857600080fd5b81019080805190602001909291905050509050808311156130b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061321c6021913960400191505060405180910390fd5b85600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8a8a8a6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156131d257600080fd5b505af11580156131e6573d6000803e3d6000fd5b505050506040513d60208110156131fc57600080fd5b810190808051906020019092919050505094505050505094935050505056fe4d616b65207375726520746f2061646420656e6f75676820616c6c6f77616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158200ef2cdd190326cc11781e1181173657148de4dd538a029861a93532eda28960764736f6c6343000510003200000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000eb8195bd9ac4ffd3be2056db1a8e8c66b27080280000000000000000000000001de5e000c41c8d35b9f1f4985c23988f058310570000000000000000000000000000000000000000000000000000000000000172000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000114c6971756964697479205374616b696e67000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c80635b9f0016116100c35780639d76ea581161007c5780639d76ea58146105ad578063a694fc3a146105f7578063aa5c3ab41461063d578063d66692a71461065b578063db2e21bc14610679578063f2fde38b1461069b57610158565b80635b9f0016146104b5578063715018a6146104d357806374de4ec4146104dd578063750142e6146105235780638da5cb5b146105415780638f32d59b1461058b57610158565b806327a59fb81161011557806327a59fb8146103715780632986c0e51461039f5780632c4e722e146103d1578063398327e6146104035780633ccfd60b1461043b57806350003ca61461045d57610158565b8063045544431461015d57806306fdde031461017b5780630ba36dcd146101fe5780630f0a3d1314610276578063125f9e33146102dd5780631bbc4b8314610327575b600080fd5b6101656106df565b6040518082815260200191505060405180910390f35b6101836106e5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c35780820151818401526020810190506101a8565b50505050905090810190601f1680156101f05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102406004803603602081101561021457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b60405180868152602001858152602001848152602001838152602001821515151581526020019550505050505060405180910390f35b6102ac6004803603602081101561028c57600080fd5b81019080803567ffffffffffffffff169060200190929190505050610973565b604051808367ffffffffffffffff1667ffffffffffffffff1681526020018281526020019250505060405180910390f35b6102e56109ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61032f6109d1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61039d6004803603602081101561038757600080fd5b81019080803590602001909291905050506109f7565b005b6103a7610a7b565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b6103d9610a95565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b6104396004803603602081101561041957600080fd5b81019080803567ffffffffffffffff169060200190929190505050610aaf565b005b610443610cb5565b604051808215151515815260200191505060405180910390f35b61049f6004803603602081101561047357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f04565b6040518082815260200191505060405180910390f35b6104bd610f16565b6040518082815260200191505060405180910390f35b6104db610f1c565b005b610509600480360360208110156104f357600080fd5b8101908080359060200190929190505050611055565b604051808215151515815260200191505060405180910390f35b61052b611323565b6040518082815260200191505060405180910390f35b610549611329565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610593611352565b604051808215151515815260200191505060405180910390f35b6105b56113b0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106236004803603602081101561060d57600080fd5b81019080803590602001909291905050506113d6565b604051808215151515815260200191505060405180910390f35b6106456116fa565b6040518082815260200191505060405180910390f35b610663611700565b6040518082815260200191505060405180910390f35b610681611706565b604051808215151515815260200191505060405180910390f35b6106dd600480360360208110156106b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611955565b005b600c5481565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561077b5780601f106107505761010080835404028352916020019161077b565b820191906000526020600020905b81548152906001019060200180831161075e57829003601f168201915b505050505081565b6000806000806000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561096957600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160009054906101000a900467ffffffffffffffff16600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160089054906101000a900460ff168167ffffffffffffffff1691509450945094509450945061096a565b5b91939590929450565b60036020528060005260406000206000915090508060000160009054906101000a900467ffffffffffffffff16908060010154905082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109ff611352565b610a71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600c8190555050565b600b60089054906101000a900467ffffffffffffffff1681565b600b60009054906101000a900467ffffffffffffffff1681565b610ab7611352565b610b29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008167ffffffffffffffff161415610baa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5a65726f20696e7465726573742072617465000000000000000000000000000081525060200191505060405180910390fd5b600b600881819054906101000a900467ffffffffffffffff168092919060010191906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505060405180604001604052808267ffffffffffffffff1681526020014281525060036000600b60089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506020820151816001015590505080600b60006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b600080339050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f207374616b657320666f756e6420666f722075736572000000000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154421015610e32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f52657175657374696e67206265666f7265206c6f636b2074696d65000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160089054906101000a900460ff1615610ef5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f416c72656164792070616964206f75740000000000000000000000000000000081525060200191505060405180910390fd5b610efe816119db565b91505090565b6000610f0f82611d7d565b9050919050565b600a5481565b610f24611352565b610f96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60003382600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1680600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e85306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561119257600080fd5b505afa1580156111a6573d6000803e3d6000fd5b505050506040513d60208110156111bc57600080fd5b8101908080519060200190929190505050905080831115611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061321c6021913960400191505060405180910390fd5b6000861161129e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f526577617264206d75737420626520706f73697469766500000000000000000081525060200191505060405180910390fd5b60003390506112d08188600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661217d565b6112de57600095505061131a565b6112f38760085461219490919063ffffffff16565b60088190555061130e8760095461219490919063ffffffff16565b60098190555060019550505b50505050919050565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661139461221c565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003382600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1680600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e85306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561151357600080fd5b505afa158015611527573d6000803e3d6000fd5b505050506040513d602081101561153d57600080fd5b81019080805190602001909291905050509050808311156115a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061321c6021913960400191505060405180910390fd5b6000861161161f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43616e2774207374616b65203020616d6f756e7400000000000000000000000081525060200191505060405180910390fd5b6000339050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f416c7265616479207374616b656400000000000000000000000000000000000081525060200191505060405180910390fd5b6116ee8188612224565b95505050505050919050565b60095481565b60075481565b600080339050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f207374616b657320666f756e6420666f722075736572000000000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154421015611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f52657175657374696e67206265666f7265206c6f636b2074696d65000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160089054906101000a900460ff1615611946576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f416c72656164792070616964206f75740000000000000000000000000000000081525060200191505060405180910390fd5b61194f816124a1565b91505090565b61195d611352565b6119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6119d88161270e565b50565b6000806119e6612852565b90506000611a1f670de0b6b3a7640000611a1184611a0388611d7d565b612c3590919063ffffffff16565b612cbb90919063ffffffff16565b90506000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600954821115611ae0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682072657761726473000000000000000000000000000081525060200191505060405180910390fd5b611af581600a54612d4a90919063ffffffff16565b600a81905550611b1082600954612d4a90919063ffffffff16565b6009819055506001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160086101000a81548160ff0219169083151502179055506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000611bf88683600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612dd3565b90506000611c298785600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612dd3565b9050818015611c355750805b611ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4572726f7220706179696e67000000000000000000000000000000000000000081525060200191505060405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0fd12da3890315fa38b862dc2fff7f24c95981f6508cc2be090640de791b671e8688604051808381526020018281526020019250505060405180910390a4600195505050505050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611dd95760009050612178565b600080600080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160009054906101000a900467ffffffffffffffff1693509350935093506000806000611f1f8686612d4a90919063ffffffff16565b905060008490505b600b60089054906101000a900467ffffffffffffffff1667ffffffffffffffff168167ffffffffffffffff1610156120b457600360006001830167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010154861015611f93576120b4565b611fd387600360006001850167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010154612d4a90919063ffffffff16565b9350612068611fed61271084612c3590919063ffffffff16565b61205a8661204c600360008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff168d612c3590919063ffffffff16565b612c3590919063ffffffff16565b612cbb90919063ffffffff16565b92508288019750600360006001830167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010154965084806001019550508080600101915050611f27565b508486101561216d576120d08686612d4a90919063ffffffff16565b92506121656120ea61271083612c3590919063ffffffff16565b612157600360008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff166121498b88612c3590919063ffffffff16565b612c3590919063ffffffff16565b612cbb90919063ffffffff16565b915081870196505b819750505050505050505b919050565b600061218b84308585612f03565b90509392505050565b600080828401905083811015612212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b60006122538383600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661217d565b612260576000905061249b565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040518060a001604052808381526020014281526020016122f86122e962015180600c54612c3590919063ffffffff16565b4261219490919063ffffffff16565b8152602001600b60089054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200160001515815250600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160030160086101000a81548160ff0219169083151502179055509050508273ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f5dac0c1b1112564a045ba943c9d50270893e8e826c49be8e7073adc713ab7bd7846040518082815260200191505060405180910390a361247582600a5461219490919063ffffffff16565b600a819055506124908260075461219490919063ffffffff16565b600781905550600190505b92915050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506124fe81600a54612d4a90919063ffffffff16565b600a819055506001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160086101000a81548160ff0219169083151502179055506000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006125e68483600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612dd3565b90508061265b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4572726f7220706179696e67000000000000000000000000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0fd12da3890315fa38b862dc2fff7f24c95981f6508cc2be090640de791b671e856000604051808381526020018281526020019250505060405180910390a4600192505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061323d6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561295a57600080fd5b505afa15801561296e573d6000803e3d6000fd5b505050506040513d602081101561298457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161415612a8757600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015612a1957600080fd5b505afa158015612a2d573d6000803e3d6000fd5b505050506040513d6060811015612a4357600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050826dffffffffffffffffffffffffffff16925090505080915050612b5a565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015612aef57600080fd5b505afa158015612b03573d6000803e3d6000fd5b505050506040513d6060811015612b1957600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050909150816dffffffffffffffffffffffffffff16915050809150505b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612bc457600080fd5b505afa158015612bd8573d6000803e3d6000fd5b505050506040513d6020811015612bee57600080fd5b81019080805190602001909291905050509050612c2e81612c20670de0b6b3a764000085612c3590919063ffffffff16565b612cbb90919063ffffffff16565b9250505090565b600080831415612c485760009050612cb5565b6000828402905082848281612c5957fe5b0414612cb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132636021913960400191505060405180910390fd5b809150505b92915050565b6000808211612d32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b6000828481612d3d57fe5b0490508091505092915050565b600082821115612dc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612ebf57600080fd5b505af1158015612ed3573d6000803e3d6000fd5b505050506040513d6020811015612ee957600080fd5b810190808051906020019092919050505090509392505050565b600084838380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e85306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561301e57600080fd5b505afa158015613032573d6000803e3d6000fd5b505050506040513d602081101561304857600080fd5b81019080805190602001909291905050509050808311156130b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061321c6021913960400191505060405180910390fd5b85600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8a8a8a6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156131d257600080fd5b505af11580156131e6573d6000803e3d6000fd5b505050506040513d60208110156131fc57600080fd5b810190808051906020019092919050505094505050505094935050505056fe4d616b65207375726520746f2061646420656e6f75676820616c6c6f77616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158200ef2cdd190326cc11781e1181173657148de4dd538a029861a93532eda28960764736f6c63430005100032

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

00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000eb8195bd9ac4ffd3be2056db1a8e8c66b27080280000000000000000000000001de5e000c41c8d35b9f1f4985c23988f058310570000000000000000000000000000000000000000000000000000000000000172000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000114c6971756964697479205374616b696e67000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Liquidity Staking
Arg [1] : tokenAddress_ (address): 0xeB8195bd9aC4fFD3Be2056dB1A8e8c66B2708028
Arg [2] : rewardTokenAddress_ (address): 0x1DE5e000C41C8d35b9f1f4985C23988f05831057
Arg [3] : rate_ (uint64): 370
Arg [4] : lockDuration_ (uint256): 30

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 000000000000000000000000eb8195bd9ac4ffd3be2056db1a8e8c66b2708028
Arg [2] : 0000000000000000000000001de5e000c41c8d35b9f1f4985c23988f05831057
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000172
Arg [4] : 000000000000000000000000000000000000000000000000000000000000001e
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [6] : 4c6971756964697479205374616b696e67000000000000000000000000000000


Deployed Bytecode Sourcemap

4327:11439:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4327:11439:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5229:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4943:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4943:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7960:511;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7960:511:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4897:37;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4897:37:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5002:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5265:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7116:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7116:117:0;;;;;;;;;;;;;;;;;:::i;:::-;;5203:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5178:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6786:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6786:206:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;9754:377;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12593:107;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12593:107:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5143:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3762:140;;;:::i;:::-;;7395:500;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7395:500:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5075:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3459:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3660:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4968:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8682:325;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8682:325:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5108:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5042:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11548:395;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3910:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5229:27;;;;:::o;4943:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7960:511::-;8060:7;8082;8104;8126;8148:4;8184:9;:15;8194:4;8184:15;;;;;;;;;;;;;;;;;;;;;;;;;8180:284;;;8242:8;:14;8251:4;8242:14;;;;;;;;;;;;;;;:28;;;8289:8;:14;8298:4;8289:14;;;;;;;;;;;;;;;:26;;;8334:8;:14;8343:4;8334:14;;;;;;;;;;;;;;;:22;;;8375:8;:14;8384:4;8375:14;;;;;;;;;;;;;;;:24;;;;;;;;;;;;8418:8;:14;8427:4;8418:14;;;;;;;;;;;;;;;:19;;;;;;;;;;;;8216:236;;;;;;;;;;;;;;;;;8180:284;7960:511;;;;;;;;:::o;4897:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5002:33::-;;;;;;;;;;;;;:::o;5265:28::-;;;;;;;;;;;;;:::o;7116:117::-;3586:9;:7;:9::i;:::-;3578:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7212:13;7197:12;:28;;;;7116:117;:::o;5203:19::-;;;;;;;;;;;;;:::o;5178:18::-;;;;;;;;;;;;;:::o;6786:206::-;3586:9;:7;:9::i;:::-;3578:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6864:1;6855:5;:10;;;;6847:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6899:5;;:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6932:29;;;;;;;;6938:5;6932:29;;;;;;6945:15;6932:29;;;6917:5;:12;6923:5;;;;;;;;;;;6917:12;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6979:5;6972:4;;:12;;;;;;;;;;;;;;;;;;6786:206;:::o;9754:377::-;9792:4;9809:12;9824:10;9809:25;;9853:9;:15;9863:4;9853:15;;;;;;;;;;;;;;;;;;;;;;;;;9845:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9949:8;:14;9958:4;9949:14;;;;;;;;;;;;;;;:22;;;9930:15;:41;;9908:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10046:8;:14;10055:4;10046:14;;;;;;;;;;;;;;;:19;;;;;;;;;;;;10045:20;10037:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10107:15;10117:4;10107:9;:15::i;:::-;10099:24;;;9754:377;:::o;12593:107::-;12649:7;12676:16;12687:4;12676:10;:16::i;:::-;12669:23;;12593:107;;;:::o;5143:28::-;;;;:::o;3762:140::-;3586:9;:7;:9::i;:::-;3578:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3861:1;3824:40;;3845:6;;;;;;;;;;;3824:40;;;;;;;;;;;;3892:1;3875:6;;:19;;;;;;;;;;;;;;;;;;3762:140::o;7395:500::-;7541:4;7477:10;7489:12;7503:18;;;;;;;;;;;15576:5;15552:14;;:30;;;;;;;;;;;;;;;;;;15593:20;15616:14;;;;;;;;;;;:24;;;15641:7;15658:4;15616:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15616:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15616:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15616:48:0;;;;;;;;;;;;;;;;15593:71;;15693:12;15683:6;:22;;15675:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7586:1;7571:12;:16;7563:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7626:12;7641:10;7626:25;;7667:46;7674:4;7680:12;7694:18;;;;;;;;;;;7667:6;:46::i;:::-;7662:92;;7737:5;7730:12;;;;;7662:92;7778:29;7794:12;7778:11;;:15;;:29;;;;:::i;:::-;7764:11;:43;;;;7834:31;7852:12;7834:13;;:17;;:31;;;;:::i;:::-;7818:13;:47;;;;7883:4;7876:11;;;15754:1;7395:500;;;;;;;:::o;5075:26::-;;;;:::o;3459:79::-;3497:7;3524:6;;;;;;;;;;;3517:13;;3459:79;:::o;3660:94::-;3700:4;3740:6;;;;;;;;;;;3724:22;;:12;:10;:12::i;:::-;:22;;;3717:29;;3660:94;:::o;4968:27::-;;;;;;;;;;;;;:::o;8682:325::-;8806:4;8754:10;8766:6;8774:12;;;;;;;;;;;15576:5;15552:14;;:30;;;;;;;;;;;;;;;;;;15593:20;15616:14;;;;;;;;;;;:24;;;15641:7;15658:4;15616:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15616:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15616:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15616:48:0;;;;;;;;;;;;;;;;15593:71;;15693:12;15683:6;:22;;15675:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8845:1;8836:6;:10;8828:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8882:12;8897:10;8882:25;;8927:9;:15;8937:4;8927:15;;;;;;;;;;;;;;;;;;;;;;;;;8926:16;8918:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8979:20;8986:4;8992:6;8979;:20::i;:::-;8972:27;;;8682:325;;;;;;;:::o;5108:28::-;;;;:::o;5042:26::-;;;;:::o;11548:395::-;11595:4;11612:12;11627:10;11612:25;;11656:9;:15;11666:4;11656:15;;;;;;;;;;;;;;;;;;;;;;;;;11648:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11752:8;:14;11761:4;11752:14;;;;;;;;;;;;;;;:22;;;11733:15;:41;;11711:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11849:8;:14;11858:4;11849:14;;;;;;;;;;;;;;;:19;;;;;;;;;;;;11848:20;11840:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11910:24;11929:4;11910:18;:24::i;:::-;11902:33;;;11548:395;:::o;3910:109::-;3586:9;:7;:9::i;:::-;3578:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3983:28;4002:8;3983:18;:28::i;:::-;3910:109;:::o;10139:834::-;10189:4;10206:20;10229:16;:14;:16::i;:::-;10206:39;;10256:14;10273:46;10312:6;10273:34;10294:12;10273:16;10284:4;10273:10;:16::i;:::-;:20;;:34;;;;:::i;:::-;:38;;:46;;;;:::i;:::-;10256:63;;10330:14;10347:8;:14;10356:4;10347:14;;;;;;;;;;;;;;;:28;;;10330:45;;10404:13;;10394:6;:23;;10386:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10469:25;10487:6;10469:13;;:17;;:25;;;;:::i;:::-;10453:13;:41;;;;10521:25;10539:6;10521:13;;:17;;:25;;;;:::i;:::-;10505:13;:41;;;;10579:4;10557:8;:14;10566:4;10557:14;;;;;;;;;;;;;;;:19;;;:26;;;;;;;;;;;;;;;;;;10612:5;10594:9;:15;10604:4;10594:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10667:18;10688:38;10699:4;10705:6;10713:12;;;;;;;;;;;10688:10;:38::i;:::-;10667:59;;10737:15;10755:44;10766:4;10772:6;10780:18;;;;;;;;;;;10755:10;:44::i;:::-;10737:62;;10818:13;:27;;;;;10835:10;10818:27;10810:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10920:4;10878:63;;10900:18;;;;;;;;;;;10878:63;;10886:12;;;;;;;;;;;10878:63;;;10926:6;10934;10878:63;;;;;;;;;;;;;;;;;;;;;;;;10961:4;10954:11;;;;;;;10139:834;;;:::o;12708:1696::-;12764:7;12789:9;:15;12799:4;12789:15;;;;;;;;;;;;;;;;;;;;;;;;;12784:30;;12813:1;12806:8;;;;12784:30;12840:14;12869:19;12903:15;12933:16;12995:8;:14;13004:4;12995:14;;;;;;;;;;;;;;;:28;;;13042:8;:14;13051:4;13042:14;;;;;;;;;;;;;;;:26;;;13087:8;:14;13096:4;13087:14;;;;;;;;;;;;;;;:22;;;13128:8;:14;13137:4;13128:14;;;;;;;;;;;;;;;:24;;;;;;;;;;;;12825:342;;;;;;;;13180:12;13203:16;13230:21;13254:24;13266:11;13254:7;:11;;:24;;;;:::i;:::-;13230:48;;13294:8;13305:9;13294:20;;13289:679;13320:5;;;;;;;;;;;13316:9;;:1;:9;;;13289:679;;;13429:5;:12;13439:1;13435;:5;13429:12;;;;;;;;;;;;;;;:22;;;13419:7;:32;13415:542;;;13542:5;;13415:542;13595:39;13622:11;13595:5;:12;13605:1;13601;:5;13595:12;;;;;;;;;;;;;;;:22;;;:26;;:39;;;;:::i;:::-;13588:46;;13664:116;13737:24;13755:5;13737:13;:17;;:24;;;;:::i;:::-;13664:46;13705:4;13664:36;13675:5;:8;13681:1;13675:8;;;;;;;;;;;;;;;:24;;;;;;;;;;;;13664:36;;:6;:10;;:36;;;;:::i;:::-;:40;;:46;;;;:::i;:::-;:50;;:116;;;;:::i;:::-;13653:127;;13848:8;13838:18;;;;13889:5;:12;13899:1;13895;:5;13889:12;;;;;;;;;;;;;;;:22;;;13875:36;;13930:11;;;;;;;13327:3;;;;;;;13289:679;;;;13998:7;13984:11;:21;13980:387;;;14092:24;14104:11;14092:7;:11;;:24;;;;:::i;:::-;14085:31;;14144:138;14257:24;14275:5;14257:13;:17;;:24;;;;:::i;:::-;14144:90;14201:5;:16;14207:9;14201:16;;;;;;;;;;;;;;;:32;;;;;;;;;;;;14144:90;;:34;14171:6;14144:4;:26;;:34;;;;:::i;:::-;:56;;:90;;;;:::i;:::-;:112;;:138;;;;:::i;:::-;14133:149;;14347:8;14337:18;;;;13980:387;14387:8;14379:17;;;;;;;;;12708:1696;;;;:::o;14412:188::-;14525:4;14549:43;14556:5;14571:4;14578:6;14586:5;14549:6;:43::i;:::-;14542:50;;14412:188;;;;;:::o;1450:181::-;1508:7;1528:9;1544:1;1540;:5;1528:17;;1569:1;1564;:6;;1556:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1622:1;1615:8;;;1450:181;;;;:::o;2781:98::-;2826:15;2861:10;2854:17;;2781:98;:::o;9015:646::-;9080:4;9102:36;9109:6;9117;9125:12;;;;;;;;;;;9102:6;:36::i;:::-;9097:82;;9162:5;9155:12;;;;9097:82;9209:4;9189:9;:17;9199:6;9189:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;9243:200;;;;;;;;9266:6;9243:200;;;;9287:15;9243:200;;;;9317:46;9338:23;9355:5;9338:12;;:16;;:23;;;;:::i;:::-;9317:15;:19;;:46;;;;:::i;:::-;9243:200;;;;9407:5;;;;;;;;;;;9243:200;;;;;;9427:5;9243:200;;;;;9224:8;:16;9233:6;9224:16;;;;;;;;;;;;;;;:219;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9480:6;9459:36;;9466:12;;;;;;;;;;;9459:36;;;9488:6;9459:36;;;;;;;;;;;;;;;;;;9558:25;9576:6;9558:13;;:17;;:25;;;;:::i;:::-;9542:13;:41;;;;9608:23;9624:6;9608:11;;:15;;:23;;;;:::i;:::-;9594:11;:37;;;;9649:4;9642:11;;9015:646;;;;;:::o;11951:500::-;12010:4;12027:14;12044:8;:14;12053:4;12044:14;;;;;;;;;;;;;;;:28;;;12027:45;;12099:25;12117:6;12099:13;;:17;;:25;;;;:::i;:::-;12083:13;:41;;;;12157:4;12135:8;:14;12144:4;12135:14;;;;;;;;;;;;;;;:19;;;:26;;;;;;;;;;;;;;;;;;12190:5;12172:9;:15;12182:4;12172:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;12245:18;12266:38;12277:4;12283:6;12291:12;;;;;;;;;;;12266:10;:38::i;:::-;12245:59;;12323:13;12315:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12403:4;12369:50;;12399:1;12369:50;;12377:12;;;;;;;;;;;12369:50;;;12409:6;12417:1;12369:50;;;;;;;;;;;;;;;;;;;;;;;;12439:4;12432:11;;;;11951:500;;;:::o;4027:266::-;4135:1;4115:22;;:8;:22;;;;4093:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4248:8;4219:38;;4240:6;;;;;;;;;;;4219:38;;;;;;;;;;;;4277:8;4268:6;;:17;;;;;;;;;;;;;;;;;;4027:266;:::o;11062:478::-;11105:7;11149:12;;;;;;;;;;;11125:14;;:37;;;;;;;;;;;;;;;;;;11173:19;11234:18;;;;;;;;;;;11207:45;;:14;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11207:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11207:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11207:23:0;;;;;;;;;;;;;;;;:45;;;11203:207;;;11289:14;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11289:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11289:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11289:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11269:48;;;;;;;;;;;;11203:207;;;11370:14;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11370:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11370:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11370:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11350:48;;;;;;;;;;;;;11203:207;11422:19;11444:14;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11444:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11444:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11444:28:0;;;;;;;;;;;;;;;;11422:50;;11491:40;11519:11;11491:23;11507:6;11491:11;:15;;:23;;;;:::i;:::-;:27;;:40;;;;:::i;:::-;11483:49;;;;11062:478;:::o;1831:250::-;1889:7;1918:1;1913;:6;1909:47;;;1943:1;1936:8;;;;1909:47;1968:9;1984:1;1980;:5;1968:17;;2013:1;2008;2004;:5;;;;;;:10;1996:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2072:1;2065:8;;;1831:250;;;;;:::o;2089:333::-;2147:7;2246:1;2242;:5;2234:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2289:9;2305:1;2301;:5;;;;;;2289:17;;2413:1;2406:8;;;2089:333;;;;:::o;1639:184::-;1697:7;1730:1;1725;:6;;1717:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1777:9;1793:1;1789;:5;1777:17;;1814:1;1807:8;;;1639:184;;;;:::o;15138:222::-;15252:4;15293:5;15269:14;;:30;;;;;;;;;;;;;;;;;;15317:14;;;;;;;;;;;:23;;;15341:2;15345:6;15317:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15317:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15317:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15317:35:0;;;;;;;;;;;;;;;;15310:42;;15138:222;;;;;:::o;14608:522::-;14788:4;14755:7;14764:6;14772:5;15576;15552:14;;:30;;;;;;;;;;;;;;;;;;15593:20;15616:14;;;;;;;;;;;:24;;;15641:7;15658:4;15616:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15616:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15616:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15616:48:0;;;;;;;;;;;;;;;;15593:71;;15693:12;15683:6;:22;;15675:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15044:5;15020:14;;:30;;;;;;;;;;;;;;;;;;15068:14;;;;;;;;;;;:27;;;15096:7;15105:8;15115:6;15068:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15068:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15068:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15068:54:0;;;;;;;;;;;;;;;;15061:61;;14608:522;;;;;;;;;;:::o

Swarm Source

bzzr://0ef2cdd190326cc11781e1181173657148de4dd538a029861a93532eda289607

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.