ETH Price: $2,729.40 (-6.73%)
 

Overview

Max Total Supply

120,000,000 ETH2.0

Holders

26

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ETH2

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-07-11
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

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

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

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

    function WETH() external pure returns (address);

    function factory() external pure returns (address);

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

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

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);

    constructor(address creatorOwner) {
        _owner = creatorOwner;
    }

    modifier onlyOwner() {
        require(msg.sender == _owner, "Only owner can call this");
        _;
    }

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

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

contract ETH2 is IERC20, Auth {
    using SafeMath for uint256;
    string private constant _name = "ETH2.0";
    string private constant _symbol = "ETH2.0";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 120_000_000 * (10**_decimals);

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint32 private buyTaxValue = 1000;
    uint32 private sellTaxValue = 1000;

    uint256 public maxWalletAmount;

    address payable private constant _walletMarketing =
        payable(0x098f5e601c2bE709925B2a23c6D8DB9D11790340);
    uint256 private constant _taxSwapMin = _totalSupply / 1000;
    uint256 private constant _taxSwapMax = _totalSupply / 200;

    mapping(address => bool) private _noFees;

    uint256 private startBlock;
    mapping(address => bool) private _isBot;

    address private constant _swapRouterAddress =
        address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    IUniswapV2Router02 private _primarySwapRouter =
        IUniswapV2Router02(_swapRouterAddress);

    address public _primaryLP;
    mapping(address => bool) public _isLP;

    bool public autoTrading = false;
    bool public _tradingOpen;

    bool private _inTaxSwap = false;
    modifier lockTaxSwap() {
        _inTaxSwap = true;
        _;
        _inTaxSwap = false;
    }

    constructor() Auth(msg.sender) {
        address receiver = address(msg.sender);
        _balances[receiver] = _totalSupply;
        maxWalletAmount = (_totalSupply * 11) / 1000;
        emit Transfer(address(0), receiver, _balances[receiver]);

        _noFees[receiver] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;

        address tempLP = IUniswapV2Factory(_primarySwapRouter.factory())
            .createPair(address(this), _primarySwapRouter.WETH());
        _primaryLP = tempLP;
        _isLP[tempLP] = true;
    }

    receive() external payable {}

    function totalSupply() external pure override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        require(_checkTradingOpen(msg.sender, recipient), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        require(_checkTradingOpen(sender, recipient), "Trading not open");
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _approveRouter(uint256 _tokenAmount) internal {
        if (_allowances[address(this)][_swapRouterAddress] < _tokenAmount) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addPair(address _lp) external onlyOwner {
        _isLP[_lp] = true;
    }

    function removePair(address _lp) external onlyOwner {
        _isLP[_lp] = false;
    }

    function startTrade() internal {
        _tradingOpen = true;
        startBlock = block.number;
    }

    function enableAutoTrading(bool _able) external onlyOwner {
        // if you want to start trading by adding liquidity
        //  After using Create Main Pair and enable

        //  if you want to start trading by ...
        //  Enable after adding liquidity
        autoTrading = _able;
    }

    function startTradeManual() external onlyOwner {
        require(!_tradingOpen, "Trading Already Opened");
        _tradingOpen = true;
        startBlock = block.number;
    }

    function multiNoFee(address[] calldata noFeeList, bool isNoFee)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < noFeeList.length; i++) {
            _noFees[noFeeList[i]] = isNoFee;
        }
    }

    function multiBcList(address[] calldata bcList, bool isBlack)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < bcList.length; i++) {
            _isBot[bcList[i]] = isBlack;
        }
    }

    function setMaxWallet(uint256 _max) external onlyOwner {
        maxWalletAmount = _max;
    }

    function checkAmount(
        address from,
        address to,
        uint256 amount
    ) internal view returns (bool) {
        if (_noFees[from] || _noFees[to]) return true;

        if (_isLP[to]) {
            if (amount > maxWalletAmount) return false;
            return true;
        } else {
            if (amount + balanceOf(to) > maxWalletAmount) return false;
            return true;
        }
    }

    bool swapAndLiquifyEnable = true;

    function setSwapAndLiquifyEnable(bool _able) external onlyOwner {
        swapAndLiquifyEnable = _able;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        require(!_checkBot(sender), "Bot");
        require(checkAmount(sender, recipient, amount), "Amount Exceeds Max");

        if (!_inTaxSwap && _isLP[recipient] && swapAndLiquifyEnable) {
            _swapTaxAndLiquify();
        }

        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;

        _balances[sender] -= amount;
        if (_taxAmount > 0) {
            //  AntiBot
            if (_isLP[sender])
                if (startBlock + 2 > block.number) {
                    _isBot[recipient] = true;
                }

            _balances[address(this)] += _taxAmount;
            emit Transfer(sender, address(this), _taxAmount);
        }
        _balances[recipient] += _transferAmount;
        emit Transfer(sender, recipient, _transferAmount);
        return true;
    }

    function _checkBot(address bot) public view returns (bool) {
        if (_isLP[bot] || bot == address(this) || _noFees[bot]) return false;
        //Vitalik is a bot
        if (bot == address(0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B))
            return true;
        return _isBot[bot];
    }

    function _checkTradingOpen(address sender, address recipient)
        private
        returns (bool)
    {
        bool checkResult = false;
        if (_tradingOpen) {
            checkResult = true;
        } else {
            //Trading is not opened here
            if (
                (_isLP[sender] && _noFees[recipient] && autoTrading) ||
                (_isLP[recipient] && _noFees[sender] && autoTrading)
            ) {
                startTrade();
                checkResult = true;
            }

            if (_noFees[sender]) {
                checkResult = true;
            }
        }
        return checkResult;
    }

    function tax()
        internal
        view
        returns (
            uint32 buytaxNumerator,
            uint32 selltaxNumerator,
            uint32 taxDenominator
        )
    {
        (uint32 buynumerator, uint32 sellnumerator, uint32 denominator) = (
            buyTaxValue,
            sellTaxValue,
            100_000
        );
        return (buynumerator, sellnumerator, denominator);
    }

    function changeTaxValue(uint32 _buyTaxValue, uint32 _sellTaxValue)
        external
        onlyOwner
    {
        require(_buyTaxValue <= 30000, "Fee Too High");
        require(_sellTaxValue <= 30000, "Fee Too High");
        buyTaxValue = _buyTaxValue;
        sellTaxValue = _sellTaxValue;
    }

    function _calculateTax(
        address sender,
        address recipient,
        uint256 amount
    ) internal view returns (uint256) {
        uint256 taxAmount;

        if (_tradingOpen && !_noFees[sender] && !_noFees[recipient]) {
            (
                uint32 buynumerator,
                uint32 sellnumerator,
                uint32 denominator
            ) = tax();
            if (_isLP[sender])
                taxAmount = (amount * buynumerator) / denominator;
            if (_isLP[recipient])
                taxAmount = (amount * sellnumerator) / denominator;
        }

        return taxAmount;
    }

    function marketingMultisig() external pure returns (address) {
        return _walletMarketing;
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = balanceOf(address(this));

        if (_taxTokensAvailable >= _taxSwapMin && _tradingOpen) {
            if (_taxTokensAvailable >= _taxSwapMax) {
                _taxTokensAvailable = _taxSwapMax;
            }

            uint256 _tokensToSwap = _taxTokensAvailable;
            if (_tokensToSwap > 10**_decimals) {
                _swapTaxTokensForEth(_tokensToSwap);
            }
            uint256 _contractETHBalance = address(this).balance;
            if (_contractETHBalance > 0) {
                (bool sent, bytes memory data) = _walletMarketing.call{
                    value: _contractETHBalance
                }("");
            }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _primarySwapRouter.WETH();
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function emergencyWithdraw(address _token, address to) external onlyOwner {
        IERC20 tempToken = IERC20(_token);
        uint256 tempBal = tempToken.balanceOf(address(this));
        tempToken.transfer(to, tempBal);
    }
}

Contract Security Audit

Contract ABI

[{"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":"address","name":"_owner","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":[{"internalType":"address","name":"bot","type":"address"}],"name":"_checkBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_primaryLP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lp","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[],"name":"autoTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_buyTaxValue","type":"uint32"},{"internalType":"uint32","name":"_sellTaxValue","type":"uint32"}],"name":"changeTaxValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_able","type":"bool"}],"name":"enableAutoTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingMultisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bcList","type":"address[]"},{"internalType":"bool","name":"isBlack","type":"bool"}],"name":"multiBcList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"noFeeList","type":"address[]"},{"internalType":"bool","name":"isNoFee","type":"bool"}],"name":"multiNoFee","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":"_lp","type":"address"}],"name":"removePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_max","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_able","type":"bool"}],"name":"setSwapAndLiquifyEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeManual","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":[{"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"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546503e8000003e86001600160401b0319909116179055600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600b805463ffff00ff191663010000001790553480156200006457600080fd5b50600080546001600160a01b03191633908117909155620000886009600a62000495565b62000098906307270e00620004ad565b6001600160a01b0382166000908152600160205260409020556103e8620000c26009600a62000495565b620000d2906307270e00620004ad565b620000df90600b620004ad565b620000eb9190620004c7565b6004556001600160a01b03811660008181526001602090815260408083205490519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0381811660009081526005602090815260408083208054600160ff19918216811790925530855282852080548216831790557f2aa6bd49e110bc3c9927fd8453b20ca2aa4c5400ea7e9b290e34ead28d6dee85805482168317905573098f5e601c2be709925b2a23c6d8db9d1179034085527fd376102321347e0437342b3badbf8cb27bfdd93cf3797e4c5ec34cf2ed64aea180549091169091179055600854815163c45a015560e01b815291519394169263c45a0155926004808401939192918290030181865afa1580156200021c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002429190620004ea565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cb9190620004ea565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033f9190620004ea565b600980546001600160a01b039092166001600160a01b0319909216821790556000908152600a60205260409020805460ff1916600117905550620005159050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003d7578160001904821115620003bb57620003bb62000380565b80851615620003c957918102915b93841c93908002906200039b565b509250929050565b600082620003f0575060016200048f565b81620003ff575060006200048f565b8160018114620004185760028114620004235762000443565b60019150506200048f565b60ff84111562000437576200043762000380565b50506001821b6200048f565b5060208310610133831016604e8410600b841016171562000468575081810a6200048f565b62000474838362000396565b80600019048211156200048b576200048b62000380565b0290505b92915050565b6000620004a660ff841683620003df565b9392505050565b80820281158282048414176200048f576200048f62000380565b600082620004e557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620004fd57600080fd5b81516001600160a01b0381168114620004a657600080fd5b611b8d80620005256000396000f3fe6080604052600436106101bb5760003560e01c8063a9059cbb116100ec578063cd52c7011161008a578063dd62ed3e11610064578063dd62ed3e146104f4578063f47a2c1d1461053a578063f98d6ec614610554578063fbf2bcc71461057457600080fd5b8063cd52c70114610490578063cea8105f146104af578063da2d3d59146104df57600080fd5b8063af6c9c1d116100c6578063af6c9c1d14610410578063bc47bf9314610430578063c2b7bbb614610450578063c95479e71461047057600080fd5b8063a9059cbb146103ba578063aa4bde28146103da578063ae1b675b146103f057600080fd5b80634f2dfa5b1161015957806370a082311161013357806370a0823114610351578063715018a6146103875780638da5cb5b1461039c57806395d89b41146101c757600080fd5b80634f2dfa5b146102f15780635d0044ca146103115780636382d9ad1461033157600080fd5b806318160ddd1161019557806318160ddd1461027057806323b872dd14610293578063313ce567146102b357806341db26a4146102cf57600080fd5b806306fdde03146101c7578063095ea7b3146102055780631046128a1461023557600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b5060408051808201825260068152650455448322e360d41b602082015290516101fc9190611689565b60405180910390f35b34801561021157600080fd5b506102256102203660046116ec565b610594565b60405190151581526020016101fc565b34801561024157600080fd5b5073098f5e601c2be709925b2a23c6d8db9d117903405b6040516001600160a01b0390911681526020016101fc565b34801561027c57600080fd5b50610285610601565b6040519081526020016101fc565b34801561029f57600080fd5b506102256102ae366004611718565b610622565b3480156102bf57600080fd5b50604051600981526020016101fc565b3480156102db57600080fd5b506102ef6102ea366004611767565b610707565b005b3480156102fd57600080fd5b506102ef61030c36600461179d565b610744565b34801561031d57600080fd5b506102ef61032c3660046117d0565b61082c565b34801561033d57600080fd5b506102ef61034c3660046117e9565b61085b565b34801561035d57600080fd5b5061028561036c366004611822565b6001600160a01b031660009081526001602052604090205490565b34801561039357600080fd5b506102ef610970565b3480156103a857600080fd5b506000546001600160a01b0316610258565b3480156103c657600080fd5b506102256103d53660046116ec565b6109df565b3480156103e657600080fd5b5061028560045481565b3480156103fc57600080fd5b50600954610258906001600160a01b031681565b34801561041c57600080fd5b506102ef61042b366004611822565b610a35565b34801561043c57600080fd5b5061022561044b366004611822565b610a80565b34801561045c57600080fd5b506102ef61046b366004611822565b610b2b565b34801561047c57600080fd5b506102ef61048b366004611767565b610b79565b34801561049c57600080fd5b50600b5461022590610100900460ff1681565b3480156104bb57600080fd5b506102256104ca366004611822565b600a6020526000908152604090205460ff1681565b3480156104eb57600080fd5b506102ef610bc1565b34801561050057600080fd5b5061028561050f3660046117e9565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561054657600080fd5b50600b546102259060ff1681565b34801561056057600080fd5b506102ef61056f36600461183f565b610c51565b34801561058057600080fd5b506102ef61058f36600461183f565b610cf2565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105ef9086815260200190565b60405180910390a35060015b92915050565b600061060f6009600a6119bf565b61061d906307270e006119ce565b905090565b600061062e8484610d8d565b6106725760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019146106f2576001600160a01b03841660009081526002602090815260408083203384529091529020546106cd9083906119e5565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6106fd848484610e98565b90505b9392505050565b6000546001600160a01b031633146107315760405162461bcd60e51b8152600401610669906119f8565b600b805460ff1916911515919091179055565b6000546001600160a01b0316331461076e5760405162461bcd60e51b8152600401610669906119f8565b6175308263ffffffff1611156107b55760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40a8dede4090d2ced60a31b6044820152606401610669565b6175308163ffffffff1611156107fc5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40a8dede4090d2ced60a31b6044820152606401610669565b6003805463ffffffff9283166401000000000267ffffffffffffffff199091169290931691909117919091179055565b6000546001600160a01b031633146108565760405162461bcd60e51b8152600401610669906119f8565b600455565b6000546001600160a01b031633146108855760405162461bcd60e51b8152600401610669906119f8565b6040516370a0823160e01b815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156108ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f29190611a2f565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509083169063a9059cbb906044016020604051808303816000875af1158015610945573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109699190611a48565b5050505050565b6000546001600160a01b0316331461099a5760405162461bcd60e51b8152600401610669906119f8565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b60006109eb3384610d8d565b610a2a5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610669565b610700338484610e98565b6000546001600160a01b03163314610a5f5760405162461bcd60e51b8152600401610669906119f8565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6001600160a01b0381166000908152600a602052604081205460ff1680610aaf57506001600160a01b03821630145b80610ad257506001600160a01b03821660009081526005602052604090205460ff165b15610adf57506000919050565b73ab5801a7d398351b8be11c439e05c5b3259aec9a196001600160a01b03831601610b0c57506001919050565b506001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b03163314610b555760405162461bcd60e51b8152600401610669906119f8565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b03163314610ba35760405162461bcd60e51b8152600401610669906119f8565b600b805491151563010000000263ff00000019909216919091179055565b6000546001600160a01b03163314610beb5760405162461bcd60e51b8152600401610669906119f8565b600b54610100900460ff1615610c3c5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c8105b1c9958591e4813dc195b995960521b6044820152606401610669565b600b805461ff00191661010017905543600655565b6000546001600160a01b03163314610c7b5760405162461bcd60e51b8152600401610669906119f8565b60005b82811015610cec578160076000868685818110610c9d57610c9d611a65565b9050602002016020810190610cb29190611822565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610ce481611a7b565b915050610c7e565b50505050565b6000546001600160a01b03163314610d1c5760405162461bcd60e51b8152600401610669906119f8565b60005b82811015610cec578160056000868685818110610d3e57610d3e611a65565b9050602002016020810190610d539190611822565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610d8581611a7b565b915050610d1f565b600b546000908190610100900460ff1615610daa57506001610700565b6001600160a01b0384166000908152600a602052604090205460ff168015610dea57506001600160a01b03831660009081526005602052604090205460ff165b8015610df85750600b5460ff165b80610e4c57506001600160a01b0383166000908152600a602052604090205460ff168015610e3e57506001600160a01b03841660009081526005602052604090205460ff165b8015610e4c5750600b5460ff165b15610e6d57610e69600b805461ff00191661010017905543600655565b5060015b6001600160a01b03841660009081526005602052604090205460ff1615610700575060019392505050565b60006001600160a01b038416610ef05760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000006044820152606401610669565b610ef984610a80565b15610f2c5760405162461bcd60e51b8152602060048201526003602482015262109bdd60ea1b6044820152606401610669565b610f37848484611166565b610f785760405162461bcd60e51b8152602060048201526012602482015271082dadeeadce8408af0c6cacac8e6409ac2f60731b6044820152606401610669565b600b5462010000900460ff16158015610fa957506001600160a01b0383166000908152600a602052604090205460ff165b8015610fbe5750600b546301000000900460ff165b15610fcb57610fcb611221565b6000610fd8858585611374565b90506000610fe682856119e5565b6001600160a01b0387166000908152600160205260408120805492935086929091906110139084906119e5565b909155505081156110de576001600160a01b0386166000908152600a602052604090205460ff16156110795743600654600261104f9190611a94565b1115611079576001600160a01b0385166000908152600760205260409020805460ff191660011790555b3060009081526001602052604081208054849290611098908490611a94565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b03851660009081526001602052604081208054839290611106908490611a94565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161115291815260200190565b60405180910390a350600195945050505050565b6001600160a01b03831660009081526005602052604081205460ff16806111a557506001600160a01b03831660009081526005602052604090205460ff165b156111b257506001610700565b6001600160a01b0383166000908152600a602052604090205460ff16156111ed576004548211156111e557506000610700565b506001610700565b6004546001600160a01b0384166000908152600160205260409020546112139084611a94565b11156111e557506000610700565b600b805462ff00001916620100001790553060009081526001602052604081205490506103e86112536009600a6119bf565b611261906307270e006119ce565b61126b9190611aa7565b81101580156112815750600b54610100900460ff165b156113655760c86112946009600a6119bf565b6112a2906307270e006119ce565b6112ac9190611aa7565b81106112db5760c86112c06009600a6119bf565b6112ce906307270e006119ce565b6112d89190611aa7565b90505b806112e86009600a6119bf565b8111156112f8576112f88161149a565b47801561136257604051600090819073098f5e601c2be709925b2a23c6d8db9d117903409084908381818185875af1925050503d8060008114611357576040519150601f19603f3d011682016040523d82523d6000602084013e61135c565b606091505b50505050505b50505b50600b805462ff000019169055565b600b546000908190610100900460ff1680156113a957506001600160a01b03851660009081526005602052604090205460ff16155b80156113ce57506001600160a01b03841660009081526005602052604090205460ff16155b156106fd5760008060006113f960035463ffffffff808216926401000000009092041690620186a090565b6001600160a01b038b166000908152600a6020526040902054929550909350915060ff1615611448578063ffffffff168363ffffffff168761143b91906119ce565b6114459190611aa7565b93505b6001600160a01b0387166000908152600a602052604090205460ff161561148f578063ffffffff168263ffffffff168761148291906119ce565b61148c9190611aa7565b93505b505050949350505050565b6114a3816115e4565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114d8576114d8611a65565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115559190611ac9565b8160018151811061156857611568611a65565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b815291169063791ac947906115ae908590600090869030904290600401611ae6565b600060405180830381600087803b1580156115c857600080fd5b505af11580156115dc573d6000803e3d6000fd5b505050505050565b306000908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561168657306000818152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b600060208083528351808285015260005b818110156116b65785810183015185820160400152820161169a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461168657600080fd5b600080604083850312156116ff57600080fd5b823561170a816116d7565b946020939093013593505050565b60008060006060848603121561172d57600080fd5b8335611738816116d7565b92506020840135611748816116d7565b929592945050506040919091013590565b801515811461168657600080fd5b60006020828403121561177957600080fd5b813561070081611759565b803563ffffffff8116811461179857600080fd5b919050565b600080604083850312156117b057600080fd5b6117b983611784565b91506117c760208401611784565b90509250929050565b6000602082840312156117e257600080fd5b5035919050565b600080604083850312156117fc57600080fd5b8235611807816116d7565b91506020830135611817816116d7565b809150509250929050565b60006020828403121561183457600080fd5b8135610700816116d7565b60008060006040848603121561185457600080fd5b833567ffffffffffffffff8082111561186c57600080fd5b818601915086601f83011261188057600080fd5b81358181111561188f57600080fd5b8760208260051b85010111156118a457600080fd5b602092830195509350508401356118ba81611759565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156119165781600019048211156118fc576118fc6118c5565b8085161561190957918102915b93841c93908002906118e0565b509250929050565b60008261192d575060016105fb565b8161193a575060006105fb565b8160018114611950576002811461195a57611976565b60019150506105fb565b60ff84111561196b5761196b6118c5565b50506001821b6105fb565b5060208310610133831016604e8410600b8410161715611999575081810a6105fb565b6119a383836118db565b80600019048211156119b7576119b76118c5565b029392505050565b600061070060ff84168361191e565b80820281158282048414176105fb576105fb6118c5565b818103818111156105fb576105fb6118c5565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b600060208284031215611a4157600080fd5b5051919050565b600060208284031215611a5a57600080fd5b815161070081611759565b634e487b7160e01b600052603260045260246000fd5b600060018201611a8d57611a8d6118c5565b5060010190565b808201808211156105fb576105fb6118c5565b600082611ac457634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611adb57600080fd5b8151610700816116d7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b365784516001600160a01b031683529383019391830191600101611b11565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220330a6d3062904e432f45e86443beb6b62ccdd77d0330308f118c3cfef2c5d18764736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c8063a9059cbb116100ec578063cd52c7011161008a578063dd62ed3e11610064578063dd62ed3e146104f4578063f47a2c1d1461053a578063f98d6ec614610554578063fbf2bcc71461057457600080fd5b8063cd52c70114610490578063cea8105f146104af578063da2d3d59146104df57600080fd5b8063af6c9c1d116100c6578063af6c9c1d14610410578063bc47bf9314610430578063c2b7bbb614610450578063c95479e71461047057600080fd5b8063a9059cbb146103ba578063aa4bde28146103da578063ae1b675b146103f057600080fd5b80634f2dfa5b1161015957806370a082311161013357806370a0823114610351578063715018a6146103875780638da5cb5b1461039c57806395d89b41146101c757600080fd5b80634f2dfa5b146102f15780635d0044ca146103115780636382d9ad1461033157600080fd5b806318160ddd1161019557806318160ddd1461027057806323b872dd14610293578063313ce567146102b357806341db26a4146102cf57600080fd5b806306fdde03146101c7578063095ea7b3146102055780631046128a1461023557600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b5060408051808201825260068152650455448322e360d41b602082015290516101fc9190611689565b60405180910390f35b34801561021157600080fd5b506102256102203660046116ec565b610594565b60405190151581526020016101fc565b34801561024157600080fd5b5073098f5e601c2be709925b2a23c6d8db9d117903405b6040516001600160a01b0390911681526020016101fc565b34801561027c57600080fd5b50610285610601565b6040519081526020016101fc565b34801561029f57600080fd5b506102256102ae366004611718565b610622565b3480156102bf57600080fd5b50604051600981526020016101fc565b3480156102db57600080fd5b506102ef6102ea366004611767565b610707565b005b3480156102fd57600080fd5b506102ef61030c36600461179d565b610744565b34801561031d57600080fd5b506102ef61032c3660046117d0565b61082c565b34801561033d57600080fd5b506102ef61034c3660046117e9565b61085b565b34801561035d57600080fd5b5061028561036c366004611822565b6001600160a01b031660009081526001602052604090205490565b34801561039357600080fd5b506102ef610970565b3480156103a857600080fd5b506000546001600160a01b0316610258565b3480156103c657600080fd5b506102256103d53660046116ec565b6109df565b3480156103e657600080fd5b5061028560045481565b3480156103fc57600080fd5b50600954610258906001600160a01b031681565b34801561041c57600080fd5b506102ef61042b366004611822565b610a35565b34801561043c57600080fd5b5061022561044b366004611822565b610a80565b34801561045c57600080fd5b506102ef61046b366004611822565b610b2b565b34801561047c57600080fd5b506102ef61048b366004611767565b610b79565b34801561049c57600080fd5b50600b5461022590610100900460ff1681565b3480156104bb57600080fd5b506102256104ca366004611822565b600a6020526000908152604090205460ff1681565b3480156104eb57600080fd5b506102ef610bc1565b34801561050057600080fd5b5061028561050f3660046117e9565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561054657600080fd5b50600b546102259060ff1681565b34801561056057600080fd5b506102ef61056f36600461183f565b610c51565b34801561058057600080fd5b506102ef61058f36600461183f565b610cf2565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105ef9086815260200190565b60405180910390a35060015b92915050565b600061060f6009600a6119bf565b61061d906307270e006119ce565b905090565b600061062e8484610d8d565b6106725760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019146106f2576001600160a01b03841660009081526002602090815260408083203384529091529020546106cd9083906119e5565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6106fd848484610e98565b90505b9392505050565b6000546001600160a01b031633146107315760405162461bcd60e51b8152600401610669906119f8565b600b805460ff1916911515919091179055565b6000546001600160a01b0316331461076e5760405162461bcd60e51b8152600401610669906119f8565b6175308263ffffffff1611156107b55760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40a8dede4090d2ced60a31b6044820152606401610669565b6175308163ffffffff1611156107fc5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40a8dede4090d2ced60a31b6044820152606401610669565b6003805463ffffffff9283166401000000000267ffffffffffffffff199091169290931691909117919091179055565b6000546001600160a01b031633146108565760405162461bcd60e51b8152600401610669906119f8565b600455565b6000546001600160a01b031633146108855760405162461bcd60e51b8152600401610669906119f8565b6040516370a0823160e01b815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156108ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f29190611a2f565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509083169063a9059cbb906044016020604051808303816000875af1158015610945573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109699190611a48565b5050505050565b6000546001600160a01b0316331461099a5760405162461bcd60e51b8152600401610669906119f8565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b60006109eb3384610d8d565b610a2a5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610669565b610700338484610e98565b6000546001600160a01b03163314610a5f5760405162461bcd60e51b8152600401610669906119f8565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6001600160a01b0381166000908152600a602052604081205460ff1680610aaf57506001600160a01b03821630145b80610ad257506001600160a01b03821660009081526005602052604090205460ff165b15610adf57506000919050565b73ab5801a7d398351b8be11c439e05c5b3259aec9a196001600160a01b03831601610b0c57506001919050565b506001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b03163314610b555760405162461bcd60e51b8152600401610669906119f8565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b03163314610ba35760405162461bcd60e51b8152600401610669906119f8565b600b805491151563010000000263ff00000019909216919091179055565b6000546001600160a01b03163314610beb5760405162461bcd60e51b8152600401610669906119f8565b600b54610100900460ff1615610c3c5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c8105b1c9958591e4813dc195b995960521b6044820152606401610669565b600b805461ff00191661010017905543600655565b6000546001600160a01b03163314610c7b5760405162461bcd60e51b8152600401610669906119f8565b60005b82811015610cec578160076000868685818110610c9d57610c9d611a65565b9050602002016020810190610cb29190611822565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610ce481611a7b565b915050610c7e565b50505050565b6000546001600160a01b03163314610d1c5760405162461bcd60e51b8152600401610669906119f8565b60005b82811015610cec578160056000868685818110610d3e57610d3e611a65565b9050602002016020810190610d539190611822565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610d8581611a7b565b915050610d1f565b600b546000908190610100900460ff1615610daa57506001610700565b6001600160a01b0384166000908152600a602052604090205460ff168015610dea57506001600160a01b03831660009081526005602052604090205460ff165b8015610df85750600b5460ff165b80610e4c57506001600160a01b0383166000908152600a602052604090205460ff168015610e3e57506001600160a01b03841660009081526005602052604090205460ff165b8015610e4c5750600b5460ff165b15610e6d57610e69600b805461ff00191661010017905543600655565b5060015b6001600160a01b03841660009081526005602052604090205460ff1615610700575060019392505050565b60006001600160a01b038416610ef05760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000006044820152606401610669565b610ef984610a80565b15610f2c5760405162461bcd60e51b8152602060048201526003602482015262109bdd60ea1b6044820152606401610669565b610f37848484611166565b610f785760405162461bcd60e51b8152602060048201526012602482015271082dadeeadce8408af0c6cacac8e6409ac2f60731b6044820152606401610669565b600b5462010000900460ff16158015610fa957506001600160a01b0383166000908152600a602052604090205460ff165b8015610fbe5750600b546301000000900460ff165b15610fcb57610fcb611221565b6000610fd8858585611374565b90506000610fe682856119e5565b6001600160a01b0387166000908152600160205260408120805492935086929091906110139084906119e5565b909155505081156110de576001600160a01b0386166000908152600a602052604090205460ff16156110795743600654600261104f9190611a94565b1115611079576001600160a01b0385166000908152600760205260409020805460ff191660011790555b3060009081526001602052604081208054849290611098908490611a94565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b03851660009081526001602052604081208054839290611106908490611a94565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161115291815260200190565b60405180910390a350600195945050505050565b6001600160a01b03831660009081526005602052604081205460ff16806111a557506001600160a01b03831660009081526005602052604090205460ff165b156111b257506001610700565b6001600160a01b0383166000908152600a602052604090205460ff16156111ed576004548211156111e557506000610700565b506001610700565b6004546001600160a01b0384166000908152600160205260409020546112139084611a94565b11156111e557506000610700565b600b805462ff00001916620100001790553060009081526001602052604081205490506103e86112536009600a6119bf565b611261906307270e006119ce565b61126b9190611aa7565b81101580156112815750600b54610100900460ff165b156113655760c86112946009600a6119bf565b6112a2906307270e006119ce565b6112ac9190611aa7565b81106112db5760c86112c06009600a6119bf565b6112ce906307270e006119ce565b6112d89190611aa7565b90505b806112e86009600a6119bf565b8111156112f8576112f88161149a565b47801561136257604051600090819073098f5e601c2be709925b2a23c6d8db9d117903409084908381818185875af1925050503d8060008114611357576040519150601f19603f3d011682016040523d82523d6000602084013e61135c565b606091505b50505050505b50505b50600b805462ff000019169055565b600b546000908190610100900460ff1680156113a957506001600160a01b03851660009081526005602052604090205460ff16155b80156113ce57506001600160a01b03841660009081526005602052604090205460ff16155b156106fd5760008060006113f960035463ffffffff808216926401000000009092041690620186a090565b6001600160a01b038b166000908152600a6020526040902054929550909350915060ff1615611448578063ffffffff168363ffffffff168761143b91906119ce565b6114459190611aa7565b93505b6001600160a01b0387166000908152600a602052604090205460ff161561148f578063ffffffff168263ffffffff168761148291906119ce565b61148c9190611aa7565b93505b505050949350505050565b6114a3816115e4565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114d8576114d8611a65565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115559190611ac9565b8160018151811061156857611568611a65565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b815291169063791ac947906115ae908590600090869030904290600401611ae6565b600060405180830381600087803b1580156115c857600080fd5b505af11580156115dc573d6000803e3d6000fd5b505050505050565b306000908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561168657306000818152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b600060208083528351808285015260005b818110156116b65785810183015185820160400152820161169a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461168657600080fd5b600080604083850312156116ff57600080fd5b823561170a816116d7565b946020939093013593505050565b60008060006060848603121561172d57600080fd5b8335611738816116d7565b92506020840135611748816116d7565b929592945050506040919091013590565b801515811461168657600080fd5b60006020828403121561177957600080fd5b813561070081611759565b803563ffffffff8116811461179857600080fd5b919050565b600080604083850312156117b057600080fd5b6117b983611784565b91506117c760208401611784565b90509250929050565b6000602082840312156117e257600080fd5b5035919050565b600080604083850312156117fc57600080fd5b8235611807816116d7565b91506020830135611817816116d7565b809150509250929050565b60006020828403121561183457600080fd5b8135610700816116d7565b60008060006040848603121561185457600080fd5b833567ffffffffffffffff8082111561186c57600080fd5b818601915086601f83011261188057600080fd5b81358181111561188f57600080fd5b8760208260051b85010111156118a457600080fd5b602092830195509350508401356118ba81611759565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156119165781600019048211156118fc576118fc6118c5565b8085161561190957918102915b93841c93908002906118e0565b509250929050565b60008261192d575060016105fb565b8161193a575060006105fb565b8160018114611950576002811461195a57611976565b60019150506105fb565b60ff84111561196b5761196b6118c5565b50506001821b6105fb565b5060208310610133831016604e8410600b8410161715611999575081810a6105fb565b6119a383836118db565b80600019048211156119b7576119b76118c5565b029392505050565b600061070060ff84168361191e565b80820281158282048414176105fb576105fb6118c5565b818103818111156105fb576105fb6118c5565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b600060208284031215611a4157600080fd5b5051919050565b600060208284031215611a5a57600080fd5b815161070081611759565b634e487b7160e01b600052603260045260246000fd5b600060018201611a8d57611a8d6118c5565b5060010190565b808201808211156105fb576105fb6118c5565b600082611ac457634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611adb57600080fd5b8151610700816116d7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b365784516001600160a01b031683529383019391830191600101611b11565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220330a6d3062904e432f45e86443beb6b62ccdd77d0330308f118c3cfef2c5d18764736f6c63430008130033

Deployed Bytecode Sourcemap

3817:11230:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6236:94;;;;;;;;;;-1:-1:-1;6317:5:0;;;;;;;;;;;-1:-1:-1;;;6317:5:0;;;;6236:94;;;;6317:5;6236:94;:::i;:::-;;;;;;;;6661:248;;;;;;;;;;-1:-1:-1;6661:248:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6661:248:0;1023:187:1;13466:103:0;;;;;;;;;;-1:-1:-1;4423:42:0;13466:103;;;-1:-1:-1;;;;;1379:32:1;;;1361:51;;1349:2;1334:18;13466:103:0;1215:203:1;5918:102:0;;;;;;;;;;;;;:::i;:::-;;;1569:25:1;;;1557:2;1542:18;5918:102:0;1423:177:1;7193:485:0;;;;;;;;;;-1:-1:-1;7193:485:0;;;;;:::i;:::-;;:::i;6028:94::-;;;;;;;;;;-1:-1:-1;6028:94:0;;4018:1;2208:36:1;;2196:2;2181:18;6028:94:0;2066:184:1;8312:304:0;;;;;;;;;;-1:-1:-1;8312:304:0;;;;;:::i;:::-;;:::i;:::-;;12496:308;;;;;;;;;;-1:-1:-1;12496:308:0;;;;;:::i;:::-;;:::i;9277:96::-;;;;;;;;;;-1:-1:-1;9277:96:0;;;;;:::i;:::-;;:::i;14813:231::-;;;;;;;;;;-1:-1:-1;14813:231:0;;;;;:::i;:::-;;:::i;6338:119::-;;;;;;;;;;-1:-1:-1;6338:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6431:18:0;6404:7;6431:18;;;:9;:18;;;;;;;6338:119;3676:134;;;;;;;;;;;;;:::i;3589:79::-;;;;;;;;;;-1:-1:-1;3627:7:0;3654:6;-1:-1:-1;;;;;3654:6:0;3589:79;;6917:268;;;;;;;;;;-1:-1:-1;6917:268:0;;;;;:::i;:::-;;:::i;4315:30::-;;;;;;;;;;;;;;;;4953:25;;;;;;;;;;-1:-1:-1;4953:25:0;;;;-1:-1:-1;;;;;4953:25:0;;;8102:89;;;;;;;;;;-1:-1:-1;8102:89:0;;;;;:::i;:::-;;:::i;11083:302::-;;;;;;;;;;-1:-1:-1;11083:302:0;;;;;:::i;:::-;;:::i;8009:85::-;;;;;;;;;;-1:-1:-1;8009:85:0;;;;;:::i;:::-;;:::i;9859:111::-;;;;;;;;;;-1:-1:-1;9859:111:0;;;;;:::i;:::-;;:::i;5069:24::-;;;;;;;;;;-1:-1:-1;5069:24:0;;;;;;;;;;;4985:37;;;;;;;;;;-1:-1:-1;4985:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8624:180;;;;;;;;;;;;;:::i;6465:188::-;;;;;;;;;;-1:-1:-1;6465:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;6617:19:0;;;6585:7;6617:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6465:188;5031:31;;;;;;;;;;-1:-1:-1;5031:31:0;;;;;;;;9049:220;;;;;;;;;;-1:-1:-1;9049:220:0;;;;;:::i;:::-;;:::i;8812:229::-;;;;;;;;;;-1:-1:-1;8812:229:0;;;;;:::i;:::-;;:::i;6661:248::-;6797:10;6763:4;6785:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6785:32:0;;;;;;;;;;:41;;;6842:37;6763:4;;6785:32;;6842:37;;;;6820:6;1569:25:1;;1557:2;1542:18;;1423:177;6842:37:0;;;;;;;;-1:-1:-1;6897:4:0;6661:248;;;;;:::o;5918:102::-;5973:7;4081:13;4018:1;4081:2;:13;:::i;:::-;4066:29;;:11;:29;:::i;:::-;5993:19;;5918:102;:::o;7193:485::-;7327:4;7352:36;7370:6;7378:9;7352:17;:36::i;:::-;7344:65;;;;-1:-1:-1;;;7344:65:0;;6528:2:1;7344:65:0;;;6510:21:1;6567:2;6547:18;;;6540:30;-1:-1:-1;;;6586:18:1;;;6579:46;6642:18;;7344:65:0;;;;;;;;;-1:-1:-1;;;;;7424:19:0;;;;;;:11;:19;;;;;;;;7444:10;7424:31;;;;;;;;-1:-1:-1;;7424:52:0;7420:193;;-1:-1:-1;;;;;7544:19:0;;;;;;:11;:19;;;;;;;;7564:10;7544:31;;;;;;;;:57;;7595:6;;7544:57;:::i;:::-;-1:-1:-1;;;;;7493:19:0;;;;;;:11;:19;;;;;;;;7513:10;7493:31;;;;;;;:108;7420:193;7630:40;7644:6;7652:9;7663:6;7630:13;:40::i;:::-;7623:47;;7193:485;;;;;;:::o;8312:304::-;3526:6;;-1:-1:-1;;;;;3526:6:0;3512:10;:20;3504:57;;;;-1:-1:-1;;;3504:57:0;;;;;;;:::i;:::-;8589:11:::1;:19:::0;;-1:-1:-1;;8589:19:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8312:304::o;12496:308::-;3526:6;;-1:-1:-1;;;;;3526:6:0;3512:10;:20;3504:57;;;;-1:-1:-1;;;3504:57:0;;;;;;;:::i;:::-;12640:5:::1;12624:12;:21;;;;12616:46;;;::::0;-1:-1:-1;;;12616:46:0;;7359:2:1;12616:46:0::1;::::0;::::1;7341:21:1::0;7398:2;7378:18;;;7371:30;-1:-1:-1;;;7417:18:1;;;7410:42;7469:18;;12616:46:0::1;7157:336:1::0;12616:46:0::1;12698:5;12681:13;:22;;;;12673:47;;;::::0;-1:-1:-1;;;12673:47:0;;7359:2:1;12673:47:0::1;::::0;::::1;7341:21:1::0;7398:2;7378:18;;;7371:30;-1:-1:-1;;;7417:18:1;;;7410:42;7469:18;;12673:47:0::1;7157:336:1::0;12673:47:0::1;12731:11;:26:::0;;::::1;12768:28:::0;;::::1;::::0;::::1;-1:-1:-1::0;;12768:28:0;;;12731:26;;;::::1;12768:28:::0;;;;;;;::::1;::::0;;12496:308::o;9277:96::-;3526:6;;-1:-1:-1;;;;;3526:6:0;3512:10;:20;3504:57;;;;-1:-1:-1;;;3504:57:0;;;;;;;:::i;:::-;9343:15:::1;:22:::0;9277:96::o;14813:231::-;3526:6;;-1:-1:-1;;;;;3526:6:0;3512:10;:20;3504:57;;;;-1:-1:-1;;;3504:57:0;;;;;;;:::i;:::-;14960:34:::1;::::0;-1:-1:-1;;;14960:34:0;;14988:4:::1;14960:34;::::0;::::1;1361:51:1::0;14924:6:0;;14898:16:::1;::::0;-1:-1:-1;;;;;14960:19:0;::::1;::::0;::::1;::::0;1334:18:1;;14960:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15005:31;::::0;-1:-1:-1;;;15005:31:0;;-1:-1:-1;;;;;7879:32:1;;;15005:31:0::1;::::0;::::1;7861:51:1::0;7928:18;;;7921:34;;;14942:52:0;;-1:-1:-1;15005:18:0;;::::1;::::0;::::1;::::0;7834::1;;15005:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14887:157;;14813:231:::0;;:::o;3676:134::-;3526:6;;-1:-1:-1;;;;;3526:6:0;3512:10;:20;3504:57;;;;-1:-1:-1;;;3504:57:0;;;;;;;:::i;:::-;3752:1:::1;3735:19:::0;;-1:-1:-1;;;;;;3735:19:0::1;::::0;;3770:32:::1;::::0;1361:51:1;;;3770:32:0::1;::::0;1349:2:1;1334:18;3770:32:0::1;;;;;;;3676:134::o:0;6917:268::-;7024:4;7054:40;7072:10;7084:9;7054:17;:40::i;:::-;7046:69;;;;-1:-1:-1;;;7046:69:0;;6528:2:1;7046:69:0;;;6510:21:1;6567:2;6547:18;;;6540:30;-1:-1:-1;;;6586:18:1;;;6579:46;6642:18;;7046:69:0;6326:340:1;7046:69:0;7133:44;7147:10;7159:9;7170:6;7133:13;:44::i;8102:89::-;3526:6;;-1:-1:-1;;;;;3526:6:0;3512:10;:20;3504:57;;;;-1:-1:-1;;;3504:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8165:10:0::1;8178:5;8165:10:::0;;;:5:::1;:10;::::0;;;;:18;;-1:-1:-1;;8165:18:0::1;::::0;;8102:89::o;11083:302::-;-1:-1:-1;;;;;11157:10:0;;11136:4;11157:10;;;:5;:10;;;;;;;;;:34;;-1:-1:-1;;;;;;11171:20:0;;11186:4;11171:20;11157:34;:50;;;-1:-1:-1;;;;;;11195:12:0;;;;;;:7;:12;;;;;;;;11157:50;11153:68;;;-1:-1:-1;11216:5:0;;11083:302;-1:-1:-1;11083:302:0:o;11153:68::-;-1:-1:-1;;;;;;;11264:58:0;;;11260:88;;-1:-1:-1;11344:4:0;;11083:302;-1:-1:-1;11083:302:0:o;11260:88::-;-1:-1:-1;;;;;;11366:11:0;;;;;:6;:11;;;;;;;;;11083:302::o;8009:85::-;3526:6;;-1:-1:-1;;;;;3526:6:0;3512:10;:20;3504:57;;;;-1:-1:-1;;;3504:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8069:10:0::1;;::::0;;;:5:::1;:10;::::0;;;;:17;;-1:-1:-1;;8069:17:0::1;8082:4;8069:17;::::0;;8009:85::o;9859:111::-;3526:6;;-1:-1:-1;;;;;3526:6:0;3512:10;:20;3504:57;;;;-1:-1:-1;;;3504:57:0;;;;;;;:::i;:::-;9934:20:::1;:28:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;9934:28:0;;::::1;::::0;;;::::1;::::0;;9859:111::o;8624:180::-;3526:6;;-1:-1:-1;;;;;3526:6:0;3512:10;:20;3504:57;;;;-1:-1:-1;;;3504:57:0;;;;;;;:::i;:::-;8691:12:::1;::::0;::::1;::::0;::::1;;;8690:13;8682:48;;;::::0;-1:-1:-1;;;8682:48:0;;8418:2:1;8682:48:0::1;::::0;::::1;8400:21:1::0;8457:2;8437:18;;;8430:30;-1:-1:-1;;;8476:18:1;;;8469:52;8538:18;;8682:48:0::1;8216:346:1::0;8682:48:0::1;8741:12;:19:::0;;-1:-1:-1;;8741:19:0::1;;;::::0;;8784:12:::1;8771:10;:25:::0;8624:180::o;9049:220::-;3526:6;;-1:-1:-1;;;;;3526:6:0;3512:10;:20;3504:57;;;;-1:-1:-1;;;3504:57:0;;;;;;;:::i;:::-;9169:9:::1;9164:98;9184:17:::0;;::::1;9164:98;;;9243:7;9223:6;:17;9230:6;;9237:1;9230:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9223:17:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9223:17:0;:27;;-1:-1:-1;;9223:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9203:3;::::1;::::0;::::1;:::i;:::-;;;;9164:98;;;;9049:220:::0;;;:::o;8812:229::-;3526:6;;-1:-1:-1;;;;;3526:6:0;3512:10;:20;3504:57;;;;-1:-1:-1;;;3504:57:0;;;;;;;:::i;:::-;8934:9:::1;8929:105;8949:20:::0;;::::1;8929:105;;;9015:7;8991;:21;8999:9;;9009:1;8999:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8991:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8991:21:0;:31;;-1:-1:-1;;8991:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8971:3;::::1;::::0;::::1;:::i;:::-;;;;8929:105;;11393:664:::0;11551:12;;11490:4;;;;11551:12;;;;;11547:474;;;-1:-1:-1;11594:4:0;11547:474;;;-1:-1:-1;;;;;11696:13:0;;;;;;:5;:13;;;;;;;;:35;;;;-1:-1:-1;;;;;;11713:18:0;;;;;;:7;:18;;;;;;;;11696:35;:50;;;;-1:-1:-1;11735:11:0;;;;11696:50;11695:125;;;-1:-1:-1;;;;;;11769:16:0;;;;;;:5;:16;;;;;;;;:35;;;;-1:-1:-1;;;;;;11789:15:0;;;;;;:7;:15;;;;;;;;11769:35;:50;;;;-1:-1:-1;11808:11:0;;;;11769:50;11673:247;;;11855:12;8741::::1;:19:::0;;-1:-1:-1;;8741:19:0::1;;;::::0;;8784:12:::1;8771:10;:25:::0;8624:180;11855:12;-1:-1:-1;11900:4:0;11673:247;-1:-1:-1;;;;;11940:15:0;;;;;;:7;:15;;;;;;;;11936:74;;;-1:-1:-1;11990:4:0;12038:11;11393:664;-1:-1:-1;;;11393:664:0:o;9978:1097::-;10104:4;-1:-1:-1;;;;;10129:20:0;;10121:62;;;;-1:-1:-1;;;10121:62:0;;9041:2:1;10121:62:0;;;9023:21:1;9080:2;9060:18;;;9053:30;9119:31;9099:18;;;9092:59;9168:18;;10121:62:0;8839:353:1;10121:62:0;10203:17;10213:6;10203:9;:17::i;:::-;10202:18;10194:34;;;;-1:-1:-1;;;10194:34:0;;9399:2:1;10194:34:0;;;9381:21:1;9438:1;9418:18;;;9411:29;-1:-1:-1;;;9456:18:1;;;9449:33;9499:18;;10194:34:0;9197:326:1;10194:34:0;10247:38;10259:6;10267:9;10278:6;10247:11;:38::i;:::-;10239:69;;;;-1:-1:-1;;;10239:69:0;;9730:2:1;10239:69:0;;;9712:21:1;9769:2;9749:18;;;9742:30;-1:-1:-1;;;9788:18:1;;;9781:48;9846:18;;10239:69:0;9528:342:1;10239:69:0;10326:10;;;;;;;10325:11;:31;;;;-1:-1:-1;;;;;;10340:16:0;;;;;;:5;:16;;;;;;;;10325:31;:55;;;;-1:-1:-1;10360:20:0;;;;;;;10325:55;10321:108;;;10397:20;:18;:20::i;:::-;10441:18;10462:40;10476:6;10484:9;10495:6;10462:13;:40::i;:::-;10441:61;-1:-1:-1;10513:23:0;10539:19;10441:61;10539:6;:19;:::i;:::-;-1:-1:-1;;;;;10571:17:0;;;;;;:9;:17;;;;;:27;;10513:45;;-1:-1:-1;10592:6:0;;10571:17;;;:27;;10592:6;;10571:27;:::i;:::-;;;;-1:-1:-1;;10613:14:0;;10609:327;;-1:-1:-1;;;;;10673:13:0;;;;;;:5;:13;;;;;;;;10669:138;;;10726:12;10709:10;;10722:1;10709:14;;;;:::i;:::-;:29;10705:102;;;-1:-1:-1;;;;;10763:17:0;;;;;;:6;:17;;;;;:24;;-1:-1:-1;;10763:24:0;10783:4;10763:24;;;10705:102;10841:4;10823:24;;;;:9;:24;;;;;:38;;10851:10;;10823:24;:38;;10851:10;;10823:38;:::i;:::-;;;;-1:-1:-1;;10881:43:0;;1569:25:1;;;10906:4:0;;-1:-1:-1;;;;;10881:43:0;;;;;1557:2:1;1542:18;10881:43:0;;;;;;;10609:327;-1:-1:-1;;;;;10946:20:0;;;;;;:9;:20;;;;;:39;;10970:15;;10946:20;:39;;10970:15;;10946:39;:::i;:::-;;;;;;;;11018:9;-1:-1:-1;;;;;11001:44:0;11010:6;-1:-1:-1;;;;;11001:44:0;;11029:15;11001:44;;;;1569:25:1;;1557:2;1542:18;;1423:177;11001:44:0;;;;;;;;-1:-1:-1;11063:4:0;;9978:1097;-1:-1:-1;;;;;9978:1097:0:o;9381:429::-;-1:-1:-1;;;;;9522:13:0;;9501:4;9522:13;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;9539:11:0;;;;;;:7;:11;;;;;;;;9522:28;9518:45;;;-1:-1:-1;9559:4:0;9552:11;;9518:45;-1:-1:-1;;;;;9580:9:0;;;;;;:5;:9;;;;;;;;9576:227;;;9619:15;;9610:6;:24;9606:42;;;-1:-1:-1;9643:5:0;9636:12;;9606:42;-1:-1:-1;9670:4:0;9663:11;;9576:227;9736:15;;-1:-1:-1;;;;;6431:18:0;;6404:7;6431:18;;;:9;:18;;;;;;9711:22;;:6;:22;:::i;:::-;:40;9707:58;;;-1:-1:-1;9760:5:0;9753:12;;13577:774;5174:10;:17;;-1:-1:-1;;5174:17:0;;;;;13686:4:::1;-1:-1:-1::0;6431:18:0;;;-1:-1:-1;6431:18:0;;;;;;13638:54;-1:-1:-1;4527:4:0::1;4081:13;4018:1;4081:2;:13;:::i;:::-;4066:29;::::0;:11:::1;:29;:::i;:::-;4512:19;;;;:::i;:::-;13709;:34;;:50;;;;-1:-1:-1::0;13747:12:0::1;::::0;::::1;::::0;::::1;;;13709:50;13705:639;;;4592:3;4081:13;4018:1;4081:2;:13;:::i;:::-;4066:29;::::0;:11:::1;:29;:::i;:::-;4577:18;;;;:::i;:::-;13780:19;:34;13776:108;;4592:3;4081:13;4018:1;4081:2;:13;:::i;:::-;4066:29;::::0;:11:::1;:29;:::i;:::-;4577:18;;;;:::i;:::-;13835:33;;13776:108;13924:19:::0;13978:13:::1;4018:1;13978:2;:13;:::i;:::-;13962;:29;13958:105;;;14012:35;14033:13;14012:20;:35::i;:::-;14107:21;14147:23:::0;;14143:190:::1;;14224:93;::::0;14192:9:::1;::::0;;;4423:42:::1;::::0;14275:19;;14192:9;14224:93;14192:9;14224:93;14275:19;4423:42;14224:93:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14143:190:0::1;13761:583;;13705:639;-1:-1:-1::0;5214:10:0;:18;;-1:-1:-1;;5214:18:0;;;13577:774::o;12812:646::-;12997:12;;12943:7;;;;12997:12;;;;;:32;;;;-1:-1:-1;;;;;;13014:15:0;;;;;;:7;:15;;;;;;;;13013:16;12997:32;:55;;;;-1:-1:-1;;;;;;13034:18:0;;;;;;:7;:18;;;;;;;;13033:19;12997:55;12993:429;;;13088:19;13126:20;13165:18;13201:5;12349:11;;;;;;;12375:12;;;;;;12402:7;;12065:423;13201:5;-1:-1:-1;;;;;13225:13:0;;;;;;:5;:13;;;;;;13069:137;;-1:-1:-1;13069:137:0;;-1:-1:-1;13069:137:0;-1:-1:-1;13225:13:0;;13221:85;;;13295:11;13269:37;;13279:12;13270:21;;:6;:21;;;;:::i;:::-;13269:37;;;;:::i;:::-;13257:49;;13221:85;-1:-1:-1;;;;;13325:16:0;;;;;;:5;:16;;;;;;;;13321:89;;;13399:11;13372:38;;13382:13;13373:22;;:6;:22;;;;:::i;:::-;13372:38;;;;:::i;:::-;13360:50;;13321:89;13054:368;;;13441:9;12812:646;-1:-1:-1;;;;12812:646:0:o;14359:446::-;14429:27;14444:11;14429:14;:27::i;:::-;14491:16;;;14505:1;14491:16;;;;;;;;14467:21;;14491:16;;;;;;;;;;-1:-1:-1;14491:16:0;14467:40;;14536:4;14518;14523:1;14518:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14518:23:0;;;:7;;;;;;;;;;:23;;;;14562:18;;:25;;;-1:-1:-1;;;14562:25:0;;;;:18;;;;;:23;;:25;;;;;14518:7;;14562:25;;;;;:18;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14552:4;14557:1;14552:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14552:35:0;;;:7;;;;;;;;;:35;14598:18;;:199;;-1:-1:-1;;;14598:199:0;;:18;;;:69;;:199;;14682:11;;14598:18;;14724:4;;14751;;14771:15;;14598:199;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14418:387;14359:446;:::o;7686:315::-;7776:4;7756:26;;;;:11;:26;;;;;;;;4797:42;7756:46;;;;;;;;:61;-1:-1:-1;7752:242:0;;;7854:4;7834:26;;;;:11;:26;;;;;;;;4797:42;7834:46;;;;;;;;;;-1:-1:-1;;7834:66:0;;;;7920:62;;1569:25:1;;;4797:42:0;;7854:4;7920:62;;1542:18:1;7920:62:0;;;;;;;7752:242;7686:315;:::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;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:118::-;2341:5;2334:13;2327:21;2320:5;2317:32;2307:60;;2363:1;2360;2353:12;2378:241;2434:6;2487:2;2475:9;2466:7;2462:23;2458:32;2455:52;;;2503:1;2500;2493:12;2455:52;2542:9;2529:23;2561:28;2583:5;2561:28;:::i;2624:163::-;2691:20;;2751:10;2740:22;;2730:33;;2720:61;;2777:1;2774;2767:12;2720:61;2624:163;;;:::o;2792:256::-;2858:6;2866;2919:2;2907:9;2898:7;2894:23;2890:32;2887:52;;;2935:1;2932;2925:12;2887:52;2958:28;2976:9;2958:28;:::i;:::-;2948:38;;3005:37;3038:2;3027:9;3023:18;3005:37;:::i;:::-;2995:47;;2792:256;;;;;:::o;3053:180::-;3112:6;3165:2;3153:9;3144:7;3140:23;3136:32;3133:52;;;3181:1;3178;3171:12;3133:52;-1:-1:-1;3204:23:1;;3053:180;-1:-1:-1;3053:180:1:o;3238:388::-;3306:6;3314;3367:2;3355:9;3346:7;3342:23;3338:32;3335:52;;;3383:1;3380;3373:12;3335:52;3422:9;3409:23;3441:31;3466:5;3441:31;:::i;:::-;3491:5;-1:-1:-1;3548:2:1;3533:18;;3520:32;3561:33;3520:32;3561:33;:::i;:::-;3613:7;3603:17;;;3238:388;;;;;:::o;3631:247::-;3690:6;3743:2;3731:9;3722:7;3718:23;3714:32;3711:52;;;3759:1;3756;3749:12;3711:52;3798:9;3785:23;3817:31;3842:5;3817:31;:::i;3883:750::-;3975:6;3983;3991;4044:2;4032:9;4023:7;4019:23;4015:32;4012:52;;;4060:1;4057;4050:12;4012:52;4100:9;4087:23;4129:18;4170:2;4162:6;4159:14;4156:34;;;4186:1;4183;4176:12;4156:34;4224:6;4213:9;4209:22;4199:32;;4269:7;4262:4;4258:2;4254:13;4250:27;4240:55;;4291:1;4288;4281:12;4240:55;4331:2;4318:16;4357:2;4349:6;4346:14;4343:34;;;4373:1;4370;4363:12;4343:34;4428:7;4421:4;4411:6;4408:1;4404:14;4400:2;4396:23;4392:34;4389:47;4386:67;;;4449:1;4446;4439:12;4386:67;4480:4;4472:13;;;;-1:-1:-1;4504:6:1;-1:-1:-1;;4545:20:1;;4532:34;4575:28;4532:34;4575:28;:::i;:::-;4622:5;4612:15;;;3883:750;;;;;:::o;4638:127::-;4699:10;4694:3;4690:20;4687:1;4680:31;4730:4;4727:1;4720:15;4754:4;4751:1;4744:15;4770:422;4859:1;4902:5;4859:1;4916:270;4937:7;4927:8;4924:21;4916:270;;;4996:4;4992:1;4988:6;4984:17;4978:4;4975:27;4972:53;;;5005:18;;:::i;:::-;5055:7;5045:8;5041:22;5038:55;;;5075:16;;;;5038:55;5154:22;;;;5114:15;;;;4916:270;;;4920:3;4770:422;;;;;:::o;5197:806::-;5246:5;5276:8;5266:80;;-1:-1:-1;5317:1:1;5331:5;;5266:80;5365:4;5355:76;;-1:-1:-1;5402:1:1;5416:5;;5355:76;5447:4;5465:1;5460:59;;;;5533:1;5528:130;;;;5440:218;;5460:59;5490:1;5481:10;;5504:5;;;5528:130;5565:3;5555:8;5552:17;5549:43;;;5572:18;;:::i;:::-;-1:-1:-1;;5628:1:1;5614:16;;5643:5;;5440:218;;5742:2;5732:8;5729:16;5723:3;5717:4;5714:13;5710:36;5704:2;5694:8;5691:16;5686:2;5680:4;5677:12;5673:35;5670:77;5667:159;;;-1:-1:-1;5779:19:1;;;5811:5;;5667:159;5858:34;5883:8;5877:4;5858:34;:::i;:::-;5928:6;5924:1;5920:6;5916:19;5907:7;5904:32;5901:58;;;5939:18;;:::i;:::-;5977:20;;5197:806;-1:-1:-1;;;5197:806:1:o;6008:140::-;6066:5;6095:47;6136:4;6126:8;6122:19;6116:4;6095:47;:::i;6153:168::-;6226:9;;;6257;;6274:15;;;6268:22;;6254:37;6244:71;;6295:18;;:::i;6671:128::-;6738:9;;;6759:11;;;6756:37;;;6773:18;;:::i;6804:348::-;7006:2;6988:21;;;7045:2;7025:18;;;7018:30;7084:26;7079:2;7064:18;;7057:54;7143:2;7128:18;;6804:348::o;7498:184::-;7568:6;7621:2;7609:9;7600:7;7596:23;7592:32;7589:52;;;7637:1;7634;7627:12;7589:52;-1:-1:-1;7660:16:1;;7498:184;-1:-1:-1;7498:184:1:o;7966:245::-;8033:6;8086:2;8074:9;8065:7;8061:23;8057:32;8054:52;;;8102:1;8099;8092:12;8054:52;8134:9;8128:16;8153:28;8175:5;8153:28;:::i;8567:127::-;8628:10;8623:3;8619:20;8616:1;8609:31;8659:4;8656:1;8649:15;8683:4;8680:1;8673:15;8699:135;8738:3;8759:17;;;8756:43;;8779:18;;:::i;:::-;-1:-1:-1;8826:1:1;8815:13;;8699:135::o;9875:125::-;9940:9;;;9961:10;;;9958:36;;;9974:18;;:::i;10005:217::-;10045:1;10071;10061:132;;10115:10;10110:3;10106:20;10103:1;10096:31;10150:4;10147:1;10140:15;10178:4;10175:1;10168:15;10061:132;-1:-1:-1;10207:9:1;;10005:217::o;10569:251::-;10639:6;10692:2;10680:9;10671:7;10667:23;10663:32;10660:52;;;10708:1;10705;10698:12;10660:52;10740:9;10734:16;10759:31;10784:5;10759:31;:::i;10825:980::-;11087:4;11135:3;11124:9;11120:19;11166:6;11155:9;11148:25;11192:2;11230:6;11225:2;11214:9;11210:18;11203:34;11273:3;11268:2;11257:9;11253:18;11246:31;11297:6;11332;11326:13;11363:6;11355;11348:22;11401:3;11390:9;11386:19;11379:26;;11440:2;11432:6;11428:15;11414:29;;11461:1;11471:195;11485:6;11482:1;11479:13;11471:195;;;11550:13;;-1:-1:-1;;;;;11546:39:1;11534:52;;11641:15;;;;11606:12;;;;11582:1;11500:9;11471:195;;;-1:-1:-1;;;;;;;11722:32:1;;;;11717:2;11702:18;;11695:60;-1:-1:-1;;;11786:3:1;11771:19;11764:35;11683:3;10825:980;-1:-1:-1;;;10825:980:1:o

Swarm Source

ipfs://330a6d3062904e432f45e86443beb6b62ccdd77d0330308f118c3cfef2c5d187
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.