ETH Price: $2,274.63 (-8.33%)

Token

SHIZUKAKE (SHROOM)
 

Overview

Max Total Supply

13,000,000,000 SHROOM

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
37,735,184.370835347676936433 SHROOM

Value
$0.00
0x1c678916d4f66726ac778a8295aed724cde6d33b
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:
SHIZUKAKE

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-11
*/

/**
t.me/Shizukake
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

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

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

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint256);

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
    event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to) external returns (uint256 amount0, uint256 amount1);

    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

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

    function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);

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

    function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB);

    function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountOut);

    function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountIn);

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

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

contract SHIZUKAKE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

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

    mapping(address => bool) private _isExcludedFromFee;

    mapping(address => bool) private _isExcludedFromLimit;

    uint256 private _tTotal = 13000000000 * 10**18;

    address payable private _marketingAddress = payable(address(0xEFBB957757A16d334318ee937adea35408Ddf236));

    string private _name = "SHIZUKAKE";
    string private _symbol = "SHROOM";
    uint8 private _decimals = 18;

    struct BuyFee {
        uint8 liquidity;
        uint8 marketing;
    }

    struct SellFee {
        uint8 liquidity;
        uint8 marketing;
    }

    BuyFee public buyFee;
    SellFee public sellFee;

    uint8 private _liquidityFee;
    uint8 private _marketingFee;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public _maxTxAmount = _tTotal.div(1000).mul(30); // 3%
    uint256 private numTokensSellToAddToLiquidity = _tTotal.div(1000).mul(3); //0.3%
    uint256 public _maxWalletSize = _tTotal.div(1000).mul(30); // 3%

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

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

    bool public tradingOpen = false;

    mapping (address => uint256) _lastTrade;

    constructor() {
        _rOwned[_msgSender()] = _tTotal;

        buyFee.liquidity = 1;
        buyFee.marketing = 9;

        sellFee.liquidity = 1;
        sellFee.marketing = 9;

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

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        _isExcludedFromLimit[_marketingAddress] = true;
        _isExcludedFromLimit[owner()] = true;
        _isExcludedFromLimit[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

    function includeInLimit(address account) public onlyOwner {
    _isExcludedFromLimit[account] = false;
    
    }

    function includeInFee(address account) public onlyOwner {
    _isExcludedFromFee[account] = false;
    
    }


    function excludeFromLimit(address account) public onlyOwner {
        _isExcludedFromLimit[account] = true;
    }

    function updateMarketingWallet(address payable newMarketingWallet) public onlyOwner {
    require(newMarketingWallet != address(0), "Invalid address: address cannot be the zero address");
    _marketingAddress = newMarketingWallet;
    
    }


    function reduceFees(
        uint8 buy_liquidity,
        uint8 buy_marketing,
        uint8 sell_liquidity,
        uint8 sell_marketing
    ) external onlyOwner {
        buyFee.marketing = buy_marketing;
        buyFee.liquidity = buy_liquidity;

        sellFee.marketing = sell_marketing;
        sellFee.liquidity = sell_liquidity;
    }

    function setNumTokensSellToAddToLiquidity(uint256 numTokens) external onlyOwner {
        numTokensSellToAddToLiquidity = numTokens;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    receive() external payable {}

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tWallet = calculateMarketingFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tLiquidity).sub(tWallet);

        return (tTransferAmount, tLiquidity, tWallet);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        _rOwned[address(this)] = _rOwned[address(this)].add(tLiquidity);
    }

    function _takeWalletFee(uint256 tWallet) private {
        _rOwned[address(this)] = _rOwned[address(this)].add(tWallet);
    }

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(10**2);
    }

    function calculateMarketingFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_marketingFee).div(10**2);
    }

    function removeAllFee() private {
        _liquidityFee = 0;
        _marketingFee = 0;
    }

    function setBuy() private {
        _liquidityFee = buyFee.liquidity;
        _marketingFee = buyFee.marketing;
    }

    function setSell() private {
        _liquidityFee = sellFee.liquidity;
        _marketingFee = sellFee.marketing;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if (from != owner() && to != owner()) require(tradingOpen, "Trading not yet enabled.");

        uint256 contractTokenBalance = balanceOf(address(this));

        if (contractTokenBalance >= _maxTxAmount) {
            contractTokenBalance = _maxTxAmount;
        }

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            swapAndLiquify(contractTokenBalance);
        }

        bool takeFee = true;

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        if (takeFee) {
            if (!_isExcludedFromLimit[from] && !_isExcludedFromLimit[to]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                if (to != uniswapV2Pair) {
                    require(amount + balanceOf(to) <= _maxWalletSize, "Recipient exceeds max wallet size.");
                }
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 denominator = (buyFee.liquidity + sellFee.liquidity + buyFee.marketing + sellFee.marketing) * 2;
        uint256 tokensToAddLiquidityWith = (tokens * (buyFee.liquidity + sellFee.liquidity)) / denominator;
        uint256 toSwap = tokens - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForEth(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity));
        uint256 ethToAddLiquidityWith = unitBalance * (buyFee.liquidity + sellFee.liquidity);

        if (ethToAddLiquidityWith > 0) {
            addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * (buyFee.marketing + sellFee.marketing);
        if (marketingAmt > 0) {
            payable(_marketingAddress).transfer(marketingAmt);
        }
    }

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

        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (takeFee) {
            removeAllFee();
            if (sender == uniswapV2Pair) {
                setBuy();
            }
            if (recipient == uniswapV2Pair) {
                setSell();
            }
        }

        _transferStandard(sender, recipient, amount);

        removeAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 tTransferAmount,
            uint256 tLiquidity,
            uint256 tWallet
        ) = _getTValues(tAmount);

        _rOwned[sender] = _rOwned[sender].sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(tTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeWalletFee(tWallet);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen, "Trading is already open.");
        tradingOpen = true;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","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":"buyFee","outputs":[{"internalType":"uint8","name":"liquidity","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInLimit","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy_liquidity","type":"uint8"},{"internalType":"uint8","name":"buy_marketing","type":"uint8"},{"internalType":"uint8","name":"sell_liquidity","type":"uint8"},{"internalType":"uint8","name":"sell_marketing","type":"uint8"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"liquidity","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6b2a0159141d968317c8000000600655600780546001600160a01b03191673efbb957757a16d334318ee937adea35408ddf236179055610100604052600960c0908152685348495a554b414b4560b81b60e052600890620000619082620005e9565b506040805180820190915260068152655348524f4f4d60d01b60208201526009906200008e9082620005e9565b50600a805460ff19166012179055600d805463ff00000019166301000000179055600654620000cf90601e90620000c8906103e862000435565b9062000487565b600e55600654620000eb90600390620000c8906103e862000435565b600f556006546200010790601e90620000c8906103e862000435565b6010556011805460ff1916905534801562000120575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255600b805461090161ffff199182168117909255600c80549091169091179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa158015620001e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200020a9190620006b5565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000256573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027c9190620006b5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002c7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ed9190620006b5565b6001600160a01b0390811660a0528116608052600160045f620003175f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152600484528281208054861660019081179091556007805484168352848320805488168317905554909216815260059384905291822080549094168117909355620003985f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526005909252902080549091166001179055620003df3390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200042691815260200190565b60405180910390a3506200076f565b5f6200047e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200051160201b60201c565b90505b92915050565b5f825f036200049857505f62000481565b5f620004a58385620006dd565b905082620004b4858362000701565b146200047e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b5f8183620005345760405162461bcd60e51b815260040162000508919062000721565b505f62000542848662000701565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200057457607f821691505b6020821081036200059357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005e457805f5260205f20601f840160051c81016020851015620005c05750805b601f840160051c820191505b81811015620005e1575f8155600101620005cc565b50505b505050565b81516001600160401b038111156200060557620006056200054b565b6200061d816200061684546200055f565b8462000599565b602080601f83116001811462000653575f84156200063b5750858301515b5f19600386901b1c1916600185901b178555620006ad565b5f85815260208120601f198616915b82811015620006835788860151825594840194600190910190840162000662565b5085821015620006a157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215620006c6575f80fd5b81516001600160a01b03811681146200047e575f80fd5b80820281158282048414176200048157634e487b7160e01b5f52601160045260245ffd5b5f826200071c57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602080835283518060208501525f5b818110156200074f5785810183015185820160400152820162000731565b505f604082860101526040601f19601f8301168501019250505092915050565b60805160a051611c5f620007d05f395f818161038d01528181610dbe01528181610f130152818161124001526112a601525f8181610267015281816113800152818161143701528181611473015281816114df015261153a0152611c5f5ff3fe6080604052600436106101b2575f3560e01c8063715018a6116100e7578063aacebbe311610087578063dd62ed3e11610062578063dd62ed3e14610501578063ea2f0b3714610545578063f0f165af14610564578063ffb54a9914610583575f80fd5b8063aacebbe3146104af578063c49b9a80146104ce578063c9567bf9146104ed575f80fd5b80638f9a55c0116100c25780638f9a55c01461044857806391d919a91461045d57806395d89b411461047c578063a9059cbb14610490575f80fd5b8063715018a6146104035780637d1db4a5146104175780638da5cb5b1461042c575f80fd5b80632b14ca5611610152578063470624021161012d578063470624021461035a57806349bd5a5e1461037c5780634a74bb02146103af57806370a08231146103cf575f80fd5b80632b14ca56146102de578063313ce5671461031a578063395093511461033b575f80fd5b80630bd3a7f91161018d5780630bd3a7f9146102375780631694505e1461025657806318160ddd146102a157806323b872dd146102bf575f80fd5b80630406e4f5146101bd57806306fdde03146101de578063095ea7b314610208575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b506101dc6101d7366004611879565b61059c565b005b3480156101e9575f80fd5b506101f261060d565b6040516101ff91906118ca565b60405180910390f35b348015610213575f80fd5b5061022761022236600461192d565b61069d565b60405190151581526020016101ff565b348015610242575f80fd5b506101dc610251366004611957565b6106b3565b348015610261575f80fd5b506102897f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101ff565b3480156102ac575f80fd5b506006545b6040519081526020016101ff565b3480156102ca575f80fd5b506102276102d9366004611972565b6106ff565b3480156102e9575f80fd5b50600c546103009060ff8082169161010090041682565b6040805160ff9384168152929091166020830152016101ff565b348015610325575f80fd5b50600a5460405160ff90911681526020016101ff565b348015610346575f80fd5b5061022761035536600461192d565b610766565b348015610365575f80fd5b50600b546103009060ff8082169161010090041682565b348015610387575f80fd5b506102897f000000000000000000000000000000000000000000000000000000000000000081565b3480156103ba575f80fd5b50600d54610227906301000000900460ff1681565b3480156103da575f80fd5b506102b16103e9366004611957565b6001600160a01b03165f9081526002602052604090205490565b34801561040e575f80fd5b506101dc61079b565b348015610422575f80fd5b506102b1600e5481565b348015610437575f80fd5b505f546001600160a01b0316610289565b348015610453575f80fd5b506102b160105481565b348015610468575f80fd5b506101dc610477366004611957565b61080c565b348015610487575f80fd5b506101f2610855565b34801561049b575f80fd5b506102276104aa36600461192d565b610864565b3480156104ba575f80fd5b506101dc6104c9366004611957565b610870565b3480156104d9575f80fd5b506101dc6104e83660046119b0565b61092d565b3480156104f8575f80fd5b506101dc6109ae565b34801561050c575f80fd5b506102b161051b3660046119cf565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610550575f80fd5b506101dc61055f366004611957565b610a39565b34801561056f575f80fd5b506101dc61057e366004611a06565b610a82565b34801561058e575f80fd5b506011546102279060ff1681565b5f546001600160a01b031633146105ce5760405162461bcd60e51b81526004016105c590611a1d565b60405180910390fd5b600b805461ffff1990811661010060ff968716810260ff199081169290921797871697909717909255600c805490911692851690950216179116179055565b60606008805461061c90611a52565b80601f016020809104026020016040519081016040528092919081815260200182805461064890611a52565b80156106935780601f1061066a57610100808354040283529160200191610693565b820191905f5260205f20905b81548152906001019060200180831161067657829003601f168201915b5050505050905090565b5f6106a9338484610ab0565b5060015b92915050565b5f546001600160a01b031633146106dc5760405162461bcd60e51b81526004016105c590611a1d565b6001600160a01b03165f908152600560205260409020805460ff19166001179055565b5f61070b848484610bd3565b61075c843361075785604051806060016040528060288152602001611c02602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610fdc565b610ab0565b5060019392505050565b335f8181526003602090815260408083206001600160a01b038716845290915281205490916106a99185906107579086611014565b5f546001600160a01b031633146107c45760405162461bcd60e51b81526004016105c590611a1d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108355760405162461bcd60e51b81526004016105c590611a1d565b6001600160a01b03165f908152600560205260409020805460ff19169055565b60606009805461061c90611a52565b5f6106a9338484610bd3565b5f546001600160a01b031633146108995760405162461bcd60e51b81526004016105c590611a1d565b6001600160a01b03811661090b5760405162461bcd60e51b815260206004820152603360248201527f496e76616c696420616464726573733a20616464726573732063616e6e6f7420604482015272626520746865207a65726f206164647265737360681b60648201526084016105c5565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146109565760405162461bcd60e51b81526004016105c590611a1d565b600d805482151563010000000263ff000000199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906109a390831515815260200190565b60405180910390a150565b5f546001600160a01b031633146109d75760405162461bcd60e51b81526004016105c590611a1d565b60115460ff1615610a2a5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720697320616c7265616479206f70656e2e000000000000000060448201526064016105c5565b6011805460ff19166001179055565b5f546001600160a01b03163314610a625760405162461bcd60e51b81526004016105c590611a1d565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314610aab5760405162461bcd60e51b81526004016105c590611a1d565b600f55565b6001600160a01b038316610b125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105c5565b6001600160a01b038216610b735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105c5565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c375760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105c5565b6001600160a01b038216610c995760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105c5565b5f8111610cfa5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105c5565b5f546001600160a01b03848116911614801590610d2457505f546001600160a01b03838116911614155b15610d7b5760115460ff16610d7b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016105c5565b305f90815260026020526040902054600e548110610d985750600e545b600f5481108015908190610db55750600d5462010000900460ff16155b8015610df357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015610e085750600d546301000000900460ff165b15610e1b57600f549150610e1b82611079565b6001600160a01b0385165f9081526004602052604090205460019060ff1680610e5b57506001600160a01b0385165f9081526004602052604090205460ff165b15610e6357505f5b8015610fc8576001600160a01b0386165f9081526005602052604090205460ff16158015610ea957506001600160a01b0385165f9081526005602052604090205460ff16155b15610fc857600e54841115610f115760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016105c5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614610fc8576010546001600160a01b0386165f90815260026020526040902054610f6f9086611a9e565b1115610fc85760405162461bcd60e51b815260206004820152602260248201527f526563697069656e742065786365656473206d61782077616c6c65742073697a604482015261329760f11b60648201526084016105c5565b610fd486868684611228565b505050505050565b5f8184841115610fff5760405162461bcd60e51b81526004016105c591906118ca565b505f61100b8486611ab1565b95945050505050565b5f806110208385611a9e565b9050838110156110725760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105c5565b9392505050565b600d805462ff0000191662010000179055600c54600b545f9161010080820460ff908116939182048116926110b2929082169116611ac4565b6110bc9190611ac4565b6110c69190611ac4565b6110d1906002611add565b600c54600b5460ff92831693505f9284926110f0929082169116611ac4565b6110fd9060ff1685611b00565b6111079190611b17565b90505f6111148285611ab1565b9050476111208261132b565b5f61112b8247611ab1565b600c54600b549192505f916111469160ff9081169116611ac4565b6111539060ff1687611ab1565b61115d9083611b17565b600c54600b549192505f916111789160ff9081169116611ac4565b6111859060ff1683611b00565b905080156111975761119786826114d9565b600c54600b545f916111b89160ff6101009283900481169290910416611ac4565b60ff166111c6846002611b00565b6111d09190611b00565b90508015611211576007546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561120f573d5f803e3d5ffd5b505b5050600d805462ff00001916905550505050505050565b801561130a5761123e600d805461ffff19169055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316036112a4576112a4600b54600d805461010080840460ff90811690910261ffff19909216931692909217919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361130a5761130a600c54600d805461010080840460ff90811690910261ffff19909216931692909217919091179055565b6113158484846115b6565b611325600d805461ffff19169055565b50505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061135e5761135e611b36565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fe9190611b4a565b8160018151811061141157611411611b36565b60200260200101906001600160a01b031690816001600160a01b03168152505061145c307f000000000000000000000000000000000000000000000000000000000000000084610ab0565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906114b09085905f90869030904290600401611b65565b5f604051808303815f87803b1580156114c7575f80fd5b505af1158015610fd4573d5f803e3d5ffd5b611504307f000000000000000000000000000000000000000000000000000000000000000084610ab0565b60405163f305d71960e01b81523060048201819052602482018490525f60448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af115801561158a573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115af9190611bd6565b5050505050565b5f805f6115c284611699565b6001600160a01b0389165f9081526002602052604090205492955090935091506115ec90856116d7565b6001600160a01b038088165f90815260026020526040808220939093559087168152205461161a9084611014565b6001600160a01b0386165f9081526002602052604090205561163b82611718565b61164481611718565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161168991815260200190565b60405180910390a3505050505050565b5f805f806116a685611743565b90505f6116b286611763565b90505f6116c9826116c389866116d7565b906116d7565b979296509094509092505050565b5f61107283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fdc565b305f908152600260205260409020546117319082611014565b305f9081526002602052604090205550565b600d545f906106ad9060649061175d90859060ff1661177e565b906117fc565b600d545f906106ad9060649061175d908590610100900460ff165b5f825f0361178d57505f6106ad565b5f6117988385611b00565b9050826117a58583611b17565b146110725760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105c5565b5f61107283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f81836118585760405162461bcd60e51b81526004016105c591906118ca565b505f61100b8486611b17565b803560ff81168114611874575f80fd5b919050565b5f805f806080858703121561188c575f80fd5b61189585611864565b93506118a360208601611864565b92506118b160408601611864565b91506118bf60608601611864565b905092959194509250565b5f602080835283518060208501525f5b818110156118f6578581018301518582016040015282016118da565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461192a575f80fd5b50565b5f806040838503121561193e575f80fd5b823561194981611916565b946020939093013593505050565b5f60208284031215611967575f80fd5b813561107281611916565b5f805f60608486031215611984575f80fd5b833561198f81611916565b9250602084013561199f81611916565b929592945050506040919091013590565b5f602082840312156119c0575f80fd5b81358015158114611072575f80fd5b5f80604083850312156119e0575f80fd5b82356119eb81611916565b915060208301356119fb81611916565b809150509250929050565b5f60208284031215611a16575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611a6657607f821691505b602082108103611a8457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ad576106ad611a8a565b818103818111156106ad576106ad611a8a565b60ff81811683821601908111156106ad576106ad611a8a565b60ff8181168382160290811690818114611af957611af9611a8a565b5092915050565b80820281158282048414176106ad576106ad611a8a565b5f82611b3157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611b5a575f80fd5b815161107281611916565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611bb55784516001600160a01b031683529383019391830191600101611b90565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611be8575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ee81b425e5952a79c52ca8c955e5217f9a5c5451cde11d2663ce0656988de0f364736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101b2575f3560e01c8063715018a6116100e7578063aacebbe311610087578063dd62ed3e11610062578063dd62ed3e14610501578063ea2f0b3714610545578063f0f165af14610564578063ffb54a9914610583575f80fd5b8063aacebbe3146104af578063c49b9a80146104ce578063c9567bf9146104ed575f80fd5b80638f9a55c0116100c25780638f9a55c01461044857806391d919a91461045d57806395d89b411461047c578063a9059cbb14610490575f80fd5b8063715018a6146104035780637d1db4a5146104175780638da5cb5b1461042c575f80fd5b80632b14ca5611610152578063470624021161012d578063470624021461035a57806349bd5a5e1461037c5780634a74bb02146103af57806370a08231146103cf575f80fd5b80632b14ca56146102de578063313ce5671461031a578063395093511461033b575f80fd5b80630bd3a7f91161018d5780630bd3a7f9146102375780631694505e1461025657806318160ddd146102a157806323b872dd146102bf575f80fd5b80630406e4f5146101bd57806306fdde03146101de578063095ea7b314610208575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b506101dc6101d7366004611879565b61059c565b005b3480156101e9575f80fd5b506101f261060d565b6040516101ff91906118ca565b60405180910390f35b348015610213575f80fd5b5061022761022236600461192d565b61069d565b60405190151581526020016101ff565b348015610242575f80fd5b506101dc610251366004611957565b6106b3565b348015610261575f80fd5b506102897f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016101ff565b3480156102ac575f80fd5b506006545b6040519081526020016101ff565b3480156102ca575f80fd5b506102276102d9366004611972565b6106ff565b3480156102e9575f80fd5b50600c546103009060ff8082169161010090041682565b6040805160ff9384168152929091166020830152016101ff565b348015610325575f80fd5b50600a5460405160ff90911681526020016101ff565b348015610346575f80fd5b5061022761035536600461192d565b610766565b348015610365575f80fd5b50600b546103009060ff8082169161010090041682565b348015610387575f80fd5b506102897f00000000000000000000000057338a1fb1fa433bb295b6ff09037495fcc18d8c81565b3480156103ba575f80fd5b50600d54610227906301000000900460ff1681565b3480156103da575f80fd5b506102b16103e9366004611957565b6001600160a01b03165f9081526002602052604090205490565b34801561040e575f80fd5b506101dc61079b565b348015610422575f80fd5b506102b1600e5481565b348015610437575f80fd5b505f546001600160a01b0316610289565b348015610453575f80fd5b506102b160105481565b348015610468575f80fd5b506101dc610477366004611957565b61080c565b348015610487575f80fd5b506101f2610855565b34801561049b575f80fd5b506102276104aa36600461192d565b610864565b3480156104ba575f80fd5b506101dc6104c9366004611957565b610870565b3480156104d9575f80fd5b506101dc6104e83660046119b0565b61092d565b3480156104f8575f80fd5b506101dc6109ae565b34801561050c575f80fd5b506102b161051b3660046119cf565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610550575f80fd5b506101dc61055f366004611957565b610a39565b34801561056f575f80fd5b506101dc61057e366004611a06565b610a82565b34801561058e575f80fd5b506011546102279060ff1681565b5f546001600160a01b031633146105ce5760405162461bcd60e51b81526004016105c590611a1d565b60405180910390fd5b600b805461ffff1990811661010060ff968716810260ff199081169290921797871697909717909255600c805490911692851690950216179116179055565b60606008805461061c90611a52565b80601f016020809104026020016040519081016040528092919081815260200182805461064890611a52565b80156106935780601f1061066a57610100808354040283529160200191610693565b820191905f5260205f20905b81548152906001019060200180831161067657829003601f168201915b5050505050905090565b5f6106a9338484610ab0565b5060015b92915050565b5f546001600160a01b031633146106dc5760405162461bcd60e51b81526004016105c590611a1d565b6001600160a01b03165f908152600560205260409020805460ff19166001179055565b5f61070b848484610bd3565b61075c843361075785604051806060016040528060288152602001611c02602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610fdc565b610ab0565b5060019392505050565b335f8181526003602090815260408083206001600160a01b038716845290915281205490916106a99185906107579086611014565b5f546001600160a01b031633146107c45760405162461bcd60e51b81526004016105c590611a1d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108355760405162461bcd60e51b81526004016105c590611a1d565b6001600160a01b03165f908152600560205260409020805460ff19169055565b60606009805461061c90611a52565b5f6106a9338484610bd3565b5f546001600160a01b031633146108995760405162461bcd60e51b81526004016105c590611a1d565b6001600160a01b03811661090b5760405162461bcd60e51b815260206004820152603360248201527f496e76616c696420616464726573733a20616464726573732063616e6e6f7420604482015272626520746865207a65726f206164647265737360681b60648201526084016105c5565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146109565760405162461bcd60e51b81526004016105c590611a1d565b600d805482151563010000000263ff000000199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906109a390831515815260200190565b60405180910390a150565b5f546001600160a01b031633146109d75760405162461bcd60e51b81526004016105c590611a1d565b60115460ff1615610a2a5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720697320616c7265616479206f70656e2e000000000000000060448201526064016105c5565b6011805460ff19166001179055565b5f546001600160a01b03163314610a625760405162461bcd60e51b81526004016105c590611a1d565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314610aab5760405162461bcd60e51b81526004016105c590611a1d565b600f55565b6001600160a01b038316610b125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105c5565b6001600160a01b038216610b735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105c5565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c375760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105c5565b6001600160a01b038216610c995760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105c5565b5f8111610cfa5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105c5565b5f546001600160a01b03848116911614801590610d2457505f546001600160a01b03838116911614155b15610d7b5760115460ff16610d7b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016105c5565b305f90815260026020526040902054600e548110610d985750600e545b600f5481108015908190610db55750600d5462010000900460ff16155b8015610df357507f00000000000000000000000057338a1fb1fa433bb295b6ff09037495fcc18d8c6001600160a01b0316856001600160a01b031614155b8015610e085750600d546301000000900460ff165b15610e1b57600f549150610e1b82611079565b6001600160a01b0385165f9081526004602052604090205460019060ff1680610e5b57506001600160a01b0385165f9081526004602052604090205460ff165b15610e6357505f5b8015610fc8576001600160a01b0386165f9081526005602052604090205460ff16158015610ea957506001600160a01b0385165f9081526005602052604090205460ff16155b15610fc857600e54841115610f115760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016105c5565b7f00000000000000000000000057338a1fb1fa433bb295b6ff09037495fcc18d8c6001600160a01b0316856001600160a01b031614610fc8576010546001600160a01b0386165f90815260026020526040902054610f6f9086611a9e565b1115610fc85760405162461bcd60e51b815260206004820152602260248201527f526563697069656e742065786365656473206d61782077616c6c65742073697a604482015261329760f11b60648201526084016105c5565b610fd486868684611228565b505050505050565b5f8184841115610fff5760405162461bcd60e51b81526004016105c591906118ca565b505f61100b8486611ab1565b95945050505050565b5f806110208385611a9e565b9050838110156110725760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105c5565b9392505050565b600d805462ff0000191662010000179055600c54600b545f9161010080820460ff908116939182048116926110b2929082169116611ac4565b6110bc9190611ac4565b6110c69190611ac4565b6110d1906002611add565b600c54600b5460ff92831693505f9284926110f0929082169116611ac4565b6110fd9060ff1685611b00565b6111079190611b17565b90505f6111148285611ab1565b9050476111208261132b565b5f61112b8247611ab1565b600c54600b549192505f916111469160ff9081169116611ac4565b6111539060ff1687611ab1565b61115d9083611b17565b600c54600b549192505f916111789160ff9081169116611ac4565b6111859060ff1683611b00565b905080156111975761119786826114d9565b600c54600b545f916111b89160ff6101009283900481169290910416611ac4565b60ff166111c6846002611b00565b6111d09190611b00565b90508015611211576007546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561120f573d5f803e3d5ffd5b505b5050600d805462ff00001916905550505050505050565b801561130a5761123e600d805461ffff19169055565b7f00000000000000000000000057338a1fb1fa433bb295b6ff09037495fcc18d8c6001600160a01b0316846001600160a01b0316036112a4576112a4600b54600d805461010080840460ff90811690910261ffff19909216931692909217919091179055565b7f00000000000000000000000057338a1fb1fa433bb295b6ff09037495fcc18d8c6001600160a01b0316836001600160a01b03160361130a5761130a600c54600d805461010080840460ff90811690910261ffff19909216931692909217919091179055565b6113158484846115b6565b611325600d805461ffff19169055565b50505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061135e5761135e611b36565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fe9190611b4a565b8160018151811061141157611411611b36565b60200260200101906001600160a01b031690816001600160a01b03168152505061145c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610ab0565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906114b09085905f90869030904290600401611b65565b5f604051808303815f87803b1580156114c7575f80fd5b505af1158015610fd4573d5f803e3d5ffd5b611504307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610ab0565b60405163f305d71960e01b81523060048201819052602482018490525f60448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af115801561158a573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115af9190611bd6565b5050505050565b5f805f6115c284611699565b6001600160a01b0389165f9081526002602052604090205492955090935091506115ec90856116d7565b6001600160a01b038088165f90815260026020526040808220939093559087168152205461161a9084611014565b6001600160a01b0386165f9081526002602052604090205561163b82611718565b61164481611718565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161168991815260200190565b60405180910390a3505050505050565b5f805f806116a685611743565b90505f6116b286611763565b90505f6116c9826116c389866116d7565b906116d7565b979296509094509092505050565b5f61107283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fdc565b305f908152600260205260409020546117319082611014565b305f9081526002602052604090205550565b600d545f906106ad9060649061175d90859060ff1661177e565b906117fc565b600d545f906106ad9060649061175d908590610100900460ff165b5f825f0361178d57505f6106ad565b5f6117988385611b00565b9050826117a58583611b17565b146110725760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105c5565b5f61107283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f81836118585760405162461bcd60e51b81526004016105c591906118ca565b505f61100b8486611b17565b803560ff81168114611874575f80fd5b919050565b5f805f806080858703121561188c575f80fd5b61189585611864565b93506118a360208601611864565b92506118b160408601611864565b91506118bf60608601611864565b905092959194509250565b5f602080835283518060208501525f5b818110156118f6578581018301518582016040015282016118da565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461192a575f80fd5b50565b5f806040838503121561193e575f80fd5b823561194981611916565b946020939093013593505050565b5f60208284031215611967575f80fd5b813561107281611916565b5f805f60608486031215611984575f80fd5b833561198f81611916565b9250602084013561199f81611916565b929592945050506040919091013590565b5f602082840312156119c0575f80fd5b81358015158114611072575f80fd5b5f80604083850312156119e0575f80fd5b82356119eb81611916565b915060208301356119fb81611916565b809150509250929050565b5f60208284031215611a16575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611a6657607f821691505b602082108103611a8457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ad576106ad611a8a565b818103818111156106ad576106ad611a8a565b60ff81811683821601908111156106ad576106ad611a8a565b60ff8181168382160290811690818114611af957611af9611a8a565b5092915050565b80820281158282048414176106ad576106ad611a8a565b5f82611b3157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611b5a575f80fd5b815161107281611916565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611bb55784516001600160a01b031683529383019391830191600101611b90565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611be8575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ee81b425e5952a79c52ca8c955e5217f9a5c5451cde11d2663ce0656988de0f364736f6c63430008180033

Deployed Bytecode Sourcemap

14036:12045:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19071:354;;;;;;;;;;-1:-1:-1;19071:354:0;;;;;:::i;:::-;;:::i;:::-;;16716:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17547:161;;;;;;;;;;-1:-1:-1;17547:161:0;;;;;:::i;:::-;;:::i;:::-;;;1747:14:1;;1740:22;1722:41;;1710:2;1695:18;17547:161:0;1582:187:1;18692:115:0;;;;;;;;;;-1:-1:-1;18692:115:0;;;;;:::i;:::-;;:::i;14984:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2217:32:1;;;2199:51;;2187:2;2172:18;14984:51:0;2026:230:1;16993:95:0;;;;;;;;;;-1:-1:-1;17073:7:0;;16993:95;;;2407:25:1;;;2395:2;2380:18;16993:95:0;2261:177:1;17716:446:0;;;;;;;;;;-1:-1:-1;17716:446:0;;;;;:::i;:::-;;:::i;14883:22::-;;;;;;;;;;-1:-1:-1;14883:22:0;;;;;;;;;;;;;;;;;;;3100:4:1;3088:17;;;3070:36;;3142:17;;;;3137:2;3122:18;;3115:45;3043:18;14883:22:0;2904:262:1;16902:83:0;;;;;;;;;;-1:-1:-1;16968:9:0;;16902:83;;16968:9;;;;3313:36:1;;3301:2;3286:18;16902:83:0;3171:184:1;18170:268:0;;;;;;;;;;-1:-1:-1;18170:268:0;;;;;:::i;:::-;;:::i;14856:20::-;;;;;;;;;;-1:-1:-1;14856:20:0;;;;;;;;;;;;;;;15042:38;;;;;;;;;;;;;;;15117:40;;;;;;;;;;-1:-1:-1;15117:40:0;;;;;;;;;;;17096:117;;;;;;;;;;-1:-1:-1;17096:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;17189:16:0;17162:7;17189:16;;;:7;:16;;;;;;;17096:117;5545:148;;;;;;;;;;;;;:::i;15166:55::-;;;;;;;;;;;;;;;;5331:79;;;;;;;;;;-1:-1:-1;5369:7:0;5396:6;-1:-1:-1;;;;;5396:6:0;5331:79;;15320:57;;;;;;;;;;;;;;;;18446:116;;;;;;;;;;-1:-1:-1;18446:116:0;;;;;:::i;:::-;;:::i;16807:87::-;;;;;;;;;;;;;:::i;17221:167::-;;;;;;;;;;-1:-1:-1;17221:167:0;;;;;:::i;:::-;;:::i;18815:246::-;;;;;;;;;;-1:-1:-1;18815:246:0;;;;;:::i;:::-;;:::i;19581:171::-;;;;;;;;;;-1:-1:-1;19581:171:0;;;;;:::i;:::-;;:::i;25937:141::-;;;;;;;;;;;;;:::i;17396:143::-;;;;;;;;;;-1:-1:-1;17396:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;17504:18:0;;;17477:7;17504:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17396:143;18570:112;;;;;;;;;;-1:-1:-1;18570:112:0;;;;;:::i;:::-;;:::i;19433:140::-;;;;;;;;;;-1:-1:-1;19433:140:0;;;;;:::i;:::-;;:::i;15770:31::-;;;;;;;;;;-1:-1:-1;15770:31:0;;;;;;;;19071:354;5458:6;;-1:-1:-1;;;;;5458:6:0;2371:10;5458:22;5450:67;;;;-1:-1:-1;;;5450:67:0;;;;;;;:::i;:::-;;;;;;;;;19250:6:::1;:32:::0;;-1:-1:-1;;19293:32:0;;;19250::::1;;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;19293:32:0;;;;;;;;;::::1;::::0;;;::::1;::::0;;;19338:7:::1;:34:::0;;19383;;;19338;;::::1;::::0;;::::1;19383::::0;;;::::1;;::::0;;19071:354::o;16716:83::-;16753:13;16786:5;16779:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16716:83;:::o;17547:161::-;17622:4;17639:39;2371:10;17662:7;17671:6;17639:8;:39::i;:::-;-1:-1:-1;17696:4:0;17547:161;;;;;:::o;18692:115::-;5458:6;;-1:-1:-1;;;;;5458:6:0;2371:10;5458:22;5450:67;;;;-1:-1:-1;;;5450:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18763:29:0::1;;::::0;;;:20:::1;:29;::::0;;;;:36;;-1:-1:-1;;18763:36:0::1;18795:4;18763:36;::::0;;18692:115::o;17716:446::-;17848:4;17865:36;17875:6;17883:9;17894:6;17865:9;:36::i;:::-;17912:220;17935:6;2371:10;17983:138;18039:6;17983:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17983:19:0;;;;;;:11;:19;;;;;;;;2371:10;17983:33;;;;;;;;;;:37;:138::i;:::-;17912:8;:220::i;:::-;-1:-1:-1;18150:4:0;17716:446;;;;;:::o;18170:268::-;2371:10;18258:4;18347:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18347:34:0;;;;;;;;;;18258:4;;18275:133;;18325:7;;18347:50;;18386:10;18347:38;:50::i;5545:148::-;5458:6;;-1:-1:-1;;;;;5458:6:0;2371:10;5458:22;5450:67;;;;-1:-1:-1;;;5450:67:0;;;;;;;:::i;:::-;5652:1:::1;5636:6:::0;;5615:40:::1;::::0;-1:-1:-1;;;;;5636:6:0;;::::1;::::0;5615:40:::1;::::0;5652:1;;5615:40:::1;5683:1;5666:19:::0;;-1:-1:-1;;;;;;5666:19:0::1;::::0;;5545:148::o;18446:116::-;5458:6;;-1:-1:-1;;;;;5458:6:0;2371:10;5458:22;5450:67;;;;-1:-1:-1;;;5450:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18511:29:0::1;18543:5;18511:29:::0;;;:20:::1;:29;::::0;;;;:37;;-1:-1:-1;;18511:37:0::1;::::0;;18446:116::o;16807:87::-;16846:13;16879:7;16872:14;;;;;:::i;17221:167::-;17299:4;17316:42;2371:10;17340:9;17351:6;17316:9;:42::i;18815:246::-;5458:6;;-1:-1:-1;;;;;5458:6:0;2371:10;5458:22;5450:67;;;;-1:-1:-1;;;5450:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18914:32:0;::::1;18906:96;;;::::0;-1:-1:-1;;;18906:96:0;;5632:2:1;18906:96:0::1;::::0;::::1;5614:21:1::0;5671:2;5651:18;;;5644:30;5710:34;5690:18;;;5683:62;-1:-1:-1;;;5761:18:1;;;5754:49;5820:19;;18906:96:0::1;5430:415:1::0;18906:96:0::1;19009:17;:38:::0;;-1:-1:-1;;;;;;19009:38:0::1;-1:-1:-1::0;;;;;19009:38:0;;;::::1;::::0;;;::::1;::::0;;18815:246::o;19581:171::-;5458:6;;-1:-1:-1;;;;;5458:6:0;2371:10;5458:22;5450:67;;;;-1:-1:-1;;;5450:67:0;;;;;;;:::i;:::-;19658:21:::1;:32:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;19658:32:0;;::::1;;::::0;;19706:38:::1;::::0;::::1;::::0;::::1;::::0;19682:8;1747:14:1;1740:22;1722:41;;1710:2;1695:18;;1582:187;19706:38:0::1;;;;;;;;19581:171:::0;:::o;25937:141::-;5458:6;;-1:-1:-1;;;;;5458:6:0;2371:10;5458:22;5450:67;;;;-1:-1:-1;;;5450:67:0;;;;;;;:::i;:::-;26001:11:::1;::::0;::::1;;26000:12;25992:49;;;::::0;-1:-1:-1;;;25992:49:0;;6052:2:1;25992:49:0::1;::::0;::::1;6034:21:1::0;6091:2;6071:18;;;6064:30;6130:26;6110:18;;;6103:54;6174:18;;25992:49:0::1;5850:348:1::0;25992:49:0::1;26052:11;:18:::0;;-1:-1:-1;;26052:18:0::1;26066:4;26052:18;::::0;;25937:141::o;18570:112::-;5458:6;;-1:-1:-1;;;;;5458:6:0;2371:10;5458:22;5450:67;;;;-1:-1:-1;;;5450:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18633:27:0::1;18663:5;18633:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;18633:35:0::1;::::0;;18570:112::o;19433:140::-;5458:6;;-1:-1:-1;;;;;5458:6:0;2371:10;5458:22;5450:67;;;;-1:-1:-1;;;5450:67:0;;;;;;;:::i;:::-;19524:29:::1;:41:::0;19433:140::o;21093:337::-;-1:-1:-1;;;;;21186:19:0;;21178:68;;;;-1:-1:-1;;;21178:68:0;;6405:2:1;21178:68:0;;;6387:21:1;6444:2;6424:18;;;6417:30;6483:34;6463:18;;;6456:62;-1:-1:-1;;;6534:18:1;;;6527:34;6578:19;;21178:68:0;6203:400:1;21178:68:0;-1:-1:-1;;;;;21265:21:0;;21257:68;;;;-1:-1:-1;;;21257:68:0;;6810:2:1;21257:68:0;;;6792:21:1;6849:2;6829:18;;;6822:30;6888:34;6868:18;;;6861:62;-1:-1:-1;;;6939:18:1;;;6932:32;6981:19;;21257:68:0;6608:398:1;21257:68:0;-1:-1:-1;;;;;21338:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21390:32;;2407:25:1;;;21390:32:0;;2380:18:1;21390:32:0;;;;;;;21093:337;;;:::o;21438:1550::-;-1:-1:-1;;;;;21560:18:0;;21552:68;;;;-1:-1:-1;;;21552:68:0;;7213:2:1;21552:68:0;;;7195:21:1;7252:2;7232:18;;;7225:30;7291:34;7271:18;;;7264:62;-1:-1:-1;;;7342:18:1;;;7335:35;7387:19;;21552:68:0;7011:401:1;21552:68:0;-1:-1:-1;;;;;21639:16:0;;21631:64;;;;-1:-1:-1;;;21631:64:0;;7619:2:1;21631:64:0;;;7601:21:1;7658:2;7638:18;;;7631:30;7697:34;7677:18;;;7670:62;-1:-1:-1;;;7748:18:1;;;7741:33;7791:19;;21631:64:0;7417:399:1;21631:64:0;21723:1;21714:6;:10;21706:64;;;;-1:-1:-1;;;21706:64:0;;8023:2:1;21706:64:0;;;8005:21:1;8062:2;8042:18;;;8035:30;8101:34;8081:18;;;8074:62;-1:-1:-1;;;8152:18:1;;;8145:39;8201:19;;21706:64:0;7821:405:1;21706:64:0;5369:7;5396:6;-1:-1:-1;;;;;21795:15:0;;;5396:6;;21795:15;;;;:32;;-1:-1:-1;5369:7:0;5396:6;-1:-1:-1;;;;;21814:13:0;;;5396:6;;21814:13;;21795:32;21791:86;;;21837:11;;;;21829:48;;;;-1:-1:-1;;;21829:48:0;;8433:2:1;21829:48:0;;;8415:21:1;8472:2;8452:18;;;8445:30;8511:26;8491:18;;;8484:54;8555:18;;21829:48:0;8231:348:1;21829:48:0;21939:4;21890:28;17189:16;;;:7;:16;;;;;;21986:12;;21962:36;;21958:104;;-1:-1:-1;22038:12:0;;21958:104;22125:29;;22101:53;;;;;;;22169:40;;-1:-1:-1;22193:16:0;;;;;;;22192:17;22169:40;:65;;;;;22221:13;-1:-1:-1;;;;;22213:21:0;:4;-1:-1:-1;;;;;22213:21:0;;;22169:65;:90;;;;-1:-1:-1;22238:21:0;;;;;;;22169:90;22165:226;;;22299:29;;22276:52;;22343:36;22358:20;22343:14;:36::i;:::-;-1:-1:-1;;;;;22439:24:0;;22403:12;22439:24;;;:18;:24;;;;;;22418:4;;22439:24;;;:50;;-1:-1:-1;;;;;;22467:22:0;;;;;;:18;:22;;;;;;;;22439:50;22435:98;;;-1:-1:-1;22516:5:0;22435:98;22547:7;22543:384;;;-1:-1:-1;;;;;22576:26:0;;;;;;:20;:26;;;;;;;;22575:27;:56;;;;-1:-1:-1;;;;;;22607:24:0;;;;;;:20;:24;;;;;;;;22606:25;22575:56;22571:345;;;22670:12;;22660:6;:22;;22652:75;;;;-1:-1:-1;;;22652:75:0;;8786:2:1;22652:75:0;;;8768:21:1;8825:2;8805:18;;;8798:30;8864:34;8844:18;;;8837:62;-1:-1:-1;;;8915:18:1;;;8908:38;8963:19;;22652:75:0;8584:404:1;22652:75:0;22756:13;-1:-1:-1;;;;;22750:19:0;:2;-1:-1:-1;;;;;22750:19:0;;22746:155;;22828:14;;-1:-1:-1;;;;;17189:16:0;;17162:7;17189:16;;;:7;:16;;;;;;22802:22;;:6;:22;:::i;:::-;:40;;22794:87;;;;-1:-1:-1;;;22794:87:0;;9457:2:1;22794:87:0;;;9439:21:1;9496:2;9476:18;;;9469:30;9535:34;9515:18;;;9508:62;-1:-1:-1;;;9586:18:1;;;9579:32;9628:19;;22794:87:0;9255:398:1;22794:87:0;22939:41;22954:4;22960:2;22964:6;22972:7;22939:14;:41::i;:::-;21541:1447;;;21438:1550;;;:::o;1134:192::-;1220:7;1256:12;1248:6;;;;1240:29;;;;-1:-1:-1;;;1240:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1280:9:0;1292:5;1296:1;1292;:5;:::i;:::-;1280:17;1134:192;-1:-1:-1;;;;;1134:192:0:o;801:181::-;859:7;;891:5;895:1;891;:5;:::i;:::-;879:17;;920:1;915;:6;;907:46;;;;-1:-1:-1;;;907:46:0;;9993:2:1;907:46:0;;;9975:21:1;10032:2;10012:18;;;10005:30;10071:29;10051:18;;;10044:57;10118:18;;907:46:0;9791:351:1;907:46:0;973:1;801:181;-1:-1:-1;;;801:181:0:o;22996:1050::-;15684:16;:23;;-1:-1:-1;;15684:23:0;;;;;23148:7:::1;:17:::0;23129:6:::1;:16:::0;15684:23;;;23148:17;;::::1;15684:23:::0;23148:17;;::::1;::::0;23129:16;;::::1;::::0;::::1;::::0;23090:36:::1;::::0;23109:17;;::::1;::::0;23090:16:::1;:36;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;23089:81;::::0;23169:1:::1;23089:81;:::i;:::-;23246:7;:17:::0;23227:6:::1;:16:::0;23067:103:::1;::::0;;::::1;::::0;-1:-1:-1;23181:32:0::1;::::0;23067:103;;23227:36:::1;::::0;23246:17;;::::1;::::0;23227:16:::1;:36;:::i;:::-;23217:47;::::0;::::1;;:6:::0;:47:::1;:::i;:::-;23216:63;;;;:::i;:::-;23181:98:::0;-1:-1:-1;23290:14:0::1;23307:33;23181:98:::0;23307:6;:33:::1;:::i;:::-;23290:50:::0;-1:-1:-1;23378:21:0::1;23412:24;23290:50:::0;23412:16:::1;:24::i;:::-;23449:20;23472:38;23496:14:::0;23472:21:::1;:38;:::i;:::-;23593:7;:17:::0;23574:6:::1;:16:::0;23449:61;;-1:-1:-1;23521:19:0::1;::::0;23574:36:::1;::::0;23593:17:::1;::::0;;::::1;::::0;23574:16:::1;:36;:::i;:::-;23559:52;::::0;::::1;;:11:::0;:52:::1;:::i;:::-;23543:69;::::0;:12;:69:::1;:::i;:::-;23689:7;:17:::0;23670:6:::1;:16:::0;23521:91;;-1:-1:-1;23623:29:0::1;::::0;23670:36:::1;::::0;23689:17:::1;::::0;;::::1;::::0;23670:16:::1;:36;:::i;:::-;23655:52;::::0;::::1;;:11:::0;:52:::1;:::i;:::-;23623:84:::0;-1:-1:-1;23724:25:0;;23720:119:::1;;23766:61;23779:24;23805:21;23766:12;:61::i;:::-;23912:7;:17:::0;23893:6:::1;:16:::0;23851:20:::1;::::0;23893:36:::1;::::0;23912:17:::1;;::::0;;;::::1;::::0;::::1;::::0;23893:16;;::::1;;:36;:::i;:::-;23874:56;;:15;:11:::0;23888:1:::1;23874:15;:::i;:::-;:56;;;;:::i;:::-;23851:79:::0;-1:-1:-1;23945:16:0;;23941:98:::1;;23986:17;::::0;23978:49:::1;::::0;-1:-1:-1;;;;;23986:17:0;;::::1;::::0;23978:49;::::1;;;::::0;24014:12;;23986:17:::1;23978:49:::0;23986:17;23978:49;24014:12;23986:17;23978:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23941:98;-1:-1:-1::0;;15730:16:0;:24;;-1:-1:-1;;15730:24:0;;;-1:-1:-1;;;;;;;22996:1050:0:o;24913:472::-;25068:7;25064:230;;;25092:14;20773:13;:17;;-1:-1:-1;;20801:17:0;;;20730:96;25092:14;25135:13;-1:-1:-1;;;;;25125:23:0;:6;-1:-1:-1;;;;;25125:23:0;;25121:72;;25169:8;20887:6;:16;20871:13;:32;;20887:16;20930;;;20887;20930;;;20914:32;;;-1:-1:-1;;20914:32:0;;;20887:16;;20914:32;;;;;;;;;;20834:120;25169:8;25224:13;-1:-1:-1;;;;;25211:26:0;:9;-1:-1:-1;;;;;25211:26:0;;25207:76;;25258:9;21016:7;:17;21000:13;:33;;21016:17;21060;;;21016;21060;;;21044:33;;;-1:-1:-1;;21044:33:0;;;21016:17;;21044:33;;;;;;;;;;20962:123;25258:9;25306:44;25324:6;25332:9;25343:6;25306:17;:44::i;:::-;25363:14;20773:13;:17;;-1:-1:-1;;20801:17:0;;;20730:96;25363:14;24913:472;;;;:::o;24054:475::-;24144:16;;;24158:1;24144:16;;;;;;;;24120:21;;24144:16;;;;;;;;;;-1:-1:-1;24144:16:0;24120:40;;24189:4;24171;24176:1;24171:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24171:23:0;;;-1:-1:-1;;;;;24171:23:0;;;;;24215:15;-1:-1:-1;;;;;24215:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24205:4;24210:1;24205:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;24205:32:0;;;-1:-1:-1;;;;;24205:32:0;;;;;24250:62;24267:4;24282:15;24300:11;24250:8;:62::i;:::-;24325:196;;-1:-1:-1;;;24325:196:0;;-1:-1:-1;;;;;24325:15:0;:66;;;;:196;;24406:11;;24432:1;;24448:4;;24475;;24495:15;;24325:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24537:368;24618:62;24635:4;24650:15;24668:11;24618:8;:62::i;:::-;24693:204;;-1:-1:-1;;;24693:204:0;;24765:4;24693:204;;;12771:34:1;;;12821:18;;;12814:34;;;24811:1:0;12864:18:1;;;12857:34;;;12907:18;;;12900:34;12950:19;;;12943:44;24871:15:0;13003:19:1;;;12996:35;24693:15:0;-1:-1:-1;;;;;24693:31:0;;;;24732:9;;12705:19:1;;24693:204:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24537:368;;:::o;25393:536::-;25540:23;25578:18;25611:15;25640:20;25652:7;25640:11;:20::i;:::-;-1:-1:-1;;;;;25691:15:0;;;;;;:7;:15;;;;;;25525:135;;-1:-1:-1;25525:135:0;;-1:-1:-1;25525:135:0;-1:-1:-1;25691:28:0;;25711:7;25691:19;:28::i;:::-;-1:-1:-1;;;;;25673:15:0;;;;;;;:7;:15;;;;;;:46;;;;25751:18;;;;;;;:39;;25774:15;25751:22;:39::i;:::-;-1:-1:-1;;;;;25730:18:0;;;;;;:7;:18;;;;;:60;25801:26;25816:10;25801:14;:26::i;:::-;25838:23;25853:7;25838:14;:23::i;:::-;25894:9;-1:-1:-1;;;;;25877:44:0;25886:6;-1:-1:-1;;;;;25877:44:0;;25905:15;25877:44;;;;2407:25:1;;2395:2;2380:18;;2261:177;25877:44:0;;;;;;;;25514:415;;;25393:536;;;:::o;19797:347::-;19857:7;19866;19875;19895:18;19916:30;19938:7;19916:21;:30::i;:::-;19895:51;;19957:15;19975:30;19997:7;19975:21;:30::i;:::-;19957:48;-1:-1:-1;20016:23:0;20042:36;19957:48;20042:23;:7;20054:10;20042:11;:23::i;:::-;:27;;:36::i;:::-;20016:62;20116:10;;-1:-1:-1;20128:7:0;;-1:-1:-1;19797:347:0;;-1:-1:-1;;;19797:347:0:o;990:136::-;1048:7;1075:43;1079:1;1082;1075:43;;;;;;;;;;;;;;;;;:3;:43::i;20152:134::-;20256:4;20240:22;;;;:7;:22;;;;;;:38;;20267:10;20240:26;:38::i;:::-;20231:4;20215:22;;;;:7;:22;;;;;:63;-1:-1:-1;20152:134:0:o;20430:142::-;20539:13;;20500:7;;20527:37;;20558:5;;20527:26;;:7;;20539:13;;20527:11;:26::i;:::-;:30;;:37::i;20580:142::-;20689:13;;20650:7;;20677:37;;20708:5;;20677:26;;:7;;20689:13;;;;;1334:250;1392:7;1416:1;1421;1416:6;1412:47;;-1:-1:-1;1446:1:0;1439:8;;1412:47;1471:9;1483:5;1487:1;1483;:5;:::i;:::-;1471:17;-1:-1:-1;1516:1:0;1507:5;1511:1;1471:17;1507:5;:::i;:::-;:10;1499:56;;;;-1:-1:-1;;;1499:56:0;;13555:2:1;1499:56:0;;;13537:21:1;13594:2;13574:18;;;13567:30;13633:34;13613:18;;;13606:62;-1:-1:-1;;;13684:18:1;;;13677:31;13725:19;;1499:56:0;13353:397:1;1592:132:0;1650:7;1677:39;1681:1;1684;1677:39;;;;;;;;;;;;;;;;;1818:7;1853:12;1846:5;1838:28;;;;-1:-1:-1;;;1838:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1877:9:0;1889:5;1893:1;1889;:5;:::i;14:156:1:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:393::-;253:6;261;269;277;330:3;318:9;309:7;305:23;301:33;298:53;;;347:1;344;337:12;298:53;370:27;387:9;370:27;:::i;:::-;360:37;;416:36;448:2;437:9;433:18;416:36;:::i;:::-;406:46;;471:36;503:2;492:9;488:18;471:36;:::i;:::-;461:46;;526:36;558:2;547:9;543:18;526:36;:::i;:::-;516:46;;175:393;;;;;;;:::o;573:548::-;685:4;714:2;743;732:9;725:21;775:6;769:13;818:6;813:2;802:9;798:18;791:34;843:1;853:140;867:6;864:1;861:13;853:140;;;962:14;;;958:23;;952:30;928:17;;;947:2;924:26;917:66;882:10;;853:140;;;857:3;1042:1;1037:2;1028:6;1017:9;1013:22;1009:31;1002:42;1112:2;1105;1101:7;1096:2;1088:6;1084:15;1080:29;1069:9;1065:45;1061:54;1053:62;;;;573:548;;;;:::o;1126:131::-;-1:-1:-1;;;;;1201:31:1;;1191:42;;1181:70;;1247:1;1244;1237:12;1181:70;1126:131;:::o;1262:315::-;1330:6;1338;1391:2;1379:9;1370:7;1366:23;1362:32;1359:52;;;1407:1;1404;1397:12;1359:52;1446:9;1433:23;1465:31;1490:5;1465:31;:::i;:::-;1515:5;1567:2;1552:18;;;;1539:32;;-1:-1:-1;;;1262:315:1:o;1774:247::-;1833:6;1886:2;1874:9;1865:7;1861:23;1857:32;1854:52;;;1902:1;1899;1892:12;1854:52;1941:9;1928:23;1960:31;1985:5;1960:31;:::i;2443:456::-;2520:6;2528;2536;2589:2;2577:9;2568:7;2564:23;2560:32;2557:52;;;2605:1;2602;2595:12;2557:52;2644:9;2631:23;2663:31;2688:5;2663:31;:::i;:::-;2713:5;-1:-1:-1;2770:2:1;2755:18;;2742:32;2783:33;2742:32;2783:33;:::i;:::-;2443:456;;2835:7;;-1:-1:-1;;;2889:2:1;2874:18;;;;2861:32;;2443:456::o;3828:273::-;3884:6;3937:2;3925:9;3916:7;3912:23;3908:32;3905:52;;;3953:1;3950;3943:12;3905:52;3992:9;3979:23;4045:5;4038:13;4031:21;4024:5;4021:32;4011:60;;4067:1;4064;4057:12;4106:388;4174:6;4182;4235:2;4223:9;4214:7;4210:23;4206:32;4203:52;;;4251:1;4248;4241:12;4203:52;4290:9;4277:23;4309:31;4334:5;4309:31;:::i;:::-;4359:5;-1:-1:-1;4416:2:1;4401:18;;4388:32;4429:33;4388:32;4429:33;:::i;:::-;4481:7;4471:17;;;4106:388;;;;;:::o;4499:180::-;4558:6;4611:2;4599:9;4590:7;4586:23;4582:32;4579:52;;;4627:1;4624;4617:12;4579:52;-1:-1:-1;4650:23:1;;4499:180;-1:-1:-1;4499:180:1:o;4684:356::-;4886:2;4868:21;;;4905:18;;;4898:30;4964:34;4959:2;4944:18;;4937:62;5031:2;5016:18;;4684:356::o;5045:380::-;5124:1;5120:12;;;;5167;;;5188:61;;5242:4;5234:6;5230:17;5220:27;;5188:61;5295:2;5287:6;5284:14;5264:18;5261:38;5258:161;;5341:10;5336:3;5332:20;5329:1;5322:31;5376:4;5373:1;5366:15;5404:4;5401:1;5394:15;5258:161;;5045:380;;;:::o;8993:127::-;9054:10;9049:3;9045:20;9042:1;9035:31;9085:4;9082:1;9075:15;9109:4;9106:1;9099:15;9125:125;9190:9;;;9211:10;;;9208:36;;;9224:18;;:::i;9658:128::-;9725:9;;;9746:11;;;9743:37;;;9760:18;;:::i;10147:148::-;10235:4;10214:12;;;10228;;;10210:31;;10253:13;;10250:39;;;10269:18;;:::i;10300:225::-;10404:4;10383:12;;;10397;;;10379:31;10430:22;;;;10471:24;;;10461:58;;10499:18;;:::i;:::-;10461:58;10300:225;;;;:::o;10530:168::-;10603:9;;;10634;;10651:15;;;10645:22;;10631:37;10621:71;;10672:18;;:::i;10703:217::-;10743:1;10769;10759:132;;10813:10;10808:3;10804:20;10801:1;10794:31;10848:4;10845:1;10838:15;10876:4;10873:1;10866:15;10759:132;-1:-1:-1;10905:9:1;;10703:217::o;11057:127::-;11118:10;11113:3;11109:20;11106:1;11099:31;11149:4;11146:1;11139:15;11173:4;11170:1;11163:15;11189:251;11259:6;11312:2;11300:9;11291:7;11287:23;11283:32;11280:52;;;11328:1;11325;11318:12;11280:52;11360:9;11354:16;11379:31;11404:5;11379:31;:::i;11445:980::-;11707:4;11755:3;11744:9;11740:19;11786:6;11775:9;11768:25;11812:2;11850:6;11845:2;11834:9;11830:18;11823:34;11893:3;11888:2;11877:9;11873:18;11866:31;11917:6;11952;11946:13;11983:6;11975;11968:22;12021:3;12010:9;12006:19;11999:26;;12060:2;12052:6;12048:15;12034:29;;12081:1;12091:195;12105:6;12102:1;12099:13;12091:195;;;12170:13;;-1:-1:-1;;;;;12166:39:1;12154:52;;12261:15;;;;12226:12;;;;12202:1;12120:9;12091:195;;;-1:-1:-1;;;;;;;12342:32:1;;;;12337:2;12322:18;;12315:60;-1:-1:-1;;;12406:3:1;12391:19;12384:35;12303:3;11445:980;-1:-1:-1;;;11445:980:1:o;13042:306::-;13130:6;13138;13146;13199:2;13187:9;13178:7;13174:23;13170:32;13167:52;;;13215:1;13212;13205:12;13167:52;13244:9;13238:16;13228:26;;13294:2;13283:9;13279:18;13273:25;13263:35;;13338:2;13327:9;13323:18;13317:25;13307:35;;13042:306;;;;;:::o

Swarm Source

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