ETH Price: $3,458.43 (-1.66%)
Gas: 5 Gwei

Token

AntiBot (ATB)
 

Overview

Max Total Supply

10,000,000,000 ATB

Holders

368

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000720721117927043 ATB

Value
$0.00
0xd48097a46bf7188f232da6b8b77a5bc77bdc8c63
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:
ATB

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-23
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.16;

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

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

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

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

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

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
}

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

abstract contract Ownable is Context {
    address internal _owner;
    address private _previousOwner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

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

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

interface IUniswapV2Pair {
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}

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

contract ATB is ERC20 {
    using SafeMath for uint256;

    mapping(address => bool) private _isExcludedFromFee;
    
    address public marketingWallet;

    uint256 public buyFee = 3;
    uint256 public sellFee = 3;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool inSwapAndLiquify;
    bool public swapAndSendFeesEnabled = true;
    bool public tradingEnabled = false;
    uint256 public numTokensSellToSendFees;

    event swapAndSendFeesEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

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

    constructor() ERC20("AntiBot", "ATB") {
        numTokensSellToSendFees = 50000000 * 10 ** decimals();
        marketingWallet = 0xd2004F479C3DbdD58836cbb59373EdAE752874D7;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingWallet] = true;

        _mint(owner(), 10000000000 * 10 ** decimals());
    }

    function includeAndExcludeFromFee(
        address account,
        bool value
    ) public onlyOwner {
        _isExcludedFromFee[account] = value;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function enableTrading() external onlyOwner {
        tradingEnabled = true;
    }

    function setBuyAndSellFee(
        uint256 bFee,
        uint256 sFee
    ) external onlyOwner {
        buyFee = bFee;
        sellFee = sFee;
    }

    function setmarketingWallet(address _addr) external onlyOwner {
        marketingWallet = _addr;
    }

    function setNumTokensSellToSendFees(uint256 amount) external onlyOwner {
        numTokensSellToSendFees = amount * 10 ** decimals();
    }

    function setswapAndSendFeesEnabled(bool _enabled) external onlyOwner {
        swapAndSendFeesEnabled = _enabled;
        emit swapAndSendFeesEnabledUpdated(_enabled);
    }

    receive() external payable {}

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        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");

        if (from != owner() && !tradingEnabled) {
            require(tradingEnabled, "Trading is not enabled yet");
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinTokenBalance = contractTokenBalance >=
            numTokensSellToSendFees;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndSendFeesEnabled
        ) {
            contractTokenBalance = numTokensSellToSendFees;
            swapBack(contractTokenBalance);
        }

        bool takeFee = true;
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            super._transfer(from, to, amount);
            takeFee = false;
        } else {
            if (from == uniswapV2Pair) {
                uint256 marketingTokens = amount.mul(buyFee).div(100);
                amount = amount.sub(marketingTokens);
                super._transfer(from, address(this), marketingTokens);
                super._transfer(from, to, amount);
            } else if (to == uniswapV2Pair) {
                uint256 marketingTokens = amount.mul(sellFee).div(
                    100
                );
                amount = amount.sub(marketingTokens);
                super._transfer(from, address(this), marketingTokens);
                super._transfer(from, to, amount);
            } else {
                super._transfer(from, to, amount);
            }
        }
    }

    function swapBack(uint256 contractBalance) private lockTheSwap {
        uint256 marketingTokens = contractBalance.mul(sellFee).div(
            100
        );
        uint256 totalTokensToSwap = marketingTokens;
        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }
        bool success;
        swapTokensForEth(contractBalance);
        uint256 ethBalance = address(this).balance;
        uint256 ethForMarketing = (ethBalance * marketingTokens) /
            (totalTokensToSwap);
        (success, ) = address(marketingWallet).call{
            value: ethForMarketing
        }("");
    }

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

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"swapAndSendFeesEnabledUpdated","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeAndExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToSendFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"bFee","type":"uint256"},{"internalType":"uint256","name":"sFee","type":"uint256"}],"name":"setBuyAndSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumTokensSellToSendFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setmarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setswapAndSendFeesEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndSendFeesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260036009819055600a55600c805461ffff60a81b1916600160a81b1790553480156200002f57600080fd5b5060405180604001604052806007815260200166105b9d1a509bdd60ca1b8152506040518060400160405280600381526020016220aa2160e91b8152506200007c6200036c60201b60201c565b600080546001600160a01b0319166001600160a01b039290921691821781556040517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36005620000d1838262000520565b506006620000e0828262000520565b50620000ed915050601290565b620000fa90600a620006ff565b6200010a906302faf08062000710565b600d55600880546001600160a01b03191673d2004f479c3dbdd58836cbb59373edae752874d71790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa15801562000187573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ad91906200072a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022191906200072a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200026f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029591906200072a565b600c80546001600160a01b03199081166001600160a01b0393841617909155600b8054909116918316919091179055600160076000620002d23390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600790935281832080548516600190811790915560085490911683529120805490921617905562000365620003406000546001600160a01b031690565b6200034e6012600a620006ff565b6200035f906402540be40062000710565b62000370565b5062000772565b3390565b6001600160a01b038216620003cb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b600454620003da908262000465565b6004556001600160a01b03821660009081526002602052604090205462000402908262000465565b6001600160a01b0383166000818152600260205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620004549085815260200190565b60405180910390a35050565b505050565b60006200047382846200075c565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004a757607f821691505b602082108103620004c857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200046057600081815260208120601f850160051c81016020861015620004f75750805b601f850160051c820191505b81811015620005185782815560010162000503565b505050505050565b81516001600160401b038111156200053c576200053c6200047c565b62000554816200054d845462000492565b84620004ce565b602080601f8311600181146200058c5760008415620005735750858301515b600019600386901b1c1916600185901b17855562000518565b600085815260208120601f198616915b82811015620005bd578886015182559484019460019091019084016200059c565b5085821015620005dc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000643578160001904821115620006275762000627620005ec565b808516156200063557918102915b93841c939080029062000607565b509250929050565b6000826200065c5750600162000476565b816200066b5750600062000476565b81600181146200068457600281146200068f57620006af565b600191505062000476565b60ff841115620006a357620006a3620005ec565b50506001821b62000476565b5060208310610133831016604e8410600b8410161715620006d4575081810a62000476565b620006e0838362000602565b8060001904821115620006f757620006f7620005ec565b029392505050565b60006200047360ff8416836200064b565b8082028115828204841417620004765762000476620005ec565b6000602082840312156200073d57600080fd5b81516001600160a01b03811681146200075557600080fd5b9392505050565b80820180821115620004765762000476620005ec565b61178380620007826000396000f3fe6080604052600436106101c65760003560e01c80635342acb4116100f75780638da5cb5b11610095578063a9059cbb11610064578063a9059cbb14610512578063da7e2c7f14610532578063dd62ed3e14610552578063f2fde38b1461059857600080fd5b80638da5cb5b1461049f57806395d89b41146104bd578063a346304f146104d2578063a457c2d7146104f257600080fd5b8063715018a6116100d1578063715018a61461043557806375f0a8741461044a57806384e2b88d1461046a5780638a8c523c1461048a57600080fd5b80635342acb4146103b057806353cae9cf146103e957806370a08231146103ff57600080fd5b806323b872dd11610164578063395093511161013e5780633950935114610339578063470624021461035957806349bd5a5e1461036f5780634ada218b1461038f57600080fd5b806323b872dd146102e75780632b14ca5614610307578063313ce5671461031d57600080fd5b8063148d2161116101a0578063148d21611461024f5780631694505e1461027057806318160ddd146102a857806322461173146102c757600080fd5b806302a8b041146101d257806306fdde03146101f4578063095ea7b31461021f57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101f26101ed366004611223565b6105b8565b005b34801561020057600080fd5b50610209610643565b604051610216919061123e565b60405180910390f35b34801561022b57600080fd5b5061023f61023a3660046112a4565b6106d5565b6040519015158152602001610216565b34801561025b57600080fd5b50600c5461023f90600160a81b900460ff1681565b34801561027c57600080fd5b50600b54610290906001600160a01b031681565b6040516001600160a01b039091168152602001610216565b3480156102b457600080fd5b506004545b604051908152602001610216565b3480156102d357600080fd5b506101f26102e23660046112d0565b6106ec565b3480156102f357600080fd5b5061023f6103023660046112ed565b610738565b34801561031357600080fd5b506102b9600a5481565b34801561032957600080fd5b5060405160128152602001610216565b34801561034557600080fd5b5061023f6103543660046112a4565b6107a1565b34801561036557600080fd5b506102b960095481565b34801561037b57600080fd5b50600c54610290906001600160a01b031681565b34801561039b57600080fd5b50600c5461023f90600160b01b900460ff1681565b3480156103bc57600080fd5b5061023f6103cb3660046112d0565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156103f557600080fd5b506102b9600d5481565b34801561040b57600080fd5b506102b961041a3660046112d0565b6001600160a01b031660009081526002602052604090205490565b34801561044157600080fd5b506101f26107d7565b34801561045657600080fd5b50600854610290906001600160a01b031681565b34801561047657600080fd5b506101f261048536600461132e565b61084b565b34801561049657600080fd5b506101f2610891565b3480156104ab57600080fd5b506000546001600160a01b0316610290565b3480156104c957600080fd5b506102096108d0565b3480156104de57600080fd5b506101f26104ed366004611347565b6108df565b3480156104fe57600080fd5b5061023f61050d3660046112a4565b610914565b34801561051e57600080fd5b5061023f61052d3660046112a4565b610963565b34801561053e57600080fd5b506101f261054d366004611369565b610970565b34801561055e57600080fd5b506102b961056d36600461139e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156105a457600080fd5b506101f26105b33660046112d0565b6109c5565b6000546001600160a01b031633146105eb5760405162461bcd60e51b81526004016105e2906113d7565b60405180910390fd5b600c8054821515600160a81b0260ff60a81b199091161790556040517f95104a55e36dd507aac6f3a5211027febb09c940366b18700bc6e6cedf67426b9061063890831515815260200190565b60405180910390a150565b6060600580546106529061140c565b80601f016020809104026020016040519081016040528092919081815260200182805461067e9061140c565b80156106cb5780601f106106a0576101008083540402835291602001916106cb565b820191906000526020600020905b8154815290600101906020018083116106ae57829003601f168201915b5050505050905090565b60006106e2338484610aaf565b5060015b92915050565b6000546001600160a01b031633146107165760405162461bcd60e51b81526004016105e2906113d7565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000610745848484610bd4565b610797843361079285604051806060016040528060288152602001611701602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610e79565b610aaf565b5060019392505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916106e29185906107929086610ea5565b6000546001600160a01b031633146108015760405162461bcd60e51b81526004016105e2906113d7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108755760405162461bcd60e51b81526004016105e2906113d7565b6108816012600a611540565b61088b908261154f565b600d5550565b6000546001600160a01b031633146108bb5760405162461bcd60e51b81526004016105e2906113d7565b600c805460ff60b01b1916600160b01b179055565b6060600680546106529061140c565b6000546001600160a01b031633146109095760405162461bcd60e51b81526004016105e2906113d7565b600991909155600a55565b60006106e2338461079285604051806060016040528060258152602001611729602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190610e79565b60006106e2338484610bd4565b6000546001600160a01b0316331461099a5760405162461bcd60e51b81526004016105e2906113d7565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146109ef5760405162461bcd60e51b81526004016105e2906113d7565b6001600160a01b038116610a545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e2565b6001600160a01b038216610b725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610bfa5760405162461bcd60e51b81526004016105e290611566565b6001600160a01b038216610c205760405162461bcd60e51b81526004016105e2906115ab565b60008111610c825760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105e2565b6000546001600160a01b03848116911614801590610caa5750600c54600160b01b900460ff16155b15610d0857600c54600160b01b900460ff16610d085760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c65642079657400000000000060448201526064016105e2565b30600090815260026020526040902054600d5481108015908190610d365750600c54600160a01b900460ff16155b8015610d505750600c546001600160a01b03868116911614155b8015610d655750600c54600160a81b900460ff165b15610d7857600d549150610d7882610eb8565b6001600160a01b03851660009081526007602052604090205460019060ff1680610dba57506001600160a01b03851660009081526007602052604090205460ff165b15610dd257610dca868686610f8c565b506000610e71565b600c546001600160a01b0390811690871603610e34576000610e0a6064610e046009548861109890919063ffffffff16565b906110a4565b9050610e1685826110b0565b9450610e23873083610f8c565b610e2e878787610f8c565b50610e71565b600c546001600160a01b0390811690861603610e66576000610e0a6064610e04600a548861109890919063ffffffff16565b610e71868686610f8c565b505050505050565b60008184841115610e9d5760405162461bcd60e51b81526004016105e2919061123e565b505050900390565b6000610eb182846115ee565b9392505050565b600c805460ff60a01b1916600160a01b179055600a54600090610ee390606490610e04908590611098565b905080821580610ef1575080155b15610efd575050610f7c565b6000610f08846110bc565b47600083610f16868461154f565b610f209190611601565b6008546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114610f6e576040519150601f19603f3d011682016040523d82523d6000602084013e610f73565b606091505b50505050505050505b50600c805460ff60a01b19169055565b6001600160a01b038316610fb25760405162461bcd60e51b81526004016105e290611566565b6001600160a01b038216610fd85760405162461bcd60e51b81526004016105e2906115ab565b611015816040518060600160405280602681526020016116db602691396001600160a01b0386166000908152600260205260409020549190610e79565b6001600160a01b0380851660009081526002602052604080822093909355908416815220546110449082610ea5565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bc79085815260200190565b6000610eb1828461154f565b6000610eb18284611601565b6000610eb18284611623565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106110f1576110f1611636565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561114a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116e919061164c565b8160018151811061118157611181611636565b6001600160a01b039283166020918202929092010152600b546111a79130911684610aaf565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906111e0908590600090869030904290600401611669565b600060405180830381600087803b1580156111fa57600080fd5b505af1158015610e71573d6000803e3d6000fd5b8035801515811461121e57600080fd5b919050565b60006020828403121561123557600080fd5b610eb18261120e565b600060208083528351808285015260005b8181101561126b5785810183015185820160400152820161124f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112a157600080fd5b50565b600080604083850312156112b757600080fd5b82356112c28161128c565b946020939093013593505050565b6000602082840312156112e257600080fd5b8135610eb18161128c565b60008060006060848603121561130257600080fd5b833561130d8161128c565b9250602084013561131d8161128c565b929592945050506040919091013590565b60006020828403121561134057600080fd5b5035919050565b6000806040838503121561135a57600080fd5b50508035926020909101359150565b6000806040838503121561137c57600080fd5b82356113878161128c565b91506113956020840161120e565b90509250929050565b600080604083850312156113b157600080fd5b82356113bc8161128c565b915060208301356113cc8161128c565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061142057607f821691505b60208210810361144057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561149757816000190482111561147d5761147d611446565b8085161561148a57918102915b93841c9390800290611461565b509250929050565b6000826114ae575060016106e6565b816114bb575060006106e6565b81600181146114d157600281146114db576114f7565b60019150506106e6565b60ff8411156114ec576114ec611446565b50506001821b6106e6565b5060208310610133831016604e8410600b841016171561151a575081810a6106e6565b611524838361145c565b806000190482111561153857611538611446565b029392505050565b6000610eb160ff84168361149f565b80820281158282048414176106e6576106e6611446565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808201808211156106e6576106e6611446565b60008261161e57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106e6576106e6611446565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561165e57600080fd5b8151610eb18161128c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116b95784516001600160a01b031683529383019391830191600101611694565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ea35597ddf3ba7e14961ece6daa0d74dcaf4a2c3075badad80adc8ec3df55ef464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c80635342acb4116100f75780638da5cb5b11610095578063a9059cbb11610064578063a9059cbb14610512578063da7e2c7f14610532578063dd62ed3e14610552578063f2fde38b1461059857600080fd5b80638da5cb5b1461049f57806395d89b41146104bd578063a346304f146104d2578063a457c2d7146104f257600080fd5b8063715018a6116100d1578063715018a61461043557806375f0a8741461044a57806384e2b88d1461046a5780638a8c523c1461048a57600080fd5b80635342acb4146103b057806353cae9cf146103e957806370a08231146103ff57600080fd5b806323b872dd11610164578063395093511161013e5780633950935114610339578063470624021461035957806349bd5a5e1461036f5780634ada218b1461038f57600080fd5b806323b872dd146102e75780632b14ca5614610307578063313ce5671461031d57600080fd5b8063148d2161116101a0578063148d21611461024f5780631694505e1461027057806318160ddd146102a857806322461173146102c757600080fd5b806302a8b041146101d257806306fdde03146101f4578063095ea7b31461021f57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101f26101ed366004611223565b6105b8565b005b34801561020057600080fd5b50610209610643565b604051610216919061123e565b60405180910390f35b34801561022b57600080fd5b5061023f61023a3660046112a4565b6106d5565b6040519015158152602001610216565b34801561025b57600080fd5b50600c5461023f90600160a81b900460ff1681565b34801561027c57600080fd5b50600b54610290906001600160a01b031681565b6040516001600160a01b039091168152602001610216565b3480156102b457600080fd5b506004545b604051908152602001610216565b3480156102d357600080fd5b506101f26102e23660046112d0565b6106ec565b3480156102f357600080fd5b5061023f6103023660046112ed565b610738565b34801561031357600080fd5b506102b9600a5481565b34801561032957600080fd5b5060405160128152602001610216565b34801561034557600080fd5b5061023f6103543660046112a4565b6107a1565b34801561036557600080fd5b506102b960095481565b34801561037b57600080fd5b50600c54610290906001600160a01b031681565b34801561039b57600080fd5b50600c5461023f90600160b01b900460ff1681565b3480156103bc57600080fd5b5061023f6103cb3660046112d0565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156103f557600080fd5b506102b9600d5481565b34801561040b57600080fd5b506102b961041a3660046112d0565b6001600160a01b031660009081526002602052604090205490565b34801561044157600080fd5b506101f26107d7565b34801561045657600080fd5b50600854610290906001600160a01b031681565b34801561047657600080fd5b506101f261048536600461132e565b61084b565b34801561049657600080fd5b506101f2610891565b3480156104ab57600080fd5b506000546001600160a01b0316610290565b3480156104c957600080fd5b506102096108d0565b3480156104de57600080fd5b506101f26104ed366004611347565b6108df565b3480156104fe57600080fd5b5061023f61050d3660046112a4565b610914565b34801561051e57600080fd5b5061023f61052d3660046112a4565b610963565b34801561053e57600080fd5b506101f261054d366004611369565b610970565b34801561055e57600080fd5b506102b961056d36600461139e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156105a457600080fd5b506101f26105b33660046112d0565b6109c5565b6000546001600160a01b031633146105eb5760405162461bcd60e51b81526004016105e2906113d7565b60405180910390fd5b600c8054821515600160a81b0260ff60a81b199091161790556040517f95104a55e36dd507aac6f3a5211027febb09c940366b18700bc6e6cedf67426b9061063890831515815260200190565b60405180910390a150565b6060600580546106529061140c565b80601f016020809104026020016040519081016040528092919081815260200182805461067e9061140c565b80156106cb5780601f106106a0576101008083540402835291602001916106cb565b820191906000526020600020905b8154815290600101906020018083116106ae57829003601f168201915b5050505050905090565b60006106e2338484610aaf565b5060015b92915050565b6000546001600160a01b031633146107165760405162461bcd60e51b81526004016105e2906113d7565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000610745848484610bd4565b610797843361079285604051806060016040528060288152602001611701602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610e79565b610aaf565b5060019392505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916106e29185906107929086610ea5565b6000546001600160a01b031633146108015760405162461bcd60e51b81526004016105e2906113d7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108755760405162461bcd60e51b81526004016105e2906113d7565b6108816012600a611540565b61088b908261154f565b600d5550565b6000546001600160a01b031633146108bb5760405162461bcd60e51b81526004016105e2906113d7565b600c805460ff60b01b1916600160b01b179055565b6060600680546106529061140c565b6000546001600160a01b031633146109095760405162461bcd60e51b81526004016105e2906113d7565b600991909155600a55565b60006106e2338461079285604051806060016040528060258152602001611729602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190610e79565b60006106e2338484610bd4565b6000546001600160a01b0316331461099a5760405162461bcd60e51b81526004016105e2906113d7565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146109ef5760405162461bcd60e51b81526004016105e2906113d7565b6001600160a01b038116610a545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e2565b6001600160a01b038216610b725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610bfa5760405162461bcd60e51b81526004016105e290611566565b6001600160a01b038216610c205760405162461bcd60e51b81526004016105e2906115ab565b60008111610c825760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105e2565b6000546001600160a01b03848116911614801590610caa5750600c54600160b01b900460ff16155b15610d0857600c54600160b01b900460ff16610d085760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c65642079657400000000000060448201526064016105e2565b30600090815260026020526040902054600d5481108015908190610d365750600c54600160a01b900460ff16155b8015610d505750600c546001600160a01b03868116911614155b8015610d655750600c54600160a81b900460ff165b15610d7857600d549150610d7882610eb8565b6001600160a01b03851660009081526007602052604090205460019060ff1680610dba57506001600160a01b03851660009081526007602052604090205460ff165b15610dd257610dca868686610f8c565b506000610e71565b600c546001600160a01b0390811690871603610e34576000610e0a6064610e046009548861109890919063ffffffff16565b906110a4565b9050610e1685826110b0565b9450610e23873083610f8c565b610e2e878787610f8c565b50610e71565b600c546001600160a01b0390811690861603610e66576000610e0a6064610e04600a548861109890919063ffffffff16565b610e71868686610f8c565b505050505050565b60008184841115610e9d5760405162461bcd60e51b81526004016105e2919061123e565b505050900390565b6000610eb182846115ee565b9392505050565b600c805460ff60a01b1916600160a01b179055600a54600090610ee390606490610e04908590611098565b905080821580610ef1575080155b15610efd575050610f7c565b6000610f08846110bc565b47600083610f16868461154f565b610f209190611601565b6008546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114610f6e576040519150601f19603f3d011682016040523d82523d6000602084013e610f73565b606091505b50505050505050505b50600c805460ff60a01b19169055565b6001600160a01b038316610fb25760405162461bcd60e51b81526004016105e290611566565b6001600160a01b038216610fd85760405162461bcd60e51b81526004016105e2906115ab565b611015816040518060600160405280602681526020016116db602691396001600160a01b0386166000908152600260205260409020549190610e79565b6001600160a01b0380851660009081526002602052604080822093909355908416815220546110449082610ea5565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bc79085815260200190565b6000610eb1828461154f565b6000610eb18284611601565b6000610eb18284611623565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106110f1576110f1611636565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561114a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116e919061164c565b8160018151811061118157611181611636565b6001600160a01b039283166020918202929092010152600b546111a79130911684610aaf565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906111e0908590600090869030904290600401611669565b600060405180830381600087803b1580156111fa57600080fd5b505af1158015610e71573d6000803e3d6000fd5b8035801515811461121e57600080fd5b919050565b60006020828403121561123557600080fd5b610eb18261120e565b600060208083528351808285015260005b8181101561126b5785810183015185820160400152820161124f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112a157600080fd5b50565b600080604083850312156112b757600080fd5b82356112c28161128c565b946020939093013593505050565b6000602082840312156112e257600080fd5b8135610eb18161128c565b60008060006060848603121561130257600080fd5b833561130d8161128c565b9250602084013561131d8161128c565b929592945050506040919091013590565b60006020828403121561134057600080fd5b5035919050565b6000806040838503121561135a57600080fd5b50508035926020909101359150565b6000806040838503121561137c57600080fd5b82356113878161128c565b91506113956020840161120e565b90509250929050565b600080604083850312156113b157600080fd5b82356113bc8161128c565b915060208301356113cc8161128c565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061142057607f821691505b60208210810361144057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561149757816000190482111561147d5761147d611446565b8085161561148a57918102915b93841c9390800290611461565b509250929050565b6000826114ae575060016106e6565b816114bb575060006106e6565b81600181146114d157600281146114db576114f7565b60019150506106e6565b60ff8411156114ec576114ec611446565b50506001821b6106e6565b5060208310610133831016604e8410600b841016171561151a575081810a6106e6565b611524838361145c565b806000190482111561153857611538611446565b029392505050565b6000610eb160ff84168361149f565b80820281158282048414176106e6576106e6611446565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808201808211156106e6576106e6611446565b60008261161e57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106e6576106e6611446565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561165e57600080fd5b8151610eb18161128c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116b95784516001600160a01b031683529383019391830191600101611694565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ea35597ddf3ba7e14961ece6daa0d74dcaf4a2c3075badad80adc8ec3df55ef464736f6c63430008130033

Deployed Bytecode Sourcemap

8641:5580:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10973:176;;;;;;;;;;-1:-1:-1;10973:176:0;;;;;:::i;:::-;;:::i;:::-;;3647:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4627:194;;;;;;;;;;-1:-1:-1;4627:194:0;;;;;:::i;:::-;;:::i;:::-;;;1538:14:1;;1531:22;1513:41;;1501:2;1486:18;4627:194:0;1373:187:1;8986:41:0;;;;;;;;;;-1:-1:-1;8986:41:0;;;;-1:-1:-1;;;8986:41:0;;;;;;8875;;;;;;;;;;-1:-1:-1;8875:41:0;;;;-1:-1:-1;;;;;8875:41:0;;;;;;-1:-1:-1;;;;;1755:32:1;;;1737:51;;1725:2;1710:18;8875:41:0;1565:229:1;3968:108:0;;;;;;;;;;-1:-1:-1;4056:12:0;;3968:108;;;1945:25:1;;;1933:2;1918:18;3968:108:0;1799:177:1;10712:104:0;;;;;;;;;;-1:-1:-1;10712:104:0;;;;;:::i;:::-;;:::i;4829:454::-;;;;;;;;;;-1:-1:-1;4829:454:0;;;;;:::i;:::-;;:::i;8840:26::-;;;;;;;;;;;;;;;;3867:93;;;;;;;;;;-1:-1:-1;3867:93:0;;3950:2;2836:36:1;;2824:2;2809:18;3867:93:0;2694:184:1;5291:293:0;;;;;;;;;;-1:-1:-1;5291:293:0;;;;;:::i;:::-;;:::i;8808:25::-;;;;;;;;;;;;;;;;8923:28;;;;;;;;;;-1:-1:-1;8923:28:0;;;;-1:-1:-1;;;;;8923:28:0;;;9034:34;;;;;;;;;;-1:-1:-1;9034:34:0;;;;-1:-1:-1;;;9034:34:0;;;;;;10325:124;;;;;;;;;;-1:-1:-1;10325:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;10414:27:0;10390:4;10414:27;;;:18;:27;;;;;;;;;10325:124;9075:38;;;;;;;;;;;;;;;;4084:143;;;;;;;;;;-1:-1:-1;4084:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;4201:18:0;4174:7;4201:18;;;:9;:18;;;;;;;4084:143;2528:148;;;;;;;;;;;;;:::i;8769:30::-;;;;;;;;;;-1:-1:-1;8769:30:0;;;;-1:-1:-1;;;;;8769:30:0;;;10824:141;;;;;;;;;;-1:-1:-1;10824:141:0;;;;;:::i;:::-;;:::i;10457:84::-;;;;;;;;;;;;;:::i;2305:87::-;;;;;;;;;;-1:-1:-1;2351:7:0;2378:6;-1:-1:-1;;;;;2378:6:0;2305:87;;3755:104;;;;;;;;;;;;;:::i;10549:155::-;;;;;;;;;;-1:-1:-1;10549:155:0;;;;;:::i;:::-;;:::i;5592:393::-;;;;;;;;;;-1:-1:-1;5592:393:0;;;;;:::i;:::-;;:::i;4235:200::-;;;;;;;;;;-1:-1:-1;4235:200:0;;;;;:::i;:::-;;:::i;10158:159::-;;;;;;;;;;-1:-1:-1;10158:159:0;;;;;:::i;:::-;;:::i;4443:176::-;;;;;;;;;;-1:-1:-1;4443:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;4584:18:0;;;4557:7;4584:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4443:176;2684:281;;;;;;;;;;-1:-1:-1;2684:281:0;;;;;:::i;:::-;;:::i;10973:176::-;2351:7;2378:6;-1:-1:-1;;;;;2378:6:0;1932:10;2440:23;2432:68;;;;-1:-1:-1;;;2432:68:0;;;;;;;:::i;:::-;;;;;;;;;11053:22:::1;:33:::0;;;::::1;;-1:-1:-1::0;;;11053:33:0::1;-1:-1:-1::0;;;;11053:33:0;;::::1;;::::0;;11102:39:::1;::::0;::::1;::::0;::::1;::::0;11078:8;1538:14:1;1531:22;1513:41;;1501:2;1486:18;;1373:187;11102:39:0::1;;;;;;;;10973:176:::0;:::o;3647:100::-;3701:13;3734:5;3727:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3647:100;:::o;4627:194::-;4735:4;4752:39;1932:10;4775:7;4784:6;4752:8;:39::i;:::-;-1:-1:-1;4809:4:0;4627:194;;;;;:::o;10712:104::-;2351:7;2378:6;-1:-1:-1;;;;;2378:6:0;1932:10;2440:23;2432:68;;;;-1:-1:-1;;;2432:68:0;;;;;;;:::i;:::-;10785:15:::1;:23:::0;;-1:-1:-1;;;;;;10785:23:0::1;-1:-1:-1::0;;;;;10785:23:0;;;::::1;::::0;;;::::1;::::0;;10712:104::o;4829:454::-;4969:4;4986:36;4996:6;5004:9;5015:6;4986:9;:36::i;:::-;5033:220;5056:6;1932:10;5104:138;5160:6;5104:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5104:19:0;;;;;;:11;:19;;;;;;;;1932:10;5104:33;;;;;;;;;;:37;:138::i;:::-;5033:8;:220::i;:::-;-1:-1:-1;5271:4:0;4829:454;;;;;:::o;5291:293::-;1932:10;5404:4;5493:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5493:34:0;;;;;;;;;;5404:4;;5421:133;;5471:7;;5493:50;;5532:10;5493:38;:50::i;2528:148::-;2351:7;2378:6;-1:-1:-1;;;;;2378:6:0;1932:10;2440:23;2432:68;;;;-1:-1:-1;;;2432:68:0;;;;;;;:::i;:::-;2635:1:::1;2619:6:::0;;2598:40:::1;::::0;-1:-1:-1;;;;;2619:6:0;;::::1;::::0;2598:40:::1;::::0;2635:1;;2598:40:::1;2666:1;2649:19:::0;;-1:-1:-1;;;;;;2649:19:0::1;::::0;;2528:148::o;10824:141::-;2351:7;2378:6;-1:-1:-1;;;;;2378:6:0;1932:10;2440:23;2432:68;;;;-1:-1:-1;;;2432:68:0;;;;;;;:::i;:::-;10941:16:::1;3950:2:::0;10941::::1;:16;:::i;:::-;10932:25;::::0;:6;:25:::1;:::i;:::-;10906:23;:51:::0;-1:-1:-1;10824:141:0:o;10457:84::-;2351:7;2378:6;-1:-1:-1;;;;;2378:6:0;1932:10;2440:23;2432:68;;;;-1:-1:-1;;;2432:68:0;;;;;;;:::i;:::-;10512:14:::1;:21:::0;;-1:-1:-1;;;;10512:21:0::1;-1:-1:-1::0;;;10512:21:0::1;::::0;;10457:84::o;3755:104::-;3811:13;3844:7;3837:14;;;;;:::i;10549:155::-;2351:7;2378:6;-1:-1:-1;;;;;2378:6:0;1932:10;2440:23;2432:68;;;;-1:-1:-1;;;2432:68:0;;;;;;;:::i;:::-;10658:6:::1;:13:::0;;;;10682:7:::1;:14:::0;10549:155::o;5592:393::-;5710:4;5727:228;1932:10;5777:7;5799:145;5856:15;5799:145;;;;;;;;;;;;;;;;;1932:10;5799:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5799:34:0;;;;;;;;;;;;:38;:145::i;4235:200::-;4346:4;4363:42;1932:10;4387:9;4398:6;4363:9;:42::i;10158:159::-;2351:7;2378:6;-1:-1:-1;;;;;2378:6:0;1932:10;2440:23;2432:68;;;;-1:-1:-1;;;2432:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10274:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;10274:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10158:159::o;2684:281::-;2351:7;2378:6;-1:-1:-1;;;;;2378:6:0;1932:10;2440:23;2432:68;;;;-1:-1:-1;;;2432:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2787:22:0;::::1;2765:110;;;::::0;-1:-1:-1;;;2765:110:0;;6878:2:1;2765:110:0::1;::::0;::::1;6860:21:1::0;6917:2;6897:18;;;6890:30;6956:34;6936:18;;;6929:62;-1:-1:-1;;;7007:18:1;;;7000:36;7053:19;;2765:110:0::1;6676:402:1::0;2765:110:0::1;2912:6;::::0;;2891:38:::1;::::0;-1:-1:-1;;;;;2891:38:0;;::::1;::::0;2912:6;::::1;::::0;2891:38:::1;::::0;::::1;2940:6;:17:::0;;-1:-1:-1;;;;;;2940:17:0::1;-1:-1:-1::0;;;;;2940:17:0;;;::::1;::::0;;;::::1;::::0;;2684:281::o;7460:380::-;-1:-1:-1;;;;;7596:19:0;;7588:68;;;;-1:-1:-1;;;7588:68:0;;7285:2:1;7588:68:0;;;7267:21:1;7324:2;7304:18;;;7297:30;7363:34;7343:18;;;7336:62;-1:-1:-1;;;7414:18:1;;;7407:34;7458:19;;7588:68:0;7083:400:1;7588:68:0;-1:-1:-1;;;;;7675:21:0;;7667:68;;;;-1:-1:-1;;;7667:68:0;;7690:2:1;7667:68:0;;;7672:21:1;7729:2;7709:18;;;7702:30;7768:34;7748:18;;;7741:62;-1:-1:-1;;;7819:18:1;;;7812:32;7861:19;;7667:68:0;7488:398:1;7667:68:0;-1:-1:-1;;;;;7748:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7800:32;;1945:25:1;;;7800:32:0;;1918:18:1;7800:32:0;;;;;;;;7460:380;;;:::o;11194:1863::-;-1:-1:-1;;;;;11326:18:0;;11318:68;;;;-1:-1:-1;;;11318:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11405:16:0;;11397:64;;;;-1:-1:-1;;;11397:64:0;;;;;;;:::i;:::-;11489:1;11480:6;:10;11472:64;;;;-1:-1:-1;;;11472:64:0;;8903:2:1;11472:64:0;;;8885:21:1;8942:2;8922:18;;;8915:30;8981:34;8961:18;;;8954:62;-1:-1:-1;;;9032:18:1;;;9025:39;9081:19;;11472:64:0;8701:405:1;11472:64:0;2351:7;2378:6;-1:-1:-1;;;;;11553:15:0;;;2378:6;;11553:15;;;;:34;;-1:-1:-1;11573:14:0;;-1:-1:-1;;;11573:14:0;;;;11572:15;11553:34;11549:120;;;11612:14;;-1:-1:-1;;;11612:14:0;;;;11604:53;;;;-1:-1:-1;;;11604:53:0;;9313:2:1;11604:53:0;;;9295:21:1;9352:2;9332:18;;;9325:30;9391:28;9371:18;;;9364:56;9437:18;;11604:53:0;9111:350:1;11604:53:0;11730:4;11681:28;4201:18;;;:9;:18;;;;;;11811:23;;11774:60;;;;;;;11863:53;;-1:-1:-1;11900:16:0;;-1:-1:-1;;;11900:16:0;;;;11899:17;11863:53;:91;;;;-1:-1:-1;11941:13:0;;-1:-1:-1;;;;;11933:21:0;;;11941:13;;11933:21;;11863:91;:130;;;;-1:-1:-1;11971:22:0;;-1:-1:-1;;;11971:22:0;;;;11863:130;11845:278;;;12043:23;;12020:46;;12081:30;12090:20;12081:8;:30::i;:::-;-1:-1:-1;;;;;12169:24:0;;12135:12;12169:24;;;:18;:24;;;;;;12150:4;;12169:24;;;:50;;-1:-1:-1;;;;;;12197:22:0;;;;;;:18;:22;;;;;;;;12169:50;12165:885;;;12236:33;12252:4;12258:2;12262:6;12236:15;:33::i;:::-;-1:-1:-1;12294:5:0;12165:885;;;12344:13;;-1:-1:-1;;;;;12344:13:0;;;12336:21;;;;12332:707;;12378:23;12404:27;12427:3;12404:18;12415:6;;12404;:10;;:18;;;;:::i;:::-;:22;;:27::i;:::-;12378:53;-1:-1:-1;12459:27:0;:6;12378:53;12459:10;:27::i;:::-;12450:36;;12505:53;12521:4;12535;12542:15;12505;:53::i;:::-;12577:33;12593:4;12599:2;12603:6;12577:15;:33::i;:::-;12359:267;12332:707;;;12642:13;;-1:-1:-1;;;;;12642:13:0;;;12636:19;;;;12632:407;;12676:23;12702:68;12748:3;12702:19;12713:7;;12702:6;:10;;:19;;;;:::i;12632:407::-;12990:33;13006:4;13012:2;13016:6;12990:15;:33::i;:::-;11307:1750;;;11194:1863;;;:::o;1325:240::-;1445:7;1506:12;1498:6;;;;1490:29;;;;-1:-1:-1;;;1490:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1541:5:0;;;1325:240::o;901:98::-;959:7;986:5;990:1;986;:5;:::i;:::-;979:12;901:98;-1:-1:-1;;;901:98:0:o;13065:646::-;9347:16;:23;;-1:-1:-1;;;;9347:23:0;-1:-1:-1;;;9347:23:0;;;13185:7:::1;::::0;9347:23;;13165:61:::1;::::0;13212:3:::1;::::0;13165:28:::1;::::0;:15;;:19:::1;:28::i;:61::-;13139:87:::0;-1:-1:-1;13139:87:0;13295:20;;;:46:::1;;-1:-1:-1::0;13319:22:0;;13295:46:::1;13291:85;;;13358:7;;;;13291:85;13386:12;13409:33;13426:15;13409:16;:33::i;:::-;13474:21;13453:18;13579:17:::0;13533:28:::1;13546:15:::0;13474:21;13533:28:::1;:::i;:::-;13532:65;;;;:::i;:::-;13630:15;::::0;13622:81:::1;::::0;13506:91;;-1:-1:-1;;;;;;13630:15:0::1;::::0;13506:91;;13622:81:::1;::::0;;;13506:91;13630:15;13622:81:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;9381:1:0::1;-1:-1:-1::0;9393:16:0;:24;;-1:-1:-1;;;;9393:24:0;;;13065:646::o;5993:610::-;-1:-1:-1;;;;;6133:20:0;;6125:70;;;;-1:-1:-1;;;6125:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6214:23:0;;6206:71;;;;-1:-1:-1;;;6206:71:0;;;;;;;:::i;:::-;6370:108;6406:6;6370:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6370:17:0;;;;;;:9;:17;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;6350:17:0;;;;;;;:9;:17;;;;;;:128;;;;6512:20;;;;;;;:32;;6537:6;6512:24;:32::i;:::-;-1:-1:-1;;;;;6489:20:0;;;;;;;:9;:20;;;;;;;:55;;;;6560:35;;;;;;;;;;6588:6;1945:25:1;;1933:2;1918:18;;1799:177;1113:98:0;1171:7;1198:5;1202:1;1198;:5;:::i;1219:98::-;1277:7;1304:5;1308:1;1304;:5;:::i;1007:98::-;1065:7;1092:5;1096:1;1092;:5;:::i;13719:499::-;13809:16;;;13823:1;13809:16;;;;;;;;13785:21;;13809:16;;;;;;;;;;-1:-1:-1;13809:16:0;13785:40;;13854:4;13836;13841:1;13836:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13836:23:0;;;:7;;;;;;;;;;:23;;;;13880:15;;:22;;;-1:-1:-1;;;13880:22:0;;;;:15;;;;;:20;;:22;;;;;13836:7;;13880:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13870:4;13875:1;13870:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13870:32:0;;;:7;;;;;;;;;:32;13945:15;;13913:62;;13930:4;;13945:15;13963:11;13913:8;:62::i;:::-;13986:15;;:224;;-1:-1:-1;;;13986:224:0;;-1:-1:-1;;;;;13986:15:0;;;;:66;;:224;;14067:11;;13986:15;;14137:4;;14164;;14184:15;;13986:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:160:1;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:180::-;235:6;288:2;276:9;267:7;263:23;259:32;256:52;;;304:1;301;294:12;256:52;327:26;343:9;327:26;:::i;364:548::-;476:4;505:2;534;523:9;516:21;566:6;560:13;609:6;604:2;593:9;589:18;582:34;634:1;644:140;658:6;655:1;652:13;644:140;;;753:14;;;749:23;;743:30;719:17;;;738:2;715:26;708:66;673:10;;644:140;;;648:3;833:1;828:2;819:6;808:9;804:22;800:31;793:42;903:2;896;892:7;887:2;879:6;875:15;871:29;860:9;856:45;852:54;844:62;;;;364:548;;;;:::o;917:131::-;-1:-1:-1;;;;;992:31:1;;982:42;;972:70;;1038:1;1035;1028:12;972:70;917:131;:::o;1053:315::-;1121:6;1129;1182:2;1170:9;1161:7;1157:23;1153:32;1150:52;;;1198:1;1195;1188:12;1150:52;1237:9;1224:23;1256:31;1281:5;1256:31;:::i;:::-;1306:5;1358:2;1343:18;;;;1330:32;;-1:-1:-1;;;1053:315:1:o;1981:247::-;2040:6;2093:2;2081:9;2072:7;2068:23;2064:32;2061:52;;;2109:1;2106;2099:12;2061:52;2148:9;2135:23;2167:31;2192:5;2167:31;:::i;2233:456::-;2310:6;2318;2326;2379:2;2367:9;2358:7;2354:23;2350:32;2347:52;;;2395:1;2392;2385:12;2347:52;2434:9;2421:23;2453:31;2478:5;2453:31;:::i;:::-;2503:5;-1:-1:-1;2560:2:1;2545:18;;2532:32;2573:33;2532:32;2573:33;:::i;:::-;2233:456;;2625:7;;-1:-1:-1;;;2679:2:1;2664:18;;;;2651:32;;2233:456::o;3091:180::-;3150:6;3203:2;3191:9;3182:7;3178:23;3174:32;3171:52;;;3219:1;3216;3209:12;3171:52;-1:-1:-1;3242:23:1;;3091:180;-1:-1:-1;3091:180:1:o;3276:248::-;3344:6;3352;3405:2;3393:9;3384:7;3380:23;3376:32;3373:52;;;3421:1;3418;3411:12;3373:52;-1:-1:-1;;3444:23:1;;;3514:2;3499:18;;;3486:32;;-1:-1:-1;3276:248:1:o;3529:315::-;3594:6;3602;3655:2;3643:9;3634:7;3630:23;3626:32;3623:52;;;3671:1;3668;3661:12;3623:52;3710:9;3697:23;3729:31;3754:5;3729:31;:::i;:::-;3779:5;-1:-1:-1;3803:35:1;3834:2;3819:18;;3803:35;:::i;:::-;3793:45;;3529:315;;;;;:::o;3849:388::-;3917:6;3925;3978:2;3966:9;3957:7;3953:23;3949:32;3946:52;;;3994:1;3991;3984:12;3946:52;4033:9;4020:23;4052:31;4077:5;4052:31;:::i;:::-;4102:5;-1:-1:-1;4159:2:1;4144:18;;4131:32;4172:33;4131:32;4172:33;:::i;:::-;4224:7;4214:17;;;3849:388;;;;;:::o;4242:356::-;4444:2;4426:21;;;4463:18;;;4456:30;4522:34;4517:2;4502:18;;4495:62;4589:2;4574:18;;4242:356::o;4603:380::-;4682:1;4678:12;;;;4725;;;4746:61;;4800:4;4792:6;4788:17;4778:27;;4746:61;4853:2;4845:6;4842:14;4822:18;4819:38;4816:161;;4899:10;4894:3;4890:20;4887:1;4880:31;4934:4;4931:1;4924:15;4962:4;4959:1;4952:15;4816:161;;4603:380;;;:::o;4988:127::-;5049:10;5044:3;5040:20;5037:1;5030:31;5080:4;5077:1;5070:15;5104:4;5101:1;5094:15;5120:422;5209:1;5252:5;5209:1;5266:270;5287:7;5277:8;5274:21;5266:270;;;5346:4;5342:1;5338:6;5334:17;5328:4;5325:27;5322:53;;;5355:18;;:::i;:::-;5405:7;5395:8;5391:22;5388:55;;;5425:16;;;;5388:55;5504:22;;;;5464:15;;;;5266:270;;;5270:3;5120:422;;;;;:::o;5547:806::-;5596:5;5626:8;5616:80;;-1:-1:-1;5667:1:1;5681:5;;5616:80;5715:4;5705:76;;-1:-1:-1;5752:1:1;5766:5;;5705:76;5797:4;5815:1;5810:59;;;;5883:1;5878:130;;;;5790:218;;5810:59;5840:1;5831:10;;5854:5;;;5878:130;5915:3;5905:8;5902:17;5899:43;;;5922:18;;:::i;:::-;-1:-1:-1;;5978:1:1;5964:16;;5993:5;;5790:218;;6092:2;6082:8;6079:16;6073:3;6067:4;6064:13;6060:36;6054:2;6044:8;6041:16;6036:2;6030:4;6027:12;6023:35;6020:77;6017:159;;;-1:-1:-1;6129:19:1;;;6161:5;;6017:159;6208:34;6233:8;6227:4;6208:34;:::i;:::-;6278:6;6274:1;6270:6;6266:19;6257:7;6254:32;6251:58;;;6289:18;;:::i;:::-;6327:20;;5547:806;-1:-1:-1;;;5547:806:1:o;6358:140::-;6416:5;6445:47;6486:4;6476:8;6472:19;6466:4;6445:47;:::i;6503:168::-;6576:9;;;6607;;6624:15;;;6618:22;;6604:37;6594:71;;6645:18;;:::i;7891:401::-;8093:2;8075:21;;;8132:2;8112:18;;;8105:30;8171:34;8166:2;8151:18;;8144:62;-1:-1:-1;;;8237:2:1;8222:18;;8215:35;8282:3;8267:19;;7891:401::o;8297:399::-;8499:2;8481:21;;;8538:2;8518:18;;;8511:30;8577:34;8572:2;8557:18;;8550:62;-1:-1:-1;;;8643:2:1;8628:18;;8621:33;8686:3;8671:19;;8297:399::o;9466:125::-;9531:9;;;9552:10;;;9549:36;;;9565:18;;:::i;9596:217::-;9636:1;9662;9652:132;;9706:10;9701:3;9697:20;9694:1;9687:31;9741:4;9738:1;9731:15;9769:4;9766:1;9759:15;9652:132;-1:-1:-1;9798:9:1;;9596:217::o;10028:128::-;10095:9;;;10116:11;;;10113:37;;;10130:18;;:::i;10293:127::-;10354:10;10349:3;10345:20;10342:1;10335:31;10385:4;10382:1;10375:15;10409:4;10406:1;10399:15;10425:251;10495:6;10548:2;10536:9;10527:7;10523:23;10519:32;10516:52;;;10564:1;10561;10554:12;10516:52;10596:9;10590:16;10615:31;10640:5;10615:31;:::i;10681:980::-;10943:4;10991:3;10980:9;10976:19;11022:6;11011:9;11004:25;11048:2;11086:6;11081:2;11070:9;11066:18;11059:34;11129:3;11124:2;11113:9;11109:18;11102:31;11153:6;11188;11182:13;11219:6;11211;11204:22;11257:3;11246:9;11242:19;11235:26;;11296:2;11288:6;11284:15;11270:29;;11317:1;11327:195;11341:6;11338:1;11335:13;11327:195;;;11406:13;;-1:-1:-1;;;;;11402:39:1;11390:52;;11497:15;;;;11462:12;;;;11438:1;11356:9;11327:195;;;-1:-1:-1;;;;;;;11578:32:1;;;;11573:2;11558:18;;11551:60;-1:-1:-1;;;11642:3:1;11627:19;11620:35;11539:3;10681:980;-1:-1:-1;;;10681:980:1:o

Swarm Source

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