ETH Price: $3,337.59 (-1.18%)

Contract

0x90919d7A14f31477c08157e3cC80E006c4276441
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve207141612024-09-09 16:10:47104 days ago1725898247IN
0x90919d7A...6c4276441
0 ETH0.0007877716.91049137
Provider Drops T...207141592024-09-09 16:10:23104 days ago1725898223IN
0x90919d7A...6c4276441
0 ETH0.0203248416.48121307
Approve207141582024-09-09 16:10:11104 days ago1725898211IN
0x90919d7A...6c4276441
0 ETH0.0007622416.36243599
Approve207141492024-09-09 16:08:23104 days ago1725898103IN
0x90919d7A...6c4276441
0 ETH0.0005814912.48237585
Transfer207141482024-09-09 16:08:11104 days ago1725898091IN
0x90919d7A...6c4276441
0 ETH0.0038242820.95524147
Disable Max Wall...207141432024-09-09 16:06:59104 days ago1725898019IN
0x90919d7A...6c4276441
0 ETH0.0005774220.29318972
Transfer207141402024-09-09 16:06:23104 days ago1725897983IN
0x90919d7A...6c4276441
0 ETH0.0005155915.40619341
Approve207141382024-09-09 16:05:59104 days ago1725897959IN
0x90919d7A...6c4276441
0 ETH0.0005461611.79701464
Approve207141382024-09-09 16:05:59104 days ago1725897959IN
0x90919d7A...6c4276441
0 ETH0.0006194413.29701464
Approve207141372024-09-09 16:05:47104 days ago1725897947IN
0x90919d7A...6c4276441
0 ETH0.0005401211.66644671
Approve207141372024-09-09 16:05:47104 days ago1725897947IN
0x90919d7A...6c4276441
0 ETH0.0006133513.16644671
Provider Drops T...207141372024-09-09 16:05:47104 days ago1725897947IN
0x90919d7A...6c4276441
0 ETH0.0191017214.96844671
Approve207141362024-09-09 16:05:35104 days ago1725897935IN
0x90919d7A...6c4276441
0 ETH0.0005578411.97469041
Approve207141362024-09-09 16:05:35104 days ago1725897935IN
0x90919d7A...6c4276441
0 ETH0.0007048315.13404092
Approve207141342024-09-09 16:05:11104 days ago1725897911IN
0x90919d7A...6c4276441
0 ETH0.0005306211.45545924
Approve207141342024-09-09 16:05:11104 days ago1725897911IN
0x90919d7A...6c4276441
0 ETH0.0006000812.8814418
Provider Drops T...207141322024-09-09 16:04:47104 days ago1725897887IN
0x90919d7A...6c4276441
0 ETH0.0138710414.6288185
Approve207141312024-09-09 16:04:35104 days ago1725897875IN
0x90919d7A...6c4276441
0 ETH0.0005645212.11807295
Approve207141302024-09-09 16:04:23104 days ago1725897863IN
0x90919d7A...6c4276441
0 ETH0.0006344213.61860911
Approve207141302024-09-09 16:04:23104 days ago1725897863IN
0x90919d7A...6c4276441
0 ETH0.0017990438.61860911
Approve207141292024-09-09 16:04:11104 days ago1725897851IN
0x90919d7A...6c4276441
0 ETH0.0005007510.8161261
Approve207141292024-09-09 16:04:11104 days ago1725897851IN
0x90919d7A...6c4276441
0 ETH0.0005007510.8161261
Approve207141292024-09-09 16:04:11104 days ago1725897851IN
0x90919d7A...6c4276441
0 ETH0.0005737412.3161261
Provider Drops T...207141282024-09-09 16:03:59104 days ago1725897839IN
0x90919d7A...6c4276441
0 ETH0.0139043812.15086769
Approve207141282024-09-09 16:03:59104 days ago1725897839IN
0x90919d7A...6c4276441
0 ETH0.0013607829.21086769
View all transactions

Latest 10 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
207141662024-09-09 16:11:59104 days ago1725898319
0x90919d7A...6c4276441
0.02589995 ETH
207141662024-09-09 16:11:59104 days ago1725898319
0x90919d7A...6c4276441
0.02589995 ETH
207141282024-09-09 16:03:59104 days ago1725897839
0x90919d7A...6c4276441
0.00515459 ETH
207141282024-09-09 16:03:59104 days ago1725897839
0x90919d7A...6c4276441
0.00515459 ETH
207141282024-09-09 16:03:59104 days ago1725897839
0x90919d7A...6c4276441
0.0060559 ETH
207141282024-09-09 16:03:59104 days ago1725897839
0x90919d7A...6c4276441
0.0060559 ETH
207141272024-09-09 16:03:47104 days ago1725897827
0x90919d7A...6c4276441
0.00482194 ETH
207141272024-09-09 16:03:47104 days ago1725897827
0x90919d7A...6c4276441
0.00482194 ETH
207141272024-09-09 16:03:47104 days ago1725897827
0x90919d7A...6c4276441
0.07833917 ETH
207141272024-09-09 16:03:47104 days ago1725897827
0x90919d7A...6c4276441
0.07833917 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Netova

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
- [Netova.xyz](https://netova.xyz/)
- [Telegram](https://t.me/netova_xyz)
- [Twitter](https://x.com/netova_xyz)
*/
// Developed by @crypt0xa

pragma solidity ^0.8.20;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
}

interface IUniswapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function getAmountsOut(
        uint256 amountIn,
        address[] calldata path
    ) external view returns (uint256[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IUniswapV2Factory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

interface IERC20Errors {
    error ERC20InvalidReceiver(address receiver);
    error ERC20InsufficientAllowance(
        address spender,
        uint256 allowance,
        uint256 needed
    );
    error ERC20InvalidApprover(address approver);
    error ERC20InvalidSpender(address spender);
}

abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(
        address to,
        uint256 value
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(
        address spender,
        uint256 value
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 value) internal virtual {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _totalSupply += value;
        unchecked {
            _balances[account] += value;
        }
        emit Transfer(address(0), account, value);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value
    ) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 value
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(
                    spender,
                    currentAllowance,
                    value
                );
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value);
            }
        }
    }
}

contract Netova is ERC20 {
    using SafeMath for uint256;
    address private dev;
    address[] private _holders;
    uint256 private _totalSupply = 100_000_000 * 10 ** decimals();
    address private _owner;
    mapping(address => uint256) private _ProviderDropsTimestamps; // Track ProviderDrops timestamps
    mapping(address => bool) private _excludedFromFees; // Track excluded accounts
    mapping(address => bool) private _excludedFromMaxWallet; // Track excluded accounts
    bool public tradingActive;
    bool public maxWalletHoldingEnabled = true;
    address private immutable uniswapPair;
    IUniswapRouter private immutable uniswapRouter;
    IUniswapRouter private _uniswapV2Router =
        IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    uint256 private minThresholdToHolder = 5;
    uint256 private tradingTax = 200; // 2% 
    uint256 private maxWalletHolding = 155; // 1.55%
    uint256 private minEthThreshold = 0.01 ether; 
    bool private _inSwap; 
    uint256 public _feesCollected;

    constructor(
    ) ERC20("Netova", "Netova") {
        _owner = msg.sender;
        dev = msg.sender;
        uniswapRouter = _uniswapV2Router;
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            uniswapRouter.WETH()
        );
        _excludedFromMaxWallet[address(uniswapRouter)] = true;
        _excludedFromMaxWallet[address(uniswapPair)] = true;
        _excludedFromMaxWallet[address(this)] = true;
        _excludedFromMaxWallet[_owner] = true;

        _excludedFromFees[address(uniswapRouter)] = true;
        _excludedFromFees[address(this)] = true;
        _excludedFromFees[_owner] = true;

        // Provider's Drop 6.6%
        uint256 ProviderDropAmount = _totalSupply.mul(660).div(10000);
        _mint(address(this), ProviderDropAmount);

        // Uniswap liquidity 78.4%
        uint256 liquidityAmount = _totalSupply.mul(7840).div(10000);
        _mint(_owner, liquidityAmount);

        // RewardPool 15%
        uint256 RewardPoolAmount = _totalSupply.mul(1500).div(10000);
        _mint(_owner, RewardPoolAmount);
    }

    modifier onlyOwner() {
        require(msg.sender == owner(), "Caller is not the owner");
        _;
    }

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

    function _addToHolders(address account, uint256 amount) private {
        if (_excludedFromMaxWallet[account]) {
            return;
        }
        bool accountExists = false;
        for (uint256 i = 0; i < _holders.length; i++) {
            if (_holders[i] == account) {
                accountExists = true;
                break;
            }
        }

        if (
            !accountExists &&
            balanceOf(account).add(amount) >
            _totalSupply.mul(minThresholdToHolder).div(10000)
        ) {
            _holders.push(account);
        }
    }

    function openTrading() external onlyOwner {
        tradingActive = true;
    }

    function _transfer(
        address from,
        address to,
        uint256 value
    ) internal virtual override {
        if (!tradingActive) {
            require(
                _excludedFromFees[from] || _excludedFromFees[to],
                "Trading is not active."
            );
        }
        if (maxWalletHoldingEnabled) {
            require(
                _excludedFromMaxWallet[to] ||
                    balanceOf(to).add(value) <=
                    _totalSupply.mul(maxWalletHolding).div(10000),
                "Exceeds max wallet holding"
            );
        }
        if (
            !_inSwap &&
            from != uniswapPair &&
            !_excludedFromFees[from] &&
            !_excludedFromFees[to]
        ) {
            _inSwap = true;
            swapAndSendToDev();
            _inSwap = false;
        }
        bool takeFee = !_inSwap;
        bool walletToWallet = to != uniswapPair && from != uniswapPair;
        if (
            _excludedFromFees[from] || _excludedFromFees[to] || walletToWallet
        ) {
            takeFee = false;
        }
        uint256 fees = 0;

        if (takeFee) {
            if (from == uniswapPair || to == uniswapPair) {
                uint256 taxAmount = value.mul(tradingTax).div(10000);
                fees = taxAmount;
                _feesCollected = _feesCollected.add(taxAmount); // Accumulate the fee
            }
            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
            value = value.sub(fees);
        }
        if (walletToWallet || to == uniswapPair) {
            require(
                block.timestamp >= _ProviderDropsTimestamps[from] + 10 minutes,
                "Transfer locked for 10 minutes after ProviderDrops"
            );
        }
        _removeFromHolders(from, value);
        _addToHolders(to, value);
        super._transfer(from, to, value);
    }

    function _removeFromHolders(address account, uint256 amount) private {
        if (_excludedFromMaxWallet[account]) {
            return;
        }
        bool accountExists = false;
        for (uint256 i = 0; i < _holders.length; i++) {
            if (_holders[i] == account) {
                accountExists = true;
                break;
            }
        }

        if (accountExists) {
            uint256 tval = balanceOf(account).sub(amount);
            if (tval < _totalSupply.mul(minThresholdToHolder).div(10000)) {
                for (uint256 i = 0; i < _holders.length; i++) {
                    if (_holders[i] == account) {
                        _holders[i] = _holders[_holders.length - 1];
                        _holders.pop();
                        break;
                    }
                }
            }
        }
    }

    function ProviderDropsTokens(uint256 totalProviderDropsAmount) external onlyOwner {
        uint256 totalHeldTokens = 0;
        for (uint256 i = 0; i < _holders.length; i++) {
            totalHeldTokens = totalHeldTokens.add(balanceOf(_holders[i]));
        }

        for (uint256 i = 0; i < _holders.length; i++) {
            address holder = _holders[i];
            if (_excludedFromMaxWallet[holder]) {
                continue;
            }

            uint256 holderBalance = balanceOf(holder);
            uint256 ProviderDropsAmount = totalProviderDropsAmount.mul(holderBalance).div(
                totalHeldTokens
            );

            _ProviderDropsTimestamps[holder] = block.timestamp;
            _transfer(address(this), holder, ProviderDropsAmount);
        }
    }

    // Check if the current collected fees in tokens is above the ETH threshold
    function isAboveMinEthThreshold() private view returns (bool) {
        uint256 tokenBalance = _feesCollected; // Use collected fees balance
        if (tokenBalance <= 0) return false;
        uint256 ethValue = getTokenEthValue(tokenBalance);
        return ethValue >= minEthThreshold;
    }

    // Function to get the current value of tokens in ETH
    function getTokenEthValue(
        uint256 tokenAmount
    ) private view returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        uint256[] memory amounts = uniswapRouter.getAmountsOut(
            tokenAmount,
            path
        );
        return amounts[1];
    }

    function swapAndSendToDev() private {
        uint256 feeAmount = _feesCollected; // Use the collected fees
        _feesCollected = 0; // Reset the collected fees

        _approve(address(this), address(uniswapRouter), feeAmount);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();

        // Swap tokens for ETH
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            feeAmount,
            0, // Accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

        // Transfer ETH to dev address using call
        uint256 ethBalance = address(this).balance;
        (bool success, ) = dev.call{value: ethBalance}("");
        require(success, "ETH transfer failed");
    }

    // Set minimum ETH threshold for token swapping
    function setMinEthThreshold(uint256 _minEthThreshold) external onlyOwner {
        minEthThreshold = _minEthThreshold;
    }

        // Set minimum Token threshold for token holding
    function setMinTokenThresholdToHold(uint256 _minTokenThresholdToHold) external onlyOwner {
        minThresholdToHolder = _minTokenThresholdToHold;
    }

    function renounceOwnership() external onlyOwner {
        _owner = address(0);
    }

    function transferOwnership(address newOwner) external onlyOwner {
        require(newOwner != address(0), "New owner is the zero address");
        _owner = newOwner;
    }

    function disableMaxWalletHolding() external onlyOwner {
        maxWalletHoldingEnabled = false;
    }

    function uniswapV2Pair() external view returns (address) {
        return uniswapPair;
    }

    function uniswapV2Router() external view returns (address) {
        return address(uniswapRouter);
    }

    function removeHolder(address account) external onlyOwner {
        for (uint256 i = 0; i < _holders.length; i++) {
            if (_holders[i] == account) {
                _holders[i] = _holders[_holders.length - 1];
                _holders.pop();
                break;
            }
        }
    }

    receive() external payable {
        // Empty implementation
    }

    fallback() external payable {
        // Empty implementation
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"uint256","name":"totalProviderDropsAmount","type":"uint256"}],"name":"ProviderDropsTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_feesCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableMaxWalletHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletHoldingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minEthThreshold","type":"uint256"}],"name":"setMinEthThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minTokenThresholdToHold","type":"uint256"}],"name":"setMinTokenThresholdToHold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052620000126012600a6200054a565b62000022906305f5e1006200055a565b600755600c8054610100600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d01001790556005600d5560c8600e55609b600f55662386f26fc1000060105534801562000074575f80fd5b506040805180820182526006808252654e65746f766160d01b6020808401829052845180860190955291845290830152906003620000b3838262000614565b506004620000c2828262000614565b5050600880546001600160a01b03199081163390811790925560058054909116909117905550600c546201000090046001600160a01b031660a08190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000139573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200015f9190620006dc565b6001600160a01b031663c9c653963060a0516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001d39190620006dc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200021e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002449190620006dc565b6001600160a01b03908116608081905260a05182165f818152600b602090815260408083208054600160ff199182168117909255958452818420805487168217905530808552828520805488168317905560088054891686528386208054891684179055958552600a909352818420805487168217905591835280832080548616831790559254909416815290812080549092169092179055600754620002fe9061271090620002f79061029462000383565b9062000399565b90506200030c3082620003a6565b6007545f90620003289061271090620002f790611ea062000383565b60085490915062000343906001600160a01b031682620003a6565b6007545f906200035f9061271090620002f7906105dc62000383565b6008549091506200037a906001600160a01b031682620003a6565b50505062000741565b5f6200039082846200055a565b90505b92915050565b5f6200039082846200070b565b6001600160a01b038216620003d45760405163ec442f0560e01b81525f600482015260240160405180910390fd5b8060025f828254620003e791906200072b565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200049157815f19048211156200047557620004756200043d565b808516156200048357918102915b93841c939080029062000456565b509250929050565b5f82620004a95750600162000393565b81620004b757505f62000393565b8160018114620004d05760028114620004db57620004fb565b600191505062000393565b60ff841115620004ef57620004ef6200043d565b50506001821b62000393565b5060208310610133831016604e8410600b841016171562000520575081810a62000393565b6200052c838362000451565b805f19048211156200054257620005426200043d565b029392505050565b5f6200039060ff84168362000499565b80820281158282048414176200039357620003936200043d565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200059d57607f821691505b602082108103620005bc57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200060f575f81815260208120601f850160051c81016020861015620005ea5750805b601f850160051c820191505b818110156200060b57828155600101620005f6565b5050505b505050565b81516001600160401b0381111562000630576200063062000574565b620006488162000641845462000588565b84620005c2565b602080601f8311600181146200067e575f8415620006665750858301515b5f19600386901b1c1916600185901b1785556200060b565b5f85815260208120601f198616915b82811015620006ae578886015182559484019460019091019084016200068d565b5085821015620006cc57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620006ed575f80fd5b81516001600160a01b038116811462000704575f80fd5b9392505050565b5f826200072657634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200039357620003936200043d565b60805160a051611993620007a25f395f81816101ca01528181610f6801528181610fe2015261109801525f818161025e01528181610c0201528181610cae01528181610ce601528181610d7501528181610db00152610e4401526119935ff3fe608060405260043610610137575f3560e01c80638da5cb5b116100af578063bbc0c7421161006b578063bbc0c7421461038a578063c9567bf9146103a3578063ca1aca34146103b7578063dd62ed3e146103d6578063ddfeddd11461041a578063f2fde38b1461043957005b80638da5cb5b146102de5780638dd42808146102fb57806395d89b411461031a578063a9059cbb1461032e578063ba70baf61461034d578063bb9492271461036b57005b806323b872dd116100fe57806323b872dd14610216578063313ce5671461023557806349bd5a5e1461025057806368e7a4191461028257806370a0823114610296578063715018a6146102ca57005b806306fdde0314610140578063095ea7b31461016a57806312a35e40146101995780631694505e146101bc57806318160ddd1461020257005b3661013e57005b005b34801561014b575f80fd5b50610154610458565b6040516101619190611681565b60405180910390f35b348015610175575f80fd5b506101896101843660046116e3565b6104e8565b6040519015158152602001610161565b3480156101a4575f80fd5b506101ae60125481565b604051908152602001610161565b3480156101c7575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610161565b34801561020d575f80fd5b506002546101ae565b348015610221575f80fd5b5061018961023036600461170d565b610501565b348015610240575f80fd5b5060405160128152602001610161565b34801561025b575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006101ea565b34801561028d575f80fd5b5061013e610524565b3480156102a1575f80fd5b506101ae6102b036600461174b565b6001600160a01b03165f9081526020819052604090205490565b3480156102d5575f80fd5b5061013e610564565b3480156102e9575f80fd5b506008546001600160a01b03166101ea565b348015610306575f80fd5b5061013e61031536600461174b565b6105a0565b348015610325575f80fd5b506101546106cd565b348015610339575f80fd5b506101896103483660046116e3565b6106dc565b348015610358575f80fd5b50600c5461018990610100900460ff1681565b348015610376575f80fd5b5061013e610385366004611766565b6106e9565b348015610395575f80fd5b50600c546101899060ff1681565b3480156103ae575f80fd5b5061013e610718565b3480156103c2575f80fd5b5061013e6103d1366004611766565b610751565b3480156103e1575f80fd5b506101ae6103f036600461177d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610425575f80fd5b5061013e610434366004611766565b6108a4565b348015610444575f80fd5b5061013e61045336600461174b565b6108d3565b606060038054610467906117b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610493906117b4565b80156104de5780601f106104b5576101008083540402835291602001916104de565b820191905f5260205f20905b8154815290600101906020018083116104c157829003601f168201915b5050505050905090565b5f336104f5818585610975565b60019150505b92915050565b5f3361050e858285610a27565b610519858585610aa1565b506001949350505050565b6008546001600160a01b031633146105575760405162461bcd60e51b815260040161054e906117ec565b60405180910390fd5b600c805461ff0019169055565b6008546001600160a01b0316331461058e5760405162461bcd60e51b815260040161054e906117ec565b600880546001600160a01b0319169055565b6008546001600160a01b031633146105ca5760405162461bcd60e51b815260040161054e906117ec565b5f5b6006548110156106c957816001600160a01b0316600682815481106105f3576105f3611823565b5f918252602090912001546001600160a01b0316036106b7576006805461061c9060019061184b565b8154811061062c5761062c611823565b5f91825260209091200154600680546001600160a01b03909216918390811061065757610657611823565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060068054806106935761069361185e565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b806106c181611872565b9150506105cc565b5050565b606060048054610467906117b4565b5f336104f5818585610aa1565b6008546001600160a01b031633146107135760405162461bcd60e51b815260040161054e906117ec565b600d55565b6008546001600160a01b031633146107425760405162461bcd60e51b815260040161054e906117ec565b600c805460ff19166001179055565b6008546001600160a01b0316331461077b5760405162461bcd60e51b815260040161054e906117ec565b5f805b6006548110156107df576107cb6107c4600683815481106107a1576107a1611823565b5f9182526020808320909101546001600160a01b03168252819052604090205490565b8390610f32565b9150806107d781611872565b91505061077e565b505f5b60065481101561089f575f6006828154811061080057610800611823565b5f9182526020808320909101546001600160a01b0316808352600b90915260409091205490915060ff1615610835575061088d565b6001600160a01b0381165f90815260208190526040812054906108628561085c8885610f44565b90610f4f565b6001600160a01b0384165f9081526009602052604090204290559050610889308483610aa1565b5050505b8061089781611872565b9150506107e2565b505050565b6008546001600160a01b031633146108ce5760405162461bcd60e51b815260040161054e906117ec565b601055565b6008546001600160a01b031633146108fd5760405162461bcd60e51b815260040161054e906117ec565b6001600160a01b0381166109535760405162461bcd60e51b815260206004820152601d60248201527f4e6577206f776e657220697320746865207a65726f2061646472657373000000604482015260640161054e565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661099e5760405163e602df0560e01b81525f600482015260240161054e565b6001600160a01b0382166109c757604051634a1406b160e11b81525f600482015260240161054e565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610a9b5781811015610a8e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161054e565b610a9b8484848403610975565b50505050565b600c5460ff16610b2d576001600160a01b0383165f908152600a602052604090205460ff1680610ae857506001600160a01b0382165f908152600a602052604090205460ff165b610b2d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161054e565b600c54610100900460ff1615610bf2576001600160a01b0382165f908152600b602052604090205460ff1680610ba65750610b7b61271061085c600f54600754610f4490919063ffffffff16565b610ba382610b9d856001600160a01b03165f9081526020819052604090205490565b90610f32565b11155b610bf25760405162461bcd60e51b815260206004820152601a60248201527f45786365656473206d61782077616c6c657420686f6c64696e67000000000000604482015260640161054e565b60115460ff16158015610c3757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b8015610c5b57506001600160a01b0383165f908152600a602052604090205460ff16155b8015610c7f57506001600160a01b0382165f908152600a602052604090205460ff16155b15610ca4576011805460ff19166001179055610c99610f5a565b6011805460ff191690555b60115460ff16155f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811690851614801590610d1b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b6001600160a01b0386165f908152600a602052604090205490915060ff1680610d5b57506001600160a01b0384165f908152600a602052604090205460ff165b80610d635750805b15610d6c575f91505b5f8215610e3b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161480610de457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b15610e1d575f610e0561271061085c600e5488610f4490919063ffffffff16565b601254909250829150610e189082610f32565b601255505b8015610e2e57610e2e86308361119e565b610e388482611374565b93505b8180610e7857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b15610f0b576001600160a01b0386165f90815260096020526040902054610ea19061025861188a565b421015610f0b5760405162461bcd60e51b815260206004820152603260248201527f5472616e73666572206c6f636b656420666f72203130206d696e757465732061604482015271667465722050726f766964657244726f707360701b606482015260840161054e565b610f15868561137f565b610f1f858561155e565b610f2a86868661119e565b505050505050565b5f610f3d828461188a565b9392505050565b5f610f3d828461189d565b5f610f3d82846118b4565b601280545f909155610f8d307f000000000000000000000000000000000000000000000000000000000000000083610975565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610fc057610fc0611823565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561103c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106091906118d3565b8160018151811061107357611073611823565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac947906110d79085905f908690309042906004016118ee565b5f604051808303815f87803b1580156110ee575f80fd5b505af1158015611100573d5f803e3d5ffd5b50506005546040514793505f92506001600160a01b039091169083908381818185875af1925050503d805f8114611152576040519150601f19603f3d011682016040523d82523d5f602084013e611157565b606091505b5050905080610a9b5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161054e565b6001600160a01b0383166112025760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161054e565b6001600160a01b0382166112645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161054e565b6001600160a01b0383165f90815260208190526040902054818110156112db5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161054e565b6112e5828261184b565b6001600160a01b038086165f90815260208190526040808220939093559085168152908120805484929061131a90849061188a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161136691815260200190565b60405180910390a350505050565b5f610f3d828461184b565b6001600160a01b0382165f908152600b602052604090205460ff16156113a3575050565b5f805b60065481101561140157836001600160a01b0316600682815481106113cd576113cd611823565b5f918252602090912001546001600160a01b0316036113ef5760019150611401565b806113f981611872565b9150506113a6565b50801561089f575f6114318361142b866001600160a01b03165f9081526020819052604090205490565b90611374565b905061145061271061085c600d54600754610f4490919063ffffffff16565b811015610a9b575f5b60065481101561155757846001600160a01b03166006828154811061148057611480611823565b5f918252602090912001546001600160a01b03160361154557600680546114a99060019061184b565b815481106114b9576114b9611823565b5f91825260209091200154600680546001600160a01b0390921691839081106114e4576114e4611823565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060068054806115205761152061185e565b5f8281526020902081015f1990810180546001600160a01b0319169055019055611557565b8061154f81611872565b915050611459565b5050505050565b6001600160a01b0382165f908152600b602052604090205460ff1615611582575050565b5f805b6006548110156115e057836001600160a01b0316600682815481106115ac576115ac611823565b5f918252602090912001546001600160a01b0316036115ce57600191506115e0565b806115d881611872565b915050611585565b508015801561162b575061160761271061085c600d54600754610f4490919063ffffffff16565b61162983610b9d866001600160a01b03165f9081526020819052604090205490565b115b1561089f57600680546001810182555f919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0385166001600160a01b0319909116179055505050565b5f6020808352835180828501525f5b818110156116ac57858101830151858201604001528201611690565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116e0575f80fd5b50565b5f80604083850312156116f4575f80fd5b82356116ff816116cc565b946020939093013593505050565b5f805f6060848603121561171f575f80fd5b833561172a816116cc565b9250602084013561173a816116cc565b929592945050506040919091013590565b5f6020828403121561175b575f80fd5b8135610f3d816116cc565b5f60208284031215611776575f80fd5b5035919050565b5f806040838503121561178e575f80fd5b8235611799816116cc565b915060208301356117a9816116cc565b809150509250929050565b600181811c908216806117c857607f821691505b6020821081036117e657634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156104fb576104fb611837565b634e487b7160e01b5f52603160045260245ffd5b5f6001820161188357611883611837565b5060010190565b808201808211156104fb576104fb611837565b80820281158282048414176104fb576104fb611837565b5f826118ce57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156118e3575f80fd5b8151610f3d816116cc565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561193c5784516001600160a01b031683529383019391830191600101611917565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220d530034d6296427853d3861a713066a6e192653b65fb0873c0d8ee26b466ca0364736f6c63430008140033

Deployed Bytecode

0x608060405260043610610137575f3560e01c80638da5cb5b116100af578063bbc0c7421161006b578063bbc0c7421461038a578063c9567bf9146103a3578063ca1aca34146103b7578063dd62ed3e146103d6578063ddfeddd11461041a578063f2fde38b1461043957005b80638da5cb5b146102de5780638dd42808146102fb57806395d89b411461031a578063a9059cbb1461032e578063ba70baf61461034d578063bb9492271461036b57005b806323b872dd116100fe57806323b872dd14610216578063313ce5671461023557806349bd5a5e1461025057806368e7a4191461028257806370a0823114610296578063715018a6146102ca57005b806306fdde0314610140578063095ea7b31461016a57806312a35e40146101995780631694505e146101bc57806318160ddd1461020257005b3661013e57005b005b34801561014b575f80fd5b50610154610458565b6040516101619190611681565b60405180910390f35b348015610175575f80fd5b506101896101843660046116e3565b6104e8565b6040519015158152602001610161565b3480156101a4575f80fd5b506101ae60125481565b604051908152602001610161565b3480156101c7575f80fd5b507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d5b6040516001600160a01b039091168152602001610161565b34801561020d575f80fd5b506002546101ae565b348015610221575f80fd5b5061018961023036600461170d565b610501565b348015610240575f80fd5b5060405160128152602001610161565b34801561025b575f80fd5b507f000000000000000000000000e579099fbcce000ea99900904b999c116b5fbfbe6101ea565b34801561028d575f80fd5b5061013e610524565b3480156102a1575f80fd5b506101ae6102b036600461174b565b6001600160a01b03165f9081526020819052604090205490565b3480156102d5575f80fd5b5061013e610564565b3480156102e9575f80fd5b506008546001600160a01b03166101ea565b348015610306575f80fd5b5061013e61031536600461174b565b6105a0565b348015610325575f80fd5b506101546106cd565b348015610339575f80fd5b506101896103483660046116e3565b6106dc565b348015610358575f80fd5b50600c5461018990610100900460ff1681565b348015610376575f80fd5b5061013e610385366004611766565b6106e9565b348015610395575f80fd5b50600c546101899060ff1681565b3480156103ae575f80fd5b5061013e610718565b3480156103c2575f80fd5b5061013e6103d1366004611766565b610751565b3480156103e1575f80fd5b506101ae6103f036600461177d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610425575f80fd5b5061013e610434366004611766565b6108a4565b348015610444575f80fd5b5061013e61045336600461174b565b6108d3565b606060038054610467906117b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610493906117b4565b80156104de5780601f106104b5576101008083540402835291602001916104de565b820191905f5260205f20905b8154815290600101906020018083116104c157829003601f168201915b5050505050905090565b5f336104f5818585610975565b60019150505b92915050565b5f3361050e858285610a27565b610519858585610aa1565b506001949350505050565b6008546001600160a01b031633146105575760405162461bcd60e51b815260040161054e906117ec565b60405180910390fd5b600c805461ff0019169055565b6008546001600160a01b0316331461058e5760405162461bcd60e51b815260040161054e906117ec565b600880546001600160a01b0319169055565b6008546001600160a01b031633146105ca5760405162461bcd60e51b815260040161054e906117ec565b5f5b6006548110156106c957816001600160a01b0316600682815481106105f3576105f3611823565b5f918252602090912001546001600160a01b0316036106b7576006805461061c9060019061184b565b8154811061062c5761062c611823565b5f91825260209091200154600680546001600160a01b03909216918390811061065757610657611823565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060068054806106935761069361185e565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b806106c181611872565b9150506105cc565b5050565b606060048054610467906117b4565b5f336104f5818585610aa1565b6008546001600160a01b031633146107135760405162461bcd60e51b815260040161054e906117ec565b600d55565b6008546001600160a01b031633146107425760405162461bcd60e51b815260040161054e906117ec565b600c805460ff19166001179055565b6008546001600160a01b0316331461077b5760405162461bcd60e51b815260040161054e906117ec565b5f805b6006548110156107df576107cb6107c4600683815481106107a1576107a1611823565b5f9182526020808320909101546001600160a01b03168252819052604090205490565b8390610f32565b9150806107d781611872565b91505061077e565b505f5b60065481101561089f575f6006828154811061080057610800611823565b5f9182526020808320909101546001600160a01b0316808352600b90915260409091205490915060ff1615610835575061088d565b6001600160a01b0381165f90815260208190526040812054906108628561085c8885610f44565b90610f4f565b6001600160a01b0384165f9081526009602052604090204290559050610889308483610aa1565b5050505b8061089781611872565b9150506107e2565b505050565b6008546001600160a01b031633146108ce5760405162461bcd60e51b815260040161054e906117ec565b601055565b6008546001600160a01b031633146108fd5760405162461bcd60e51b815260040161054e906117ec565b6001600160a01b0381166109535760405162461bcd60e51b815260206004820152601d60248201527f4e6577206f776e657220697320746865207a65726f2061646472657373000000604482015260640161054e565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661099e5760405163e602df0560e01b81525f600482015260240161054e565b6001600160a01b0382166109c757604051634a1406b160e11b81525f600482015260240161054e565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610a9b5781811015610a8e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161054e565b610a9b8484848403610975565b50505050565b600c5460ff16610b2d576001600160a01b0383165f908152600a602052604090205460ff1680610ae857506001600160a01b0382165f908152600a602052604090205460ff165b610b2d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161054e565b600c54610100900460ff1615610bf2576001600160a01b0382165f908152600b602052604090205460ff1680610ba65750610b7b61271061085c600f54600754610f4490919063ffffffff16565b610ba382610b9d856001600160a01b03165f9081526020819052604090205490565b90610f32565b11155b610bf25760405162461bcd60e51b815260206004820152601a60248201527f45786365656473206d61782077616c6c657420686f6c64696e67000000000000604482015260640161054e565b60115460ff16158015610c3757507f000000000000000000000000e579099fbcce000ea99900904b999c116b5fbfbe6001600160a01b0316836001600160a01b031614155b8015610c5b57506001600160a01b0383165f908152600a602052604090205460ff16155b8015610c7f57506001600160a01b0382165f908152600a602052604090205460ff16155b15610ca4576011805460ff19166001179055610c99610f5a565b6011805460ff191690555b60115460ff16155f7f000000000000000000000000e579099fbcce000ea99900904b999c116b5fbfbe6001600160a01b0390811690851614801590610d1b57507f000000000000000000000000e579099fbcce000ea99900904b999c116b5fbfbe6001600160a01b0316856001600160a01b031614155b6001600160a01b0386165f908152600a602052604090205490915060ff1680610d5b57506001600160a01b0384165f908152600a602052604090205460ff165b80610d635750805b15610d6c575f91505b5f8215610e3b577f000000000000000000000000e579099fbcce000ea99900904b999c116b5fbfbe6001600160a01b0316866001600160a01b03161480610de457507f000000000000000000000000e579099fbcce000ea99900904b999c116b5fbfbe6001600160a01b0316856001600160a01b0316145b15610e1d575f610e0561271061085c600e5488610f4490919063ffffffff16565b601254909250829150610e189082610f32565b601255505b8015610e2e57610e2e86308361119e565b610e388482611374565b93505b8180610e7857507f000000000000000000000000e579099fbcce000ea99900904b999c116b5fbfbe6001600160a01b0316856001600160a01b0316145b15610f0b576001600160a01b0386165f90815260096020526040902054610ea19061025861188a565b421015610f0b5760405162461bcd60e51b815260206004820152603260248201527f5472616e73666572206c6f636b656420666f72203130206d696e757465732061604482015271667465722050726f766964657244726f707360701b606482015260840161054e565b610f15868561137f565b610f1f858561155e565b610f2a86868661119e565b505050505050565b5f610f3d828461188a565b9392505050565b5f610f3d828461189d565b5f610f3d82846118b4565b601280545f909155610f8d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83610975565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610fc057610fc0611823565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561103c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106091906118d3565b8160018151811061107357611073611823565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac947906110d79085905f908690309042906004016118ee565b5f604051808303815f87803b1580156110ee575f80fd5b505af1158015611100573d5f803e3d5ffd5b50506005546040514793505f92506001600160a01b039091169083908381818185875af1925050503d805f8114611152576040519150601f19603f3d011682016040523d82523d5f602084013e611157565b606091505b5050905080610a9b5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161054e565b6001600160a01b0383166112025760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161054e565b6001600160a01b0382166112645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161054e565b6001600160a01b0383165f90815260208190526040902054818110156112db5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161054e565b6112e5828261184b565b6001600160a01b038086165f90815260208190526040808220939093559085168152908120805484929061131a90849061188a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161136691815260200190565b60405180910390a350505050565b5f610f3d828461184b565b6001600160a01b0382165f908152600b602052604090205460ff16156113a3575050565b5f805b60065481101561140157836001600160a01b0316600682815481106113cd576113cd611823565b5f918252602090912001546001600160a01b0316036113ef5760019150611401565b806113f981611872565b9150506113a6565b50801561089f575f6114318361142b866001600160a01b03165f9081526020819052604090205490565b90611374565b905061145061271061085c600d54600754610f4490919063ffffffff16565b811015610a9b575f5b60065481101561155757846001600160a01b03166006828154811061148057611480611823565b5f918252602090912001546001600160a01b03160361154557600680546114a99060019061184b565b815481106114b9576114b9611823565b5f91825260209091200154600680546001600160a01b0390921691839081106114e4576114e4611823565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060068054806115205761152061185e565b5f8281526020902081015f1990810180546001600160a01b0319169055019055611557565b8061154f81611872565b915050611459565b5050505050565b6001600160a01b0382165f908152600b602052604090205460ff1615611582575050565b5f805b6006548110156115e057836001600160a01b0316600682815481106115ac576115ac611823565b5f918252602090912001546001600160a01b0316036115ce57600191506115e0565b806115d881611872565b915050611585565b508015801561162b575061160761271061085c600d54600754610f4490919063ffffffff16565b61162983610b9d866001600160a01b03165f9081526020819052604090205490565b115b1561089f57600680546001810182555f919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0385166001600160a01b0319909116179055505050565b5f6020808352835180828501525f5b818110156116ac57858101830151858201604001528201611690565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116e0575f80fd5b50565b5f80604083850312156116f4575f80fd5b82356116ff816116cc565b946020939093013593505050565b5f805f6060848603121561171f575f80fd5b833561172a816116cc565b9250602084013561173a816116cc565b929592945050506040919091013590565b5f6020828403121561175b575f80fd5b8135610f3d816116cc565b5f60208284031215611776575f80fd5b5035919050565b5f806040838503121561178e575f80fd5b8235611799816116cc565b915060208301356117a9816116cc565b809150509250929050565b600181811c908216806117c857607f821691505b6020821081036117e657634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156104fb576104fb611837565b634e487b7160e01b5f52603160045260245ffd5b5f6001820161188357611883611837565b5060010190565b808201808211156104fb576104fb611837565b80820281158282048414176104fb576104fb611837565b5f826118ce57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156118e3575f80fd5b8151610f3d816116cc565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561193c5784516001600160a01b031683529383019391830191600101611917565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220d530034d6296427853d3861a713066a6e192653b65fb0873c0d8ee26b466ca0364736f6c63430008140033

Deployed Bytecode Sourcemap

6799:9975:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3276:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4272:224;;;;;;;;;;-1:-1:-1;4272:224:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4272:224:0;1023:187:1;7815:29:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;7815:29:0;1215:177:1;16192:107:0;;;;;;;;;;-1:-1:-1;16277:13:0;16192:107;;;-1:-1:-1;;;;;1561:32:1;;;1543:51;;1531:2;1516:18;16192:107:0;1397:203:1;3597:108:0;;;;;;;;;;-1:-1:-1;3685:12:0;;3597:108;;4504:292;;;;;;;;;;-1:-1:-1;4504:292:0;;;;;:::i;:::-;;:::i;3496:93::-;;;;;;;;;;-1:-1:-1;3496:93:0;;3579:2;2208:36:1;;2196:2;2181:18;3496:93:0;2066:184:1;16090:94:0;;;;;;;;;;-1:-1:-1;16165:11:0;16090:94;;15978:104;;;;;;;;;;;;;:::i;3713:143::-;;;;;;;;;;-1:-1:-1;3713:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;3830:18:0;3803:7;3830:18;;;;;;;;;;;;3713:143;15701:86;;;;;;;;;;;;;:::i;9119:79::-;;;;;;;;;;-1:-1:-1;9184:6:0;;-1:-1:-1;;;;;9184:6:0;9119:79;;16307:311;;;;;;;;;;-1:-1:-1;16307:311:0;;;;;:::i;:::-;;:::i;3384:104::-;;;;;;;;;;;;;:::i;3864:216::-;;;;;;;;;;-1:-1:-1;3864:216:0;;;;;:::i;:::-;;:::i;7326:42::-;;;;;;;;;;-1:-1:-1;7326:42:0;;;;;;;;;;;15538:155;;;;;;;;;;-1:-1:-1;15538:155:0;;;;;:::i;:::-;;:::i;7294:25::-;;;;;;;;;;-1:-1:-1;7294:25:0;;;;;;;;9809:81;;;;;;;;;;;;;:::i;12780:812::-;;;;;;;;;;-1:-1:-1;12780:812:0;;;;;:::i;:::-;;:::i;4088:176::-;;;;;;;;;;-1:-1:-1;4088:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;4229:18:0;;;4202:7;4229:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4088:176;15346:126;;;;;;;;;;-1:-1:-1;15346:126:0;;;;;:::i;:::-;;:::i;15795:175::-;;;;;;;;;;-1:-1:-1;15795:175:0;;;;;:::i;:::-;;:::i;3276:100::-;3330:13;3363:5;3356:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3276:100;:::o;4272:224::-;4379:4;2412:10;4435:31;2412:10;4451:7;4460:5;4435:8;:31::i;:::-;4484:4;4477:11;;;4272:224;;;;;:::o;4504:292::-;4634:4;2412:10;4692:37;4708:4;2412:10;4723:5;4692:15;:37::i;:::-;4740:26;4750:4;4756:2;4760:5;4740:9;:26::i;:::-;-1:-1:-1;4784:4:0;;4504:292;-1:-1:-1;;;;4504:292:0:o;15978:104::-;9184:6;;-1:-1:-1;;;;;9184:6:0;9042:10;:21;9034:57;;;;-1:-1:-1;;;9034:57:0;;;;;;;:::i;:::-;;;;;;;;;16043:23:::1;:31:::0;;-1:-1:-1;;16043:31:0::1;::::0;;15978:104::o;15701:86::-;9184:6;;-1:-1:-1;;;;;9184:6:0;9042:10;:21;9034:57;;;;-1:-1:-1;;;9034:57:0;;;;;;;:::i;:::-;15760:6:::1;:19:::0;;-1:-1:-1;;;;;;15760:19:0::1;::::0;;15701:86::o;16307:311::-;9184:6;;-1:-1:-1;;;;;9184:6:0;9042:10;:21;9034:57;;;;-1:-1:-1;;;9034:57:0;;;;;;;:::i;:::-;16381:9:::1;16376:235;16400:8;:15:::0;16396:19;::::1;16376:235;;;16456:7;-1:-1:-1::0;;;;;16441:22:0::1;:8;16450:1;16441:11;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;16441:11:0::1;:22:::0;16437:163:::1;;16498:8;16507:15:::0;;:19:::1;::::0;16525:1:::1;::::0;16507:19:::1;:::i;:::-;16498:29;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;16484:8:::1;:11:::0;;-1:-1:-1;;;;;16498:29:0;;::::1;::::0;16493:1;;16484:11;::::1;;;;;:::i;:::-;;;;;;;;;:43;;;;;-1:-1:-1::0;;;;;16484:43:0::1;;;;;-1:-1:-1::0;;;;;16484:43:0::1;;;;;;16546:8;:14;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;16546:14:0;;;;;-1:-1:-1;;;;;;16546:14:0::1;::::0;;;;;16376:235:::1;16307:311:::0;:::o;16437:163::-:1;16417:3:::0;::::1;::::0;::::1;:::i;:::-;;;;16376:235;;;;16307:311:::0;:::o;3384:104::-;3440:13;3473:7;3466:14;;;;;:::i;3864:216::-;3967:4;2412:10;4023:27;2412:10;4040:2;4044:5;4023:9;:27::i;15538:155::-;9184:6;;-1:-1:-1;;;;;9184:6:0;9042:10;:21;9034:57;;;;-1:-1:-1;;;9034:57:0;;;;;;;:::i;:::-;15638:20:::1;:47:::0;15538:155::o;9809:81::-;9184:6;;-1:-1:-1;;;;;9184:6:0;9042:10;:21;9034:57;;;;-1:-1:-1;;;9034:57:0;;;;;;;:::i;:::-;9862:13:::1;:20:::0;;-1:-1:-1;;9862:20:0::1;9878:4;9862:20;::::0;;9809:81::o;12780:812::-;9184:6;;-1:-1:-1;;;;;9184:6:0;9042:10;:21;9034:57;;;;-1:-1:-1;;;9034:57:0;;;;;;;:::i;:::-;12873:23:::1;12916:9:::0;12911:134:::1;12935:8;:15:::0;12931:19;::::1;12911:134;;;12990:43;13010:22;13020:8;13029:1;13020:11;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;13020:11:0::1;3830:18:::0;;;;;;;;;;3713:143;13010:22:::1;12990:15:::0;;:19:::1;:43::i;:::-;12972:61:::0;-1:-1:-1;12952:3:0;::::1;::::0;::::1;:::i;:::-;;;;12911:134;;;;13062:9;13057:528;13081:8;:15:::0;13077:19;::::1;13057:528;;;13118:14;13135:8;13144:1;13135:11;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;13135:11:0::1;13165:30:::0;;;:22:::1;:30:::0;;;;;;;;13135:11;;-1:-1:-1;13165:30:0::1;;13161:79;;;13216:8;;;13161:79;-1:-1:-1::0;;;;;3830:18:0;;13256:21:::1;3830:18:::0;;;;;;;;;;;;13342:96:::1;13408:15:::0;13342:43:::1;:24:::0;3830:18;13342:28:::1;:43::i;:::-;:47:::0;::::1;:96::i;:::-;-1:-1:-1::0;;;;;13455:32:0;::::1;;::::0;;;:24:::1;:32;::::0;;;;13490:15:::1;13455:50:::0;;13312:126;-1:-1:-1;13520:53:0::1;13538:4;13480:6:::0;13312:126;13520:9:::1;:53::i;:::-;13103:482;;;13057:528;13098:3:::0;::::1;::::0;::::1;:::i;:::-;;;;13057:528;;;;12862:730;12780:812:::0;:::o;15346:126::-;9184:6;;-1:-1:-1;;;;;9184:6:0;9042:10;:21;9034:57;;;;-1:-1:-1;;;9034:57:0;;;;;;;:::i;:::-;15430:15:::1;:34:::0;15346:126::o;15795:175::-;9184:6;;-1:-1:-1;;;;;9184:6:0;9042:10;:21;9034:57;;;;-1:-1:-1;;;9034:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15878:22:0;::::1;15870:64;;;::::0;-1:-1:-1;;;15870:64:0;;4693:2:1;15870:64:0::1;::::0;::::1;4675:21:1::0;4732:2;4712:18;;;4705:30;4771:31;4751:18;;;4744:59;4820:18;;15870:64:0::1;4491:353:1::0;15870:64:0::1;15945:6;:17:::0;;-1:-1:-1;;;;;;15945:17:0::1;-1:-1:-1::0;;;;;15945:17:0;;;::::1;::::0;;;::::1;::::0;;15795:175::o;5768:420::-;-1:-1:-1;;;;;5899:19:0;;5895:91;;5942:32;;-1:-1:-1;;;5942:32:0;;5971:1;5942:32;;;1543:51:1;1516:18;;5942:32:0;1397:203:1;5895:91:0;-1:-1:-1;;;;;6000:21:0;;5996:92;;6045:31;;-1:-1:-1;;;6045:31:0;;6073:1;6045:31;;;1543:51:1;1516:18;;6045:31:0;1397:203:1;5996:92:0;-1:-1:-1;;;;;6098:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;6149:31;;1361:25:1;;;6149:31:0;;1334:18:1;6149:31:0;;;;;;;5768:420;;;:::o;6196:596::-;-1:-1:-1;;;;;4229:18:0;;;6330:24;4229:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6397:37:0;;6393:392;;6474:5;6455:16;:24;6451:214;;;6507:142;;-1:-1:-1;;;6507:142:0;;-1:-1:-1;;;;;5069:32:1;;6507:142:0;;;5051:51:1;5118:18;;;5111:34;;;5161:18;;;5154:34;;;5024:18;;6507:142:0;4849:345:1;6451:214:0;6708:50;6717:5;6724:7;6752:5;6733:16;:24;6708:8;:50::i;:::-;6319:473;6196:596;;;:::o;9898:1987::-;10034:13;;;;10029:179;;-1:-1:-1;;;;;10090:23:0;;;;;;:17;:23;;;;;;;;;:48;;-1:-1:-1;;;;;;10117:21:0;;;;;;:17;:21;;;;;;;;10090:48;10064:132;;;;-1:-1:-1;;;10064:132:0;;5401:2:1;10064:132:0;;;5383:21:1;5440:2;5420:18;;;5413:30;-1:-1:-1;;;5459:18:1;;;5452:52;5521:18;;10064:132:0;5199:346:1;10064:132:0;10222:23;;;;;;;10218:289;;;-1:-1:-1;;;;;10288:26:0;;;;;;:22;:26;;;;;;;;;:145;;;10388:45;10427:5;10388:34;10405:16;;10388:12;;:16;;:34;;;;:::i;:45::-;10339:24;10357:5;10339:13;10349:2;-1:-1:-1;;;;;3830:18:0;3803:7;3830:18;;;;;;;;;;;;3713:143;10339:13;:17;;:24::i;:::-;:94;;10288:145;10262:233;;;;-1:-1:-1;;;10262:233:0;;5752:2:1;10262:233:0;;;5734:21:1;5791:2;5771:18;;;5764:30;5830:28;5810:18;;;5803:56;5876:18;;10262:233:0;5550:350:1;10262:233:0;10536:7;;;;10535:8;:44;;;;;10568:11;-1:-1:-1;;;;;10560:19:0;:4;-1:-1:-1;;;;;10560:19:0;;;10535:44;:85;;;;-1:-1:-1;;;;;;10597:23:0;;;;;;:17;:23;;;;;;;;10596:24;10535:85;:124;;;;-1:-1:-1;;;;;;10638:21:0;;;;;;:17;:21;;;;;;;;10637:22;10535:124;10517:258;;;10686:7;:14;;-1:-1:-1;;10686:14:0;10696:4;10686:14;;;10715:18;:16;:18::i;:::-;10748:7;:15;;-1:-1:-1;;10748:15:0;;;10517:258;10801:7;;;;10800:8;10785:12;10847:11;-1:-1:-1;;;;;10841:17:0;;;;;;;;;;:40;;;10870:11;-1:-1:-1;;;;;10862:19:0;:4;-1:-1:-1;;;;;10862:19:0;;;10841:40;-1:-1:-1;;;;;10910:23:0;;;;;;:17;:23;;;;;;10819:62;;-1:-1:-1;10910:23:0;;;:48;;-1:-1:-1;;;;;;10937:21:0;;;;;;:17;:21;;;;;;;;10910:48;:66;;;;10962:14;10910:66;10892:138;;;11013:5;11003:15;;10892:138;11040:12;11073:7;11069:437;;;11109:11;-1:-1:-1;;;;;11101:19:0;:4;-1:-1:-1;;;;;11101:19:0;;:40;;;;11130:11;-1:-1:-1;;;;;11124:17:0;:2;-1:-1:-1;;;;;11124:17:0;;11101:40;11097:255;;;11162:17;11182:32;11208:5;11182:21;11192:10;;11182:5;:9;;:21;;;;:::i;:32::-;11285:14;;11162:52;;-1:-1:-1;11162:52:0;;-1:-1:-1;11285:29:0;;11162:52;11285:18;:29::i;:::-;11268:14;:46;-1:-1:-1;11097:255:0;11370:8;;11366:91;;11399:42;11415:4;11429;11436;11399:15;:42::i;:::-;11479:15;:5;11489:4;11479:9;:15::i;:::-;11471:23;;11069:437;11520:14;:35;;;;11544:11;-1:-1:-1;;;;;11538:17:0;:2;-1:-1:-1;;;;;11538:17:0;;11520:35;11516:242;;;-1:-1:-1;;;;;11617:30:0;;;;;;:24;:30;;;;;;:43;;11650:10;11617:43;:::i;:::-;11598:15;:62;;11572:174;;;;-1:-1:-1;;;11572:174:0;;6237:2:1;11572:174:0;;;6219:21:1;6276:2;6256:18;;;6249:30;6315:34;6295:18;;;6288:62;-1:-1:-1;;;6366:18:1;;;6359:48;6424:19;;11572:174:0;6035:414:1;11572:174:0;11768:31;11787:4;11793:5;11768:18;:31::i;:::-;11810:24;11824:2;11828:5;11810:13;:24::i;:::-;11845:32;11861:4;11867:2;11871:5;11845:15;:32::i;:::-;10018:1867;;;9898:1987;;;:::o;239:98::-;297:7;324:5;328:1;324;:5;:::i;:::-;317:12;239:98;-1:-1:-1;;;239:98:0:o;451:::-;509:7;536:5;540:1;536;:5;:::i;557:98::-;615:7;642:5;646:1;642;:5;:::i;14432:853::-;14499:14;;;14479:17;14550:18;;;14609:58;14626:4;14641:13;14499:14;14609:8;:58::i;:::-;14704:16;;;14718:1;14704:16;;;;;;;;14680:21;;14704:16;;;;;;;;;;-1:-1:-1;14704:16:0;14680:40;;14749:4;14731;14736:1;14731:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14731:23:0;;;-1:-1:-1;;;;;14731:23:0;;;;;14775:13;-1:-1:-1;;;;;14775:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14765:4;14770:1;14765:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14765:30:0;;;:7;;;;;;;;;:30;14840:220;;-1:-1:-1;;;14840:220:0;;:13;:64;;;;;;:220;;14919:9;;14943:1;;14987:4;;15014;;15034:15;;14840:220;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15196:3:0;;:31;;15145:21;;-1:-1:-1;15124:18:0;;-1:-1:-1;;;;;;15196:3:0;;;;15145:21;;15124:18;15196:31;15124:18;15196:31;15145:21;15196:3;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15177:50;;;15246:7;15238:39;;;;-1:-1:-1;;;15238:39:0;;8634:2:1;15238:39:0;;;8616:21:1;8673:2;8653:18;;;8646:30;-1:-1:-1;;;8692:18:1;;;8685:49;8751:18;;15238:39:0;8432:343:1;4804:615:0;-1:-1:-1;;;;;4944:20:0;;4936:70;;;;-1:-1:-1;;;4936:70:0;;8982:2:1;4936:70:0;;;8964:21:1;9021:2;9001:18;;;8994:30;9060:34;9040:18;;;9033:62;-1:-1:-1;;;9111:18:1;;;9104:35;9156:19;;4936:70:0;8780:401:1;4936:70:0;-1:-1:-1;;;;;5025:23:0;;5017:71;;;;-1:-1:-1;;;5017:71:0;;9388:2:1;5017:71:0;;;9370:21:1;9427:2;9407:18;;;9400:30;9466:34;9446:18;;;9439:62;-1:-1:-1;;;9517:18:1;;;9510:33;9560:19;;5017:71:0;9186:399:1;5017:71:0;-1:-1:-1;;;;;5125:17:0;;5101:21;5125:17;;;;;;;;;;;5175:23;;;;5153:111;;;;-1:-1:-1;;;5153:111:0;;9792:2:1;5153:111:0;;;9774:21:1;9831:2;9811:18;;;9804:30;9870:34;9850:18;;;9843:62;-1:-1:-1;;;9921:18:1;;;9914:36;9967:19;;5153:111:0;9590:402:1;5153:111:0;5295:22;5311:6;5295:13;:22;:::i;:::-;-1:-1:-1;;;;;5275:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5328:20;;;;;;;;:30;;5352:6;;5275:9;5328:30;;5352:6;;5328:30;:::i;:::-;;;;;;;;5393:9;-1:-1:-1;;;;;5376:35:0;5385:6;-1:-1:-1;;;;;5376:35:0;;5404:6;5376:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;5376:35:0;;;;;;;;4925:494;4804:615;;;:::o;345:98::-;403:7;430:5;434:1;430;:5;:::i;11893:879::-;-1:-1:-1;;;;;11977:31:0;;;;;;:22;:31;;;;;;;;11973:70;;;11893:879;;:::o;11973:70::-;12053:18;12095:9;12090:179;12114:8;:15;12110:19;;12090:179;;;12170:7;-1:-1:-1;;;;;12155:22:0;:8;12164:1;12155:11;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;12155:11:0;:22;12151:107;;12214:4;12198:20;;12237:5;;12151:107;12131:3;;;;:::i;:::-;;;;12090:179;;;;12285:13;12281:484;;;12315:12;12330:30;12353:6;12330:18;12340:7;-1:-1:-1;;;;;3830:18:0;3803:7;3830:18;;;;;;;;;;;;3713:143;12330:18;:22;;:30::i;:::-;12315:45;;12386:49;12429:5;12386:38;12403:20;;12386:12;;:16;;:38;;;;:::i;:49::-;12379:4;:56;12375:379;;;12461:9;12456:283;12480:8;:15;12476:19;;12456:283;;;12544:7;-1:-1:-1;;;;;12529:22:0;:8;12538:1;12529:11;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;12529:11:0;:22;12525:195;;12594:8;12603:15;;:19;;12621:1;;12603:19;:::i;:::-;12594:29;;;;;;;;:::i;:::-;;;;;;;;;;;12580:8;:11;;-1:-1:-1;;;;;12594:29:0;;;;12589:1;;12580:11;;;;;;:::i;:::-;;;;;;;;;:43;;;;;-1:-1:-1;;;;;12580:43:0;;;;;-1:-1:-1;;;;;12580:43:0;;;;;;12650:8;:14;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;12650:14:0;;;;;-1:-1:-1;;;;;;12650:14:0;;;;;;12691:5;;12525:195;12497:3;;;;:::i;:::-;;;;12456:283;;;;12300:465;11962:810;11893:879;;:::o;9206:595::-;-1:-1:-1;;;;;9285:31:0;;;;;;:22;:31;;;;;;;;9281:70;;;9206:595;;:::o;9281:70::-;9361:18;9403:9;9398:179;9422:8;:15;9418:19;;9398:179;;;9478:7;-1:-1:-1;;;;;9463:22:0;:8;9472:1;9463:11;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;9463:11:0;:22;9459:107;;9522:4;9506:20;;9545:5;;9459:107;9439:3;;;;:::i;:::-;;;;9398:179;;;;9608:13;9607:14;:126;;;;;9684:49;9727:5;9684:38;9701:20;;9684:12;;:16;;:38;;;;:::i;:49::-;9638:30;9661:6;9638:18;9648:7;-1:-1:-1;;;;;3830:18:0;3803:7;3830:18;;;;;;;;;;;;3713:143;9638:30;:95;9607:126;9589:205;;;9760:8;:22;;;;;;;-1:-1:-1;9760:22:0;;;;;;;;-1:-1:-1;;;;;9760:22:0;;-1:-1:-1;;;;;;9760:22:0;;;;;;9270:531;9206:595;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1605:456::-;1682:6;1690;1698;1751:2;1739:9;1730:7;1726:23;1722:32;1719:52;;;1767:1;1764;1757:12;1719:52;1806:9;1793:23;1825:31;1850:5;1825:31;:::i;:::-;1875:5;-1:-1:-1;1932:2:1;1917:18;;1904:32;1945:33;1904:32;1945:33;:::i;:::-;1605:456;;1997:7;;-1:-1:-1;;;2051:2:1;2036:18;;;;2023:32;;1605:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2507:180::-;2566:6;2619:2;2607:9;2598:7;2594:23;2590:32;2587:52;;;2635:1;2632;2625:12;2587:52;-1:-1:-1;2658:23:1;;2507:180;-1:-1:-1;2507:180:1:o;2692:388::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;3002:2:1;2987:18;;2974:32;3015:33;2974:32;3015:33;:::i;:::-;3067:7;3057:17;;;2692:388;;;;;:::o;3085:380::-;3164:1;3160:12;;;;3207;;;3228:61;;3282:4;3274:6;3270:17;3260:27;;3228:61;3335:2;3327:6;3324:14;3304:18;3301:38;3298:161;;3381:10;3376:3;3372:20;3369:1;3362:31;3416:4;3413:1;3406:15;3444:4;3441:1;3434:15;3298:161;;3085:380;;;:::o;3470:347::-;3672:2;3654:21;;;3711:2;3691:18;;;3684:30;3750:25;3745:2;3730:18;;3723:53;3808:2;3793:18;;3470:347::o;3822:127::-;3883:10;3878:3;3874:20;3871:1;3864:31;3914:4;3911:1;3904:15;3938:4;3935:1;3928:15;3954:127;4015:10;4010:3;4006:20;4003:1;3996:31;4046:4;4043:1;4036:15;4070:4;4067:1;4060:15;4086:128;4153:9;;;4174:11;;;4171:37;;;4188:18;;:::i;4219:127::-;4280:10;4275:3;4271:20;4268:1;4261:31;4311:4;4308:1;4301:15;4335:4;4332:1;4325:15;4351:135;4390:3;4411:17;;;4408:43;;4431:18;;:::i;:::-;-1:-1:-1;4478:1:1;4467:13;;4351:135::o;5905:125::-;5970:9;;;5991:10;;;5988:36;;;6004:18;;:::i;6454:168::-;6527:9;;;6558;;6575:15;;;6569:22;;6555:37;6545:71;;6596:18;;:::i;6627:217::-;6667:1;6693;6683:132;;6737:10;6732:3;6728:20;6725:1;6718:31;6772:4;6769:1;6762:15;6800:4;6797:1;6790:15;6683:132;-1:-1:-1;6829:9:1;;6627:217::o;6981:251::-;7051:6;7104:2;7092:9;7083:7;7079:23;7075:32;7072:52;;;7120:1;7117;7110:12;7072:52;7152:9;7146:16;7171:31;7196:5;7171:31;:::i;7237:980::-;7499:4;7547:3;7536:9;7532:19;7578:6;7567:9;7560:25;7604:2;7642:6;7637:2;7626:9;7622:18;7615:34;7685:3;7680:2;7669:9;7665:18;7658:31;7709:6;7744;7738:13;7775:6;7767;7760:22;7813:3;7802:9;7798:19;7791:26;;7852:2;7844:6;7840:15;7826:29;;7873:1;7883:195;7897:6;7894:1;7891:13;7883:195;;;7962:13;;-1:-1:-1;;;;;7958:39:1;7946:52;;8053:15;;;;8018:12;;;;7994:1;7912:9;7883:195;;;-1:-1:-1;;;;;;;8134:32:1;;;;8129:2;8114:18;;8107:60;-1:-1:-1;;;8198:3:1;8183:19;8176:35;8095:3;7237:980;-1:-1:-1;;;7237:980:1:o

Swarm Source

ipfs://d530034d6296427853d3861a713066a6e192653b65fb0873c0d8ee26b466ca03

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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