Contract

0x2f0D46a9b78439427bc2d2Bf7e15f27b4c50807d

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

-

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Rewards15846522024-12-25 18:20:2017 days ago1735150820IN
0x2f0D46a9...b4c50807d
0 S0.000096811.1
Claim Rewards15208902024-12-25 2:23:2518 days ago1735093405IN
0x2f0D46a9...b4c50807d
0 S0.000098251.1
Compound15116202024-12-25 0:19:1618 days ago1735085956IN
0x2f0D46a9...b4c50807d
0 S0.000048351.1
Deposit15058072024-12-24 23:03:2918 days ago1735081409IN
0x2f0D46a9...b4c50807d
0 S0.00010511.1
Deposit15027252024-12-24 22:21:4318 days ago1735078903IN
0x2f0D46a9...b4c50807d
0 S0.000102891.1
Claim Rewards15020472024-12-24 22:12:2318 days ago1735078343IN
0x2f0D46a9...b4c50807d
0 S0.000098251.1
Compound15019342024-12-24 22:11:0818 days ago1735078268IN
0x2f0D46a9...b4c50807d
0 S0.000048351.1
Deposit15016052024-12-24 22:06:3118 days ago1735077991IN
0x2f0D46a9...b4c50807d
0 S0.00026541.1
Update Token15014032024-12-24 22:03:4418 days ago1735077824IN
0x2f0D46a9...b4c50807d
0 S0.000033971.1
Deposit12389932024-12-22 20:58:0220 days ago1734901082IN
0x2f0D46a9...b4c50807d
0 S0.000208891.1
Deposit12389842024-12-22 20:57:5220 days ago1734901072IN
0x2f0D46a9...b4c50807d
0 S0.000142641.1
Claim Rewards12372702024-12-22 20:38:0020 days ago1734899880IN
0x2f0D46a9...b4c50807d
0 S0.000096811.1
Claim Rewards12197202024-12-22 17:43:5420 days ago1734889434IN
0x2f0D46a9...b4c50807d
0 S0.000096811.1
Claim Rewards12186082024-12-22 17:33:2120 days ago1734888801IN
0x2f0D46a9...b4c50807d
0 S0.000098251.1
Claim Rewards12177832024-12-22 17:26:4420 days ago1734888404IN
0x2f0D46a9...b4c50807d
0 S0.000043051.1
Deposit12177222024-12-22 17:26:0920 days ago1734888369IN
0x2f0D46a9...b4c50807d
0 S0.000099731.1
Compound12176362024-12-22 17:25:1620 days ago1734888316IN
0x2f0D46a9...b4c50807d
0 S0.000048351.1
Claim Rewards11552992024-12-22 8:26:2921 days ago1734855989IN
0x2f0D46a9...b4c50807d
0 S0.000096811.1
Claim Rewards11546502024-12-22 8:20:0921 days ago1734855609IN
0x2f0D46a9...b4c50807d
0 S0.00041791.1
Deposit11545392024-12-22 8:19:0721 days ago1734855547IN
0x2f0D46a9...b4c50807d
0 S0.000105041.1
Deposit11543542024-12-22 8:17:2221 days ago1734855442IN
0x2f0D46a9...b4c50807d
0 S0.000260041.1

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StakingWithOptionalReferral

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at SonicScan.org on 2024-12-22
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// Address library from OpenZeppelin
library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// SafeERC20 from OpenZeppelin
library SafeERC20 {
    using Address for address;

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

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

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

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

// Context from OpenZeppelin
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// ReentrancyGuard from OpenZeppelin
abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;

        _;

        _status = _NOT_ENTERED;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

/// @title StakingWithOptionalReferral - A staking contract for SANIC tokens with optional referrals and robust security.
contract StakingWithOptionalReferral is ReentrancyGuard {
    using SafeERC20 for IERC20;

    IERC20 public sanicToken; // Token to be staked
    address public feeRecipient; // Address to receive fees
    address public owner; // Contract owner

    uint256 public dailyRewardRate = 8; // 8% daily rewards
    uint256 public depositFee = 5; // 5% deposit fee
    uint256 public referralFee = 12; // 12% referral bonus
    uint256 public claimCooldown = 1 minutes; // Cooldown period for claiming rewards
    uint256 public penaltyCooldown = 24 hours; // Time window for penalty enforcement
    uint256 public penaltyRate = 50; // 50% penalty on rewards for early claims

    struct User {
        uint256 depositedAmount;
        uint256 lastClaimTime;
        uint256 lastWithdrawalTime;
    }

    mapping(address => User) public users;
    mapping(address => address) public referrers;
    mapping(address => bool) public hasBeenReferred;

    uint256 public totalDeposits;

    event Deposit(address indexed user, uint256 amount, uint256 netAmount, address indexed referrer);
    event ClaimRewards(address indexed user, uint256 reward, uint256 penalty);
    event Compound(address indexed user, uint256 compoundedAmount);
    event ReferralBonusPaid(address indexed referrer, uint256 bonus);
    event TokenUpdated(address indexed oldToken, address indexed newToken);
    event FeeRecipientUpdated(address indexed oldRecipient, address indexed newRecipient);

    modifier onlyOwner() {
        require(msg.sender == owner, "Not authorized");
        _;
    }

    constructor(address _sanicToken, address _feeRecipient) {
        require(_sanicToken != address(0), "Invalid token address");
        require(_feeRecipient != address(0), "Invalid fee recipient address");

        sanicToken = IERC20(_sanicToken);
        feeRecipient = _feeRecipient;
        owner = msg.sender;
    }

    function deposit(uint256 _amount, address _referrer) external nonReentrant {
        require(_amount > 0, "Deposit amount must be greater than zero");

        uint256 allowance = sanicToken.allowance(msg.sender, address(this));
        require(allowance >= _amount, "Token allowance too low");

        sanicToken.safeTransferFrom(msg.sender, address(this), _amount);

        uint256 fee = (_amount * depositFee) / 100;
        uint256 netAmount = _amount - fee;

        sanicToken.safeTransfer(feeRecipient, fee);

        if (_referrer != address(0) && _referrer != msg.sender) {
            require(!hasBeenReferred[msg.sender], "User has already been referred");
            uint256 referralBonus = (_amount * referralFee) / 100;
            sanicToken.safeTransfer(_referrer, referralBonus);
            referrers[msg.sender] = _referrer;
            hasBeenReferred[msg.sender] = true;

            emit ReferralBonusPaid(_referrer, referralBonus);
        }

        User storage user = users[msg.sender];
        user.depositedAmount += netAmount;
        user.lastClaimTime = block.timestamp;
        user.lastWithdrawalTime = 0; // Reset withdrawal time on deposit
        totalDeposits += netAmount;

        emit Deposit(msg.sender, _amount, netAmount, _referrer);
    }

    function claimRewards() external nonReentrant {
        User storage user = users[msg.sender];
        require(user.depositedAmount > 0, "No deposits found");
        require(block.timestamp >= user.lastClaimTime + claimCooldown, "Claim cooldown active");

        uint256 rewards = calculateRewards(msg.sender);
        require(rewards > 0, "No rewards available");

        uint256 penalty = 0;
        if (block.timestamp < user.lastWithdrawalTime + penaltyCooldown) {
            penalty = (rewards * penaltyRate) / 100;
        }

        uint256 netRewards = rewards - penalty;
        user.lastClaimTime = block.timestamp;
        user.lastWithdrawalTime = block.timestamp;

        user.depositedAmount -= netRewards; // Deduct claimed rewards from deposit
        sanicToken.safeTransfer(msg.sender, netRewards);

        if (penalty > 0) {
            sanicToken.safeTransfer(feeRecipient, penalty);
        }

        emit ClaimRewards(msg.sender, netRewards, penalty);
    }

    function calculateRewards(address _user) public view returns (uint256) {
        User memory user = users[_user];
        uint256 elapsedTime = block.timestamp - user.lastClaimTime;
        uint256 dailyRewards = (user.depositedAmount * dailyRewardRate) / 100;
        return (dailyRewards * elapsedTime) / 1 days;
    }

    function compound() external nonReentrant {
        User storage user = users[msg.sender];
        require(user.depositedAmount > 0, "No deposits found");
        require(block.timestamp >= user.lastClaimTime + claimCooldown, "Claim cooldown active");

        uint256 rewards = calculateRewards(msg.sender);
        require(rewards > 0, "No rewards available");

        user.depositedAmount += rewards; // Add rewards to deposit
        user.lastClaimTime = block.timestamp;

        emit Compound(msg.sender, rewards);
    }

    function getTotalDeposited() external view returns (uint256) {
        return totalDeposits;
    }

    function updateToken(address _newToken) external onlyOwner {
        require(_newToken != address(0), "Invalid token address");
        address oldToken = address(sanicToken);
        sanicToken = IERC20(_newToken);
        emit TokenUpdated(oldToken, _newToken);
    }

    function getTVL() external view returns (uint256) {
    return sanicToken.balanceOf(address(this));
    }


    function updateFeeRecipient(address _newRecipient) external onlyOwner {
        require(_newRecipient != address(0), "Invalid fee recipient address");
        address oldRecipient = feeRecipient;
        feeRecipient = _newRecipient;
        emit FeeRecipientUpdated(oldRecipient, _newRecipient);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_sanicToken","type":"address"},{"internalType":"address","name":"_feeRecipient","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"penalty","type":"uint256"}],"name":"ClaimRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"compoundedAmount","type":"uint256"}],"name":"Compound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"netAmount","type":"uint256"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"newRecipient","type":"address"}],"name":"FeeRecipientUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"bonus","type":"uint256"}],"name":"ReferralBonusPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldToken","type":"address"},{"indexed":true,"internalType":"address","name":"newToken","type":"address"}],"name":"TokenUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"calculateRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dailyRewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTVL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDeposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasBeenReferred","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"penaltyCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"penaltyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referrers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sanicToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newRecipient","type":"address"}],"name":"updateFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newToken","type":"address"}],"name":"updateToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"lastClaimTime","type":"uint256"},{"internalType":"uint256","name":"lastWithdrawalTime","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600860045560058055600c600655603c60075562015180600855603260095534801561002e575f80fd5b506040516125f93803806125f983398181016040528101906100509190610258565b60015f819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036100c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100bc906102f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610358565b60405180910390fd5b8160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610376565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610227826101fe565b9050919050565b6102378161021d565b8114610241575f80fd5b50565b5f815190506102528161022e565b92915050565b5f806040838503121561026e5761026d6101fa565b5b5f61027b85828601610244565b925050602061028c85828601610244565b9150509250929050565b5f82825260208201905092915050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f6102da601583610296565b91506102e5826102a6565b602082019050919050565b5f6020820190508181035f830152610307816102ce565b9050919050565b7f496e76616c69642066656520726563697069656e7420616464726573730000005f82015250565b5f610342601d83610296565b915061034d8261030e565b602082019050919050565b5f6020820190508181035f83015261036f81610336565b9050919050565b612276806103835f395ff3fe608060405234801561000f575f80fd5b5060043610610135575f3560e01c806397b3fcaa116100b6578063d62c11641161007a578063d62c11641461031b578063d6b7494f1461034b578063f160d36914610369578063f69e204614610385578063f71280241461038f578063fdea3657146103ad57610135565b806397b3fcaa14610271578063a48b3a521461028f578063a87430ba146102ad578063b68ef559146102df578063c1e3d2dd146102fd57610135565b80636e553f65116100fd5780636e553f65146101df5780637ad3def2146101fb5780637d8820971461021757806384ae2bc6146102355780638da5cb5b1461025357610135565b8063372500ab1461013957806346904840146101435780634a3b68cc1461016157806364ab86751461019157806367a52793146101c1575b5f80fd5b6101416103cb565b005b61014b6106cd565b60405161015891906117d4565b60405180910390f35b61017b6004803603810190610176919061181b565b6106f2565b60405161018891906117d4565b60405180910390f35b6101ab60048036038101906101a6919061181b565b610722565b6040516101b8919061185e565b60405180910390f35b6101c96107e2565b6040516101d6919061185e565b60405180910390f35b6101f960048036038101906101f491906118a1565b6107e8565b005b6102156004803603810190610210919061181b565b610db6565b005b61021f610f76565b60405161022c919061185e565b60405180910390f35b61023d610f7c565b60405161024a919061185e565b60405180910390f35b61025b610f82565b60405161026891906117d4565b60405180910390f35b610279610fa7565b604051610286919061185e565b60405180910390f35b610297611046565b6040516102a4919061185e565b60405180910390f35b6102c760048036038101906102c2919061181b565b61104c565b6040516102d6939291906118df565b60405180910390f35b6102e7611072565b6040516102f4919061185e565b60405180910390f35b61030561107b565b604051610312919061185e565b60405180910390f35b6103356004803603810190610330919061181b565b611081565b604051610342919061192e565b60405180910390f35b61035361109e565b604051610360919061185e565b60405180910390f35b610383600480360381019061037e919061181b565b6110a4565b005b61038d611264565b005b610397611451565b6040516103a491906119a2565b60405180910390f35b6103b5611476565b6040516103c2919061185e565b60405180910390f35b60025f540361040f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040690611a15565b60405180910390fd5b60025f819055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f01541161049b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049290611a7d565b60405180910390fd5b60075481600101546104ad9190611ac8565b4210156104ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e690611b45565b60405180910390fd5b5f6104f933610722565b90505f811161053d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053490611bad565b60405180910390fd5b5f60085483600201546105509190611ac8565b421015610574576064600954836105679190611bcb565b6105719190611c39565b90505b5f81836105819190611c69565b905042846001018190555042846002018190555080845f015f8282546105a79190611c69565b925050819055506105fa338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661147c9092919063ffffffff16565b5f8211156106705761066f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661147c9092919063ffffffff16565b5b3373ffffffffffffffffffffffffffffffffffffffff167f674a8930d4166ce2352c3dc1e9ff633595db479f71f3741270a0a73a52cb7b0f82846040516106b8929190611c9c565b60405180910390a25050505060015f81905550565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060600160405290815f82015481526020016001820154815260200160028201548152505090505f81602001514261079c9190611c69565b90505f6064600454845f01516107b29190611bcb565b6107bc9190611c39565b90506201518082826107ce9190611bcb565b6107d89190611c39565b9350505050919050565b60055481565b60025f540361082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082390611a15565b60405180910390fd5b60025f819055505f8211610875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086c90611d33565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016108d2929190611d51565b602060405180830381865afa1580156108ed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109119190611d8c565b905082811015610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d90611e01565b60405180910390fd5b6109a433308560015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611502909392919063ffffffff16565b5f6064600554856109b59190611bcb565b6109bf9190611c39565b90505f81856109ce9190611c69565b9050610a3d60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661147c9092919063ffffffff16565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610aa557503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610cbd57600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b90611e69565b60405180910390fd5b5f606460065487610b459190611bcb565b610b4f9190611c39565b9050610b9d858260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661147c9092919063ffffffff16565b84600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f050bae3eeefac62a4ee36c766f4f426f09edf96ae8fb3034ebbf961e4acc78e282604051610cb3919061185e565b60405180910390a2505b5f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081815f015f828254610d0f9190611ac8565b925050819055504281600101819055505f816002018190555081600d5f828254610d399190611ac8565b925050819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b478885604051610d9f929190611c9c565b60405180910390a35050505060015f819055505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90611ed1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90611f39565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0b1186973f810894b87ab0bfbee422fddcaad21b46dc705a561451bbb6bac11760405160405180910390a35050565b600d5481565b60065481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161100291906117d4565b602060405180830381865afa15801561101d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110419190611d8c565b905090565b60085481565b600a602052805f5260405f205f91509050805f0154908060010154908060020154905083565b5f600d54905090565b60045481565b600c602052805f5260405f205f915054906101000a900460ff1681565b60095481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112a90611ed1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119890611fa1565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167faaebcf1bfa00580e41d966056b48521fa9f202645c86d4ddf28113e617c1b1d360405160405180910390a35050565b60025f54036112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f90611a15565b60405180910390fd5b60025f819055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f015411611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b90611a7d565b60405180910390fd5b60075481600101546113469190611ac8565b421015611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90611b45565b60405180910390fd5b5f61139233610722565b90505f81116113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd90611bad565b60405180910390fd5b80825f015f8282546113e89190611ac8565b925050819055504282600101819055503373ffffffffffffffffffffffffffffffffffffffff167f169f1815ebdea059aac3bb00ec9a9594c7a5ffcb64a17e8392b5d84909a145568260405161143e919061185e565b60405180910390a2505060015f81905550565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6114fd8363a9059cbb60e01b848460405160240161149b929190611fbf565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061158b565b505050565b611585846323b872dd60e01b85858560405160240161152393929190611fe6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061158b565b50505050565b5f6115ec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116509092919063ffffffff16565b90505f8151111561164b578080602001905181019061160b9190612045565b61164a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611641906120e0565b60405180910390fd5b5b505050565b606061165e84845f85611667565b90509392505050565b606061167285611784565b6116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a890612148565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff1685876040516116d991906121b8565b5f6040518083038185875af1925050503d805f8114611713576040519150601f19603f3d011682016040523d82523d5f602084013e611718565b606091505b5091509150811561172d57809250505061177c565b5f8151111561173f5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117739190612220565b60405180910390fd5b949350505050565b5f80823b90505f8111915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117be82611795565b9050919050565b6117ce816117b4565b82525050565b5f6020820190506117e75f8301846117c5565b92915050565b5f80fd5b6117fa816117b4565b8114611804575f80fd5b50565b5f81359050611815816117f1565b92915050565b5f602082840312156118305761182f6117ed565b5b5f61183d84828501611807565b91505092915050565b5f819050919050565b61185881611846565b82525050565b5f6020820190506118715f83018461184f565b92915050565b61188081611846565b811461188a575f80fd5b50565b5f8135905061189b81611877565b92915050565b5f80604083850312156118b7576118b66117ed565b5b5f6118c48582860161188d565b92505060206118d585828601611807565b9150509250929050565b5f6060820190506118f25f83018661184f565b6118ff602083018561184f565b61190c604083018461184f565b949350505050565b5f8115159050919050565b61192881611914565b82525050565b5f6020820190506119415f83018461191f565b92915050565b5f819050919050565b5f61196a61196561196084611795565b611947565b611795565b9050919050565b5f61197b82611950565b9050919050565b5f61198c82611971565b9050919050565b61199c81611982565b82525050565b5f6020820190506119b55f830184611993565b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6119ff601f836119bb565b9150611a0a826119cb565b602082019050919050565b5f6020820190508181035f830152611a2c816119f3565b9050919050565b7f4e6f206465706f7369747320666f756e640000000000000000000000000000005f82015250565b5f611a676011836119bb565b9150611a7282611a33565b602082019050919050565b5f6020820190508181035f830152611a9481611a5b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ad282611846565b9150611add83611846565b9250828201905080821115611af557611af4611a9b565b5b92915050565b7f436c61696d20636f6f6c646f776e2061637469766500000000000000000000005f82015250565b5f611b2f6015836119bb565b9150611b3a82611afb565b602082019050919050565b5f6020820190508181035f830152611b5c81611b23565b9050919050565b7f4e6f207265776172647320617661696c61626c650000000000000000000000005f82015250565b5f611b976014836119bb565b9150611ba282611b63565b602082019050919050565b5f6020820190508181035f830152611bc481611b8b565b9050919050565b5f611bd582611846565b9150611be083611846565b9250828202611bee81611846565b91508282048414831517611c0557611c04611a9b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611c4382611846565b9150611c4e83611846565b925082611c5e57611c5d611c0c565b5b828204905092915050565b5f611c7382611846565b9150611c7e83611846565b9250828203905081811115611c9657611c95611a9b565b5b92915050565b5f604082019050611caf5f83018561184f565b611cbc602083018461184f565b9392505050565b7f4465706f73697420616d6f756e74206d757374206265206772656174657220745f8201527f68616e207a65726f000000000000000000000000000000000000000000000000602082015250565b5f611d1d6028836119bb565b9150611d2882611cc3565b604082019050919050565b5f6020820190508181035f830152611d4a81611d11565b9050919050565b5f604082019050611d645f8301856117c5565b611d7160208301846117c5565b9392505050565b5f81519050611d8681611877565b92915050565b5f60208284031215611da157611da06117ed565b5b5f611dae84828501611d78565b91505092915050565b7f546f6b656e20616c6c6f77616e636520746f6f206c6f770000000000000000005f82015250565b5f611deb6017836119bb565b9150611df682611db7565b602082019050919050565b5f6020820190508181035f830152611e1881611ddf565b9050919050565b7f557365722068617320616c7265616479206265656e20726566657272656400005f82015250565b5f611e53601e836119bb565b9150611e5e82611e1f565b602082019050919050565b5f6020820190508181035f830152611e8081611e47565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f611ebb600e836119bb565b9150611ec682611e87565b602082019050919050565b5f6020820190508181035f830152611ee881611eaf565b9050919050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f611f236015836119bb565b9150611f2e82611eef565b602082019050919050565b5f6020820190508181035f830152611f5081611f17565b9050919050565b7f496e76616c69642066656520726563697069656e7420616464726573730000005f82015250565b5f611f8b601d836119bb565b9150611f9682611f57565b602082019050919050565b5f6020820190508181035f830152611fb881611f7f565b9050919050565b5f604082019050611fd25f8301856117c5565b611fdf602083018461184f565b9392505050565b5f606082019050611ff95f8301866117c5565b61200660208301856117c5565b612013604083018461184f565b949350505050565b61202481611914565b811461202e575f80fd5b50565b5f8151905061203f8161201b565b92915050565b5f6020828403121561205a576120596117ed565b5b5f61206784828501612031565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f6120ca602a836119bb565b91506120d582612070565b604082019050919050565b5f6020820190508181035f8301526120f7816120be565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f612132601d836119bb565b915061213d826120fe565b602082019050919050565b5f6020820190508181035f83015261215f81612126565b9050919050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61219282612166565b61219c8185612170565b93506121ac81856020860161217a565b80840191505092915050565b5f6121c38284612188565b915081905092915050565b5f81519050919050565b5f601f19601f8301169050919050565b5f6121f2826121ce565b6121fc81856119bb565b935061220c81856020860161217a565b612215816121d8565b840191505092915050565b5f6020820190508181035f83015261223881846121e8565b90509291505056fea26469706673582212201c87ab3b965354bd92f0eb2744df7e3739df7729b2d341409e84f987b4613f8564736f6c634300081a0033000000000000000000000000a989d83fb60d1a14846ca137c478e6b42d23620a000000000000000000000000bf144ee4708fd71077232633e7d02d219ec88151

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610135575f3560e01c806397b3fcaa116100b6578063d62c11641161007a578063d62c11641461031b578063d6b7494f1461034b578063f160d36914610369578063f69e204614610385578063f71280241461038f578063fdea3657146103ad57610135565b806397b3fcaa14610271578063a48b3a521461028f578063a87430ba146102ad578063b68ef559146102df578063c1e3d2dd146102fd57610135565b80636e553f65116100fd5780636e553f65146101df5780637ad3def2146101fb5780637d8820971461021757806384ae2bc6146102355780638da5cb5b1461025357610135565b8063372500ab1461013957806346904840146101435780634a3b68cc1461016157806364ab86751461019157806367a52793146101c1575b5f80fd5b6101416103cb565b005b61014b6106cd565b60405161015891906117d4565b60405180910390f35b61017b6004803603810190610176919061181b565b6106f2565b60405161018891906117d4565b60405180910390f35b6101ab60048036038101906101a6919061181b565b610722565b6040516101b8919061185e565b60405180910390f35b6101c96107e2565b6040516101d6919061185e565b60405180910390f35b6101f960048036038101906101f491906118a1565b6107e8565b005b6102156004803603810190610210919061181b565b610db6565b005b61021f610f76565b60405161022c919061185e565b60405180910390f35b61023d610f7c565b60405161024a919061185e565b60405180910390f35b61025b610f82565b60405161026891906117d4565b60405180910390f35b610279610fa7565b604051610286919061185e565b60405180910390f35b610297611046565b6040516102a4919061185e565b60405180910390f35b6102c760048036038101906102c2919061181b565b61104c565b6040516102d6939291906118df565b60405180910390f35b6102e7611072565b6040516102f4919061185e565b60405180910390f35b61030561107b565b604051610312919061185e565b60405180910390f35b6103356004803603810190610330919061181b565b611081565b604051610342919061192e565b60405180910390f35b61035361109e565b604051610360919061185e565b60405180910390f35b610383600480360381019061037e919061181b565b6110a4565b005b61038d611264565b005b610397611451565b6040516103a491906119a2565b60405180910390f35b6103b5611476565b6040516103c2919061185e565b60405180910390f35b60025f540361040f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040690611a15565b60405180910390fd5b60025f819055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f01541161049b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049290611a7d565b60405180910390fd5b60075481600101546104ad9190611ac8565b4210156104ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e690611b45565b60405180910390fd5b5f6104f933610722565b90505f811161053d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053490611bad565b60405180910390fd5b5f60085483600201546105509190611ac8565b421015610574576064600954836105679190611bcb565b6105719190611c39565b90505b5f81836105819190611c69565b905042846001018190555042846002018190555080845f015f8282546105a79190611c69565b925050819055506105fa338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661147c9092919063ffffffff16565b5f8211156106705761066f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661147c9092919063ffffffff16565b5b3373ffffffffffffffffffffffffffffffffffffffff167f674a8930d4166ce2352c3dc1e9ff633595db479f71f3741270a0a73a52cb7b0f82846040516106b8929190611c9c565b60405180910390a25050505060015f81905550565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060600160405290815f82015481526020016001820154815260200160028201548152505090505f81602001514261079c9190611c69565b90505f6064600454845f01516107b29190611bcb565b6107bc9190611c39565b90506201518082826107ce9190611bcb565b6107d89190611c39565b9350505050919050565b60055481565b60025f540361082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082390611a15565b60405180910390fd5b60025f819055505f8211610875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086c90611d33565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016108d2929190611d51565b602060405180830381865afa1580156108ed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109119190611d8c565b905082811015610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d90611e01565b60405180910390fd5b6109a433308560015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611502909392919063ffffffff16565b5f6064600554856109b59190611bcb565b6109bf9190611c39565b90505f81856109ce9190611c69565b9050610a3d60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661147c9092919063ffffffff16565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610aa557503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610cbd57600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b90611e69565b60405180910390fd5b5f606460065487610b459190611bcb565b610b4f9190611c39565b9050610b9d858260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661147c9092919063ffffffff16565b84600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f050bae3eeefac62a4ee36c766f4f426f09edf96ae8fb3034ebbf961e4acc78e282604051610cb3919061185e565b60405180910390a2505b5f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081815f015f828254610d0f9190611ac8565b925050819055504281600101819055505f816002018190555081600d5f828254610d399190611ac8565b925050819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b478885604051610d9f929190611c9c565b60405180910390a35050505060015f819055505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90611ed1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90611f39565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0b1186973f810894b87ab0bfbee422fddcaad21b46dc705a561451bbb6bac11760405160405180910390a35050565b600d5481565b60065481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161100291906117d4565b602060405180830381865afa15801561101d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110419190611d8c565b905090565b60085481565b600a602052805f5260405f205f91509050805f0154908060010154908060020154905083565b5f600d54905090565b60045481565b600c602052805f5260405f205f915054906101000a900460ff1681565b60095481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112a90611ed1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119890611fa1565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167faaebcf1bfa00580e41d966056b48521fa9f202645c86d4ddf28113e617c1b1d360405160405180910390a35050565b60025f54036112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f90611a15565b60405180910390fd5b60025f819055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f015411611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b90611a7d565b60405180910390fd5b60075481600101546113469190611ac8565b421015611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90611b45565b60405180910390fd5b5f61139233610722565b90505f81116113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd90611bad565b60405180910390fd5b80825f015f8282546113e89190611ac8565b925050819055504282600101819055503373ffffffffffffffffffffffffffffffffffffffff167f169f1815ebdea059aac3bb00ec9a9594c7a5ffcb64a17e8392b5d84909a145568260405161143e919061185e565b60405180910390a2505060015f81905550565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6114fd8363a9059cbb60e01b848460405160240161149b929190611fbf565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061158b565b505050565b611585846323b872dd60e01b85858560405160240161152393929190611fe6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061158b565b50505050565b5f6115ec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116509092919063ffffffff16565b90505f8151111561164b578080602001905181019061160b9190612045565b61164a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611641906120e0565b60405180910390fd5b5b505050565b606061165e84845f85611667565b90509392505050565b606061167285611784565b6116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a890612148565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff1685876040516116d991906121b8565b5f6040518083038185875af1925050503d805f8114611713576040519150601f19603f3d011682016040523d82523d5f602084013e611718565b606091505b5091509150811561172d57809250505061177c565b5f8151111561173f5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117739190612220565b60405180910390fd5b949350505050565b5f80823b90505f8111915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117be82611795565b9050919050565b6117ce816117b4565b82525050565b5f6020820190506117e75f8301846117c5565b92915050565b5f80fd5b6117fa816117b4565b8114611804575f80fd5b50565b5f81359050611815816117f1565b92915050565b5f602082840312156118305761182f6117ed565b5b5f61183d84828501611807565b91505092915050565b5f819050919050565b61185881611846565b82525050565b5f6020820190506118715f83018461184f565b92915050565b61188081611846565b811461188a575f80fd5b50565b5f8135905061189b81611877565b92915050565b5f80604083850312156118b7576118b66117ed565b5b5f6118c48582860161188d565b92505060206118d585828601611807565b9150509250929050565b5f6060820190506118f25f83018661184f565b6118ff602083018561184f565b61190c604083018461184f565b949350505050565b5f8115159050919050565b61192881611914565b82525050565b5f6020820190506119415f83018461191f565b92915050565b5f819050919050565b5f61196a61196561196084611795565b611947565b611795565b9050919050565b5f61197b82611950565b9050919050565b5f61198c82611971565b9050919050565b61199c81611982565b82525050565b5f6020820190506119b55f830184611993565b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6119ff601f836119bb565b9150611a0a826119cb565b602082019050919050565b5f6020820190508181035f830152611a2c816119f3565b9050919050565b7f4e6f206465706f7369747320666f756e640000000000000000000000000000005f82015250565b5f611a676011836119bb565b9150611a7282611a33565b602082019050919050565b5f6020820190508181035f830152611a9481611a5b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ad282611846565b9150611add83611846565b9250828201905080821115611af557611af4611a9b565b5b92915050565b7f436c61696d20636f6f6c646f776e2061637469766500000000000000000000005f82015250565b5f611b2f6015836119bb565b9150611b3a82611afb565b602082019050919050565b5f6020820190508181035f830152611b5c81611b23565b9050919050565b7f4e6f207265776172647320617661696c61626c650000000000000000000000005f82015250565b5f611b976014836119bb565b9150611ba282611b63565b602082019050919050565b5f6020820190508181035f830152611bc481611b8b565b9050919050565b5f611bd582611846565b9150611be083611846565b9250828202611bee81611846565b91508282048414831517611c0557611c04611a9b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611c4382611846565b9150611c4e83611846565b925082611c5e57611c5d611c0c565b5b828204905092915050565b5f611c7382611846565b9150611c7e83611846565b9250828203905081811115611c9657611c95611a9b565b5b92915050565b5f604082019050611caf5f83018561184f565b611cbc602083018461184f565b9392505050565b7f4465706f73697420616d6f756e74206d757374206265206772656174657220745f8201527f68616e207a65726f000000000000000000000000000000000000000000000000602082015250565b5f611d1d6028836119bb565b9150611d2882611cc3565b604082019050919050565b5f6020820190508181035f830152611d4a81611d11565b9050919050565b5f604082019050611d645f8301856117c5565b611d7160208301846117c5565b9392505050565b5f81519050611d8681611877565b92915050565b5f60208284031215611da157611da06117ed565b5b5f611dae84828501611d78565b91505092915050565b7f546f6b656e20616c6c6f77616e636520746f6f206c6f770000000000000000005f82015250565b5f611deb6017836119bb565b9150611df682611db7565b602082019050919050565b5f6020820190508181035f830152611e1881611ddf565b9050919050565b7f557365722068617320616c7265616479206265656e20726566657272656400005f82015250565b5f611e53601e836119bb565b9150611e5e82611e1f565b602082019050919050565b5f6020820190508181035f830152611e8081611e47565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f611ebb600e836119bb565b9150611ec682611e87565b602082019050919050565b5f6020820190508181035f830152611ee881611eaf565b9050919050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f611f236015836119bb565b9150611f2e82611eef565b602082019050919050565b5f6020820190508181035f830152611f5081611f17565b9050919050565b7f496e76616c69642066656520726563697069656e7420616464726573730000005f82015250565b5f611f8b601d836119bb565b9150611f9682611f57565b602082019050919050565b5f6020820190508181035f830152611fb881611f7f565b9050919050565b5f604082019050611fd25f8301856117c5565b611fdf602083018461184f565b9392505050565b5f606082019050611ff95f8301866117c5565b61200660208301856117c5565b612013604083018461184f565b949350505050565b61202481611914565b811461202e575f80fd5b50565b5f8151905061203f8161201b565b92915050565b5f6020828403121561205a576120596117ed565b5b5f61206784828501612031565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f6120ca602a836119bb565b91506120d582612070565b604082019050919050565b5f6020820190508181035f8301526120f7816120be565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f612132601d836119bb565b915061213d826120fe565b602082019050919050565b5f6020820190508181035f83015261215f81612126565b9050919050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61219282612166565b61219c8185612170565b93506121ac81856020860161217a565b80840191505092915050565b5f6121c38284612188565b915081905092915050565b5f81519050919050565b5f601f19601f8301169050919050565b5f6121f2826121ce565b6121fc81856119bb565b935061220c81856020860161217a565b612215816121d8565b840191505092915050565b5f6020820190508181035f83015261223881846121e8565b90509291505056fea26469706673582212201c87ab3b965354bd92f0eb2744df7e3739df7729b2d341409e84f987b4613f8564736f6c634300081a0033

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

000000000000000000000000a989d83fb60d1a14846ca137c478e6b42d23620a000000000000000000000000bf144ee4708fd71077232633e7d02d219ec88151

-----Decoded View---------------
Arg [0] : _sanicToken (address): 0xA989d83fb60d1a14846CA137c478e6b42D23620A
Arg [1] : _feeRecipient (address): 0xbF144EE4708FD71077232633E7d02D219eC88151

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a989d83fb60d1a14846ca137c478e6b42d23620a
Arg [1] : 000000000000000000000000bf144ee4708fd71077232633e7d02d219ec88151


Deployed Bytecode Sourcemap

5306:5984:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8574:1011;;;:::i;:::-;;5457:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6172:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9593:325;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5626:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7251:1315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10581:274;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6279:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5680:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5518:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10863:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5827:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6128:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;10473:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5565:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6223:47;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5914:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10980:307;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9926:539;;;:::i;:::-;;5404:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5740:40;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8574:1011;4196:1;4344:7;;:19;4336:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:1;4412:7;:18;;;;8631:17:::1;8651:5;:17;8657:10;8651:17;;;;;;;;;;;;;;;8631:37;;8710:1;8687:4;:20;;;:24;8679:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8792:13;;8771:4;:18;;;:34;;;;:::i;:::-;8752:15;:53;;8744:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;8844:15;8862:28;8879:10;8862:16;:28::i;:::-;8844:46;;8919:1;8909:7;:11;8901:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;8958:15;9036;;9010:4;:23;;;:41;;;;:::i;:::-;8992:15;:59;8988:131;;;9104:3;9089:11;;9079:7;:21;;;;:::i;:::-;9078:29;;;;:::i;:::-;9068:39;;8988:131;9131:18;9162:7;9152;:17;;;;:::i;:::-;9131:38;;9201:15;9180:4;:18;;:36;;;;9253:15;9227:4;:23;;:41;;;;9305:10;9281:4;:20;;;:34;;;;;;;:::i;:::-;;;;;;;;9365:47;9389:10;9401;9365;;;;;;;;;;;:23;;;;:47;;;;;:::i;:::-;9439:1;9429:7;:11;9425:90;;;9457:46;9481:12;;;;;;;;;;;9495:7;9457:10;;;;;;;;;;;:23;;;;:46;;;;;:::i;:::-;9425:90;9545:10;9532:45;;;9557:10;9569:7;9532:45;;;;;;;:::i;:::-;;;;;;;;8620:965;;;;4152:1:::0;4457:7;:22;;;;8574:1011::o;5457:27::-;;;;;;;;;;;;;:::o;6172:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;9593:325::-;9655:7;9675:16;9694:5;:12;9700:5;9694:12;;;;;;;;;;;;;;;9675:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9717:19;9757:4;:18;;;9739:15;:36;;;;:::i;:::-;9717:58;;9786:20;9852:3;9833:15;;9810:4;:20;;;:38;;;;:::i;:::-;9809:46;;;;:::i;:::-;9786:69;;9904:6;9889:11;9874:12;:26;;;;:::i;:::-;9873:37;;;;:::i;:::-;9866:44;;;;;9593:325;;;:::o;5626:29::-;;;;:::o;7251:1315::-;4196:1;4344:7;;:19;4336:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:1;4412:7;:18;;;;7355:1:::1;7345:7;:11;7337:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7414:17;7434:10;;;;;;;;;;;:20;;;7455:10;7475:4;7434:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7414:67;;7513:7;7500:9;:20;;7492:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;7561:63;7589:10;7609:4;7616:7;7561:10;;;;;;;;;;;:27;;;;:63;;;;;;:::i;:::-;7637:11;7676:3;7662:10;;7652:7;:20;;;;:::i;:::-;7651:28;;;;:::i;:::-;7637:42;;7690:17;7720:3;7710:7;:13;;;;:::i;:::-;7690:33;;7736:42;7760:12;;;;;;;;;;;7774:3;7736:10;;;;;;;;;;;:23;;;;:42;;;;;:::i;:::-;7816:1;7795:23;;:9;:23;;;;:50;;;;;7835:10;7822:23;;:9;:23;;;;7795:50;7791:448;;;7871:15;:27;7887:10;7871:27;;;;;;;;;;;;;;;;;;;;;;;;;7870:28;7862:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7948:21;7998:3;7983:11;;7973:7;:21;;;;:::i;:::-;7972:29;;;;:::i;:::-;7948:53;;8016:49;8040:9;8051:13;8016:10;;;;;;;;;;;:23;;;;:49;;;;;:::i;:::-;8104:9;8080;:21;8090:10;8080:21;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;8158:4;8128:15;:27;8144:10;8128:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8202:9;8184:43;;;8213:13;8184:43;;;;;;:::i;:::-;;;;;;;;7847:392;7791:448;8251:17;8271:5;:17;8277:10;8271:17;;;;;;;;;;;;;;;8251:37;;8323:9;8299:4;:20;;;:33;;;;;;;:::i;:::-;;;;;;;;8364:15;8343:4;:18;;:36;;;;8416:1;8390:4;:23;;:27;;;;8481:9;8464:13;;:26;;;;;;;:::i;:::-;;;;;;;;8548:9;8508:50;;8516:10;8508:50;;;8528:7;8537:9;8508:50;;;;;;;:::i;:::-;;;;;;;;7326:1240;;;;4152:1:::0;4457:7;:22;;;;7251:1315;;:::o;10581:274::-;6864:5;;;;;;;;;;;6850:19;;:10;:19;;;6842:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10680:1:::1;10659:23;;:9;:23;;::::0;10651:57:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10719:16;10746:10;;;;;;;;;;;10719:38;;10788:9;10768:10;;:30;;;;;;;;;;;;;;;;;;10837:9;10814:33;;10827:8;10814:33;;;;;;;;;;;;10640:215;10581:274:::0;:::o;6279:28::-;;;;:::o;5680:31::-;;;;:::o;5518:20::-;;;;;;;;;;;;;:::o;10863:107::-;10904:7;10927:10;;;;;;;;;;;:20;;;10956:4;10927:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10920:42;;10863:107;:::o;5827:41::-;;;;:::o;6128:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10473:100::-;10525:7;10552:13;;10545:20;;10473:100;:::o;5565:34::-;;;;:::o;6223:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;5914:31::-;;;;:::o;10980:307::-;6864:5;;;;;;;;;;;6850:19;;:10;:19;;;6842:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11094:1:::1;11069:27;;:13;:27;;::::0;11061:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11141:20;11164:12;;;;;;;;;;;11141:35;;11202:13;11187:12;;:28;;;;;;;;;;;;;;;;;;11265:13;11231:48;;11251:12;11231:48;;;;;;;;;;;;11050:237;10980:307:::0;:::o;9926:539::-;4196:1;4344:7;;:19;4336:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:1;4412:7;:18;;;;9979:17:::1;9999:5;:17;10005:10;9999:17;;;;;;;;;;;;;;;9979:37;;10058:1;10035:4;:20;;;:24;10027:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10140:13;;10119:4;:18;;;:34;;;;:::i;:::-;10100:15;:53;;10092:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10192:15;10210:28;10227:10;10210:16;:28::i;:::-;10192:46;;10267:1;10257:7;:11;10249:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;10330:7;10306:4;:20;;;:31;;;;;;;:::i;:::-;;;;;;;;10395:15;10374:4;:18;;:36;;;;10437:10;10428:29;;;10449:7;10428:29;;;;;;:::i;:::-;;;;;;;;9968:497;;4152:1:::0;4457:7;:22;;;;9926:539::o;5404:24::-;;;;;;;;;;;;;:::o;5740:40::-;;;;:::o;2537:211::-;2654:86;2674:5;2704:23;;;2729:2;2733:5;2681:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:19;:86::i;:::-;2537:211;;;:::o;2756:248::-;2900:96;2920:5;2950:27;;;2979:4;2985:2;2989:5;2927:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2900:19;:96::i;:::-;2756:248;;;;:::o;3416:333::-;3497:23;3523:69;3551:4;3523:69;;;;;;;;;;;;;;;;;3531:5;3523:27;;;;:69;;;;;:::i;:::-;3497:95;;3627:1;3607:10;:17;:21;3603:139;;;3664:10;3653:30;;;;;;;;;;;;:::i;:::-;3645:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3603:139;3486:263;3416:333;;:::o;833:230::-;970:12;1002:53;1025:6;1033:4;1039:1;1042:12;1002:22;:53::i;:::-;995:60;;833:230;;;;;:::o;1706:733::-;1879:12;1912:18;1923:6;1912:10;:18::i;:::-;1904:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;1978:12;1992:23;2019:6;:11;;2038:8;2048:4;2019:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1977:76;;;;2068:7;2064:368;;;2099:10;2092:17;;;;;;2064:368;2166:1;2146:10;:17;:21;2142:279;;;2249:10;2243:17;2310:15;2297:10;2293:2;2289:19;2282:44;2142:279;2392:12;2385:20;;;;;;;;;;;:::i;:::-;;;;;;;;1706:733;;;;;;;:::o;121:196::-;181:4;198:12;265:7;253:20;245:28;;308:1;301:4;:8;294:15;;;121:196;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;674:117::-;783:1;780;773:12;920:122;993:24;1011:5;993:24;:::i;:::-;986:5;983:35;973:63;;1032:1;1029;1022:12;973:63;920:122;:::o;1048:139::-;1094:5;1132:6;1119:20;1110:29;;1148:33;1175:5;1148:33;:::i;:::-;1048:139;;;;:::o;1193:329::-;1252:6;1301:2;1289:9;1280:7;1276:23;1272:32;1269:119;;;1307:79;;:::i;:::-;1269:119;1427:1;1452:53;1497:7;1488:6;1477:9;1473:22;1452:53;:::i;:::-;1442:63;;1398:117;1193:329;;;;:::o;1528:77::-;1565:7;1594:5;1583:16;;1528:77;;;:::o;1611:118::-;1698:24;1716:5;1698:24;:::i;:::-;1693:3;1686:37;1611:118;;:::o;1735:222::-;1828:4;1866:2;1855:9;1851:18;1843:26;;1879:71;1947:1;1936:9;1932:17;1923:6;1879:71;:::i;:::-;1735:222;;;;:::o;1963:122::-;2036:24;2054:5;2036:24;:::i;:::-;2029:5;2026:35;2016:63;;2075:1;2072;2065:12;2016:63;1963:122;:::o;2091:139::-;2137:5;2175:6;2162:20;2153:29;;2191:33;2218:5;2191:33;:::i;:::-;2091:139;;;;:::o;2236:474::-;2304:6;2312;2361:2;2349:9;2340:7;2336:23;2332:32;2329:119;;;2367:79;;:::i;:::-;2329:119;2487:1;2512:53;2557:7;2548:6;2537:9;2533:22;2512:53;:::i;:::-;2502:63;;2458:117;2614:2;2640:53;2685:7;2676:6;2665:9;2661:22;2640:53;:::i;:::-;2630:63;;2585:118;2236:474;;;;;:::o;2716:442::-;2865:4;2903:2;2892:9;2888:18;2880:26;;2916:71;2984:1;2973:9;2969:17;2960:6;2916:71;:::i;:::-;2997:72;3065:2;3054:9;3050:18;3041:6;2997:72;:::i;:::-;3079;3147:2;3136:9;3132:18;3123:6;3079:72;:::i;:::-;2716:442;;;;;;:::o;3164:90::-;3198:7;3241:5;3234:13;3227:21;3216:32;;3164:90;;;:::o;3260:109::-;3341:21;3356:5;3341:21;:::i;:::-;3336:3;3329:34;3260:109;;:::o;3375:210::-;3462:4;3500:2;3489:9;3485:18;3477:26;;3513:65;3575:1;3564:9;3560:17;3551:6;3513:65;:::i;:::-;3375:210;;;;:::o;3591:60::-;3619:3;3640:5;3633:12;;3591:60;;;:::o;3657:142::-;3707:9;3740:53;3758:34;3767:24;3785:5;3767:24;:::i;:::-;3758:34;:::i;:::-;3740:53;:::i;:::-;3727:66;;3657:142;;;:::o;3805:126::-;3855:9;3888:37;3919:5;3888:37;:::i;:::-;3875:50;;3805:126;;;:::o;3937:140::-;4001:9;4034:37;4065:5;4034:37;:::i;:::-;4021:50;;3937:140;;;:::o;4083:159::-;4184:51;4229:5;4184:51;:::i;:::-;4179:3;4172:64;4083:159;;:::o;4248:250::-;4355:4;4393:2;4382:9;4378:18;4370:26;;4406:85;4488:1;4477:9;4473:17;4464:6;4406:85;:::i;:::-;4248:250;;;;:::o;4504:169::-;4588:11;4622:6;4617:3;4610:19;4662:4;4657:3;4653:14;4638:29;;4504:169;;;;:::o;4679:181::-;4819:33;4815:1;4807:6;4803:14;4796:57;4679:181;:::o;4866:366::-;5008:3;5029:67;5093:2;5088:3;5029:67;:::i;:::-;5022:74;;5105:93;5194:3;5105:93;:::i;:::-;5223:2;5218:3;5214:12;5207:19;;4866:366;;;:::o;5238:419::-;5404:4;5442:2;5431:9;5427:18;5419:26;;5491:9;5485:4;5481:20;5477:1;5466:9;5462:17;5455:47;5519:131;5645:4;5519:131;:::i;:::-;5511:139;;5238:419;;;:::o;5663:167::-;5803:19;5799:1;5791:6;5787:14;5780:43;5663:167;:::o;5836:366::-;5978:3;5999:67;6063:2;6058:3;5999:67;:::i;:::-;5992:74;;6075:93;6164:3;6075:93;:::i;:::-;6193:2;6188:3;6184:12;6177:19;;5836:366;;;:::o;6208:419::-;6374:4;6412:2;6401:9;6397:18;6389:26;;6461:9;6455:4;6451:20;6447:1;6436:9;6432:17;6425:47;6489:131;6615:4;6489:131;:::i;:::-;6481:139;;6208:419;;;:::o;6633:180::-;6681:77;6678:1;6671:88;6778:4;6775:1;6768:15;6802:4;6799:1;6792:15;6819:191;6859:3;6878:20;6896:1;6878:20;:::i;:::-;6873:25;;6912:20;6930:1;6912:20;:::i;:::-;6907:25;;6955:1;6952;6948:9;6941:16;;6976:3;6973:1;6970:10;6967:36;;;6983:18;;:::i;:::-;6967:36;6819:191;;;;:::o;7016:171::-;7156:23;7152:1;7144:6;7140:14;7133:47;7016:171;:::o;7193:366::-;7335:3;7356:67;7420:2;7415:3;7356:67;:::i;:::-;7349:74;;7432:93;7521:3;7432:93;:::i;:::-;7550:2;7545:3;7541:12;7534:19;;7193:366;;;:::o;7565:419::-;7731:4;7769:2;7758:9;7754:18;7746:26;;7818:9;7812:4;7808:20;7804:1;7793:9;7789:17;7782:47;7846:131;7972:4;7846:131;:::i;:::-;7838:139;;7565:419;;;:::o;7990:170::-;8130:22;8126:1;8118:6;8114:14;8107:46;7990:170;:::o;8166:366::-;8308:3;8329:67;8393:2;8388:3;8329:67;:::i;:::-;8322:74;;8405:93;8494:3;8405:93;:::i;:::-;8523:2;8518:3;8514:12;8507:19;;8166:366;;;:::o;8538:419::-;8704:4;8742:2;8731:9;8727:18;8719:26;;8791:9;8785:4;8781:20;8777:1;8766:9;8762:17;8755:47;8819:131;8945:4;8819:131;:::i;:::-;8811:139;;8538:419;;;:::o;8963:410::-;9003:7;9026:20;9044:1;9026:20;:::i;:::-;9021:25;;9060:20;9078:1;9060:20;:::i;:::-;9055:25;;9115:1;9112;9108:9;9137:30;9155:11;9137:30;:::i;:::-;9126:41;;9316:1;9307:7;9303:15;9300:1;9297:22;9277:1;9270:9;9250:83;9227:139;;9346:18;;:::i;:::-;9227:139;9011:362;8963:410;;;;:::o;9379:180::-;9427:77;9424:1;9417:88;9524:4;9521:1;9514:15;9548:4;9545:1;9538:15;9565:185;9605:1;9622:20;9640:1;9622:20;:::i;:::-;9617:25;;9656:20;9674:1;9656:20;:::i;:::-;9651:25;;9695:1;9685:35;;9700:18;;:::i;:::-;9685:35;9742:1;9739;9735:9;9730:14;;9565:185;;;;:::o;9756:194::-;9796:4;9816:20;9834:1;9816:20;:::i;:::-;9811:25;;9850:20;9868:1;9850:20;:::i;:::-;9845:25;;9894:1;9891;9887:9;9879:17;;9918:1;9912:4;9909:11;9906:37;;;9923:18;;:::i;:::-;9906:37;9756:194;;;;:::o;9956:332::-;10077:4;10115:2;10104:9;10100:18;10092:26;;10128:71;10196:1;10185:9;10181:17;10172:6;10128:71;:::i;:::-;10209:72;10277:2;10266:9;10262:18;10253:6;10209:72;:::i;:::-;9956:332;;;;;:::o;10294:227::-;10434:34;10430:1;10422:6;10418:14;10411:58;10503:10;10498:2;10490:6;10486:15;10479:35;10294:227;:::o;10527:366::-;10669:3;10690:67;10754:2;10749:3;10690:67;:::i;:::-;10683:74;;10766:93;10855:3;10766:93;:::i;:::-;10884:2;10879:3;10875:12;10868:19;;10527:366;;;:::o;10899:419::-;11065:4;11103:2;11092:9;11088:18;11080:26;;11152:9;11146:4;11142:20;11138:1;11127:9;11123:17;11116:47;11180:131;11306:4;11180:131;:::i;:::-;11172:139;;10899:419;;;:::o;11324:332::-;11445:4;11483:2;11472:9;11468:18;11460:26;;11496:71;11564:1;11553:9;11549:17;11540:6;11496:71;:::i;:::-;11577:72;11645:2;11634:9;11630:18;11621:6;11577:72;:::i;:::-;11324:332;;;;;:::o;11662:143::-;11719:5;11750:6;11744:13;11735:22;;11766:33;11793:5;11766:33;:::i;:::-;11662:143;;;;:::o;11811:351::-;11881:6;11930:2;11918:9;11909:7;11905:23;11901:32;11898:119;;;11936:79;;:::i;:::-;11898:119;12056:1;12081:64;12137:7;12128:6;12117:9;12113:22;12081:64;:::i;:::-;12071:74;;12027:128;11811:351;;;;:::o;12168:173::-;12308:25;12304:1;12296:6;12292:14;12285:49;12168:173;:::o;12347:366::-;12489:3;12510:67;12574:2;12569:3;12510:67;:::i;:::-;12503:74;;12586:93;12675:3;12586:93;:::i;:::-;12704:2;12699:3;12695:12;12688:19;;12347:366;;;:::o;12719:419::-;12885:4;12923:2;12912:9;12908:18;12900:26;;12972:9;12966:4;12962:20;12958:1;12947:9;12943:17;12936:47;13000:131;13126:4;13000:131;:::i;:::-;12992:139;;12719:419;;;:::o;13144:180::-;13284:32;13280:1;13272:6;13268:14;13261:56;13144:180;:::o;13330:366::-;13472:3;13493:67;13557:2;13552:3;13493:67;:::i;:::-;13486:74;;13569:93;13658:3;13569:93;:::i;:::-;13687:2;13682:3;13678:12;13671:19;;13330:366;;;:::o;13702:419::-;13868:4;13906:2;13895:9;13891:18;13883:26;;13955:9;13949:4;13945:20;13941:1;13930:9;13926:17;13919:47;13983:131;14109:4;13983:131;:::i;:::-;13975:139;;13702:419;;;:::o;14127:164::-;14267:16;14263:1;14255:6;14251:14;14244:40;14127:164;:::o;14297:366::-;14439:3;14460:67;14524:2;14519:3;14460:67;:::i;:::-;14453:74;;14536:93;14625:3;14536:93;:::i;:::-;14654:2;14649:3;14645:12;14638:19;;14297:366;;;:::o;14669:419::-;14835:4;14873:2;14862:9;14858:18;14850:26;;14922:9;14916:4;14912:20;14908:1;14897:9;14893:17;14886:47;14950:131;15076:4;14950:131;:::i;:::-;14942:139;;14669:419;;;:::o;15094:171::-;15234:23;15230:1;15222:6;15218:14;15211:47;15094:171;:::o;15271:366::-;15413:3;15434:67;15498:2;15493:3;15434:67;:::i;:::-;15427:74;;15510:93;15599:3;15510:93;:::i;:::-;15628:2;15623:3;15619:12;15612:19;;15271:366;;;:::o;15643:419::-;15809:4;15847:2;15836:9;15832:18;15824:26;;15896:9;15890:4;15886:20;15882:1;15871:9;15867:17;15860:47;15924:131;16050:4;15924:131;:::i;:::-;15916:139;;15643:419;;;:::o;16068:179::-;16208:31;16204:1;16196:6;16192:14;16185:55;16068:179;:::o;16253:366::-;16395:3;16416:67;16480:2;16475:3;16416:67;:::i;:::-;16409:74;;16492:93;16581:3;16492:93;:::i;:::-;16610:2;16605:3;16601:12;16594:19;;16253:366;;;:::o;16625:419::-;16791:4;16829:2;16818:9;16814:18;16806:26;;16878:9;16872:4;16868:20;16864:1;16853:9;16849:17;16842:47;16906:131;17032:4;16906:131;:::i;:::-;16898:139;;16625:419;;;:::o;17050:332::-;17171:4;17209:2;17198:9;17194:18;17186:26;;17222:71;17290:1;17279:9;17275:17;17266:6;17222:71;:::i;:::-;17303:72;17371:2;17360:9;17356:18;17347:6;17303:72;:::i;:::-;17050:332;;;;;:::o;17388:442::-;17537:4;17575:2;17564:9;17560:18;17552:26;;17588:71;17656:1;17645:9;17641:17;17632:6;17588:71;:::i;:::-;17669:72;17737:2;17726:9;17722:18;17713:6;17669:72;:::i;:::-;17751;17819:2;17808:9;17804:18;17795:6;17751:72;:::i;:::-;17388:442;;;;;;:::o;17836:116::-;17906:21;17921:5;17906:21;:::i;:::-;17899:5;17896:32;17886:60;;17942:1;17939;17932:12;17886:60;17836:116;:::o;17958:137::-;18012:5;18043:6;18037:13;18028:22;;18059:30;18083:5;18059:30;:::i;:::-;17958:137;;;;:::o;18101:345::-;18168:6;18217:2;18205:9;18196:7;18192:23;18188:32;18185:119;;;18223:79;;:::i;:::-;18185:119;18343:1;18368:61;18421:7;18412:6;18401:9;18397:22;18368:61;:::i;:::-;18358:71;;18314:125;18101:345;;;;:::o;18452:229::-;18592:34;18588:1;18580:6;18576:14;18569:58;18661:12;18656:2;18648:6;18644:15;18637:37;18452:229;:::o;18687:366::-;18829:3;18850:67;18914:2;18909:3;18850:67;:::i;:::-;18843:74;;18926:93;19015:3;18926:93;:::i;:::-;19044:2;19039:3;19035:12;19028:19;;18687:366;;;:::o;19059:419::-;19225:4;19263:2;19252:9;19248:18;19240:26;;19312:9;19306:4;19302:20;19298:1;19287:9;19283:17;19276:47;19340:131;19466:4;19340:131;:::i;:::-;19332:139;;19059:419;;;:::o;19484:179::-;19624:31;19620:1;19612:6;19608:14;19601:55;19484:179;:::o;19669:366::-;19811:3;19832:67;19896:2;19891:3;19832:67;:::i;:::-;19825:74;;19908:93;19997:3;19908:93;:::i;:::-;20026:2;20021:3;20017:12;20010:19;;19669:366;;;:::o;20041:419::-;20207:4;20245:2;20234:9;20230:18;20222:26;;20294:9;20288:4;20284:20;20280:1;20269:9;20265:17;20258:47;20322:131;20448:4;20322:131;:::i;:::-;20314:139;;20041:419;;;:::o;20466:98::-;20517:6;20551:5;20545:12;20535:22;;20466:98;;;:::o;20570:147::-;20671:11;20708:3;20693:18;;20570:147;;;;:::o;20723:139::-;20812:6;20807:3;20802;20796:23;20853:1;20844:6;20839:3;20835:16;20828:27;20723:139;;;:::o;20868:386::-;20972:3;21000:38;21032:5;21000:38;:::i;:::-;21054:88;21135:6;21130:3;21054:88;:::i;:::-;21047:95;;21151:65;21209:6;21204:3;21197:4;21190:5;21186:16;21151:65;:::i;:::-;21241:6;21236:3;21232:16;21225:23;;20976:278;20868:386;;;;:::o;21260:271::-;21390:3;21412:93;21501:3;21492:6;21412:93;:::i;:::-;21405:100;;21522:3;21515:10;;21260:271;;;;:::o;21537:99::-;21589:6;21623:5;21617:12;21607:22;;21537:99;;;:::o;21642:102::-;21683:6;21734:2;21730:7;21725:2;21718:5;21714:14;21710:28;21700:38;;21642:102;;;:::o;21750:377::-;21838:3;21866:39;21899:5;21866:39;:::i;:::-;21921:71;21985:6;21980:3;21921:71;:::i;:::-;21914:78;;22001:65;22059:6;22054:3;22047:4;22040:5;22036:16;22001:65;:::i;:::-;22091:29;22113:6;22091:29;:::i;:::-;22086:3;22082:39;22075:46;;21842:285;21750:377;;;;:::o;22133:313::-;22246:4;22284:2;22273:9;22269:18;22261:26;;22333:9;22327:4;22323:20;22319:1;22308:9;22304:17;22297:47;22361:78;22434:4;22425:6;22361:78;:::i;:::-;22353:86;;22133:313;;;;:::o

Swarm Source

ipfs://1c87ab3b965354bd92f0eb2744df7e3739df7729b2d341409e84f987b4613f85

Block Transaction 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
[ 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.