ETH Price: $3,383.61 (+0.79%)

Token

Ape In ETH (APEIN)
 

Overview

Max Total Supply

1,000,000,000 APEIN

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,000,000 APEIN

Value
$0.00
0xe930Cc92c86e15fd11C042654279Fa4012E716c1
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:
APEIN

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 2024-03-12
*/

// With Bitcoin and Ethereum finally pumping we are ready to launch. 
// We’ve been waiting since December for the perfect time and not just 
// randomly launch with all the Elon tweets and now Vitalik tweet hype. 
// There’s too many ai projects launching without any actually utility and 
// two many memes being recycled and also pumped by insiders and shortly 
// after will die. It’s time for something new! $APEIN now!

// Website:         https://www.apeineth.com
// Telegram:        https://t.me/apeinethportal
// Twitter:         https://x.com/apein_eth
// Medium:          https://medium.com/@APEINETH
// Instagram:       https://www.instagram.com/apeinetherc
// TikTok:          https://www.tiktok.com/@apeineth

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "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, " multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "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;
    }
}

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(), "caller is not the owner");
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "new owner is zero address");
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
    }

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

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

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

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

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

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

    mapping(address => uint256) private _balance;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedWallet;
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = "Ape In ETH";
    string private constant _symbol = "APEIN";

    uint256 private constant onePercent = _totalSupply / 100; // 1%

    uint256 public buyFee = 0;
    uint256 public sellFee = 0;        
    uint256 public maxAmountPerTx = 0;
    uint256 public maxAmountPerWallet = 0;
    uint256 private maxSwapTokenAmount = 0;

    IUniswapV2Router02 private constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2Pair;

    address[] public holders;

    address payable private taxWallet;

    bool private swapEnabled = false;
    bool private inSwapAndLiquify = false;

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

    constructor() {
        taxWallet = payable(0x5Ec25Ea9EB3B6a30692dD85aF27403a279a3d96C);

        _isExcludedWallet[_msgSender()] = true;
        _isExcludedWallet[address(this)] = true;
        _isExcludedWallet[taxWallet] = true;

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

        _balance[_msgSender()] = onePercent * 60;   // 50% Burn - 10% Marketing
        _balance[address(this)] = onePercent * 40;  // 40% Liquidity

        emit Transfer(address(0), _msgSender(), onePercent * 60);
        emit Transfer(address(0), address(this), onePercent * 40);
    }

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 _tax = 0;
        if (!_isExcludedWallet[from] && !_isExcludedWallet[to]) {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                require(balanceOf(to) + amount <= maxAmountPerWallet || maxAmountPerWallet == 0, "Exceed max amount per wallet");
                require(amount <= maxAmountPerTx || maxAmountPerTx == 0, "Exceed max amount per tx");
                _tax = buyFee;
            } else if (to == uniswapV2Pair) {
                require(amount <= maxAmountPerTx || maxAmountPerTx == 0, "Exceed max amount per tx");
                _tax = sellFee;
            } else {
                _tax = 0;
            }
        }

        uint256 taxAmount = (amount * _tax) / 100;
        uint256 transferAmount = amount - taxAmount;

        _balance[from] = _balance[from] - amount;
        _balance[address(this)] = _balance[address(this)] + taxAmount;

        uint256 cAmount = _balance[address(this)];
        if (!inSwapAndLiquify && from != uniswapV2Pair && to == uniswapV2Pair && swapEnabled) {
            if (cAmount >= maxSwapTokenAmount) {
                swapTokensForEth(cAmount);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) {
                    sendETHToFee(ethBalance);
                }
            }
        }

        if (!_isExcludedWallet[to] && to != uniswapV2Pair && _balance[to] == 0) {
            holders.push(to);
        }

        _balance[to] = _balance[to] + transferAmount;

        if (taxAmount > 0) {
            emit Transfer(from, address(this), taxAmount);
        }

        if (!_isExcludedWallet[from] && from != uniswapV2Pair && _balance[from] == 0) {
            for (uint256 i = 0; i < holders.length; i ++) {
                if (holders[i] == from) {
                    holders[i] = holders[holders.length - 1];
                    holders.pop();
                    break;
                }
            }
        }

        emit Transfer(from, to, transferAmount);
    }

    function swapTokensForEth(uint256 _tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 _amount) private {
        uint256 feeAmount = _amount;
        taxWallet.transfer(feeAmount);
    }

    function manualSwap() external {
        require(_msgSender() == owner() || _msgSender() == taxWallet, "Invalid permission");

        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }

        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }

    function _setFee(uint256 _buyFee, uint256 _sellFee) private {
        buyFee = _buyFee;
        sellFee = _sellFee;
    }

    function _setMaxAmountPerTx(uint256 _maxAmountPerTx) private {
        maxAmountPerTx = _maxAmountPerTx;
    }

    function _setMaxAmountPerWallet(uint256 _maxAmountPerWallet) private {
        maxAmountPerWallet = _maxAmountPerWallet;
    }

    function _setMaxSwapTokenAmount(uint256 _maxSwapTokenAmount) private {
        maxSwapTokenAmount = _maxSwapTokenAmount;
    }

    function openTrade(
        uint256 _buyFee,
        uint256 _sellFee,
        uint256 _maxAmountPerTx,
        uint256 _maxAmountPerWallet,
        uint256 _maxSwapTokenAmount
    ) external payable onlyOwner {
        require(!swapEnabled, "token is already enabled for trading");

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

        _setFee(_buyFee, _sellFee);
        _setMaxAmountPerTx(_maxAmountPerTx);
        _setMaxAmountPerWallet(_maxAmountPerWallet);
        _setMaxSwapTokenAmount(_maxSwapTokenAmount);

        swapEnabled = true;
    }

    function setFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        _setFee(_buyFee, _sellFee);
    }

    function setLimits(uint256 _maxAmountPerTx, uint256 _maxAmountPerWallet) external onlyOwner {
        _setMaxAmountPerTx(_maxAmountPerTx);
        _setMaxAmountPerWallet(_maxAmountPerWallet);
    }

    function setMaxSwapTokenAmount(uint256 _maxSwapTokenAmount) external onlyOwner {
        _setMaxSwapTokenAmount(_maxSwapTokenAmount);
    }

    function setTaxWallet(address _taxWallet) external onlyOwner {
        taxWallet = payable(_taxWallet);
    }

    function getHoldersCount() public view returns(uint256) {
        return holders.length;
    }

    receive() external payable {}
}

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":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":[{"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":"buyFee","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":"getHoldersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxAmountPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_maxAmountPerTx","type":"uint256"},{"internalType":"uint256","name":"_maxAmountPerWallet","type":"uint256"},{"internalType":"uint256","name":"_maxSwapTokenAmount","type":"uint256"}],"name":"openTrade","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxAmountPerTx","type":"uint256"},{"internalType":"uint256","name":"_maxAmountPerWallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSwapTokenAmount","type":"uint256"}],"name":"setMaxSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxWallet","type":"address"}],"name":"setTaxWallet","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006004819055600581905560068190556007819055600855600b805461ffff60a01b191690553480156200003857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b031916735ec25ea9eb3b6a30692dd85af27403a279a3d96c179055600160036000620000ae3390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553080825260038552838220805487166001908117909155600b549093168252838220805490961690921790945583526002808352818420737a250d5630b4cf539739df2c5dacb4c659f2488d8552909252822060001990819055916200013f3390565b6001600160a01b0316815260208082019290925260409081016000908120737a250d5630b4cf539739df2c5dacb4c659f2488d825290925290205560646200018a6012600a620003ea565b6200019a90633b9aca0062000402565b620001a691906200041c565b620001b390603c62000402565b336000908152600160205260409020556064620001d36012600a620003ea565b620001e390633b9aca0062000402565b620001ef91906200041c565b620001fc90602862000402565b30600090815260016020526040902055336001600160a01b0316600060008051602062001f2a8339815191526064620002386012600a620003ea565b6200024890633b9aca0062000402565b6200025491906200041c565b6200026190603c62000402565b60405190815260200160405180910390a330600060008051602062001f2a8339815191526064620002956012600a620003ea565b620002a590633b9aca0062000402565b620002b191906200041c565b620002be90602862000402565b60405190815260200160405180910390a36200043f565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200032c578160001904821115620003105762000310620002d5565b808516156200031e57918102915b93841c9390800290620002f0565b509250929050565b6000826200034557506001620003e4565b816200035457506000620003e4565b81600181146200036d5760028114620003785762000398565b6001915050620003e4565b60ff8411156200038c576200038c620002d5565b50506001821b620003e4565b5060208310610133831016604e8410600b8410161715620003bd575081810a620003e4565b620003c98383620002eb565b8060001904821115620003e057620003e0620002d5565b0290505b92915050565b6000620003fb60ff84168362000334565b9392505050565b8082028115828204841417620003e457620003e4620002d5565b6000826200043a57634e487b7160e01b600052601260045260246000fd5b500490565b611adb806200044f6000396000f3fe60806040526004361061016a5760003560e01c806364998def116100d157806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e1461043d578063e21bbe6b14610483578063ea414b2814610496578063f2fde38b146104b657600080fd5b806395d89b41146103cf578063a9059cbb146103fd578063c4590d3f1461041d57600080fd5b806364998def1461031b57806370a082311461033b578063715018a61461037157806373889f4a1461038657806385b27c851461039b5780638da5cb5b146103b157600080fd5b8063313ce56711610123578063313ce5671461027c57806336db71291461029857806347062402146102ae57806349bd5a5e146102c457806351bc3c85146102e457806352f7c988146102fb57600080fd5b806306fdde0314610176578063095ea7b3146101bb57806318160ddd146101eb57806323b872dd1461020e5780632a11ced01461022e5780632b14ca561461026657600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5060408051808201909152600a815269082e0ca4092dc408aa8960b31b60208201525b6040516101b29190611640565b60405180910390f35b3480156101c757600080fd5b506101db6101d63660046116a3565b6104d6565b60405190151581526020016101b2565b3480156101f757600080fd5b506102006104ed565b6040519081526020016101b2565b34801561021a57600080fd5b506101db6102293660046116cf565b61050e565b34801561023a57600080fd5b5061024e610249366004611710565b6105a8565b6040516001600160a01b0390911681526020016101b2565b34801561027257600080fd5b5061020060055481565b34801561028857600080fd5b50604051601281526020016101b2565b3480156102a457600080fd5b5061020060075481565b3480156102ba57600080fd5b5061020060045481565b3480156102d057600080fd5b5060095461024e906001600160a01b031681565b3480156102f057600080fd5b506102f96105d2565b005b34801561030757600080fd5b506102f9610316366004611729565b610677565b34801561032757600080fd5b506102f9610336366004611710565b6106ac565b34801561034757600080fd5b5061020061035636600461174b565b6001600160a01b031660009081526001602052604090205490565b34801561037d57600080fd5b506102f96106e2565b34801561039257600080fd5b50600a54610200565b3480156103a757600080fd5b5061020060065481565b3480156103bd57600080fd5b506000546001600160a01b031661024e565b3480156103db57600080fd5b5060408051808201909152600581526420a822a4a760d91b60208201526101a5565b34801561040957600080fd5b506101db6104183660046116a3565b610756565b34801561042957600080fd5b506102f9610438366004611729565b610763565b34801561044957600080fd5b5061020061045836600461176f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102f96104913660046117a8565b61079f565b3480156104a257600080fd5b506102f96104b136600461174b565b610b59565b3480156104c257600080fd5b506102f96104d136600461174b565b610ba5565b60006104e3338484610c70565b5060015b92915050565b60006104fb6012600a6118dd565b61050990633b9aca006118ec565b905090565b600061051b848484610d34565b61059e8433610599856040518060400160405280600d81526020016c6c6f7720616c6c6f77616e636560981b815250600260008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006105783390565b6001600160a01b03168152602081019190915260400160002054919061143b565b610c70565b5060019392505050565b600a81815481106105b857600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314806105fe5750600b546001600160a01b0316336001600160a01b0316145b6106445760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b2103832b936b4b9b9b4b7b760711b60448201526064015b60405180910390fd5b3060009081526001602052604090205480156106635761066381611475565b4780156106735761067381611601565b5050565b6000546001600160a01b031633146106a15760405162461bcd60e51b815260040161063b90611903565b600491909155600555565b6000546001600160a01b031633146106d65760405162461bcd60e51b815260040161063b90611903565b6106df81600855565b50565b6000546001600160a01b0316331461070c5760405162461bcd60e51b815260040161063b90611903565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006104e3338484610d34565b6000546001600160a01b0316331461078d5760405162461bcd60e51b815260040161063b90611903565b61079682600655565b61067381600755565b6000546001600160a01b031633146107c95760405162461bcd60e51b815260040161063b90611903565b600b54600160a01b900460ff161561082f5760405162461bcd60e51b8152602060048201526024808201527f746f6b656e20697320616c726561647920656e61626c656420666f722074726160448201526364696e6760e01b606482015260840161063b565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a5919061193a565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092a919061193a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099b919061193a565b600980546001600160a01b0319166001600160a01b039290921691909117905530600081815260016020526040902054737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d719913491906000806109ff6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a67573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a8c9190611957565b505060095460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d600482015260001960248201526001600160a01b03909116915063095ea7b3906044016020604051808303816000875af1158015610af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b199190611985565b5060048590556005849055610b2d83600655565b610b3682600755565b610b3f81600855565b5050600b805460ff60a01b1916600160a01b179055505050565b6000546001600160a01b03163314610b835760405162461bcd60e51b815260040161063b90611903565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bcf5760405162461bcd60e51b815260040161063b90611903565b6001600160a01b038116610c255760405162461bcd60e51b815260206004820152601960248201527f6e6577206f776e6572206973207a65726f206164647265737300000000000000604482015260640161063b565b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b03831615801590610c9057506001600160a01b03821615155b610cd35760405162461bcd60e51b8152602060048201526014602482015273617070726f7665207a65726f206164647265737360601b604482015260640161063b565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d985760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161063b565b6001600160a01b038216610dfa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161063b565b60008111610e5c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161063b565b6001600160a01b03831660009081526003602052604081205460ff16158015610e9e57506001600160a01b03831660009081526003602052604090205460ff16155b15611044576009546001600160a01b038581169116148015610edd57506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15610fc95760075482610f05856001600160a01b031660009081526001602052604090205490565b610f0f91906119a7565b111580610f1c5750600754155b610f685760405162461bcd60e51b815260206004820152601c60248201527f457863656564206d617820616d6f756e74207065722077616c6c657400000000604482015260640161063b565b60065482111580610f795750600654155b610fc05760405162461bcd60e51b815260206004820152601860248201527708af0c6cacac840dac2f040c2dadeeadce840e0cae440e8f60431b604482015260640161063b565b50600454611044565b6009546001600160a01b03908116908416036110405760065482111580610ff05750600654155b6110375760405162461bcd60e51b815260206004820152601860248201527708af0c6cacac840dac2f040c2dadeeadce840e0cae440e8f60431b604482015260640161063b565b50600554611044565b5060005b6000606461105283856118ec565b61105c91906119ba565b9050600061106a82856119dc565b6001600160a01b0387166000908152600160205260409020549091506110919085906119dc565b6001600160a01b0387166000908152600160205260408082209290925530815220546110be9083906119a7565b306000908152600160205260409020819055600b54600160a81b900460ff161580156110f857506009546001600160a01b03888116911614155b801561111157506009546001600160a01b038781169116145b80156111265750600b54600160a01b900460ff165b1561114f57600854811061114f5761113d81611475565b47801561114d5761114d81611601565b505b6001600160a01b03861660009081526003602052604090205460ff1615801561118657506009546001600160a01b03878116911614155b80156111a857506001600160a01b038616600090815260016020526040902054155b156111f957600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b0388161790555b6001600160a01b03861660009081526001602052604090205461121d9083906119a7565b6001600160a01b038716600090815260016020526040902055821561127d5760405183815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b03871660009081526003602052604090205460ff161580156112b457506009546001600160a01b03888116911614155b80156112d657506001600160a01b038716600090815260016020526040902054155b156113e55760005b600a548110156113e357876001600160a01b0316600a8281548110611305576113056119ef565b6000918252602090912001546001600160a01b0316036113d157600a805461132f906001906119dc565b8154811061133f5761133f6119ef565b600091825260209091200154600a80546001600160a01b03909216918390811061136b5761136b6119ef565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a8054806113aa576113aa611a05565b600082815260209020810160001990810180546001600160a01b03191690550190556113e3565b806113db81611a1b565b9150506112de565b505b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161142a91815260200190565b60405180910390a350505050505050565b6000818484111561145f5760405162461bcd60e51b815260040161063b9190611640565b50600061146c84866119dc565b95945050505050565b600b805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114bd576114bd6119ef565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561152f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611553919061193a565b81600181518110611566576115666119ef565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906115be908590600090869030904290600401611a34565b600060405180830381600087803b1580156115d857600080fd5b505af11580156115ec573d6000803e3d6000fd5b5050600b805460ff60a81b1916905550505050565b600b5460405182916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561163b573d6000803e3d6000fd5b505050565b600060208083528351808285015260005b8181101561166d57858101830151858201604001528201611651565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106df57600080fd5b600080604083850312156116b657600080fd5b82356116c18161168e565b946020939093013593505050565b6000806000606084860312156116e457600080fd5b83356116ef8161168e565b925060208401356116ff8161168e565b929592945050506040919091013590565b60006020828403121561172257600080fd5b5035919050565b6000806040838503121561173c57600080fd5b50508035926020909101359150565b60006020828403121561175d57600080fd5b81356117688161168e565b9392505050565b6000806040838503121561178257600080fd5b823561178d8161168e565b9150602083013561179d8161168e565b809150509250929050565b600080600080600060a086880312156117c057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561183457816000190482111561181a5761181a6117e3565b8085161561182757918102915b93841c93908002906117fe565b509250929050565b60008261184b575060016104e7565b81611858575060006104e7565b816001811461186e576002811461187857611894565b60019150506104e7565b60ff841115611889576118896117e3565b50506001821b6104e7565b5060208310610133831016604e8410600b84101617156118b7575081810a6104e7565b6118c183836117f9565b80600019048211156118d5576118d56117e3565b029392505050565b600061176860ff84168361183c565b80820281158282048414176104e7576104e76117e3565b60208082526017908201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b60006020828403121561194c57600080fd5b81516117688161168e565b60008060006060848603121561196c57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561199757600080fd5b8151801515811461176857600080fd5b808201808211156104e7576104e76117e3565b6000826119d757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104e7576104e76117e3565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201611a2d57611a2d6117e3565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a845784516001600160a01b031683529383019391830191600101611a5f565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212205c05466acdbd303757cb178226bf397f840dfbf151eaf57f02bbd165ebc62e8a64736f6c63430008130033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806364998def116100d157806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e1461043d578063e21bbe6b14610483578063ea414b2814610496578063f2fde38b146104b657600080fd5b806395d89b41146103cf578063a9059cbb146103fd578063c4590d3f1461041d57600080fd5b806364998def1461031b57806370a082311461033b578063715018a61461037157806373889f4a1461038657806385b27c851461039b5780638da5cb5b146103b157600080fd5b8063313ce56711610123578063313ce5671461027c57806336db71291461029857806347062402146102ae57806349bd5a5e146102c457806351bc3c85146102e457806352f7c988146102fb57600080fd5b806306fdde0314610176578063095ea7b3146101bb57806318160ddd146101eb57806323b872dd1461020e5780632a11ced01461022e5780632b14ca561461026657600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5060408051808201909152600a815269082e0ca4092dc408aa8960b31b60208201525b6040516101b29190611640565b60405180910390f35b3480156101c757600080fd5b506101db6101d63660046116a3565b6104d6565b60405190151581526020016101b2565b3480156101f757600080fd5b506102006104ed565b6040519081526020016101b2565b34801561021a57600080fd5b506101db6102293660046116cf565b61050e565b34801561023a57600080fd5b5061024e610249366004611710565b6105a8565b6040516001600160a01b0390911681526020016101b2565b34801561027257600080fd5b5061020060055481565b34801561028857600080fd5b50604051601281526020016101b2565b3480156102a457600080fd5b5061020060075481565b3480156102ba57600080fd5b5061020060045481565b3480156102d057600080fd5b5060095461024e906001600160a01b031681565b3480156102f057600080fd5b506102f96105d2565b005b34801561030757600080fd5b506102f9610316366004611729565b610677565b34801561032757600080fd5b506102f9610336366004611710565b6106ac565b34801561034757600080fd5b5061020061035636600461174b565b6001600160a01b031660009081526001602052604090205490565b34801561037d57600080fd5b506102f96106e2565b34801561039257600080fd5b50600a54610200565b3480156103a757600080fd5b5061020060065481565b3480156103bd57600080fd5b506000546001600160a01b031661024e565b3480156103db57600080fd5b5060408051808201909152600581526420a822a4a760d91b60208201526101a5565b34801561040957600080fd5b506101db6104183660046116a3565b610756565b34801561042957600080fd5b506102f9610438366004611729565b610763565b34801561044957600080fd5b5061020061045836600461176f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102f96104913660046117a8565b61079f565b3480156104a257600080fd5b506102f96104b136600461174b565b610b59565b3480156104c257600080fd5b506102f96104d136600461174b565b610ba5565b60006104e3338484610c70565b5060015b92915050565b60006104fb6012600a6118dd565b61050990633b9aca006118ec565b905090565b600061051b848484610d34565b61059e8433610599856040518060400160405280600d81526020016c6c6f7720616c6c6f77616e636560981b815250600260008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006105783390565b6001600160a01b03168152602081019190915260400160002054919061143b565b610c70565b5060019392505050565b600a81815481106105b857600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314806105fe5750600b546001600160a01b0316336001600160a01b0316145b6106445760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b2103832b936b4b9b9b4b7b760711b60448201526064015b60405180910390fd5b3060009081526001602052604090205480156106635761066381611475565b4780156106735761067381611601565b5050565b6000546001600160a01b031633146106a15760405162461bcd60e51b815260040161063b90611903565b600491909155600555565b6000546001600160a01b031633146106d65760405162461bcd60e51b815260040161063b90611903565b6106df81600855565b50565b6000546001600160a01b0316331461070c5760405162461bcd60e51b815260040161063b90611903565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006104e3338484610d34565b6000546001600160a01b0316331461078d5760405162461bcd60e51b815260040161063b90611903565b61079682600655565b61067381600755565b6000546001600160a01b031633146107c95760405162461bcd60e51b815260040161063b90611903565b600b54600160a01b900460ff161561082f5760405162461bcd60e51b8152602060048201526024808201527f746f6b656e20697320616c726561647920656e61626c656420666f722074726160448201526364696e6760e01b606482015260840161063b565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a5919061193a565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092a919061193a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099b919061193a565b600980546001600160a01b0319166001600160a01b039290921691909117905530600081815260016020526040902054737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d719913491906000806109ff6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a67573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a8c9190611957565b505060095460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d600482015260001960248201526001600160a01b03909116915063095ea7b3906044016020604051808303816000875af1158015610af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b199190611985565b5060048590556005849055610b2d83600655565b610b3682600755565b610b3f81600855565b5050600b805460ff60a01b1916600160a01b179055505050565b6000546001600160a01b03163314610b835760405162461bcd60e51b815260040161063b90611903565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bcf5760405162461bcd60e51b815260040161063b90611903565b6001600160a01b038116610c255760405162461bcd60e51b815260206004820152601960248201527f6e6577206f776e6572206973207a65726f206164647265737300000000000000604482015260640161063b565b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b03831615801590610c9057506001600160a01b03821615155b610cd35760405162461bcd60e51b8152602060048201526014602482015273617070726f7665207a65726f206164647265737360601b604482015260640161063b565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d985760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161063b565b6001600160a01b038216610dfa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161063b565b60008111610e5c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161063b565b6001600160a01b03831660009081526003602052604081205460ff16158015610e9e57506001600160a01b03831660009081526003602052604090205460ff16155b15611044576009546001600160a01b038581169116148015610edd57506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15610fc95760075482610f05856001600160a01b031660009081526001602052604090205490565b610f0f91906119a7565b111580610f1c5750600754155b610f685760405162461bcd60e51b815260206004820152601c60248201527f457863656564206d617820616d6f756e74207065722077616c6c657400000000604482015260640161063b565b60065482111580610f795750600654155b610fc05760405162461bcd60e51b815260206004820152601860248201527708af0c6cacac840dac2f040c2dadeeadce840e0cae440e8f60431b604482015260640161063b565b50600454611044565b6009546001600160a01b03908116908416036110405760065482111580610ff05750600654155b6110375760405162461bcd60e51b815260206004820152601860248201527708af0c6cacac840dac2f040c2dadeeadce840e0cae440e8f60431b604482015260640161063b565b50600554611044565b5060005b6000606461105283856118ec565b61105c91906119ba565b9050600061106a82856119dc565b6001600160a01b0387166000908152600160205260409020549091506110919085906119dc565b6001600160a01b0387166000908152600160205260408082209290925530815220546110be9083906119a7565b306000908152600160205260409020819055600b54600160a81b900460ff161580156110f857506009546001600160a01b03888116911614155b801561111157506009546001600160a01b038781169116145b80156111265750600b54600160a01b900460ff165b1561114f57600854811061114f5761113d81611475565b47801561114d5761114d81611601565b505b6001600160a01b03861660009081526003602052604090205460ff1615801561118657506009546001600160a01b03878116911614155b80156111a857506001600160a01b038616600090815260016020526040902054155b156111f957600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b0388161790555b6001600160a01b03861660009081526001602052604090205461121d9083906119a7565b6001600160a01b038716600090815260016020526040902055821561127d5760405183815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b03871660009081526003602052604090205460ff161580156112b457506009546001600160a01b03888116911614155b80156112d657506001600160a01b038716600090815260016020526040902054155b156113e55760005b600a548110156113e357876001600160a01b0316600a8281548110611305576113056119ef565b6000918252602090912001546001600160a01b0316036113d157600a805461132f906001906119dc565b8154811061133f5761133f6119ef565b600091825260209091200154600a80546001600160a01b03909216918390811061136b5761136b6119ef565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a8054806113aa576113aa611a05565b600082815260209020810160001990810180546001600160a01b03191690550190556113e3565b806113db81611a1b565b9150506112de565b505b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161142a91815260200190565b60405180910390a350505050505050565b6000818484111561145f5760405162461bcd60e51b815260040161063b9190611640565b50600061146c84866119dc565b95945050505050565b600b805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114bd576114bd6119ef565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561152f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611553919061193a565b81600181518110611566576115666119ef565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906115be908590600090869030904290600401611a34565b600060405180830381600087803b1580156115d857600080fd5b505af11580156115ec573d6000803e3d6000fd5b5050600b805460ff60a81b1916905550505050565b600b5460405182916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561163b573d6000803e3d6000fd5b505050565b600060208083528351808285015260005b8181101561166d57858101830151858201604001528201611651565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106df57600080fd5b600080604083850312156116b657600080fd5b82356116c18161168e565b946020939093013593505050565b6000806000606084860312156116e457600080fd5b83356116ef8161168e565b925060208401356116ff8161168e565b929592945050506040919091013590565b60006020828403121561172257600080fd5b5035919050565b6000806040838503121561173c57600080fd5b50508035926020909101359150565b60006020828403121561175d57600080fd5b81356117688161168e565b9392505050565b6000806040838503121561178257600080fd5b823561178d8161168e565b9150602083013561179d8161168e565b809150509250929050565b600080600080600060a086880312156117c057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561183457816000190482111561181a5761181a6117e3565b8085161561182757918102915b93841c93908002906117fe565b509250929050565b60008261184b575060016104e7565b81611858575060006104e7565b816001811461186e576002811461187857611894565b60019150506104e7565b60ff841115611889576118896117e3565b50506001821b6104e7565b5060208310610133831016604e8410600b84101617156118b7575081810a6104e7565b6118c183836117f9565b80600019048211156118d5576118d56117e3565b029392505050565b600061176860ff84168361183c565b80820281158282048414176104e7576104e76117e3565b60208082526017908201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b60006020828403121561194c57600080fd5b81516117688161168e565b60008060006060848603121561196c57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561199757600080fd5b8151801515811461176857600080fd5b808201808211156104e7576104e76117e3565b6000826119d757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104e7576104e76117e3565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201611a2d57611a2d6117e3565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a845784516001600160a01b031683529383019391830191600101611a5f565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212205c05466acdbd303757cb178226bf397f840dfbf151eaf57f02bbd165ebc62e8a64736f6c63430008130033

Deployed Bytecode Sourcemap

4448:9070:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6353:83;;;;;;;;;;-1:-1:-1;6423:5:0;;;;;;;;;;;;-1:-1:-1;;;6423:5:0;;;;6353:83;;;;;;;:::i;:::-;;;;;;;;7188:160;;;;;;;;;;-1:-1:-1;7188:160:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7188:160:0;1023:187:1;6630:100:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6630:100:0;1215:177:1;7356:286:0;;;;;;;;;;-1:-1:-1;7356:286:0;;;;;:::i;:::-;;:::i;5373:24::-;;;;;;;;;;-1:-1:-1;5373:24:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2207:32:1;;;2189:51;;2177:2;2162:18;5373:24:0;2043:203:1;5041:26:0;;;;;;;;;;;;;;;;6539:83;;;;;;;;;;-1:-1:-1;6539:83:0;;4750:2;2393:36:1;;2381:2;2366:18;6539:83:0;2251:184:1;5122:37:0;;;;;;;;;;;;;;;;5009:25;;;;;;;;;;;;;;;;5336:28;;;;;;;;;;-1:-1:-1;5336:28:0;;;;-1:-1:-1;;;;;5336:28:0;;;10878:418;;;;;;;;;;;;;:::i;:::-;;12783:115;;;;;;;;;;-1:-1:-1;12783:115:0;;;;;:::i;:::-;;:::i;13114:141::-;;;;;;;;;;-1:-1:-1;13114:141:0;;;;;:::i;:::-;;:::i;6738:118::-;;;;;;;;;;-1:-1:-1;6738:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;6831:17:0;6804:7;6831:17;;;:8;:17;;;;;;;6738:118;2826:148;;;;;;;;;;;;;:::i;13382:96::-;;;;;;;;;;-1:-1:-1;13456:7:0;:14;13382:96;;5082:33;;;;;;;;;;;;;;;;2390:79;;;;;;;;;;-1:-1:-1;2428:7:0;2455:6;-1:-1:-1;;;;;2455:6:0;2390:79;;6444:87;;;;;;;;;;-1:-1:-1;6516:7:0;;;;;;;;;;;;-1:-1:-1;;;6516:7:0;;;;6444:87;;6864:166;;;;;;;;;;-1:-1:-1;6864:166:0;;;;;:::i;:::-;;:::i;12906:200::-;;;;;;;;;;-1:-1:-1;12906:200:0;;;;;:::i;:::-;;:::i;7038:142::-;;;;;;;;;;-1:-1:-1;7038:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;7145:18:0;;;7119:7;7145:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7038:142;11828:947;;;;;;:::i;:::-;;:::i;13263:111::-;;;;;;;;;;-1:-1:-1;13263:111:0;;;;;:::i;:::-;;:::i;2595:223::-;;;;;;;;;;-1:-1:-1;2595:223:0;;;;;:::i;:::-;;:::i;7188:160::-;7263:4;7279:39;917:10;7302:7;7311:6;7279:8;:39::i;:::-;-1:-1:-1;7336:4:0;7188:160;;;;;:::o;6630:100::-;6683:7;4815:15;4750:2;4815;:15;:::i;:::-;4799:31;;:13;:31;:::i;:::-;6703:19;;6630:100;:::o;7356:286::-;7454:4;7471:36;7481:6;7489:9;7500:6;7471:9;:36::i;:::-;7518:94;7527:6;917:10;7549:62;7587:6;7549:62;;;;;;;;;;;;;-1:-1:-1;;;7549:62:0;;;:11;:19;7561:6;-1:-1:-1;;;;;7549:19:0;-1:-1:-1;;;;;7549:19:0;;;;;;;;;;;;:33;7569:12;917:10;;837:98;7569:12;-1:-1:-1;;;;;7549:33:0;;;;;;;;;;;;-1:-1:-1;7549:33:0;;;:62;:37;:62::i;:::-;7518:8;:94::i;:::-;-1:-1:-1;7630:4:0;7356:286;;;;;:::o;5373:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5373:24:0;;-1:-1:-1;5373:24:0;:::o;10878:418::-;2428:7;2455:6;-1:-1:-1;;;;;2455:6:0;917:10;10928:23;;:52;;-1:-1:-1;10971:9:0;;-1:-1:-1;;;;;10971:9:0;917:10;-1:-1:-1;;;;;10955:25:0;;10928:52;10920:83;;;;-1:-1:-1;;;10920:83:0;;5687:2:1;10920:83:0;;;5669:21:1;5726:2;5706:18;;;5699:30;-1:-1:-1;;;5745:18:1;;;5738:48;5803:18;;10920:83:0;;;;;;;;;11057:4;11016:20;6831:17;;;:8;:17;;;;;;11078:16;;11074:79;;11111:30;11128:12;11111:16;:30::i;:::-;11186:21;11222:14;;11218:71;;11253:24;11266:10;11253:12;:24::i;:::-;10909:387;;10878:418::o;12783:115::-;2517:6;;-1:-1:-1;;;;;2517:6:0;917:10;2517:22;2509:58;;;;-1:-1:-1;;;2509:58:0;;;;;;;:::i;:::-;11375:6;:16;;;;11402:7;:18;10878:418::o;13114:141::-;2517:6;;-1:-1:-1;;;;;2517:6:0;917:10;2517:22;2509:58;;;;-1:-1:-1;;;2509:58:0;;;;;;;:::i;:::-;13204:43:::1;13227:19;11772:18:::0;:40;11692:128;13204:43:::1;13114:141:::0;:::o;2826:148::-;2517:6;;-1:-1:-1;;;;;2517:6:0;917:10;2517:22;2509:58;;;;-1:-1:-1;;;2509:58:0;;;;;;;:::i;:::-;2933:1:::1;2917:6:::0;;2896:40:::1;::::0;-1:-1:-1;;;;;2917:6:0;;::::1;::::0;2896:40:::1;::::0;2933:1;;2896:40:::1;2964:1;2947:19:::0;;-1:-1:-1;;;;;;2947:19:0::1;::::0;;2826:148::o;6864:166::-;6942:4;6958:42;917:10;6982:9;6993:6;6958:9;:42::i;12906:200::-;2517:6;;-1:-1:-1;;;;;2517:6:0;917:10;2517:22;2509:58;;;;-1:-1:-1;;;2509:58:0;;;;;;;:::i;:::-;13009:35:::1;13028:15;11508:14:::0;:32;11436:112;13009:35:::1;13055:43;13078:19;11636:18:::0;:40;11556:128;11828:947;2517:6;;-1:-1:-1;;;;;2517:6:0;917:10;2517:22;2509:58;;;;-1:-1:-1;;;2509:58:0;;;;;;;:::i;:::-;12064:11:::1;::::0;-1:-1:-1;;;12064:11:0;::::1;;;12063:12;12055:61;;;::::0;-1:-1:-1;;;12055:61:0;;6386:2:1;12055:61:0::1;::::0;::::1;6368:21:1::0;6425:2;6405:18;;;6398:30;6464:34;6444:18;;;6437:62;-1:-1:-1;;;6515:18:1;;;6508:34;6559:19;;12055:61:0::1;6184:400:1::0;12055:61:0::1;5286:42;-1:-1:-1::0;;;;;12163:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12145:55:0::1;;12209:4;5286:42;-1:-1:-1::0;;;;;12216:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12145:94;::::0;-1:-1:-1;;;;;;12145:94:0::1;::::0;;;;;;-1:-1:-1;;;;;7075:15:1;;;12145:94:0::1;::::0;::::1;7057:34:1::0;7127:15;;7107:18;;;7100:43;6992:18;;12145:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12129:13;:110:::0;;-1:-1:-1;;;;;;12129:110:0::1;-1:-1:-1::0;;;;;12129:110:0;;;::::1;::::0;;;::::1;::::0;;12322:4:::1;-1:-1:-1::0;6831:17:0;;;-1:-1:-1;6831:17:0;;;;;;5286:42:::1;::::0;12250:31:::1;::::0;12289:9:::1;::::0;12322:4;12381:1:::1;12397::::0;12413:7:::1;2428::::0;2455:6;-1:-1:-1;;;;;2455:6:0;;2390:79;12413:7:::1;12250:211;::::0;::::1;::::0;;;-1:-1:-1;;;;;;12250:211:0;;;-1:-1:-1;;;;;7513:15:1;;;12250:211:0::1;::::0;::::1;7495:34:1::0;7545:18;;;7538:34;;;;7588:18;;;7581:34;;;;7631:18;;;7624:34;7695:15;;;7674:19;;;7667:44;12435:15:0::1;7727:19:1::0;;;7720:35;7429:19;;12250:211:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12479:13:0::1;::::0;12472:71:::1;::::0;-1:-1:-1;;;12472:71:0;;5286:42:::1;12472:71;::::0;::::1;8251:51:1::0;-1:-1:-1;;8318:18:1;;;8311:34;-1:-1:-1;;;;;12479:13:0;;::::1;::::0;-1:-1:-1;12472:29:0::1;::::0;8224:18:1;;12472:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;11375:6:0;:16;;;11402:7;:18;;;12593:35:::1;12612:15;11508:14:::0;:32;11436:112;12593:35:::1;12639:43;12662:19;11636:18:::0;:40;11556:128;12639:43:::1;12693;12716:19;11772:18:::0;:40;11692:128;12693:43:::1;-1:-1:-1::0;;12749:11:0::1;:18:::0;;-1:-1:-1;;;;12749:18:0::1;-1:-1:-1::0;;;12749:18:0::1;::::0;;-1:-1:-1;;;11828:947:0:o;13263:111::-;2517:6;;-1:-1:-1;;;;;2517:6:0;917:10;2517:22;2509:58;;;;-1:-1:-1;;;2509:58:0;;;;;;;:::i;:::-;13335:9:::1;:31:::0;;-1:-1:-1;;;;;;13335:31:0::1;-1:-1:-1::0;;;;;13335:31:0;;;::::1;::::0;;;::::1;::::0;;13263:111::o;2595:223::-;2517:6;;-1:-1:-1;;;;;2517:6:0;917:10;2517:22;2509:58;;;;-1:-1:-1;;;2509:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2676:22:0;::::1;2668:60;;;::::0;-1:-1:-1;;;2668:60:0;;8840:2:1;2668:60:0::1;::::0;::::1;8822:21:1::0;8879:2;8859:18;;;8852:30;8918:27;8898:18;;;8891:55;8963:18;;2668:60:0::1;8638:349:1::0;2668:60:0::1;2739:6;:17:::0;;-1:-1:-1;;;;;;2739:17:0::1;-1:-1:-1::0;;;;;2739:17:0;::::1;::::0;;::::1;::::0;;2772:38:::1;::::0;2739:17;;;;2772:38:::1;::::0;2739:6;2772:38:::1;2595:223:::0;:::o;7650:265::-;-1:-1:-1;;;;;7743:19:0;;;;;;:44;;-1:-1:-1;;;;;;7766:21:0;;;;7743:44;7735:77;;;;-1:-1:-1;;;7735:77:0;;9194:2:1;7735:77:0;;;9176:21:1;9233:2;9213:18;;;9206:30;-1:-1:-1;;;9252:18:1;;;9245:50;9312:18;;7735:77:0;8992:344:1;7735:77:0;-1:-1:-1;;;;;7823:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7875:32;;1361:25:1;;;7875:32:0;;1334:18:1;7875:32:0;;;;;;;7650:265;;;:::o;7923:2378::-;-1:-1:-1;;;;;8011:18:0;;8003:68;;;;-1:-1:-1;;;8003:68:0;;9543:2:1;8003:68:0;;;9525:21:1;9582:2;9562:18;;;9555:30;9621:34;9601:18;;;9594:62;-1:-1:-1;;;9672:18:1;;;9665:35;9717:19;;8003:68:0;9341:401:1;8003:68:0;-1:-1:-1;;;;;8090:16:0;;8082:64;;;;-1:-1:-1;;;8082:64:0;;9949:2:1;8082:64:0;;;9931:21:1;9988:2;9968:18;;;9961:30;10027:34;10007:18;;;10000:62;-1:-1:-1;;;10078:18:1;;;10071:33;10121:19;;8082:64:0;9747:399:1;8082:64:0;8174:1;8165:6;:10;8157:64;;;;-1:-1:-1;;;8157:64:0;;10353:2:1;8157:64:0;;;10335:21:1;10392:2;10372:18;;;10365:30;10431:34;10411:18;;;10404:62;-1:-1:-1;;;10482:18:1;;;10475:39;10531:19;;8157:64:0;10151:405:1;8157:64:0;-1:-1:-1;;;;;8266:23:0;;8234:12;8266:23;;;:17;:23;;;;;;;;8265:24;:50;;;;-1:-1:-1;;;;;;8294:21:0;;;;;;:17;:21;;;;;;;;8293:22;8265:50;8261:657;;;8344:13;;-1:-1:-1;;;;;8336:21:0;;;8344:13;;8336:21;:55;;;;-1:-1:-1;;;;;;8361:30:0;;5286:42;8361:30;;8336:55;8332:575;;;8446:18;;8436:6;8420:13;8430:2;-1:-1:-1;;;;;6831:17:0;6804:7;6831:17;;;:8;:17;;;;;;;6738:118;8420:13;:22;;;;:::i;:::-;:44;;:71;;;-1:-1:-1;8468:18:0;;:23;8420:71;8412:112;;;;-1:-1:-1;;;8412:112:0;;10893:2:1;8412:112:0;;;10875:21:1;10932:2;10912:18;;;10905:30;10971;10951:18;;;10944:58;11019:18;;8412:112:0;10691:352:1;8412:112:0;8561:14;;8551:6;:24;;:47;;;-1:-1:-1;8579:14:0;;:19;8551:47;8543:84;;;;-1:-1:-1;;;8543:84:0;;11250:2:1;8543:84:0;;;11232:21:1;11289:2;11269:18;;;11262:30;-1:-1:-1;;;11308:18:1;;;11301:54;11372:18;;8543:84:0;11048:348:1;8543:84:0;-1:-1:-1;8653:6:0;;8332:575;;;8691:13;;-1:-1:-1;;;;;8691:13:0;;;8685:19;;;;8681:226;;8743:14;;8733:6;:24;;:47;;;-1:-1:-1;8761:14:0;;:19;8733:47;8725:84;;;;-1:-1:-1;;;8725:84:0;;11250:2:1;8725:84:0;;;11232:21:1;11289:2;11269:18;;;11262:30;-1:-1:-1;;;11308:18:1;;;11301:54;11372:18;;8725:84:0;11048:348:1;8725:84:0;-1:-1:-1;8835:7:0;;8681:226;;;-1:-1:-1;8890:1:0;8681:226;8930:17;8968:3;8951:13;8960:4;8951:6;:13;:::i;:::-;8950:21;;;;:::i;:::-;8930:41;-1:-1:-1;8982:22:0;9007:18;8930:41;9007:6;:18;:::i;:::-;-1:-1:-1;;;;;9055:14:0;;;;;;:8;:14;;;;;;8982:43;;-1:-1:-1;9055:23:0;;9072:6;;9055:23;:::i;:::-;-1:-1:-1;;;;;9038:14:0;;;;;;:8;:14;;;;;;:40;;;;9132:4;9115:23;;;;:35;;9141:9;;9115:35;:::i;:::-;9106:4;9089:23;;;;:8;:23;;;;;:61;;;9220:16;;-1:-1:-1;;;9220:16:0;;;;9219:17;:42;;;;-1:-1:-1;9248:13:0;;-1:-1:-1;;;;;9240:21:0;;;9248:13;;9240:21;;9219:42;:65;;;;-1:-1:-1;9271:13:0;;-1:-1:-1;;;;;9265:19:0;;;9271:13;;9265:19;9219:65;:80;;;;-1:-1:-1;9288:11:0;;-1:-1:-1;;;9288:11:0;;;;9219:80;9215:373;;;9331:18;;9320:7;:29;9316:261;;9370:25;9387:7;9370:16;:25::i;:::-;9435:21;9479:14;;9475:87;;9518:24;9531:10;9518:12;:24::i;:::-;9351:226;9316:261;-1:-1:-1;;;;;9605:21:0;;;;;;:17;:21;;;;;;;;9604:22;:45;;;;-1:-1:-1;9636:13:0;;-1:-1:-1;;;;;9630:19:0;;;9636:13;;9630:19;;9604:45;:66;;;;-1:-1:-1;;;;;;9653:12:0;;;;;;:8;:12;;;;;;:17;9604:66;9600:115;;;9687:7;:16;;;;;;;-1:-1:-1;9687:16:0;;;;;;;;-1:-1:-1;;;;;;9687:16:0;-1:-1:-1;;;;;9687:16:0;;;;;9600:115;-1:-1:-1;;;;;9742:12:0;;;;;;:8;:12;;;;;;:29;;9757:14;;9742:29;:::i;:::-;-1:-1:-1;;;;;9727:12:0;;;;;;:8;:12;;;;;:44;9788:13;;9784:91;;9823:40;;1361:25:1;;;9846:4:0;;-1:-1:-1;;;;;9823:40:0;;;;;1349:2:1;1334:18;9823:40:0;;;;;;;9784:91;-1:-1:-1;;;;;9892:23:0;;;;;;:17;:23;;;;;;;;9891:24;:49;;;;-1:-1:-1;9927:13:0;;-1:-1:-1;;;;;9919:21:0;;;9927:13;;9919:21;;9891:49;:72;;;;-1:-1:-1;;;;;;9944:14:0;;;;;;:8;:14;;;;;;:19;9891:72;9887:355;;;9985:9;9980:251;10004:7;:14;10000:18;;9980:251;;;10063:4;-1:-1:-1;;;;;10049:18:0;:7;10057:1;10049:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;10049:10:0;:18;10045:171;;10105:7;10113:14;;:18;;10130:1;;10113:18;:::i;:::-;10105:27;;;;;;;;:::i;:::-;;;;;;;;;;;10092:7;:10;;-1:-1:-1;;;;;10105:27:0;;;;10100:1;;10092:10;;;;;;:::i;:::-;;;;;;;;;:40;;;;;-1:-1:-1;;;;;10092:40:0;;;;;-1:-1:-1;;;;;10092:40:0;;;;;;10155:7;:13;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;10155:13:0;;;;;-1:-1:-1;;;;;;10155:13:0;;;;;;10191:5;;10045:171;10020:4;;;;:::i;:::-;;;;9980:251;;;;9887:355;10274:2;-1:-1:-1;;;;;10259:34:0;10268:4;-1:-1:-1;;;;;10259:34:0;;10278:14;10259:34;;;;1361:25:1;;1349:2;1334:18;;1215:177;10259:34:0;;;;;;;;7992:2309;;;;7923:2378;;;:::o;1277:190::-;1363:7;1399:12;1391:6;;;;1383:29;;;;-1:-1:-1;;;1383:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1423:9:0;1435:5;1439:1;1435;:5;:::i;:::-;1423:17;1277:190;-1:-1:-1;;;;;1277:190:0:o;10309:412::-;5565:16;:23;;-1:-1:-1;;;;5565:23:0;-1:-1:-1;;;5565:23:0;;;10412:16:::1;::::0;;10426:1:::1;10412:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10412:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10412:16:0::1;10388:40;;10457:4;10439;10444:1;10439:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;10439:23:0::1;;;-1:-1:-1::0;;;;;10439:23:0::1;;;::::0;::::1;5286:42;-1:-1:-1::0;;;;;10483:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10473:4;10478:1;10473:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10473:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:32;10516:197:::1;::::0;-1:-1:-1;;;10516:197:0;;5286:42:::1;::::0;10516:66:::1;::::0;:197:::1;::::0;10597:12;;10624:1:::1;::::0;10640:4;;10667::::1;::::0;10687:15:::1;::::0;10516:197:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5611:16:0;:24;;-1:-1:-1;;;;5611:24:0;;;-1:-1:-1;;;;10309:412:0:o;10737:133::-;10833:9;;:29;;10815:7;;-1:-1:-1;;;;;10833:9:0;;:29;;;;;10815:7;;10795:17;10833:29;10795:17;10833:29;10815:7;10833:9;:29;;;;;;;;;;;;;;;;;;;;;10784:86;10737:133;:::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;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;1858:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;-1:-1:-1;2009:23:1;;1858:180;-1:-1:-1;1858:180:1:o;2440:248::-;2508:6;2516;2569:2;2557:9;2548:7;2544:23;2540:32;2537:52;;;2585:1;2582;2575:12;2537:52;-1:-1:-1;;2608:23:1;;;2678:2;2663:18;;;2650:32;;-1:-1:-1;2440:248:1:o;2693:247::-;2752:6;2805:2;2793:9;2784:7;2780:23;2776:32;2773:52;;;2821:1;2818;2811:12;2773:52;2860:9;2847:23;2879:31;2904:5;2879:31;:::i;:::-;2929:5;2693:247;-1:-1:-1;;;2693:247:1:o;2945:388::-;3013:6;3021;3074:2;3062:9;3053:7;3049:23;3045:32;3042:52;;;3090:1;3087;3080:12;3042:52;3129:9;3116:23;3148:31;3173:5;3148:31;:::i;:::-;3198:5;-1:-1:-1;3255:2:1;3240:18;;3227:32;3268:33;3227:32;3268:33;:::i;:::-;3320:7;3310:17;;;2945:388;;;;;:::o;3338:454::-;3433:6;3441;3449;3457;3465;3518:3;3506:9;3497:7;3493:23;3489:33;3486:53;;;3535:1;3532;3525:12;3486:53;-1:-1:-1;;3558:23:1;;;3628:2;3613:18;;3600:32;;-1:-1:-1;3679:2:1;3664:18;;3651:32;;3730:2;3715:18;;3702:32;;-1:-1:-1;3781:3:1;3766:19;3753:33;;-1:-1:-1;3338:454:1;-1:-1:-1;3338:454:1:o;3797:127::-;3858:10;3853:3;3849:20;3846:1;3839:31;3889:4;3886:1;3879:15;3913:4;3910:1;3903:15;3929:422;4018:1;4061:5;4018:1;4075:270;4096:7;4086:8;4083:21;4075:270;;;4155:4;4151:1;4147:6;4143:17;4137:4;4134:27;4131:53;;;4164:18;;:::i;:::-;4214:7;4204:8;4200:22;4197:55;;;4234:16;;;;4197:55;4313:22;;;;4273:15;;;;4075:270;;;4079:3;3929:422;;;;;:::o;4356:806::-;4405:5;4435:8;4425:80;;-1:-1:-1;4476:1:1;4490:5;;4425:80;4524:4;4514:76;;-1:-1:-1;4561:1:1;4575:5;;4514:76;4606:4;4624:1;4619:59;;;;4692:1;4687:130;;;;4599:218;;4619:59;4649:1;4640:10;;4663:5;;;4687:130;4724:3;4714:8;4711:17;4708:43;;;4731:18;;:::i;:::-;-1:-1:-1;;4787:1:1;4773:16;;4802:5;;4599:218;;4901:2;4891:8;4888:16;4882:3;4876:4;4873:13;4869:36;4863:2;4853:8;4850:16;4845:2;4839:4;4836:12;4832:35;4829:77;4826:159;;;-1:-1:-1;4938:19:1;;;4970:5;;4826:159;5017:34;5042:8;5036:4;5017:34;:::i;:::-;5087:6;5083:1;5079:6;5075:19;5066:7;5063:32;5060:58;;;5098:18;;:::i;:::-;5136:20;;4356:806;-1:-1:-1;;;4356:806:1:o;5167:140::-;5225:5;5254:47;5295:4;5285:8;5281:19;5275:4;5254:47;:::i;5312:168::-;5385:9;;;5416;;5433:15;;;5427:22;;5413:37;5403:71;;5454:18;;:::i;5832:347::-;6034:2;6016:21;;;6073:2;6053:18;;;6046:30;6112:25;6107:2;6092:18;;6085:53;6170:2;6155:18;;5832:347::o;6589:251::-;6659:6;6712:2;6700:9;6691:7;6687:23;6683:32;6680:52;;;6728:1;6725;6718:12;6680:52;6760:9;6754:16;6779:31;6804:5;6779:31;:::i;7766:306::-;7854:6;7862;7870;7923:2;7911:9;7902:7;7898:23;7894:32;7891:52;;;7939:1;7936;7929:12;7891:52;7968:9;7962:16;7952:26;;8018:2;8007:9;8003:18;7997:25;7987:35;;8062:2;8051:9;8047:18;8041:25;8031:35;;7766:306;;;;;:::o;8356:277::-;8423:6;8476:2;8464:9;8455:7;8451:23;8447:32;8444:52;;;8492:1;8489;8482:12;8444:52;8524:9;8518:16;8577:5;8570:13;8563:21;8556:5;8553:32;8543:60;;8599:1;8596;8589:12;10561:125;10626:9;;;10647:10;;;10644:36;;;10660:18;;:::i;11401:217::-;11441:1;11467;11457:132;;11511:10;11506:3;11502:20;11499:1;11492:31;11546:4;11543:1;11536:15;11574:4;11571:1;11564:15;11457:132;-1:-1:-1;11603:9:1;;11401:217::o;11623:128::-;11690:9;;;11711:11;;;11708:37;;;11725:18;;:::i;11756:127::-;11817:10;11812:3;11808:20;11805:1;11798:31;11848:4;11845:1;11838:15;11872:4;11869:1;11862:15;11888:127;11949:10;11944:3;11940:20;11937:1;11930:31;11980:4;11977:1;11970:15;12004:4;12001:1;11994:15;12020:135;12059:3;12080:17;;;12077:43;;12100:18;;:::i;:::-;-1:-1:-1;12147:1:1;12136:13;;12020:135::o;12292:980::-;12554:4;12602:3;12591:9;12587:19;12633:6;12622:9;12615:25;12659:2;12697:6;12692:2;12681:9;12677:18;12670:34;12740:3;12735:2;12724:9;12720:18;12713:31;12764:6;12799;12793:13;12830:6;12822;12815:22;12868:3;12857:9;12853:19;12846:26;;12907:2;12899:6;12895:15;12881:29;;12928:1;12938:195;12952:6;12949:1;12946:13;12938:195;;;13017:13;;-1:-1:-1;;;;;13013:39:1;13001:52;;13108:15;;;;13073:12;;;;13049:1;12967:9;12938:195;;;-1:-1:-1;;;;;;;13189:32:1;;;;13184:2;13169:18;;13162:60;-1:-1:-1;;;13253:3:1;13238:19;13231:35;13150:3;12292:980;-1:-1:-1;;;12292:980:1:o

Swarm Source

ipfs://5c05466acdbd303757cb178226bf397f840dfbf151eaf57f02bbd165ebc62e8a
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.