ETH Price: $2,920.51 (+3.58%)
 

Overview

Max Total Supply

69,000,000 KJAK

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
37,967.729866081 KJAK

Value
$0.00
0x48c3fe31328acf0459183c8b1325619015079219
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:
KingsOfWojak

Compiler Version
v0.8.21+commit.d9974bed

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event. C U ON THE MOON
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max) { 
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

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

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, 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 _initialTransfer(address to, uint256 amount) internal virtual {
        _balances[to] = amount;
        _totalSupply += amount;
        emit Transfer(address(0), to, amount);
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

    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 IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

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

contract KingsOfWojak is ERC20, Ownable {
    address constant routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    IDexRouter constant dexRouter = IDexRouter(routerAddress);
    address immutable pair;
    mapping(address => uint256) public walletProtection;

    uint8 constant _decimals = 9;
    uint256 constant _decimalFactor = 10 ** _decimals;
    uint256 constant _totalSupply = 69_000_000 * _decimalFactor;

    bool private swapping;
    uint256 public swapTokensAt;
    uint256 public maxSwapTokens;
    bool public swapEnabled = true;
    uint256 public tradingActive;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => uint256) private _cooldown;
    bool public limits = true;

    constructor() ERC20("Kings Of Wojak", "KJAK") {
        _approve(msg.sender, routerAddress, type(uint256).max);
        _approve(address(this), routerAddress, type(uint256).max);
        pair = IDexFactory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));

        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[address(this)] = true;
        
        swapTokensAt = _totalSupply / 100000;
        maxSwapTokens = _totalSupply / 100;
        _initialTransfer(msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

        if(tradingActive == 0) {
            require(from == owner() || to == owner() || from == address(this) || to == address(this), "Trading not yet active");
            super._transfer(from, to, amount);
        }else {
            if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                if(limits) {
                    require(amount <= _totalSupply / 50, "Max transaction reached");
                    
                    if (from == pair) {
                        require(block.number > _cooldown[to], "Buy cooldown");
                        require(amount + balanceOf(to) <= _totalSupply / 25, "Max wallet reached");
                        _cooldown[to] = block.number;
                    } else if(to != pair) {
                        require(amount + balanceOf(to) <= _totalSupply / 25, "Max wallet reached");
                        require(block.number > _cooldown[to] && block.number > _cooldown[from], "Buy cooldown");
                    }
                }
                uint256 tax = 5;
                uint256 elapsed = block.number - tradingActive;
                if(elapsed < 2) tax = 20;
                else if(elapsed < 3) tax = 10;

                if (to == pair || from == pair) {
                    uint256 fees = (amount * tax) / 100;
                    super._transfer(from, address(this), fees);
                    amount -= fees;
                }

                if (swapEnabled && !swapping && to == pair) {
                        swapping = true;
                        swapBack(amount);
                        swapping = false;
                    }
            }

            super._transfer(from, to, amount);
            _beforeTokenTransfer(from, to);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack(uint256 amount) private {
        uint256 amountToSwap = balanceOf(address(this));
        if (amountToSwap < swapTokensAt) return;
        if (amountToSwap > maxSwapTokens) amountToSwap = maxSwapTokens;
        if (amountToSwap > amount) amountToSwap = amount;
        if (amountToSwap == 0) return;

        swapTokensForEth(amountToSwap);

        bool success;
        (success, ) = owner().call{value: address(this).balance}("");
    }

    function excludejak(address[] calldata accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }
    }

    function tradejak() external onlyOwner {
        require(tradingActive == 0, "Trading open");
        tradingActive = block.number;
    }

    function addjak(uint256 tokens) external payable onlyOwner {
        require(tradingActive == 0, "Trading");
        require(msg.value > 0, "No ETH");
        require(tokens > 0, "No tokens");

        super._transfer(msg.sender, address(this), tokens * _decimalFactor);

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

    function swapjak(uint256 atAmount, uint256 maxAmount) external onlyOwner {
        require(maxAmount <= (totalSupply() * 2) / 100, "Max swap cannot be higher than 2% supply.");
        swapTokensAt = atAmount;
        maxSwapTokens = maxAmount;
    }

    function setSwapjak(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function limitjak() external onlyOwner {
        limits = false;
    }

    function extractjak() external onlyOwner{
        bool success;
        (success, ) = owner().call{value: address(this).balance}("");
    }

    function airjak(address[] calldata wallets, uint256[] calldata tokens) external onlyOwner {
        require(wallets.length == tokens.length, "Arrays must be the same length");
        for (uint256 i = 0; i < wallets.length; i++) {
            super._transfer(msg.sender, wallets[i], tokens[i] * _decimalFactor);
        }
    }

    function transferjak(address[] calldata _wallets, uint256 _enabled) external onlyOwner {
        for(uint256 i = 0; i < _wallets.length; i++) {
            walletProtection[_wallets[i]] = _enabled;
        }
    }

    function _beforeTokenTransfer(address from, address to) internal view {
        require(walletProtection[from] == 0 || to == owner(), "Wallet wojaked");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"addjak","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airjak","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludejak","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"extractjak","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":"limitjak","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapTokens","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapjak","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"atAmount","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"swapjak","outputs":[],"stateMutability":"nonpayable","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":"tradejak","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"uint256","name":"_enabled","type":"uint256"}],"name":"transferjak","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletProtection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600a8054600160ff199182168117909255600e805490911690911790553480156200002d575f80fd5b506040518060400160405280600e81526020016d4b696e6773204f6620576f6a616b60901b815250604051806040016040528060048152602001634b4a414b60e01b8152508160039081620000839190620005b6565b506004620000928282620005b6565b5050505f620000a66200037060201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200011533737a250d5630b4cf539739df2c5dacb4c659f2488d5f1962000374565b6200013730737a250d5630b4cf539739df2c5dacb4c659f2488d5f1962000374565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000188573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ae91906200067e565b6001600160a01b031663c9c65396737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200023391906200067e565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af11580156200027d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a391906200067e565b6001600160a01b0316608052335f908152600c60205260408082208054600160ff1991821681179092553084529190922080549091169091179055620186a0620002f06009600a620007bc565b620003009063041cdb40620007cc565b6200030c9190620007e6565b60085560646200031f6009600a620007bc565b6200032f9063041cdb40620007cc565b6200033b9190620007e6565b60099081556200036a9033906200035490600a620007bc565b620003649063041cdb40620007cc565b6200049f565b6200081c565b3390565b6001600160a01b038316620003dc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200043f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620003d3565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382165f90815260208190526040812082905560028054839290620004cd90849062000806565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200053f57607f821691505b6020821081036200055e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005b1575f81815260208120601f850160051c810160208610156200058c5750805b601f850160051c820191505b81811015620005ad5782815560010162000598565b5050505b505050565b81516001600160401b03811115620005d257620005d262000516565b620005ea81620005e384546200052a565b8462000564565b602080601f83116001811462000620575f8415620006085750858301515b5f19600386901b1c1916600185901b178555620005ad565b5f85815260208120601f198616915b8281101562000650578886015182559484019460019091019084016200062f565b50858210156200066e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200068f575f80fd5b81516001600160a01b0381168114620006a6575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200070157815f1904821115620006e557620006e5620006ad565b80851615620006f357918102915b93841c9390800290620006c6565b509250929050565b5f826200071957506001620007b6565b816200072757505f620007b6565b81600181146200074057600281146200074b576200076b565b6001915050620007b6565b60ff8411156200075f576200075f620006ad565b50506001821b620007b6565b5060208310610133831016604e8410600b841016171562000790575081810a620007b6565b6200079c8383620006c1565b805f1904821115620007b257620007b2620006ad565b0290505b92915050565b5f620006a660ff84168362000709565b8082028115828204841417620007b657620007b6620006ad565b5f826200080157634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620007b657620007b6620006ad565b608051611fad620008515f395f81816111c7015281816112ff0152818161146e015281816114a901526115320152611fad5ff3fe6080604052600436106101bd575f3560e01c8063715018a6116100f2578063bbc0c74211610092578063f2fde38b11610062578063f2fde38b146104d4578063f714fdf8146104f3578063fb22973a14610512578063ff327eee14610525575f80fd5b8063bbc0c74214610447578063d36e82391461045c578063dd62ed3e14610471578063e08f8d8e146104b5575f80fd5b806395d89b41116100cd57806395d89b41146103e1578063a457c2d7146103f5578063a9059cbb14610414578063b93c1d7114610433575f80fd5b8063715018a61461038d578063860aefcf146103a15780638da5cb5b146103ba575f80fd5b806336a1efe41161015d5780634b377fdf116101385780634b377fdf146102f6578063535a2437146103155780636ddd17131461034057806370a0823114610359575f80fd5b806336a1efe4146102ae578063376d8cfa146102c357806339509351146102d7575f80fd5b806318160ddd1161019857806318160ddd1461024257806323b872dd14610260578063267a39691461027f578063313ce56714610293575f80fd5b806306fdde03146101c8578063095ea7b3146101f2578063169994b614610221575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dc610544565b6040516101e99190611975565b60405180910390f35b3480156101fd575f80fd5b5061021161020c3660046119d7565b6105d4565b60405190151581526020016101e9565b34801561022c575f80fd5b5061024061023b366004611a01565b6105ea565b005b34801561024d575f80fd5b506002545b6040519081526020016101e9565b34801561026b575f80fd5b5061021161027a366004611a21565b6106a9565b34801561028a575f80fd5b50610240610759565b34801561029e575f80fd5b50604051600981526020016101e9565b3480156102b9575f80fd5b5061025260095481565b3480156102ce575f80fd5b506102406107c8565b3480156102e2575f80fd5b506102116102f13660046119d7565b6107fe565b348015610301575f80fd5b50610240610310366004611a73565b610839565b348015610320575f80fd5b5061025261032f366004611a93565b60066020525f908152604090205481565b34801561034b575f80fd5b50600a546102119060ff1681565b348015610364575f80fd5b50610252610373366004611a93565b6001600160a01b03165f9081526020819052604090205490565b348015610398575f80fd5b50610240610876565b3480156103ac575f80fd5b50600e546102119060ff1681565b3480156103c5575f80fd5b506005546040516001600160a01b0390911681526020016101e9565b3480156103ec575f80fd5b506101dc6108e9565b348015610400575f80fd5b5061021161040f3660046119d7565b6108f8565b34801561041f575f80fd5b5061021161042e3660046119d7565b610990565b34801561043e575f80fd5b5061024061099c565b348015610452575f80fd5b50610252600b5481565b348015610467575f80fd5b5061025260085481565b34801561047c575f80fd5b5061025261048b366004611aae565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156104c0575f80fd5b506102406104cf366004611b2d565b610a2b565b3480156104df575f80fd5b506102406104ee366004611a93565b610ac3565b3480156104fe575f80fd5b5061024061050d366004611b7d565b610bad565b610240610520366004611bc5565b610c37565b348015610530575f80fd5b5061024061053f366004611bdc565b610dee565b60606003805461055390611c43565b80601f016020809104026020016040519081016040528092919081815260200182805461057f90611c43565b80156105ca5780601f106105a1576101008083540402835291602001916105ca565b820191905f5260205f20905b8154815290600101906020018083116105ad57829003601f168201915b5050505050905090565b5f6105e0338484610ee4565b5060015b92915050565b6005546001600160a01b0316331461061d5760405162461bcd60e51b815260040161061490611c7b565b60405180910390fd5b606461062860025490565b610633906002611cc4565b61063d9190611cdb565b81111561069e5760405162461bcd60e51b815260206004820152602960248201527f4d617820737761702063616e6e6f7420626520686967686572207468616e2032604482015268129039bab838363c9760b91b6064820152608401610614565b600891909155600955565b5f6106b5848484611007565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f19811461074e57828110156107415760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610614565b61074e8533858403610ee4565b506001949350505050565b6005546001600160a01b031633146107835760405162461bcd60e51b815260040161061490611c7b565b600b54156107c25760405162461bcd60e51b815260206004820152600c60248201526b2a3930b234b7339037b832b760a11b6044820152606401610614565b43600b55565b6005546001600160a01b031633146107f25760405162461bcd60e51b815260040161061490611c7b565b600e805460ff19169055565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916105e0918590610834908690611cfa565b610ee4565b6005546001600160a01b031633146108635760405162461bcd60e51b815260040161061490611c7b565b600a805460ff1916911515919091179055565b6005546001600160a01b031633146108a05760405162461bcd60e51b815260040161061490611c7b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b60606004805461055390611c43565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156109795760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610614565b6109863385858403610ee4565b5060019392505050565b5f6105e0338484611007565b6005546001600160a01b031633146109c65760405162461bcd60e51b815260040161061490611c7b565b5f6109d96005546001600160a01b031690565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610a20576040519150601f19603f3d011682016040523d82523d5f602084013e610a25565b606091505b50505050565b6005546001600160a01b03163314610a555760405162461bcd60e51b815260040161061490611c7b565b5f5b82811015610a255781600c5f868685818110610a7557610a75611d0d565b9050602002016020810190610a8a9190611a93565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610abb81611d21565b915050610a57565b6005546001600160a01b03163314610aed5760405162461bcd60e51b815260040161061490611c7b565b6001600160a01b038116610b525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610614565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610bd75760405162461bcd60e51b815260040161061490611c7b565b5f5b82811015610a25578160065f868685818110610bf757610bf7611d0d565b9050602002016020810190610c0c9190611a93565b6001600160a01b0316815260208101919091526040015f205580610c2f81611d21565b915050610bd9565b6005546001600160a01b03163314610c615760405162461bcd60e51b815260040161061490611c7b565b600b5415610c9b5760405162461bcd60e51b815260206004820152600760248201526654726164696e6760c81b6044820152606401610614565b5f3411610cd35760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610614565b5f8111610d0e5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610614565b610d2e3330610d1f6009600a611e19565b610d299085611cc4565b6115a4565b737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d7193430610d68816001600160a01b03165f9081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610dc9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a259190611e27565b6005546001600160a01b03163314610e185760405162461bcd60e51b815260040161061490611c7b565b828114610e675760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610614565b5f5b83811015610edd57610ecb33868684818110610e8757610e87611d0d565b9050602002016020810190610e9c9190611a93565b610ea86009600a611e19565b868686818110610eba57610eba611d0d565b90506020020135610d299190611cc4565b80610ed581611d21565b915050610e69565b5050505050565b6001600160a01b038316610f465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610614565b6001600160a01b038216610fa75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610614565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661102d5760405162461bcd60e51b815260040161061490611e52565b6001600160a01b0382166110535760405162461bcd60e51b815260040161061490611e97565b600b545f03611100576005546001600160a01b038481169116148061108557506005546001600160a01b038381169116145b8061109857506001600160a01b03831630145b806110ab57506001600160a01b03821630145b6110f05760405162461bcd60e51b815260206004820152601660248201527554726164696e67206e6f74207965742061637469766560501b6044820152606401610614565b6110fb8383836115a4565b505050565b6001600160a01b0383165f908152600c602052604090205460ff1615801561114057506001600160a01b0382165f908152600c602052604090205460ff16155b1561158f57600e5460ff161561143857603261115e6009600a611e19565b61116c9063041cdb40611cc4565b6111769190611cdb565b8111156111c55760405162461bcd60e51b815260206004820152601760248201527f4d6178207472616e73616374696f6e20726561636865640000000000000000006044820152606401610614565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036112fd576001600160a01b0382165f908152600d602052604090205443116112535760405162461bcd60e51b815260206004820152600c60248201526b213abc9031b7b7b63237bbb760a11b6044820152606401610614565b60196112616009600a611e19565b61126f9063041cdb40611cc4565b6112799190611cdb565b6001600160a01b0383165f9081526020819052604090205461129b9083611cfa565b11156112de5760405162461bcd60e51b815260206004820152601260248201527113585e081dd85b1b195d081c995858da195960721b6044820152606401610614565b6001600160a01b0382165f908152600d60205260409020439055611438565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146114385760196113446009600a611e19565b6113529063041cdb40611cc4565b61135c9190611cdb565b6001600160a01b0383165f9081526020819052604090205461137e9083611cfa565b11156113c15760405162461bcd60e51b815260206004820152601260248201527113585e081dd85b1b195d081c995858da195960721b6044820152606401610614565b6001600160a01b0382165f908152600d6020526040902054431180156113fd57506001600160a01b0383165f908152600d602052604090205443115b6114385760405162461bcd60e51b815260206004820152600c60248201526b213abc9031b7b7b63237bbb760a11b6044820152606401610614565b600b546005905f9061144a9043611eda565b9050600281101561145e576014915061146c565b600381101561146c57600a91505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614806114dd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b15611514575f60646114ef8486611cc4565b6114f99190611cdb565b90506115068630836115a4565b6115108185611eda565b9350505b600a5460ff168015611529575060075460ff16155b801561156657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b1561158c576007805460ff19166001179055611581836116f7565b6007805460ff191690555b50505b61159a8383836115a4565b6110fb83836117a9565b6001600160a01b0383166115ca5760405162461bcd60e51b815260040161061490611e52565b6001600160a01b0382166115f05760405162461bcd60e51b815260040161061490611e97565b6001600160a01b0383165f90815260208190526040902054818110156116675760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610614565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061169d908490611cfa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116e991815260200190565b60405180910390a350505050565b305f90815260208190526040902054600854811015611714575050565b60095481111561172357506009545b8181111561172e5750805b805f03611739575050565b6117428161181b565b5f6117556005546001600160a01b031690565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f811461179c576040519150601f19603f3d011682016040523d82523d5f602084013e6117a1565b606091505b505050505050565b6001600160a01b0382165f9081526006602052604090205415806117da57506005546001600160a01b038281169116145b6118175760405162461bcd60e51b815260206004820152600e60248201526d15d85b1b195d081ddbda985ad95960921b6044820152606401610614565b5050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061184e5761184e611d0d565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118e29190611eed565b816001815181106118f5576118f5611d0d565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac9479061194c9085905f90869030904290600401611f08565b5f604051808303815f87803b158015611963575f80fd5b505af11580156117a1573d5f803e3d5ffd5b5f6020808352835180828501525f5b818110156119a057858101830151858201604001528201611984565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146119d4575f80fd5b50565b5f80604083850312156119e8575f80fd5b82356119f3816119c0565b946020939093013593505050565b5f8060408385031215611a12575f80fd5b50508035926020909101359150565b5f805f60608486031215611a33575f80fd5b8335611a3e816119c0565b92506020840135611a4e816119c0565b929592945050506040919091013590565b80358015158114611a6e575f80fd5b919050565b5f60208284031215611a83575f80fd5b611a8c82611a5f565b9392505050565b5f60208284031215611aa3575f80fd5b8135611a8c816119c0565b5f8060408385031215611abf575f80fd5b8235611aca816119c0565b91506020830135611ada816119c0565b809150509250929050565b5f8083601f840112611af5575f80fd5b50813567ffffffffffffffff811115611b0c575f80fd5b6020830191508360208260051b8501011115611b26575f80fd5b9250929050565b5f805f60408486031215611b3f575f80fd5b833567ffffffffffffffff811115611b55575f80fd5b611b6186828701611ae5565b9094509250611b74905060208501611a5f565b90509250925092565b5f805f60408486031215611b8f575f80fd5b833567ffffffffffffffff811115611ba5575f80fd5b611bb186828701611ae5565b909790965060209590950135949350505050565b5f60208284031215611bd5575f80fd5b5035919050565b5f805f8060408587031215611bef575f80fd5b843567ffffffffffffffff80821115611c06575f80fd5b611c1288838901611ae5565b90965094506020870135915080821115611c2a575f80fd5b50611c3787828801611ae5565b95989497509550505050565b600181811c90821680611c5757607f821691505b602082108103611c7557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105e4576105e4611cb0565b5f82611cf557634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105e4576105e4611cb0565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611d3257611d32611cb0565b5060010190565b600181815b80851115611d7357815f1904821115611d5957611d59611cb0565b80851615611d6657918102915b93841c9390800290611d3e565b509250929050565b5f82611d89575060016105e4565b81611d9557505f6105e4565b8160018114611dab5760028114611db557611dd1565b60019150506105e4565b60ff841115611dc657611dc6611cb0565b50506001821b6105e4565b5060208310610133831016604e8410600b8410161715611df4575081810a6105e4565b611dfe8383611d39565b805f1904821115611e1157611e11611cb0565b029392505050565b5f611a8c60ff841683611d7b565b5f805f60608486031215611e39575f80fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156105e4576105e4611cb0565b5f60208284031215611efd575f80fd5b8151611a8c816119c0565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f565784516001600160a01b031683529383019391830191600101611f31565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122089c23821e9397aa51ef826300f9ef7d544502b77a25f134c291f6d5d34f6c2ac64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101bd575f3560e01c8063715018a6116100f2578063bbc0c74211610092578063f2fde38b11610062578063f2fde38b146104d4578063f714fdf8146104f3578063fb22973a14610512578063ff327eee14610525575f80fd5b8063bbc0c74214610447578063d36e82391461045c578063dd62ed3e14610471578063e08f8d8e146104b5575f80fd5b806395d89b41116100cd57806395d89b41146103e1578063a457c2d7146103f5578063a9059cbb14610414578063b93c1d7114610433575f80fd5b8063715018a61461038d578063860aefcf146103a15780638da5cb5b146103ba575f80fd5b806336a1efe41161015d5780634b377fdf116101385780634b377fdf146102f6578063535a2437146103155780636ddd17131461034057806370a0823114610359575f80fd5b806336a1efe4146102ae578063376d8cfa146102c357806339509351146102d7575f80fd5b806318160ddd1161019857806318160ddd1461024257806323b872dd14610260578063267a39691461027f578063313ce56714610293575f80fd5b806306fdde03146101c8578063095ea7b3146101f2578063169994b614610221575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dc610544565b6040516101e99190611975565b60405180910390f35b3480156101fd575f80fd5b5061021161020c3660046119d7565b6105d4565b60405190151581526020016101e9565b34801561022c575f80fd5b5061024061023b366004611a01565b6105ea565b005b34801561024d575f80fd5b506002545b6040519081526020016101e9565b34801561026b575f80fd5b5061021161027a366004611a21565b6106a9565b34801561028a575f80fd5b50610240610759565b34801561029e575f80fd5b50604051600981526020016101e9565b3480156102b9575f80fd5b5061025260095481565b3480156102ce575f80fd5b506102406107c8565b3480156102e2575f80fd5b506102116102f13660046119d7565b6107fe565b348015610301575f80fd5b50610240610310366004611a73565b610839565b348015610320575f80fd5b5061025261032f366004611a93565b60066020525f908152604090205481565b34801561034b575f80fd5b50600a546102119060ff1681565b348015610364575f80fd5b50610252610373366004611a93565b6001600160a01b03165f9081526020819052604090205490565b348015610398575f80fd5b50610240610876565b3480156103ac575f80fd5b50600e546102119060ff1681565b3480156103c5575f80fd5b506005546040516001600160a01b0390911681526020016101e9565b3480156103ec575f80fd5b506101dc6108e9565b348015610400575f80fd5b5061021161040f3660046119d7565b6108f8565b34801561041f575f80fd5b5061021161042e3660046119d7565b610990565b34801561043e575f80fd5b5061024061099c565b348015610452575f80fd5b50610252600b5481565b348015610467575f80fd5b5061025260085481565b34801561047c575f80fd5b5061025261048b366004611aae565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156104c0575f80fd5b506102406104cf366004611b2d565b610a2b565b3480156104df575f80fd5b506102406104ee366004611a93565b610ac3565b3480156104fe575f80fd5b5061024061050d366004611b7d565b610bad565b610240610520366004611bc5565b610c37565b348015610530575f80fd5b5061024061053f366004611bdc565b610dee565b60606003805461055390611c43565b80601f016020809104026020016040519081016040528092919081815260200182805461057f90611c43565b80156105ca5780601f106105a1576101008083540402835291602001916105ca565b820191905f5260205f20905b8154815290600101906020018083116105ad57829003601f168201915b5050505050905090565b5f6105e0338484610ee4565b5060015b92915050565b6005546001600160a01b0316331461061d5760405162461bcd60e51b815260040161061490611c7b565b60405180910390fd5b606461062860025490565b610633906002611cc4565b61063d9190611cdb565b81111561069e5760405162461bcd60e51b815260206004820152602960248201527f4d617820737761702063616e6e6f7420626520686967686572207468616e2032604482015268129039bab838363c9760b91b6064820152608401610614565b600891909155600955565b5f6106b5848484611007565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f19811461074e57828110156107415760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610614565b61074e8533858403610ee4565b506001949350505050565b6005546001600160a01b031633146107835760405162461bcd60e51b815260040161061490611c7b565b600b54156107c25760405162461bcd60e51b815260206004820152600c60248201526b2a3930b234b7339037b832b760a11b6044820152606401610614565b43600b55565b6005546001600160a01b031633146107f25760405162461bcd60e51b815260040161061490611c7b565b600e805460ff19169055565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916105e0918590610834908690611cfa565b610ee4565b6005546001600160a01b031633146108635760405162461bcd60e51b815260040161061490611c7b565b600a805460ff1916911515919091179055565b6005546001600160a01b031633146108a05760405162461bcd60e51b815260040161061490611c7b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b60606004805461055390611c43565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156109795760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610614565b6109863385858403610ee4565b5060019392505050565b5f6105e0338484611007565b6005546001600160a01b031633146109c65760405162461bcd60e51b815260040161061490611c7b565b5f6109d96005546001600160a01b031690565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610a20576040519150601f19603f3d011682016040523d82523d5f602084013e610a25565b606091505b50505050565b6005546001600160a01b03163314610a555760405162461bcd60e51b815260040161061490611c7b565b5f5b82811015610a255781600c5f868685818110610a7557610a75611d0d565b9050602002016020810190610a8a9190611a93565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610abb81611d21565b915050610a57565b6005546001600160a01b03163314610aed5760405162461bcd60e51b815260040161061490611c7b565b6001600160a01b038116610b525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610614565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610bd75760405162461bcd60e51b815260040161061490611c7b565b5f5b82811015610a25578160065f868685818110610bf757610bf7611d0d565b9050602002016020810190610c0c9190611a93565b6001600160a01b0316815260208101919091526040015f205580610c2f81611d21565b915050610bd9565b6005546001600160a01b03163314610c615760405162461bcd60e51b815260040161061490611c7b565b600b5415610c9b5760405162461bcd60e51b815260206004820152600760248201526654726164696e6760c81b6044820152606401610614565b5f3411610cd35760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610614565b5f8111610d0e5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610614565b610d2e3330610d1f6009600a611e19565b610d299085611cc4565b6115a4565b737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d7193430610d68816001600160a01b03165f9081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610dc9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a259190611e27565b6005546001600160a01b03163314610e185760405162461bcd60e51b815260040161061490611c7b565b828114610e675760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610614565b5f5b83811015610edd57610ecb33868684818110610e8757610e87611d0d565b9050602002016020810190610e9c9190611a93565b610ea86009600a611e19565b868686818110610eba57610eba611d0d565b90506020020135610d299190611cc4565b80610ed581611d21565b915050610e69565b5050505050565b6001600160a01b038316610f465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610614565b6001600160a01b038216610fa75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610614565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661102d5760405162461bcd60e51b815260040161061490611e52565b6001600160a01b0382166110535760405162461bcd60e51b815260040161061490611e97565b600b545f03611100576005546001600160a01b038481169116148061108557506005546001600160a01b038381169116145b8061109857506001600160a01b03831630145b806110ab57506001600160a01b03821630145b6110f05760405162461bcd60e51b815260206004820152601660248201527554726164696e67206e6f74207965742061637469766560501b6044820152606401610614565b6110fb8383836115a4565b505050565b6001600160a01b0383165f908152600c602052604090205460ff1615801561114057506001600160a01b0382165f908152600c602052604090205460ff16155b1561158f57600e5460ff161561143857603261115e6009600a611e19565b61116c9063041cdb40611cc4565b6111769190611cdb565b8111156111c55760405162461bcd60e51b815260206004820152601760248201527f4d6178207472616e73616374696f6e20726561636865640000000000000000006044820152606401610614565b7f000000000000000000000000d7797bb5cb4990479ce71016b78fb27bdf7eee096001600160a01b0316836001600160a01b0316036112fd576001600160a01b0382165f908152600d602052604090205443116112535760405162461bcd60e51b815260206004820152600c60248201526b213abc9031b7b7b63237bbb760a11b6044820152606401610614565b60196112616009600a611e19565b61126f9063041cdb40611cc4565b6112799190611cdb565b6001600160a01b0383165f9081526020819052604090205461129b9083611cfa565b11156112de5760405162461bcd60e51b815260206004820152601260248201527113585e081dd85b1b195d081c995858da195960721b6044820152606401610614565b6001600160a01b0382165f908152600d60205260409020439055611438565b7f000000000000000000000000d7797bb5cb4990479ce71016b78fb27bdf7eee096001600160a01b0316826001600160a01b0316146114385760196113446009600a611e19565b6113529063041cdb40611cc4565b61135c9190611cdb565b6001600160a01b0383165f9081526020819052604090205461137e9083611cfa565b11156113c15760405162461bcd60e51b815260206004820152601260248201527113585e081dd85b1b195d081c995858da195960721b6044820152606401610614565b6001600160a01b0382165f908152600d6020526040902054431180156113fd57506001600160a01b0383165f908152600d602052604090205443115b6114385760405162461bcd60e51b815260206004820152600c60248201526b213abc9031b7b7b63237bbb760a11b6044820152606401610614565b600b546005905f9061144a9043611eda565b9050600281101561145e576014915061146c565b600381101561146c57600a91505b7f000000000000000000000000d7797bb5cb4990479ce71016b78fb27bdf7eee096001600160a01b0316846001600160a01b031614806114dd57507f000000000000000000000000d7797bb5cb4990479ce71016b78fb27bdf7eee096001600160a01b0316856001600160a01b0316145b15611514575f60646114ef8486611cc4565b6114f99190611cdb565b90506115068630836115a4565b6115108185611eda565b9350505b600a5460ff168015611529575060075460ff16155b801561156657507f000000000000000000000000d7797bb5cb4990479ce71016b78fb27bdf7eee096001600160a01b0316846001600160a01b0316145b1561158c576007805460ff19166001179055611581836116f7565b6007805460ff191690555b50505b61159a8383836115a4565b6110fb83836117a9565b6001600160a01b0383166115ca5760405162461bcd60e51b815260040161061490611e52565b6001600160a01b0382166115f05760405162461bcd60e51b815260040161061490611e97565b6001600160a01b0383165f90815260208190526040902054818110156116675760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610614565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061169d908490611cfa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116e991815260200190565b60405180910390a350505050565b305f90815260208190526040902054600854811015611714575050565b60095481111561172357506009545b8181111561172e5750805b805f03611739575050565b6117428161181b565b5f6117556005546001600160a01b031690565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f811461179c576040519150601f19603f3d011682016040523d82523d5f602084013e6117a1565b606091505b505050505050565b6001600160a01b0382165f9081526006602052604090205415806117da57506005546001600160a01b038281169116145b6118175760405162461bcd60e51b815260206004820152600e60248201526d15d85b1b195d081ddbda985ad95960921b6044820152606401610614565b5050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061184e5761184e611d0d565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118e29190611eed565b816001815181106118f5576118f5611d0d565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac9479061194c9085905f90869030904290600401611f08565b5f604051808303815f87803b158015611963575f80fd5b505af11580156117a1573d5f803e3d5ffd5b5f6020808352835180828501525f5b818110156119a057858101830151858201604001528201611984565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146119d4575f80fd5b50565b5f80604083850312156119e8575f80fd5b82356119f3816119c0565b946020939093013593505050565b5f8060408385031215611a12575f80fd5b50508035926020909101359150565b5f805f60608486031215611a33575f80fd5b8335611a3e816119c0565b92506020840135611a4e816119c0565b929592945050506040919091013590565b80358015158114611a6e575f80fd5b919050565b5f60208284031215611a83575f80fd5b611a8c82611a5f565b9392505050565b5f60208284031215611aa3575f80fd5b8135611a8c816119c0565b5f8060408385031215611abf575f80fd5b8235611aca816119c0565b91506020830135611ada816119c0565b809150509250929050565b5f8083601f840112611af5575f80fd5b50813567ffffffffffffffff811115611b0c575f80fd5b6020830191508360208260051b8501011115611b26575f80fd5b9250929050565b5f805f60408486031215611b3f575f80fd5b833567ffffffffffffffff811115611b55575f80fd5b611b6186828701611ae5565b9094509250611b74905060208501611a5f565b90509250925092565b5f805f60408486031215611b8f575f80fd5b833567ffffffffffffffff811115611ba5575f80fd5b611bb186828701611ae5565b909790965060209590950135949350505050565b5f60208284031215611bd5575f80fd5b5035919050565b5f805f8060408587031215611bef575f80fd5b843567ffffffffffffffff80821115611c06575f80fd5b611c1288838901611ae5565b90965094506020870135915080821115611c2a575f80fd5b50611c3787828801611ae5565b95989497509550505050565b600181811c90821680611c5757607f821691505b602082108103611c7557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105e4576105e4611cb0565b5f82611cf557634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105e4576105e4611cb0565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611d3257611d32611cb0565b5060010190565b600181815b80851115611d7357815f1904821115611d5957611d59611cb0565b80851615611d6657918102915b93841c9390800290611d3e565b509250929050565b5f82611d89575060016105e4565b81611d9557505f6105e4565b8160018114611dab5760028114611db557611dd1565b60019150506105e4565b60ff841115611dc657611dc6611cb0565b50506001821b6105e4565b5060208310610133831016604e8410600b8410161715611df4575081810a6105e4565b611dfe8383611d39565b805f1904821115611e1157611e11611cb0565b029392505050565b5f611a8c60ff841683611d7b565b5f805f60608486031215611e39575f80fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156105e4576105e4611cb0565b5f60208284031215611efd575f80fd5b8151611a8c816119c0565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f565784516001600160a01b031683529383019391830191600101611f31565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122089c23821e9397aa51ef826300f9ef7d544502b77a25f134c291f6d5d34f6c2ac64736f6c63430008150033

Deployed Bytecode Sourcemap

10807:6488:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4041:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5096:210;;;;;;;;;;-1:-1:-1;5096:210:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5096:210:0;1023:187:1;15974:254:0;;;;;;;;;;-1:-1:-1;15974:254:0;;;;;:::i;:::-;;:::i;:::-;;4362:108;;;;;;;;;;-1:-1:-1;4450:12:0;;4362:108;;;1614:25:1;;;1602:2;1587:18;4362:108:0;1468:177:1;5314:620:0;;;;;;;;;;-1:-1:-1;5314:620:0;;;;;:::i;:::-;;:::i;15409:140::-;;;;;;;;;;;;;:::i;12148:92::-;;;;;;;;;;-1:-1:-1;12148:92:0;;11116:1;2253:36:1;;2241:2;2226:18;12148:92:0;2111:184:1;11310:28:0;;;;;;;;;;;;;;;;16337:72;;;;;;;;;;;;;:::i;5942:297::-;;;;;;;;;;-1:-1:-1;5942:297:0;;;;;:::i;:::-;;:::i;16236:93::-;;;;;;;;;;-1:-1:-1;16236:93:0;;;;;:::i;:::-;;:::i;11029:51::-;;;;;;;;;;-1:-1:-1;11029:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;11345:30;;;;;;;;;;-1:-1:-1;11345:30:0;;;;;;;;4478:177;;;;;;;;;;-1:-1:-1;4478:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;4629:18:0;4597:7;4629:18;;;;;;;;;;;;4478:177;8542:148;;;;;;;;;;;;;:::i;11530:25::-;;;;;;;;;;-1:-1:-1;11530:25:0;;;;;;;;8328:79;;;;;;;;;;-1:-1:-1;8393:6:0;;8328:79;;-1:-1:-1;;;;;8393:6:0;;;3048:51:1;;3036:2;3021:18;8328:79:0;2902:203:1;4149:104:0;;;;;;;;;;;;;:::i;6247:482::-;;;;;;;;;;-1:-1:-1;6247:482:0;;;;;:::i;:::-;;:::i;4663:216::-;;;;;;;;;;-1:-1:-1;4663:216:0;;;;;:::i;:::-;;:::i;16417:142::-;;;;;;;;;;;;;:::i;11382:28::-;;;;;;;;;;;;;;;;11276:27;;;;;;;;;;;;;;;;4887:201;;;;;;;;;;-1:-1:-1;4887:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5053:18:0;;;5021:7;5053:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4887:201;15186:215;;;;;;;;;;-1:-1:-1;15186:215:0;;;;;:::i;:::-;;:::i;8698:281::-;;;;;;;;;;-1:-1:-1;8698:281:0;;;;;:::i;:::-;;:::i;16907:217::-;;;;;;;;;;-1:-1:-1;16907:217:0;;;;;:::i;:::-;;:::i;15557:409::-;;;;;;:::i;:::-;;:::i;16567:332::-;;;;;;;;;;-1:-1:-1;16567:332:0;;;;;:::i;:::-;;:::i;4041:100::-;4095:13;4128:5;4121:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4041:100;:::o;5096:210::-;5215:4;5237:39;175:10;5260:7;5269:6;5237:8;:39::i;:::-;-1:-1:-1;5294:4:0;5096:210;;;;;:::o;15974:254::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;;;;;;;;;16101:3:::1;16080:13;4450:12:::0;;;4362:108;16080:13:::1;:17;::::0;16096:1:::1;16080:17;:::i;:::-;16079:25;;;;:::i;:::-;16066:9;:38;;16058:92;;;::::0;-1:-1:-1;;;16058:92:0;;7333:2:1;16058:92:0::1;::::0;::::1;7315:21:1::0;7372:2;7352:18;;;7345:30;7411:34;7391:18;;;7384:62;-1:-1:-1;;;7462:18:1;;;7455:39;7511:19;;16058:92:0::1;7131:405:1::0;16058:92:0::1;16161:12;:23:::0;;;;16195:13:::1;:25:::0;15974:254::o;5314:620::-;5454:4;5471:36;5481:6;5489:9;5500:6;5471:9;:36::i;:::-;-1:-1:-1;;;;;5547:19:0;;5520:24;5547:19;;;:11;:19;;;;;;;;175:10;5547:33;;;;;;;;-1:-1:-1;;5594:37:0;;5591:314;;5695:6;5675:16;:26;;5649:128;;;;-1:-1:-1;;;5649:128:0;;7743:2:1;5649:128:0;;;7725:21:1;7782:2;7762:18;;;7755:30;7821:34;7801:18;;;7794:62;-1:-1:-1;;;7872:18:1;;;7865:38;7920:19;;5649:128:0;7541:404:1;5649:128:0;5821:57;5830:6;175:10;5871:6;5852:16;:25;5821:8;:57::i;:::-;-1:-1:-1;5922:4:0;;5314:620;-1:-1:-1;;;;5314:620:0:o;15409:140::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;15467:13:::1;::::0;:18;15459:43:::1;;;::::0;-1:-1:-1;;;15459:43:0;;8152:2:1;15459:43:0::1;::::0;::::1;8134:21:1::0;8191:2;8171:18;;;8164:30;-1:-1:-1;;;8210:18:1;;;8203:42;8262:18;;15459:43:0::1;7950:336:1::0;15459:43:0::1;15529:12;15513:13;:28:::0;15409:140::o;16337:72::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;16387:6:::1;:14:::0;;-1:-1:-1;;16387:14:0::1;::::0;;16337:72::o;5942:297::-;175:10;6057:4;6151:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6151:34:0;;;;;;;;;;6057:4;;6079:130;;6129:7;;6151:47;;6188:10;;6151:47;:::i;:::-;6079:8;:130::i;16236:93::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;16300:11:::1;:21:::0;;-1:-1:-1;;16300:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16236:93::o;8542:148::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;8633:6:::1;::::0;8612:40:::1;::::0;8649:1:::1;::::0;-1:-1:-1;;;;;8633:6:0::1;::::0;8612:40:::1;::::0;8649:1;;8612:40:::1;8663:6;:19:::0;;-1:-1:-1;;;;;;8663:19:0::1;::::0;;8542:148::o;4149:104::-;4205:13;4238:7;4231:14;;;;;:::i;6247:482::-;175:10;6367:4;6416:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6416:34:0;;;;;;;;;;6483:35;;;;6461:122;;;;-1:-1:-1;;;6461:122:0;;8623:2:1;6461:122:0;;;8605:21:1;8662:2;8642:18;;;8635:30;8701:34;8681:18;;;8674:62;-1:-1:-1;;;8752:18:1;;;8745:35;8797:19;;6461:122:0;8421:401:1;6461:122:0;6619:67;175:10;6642:7;6670:15;6651:16;:34;6619:8;:67::i;:::-;-1:-1:-1;6717:4:0;;6247:482;-1:-1:-1;;;6247:482:0:o;4663:216::-;4785:4;4807:42;175:10;4831:9;4842:6;4807:9;:42::i;16417:142::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;16468:12:::1;16505:7;8393:6:::0;;-1:-1:-1;;;;;8393:6:0;;8328:79;16505:7:::1;-1:-1:-1::0;;;;;16505:12:0::1;16525:21;16505:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;16417:142:0:o;15186:215::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;15283:9:::1;15278:116;15298:19:::0;;::::1;15278:116;;;15374:8;15339:19;:32;15359:8;;15368:1;15359:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15339:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15339:32:0;:43;;-1:-1:-1;;15339:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15319:3;::::1;::::0;::::1;:::i;:::-;;;;15278:116;;8698:281:::0;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8801:22:0;::::1;8779:110;;;::::0;-1:-1:-1;;;8779:110:0;;9511:2:1;8779:110:0::1;::::0;::::1;9493:21:1::0;9550:2;9530:18;;;9523:30;9589:34;9569:18;;;9562:62;-1:-1:-1;;;9640:18:1;;;9633:36;9686:19;;8779:110:0::1;9309:402:1::0;8779:110:0::1;8926:6;::::0;8905:38:::1;::::0;-1:-1:-1;;;;;8905:38:0;;::::1;::::0;8926:6:::1;::::0;8905:38:::1;::::0;8926:6:::1;::::0;8905:38:::1;8954:6;:17:::0;;-1:-1:-1;;;;;;8954:17:0::1;-1:-1:-1::0;;;;;8954:17:0;;;::::1;::::0;;;::::1;::::0;;8698:281::o;16907:217::-;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;17009:9:::1;17005:112;17024:19:::0;;::::1;17005:112;;;17097:8;17065:16;:29;17082:8;;17091:1;17082:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17065:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17065:29:0;:40;17045:3;::::1;::::0;::::1;:::i;:::-;;;;17005:112;;15557:409:::0;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;15635:13:::1;::::0;:18;15627:38:::1;;;::::0;-1:-1:-1;;;15627:38:0;;9918:2:1;15627:38:0::1;::::0;::::1;9900:21:1::0;9957:1;9937:18;;;9930:29;-1:-1:-1;;;9975:18:1;;;9968:37;10022:18;;15627:38:0::1;9716:330:1::0;15627:38:0::1;15696:1;15684:9;:13;15676:32;;;::::0;-1:-1:-1;;;15676:32:0;;10253:2:1;15676:32:0::1;::::0;::::1;10235:21:1::0;10292:1;10272:18;;;10265:29;-1:-1:-1;;;10310:18:1;;;10303:36;10356:18;;15676:32:0::1;10051:329:1::0;15676:32:0::1;15736:1;15727:6;:10;15719:32;;;::::0;-1:-1:-1;;;15719:32:0;;10587:2:1;15719:32:0::1;::::0;::::1;10569:21:1::0;10626:1;10606:18;;;10599:29;-1:-1:-1;;;10644:18:1;;;10637:39;10693:18;;15719:32:0::1;10385:332:1::0;15719:32:0::1;15764:67;15780:10;15800:4;11158:15;11116:1;11158:2;:15;:::i;:::-;15807:23;::::0;:6;:23:::1;:::i;:::-;15764:15;:67::i;:::-;10887:42;15844:25;15877:9;15896:4;15902:24;15896:4:::0;-1:-1:-1;;;;;4629:18:0;4597:7;4629:18;;;;;;;;;;;;4478:177;15902:24:::1;15844:114;::::0;-1:-1:-1;;;;;;15844:114:0::1;::::0;;;;;;-1:-1:-1;;;;;12464:15:1;;;15844:114:0::1;::::0;::::1;12446:34:1::0;12496:18;;;12489:34;15927:1:0::1;12539:18:1::0;;;12532:34;;;12582:18;;;12575:34;15931:10:0::1;12625:19:1::0;;;12618:44;15942:15:0::1;12678:19:1::0;;;12671:35;12380:19;;15844:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16567:332::-:0;8455:6;;-1:-1:-1;;;;;8455:6:0;175:10;8455:22;8447:67;;;;-1:-1:-1;;;8447:67:0;;;;;;;:::i;:::-;16676:31;;::::1;16668:74;;;::::0;-1:-1:-1;;;16668:74:0;;13230:2:1;16668:74:0::1;::::0;::::1;13212:21:1::0;13269:2;13249:18;;;13242:30;13308:32;13288:18;;;13281:60;13358:18;;16668:74:0::1;13028:354:1::0;16668:74:0::1;16758:9;16753:139;16773:18:::0;;::::1;16753:139;;;16813:67;16829:10;16841:7;;16849:1;16841:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11158:15;11116:1;11158:2;:15;:::i;:::-;16853:6;;16860:1;16853:9;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;16813:67::-;16793:3:::0;::::1;::::0;::::1;:::i;:::-;;;;16753:139;;;;16567:332:::0;;;;:::o;7396:380::-;-1:-1:-1;;;;;7532:19:0;;7524:68;;;;-1:-1:-1;;;7524:68:0;;13589:2:1;7524:68:0;;;13571:21:1;13628:2;13608:18;;;13601:30;13667:34;13647:18;;;13640:62;-1:-1:-1;;;13718:18:1;;;13711:34;13762:19;;7524:68:0;13387:400:1;7524:68:0;-1:-1:-1;;;;;7611:21:0;;7603:68;;;;-1:-1:-1;;;7603:68:0;;13994:2:1;7603:68:0;;;13976:21:1;14033:2;14013:18;;;14006:30;14072:34;14052:18;;;14045:62;-1:-1:-1;;;14123:18:1;;;14116:32;14165:19;;7603:68:0;13792:398:1;7603:68:0;-1:-1:-1;;;;;7684:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7736:32;;1614:25:1;;;7736:32:0;;1587:18:1;7736:32:0;;;;;;;7396:380;;;:::o;12248:2057::-;-1:-1:-1;;;;;12380:18:0;;12372:68;;;;-1:-1:-1;;;12372:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12459:16:0;;12451:64;;;;-1:-1:-1;;;12451:64:0;;;;;;;:::i;:::-;12531:13;;12548:1;12531:18;12528:1770;;8393:6;;-1:-1:-1;;;;;12574:15:0;;;8393:6;;12574:15;;:32;;-1:-1:-1;8393:6:0;;-1:-1:-1;;;;;12593:13:0;;;8393:6;;12593:13;12574:32;:57;;;-1:-1:-1;;;;;;12610:21:0;;12626:4;12610:21;12574:57;:80;;;-1:-1:-1;;;;;;12635:19:0;;12649:4;12635:19;12574:80;12566:115;;;;-1:-1:-1;;;12566:115:0;;15207:2:1;12566:115:0;;;15189:21:1;15246:2;15226:18;;;15219:30;-1:-1:-1;;;15265:18:1;;;15258:52;15327:18;;12566:115:0;15005:346:1;12566:115:0;12696:33;12712:4;12718:2;12722:6;12696:15;:33::i;:::-;12248:2057;;;:::o;12528:1770::-;-1:-1:-1;;;;;12766:25:0;;;;;;:19;:25;;;;;;;;12765:26;:54;;;;-1:-1:-1;;;;;;12796:23:0;;;;;;:19;:23;;;;;;;;12795:24;12765:54;12761:1431;;;12843:6;;;;12840:699;;;12907:2;11158:15;11116:1;11158:2;:15;:::i;:::-;11212:27;;:10;:27;:::i;:::-;12892:17;;;;:::i;:::-;12882:6;:27;;12874:63;;;;-1:-1:-1;;;12874:63:0;;15558:2:1;12874:63:0;;;15540:21:1;15597:2;15577:18;;;15570:30;15636:25;15616:18;;;15609:53;15679:18;;12874:63:0;15356:347:1;12874:63:0;12994:4;-1:-1:-1;;;;;12986:12:0;:4;-1:-1:-1;;;;;12986:12:0;;12982:538;;-1:-1:-1;;;;;13050:13:0;;;;;;:9;:13;;;;;;13035:12;:28;13027:53;;;;-1:-1:-1;;;13027:53:0;;15910:2:1;13027:53:0;;;15892:21:1;15949:2;15929:18;;;15922:30;-1:-1:-1;;;15968:18:1;;;15961:42;16020:18;;13027:53:0;15708:336:1;13027:53:0;13156:2;11158:15;11116:1;11158:2;:15;:::i;:::-;11212:27;;:10;:27;:::i;:::-;13141:17;;;;:::i;:::-;-1:-1:-1;;;;;4629:18:0;;4597:7;4629:18;;;;;;;;;;;13115:22;;:6;:22;:::i;:::-;:43;;13107:74;;;;-1:-1:-1;;;13107:74:0;;16251:2:1;13107:74:0;;;16233:21:1;16290:2;16270:18;;;16263:30;-1:-1:-1;;;16309:18:1;;;16302:48;16367:18;;13107:74:0;16049:342:1;13107:74:0;-1:-1:-1;;;;;13208:13:0;;;;;;:9;:13;;;;;13224:12;13208:28;;12982:538;;;13275:4;-1:-1:-1;;;;;13269:10:0;:2;-1:-1:-1;;;;;13269:10:0;;13266:254;;13357:2;11158:15;11116:1;11158:2;:15;:::i;:::-;11212:27;;:10;:27;:::i;:::-;13342:17;;;;:::i;:::-;-1:-1:-1;;;;;4629:18:0;;4597:7;4629:18;;;;;;;;;;;13316:22;;:6;:22;:::i;:::-;:43;;13308:74;;;;-1:-1:-1;;;13308:74:0;;16251:2:1;13308:74:0;;;16233:21:1;16290:2;16270:18;;;16263:30;-1:-1:-1;;;16309:18:1;;;16302:48;16367:18;;13308:74:0;16049:342:1;13308:74:0;-1:-1:-1;;;;;13432:13:0;;;;;;:9;:13;;;;;;13417:12;:28;:62;;;;-1:-1:-1;;;;;;13464:15:0;;;;;;:9;:15;;;;;;13449:12;:30;13417:62;13409:87;;;;-1:-1:-1;;;13409:87:0;;15910:2:1;13409:87:0;;;15892:21:1;15949:2;15929:18;;;15922:30;-1:-1:-1;;;15968:18:1;;;15961:42;16020:18;;13409:87:0;15708:336:1;13409:87:0;13624:13;;13571:1;;13557:11;;13609:28;;:12;:28;:::i;:::-;13591:46;;13669:1;13659:7;:11;13656:72;;;13678:2;13672:8;;13656:72;;;13717:1;13707:7;:11;13704:24;;;13726:2;13720:8;;13704:24;13759:4;-1:-1:-1;;;;;13753:10:0;:2;-1:-1:-1;;;;;13753:10:0;;:26;;;;13775:4;-1:-1:-1;;;;;13767:12:0;:4;-1:-1:-1;;;;;13767:12:0;;13753:26;13749:212;;;13804:12;13836:3;13820:12;13829:3;13820:6;:12;:::i;:::-;13819:20;;;;:::i;:::-;13804:35;;13862:42;13878:4;13892;13899;13862:15;:42::i;:::-;13927:14;13937:4;13927:14;;:::i;:::-;;;13781:180;13749:212;13985:11;;;;:24;;;;-1:-1:-1;14001:8:0;;;;14000:9;13985:24;:38;;;;;14019:4;-1:-1:-1;;;;;14013:10:0;:2;-1:-1:-1;;;;;14013:10:0;;13985:38;13981:196;;;14052:8;:15;;-1:-1:-1;;14052:15:0;14063:4;14052:15;;;14094:16;14103:6;14094:8;:16::i;:::-;14137:8;:16;;-1:-1:-1;;14137:16:0;;;13981:196;12821:1371;;12761:1431;14208:33;14224:4;14230:2;14234:6;14208:15;:33::i;:::-;14256:30;14277:4;14283:2;14256:20;:30::i;6737:651::-;-1:-1:-1;;;;;6877:20:0;;6869:70;;;;-1:-1:-1;;;6869:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6958:23:0;;6950:71;;;;-1:-1:-1;;;6950:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7058:17:0;;7034:21;7058:17;;;;;;;;;;;7108:23;;;;7086:111;;;;-1:-1:-1;;;7086:111:0;;16731:2:1;7086:111:0;;;16713:21:1;16770:2;16750:18;;;16743:30;16809:34;16789:18;;;16782:62;-1:-1:-1;;;16860:18:1;;;16853:36;16906:19;;7086:111:0;16529:402:1;7086:111:0;-1:-1:-1;;;;;7233:17:0;;;:9;:17;;;;;;;;;;;7253:22;;;7233:42;;7297:20;;;;;;;;:30;;7269:6;;7233:9;7297:30;;7269:6;;7297:30;:::i;:::-;;;;;;;;7362:9;-1:-1:-1;;;;;7345:35:0;7354:6;-1:-1:-1;;;;;7345:35:0;;7373:6;7345:35;;;;1614:25:1;;1602:2;1587:18;;1468:177;7345:35:0;;;;;;;;6858:530;6737:651;;;:::o;14709:469::-;14803:4;14762:20;4629:18;;;;;;;;;;;14839:12;;14824:27;;14820:40;;;14853:7;14709:469;:::o;14820:40::-;14889:13;;14874:12;:28;14870:62;;;-1:-1:-1;14919:13:0;;14870:62;14962:6;14947:12;:21;14943:48;;;-1:-1:-1;14985:6:0;14943:48;15006:12;15022:1;15006:17;15002:30;;15025:7;14709:469;:::o;15002:30::-;15044;15061:12;15044:16;:30::i;:::-;15087:12;15124:7;8393:6;;-1:-1:-1;;;;;8393:6:0;;8328:79;15124:7;-1:-1:-1;;;;;15124:12:0;15144:21;15124:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14709:469:0:o;17132:160::-;-1:-1:-1;;;;;17221:22:0;;;;;;:16;:22;;;;;;:27;;:44;;-1:-1:-1;8393:6:0;;-1:-1:-1;;;;;17252:13:0;;;8393:6;;17252:13;17221:44;17213:71;;;;-1:-1:-1;;;17213:71:0;;17138:2:1;17213:71:0;;;17120:21:1;17177:2;17157:18;;;17150:30;-1:-1:-1;;;17196:18:1;;;17189:44;17250:18;;17213:71:0;16936:338:1;17213:71:0;17132:160;;:::o;14313:388::-;14403:16;;;14417:1;14403:16;;;;;;;;14379:21;;14403:16;;;;;;;;;;-1:-1:-1;14403:16:0;14379:40;;14448:4;14430;14435:1;14430:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14430:23:0;;;-1:-1:-1;;;;;14430:23:0;;;;;10887:42;-1:-1:-1;;;;;14474:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14464:4;14469:1;14464:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14464:26:0;;;:7;;;;;;;;;;;:26;14503:190;;-1:-1:-1;;;14503:190:0;;10887:42;;14503:60;;:190;;14578:11;;14604:1;;14620:4;;14647;;14667:15;;14503: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;622:70;567:131;:::o;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;1215:248::-;1283:6;1291;1344:2;1332:9;1323:7;1319:23;1315:32;1312:52;;;1360:1;1357;1350:12;1312:52;-1:-1:-1;;1383:23:1;;;1453:2;1438:18;;;1425:32;;-1:-1:-1;1215:248:1:o;1650:456::-;1727:6;1735;1743;1796:2;1784:9;1775:7;1771:23;1767:32;1764:52;;;1812:1;1809;1802:12;1764:52;1851:9;1838:23;1870:31;1895:5;1870:31;:::i;:::-;1920:5;-1:-1:-1;1977:2:1;1962:18;;1949:32;1990:33;1949:32;1990:33;:::i;:::-;1650:456;;2042:7;;-1:-1:-1;;;2096:2:1;2081:18;;;;2068:32;;1650:456::o;2300:160::-;2365:20;;2421:13;;2414:21;2404:32;;2394:60;;2450:1;2447;2440:12;2394:60;2300:160;;;:::o;2465:180::-;2521:6;2574:2;2562:9;2553:7;2549:23;2545:32;2542:52;;;2590:1;2587;2580:12;2542:52;2613:26;2629:9;2613:26;:::i;:::-;2603:36;2465:180;-1:-1:-1;;;2465:180:1:o;2650:247::-;2709:6;2762:2;2750:9;2741:7;2737:23;2733:32;2730:52;;;2778:1;2775;2768:12;2730:52;2817:9;2804:23;2836:31;2861:5;2836:31;:::i;3110:388::-;3178:6;3186;3239:2;3227:9;3218:7;3214:23;3210:32;3207:52;;;3255:1;3252;3245:12;3207:52;3294:9;3281:23;3313:31;3338:5;3313:31;:::i;:::-;3363:5;-1:-1:-1;3420:2:1;3405:18;;3392:32;3433:33;3392:32;3433:33;:::i;:::-;3485:7;3475:17;;;3110:388;;;;;:::o;3503:367::-;3566:8;3576:6;3630:3;3623:4;3615:6;3611:17;3607:27;3597:55;;3648:1;3645;3638:12;3597:55;-1:-1:-1;3671:20:1;;3714:18;3703:30;;3700:50;;;3746:1;3743;3736:12;3700:50;3783:4;3775:6;3771:17;3759:29;;3843:3;3836:4;3826:6;3823:1;3819:14;3811:6;3807:27;3803:38;3800:47;3797:67;;;3860:1;3857;3850:12;3797:67;3503:367;;;;;:::o;3875:505::-;3967:6;3975;3983;4036:2;4024:9;4015:7;4011:23;4007:32;4004:52;;;4052:1;4049;4042:12;4004:52;4092:9;4079:23;4125:18;4117:6;4114:30;4111:50;;;4157:1;4154;4147:12;4111:50;4196:70;4258:7;4249:6;4238:9;4234:22;4196:70;:::i;:::-;4285:8;;-1:-1:-1;4170:96:1;-1:-1:-1;4339:35:1;;-1:-1:-1;4370:2:1;4355:18;;4339:35;:::i;:::-;4329:45;;3875:505;;;;;:::o;4385:::-;4480:6;4488;4496;4549:2;4537:9;4528:7;4524:23;4520:32;4517:52;;;4565:1;4562;4555:12;4517:52;4605:9;4592:23;4638:18;4630:6;4627:30;4624:50;;;4670:1;4667;4660:12;4624:50;4709:70;4771:7;4762:6;4751:9;4747:22;4709:70;:::i;:::-;4798:8;;4683:96;;-1:-1:-1;4880:2:1;4865:18;;;;4852:32;;4385:505;-1:-1:-1;;;;4385:505:1:o;4895:180::-;4954:6;5007:2;4995:9;4986:7;4982:23;4978:32;4975:52;;;5023:1;5020;5013:12;4975:52;-1:-1:-1;5046:23:1;;4895:180;-1:-1:-1;4895:180:1:o;5080:773::-;5202:6;5210;5218;5226;5279:2;5267:9;5258:7;5254:23;5250:32;5247:52;;;5295:1;5292;5285:12;5247:52;5335:9;5322:23;5364:18;5405:2;5397:6;5394:14;5391:34;;;5421:1;5418;5411:12;5391:34;5460:70;5522:7;5513:6;5502:9;5498:22;5460:70;:::i;:::-;5549:8;;-1:-1:-1;5434:96:1;-1:-1:-1;5637:2:1;5622:18;;5609:32;;-1:-1:-1;5653:16:1;;;5650:36;;;5682:1;5679;5672:12;5650:36;;5721:72;5785:7;5774:8;5763:9;5759:24;5721:72;:::i;:::-;5080:773;;;;-1:-1:-1;5812:8:1;-1:-1:-1;;;;5080:773:1:o;5858:380::-;5937:1;5933:12;;;;5980;;;6001:61;;6055:4;6047:6;6043:17;6033:27;;6001:61;6108:2;6100:6;6097:14;6077:18;6074:38;6071:161;;6154:10;6149:3;6145:20;6142:1;6135:31;6189:4;6186:1;6179:15;6217:4;6214:1;6207:15;6071:161;;5858:380;;;:::o;6243:356::-;6445:2;6427:21;;;6464:18;;;6457:30;6523:34;6518:2;6503:18;;6496:62;6590:2;6575:18;;6243:356::o;6604:127::-;6665:10;6660:3;6656:20;6653:1;6646:31;6696:4;6693:1;6686:15;6720:4;6717:1;6710:15;6736:168;6809:9;;;6840;;6857:15;;;6851:22;;6837:37;6827:71;;6878:18;;:::i;6909:217::-;6949:1;6975;6965:132;;7019:10;7014:3;7010:20;7007:1;7000:31;7054:4;7051:1;7044:15;7082:4;7079:1;7072:15;6965:132;-1:-1:-1;7111:9:1;;6909:217::o;8291:125::-;8356:9;;;8377:10;;;8374:36;;;8390:18;;:::i;9037:127::-;9098:10;9093:3;9089:20;9086:1;9079:31;9129:4;9126:1;9119:15;9153:4;9150:1;9143:15;9169:135;9208:3;9229:17;;;9226:43;;9249:18;;:::i;:::-;-1:-1:-1;9296:1:1;9285:13;;9169:135::o;10722:422::-;10811:1;10854:5;10811:1;10868:270;10889:7;10879:8;10876:21;10868:270;;;10948:4;10944:1;10940:6;10936:17;10930:4;10927:27;10924:53;;;10957:18;;:::i;:::-;11007:7;10997:8;10993:22;10990:55;;;11027:16;;;;10990:55;11106:22;;;;11066:15;;;;10868:270;;;10872:3;10722:422;;;;;:::o;11149:806::-;11198:5;11228:8;11218:80;;-1:-1:-1;11269:1:1;11283:5;;11218:80;11317:4;11307:76;;-1:-1:-1;11354:1:1;11368:5;;11307:76;11399:4;11417:1;11412:59;;;;11485:1;11480:130;;;;11392:218;;11412:59;11442:1;11433:10;;11456:5;;;11480:130;11517:3;11507:8;11504:17;11501:43;;;11524:18;;:::i;:::-;-1:-1:-1;;11580:1:1;11566:16;;11595:5;;11392:218;;11694:2;11684:8;11681:16;11675:3;11669:4;11666:13;11662:36;11656:2;11646:8;11643:16;11638:2;11632:4;11629:12;11625:35;11622:77;11619:159;;;-1:-1:-1;11731:19:1;;;11763:5;;11619:159;11810:34;11835:8;11829:4;11810:34;:::i;:::-;11880:6;11876:1;11872:6;11868:19;11859:7;11856:32;11853:58;;;11891:18;;:::i;:::-;11929:20;;11149:806;-1:-1:-1;;;11149:806:1:o;11960:140::-;12018:5;12047:47;12088:4;12078:8;12074:19;12068:4;12047:47;:::i;12717:306::-;12805:6;12813;12821;12874:2;12862:9;12853:7;12849:23;12845:32;12842:52;;;12890:1;12887;12880:12;12842:52;12919:9;12913:16;12903:26;;12969:2;12958:9;12954:18;12948:25;12938:35;;13013:2;13002:9;12998:18;12992:25;12982:35;;12717:306;;;;;:::o;14195:401::-;14397:2;14379:21;;;14436:2;14416:18;;;14409:30;14475:34;14470:2;14455:18;;14448:62;-1:-1:-1;;;14541:2:1;14526:18;;14519:35;14586:3;14571:19;;14195:401::o;14601:399::-;14803:2;14785:21;;;14842:2;14822:18;;;14815:30;14881:34;14876:2;14861:18;;14854:62;-1:-1:-1;;;14947:2:1;14932:18;;14925:33;14990:3;14975:19;;14601:399::o;16396:128::-;16463:9;;;16484:11;;;16481:37;;;16498:18;;:::i;17411:251::-;17481:6;17534:2;17522:9;17513:7;17509:23;17505:32;17502:52;;;17550:1;17547;17540:12;17502:52;17582:9;17576:16;17601:31;17626:5;17601:31;:::i;17667:980::-;17929:4;17977:3;17966:9;17962:19;18008:6;17997:9;17990:25;18034:2;18072:6;18067:2;18056:9;18052:18;18045:34;18115:3;18110:2;18099:9;18095:18;18088:31;18139:6;18174;18168:13;18205:6;18197;18190:22;18243:3;18232:9;18228:19;18221:26;;18282:2;18274:6;18270:15;18256:29;;18303:1;18313:195;18327:6;18324:1;18321:13;18313:195;;;18392:13;;-1:-1:-1;;;;;18388:39:1;18376:52;;18483:15;;;;18448:12;;;;18424:1;18342:9;18313:195;;;-1:-1:-1;;;;;;;18564:32:1;;;;18559:2;18544:18;;18537:60;-1:-1:-1;;;18628:3:1;18613:19;18606:35;18525:3;17667:980;-1:-1:-1;;;17667:980:1:o

Swarm Source

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