ETH Price: $2,633.75 (-0.86%)

Token

baba (BABA)
 

Overview

Max Total Supply

1,000,000 BABA

Holders

16

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
baba

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT

// WEB: https://www.babaerc.com
// X: https://twitter.com/babacoineth
// TELEGRAM: https://t.me/BabaErc


pragma solidity 0.8.20;


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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, uint256 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 from,

        address to,

        uint256 amount

    ) external returns (bool);

}

interface IERC20Metadata is IERC20 {

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

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

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

abstract contract ERC20 is Context, IERC20, IERC20Metadata {

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;

    string private _symbol;

    constructor(string memory name_, string memory symbol_) {

        _name = name_;

        _symbol = symbol_;

    }

    function name() public view virtual override returns (string memory) {

        return _name;

    }

    function symbol() public view virtual override returns (string memory) {

        return _symbol;

    }

    function decimals() public view virtual override returns (uint8) {

        return 18;

    }

    function totalSupply() public view virtual override returns (uint256) {

        return _totalSupply;

    }

    function balanceOf(address account) public view virtual override returns (uint256) {

        return _balances[account];

    }

    function transfer(address to, uint256 amount) public virtual override returns (bool) {

        address owner = _msgSender();

        _transfer(owner, to, 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) {

        address owner = _msgSender();

        _approve(owner, spender, amount);

        return true;

    }

    function transferFrom(

        address from,

        address to,

        uint256 amount

    ) public virtual override returns (bool) {

        address spender = _msgSender();

        _spendAllowance(from, spender, amount);

        _transfer(from, to, amount);

        return true;

    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {

        address owner = _msgSender();

        _approve(owner, spender, allowance(owner, spender) + addedValue);

        return true;

    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {

        address owner = _msgSender();

        uint256 currentAllowance = allowance(owner, spender);

        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");

        unchecked {

            _approve(owner, spender, currentAllowance - subtractedValue);

        }

        return true;

    }

    function _transfer(

        address from,

        address to,

        uint256 amount

    ) internal virtual {

        require(from != address(0), "ERC20: transfer from the zero address");

        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];

        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");

        unchecked {

            _balances[from] = fromBalance - amount;

            _balances[to] += amount;

        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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 += amount;

        unchecked {

            _balances[account] += amount;

        }

        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, 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 _spendAllowance(

        address owner,

        address spender,

        uint256 amount

    ) internal virtual {

        uint256 currentAllowance = allowance(owner, spender);

        if (currentAllowance != type(uint256).max) {

            require(currentAllowance >= amount, "ERC20: insufficient allowance");

            unchecked {

                _approve(owner, spender, currentAllowance - amount);

            }

        }

    }
    function _beforeTokenTransfer(

        address from,

        address to,

        uint256 amount

    ) internal virtual {}
    function _afterTokenTransfer(

        address from,

        address to,

        uint256 amount

    ) internal virtual {}

}

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

interface DexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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



contract baba is ERC20, Ownable {
    
    mapping(address => bool) private excluded;

    address treasuryWallet = 0x362c074fba4475571a71907bCafb5D2a7110bBF7;
    address public devWallet = 0x5c55C8B8442102fd533ED047122Ce37eA47418B5;
    DexRouter public immutable uniswapRouter;
    address public immutable pairAddress;

    bool public tradingEnabled = false;
    bool public swapAndLiquifyEnabled = true;
    bool public isSwapping = false;

    uint256 public constant _totalSupply = 1000000 * 1e18;

    struct taxes {
    uint256 marketingTax;
    }

    taxes public transferTax = taxes(0);
    taxes public buyTax = taxes(15);
    taxes public sellTax = taxes(15);

    uint256 public maxWallet = 2;
    uint256 public swapTokensAtAmount = (_totalSupply * 5) / 1000;


    event BuyFeesUpdated(uint256 indexed _trFee);
    event SellFeesUpdated(uint256 indexed _trFee);
    event devWalletChanged(address indexed _trWallet);
    event SwapThresholdUpdated(uint256 indexed _newThreshold);
    event InternalSwapStatusUpdated(bool indexed _status);
    event Exclude(address indexed _target, bool indexed _status);
    event MaxWalletChanged(uint256 percentage);

    constructor() ERC20("baba", "BABA") {


       uniswapRouter = DexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pairAddress = DexFactory(uniswapRouter.factory()).createPair(
            address(this),
            uniswapRouter.WETH()
        );

        excluded[msg.sender] = true;
        excluded[address(this)] = true; 
        excluded[address(treasuryWallet)] = true;
        excluded[address(devWallet)] = true;
        excluded[address(uniswapRouter)] = true;      
        
        _mint(msg.sender, _totalSupply);
 
    }

    function tradeEnable() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
    }

    function handleTaxes(
        address _from,
        address _to,
        uint256 _amount
    ) internal returns (uint256) {
        if (excluded[_from] || excluded[_to]) {
            return _amount;
        }

        uint256 totalTax = transferTax.marketingTax;

        if (_to == pairAddress) {
            totalTax = sellTax.marketingTax;
        } else if (_from == pairAddress) {
            totalTax = buyTax.marketingTax;
        }


        uint256 tax = 0;
        if (totalTax > 0) {
            tax = (_amount * totalTax) / 100;
            super._transfer(_from, address(this), tax);
        }
        return (_amount - tax);
    }


    function internalSwap() internal {
        isSwapping = true;
        uint256 taxAmount = balanceOf(address(this)); 
        if (taxAmount == 0) {
            return;
        }
        swapToETH(balanceOf(address(this)));
        uint256 marketingSwapAmount = (address(this).balance)/2;
        uint256 treasurySwapAmount = (address(this).balance)/2;
       payable(devWallet).transfer(marketingSwapAmount);
       payable(treasuryWallet).transfer(treasurySwapAmount);
        isSwapping = false;
    }


    function swapToETH(uint256 _amount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), _amount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _transfer(
    address _from,
    address _to,
    uint256 _amount
) internal virtual override {
    require(_from != address(0), "transfer from address zero");
    require(_to != address(0), "transfer to address zero");
    require(_amount > 0, "Transfer amount must be greater than zero");

    // Calculate the maximum wallet amount based on the total supply and the maximum wallet percentage
    uint256 maxWalletAmount = _totalSupply * maxWallet / 100;

    // Check if the transaction is within the maximum wallet limit
    if (!excluded[_from] && !excluded[_to] && _to != address(0) && _to != address(this) && _to != pairAddress) {
        require(balanceOf(_to) + _amount <= maxWalletAmount, "Exceeds maximum wallet amount");
    }

    uint256 toTransfer = handleTaxes(_from, _to, _amount);

    bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
    if (!excluded[_from] && !excluded[_to]) {
        require(tradingEnabled, "Trading not active");
        if (pairAddress == _to && swapAndLiquifyEnabled && canSwap && !isSwapping) {
            internalSwap();
        }
    }

    super._transfer(_from, _to, toTransfer);
}

    function disableLimits() external onlyOwner{
        maxWallet = 100;
        transferTax.marketingTax = 0;
    }

    function setsellTax(uint256 _marketingTax) external onlyOwner {
        sellTax.marketingTax = _marketingTax;
        require(_marketingTax <= 20, "Can not set sell fees higher than 20%");
        emit SellFeesUpdated(_marketingTax);
    }

    function setbuyTax(uint256 _marketingTax) external onlyOwner {
        buyTax.marketingTax = _marketingTax;
        require(_marketingTax <= 20, "Can not set buy fees higher than 20%");
        emit BuyFeesUpdated(_marketingTax);
    }

    function setSwapTokensAtAmount(uint256 _newAmount) external onlyOwner {
        require(
            _newAmount > 0 && _newAmount <= (_totalSupply * 5) / 1000,
            "Minimum swap amount must be greater than 0 and less than 0.5% of total supply!"
        );
        swapTokensAtAmount = _newAmount;
        emit SwapThresholdUpdated(swapTokensAtAmount);
    }

    function setMaxWallet(uint256 amount) external onlyOwner {
    maxWallet = amount;
    emit MaxWalletChanged(amount);
    }

    function setExcludedAddress(
        address _address,
        bool _stat
    ) external onlyOwner {
        excluded[_address] = _stat;
        emit Exclude(_address, _stat);
    }

    function checkExcluded(address _address) external view returns (bool) {
        return excluded[_address];
    }

    function withdrawStuckToken() external {
        require(msg.sender == devWallet);
        uint256 balance = IERC20(address(this)).balanceOf(address(this));
        IERC20(address(this)).transfer(msg.sender, balance);
        payable(msg.sender).transfer(address(this).balance);
    }

    function withdrawStuckETH() external {
        require(msg.sender == devWallet);
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }


    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":"uint256","name":"_trFee","type":"uint256"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_target","type":"address"},{"indexed":true,"internalType":"bool","name":"_status","type":"bool"}],"name":"Exclude","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"_status","type":"bool"}],"name":"InternalSwapStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"MaxWalletChanged","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":"uint256","name":"_trFee","type":"uint256"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"name":"SwapThresholdUpdated","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":true,"internalType":"address","name":"_trWallet","type":"address"}],"name":"devWalletChanged","type":"event"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableLimits","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":[],"name":"isSwapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_stat","type":"bool"}],"name":"setExcludedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingTax","type":"uint256"}],"name":"setbuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingTax","type":"uint256"}],"name":"setsellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"tradeEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":"transferTax","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract DexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600780546001600160a01b03191673362c074fba4475571a71907bcafb5d2a7110bbf7179055600880546001600160b81b0319167501005c55c8b8442102fd533ed047122ce37ea47418b51790555f60c0819052600955600f60e0819052600a819055610120604052610100819052600b556002600c556103e86200009069d3c21bcecceda1000000600562000441565b6200009c919062000461565b600d55348015620000ab575f80fd5b50604051806040016040528060048152602001636261626160e01b815250604051806040016040528060048152602001634241424160e01b8152508160039081620000f7919062000520565b50600462000106828262000520565b505050620001236200011d6200030f60201b60201c565b62000313565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000177573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200019d9190620005e8565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001eb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002119190620005e8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200025c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002829190620005e8565b6001600160a01b0390811660a052335f818152600660205260408082208054600160ff199182168117909255308452828420805482168317905560075486168452828420805482168317905560085486168452828420805482168317905560805190951683529120805490931617909155620003099069d3c21bcecceda100000062000364565b6200062d565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620003bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f828254620003d2919062000617565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200045b576200045b6200042d565b92915050565b5f826200047c57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620004aa57607f821691505b602082108103620004c957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000428575f81815260208120601f850160051c81016020861015620004f75750805b601f850160051c820191505b81811015620005185782815560010162000503565b505050505050565b81516001600160401b038111156200053c576200053c62000481565b62000554816200054d845462000495565b84620004cf565b602080601f8311600181146200058a575f8415620005725750858301515b5f19600386901b1c1916600185901b17855562000518565b5f85815260208120601f198616915b82811015620005ba5788860151825594840194600190910190840162000599565b5085821015620005d857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620005f9575f80fd5b81516001600160a01b038116811462000610575f80fd5b9392505050565b808201808211156200045b576200045b6200042d565b60805160a051611baa620006805f395f818161050c015281816110c101528181611234015281816113b201526113e601525f81816103f10152818161173a015281816117f1015261182d0152611baa5ff3fe60806040526004361061020a575f3560e01c80638da5cb5b11610113578063dd62ed3e1161009d578063f5648a4f1161006d578063f5648a4f14610614578063f87dc2c614610628578063f8b45b051461063c578063f928364c14610651578063f98be8ad14610665575f80fd5b8063dd62ed3e146105a2578063e2f45605146105c1578063f196782c146105d6578063f2fde38b146105f5575f80fd5b8063a8b08982116100e3578063a8b08982146104fb578063a9059cbb1461052e578063afa4f3b21461054d578063b88631151461056c578063cc1776d31461058c575f80fd5b80638da5cb5b1461048c5780638ea5220f146104a957806395d89b41146104c8578063a457c2d7146104dc575f80fd5b80634d5b15d411610194578063715018a611610164578063715018a6146103cc578063735de9f7146103e05780637cb527371461042b5780638124f7ac1461046257806384dd445214610478575f80fd5b80634d5b15d4146103425780634f7041a5146103635780635d0044ca1461037957806370a0823114610398575f80fd5b8063313ce567116101da578063313ce567146102ab57806339509351146102c65780633eaaf86b146102e55780634a74bb02146103025780634ada218b14610322575f80fd5b806306fdde0314610215578063095ea7b31461023f57806318160ddd1461026e57806323b872dd1461028c575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b50610229610684565b6040516102369190611893565b60405180910390f35b34801561024a575f80fd5b5061025e6102593660046118f2565b610714565b6040519015158152602001610236565b348015610279575f80fd5b506002545b604051908152602001610236565b348015610297575f80fd5b5061025e6102a636600461191c565b61072d565b3480156102b6575f80fd5b5060405160128152602001610236565b3480156102d1575f80fd5b5061025e6102e03660046118f2565b610752565b3480156102f0575f80fd5b5061027e69d3c21bcecceda100000081565b34801561030d575f80fd5b5060085461025e90600160a81b900460ff1681565b34801561032d575f80fd5b5060085461025e90600160a01b900460ff1681565b34801561034d575f80fd5b5061036161035c36600461195a565b610773565b005b34801561036e575f80fd5b50600a5461027e9081565b348015610384575f80fd5b5061036161039336600461195a565b61080f565b3480156103a3575f80fd5b5061027e6103b2366004611971565b6001600160a01b03165f9081526020819052604090205490565b3480156103d7575f80fd5b50610361610852565b3480156103eb575f80fd5b506104137f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610236565b348015610436575f80fd5b5061025e610445366004611971565b6001600160a01b03165f9081526006602052604090205460ff1690565b34801561046d575f80fd5b5060095461027e9081565b348015610483575f80fd5b50610361610865565b348015610497575f80fd5b506005546001600160a01b0316610413565b3480156104b4575f80fd5b50600854610413906001600160a01b031681565b3480156104d3575f80fd5b50610229610970565b3480156104e7575f80fd5b5061025e6104f63660046118f2565b61097f565b348015610506575f80fd5b506104137f000000000000000000000000000000000000000000000000000000000000000081565b348015610539575f80fd5b5061025e6105483660046118f2565b610a04565b348015610558575f80fd5b5061036161056736600461195a565b610a11565b348015610577575f80fd5b5060085461025e90600160b01b900460ff1681565b348015610597575f80fd5b50600b5461027e9081565b3480156105ad575f80fd5b5061027e6105bc36600461198c565b610b04565b3480156105cc575f80fd5b5061027e600d5481565b3480156105e1575f80fd5b506103616105f03660046119d0565b610b2e565b348015610600575f80fd5b5061036161060f366004611971565b610b89565b34801561061f575f80fd5b50610361610c02565b348015610633575f80fd5b50610361610c62565b348015610647575f80fd5b5061027e600c5481565b34801561065c575f80fd5b50610361610cd9565b348015610670575f80fd5b5061036161067f36600461195a565b610cec565b606060038054610693906119fc565b80601f01602080910402602001604051908101604052809291908181526020018280546106bf906119fc565b801561070a5780601f106106e15761010080835404028352916020019161070a565b820191905f5260205f20905b8154815290600101906020018083116106ed57829003601f168201915b5050505050905090565b5f33610721818585610d85565b60019150505b92915050565b5f3361073a858285610ea8565b610745858585610f1a565b60019150505b9392505050565b5f336107218185856107648383610b04565b61076e9190611a48565b610d85565b61077b6112b1565b600a81905560148111156107e25760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f742073657420627579206665657320686967686572207468616e6044820152632032302560e01b60648201526084015b60405180910390fd5b60405181907f491005465ab6f82fd10f4b13a1b1e5ca452bc4856b019f63775e33a6b1ad2feb905f90a250565b6108176112b1565b600c8190556040518181527fd79b8c9aaacc4db9fee532137a1ade40c7238016bff71cb2abc1a3cf8b6cdff69060200160405180910390a150565b61085a6112b1565b6108635f61130b565b565b6008546001600160a01b0316331461087b575f80fd5b6040516370a0823160e01b815230600482018190525f916370a0823190602401602060405180830381865afa1580156108b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108da9190611a5b565b60405163a9059cbb60e01b815233600482015260248101829052909150309063a9059cbb906044016020604051808303815f875af115801561091e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109429190611a72565b5060405133904780156108fc02915f818181858888f1935050505015801561096c573d5f803e3d5ffd5b5050565b606060048054610693906119fc565b5f338161098c8286610b04565b9050838110156109ec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107d9565b6109f98286868403610d85565b506001949350505050565b5f33610721818585610f1a565b610a196112b1565b5f81118015610a4957506103e8610a3b69d3c21bcecceda10000006005611a8d565b610a459190611aa4565b8111155b610ad25760405162461bcd60e51b815260206004820152604e60248201527f4d696e696d756d207377617020616d6f756e74206d757374206265206772656160448201527f746572207468616e203020616e64206c657373207468616e20302e3525206f6660648201526d20746f74616c20737570706c792160901b608482015260a4016107d9565b600d81905560405181907f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd06476905f90a250565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610b366112b1565b6001600160a01b0382165f81815260066020526040808220805460ff191685151590811790915590519092917f3192caa254d3e1ad957995cfc6c8fbb960383bef7c341a220215553e91070df391a35050565b610b916112b1565b6001600160a01b038116610bf65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d9565b610bff8161130b565b50565b6008546001600160a01b03163314610c18575f80fd5b6040515f90339047908381818185875af1925050503d805f8114610c57576040519150601f19603f3d011682016040523d82523d5f602084013e610c5c565b606091505b50505050565b610c6a6112b1565b600854600160a01b900460ff1615610cc45760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016107d9565b6008805460ff60a01b1916600160a01b179055565b610ce16112b1565b6064600c555f600955565b610cf46112b1565b600b8190556014811115610d585760405162461bcd60e51b815260206004820152602560248201527f43616e206e6f74207365742073656c6c206665657320686967686572207468616044820152646e2032302560d81b60648201526084016107d9565b60405181907f16df2c25b3392f376a685a3826b941b25140108d95899d6b1bd983feafbc1c55905f90a250565b6001600160a01b038316610de75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107d9565b6001600160a01b038216610e485760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107d9565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610eb38484610b04565b90505f198114610c5c5781811015610f0d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107d9565b610c5c8484848403610d85565b6001600160a01b038316610f705760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d2061646472657373207a65726f00000000000060448201526064016107d9565b6001600160a01b038216610fc65760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f2061646472657373207a65726f000000000000000060448201526064016107d9565b5f81116110275760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107d9565b5f6064600c5469d3c21bcecceda10000006110429190611a8d565b61104c9190611aa4565b6001600160a01b0385165f9081526006602052604090205490915060ff1615801561108f57506001600160a01b0383165f9081526006602052604090205460ff16155b80156110a357506001600160a01b03831615155b80156110b857506001600160a01b0383163014155b80156110f657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561117357808261111b856001600160a01b03165f9081526020819052604090205490565b6111259190611a48565b11156111735760405162461bcd60e51b815260206004820152601d60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e7400000060448201526064016107d9565b5f61117f85858561135c565b600d54305f90815260208181526040808320546001600160a01b038b16845260069092529091205492935010159060ff161580156111d557506001600160a01b0385165f9081526006602052604090205460ff16155b1561129e57600854600160a01b900460ff166112285760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016107d9565b846001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480156112725750600854600160a81b900460ff165b801561127b5750805b80156112915750600854600160b01b900460ff16155b1561129e5761129e611460565b6112a9868684611543565b505050505050565b6005546001600160a01b031633146108635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d9565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383165f9081526006602052604081205460ff168061139957506001600160a01b0383165f9081526006602052604090205460ff165b156113a557508061074b565b6009546001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908516036113e45750600b54611422565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036114225750600a545b5f811561144c5760646114358386611a8d565b61143f9190611aa4565b905061144c863083611543565b6114568185611ac3565b9695505050505050565b6008805460ff60b01b1916600160b01b179055305f908152602081905260408120549050805f0361148e5750565b305f908152602081905260409020546114a6906116e5565b5f6114b2600247611aa4565b90505f6114c0600247611aa4565b6008546040519192506001600160a01b03169083156108fc029084905f818181858888f193505050501580156114f8573d5f803e3d5ffd5b506007546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611530573d5f803e3d5ffd5b50506008805460ff60b01b191690555050565b6001600160a01b0383166115a75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107d9565b6001600160a01b0382166116095760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107d9565b6001600160a01b0383165f90815260208190526040902054818110156116805760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107d9565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610c5c565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061171857611718611ad6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b89190611aea565b816001815181106117cb576117cb611ad6565b60200260200101906001600160a01b031690816001600160a01b031681525050611816307f000000000000000000000000000000000000000000000000000000000000000084610d85565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061186a9085905f90869030904290600401611b05565b5f604051808303815f87803b158015611881575f80fd5b505af11580156112a9573d5f803e3d5ffd5b5f6020808352835180828501525f5b818110156118be578581018301518582016040015282016118a2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bff575f80fd5b5f8060408385031215611903575f80fd5b823561190e816118de565b946020939093013593505050565b5f805f6060848603121561192e575f80fd5b8335611939816118de565b92506020840135611949816118de565b929592945050506040919091013590565b5f6020828403121561196a575f80fd5b5035919050565b5f60208284031215611981575f80fd5b813561074b816118de565b5f806040838503121561199d575f80fd5b82356119a8816118de565b915060208301356119b8816118de565b809150509250929050565b8015158114610bff575f80fd5b5f80604083850312156119e1575f80fd5b82356119ec816118de565b915060208301356119b8816119c3565b600181811c90821680611a1057607f821691505b602082108103611a2e57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561072757610727611a34565b5f60208284031215611a6b575f80fd5b5051919050565b5f60208284031215611a82575f80fd5b815161074b816119c3565b808202811582820484141761072757610727611a34565b5f82611abe57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561072757610727611a34565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611afa575f80fd5b815161074b816118de565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611b535784516001600160a01b031683529383019391830191600101611b2e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201581d4feeb9dae4ef8794f0d2d4fc4a42ba2f6a53496c59f14c565eca4b3a22864736f6c63430008140033

Deployed Bytecode

0x60806040526004361061020a575f3560e01c80638da5cb5b11610113578063dd62ed3e1161009d578063f5648a4f1161006d578063f5648a4f14610614578063f87dc2c614610628578063f8b45b051461063c578063f928364c14610651578063f98be8ad14610665575f80fd5b8063dd62ed3e146105a2578063e2f45605146105c1578063f196782c146105d6578063f2fde38b146105f5575f80fd5b8063a8b08982116100e3578063a8b08982146104fb578063a9059cbb1461052e578063afa4f3b21461054d578063b88631151461056c578063cc1776d31461058c575f80fd5b80638da5cb5b1461048c5780638ea5220f146104a957806395d89b41146104c8578063a457c2d7146104dc575f80fd5b80634d5b15d411610194578063715018a611610164578063715018a6146103cc578063735de9f7146103e05780637cb527371461042b5780638124f7ac1461046257806384dd445214610478575f80fd5b80634d5b15d4146103425780634f7041a5146103635780635d0044ca1461037957806370a0823114610398575f80fd5b8063313ce567116101da578063313ce567146102ab57806339509351146102c65780633eaaf86b146102e55780634a74bb02146103025780634ada218b14610322575f80fd5b806306fdde0314610215578063095ea7b31461023f57806318160ddd1461026e57806323b872dd1461028c575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b50610229610684565b6040516102369190611893565b60405180910390f35b34801561024a575f80fd5b5061025e6102593660046118f2565b610714565b6040519015158152602001610236565b348015610279575f80fd5b506002545b604051908152602001610236565b348015610297575f80fd5b5061025e6102a636600461191c565b61072d565b3480156102b6575f80fd5b5060405160128152602001610236565b3480156102d1575f80fd5b5061025e6102e03660046118f2565b610752565b3480156102f0575f80fd5b5061027e69d3c21bcecceda100000081565b34801561030d575f80fd5b5060085461025e90600160a81b900460ff1681565b34801561032d575f80fd5b5060085461025e90600160a01b900460ff1681565b34801561034d575f80fd5b5061036161035c36600461195a565b610773565b005b34801561036e575f80fd5b50600a5461027e9081565b348015610384575f80fd5b5061036161039336600461195a565b61080f565b3480156103a3575f80fd5b5061027e6103b2366004611971565b6001600160a01b03165f9081526020819052604090205490565b3480156103d7575f80fd5b50610361610852565b3480156103eb575f80fd5b506104137f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610236565b348015610436575f80fd5b5061025e610445366004611971565b6001600160a01b03165f9081526006602052604090205460ff1690565b34801561046d575f80fd5b5060095461027e9081565b348015610483575f80fd5b50610361610865565b348015610497575f80fd5b506005546001600160a01b0316610413565b3480156104b4575f80fd5b50600854610413906001600160a01b031681565b3480156104d3575f80fd5b50610229610970565b3480156104e7575f80fd5b5061025e6104f63660046118f2565b61097f565b348015610506575f80fd5b506104137f0000000000000000000000002afb02cf1753fd99f273e3908ba498a36a5c563d81565b348015610539575f80fd5b5061025e6105483660046118f2565b610a04565b348015610558575f80fd5b5061036161056736600461195a565b610a11565b348015610577575f80fd5b5060085461025e90600160b01b900460ff1681565b348015610597575f80fd5b50600b5461027e9081565b3480156105ad575f80fd5b5061027e6105bc36600461198c565b610b04565b3480156105cc575f80fd5b5061027e600d5481565b3480156105e1575f80fd5b506103616105f03660046119d0565b610b2e565b348015610600575f80fd5b5061036161060f366004611971565b610b89565b34801561061f575f80fd5b50610361610c02565b348015610633575f80fd5b50610361610c62565b348015610647575f80fd5b5061027e600c5481565b34801561065c575f80fd5b50610361610cd9565b348015610670575f80fd5b5061036161067f36600461195a565b610cec565b606060038054610693906119fc565b80601f01602080910402602001604051908101604052809291908181526020018280546106bf906119fc565b801561070a5780601f106106e15761010080835404028352916020019161070a565b820191905f5260205f20905b8154815290600101906020018083116106ed57829003601f168201915b5050505050905090565b5f33610721818585610d85565b60019150505b92915050565b5f3361073a858285610ea8565b610745858585610f1a565b60019150505b9392505050565b5f336107218185856107648383610b04565b61076e9190611a48565b610d85565b61077b6112b1565b600a81905560148111156107e25760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f742073657420627579206665657320686967686572207468616e6044820152632032302560e01b60648201526084015b60405180910390fd5b60405181907f491005465ab6f82fd10f4b13a1b1e5ca452bc4856b019f63775e33a6b1ad2feb905f90a250565b6108176112b1565b600c8190556040518181527fd79b8c9aaacc4db9fee532137a1ade40c7238016bff71cb2abc1a3cf8b6cdff69060200160405180910390a150565b61085a6112b1565b6108635f61130b565b565b6008546001600160a01b0316331461087b575f80fd5b6040516370a0823160e01b815230600482018190525f916370a0823190602401602060405180830381865afa1580156108b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108da9190611a5b565b60405163a9059cbb60e01b815233600482015260248101829052909150309063a9059cbb906044016020604051808303815f875af115801561091e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109429190611a72565b5060405133904780156108fc02915f818181858888f1935050505015801561096c573d5f803e3d5ffd5b5050565b606060048054610693906119fc565b5f338161098c8286610b04565b9050838110156109ec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107d9565b6109f98286868403610d85565b506001949350505050565b5f33610721818585610f1a565b610a196112b1565b5f81118015610a4957506103e8610a3b69d3c21bcecceda10000006005611a8d565b610a459190611aa4565b8111155b610ad25760405162461bcd60e51b815260206004820152604e60248201527f4d696e696d756d207377617020616d6f756e74206d757374206265206772656160448201527f746572207468616e203020616e64206c657373207468616e20302e3525206f6660648201526d20746f74616c20737570706c792160901b608482015260a4016107d9565b600d81905560405181907f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd06476905f90a250565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610b366112b1565b6001600160a01b0382165f81815260066020526040808220805460ff191685151590811790915590519092917f3192caa254d3e1ad957995cfc6c8fbb960383bef7c341a220215553e91070df391a35050565b610b916112b1565b6001600160a01b038116610bf65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d9565b610bff8161130b565b50565b6008546001600160a01b03163314610c18575f80fd5b6040515f90339047908381818185875af1925050503d805f8114610c57576040519150601f19603f3d011682016040523d82523d5f602084013e610c5c565b606091505b50505050565b610c6a6112b1565b600854600160a01b900460ff1615610cc45760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016107d9565b6008805460ff60a01b1916600160a01b179055565b610ce16112b1565b6064600c555f600955565b610cf46112b1565b600b8190556014811115610d585760405162461bcd60e51b815260206004820152602560248201527f43616e206e6f74207365742073656c6c206665657320686967686572207468616044820152646e2032302560d81b60648201526084016107d9565b60405181907f16df2c25b3392f376a685a3826b941b25140108d95899d6b1bd983feafbc1c55905f90a250565b6001600160a01b038316610de75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107d9565b6001600160a01b038216610e485760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107d9565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610eb38484610b04565b90505f198114610c5c5781811015610f0d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107d9565b610c5c8484848403610d85565b6001600160a01b038316610f705760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d2061646472657373207a65726f00000000000060448201526064016107d9565b6001600160a01b038216610fc65760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f2061646472657373207a65726f000000000000000060448201526064016107d9565b5f81116110275760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107d9565b5f6064600c5469d3c21bcecceda10000006110429190611a8d565b61104c9190611aa4565b6001600160a01b0385165f9081526006602052604090205490915060ff1615801561108f57506001600160a01b0383165f9081526006602052604090205460ff16155b80156110a357506001600160a01b03831615155b80156110b857506001600160a01b0383163014155b80156110f657507f0000000000000000000000002afb02cf1753fd99f273e3908ba498a36a5c563d6001600160a01b0316836001600160a01b031614155b1561117357808261111b856001600160a01b03165f9081526020819052604090205490565b6111259190611a48565b11156111735760405162461bcd60e51b815260206004820152601d60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e7400000060448201526064016107d9565b5f61117f85858561135c565b600d54305f90815260208181526040808320546001600160a01b038b16845260069092529091205492935010159060ff161580156111d557506001600160a01b0385165f9081526006602052604090205460ff16155b1561129e57600854600160a01b900460ff166112285760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016107d9565b846001600160a01b03167f0000000000000000000000002afb02cf1753fd99f273e3908ba498a36a5c563d6001600160a01b03161480156112725750600854600160a81b900460ff165b801561127b5750805b80156112915750600854600160b01b900460ff16155b1561129e5761129e611460565b6112a9868684611543565b505050505050565b6005546001600160a01b031633146108635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d9565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383165f9081526006602052604081205460ff168061139957506001600160a01b0383165f9081526006602052604090205460ff165b156113a557508061074b565b6009546001600160a01b037f0000000000000000000000002afb02cf1753fd99f273e3908ba498a36a5c563d8116908516036113e45750600b54611422565b7f0000000000000000000000002afb02cf1753fd99f273e3908ba498a36a5c563d6001600160a01b0316856001600160a01b0316036114225750600a545b5f811561144c5760646114358386611a8d565b61143f9190611aa4565b905061144c863083611543565b6114568185611ac3565b9695505050505050565b6008805460ff60b01b1916600160b01b179055305f908152602081905260408120549050805f0361148e5750565b305f908152602081905260409020546114a6906116e5565b5f6114b2600247611aa4565b90505f6114c0600247611aa4565b6008546040519192506001600160a01b03169083156108fc029084905f818181858888f193505050501580156114f8573d5f803e3d5ffd5b506007546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611530573d5f803e3d5ffd5b50506008805460ff60b01b191690555050565b6001600160a01b0383166115a75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107d9565b6001600160a01b0382166116095760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107d9565b6001600160a01b0383165f90815260208190526040902054818110156116805760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107d9565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610c5c565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061171857611718611ad6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b89190611aea565b816001815181106117cb576117cb611ad6565b60200260200101906001600160a01b031690816001600160a01b031681525050611816307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610d85565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061186a9085905f90869030904290600401611b05565b5f604051808303815f87803b158015611881575f80fd5b505af11580156112a9573d5f803e3d5ffd5b5f6020808352835180828501525f5b818110156118be578581018301518582016040015282016118a2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bff575f80fd5b5f8060408385031215611903575f80fd5b823561190e816118de565b946020939093013593505050565b5f805f6060848603121561192e575f80fd5b8335611939816118de565b92506020840135611949816118de565b929592945050506040919091013590565b5f6020828403121561196a575f80fd5b5035919050565b5f60208284031215611981575f80fd5b813561074b816118de565b5f806040838503121561199d575f80fd5b82356119a8816118de565b915060208301356119b8816118de565b809150509250929050565b8015158114610bff575f80fd5b5f80604083850312156119e1575f80fd5b82356119ec816118de565b915060208301356119b8816119c3565b600181811c90821680611a1057607f821691505b602082108103611a2e57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561072757610727611a34565b5f60208284031215611a6b575f80fd5b5051919050565b5f60208284031215611a82575f80fd5b815161074b816119c3565b808202811582820484141761072757610727611a34565b5f82611abe57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561072757610727611a34565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611afa575f80fd5b815161074b816118de565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611b535784516001600160a01b031683529383019391830191600101611b2e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201581d4feeb9dae4ef8794f0d2d4fc4a42ba2f6a53496c59f14c565eca4b3a22864736f6c63430008140033

Deployed Bytecode Sourcemap

8223:6770:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2846:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3810:209;;;;;;;;;;-1:-1:-1;3810:209:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3810:209:0;1023:187:1;3179:112:0;;;;;;;;;;-1:-1:-1;3269:12:0;;3179:112;;;1361:25:1;;;1349:2;1334:18;3179:112:0;1215:177:1;4027:313:0;;;;;;;;;;-1:-1:-1;4027:313:0;;;;;:::i;:::-;;:::i;3074:97::-;;;;;;;;;;-1:-1:-1;3074:97:0;;3159:2;2000:36:1;;1988:2;1973:18;3074:97:0;1858:184:1;4348:246:0;;;;;;;;;;-1:-1:-1;4348:246:0;;;;;:::i;:::-;;:::i;8687:53::-;;;;;;;;;;;;8726:14;8687:53;;8601:40;;;;;;;;;;-1:-1:-1;8601:40:0;;;;-1:-1:-1;;;8601:40:0;;;;;;8560:34;;;;;;;;;;-1:-1:-1;8560:34:0;;;;-1:-1:-1;;;8560:34:0;;;;;;13383:239;;;;;;;;;;-1:-1:-1;13383:239:0;;;;;:::i;:::-;;:::i;:::-;;8847:31;;;;;;;;;;-1:-1:-1;8847:31:0;;;;;;14010:126;;;;;;;;;;-1:-1:-1;14010:126:0;;;;;:::i;:::-;;:::i;3299:131::-;;;;;;;;;;-1:-1:-1;3299:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;3402:18:0;3373:7;3402:18;;;;;;;;;;;;3299:131;961:103;;;;;;;;;;;;;:::i;8468:40::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2665:32:1;;;2647:51;;2635:2;2620:18;8468:40:0;2484:220:1;14339:114:0;;;;;;;;;;-1:-1:-1;14339:114:0;;;;;:::i;:::-;-1:-1:-1;;;;;14427:18:0;14403:4;14427:18;;;:8;:18;;;;;;;;;14339:114;8805:35;;;;;;;;;;-1:-1:-1;8805:35:0;;;;;;14461:289;;;;;;;;;;;;;:::i;730:87::-;;;;;;;;;;-1:-1:-1;803:6:0;;-1:-1:-1;;;;;803:6:0;730:87;;8392:69;;;;;;;;;;-1:-1:-1;8392:69:0;;;;-1:-1:-1;;;;;8392:69:0;;;2958:108;;;;;;;;;;;;;:::i;4602:450::-;;;;;;;;;;-1:-1:-1;4602:450:0;;;;;:::i;:::-;;:::i;8515:36::-;;;;;;;;;;;;;;;3438:201;;;;;;;;;;-1:-1:-1;3438:201:0;;;;;:::i;:::-;;:::i;13630:372::-;;;;;;;;;;-1:-1:-1;13630:372:0;;;;;:::i;:::-;;:::i;8648:30::-;;;;;;;;;;-1:-1:-1;8648:30:0;;;;-1:-1:-1;;;8648:30:0;;;;;;8885:32;;;;;;;;;;-1:-1:-1;8885:32:0;;;;;;3647:155;;;;;;;;;;-1:-1:-1;3647:155:0;;;;;:::i;:::-;;:::i;8961:61::-;;;;;;;;;;;;;;;;14144:187;;;;;;;;;;-1:-1:-1;14144:187:0;;;;;:::i;:::-;;:::i;1070:201::-;;;;;;;;;;-1:-1:-1;1070:201:0;;;;;:::i;:::-;;:::i;14758:193::-;;;;;;;;;;;;;:::i;10004:147::-;;;;;;;;;;;;;:::i;8926:28::-;;;;;;;;;;;;;;;;13008:116;;;;;;;;;;;;;:::i;13132:243::-;;;;;;;;;;-1:-1:-1;13132:243:0;;;;;:::i;:::-;;:::i;2846:104::-;2900:13;2935:5;2928:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2846:104;:::o;3810:209::-;3893:4;287:10;3953:32;287:10;3969:7;3978:6;3953:8;:32::i;:::-;4005:4;3998:11;;;3810:209;;;;;:::o;4027:313::-;4166:4;287:10;4228:38;4244:4;287:10;4259:6;4228:15;:38::i;:::-;4279:27;4289:4;4295:2;4299:6;4279:9;:27::i;:::-;4326:4;4319:11;;;4027:313;;;;;;:::o;4348:246::-;4436:4;287:10;4496:64;287:10;4512:7;4549:10;4521:25;287:10;4512:7;4521:9;:25::i;:::-;:38;;;;:::i;:::-;4496:8;:64::i;13383:239::-;691:13;:11;:13::i;:::-;13455:6:::1;:35:::0;;;13526:2:::1;13509:19:::0;::::1;;13501:68;;;::::0;-1:-1:-1;;;13501:68:0;;4669:2:1;13501:68:0::1;::::0;::::1;4651:21:1::0;4708:2;4688:18;;;4681:30;4747:34;4727:18;;;4720:62;-1:-1:-1;;;4798:18:1;;;4791:34;4842:19;;13501:68:0::1;;;;;;;;;13585:29;::::0;13600:13;;13585:29:::1;::::0;;;::::1;13383:239:::0;:::o;14010:126::-;691:13;:11;:13::i;:::-;14074:9:::1;:18:::0;;;14104:24:::1;::::0;1361:25:1;;;14104:24:0::1;::::0;1349:2:1;1334:18;14104:24:0::1;;;;;;;14010:126:::0;:::o;961:103::-;691:13;:11;:13::i;:::-;1026:30:::1;1053:1;1026:18;:30::i;:::-;961:103::o:0;14461:289::-;14533:9;;-1:-1:-1;;;;;14533:9:0;14519:10;:23;14511:32;;;;;;14572:46;;-1:-1:-1;;;14572:46:0;;14587:4;14572:46;;;2647:51:1;;;14554:15:0;;14572:31;;2620:18:1;;14572:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14629:51;;-1:-1:-1;;;14629:51:0;;14660:10;14629:51;;;5235::1;5302:18;;;5295:34;;;14554:64:0;;-1:-1:-1;14644:4:0;;14629:30;;5208:18:1;;14629:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14691:51:0;;14699:10;;14720:21;14691:51;;;;;;;;;14720:21;14699:10;14691:51;;;;;;;;;;;;;;;;;;;;;14500:250;14461:289::o;2958:108::-;3014:13;3049:7;3042:14;;;;;:::i;4602:450::-;4695:4;287:10;4695:4;4782:25;287:10;4799:7;4782:9;:25::i;:::-;4755:52;;4848:15;4828:16;:35;;4820:85;;;;-1:-1:-1;;;4820:85:0;;5792:2:1;4820:85:0;;;5774:21:1;5831:2;5811:18;;;5804:30;5870:34;5850:18;;;5843:62;-1:-1:-1;;;5921:18:1;;;5914:35;5966:19;;4820:85:0;5590:401:1;4820:85:0;4945:60;4954:5;4961:7;4989:15;4970:16;:34;4945:8;:60::i;:::-;-1:-1:-1;5038:4:0;;4602:450;-1:-1:-1;;;;4602:450:0:o;3438:201::-;3517:4;287:10;3577:28;287:10;3594:2;3598:6;3577:9;:28::i;13630:372::-;691:13;:11;:13::i;:::-;13746:1:::1;13733:10;:14;:57;;;;-1:-1:-1::0;13786:4:0::1;13766:16;8726:14;13781:1;13766:16;:::i;:::-;13765:25;;;;:::i;:::-;13751:10;:39;;13733:57;13711:185;;;::::0;-1:-1:-1;;;13711:185:0;;6593:2:1;13711:185:0::1;::::0;::::1;6575:21:1::0;6632:2;6612:18;;;6605:30;6671:34;6651:18;;;6644:62;6742:34;6722:18;;;6715:62;-1:-1:-1;;;6793:19:1;;;6786:45;6848:19;;13711:185:0::1;6391:482:1::0;13711:185:0::1;13907:18;:31:::0;;;13954:40:::1;::::0;13928:10;;13954:40:::1;::::0;;;::::1;13630:372:::0;:::o;3647:155::-;-1:-1:-1;;;;;3765:18:0;;;3736:7;3765:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3647:155::o;14144:187::-;691:13;:11;:13::i;:::-;-1:-1:-1;;;;;14257:18:0;::::1;;::::0;;;:8:::1;:18;::::0;;;;;:26;;-1:-1:-1;;14257:26:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14299:24;;14257:26;;:18;14299:24:::1;::::0;::::1;14144:187:::0;;:::o;1070:201::-;691:13;:11;:13::i;:::-;-1:-1:-1;;;;;1159:22:0;::::1;1151:73;;;::::0;-1:-1:-1;;;1151:73:0;;7080:2:1;1151:73:0::1;::::0;::::1;7062:21:1::0;7119:2;7099:18;;;7092:30;7158:34;7138:18;;;7131:62;-1:-1:-1;;;7209:18:1;;;7202:36;7255:19;;1151:73:0::1;6878:402:1::0;1151:73:0::1;1235:28;1254:8;1235:18;:28::i;:::-;1070:201:::0;:::o;14758:193::-;14828:9;;-1:-1:-1;;;;;14828:9:0;14814:10;:23;14806:32;;;;;;14885:58;;14849:12;;14893:10;;14917:21;;14849:12;14885:58;14849:12;14885:58;14917:21;14893:10;14885:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;14758:193:0:o;10004:147::-;691:13;:11;:13::i;:::-;10066:14:::1;::::0;-1:-1:-1;;;10066:14:0;::::1;;;10065:15;10057:54;;;::::0;-1:-1:-1;;;10057:54:0;;7697:2:1;10057:54:0::1;::::0;::::1;7679:21:1::0;7736:2;7716:18;;;7709:30;7775:28;7755:18;;;7748:56;7821:18;;10057:54:0::1;7495:350:1::0;10057:54:0::1;10122:14;:21:::0;;-1:-1:-1;;;;10122:21:0::1;-1:-1:-1::0;;;10122:21:0::1;::::0;;10004:147::o;13008:116::-;691:13;:11;:13::i;:::-;13074:3:::1;13062:9;:15:::0;13115:1:::1;13088:11;:28:::0;13008:116::o;13132:243::-;691:13;:11;:13::i;:::-;13205:7:::1;:36:::0;;;13277:2:::1;13260:19:::0;::::1;;13252:69;;;::::0;-1:-1:-1;;;13252:69:0;;8052:2:1;13252:69:0::1;::::0;::::1;8034:21:1::0;8091:2;8071:18;;;8064:30;8130:34;8110:18;;;8103:62;-1:-1:-1;;;8181:18:1;;;8174:35;8226:19;;13252:69:0::1;7850:401:1::0;13252:69:0::1;13337:30;::::0;13353:13;;13337:30:::1;::::0;;;::::1;13132:243:::0;:::o;6220:396::-;-1:-1:-1;;;;;6366:19:0;;6358:68;;;;-1:-1:-1;;;6358:68:0;;8458:2:1;6358:68:0;;;8440:21:1;8497:2;8477:18;;;8470:30;8536:34;8516:18;;;8509:62;-1:-1:-1;;;8587:18:1;;;8580:34;8631:19;;6358:68:0;8256:400:1;6358:68:0;-1:-1:-1;;;;;6447:21:0;;6439:68;;;;-1:-1:-1;;;6439:68:0;;8863:2:1;6439:68:0;;;8845:21:1;8902:2;8882:18;;;8875:30;8941:34;8921:18;;;8914:62;-1:-1:-1;;;8992:18:1;;;8985:32;9034:19;;6439:68:0;8661:398:1;6439:68:0;-1:-1:-1;;;;;6520:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6574:32;;1361:25:1;;;6574:32:0;;1334:18:1;6574:32:0;;;;;;;6220:396;;;:::o;6622:477::-;6767:24;6794:25;6804:5;6811:7;6794:9;:25::i;:::-;6767:52;;-1:-1:-1;;6836:16:0;:37;6832:258;;6920:6;6900:16;:26;;6892:68;;;;-1:-1:-1;;;6892:68:0;;9266:2:1;6892:68:0;;;9248:21:1;9305:2;9285:18;;;9278:30;9344:31;9324:18;;;9317:59;9393:18;;6892:68:0;9064:353:1;6892:68:0;7008:51;7017:5;7024:7;7052:6;7033:16;:25;7008:8;:51::i;11818:1182::-;-1:-1:-1;;;;;11941:19:0;;11933:58;;;;-1:-1:-1;;;11933:58:0;;9624:2:1;11933:58:0;;;9606:21:1;9663:2;9643:18;;;9636:30;9702:28;9682:18;;;9675:56;9748:18;;11933:58:0;9422:350:1;11933:58:0;-1:-1:-1;;;;;12006:17:0;;11998:54;;;;-1:-1:-1;;;11998:54:0;;9979:2:1;11998:54:0;;;9961:21:1;10018:2;9998:18;;;9991:30;10057:26;10037:18;;;10030:54;10101:18;;11998:54:0;9777:348:1;11998:54:0;12077:1;12067:7;:11;12059:65;;;;-1:-1:-1;;;12059:65:0;;10332:2:1;12059:65:0;;;10314:21:1;10371:2;10351:18;;;10344:30;10410:34;10390:18;;;10383:62;-1:-1:-1;;;10461:18:1;;;10454:39;10510:19;;12059:65:0;10130:405:1;12059:65:0;12237:23;12290:3;12278:9;;8726:14;12263:24;;;;:::i;:::-;:30;;;;:::i;:::-;-1:-1:-1;;;;;12375:15:0;;;;;;:8;:15;;;;;;12237:56;;-1:-1:-1;12375:15:0;;12374:16;:34;;;;-1:-1:-1;;;;;;12395:13:0;;;;;;:8;:13;;;;;;;;12394:14;12374:34;:55;;;;-1:-1:-1;;;;;;12412:17:0;;;;12374:55;:79;;;;-1:-1:-1;;;;;;12433:20:0;;12448:4;12433:20;;12374:79;:101;;;;;12464:11;-1:-1:-1;;;;;12457:18:0;:3;-1:-1:-1;;;;;12457:18:0;;;12374:101;12370:211;;;12524:15;12513:7;12496:14;12506:3;-1:-1:-1;;;;;3402:18:0;3373:7;3402:18;;;;;;;;;;;;3299:131;12496:14;:24;;;;:::i;:::-;:43;;12488:85;;;;-1:-1:-1;;;12488:85:0;;10742:2:1;12488:85:0;;;10724:21:1;10781:2;10761:18;;;10754:30;10820:31;10800:18;;;10793:59;10869:18;;12488:85:0;10540:353:1;12488:85:0;12589:18;12610:32;12622:5;12629:3;12634:7;12610:11;:32::i;:::-;12694:18;;12684:4;12651:12;3402:18;;;;;;;;;;;;-1:-1:-1;;;;;12724:15:0;;;;:8;:15;;;;;;;12589:53;;-1:-1:-1;;12666:46:0;;12724:15;;12723:16;:34;;;;-1:-1:-1;;;;;;12744:13:0;;;;;;:8;:13;;;;;;;;12743:14;12723:34;12719:230;;;12778:14;;-1:-1:-1;;;12778:14:0;;;;12770:45;;;;-1:-1:-1;;;12770:45:0;;11100:2:1;12770:45:0;;;11082:21:1;11139:2;11119:18;;;11112:30;-1:-1:-1;;;11158:18:1;;;11151:48;11216:18;;12770:45:0;10898:342:1;12770:45:0;12845:3;-1:-1:-1;;;;;12830:18:0;:11;-1:-1:-1;;;;;12830:18:0;;:43;;;;-1:-1:-1;12852:21:0;;-1:-1:-1;;;12852:21:0;;;;12830:43;:54;;;;;12877:7;12830:54;:69;;;;-1:-1:-1;12889:10:0;;-1:-1:-1;;;12889:10:0;;;;12888:11;12830:69;12826:116;;;12916:14;:12;:14::i;:::-;12957:39;12973:5;12980:3;12985:10;12957:15;:39::i;:::-;11926:1074;;;11818:1182;;;:::o;823:132::-;803:6;;-1:-1:-1;;;;;803:6:0;287:10;887:23;879:68;;;;-1:-1:-1;;;879:68:0;;11447:2:1;879:68:0;;;11429:21:1;;;11466:18;;;11459:30;11525:34;11505:18;;;11498:62;11577:18;;879:68:0;11245:356:1;1277:191:0;1370:6;;;-1:-1:-1;;;;;1387:17:0;;;-1:-1:-1;;;;;;1387:17:0;;;;;;;1420:40;;1370:6;;;1387:17;1370:6;;1420:40;;1351:16;;1420:40;1340:128;1277:191;:::o;10159:670::-;-1:-1:-1;;;;;10301:15:0;;10277:7;10301:15;;;:8;:15;;;;;;;;;:32;;-1:-1:-1;;;;;;10320:13:0;;;;;;:8;:13;;;;;;;;10301:32;10297:79;;;-1:-1:-1;10357:7:0;10350:14;;10297:79;10407:11;:24;-1:-1:-1;;;;;10455:11:0;10448:18;;;;;;10444:171;;-1:-1:-1;10494:7:0;:20;10444:171;;;10545:11;-1:-1:-1;;;;;10536:20:0;:5;-1:-1:-1;;;;;10536:20:0;;10532:83;;-1:-1:-1;10584:6:0;:19;10532:83;10629:11;10659:12;;10655:134;;10717:3;10695:18;10705:8;10695:7;:18;:::i;:::-;10694:26;;;;:::i;:::-;10688:32;;10735:42;10751:5;10766:4;10773:3;10735:15;:42::i;:::-;10807:13;10817:3;10807:7;:13;:::i;:::-;10799:22;10159:670;-1:-1:-1;;;;;;10159:670:0:o;10839:514::-;10883:10;:17;;-1:-1:-1;;;;10883:17:0;-1:-1:-1;;;10883:17:0;;;10949:4;-1:-1:-1;3402:18:0;;;;;;;;;;;10911:44;;10971:9;10984:1;10971:14;10967:53;;11002:7;10839:514::o;10967:53::-;11058:4;3373:7;3402:18;;;;;;;;;;;11030:35;;:9;:35::i;:::-;11076:27;11106:25;11130:1;11107:21;11106:25;:::i;:::-;11076:55;-1:-1:-1;11142:26:0;11171:25;11195:1;11172:21;11171:25;:::i;:::-;11214:9;;11206:48;;11142:54;;-1:-1:-1;;;;;;11214:9:0;;11206:48;;;;;11234:19;;11214:9;11206:48;11214:9;11206:48;11234:19;11214:9;11206:48;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11272:14:0;;11264:52;;-1:-1:-1;;;;;11272:14:0;;;;11264:52;;;;;11297:18;;11272:14;11264:52;11272:14;11264:52;11297:18;11272:14;11264:52;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11327:10:0;:18;;-1:-1:-1;;;;11327:18:0;;;-1:-1:-1;;10839:514:0:o;5060:699::-;-1:-1:-1;;;;;5201:18:0;;5193:68;;;;-1:-1:-1;;;5193:68:0;;11941:2:1;5193:68:0;;;11923:21:1;11980:2;11960:18;;;11953:30;12019:34;11999:18;;;11992:62;-1:-1:-1;;;12070:18:1;;;12063:35;12115:19;;5193:68:0;11739:401:1;5193:68:0;-1:-1:-1;;;;;5282:16:0;;5274:64;;;;-1:-1:-1;;;5274:64:0;;12347:2:1;5274:64:0;;;12329:21:1;12386:2;12366:18;;;12359:30;12425:34;12405:18;;;12398:62;-1:-1:-1;;;12476:18:1;;;12469:33;12519:19;;5274:64:0;12145:399:1;5274:64:0;-1:-1:-1;;;;;5424:15:0;;5402:19;5424:15;;;;;;;;;;;5460:21;;;;5452:72;;;;-1:-1:-1;;;5452:72:0;;12751:2:1;5452:72:0;;;12733:21:1;12790:2;12770:18;;;12763:30;12829:34;12809:18;;;12802:62;-1:-1:-1;;;12880:18:1;;;12873:36;12926:19;;5452:72:0;12549:402:1;5452:72:0;-1:-1:-1;;;;;5564:15:0;;;:9;:15;;;;;;;;;;;5582:20;;;5564:38;;5619:13;;;;;;;;;;:23;;;;;;5673:26;;1361:25:1;;;5619:13:0;;5673:26;;1334:18:1;5673:26:0;;;;;;;5712:37;7105:133;11363:447;11443:16;;;11457:1;11443:16;;;;;;;;11419:21;;11443:16;;;;;;;;;;-1:-1:-1;11443:16:0;11419:40;;11488:4;11470;11475:1;11470:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;11470:23:0;;;-1:-1:-1;;;;;11470:23:0;;;;;11514:13;-1:-1:-1;;;;;11514:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11504:4;11509:1;11504:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;11504:30:0;;;-1:-1:-1;;;;;11504:30:0;;;;;11545:56;11562:4;11577:13;11593:7;11545:8;:56::i;:::-;11612:190;;-1:-1:-1;;;11612:190:0;;-1:-1:-1;;;;;11612:13:0;:64;;;;:190;;11691:7;;11713:1;;11729:4;;11756;;11776:15;;11612:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:548:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:180::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;-1:-1:-1;2198:23:1;;2047:180;-1:-1:-1;2047:180:1:o;2232:247::-;2291:6;2344:2;2332:9;2323:7;2319:23;2315:32;2312:52;;;2360:1;2357;2350:12;2312:52;2399:9;2386:23;2418:31;2443:5;2418:31;:::i;2917:388::-;2985:6;2993;3046:2;3034:9;3025:7;3021:23;3017:32;3014:52;;;3062:1;3059;3052:12;3014:52;3101:9;3088:23;3120:31;3145:5;3120:31;:::i;:::-;3170:5;-1:-1:-1;3227:2:1;3212:18;;3199:32;3240:33;3199:32;3240:33;:::i;:::-;3292:7;3282:17;;;2917:388;;;;;:::o;3310:118::-;3396:5;3389:13;3382:21;3375:5;3372:32;3362:60;;3418:1;3415;3408:12;3433:382;3498:6;3506;3559:2;3547:9;3538:7;3534:23;3530:32;3527:52;;;3575:1;3572;3565:12;3527:52;3614:9;3601:23;3633:31;3658:5;3633:31;:::i;:::-;3683:5;-1:-1:-1;3740:2:1;3725:18;;3712:32;3753:30;3712:32;3753:30;:::i;3820:380::-;3899:1;3895:12;;;;3942;;;3963:61;;4017:4;4009:6;4005:17;3995:27;;3963:61;4070:2;4062:6;4059:14;4039:18;4036:38;4033:161;;4116:10;4111:3;4107:20;4104:1;4097:31;4151:4;4148:1;4141:15;4179:4;4176:1;4169:15;4033:161;;3820:380;;;:::o;4205:127::-;4266:10;4261:3;4257:20;4254:1;4247:31;4297:4;4294:1;4287:15;4321:4;4318:1;4311:15;4337:125;4402:9;;;4423:10;;;4420:36;;;4436:18;;:::i;4872:184::-;4942:6;4995:2;4983:9;4974:7;4970:23;4966:32;4963:52;;;5011:1;5008;5001:12;4963:52;-1:-1:-1;5034:16:1;;4872:184;-1:-1:-1;4872:184:1:o;5340:245::-;5407:6;5460:2;5448:9;5439:7;5435:23;5431:32;5428:52;;;5476:1;5473;5466:12;5428:52;5508:9;5502:16;5527:28;5549:5;5527:28;:::i;5996:168::-;6069:9;;;6100;;6117:15;;;6111:22;;6097:37;6087:71;;6138:18;;:::i;6169:217::-;6209:1;6235;6225:132;;6279:10;6274:3;6270:20;6267:1;6260:31;6314:4;6311:1;6304:15;6342:4;6339:1;6332:15;6225:132;-1:-1:-1;6371:9:1;;6169:217::o;11606:128::-;11673:9;;;11694:11;;;11691:37;;;11708:18;;:::i;13088:127::-;13149:10;13144:3;13140:20;13137:1;13130:31;13180:4;13177:1;13170:15;13204:4;13201:1;13194:15;13220:251;13290:6;13343:2;13331:9;13322:7;13318:23;13314:32;13311:52;;;13359:1;13356;13349:12;13311:52;13391:9;13385:16;13410:31;13435:5;13410:31;:::i;13476:980::-;13738:4;13786:3;13775:9;13771:19;13817:6;13806:9;13799:25;13843:2;13881:6;13876:2;13865:9;13861:18;13854:34;13924:3;13919:2;13908:9;13904:18;13897:31;13948:6;13983;13977:13;14014:6;14006;13999:22;14052:3;14041:9;14037:19;14030:26;;14091:2;14083:6;14079:15;14065:29;;14112:1;14122:195;14136:6;14133:1;14130:13;14122:195;;;14201:13;;-1:-1:-1;;;;;14197:39:1;14185:52;;14292:15;;;;14257:12;;;;14233:1;14151:9;14122:195;;;-1:-1:-1;;;;;;;14373:32:1;;;;14368:2;14353:18;;14346:60;-1:-1:-1;;;14437:3:1;14422:19;14415:35;14334:3;13476:980;-1:-1:-1;;;13476:980:1:o

Swarm Source

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