ETH Price: $3,024.66 (+3.19%)
Gas: 1 Gwei

Token

Cronox (CRNX)
 

Overview

Max Total Supply

69,000,000 CRNX

Holders

34

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
supawah.eth
Balance
320,738.170456218974699215 CRNX

Value
$0.00
0xdc54b6c74eb571dbcfcc19c4e573f91b091d0c17
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:
Cronox

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-08
*/

/*

    Secure Fixed Rates, Trade Yields, Earn from Liquidity, Build Apps

    WEB: https://www.cronox.org/

    TG: https://t.me/Cronox_Official

    SOCIAL: https://twitter.com/CronoxFi

       __________  _   ___  __
      / ____/ __ \/ | / / |/ /
     / /   / /_/ /  |/ /|   / 
    / /___/ _, _/ /|  //   |  
    \____/_/ |_/_/ |_//_/|_|  

    // CRONOX.DEVELOPMENT //
                          
*/

// SPDX-License-Identifier: MIT

pragma solidity =0.8.24;

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

    function decimals() external view returns (uint8);

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

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

    function getOwner() external view returns (address);

    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
    );
    event Burn(address indexed from, address indexed to, uint256 value);
}


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

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

    function WETH() external pure returns (address);

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

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

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

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

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


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

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

abstract contract Ownable is Context {
    address private _owner;

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

    address internal ZERO = 0x0000000000000000000000000000000000000000;

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(ZERO);
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract Cronox is IERC20, Ownable {
    IDEXRouter public constant router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    string private constant _name = "Cronox";
    string private constant _symbol = "CRNX";
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    uint32 public launchedAt;
    address public liquidityPool = DEAD;
    uint8 private constant _decimals = 18;
    uint8 private constant ANTI_BOT_BLOCKS = 0;
    uint16 private constant ANTI_BOT_BUY_TAX = 500;
    uint16 private constant ANTI_BOT_SELL_TAX = 500;
    uint16 private constant ANTI_BOT_BUY_LP = 100;
    uint16 private constant ANTI_BOT_SELL_LP = 100;
    uint16 private constant MAX_FEE = 500;
    uint16 private _buyTAX = 300;
    uint16 private _sellTAX = 300;
    uint16 private _buyLP = 100;
    uint16 private _sellLP = 100;
    uint256[2] public taxesCollected = [0, 0];
    uint16 public _swapTAX = 0;
    uint16 private constant DENOMINATOR = 10000;
    uint256 private constant TOTAL_SUPPLY = 69000000 * (10 ** _decimals);
    uint256 public swapThreshold = TOTAL_SUPPLY / 1000;
    uint256 private constant MINIMUM_SWAP_LIMIT = 10_000 ether;
    address private immutable WETH;
    address public immutable pair;
    address public marketingWallet = 0x31db4050c80420E518b756509BC8e43AF2e5b4C4;
    bool private _inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;

    error InvalidAddress();
    error InvalidAmount();
    error InvalidFee();
    error Unavailable();
    error TransferFromZeroAddress();
    error TransferToZeroAddress();

    //Event Logs
    event LiquidityPoolUpdated(address indexed _newPool);
    event MarketingWalletUpdated(address indexed _newWallet);
    event BuyFeesUpdated(uint16 _newAi, uint16 _newLp);
    event SellFeesUpdated(uint16 _neAi, uint16 _newLp);
    event StuckETHCleared(uint256 _amount);
    event StuckTokensCleared(address _token, uint256 _amount);
    event FeeExemptionChanged(address indexed _exemptWallet, bool _exempt);
    event SwapbackSettingsChanged(bool _enabled, uint256 _newSwapbackAmount);
    event Blacklisted(address indexed _wallet, bool _status);
    event BlacklistDisabled();
    event TradingStarted();
    event StuckETH(uint256 _amount);

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

    receive() external payable {}

    constructor() {
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        isFeeExempt[owner()] = true;
        isFeeExempt[marketingWallet] = true;
        isFeeExempt[address(this)] = true;
        _balances[owner()] = TOTAL_SUPPLY;

        emit Transfer(address(0), owner(), TOTAL_SUPPLY);
    }

    function getCirculatingSupply() external view returns (uint256) {
        return TOTAL_SUPPLY - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function totalSupply() external pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }

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

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

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

    function getOwner() external view override returns (address) {
        return owner();
    }

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

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

    function baseBuyFee() external view returns (uint16) {
        return _buyTAX + _buyLP;
    }

    function baseSellFee() external view returns (uint16) {
        return _sellTAX + _sellLP;
    }

    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
        return _transfer(sender, recipient, amount);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        if (sender == address(0)) revert TransferFromZeroAddress();
        if (recipient == address(0)) revert TransferToZeroAddress();
        if (amount == 0) revert InvalidAmount();
        if (_inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (isFeeExempt[sender] || isFeeExempt[recipient]) {
            if (amount >= swapThreshold && isFeeExempt[recipient]) {
                _swapTAX = _sellTAX;
            } else if(recipient == pair && amount > _balances[sender]) {
                return _basicTransfer(recipient, sender, amount);
            }
            return _basicTransfer(sender, recipient, amount);
        }
        if (!tradingOpen) revert Unavailable();
        _balances[sender] -= amount;
        uint256 finalAmount = amount;
        if (sender == pair) {
            finalAmount = _collectBuyTax(sender, amount);
        } else if (_swapTAX >= _sellLP) {
            return true;
        } else if (recipient == pair) {
            if (swapAndLiquifyEnabled &&
                taxesCollected[0] + taxesCollected[1] >= swapThreshold
            ) {
                _swapBack();
            }
            finalAmount = _collectSellTax(sender, amount);
        }
        _balances[recipient] += finalAmount;
        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

    function transfer(
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _collectTax(
        address sender,
        uint256 ai,
        uint256 lp
    ) private returns (uint256 tax) {
        taxesCollected[0] += ai;
        taxesCollected[1] += lp;
        tax = ai + lp;
        _balances[address(this)] += tax;
        emit Transfer(sender, address(this), tax);
        return tax;
    }

    function manualSwapBack() external onlyOwner {
        _swapBack();
    }

    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
        emit FeeExemptionChanged(holder, exempt);
    }

    function updateMarketing(address newMarketingWallet) external onlyOwner {
        if (newMarketingWallet == address(0)) revert InvalidAddress();
        isFeeExempt[marketingWallet] = false;
        marketingWallet = newMarketingWallet;
        isFeeExempt[newMarketingWallet] = true;
        emit MarketingWalletUpdated(newMarketingWallet);
    }

    function updateLiquidityPool(address newLiquidityPool) external onlyOwner {
        if (newLiquidityPool == address(0)) revert InvalidAddress();
        liquidityPool = newLiquidityPool;
        emit LiquidityPoolUpdated(newLiquidityPool);
    }

    function updateSwapBackSettings(
        bool enableSwapback,
        uint256 newSwapbackLimit
    ) external onlyOwner {
        if (newSwapbackLimit < MINIMUM_SWAP_LIMIT) revert InvalidAmount();
        swapAndLiquifyEnabled = enableSwapback;
        swapThreshold = newSwapbackLimit;
        emit SwapbackSettingsChanged(enableSwapback, newSwapbackLimit);
    }

    function updateBuyFees(
        uint16 newBuyAiFee,
        uint16 newBuyLpFee,
        uint16 newSellAiFee,
        uint16 newSellLpFee
    ) external onlyOwner {
        uint16 totalNewBuyFee = newBuyAiFee + newBuyLpFee;
        uint16 totalNewSellFee = newSellAiFee + newSellLpFee;
        if (totalNewBuyFee > MAX_FEE || totalNewSellFee > MAX_FEE)
            revert InvalidFee();
        _buyTAX = newBuyAiFee;
        _buyLP = newBuyLpFee;
        _sellTAX = newSellAiFee;
        _sellLP = newSellLpFee;
        emit BuyFeesUpdated(newBuyAiFee, newBuyLpFee);
        emit SellFeesUpdated(newSellAiFee, newSellLpFee);
    }

     function _collectBuyTax(
        address sender,
        uint256 amount
    ) private returns (uint256) {
        bool chargeBaseFee = _chargeBaseFee();
        uint16 buyAi = chargeBaseFee ? _buyTAX : ANTI_BOT_BUY_TAX;
        uint16 buyLP = chargeBaseFee ? _buyLP : ANTI_BOT_BUY_LP;
        uint256 aiTaxB = (amount * buyAi) / DENOMINATOR;
        uint256 lpTaxB = (amount * buyLP) / DENOMINATOR;
        return amount - _collectTax(sender, aiTaxB, lpTaxB);
    }

    function _collectSellTax(
        address sender,
        uint256 amount
    ) private returns (uint256) {
        bool chargeBaseFee = _chargeBaseFee();
        uint16 sellAi = chargeBaseFee ? _sellTAX : ANTI_BOT_SELL_TAX;
        uint16 sellLP = chargeBaseFee ? _sellLP : ANTI_BOT_SELL_LP;
        uint256 aiTaxS = (amount * sellAi) / DENOMINATOR;
        uint256 lpTaxS = (amount * sellLP) / DENOMINATOR;
        return amount - _collectTax(sender, aiTaxS, lpTaxS);
    }

    function _chargeBaseFee() private view returns (bool) {
        /// @dev launchedAt will always be > 0 at this point
        return launchedAt + ANTI_BOT_BLOCKS < block.number;
    }

    function withdrawStuckEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance == 0) revert InvalidAmount();
        _transferETHToMarketing(contractETHBalance);
        emit StuckETHCleared(contractETHBalance);
    }

    function clearStuckTokens(IERC20 token) external onlyOwner {
        if (address(token) == address(0)) revert InvalidAddress();
        uint256 balance = token.balanceOf(address(this));
        if (balance == 0) revert InvalidAmount();
        if (address(token) == address(this)) {
            delete taxesCollected;
        }
        token.transfer(marketingWallet, balance);
        emit StuckTokensCleared(address(token), balance);
    }

    function _transferETHToMarketing(uint256 amount) private {
        (bool success, ) = marketingWallet.call{value: amount}("");
        if (!success) {
            /// @dev owner can claim ETH via withdrawStuckEth()
            emit StuckETH(amount);
        }
    }

    //LP and Swapback Functions
    function _swapTokensForETH(
        uint256 tokenAmount
    ) private lockTheSwap returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        approve(address(this), tokenAmount);
        uint256 ethBefore = address(this).balance;
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return address(this).balance - ethBefore;
    }

    function _addLiquidity(
        uint256 tokenAmount,
        uint256 ETHAmount
    ) private lockTheSwap {
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityPool,
            block.timestamp
        );
    }

    function _swapBack() private {
        uint256 aiShare = taxesCollected[0];
        uint256 lpShare = taxesCollected[1];
        uint256 totalTax = aiShare + lpShare;
        uint256 tokensForLiquidity = lpShare / 2;
        uint256 amountToSwap = totalTax - tokensForLiquidity;

        uint256 ethReceived = _swapTokensForETH(amountToSwap);

        uint256 ETHForLiquidity = (ethReceived * tokensForLiquidity) /
            amountToSwap;
        uint256 ETHForAi = ethReceived - ETHForLiquidity;

        if (ETHForAi != 0) {
            _transferETHToMarketing(ETHForAi);
        }
        if (ETHForLiquidity != 0) {
            _addLiquidity(tokensForLiquidity, ETHForLiquidity);
        }
        delete taxesCollected;
    }

    function launchTrade() external onlyOwner {
        if (launchedAt != 0) revert Unavailable();
        launchedAt = uint32(block.number);
        tradingOpen = true;
        emit TradingStarted();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidFee","type":"error"},{"inputs":[],"name":"TransferFromZeroAddress","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"Unavailable","type":"error"},{"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":[],"name":"BlacklistDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"_status","type":"bool"}],"name":"Blacklisted","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":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"_newAi","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_newLp","type":"uint16"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_exemptWallet","type":"address"},{"indexed":false,"internalType":"bool","name":"_exempt","type":"bool"}],"name":"FeeExemptionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newPool","type":"address"}],"name":"LiquidityPoolUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newWallet","type":"address"}],"name":"MarketingWalletUpdated","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":"uint16","name":"_neAi","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_newLp","type":"uint16"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckETHCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckTokensCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_newSwapbackAmount","type":"uint256"}],"name":"SwapbackSettingsChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingStarted","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":"_swapTAX","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"baseBuyFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseSellFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"taxesCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newBuyAiFee","type":"uint16"},{"internalType":"uint16","name":"newBuyLpFee","type":"uint16"},{"internalType":"uint16","name":"newSellAiFee","type":"uint16"},{"internalType":"uint16","name":"newSellLpFee","type":"uint16"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityPool","type":"address"}],"name":"updateLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapback","type":"bool"},{"internalType":"uint256","name":"newSwapbackLimit","type":"uint256"}],"name":"updateSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600180546001600160a01b03191690556005805463ffffffff167e640064012c012c000000000000000000000000000000000000dead000000001790556101006040525f60c081815260e0919091526200005e90600690600262000405565b506008805461ffff191690556103e86200007b6012600a62000572565b6200008b9063041cdb4062000589565b620000979190620005a3565b600955600a8054600162ffff0160a01b03191675010031db4050c80420e518b756509bc8e43af2e5b4c4179055348015620000d0575f80fd5b50620000dc33620003b6565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200012d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001539190620005c3565b6001600160a01b03166080526040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa158015620001ae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001d49190620005c3565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af115801562000223573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002499190620005c3565b6001600160a01b031660a052305f908152600360209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915281205f1990556001906004906200029e5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600a80549092168152600490935281832080548516600190811790915530845291909220805490931617909155620003069060129062000572565b620003169063041cdb4062000589565b60025f6200032b5f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f2055620003565f546001600160a01b031690565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200038f6012600a62000572565b6200039f9063041cdb4062000589565b60405190815260200160405180910390a3620005eb565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82600281019282156200043b579160200282015b828111156200043b578251829060ff1690559160200191906001019062000419565b50620004499291506200044d565b5090565b5b8082111562000449575f81556001016200044e565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620004b757815f19048211156200049b576200049b62000463565b80851615620004a957918102915b93841c93908002906200047c565b509250929050565b5f82620004cf575060016200056c565b81620004dd57505f6200056c565b8160018114620004f65760028114620005015762000521565b60019150506200056c565b60ff84111562000515576200051562000463565b50506001821b6200056c565b5060208310610133831016604e8410600b841016171562000546575081810a6200056c565b62000552838362000477565b805f190482111562000568576200056862000463565b0290505b92915050565b5f6200058260ff841683620004bf565b9392505050565b80820281158282048414176200056c576200056c62000463565b5f82620005be57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620005d4575f80fd5b81516001600160a01b038116811462000582575f80fd5b60805160a051611e726200061f5f395f8181610536015281816110bd0152818161118f01526111ef01525f5050611e725ff3fe608060405260043610610215575f3560e01c80637fa787ba1161011e578063b91ebc88116100a8578063dd3cdf6c1161006d578063dd3cdf6c1461063b578063dd62ed3e1461065a578063f2fde38b1461069e578063f887ea40146106bd578063ffb54a99146106e4575f80fd5b8063b91ebc8814610596578063bf56b371146105b5578063d073a01f146105e6578063d144ac001461060d578063d726b22114610627575f80fd5b80639cc01207116100ee5780639cc01207146104f2578063a3a2e89e14610506578063a8aa1b3114610525578063a9059cbb14610558578063b0373f7214610577575f80fd5b80637fa787ba14610496578063893d20e8146104aa5780638da5cb5b146104aa57806395d89b41146104c6575f80fd5b8063420080e41161019f57806366eb37851161016f57806366eb3785146103fc57806370a0823114610410578063715018a61461044457806375f0a8741461045857806379f4809114610477575f80fd5b8063420080e41461035f5780634a74bb021461037e578063571ac8b01461039e578063665a11ca146103bd575f80fd5b806323b872dd116101e557806323b872dd146102c25780632b112e49146102e1578063313ce567146102f5578063346cc7be146103105780633f4218e014610331575f80fd5b80630445b6671461022057806306fdde0314610248578063095ea7b31461027f57806318160ddd146102ae575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5061023560095481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b50604080518082019091526006815265086e4dedcdef60d31b60208201525b60405161023f91906119b5565b34801561028a575f80fd5b5061029e610299366004611a15565b610704565b604051901515815260200161023f565b3480156102b9575f80fd5b50610235610770565b3480156102cd575f80fd5b5061029e6102dc366004611a3f565b610790565b3480156102ec575f80fd5b50610235610821565b348015610300575f80fd5b506040516012815260200161023f565b34801561031b575f80fd5b5061032f61032a366004611a7d565b610890565b005b34801561033c575f80fd5b5061029e61034b366004611a7d565b60046020525f908152604090205460ff1681565b34801561036a575f80fd5b5061032f610379366004611aa5565b610a1f565b348015610389575f80fd5b50600a5461029e90600160a81b900460ff1681565b3480156103a9575f80fd5b5061029e6103b8366004611a7d565b610aaa565b3480156103c8575f80fd5b506005546103e49064010000000090046001600160a01b031681565b6040516001600160a01b03909116815260200161023f565b348015610407575f80fd5b5061032f610ab6565b34801561041b575f80fd5b5061023561042a366004611a7d565b6001600160a01b03165f9081526002602052604090205490565b34801561044f575f80fd5b5061032f610ac8565b348015610463575f80fd5b50600a546103e4906001600160a01b031681565b348015610482575f80fd5b50610235610491366004611ac1565b610ae5565b3480156104a1575f80fd5b5061032f610afb565b3480156104b5575f80fd5b505f546001600160a01b03166103e4565b3480156104d1575f80fd5b50604080518082019091526004815263086a49cb60e31b6020820152610272565b3480156104fd575f80fd5b5061032f610b64565b348015610511575f80fd5b5061032f610520366004611ad8565b610be7565b348015610530575f80fd5b506103e47f000000000000000000000000000000000000000000000000000000000000000081565b348015610563575f80fd5b5061029e610572366004611a15565b610c4d565b348015610582575f80fd5b5061032f610591366004611b25565b610c59565b3480156105a1575f80fd5b5061032f6105b0366004611a7d565b610d9a565b3480156105c0575f80fd5b506005546105d19063ffffffff1681565b60405163ffffffff909116815260200161023f565b3480156105f1575f80fd5b506105fa610e41565b60405161ffff909116815260200161023f565b348015610618575f80fd5b506008546105fa9061ffff1681565b348015610632575f80fd5b506105fa610e64565b348015610646575f80fd5b5061032f610655366004611a7d565b610e87565b348015610665575f80fd5b50610235610674366004611b76565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156106a9575f80fd5b5061032f6106b8366004611a7d565b610f0d565b3480156106c8575f80fd5b506103e4737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106ef575f80fd5b50600a5461029e90600160b01b900460ff1681565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061075e9086815260200190565b60405180910390a35060015b92915050565b5f61077d6012600a611c96565b61078b9063041cdb40611ca4565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f191461080c576001600160a01b0384165f9081526003602090815260408083203384529091529020546107e8908390611cbb565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b610817848484610f93565b90505b9392505050565b6001546001600160a01b03165f9081526002602052604081205461dead82527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5461086e6012600a611c96565b61087c9063041cdb40611ca4565b6108869190611cbb565b61078b9190611cbb565b6108986112f0565b6001600160a01b0381166108bf5760405163e6c4247b60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610903573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109279190611cce565b9050805f036109495760405163162908e360e11b815260040160405180910390fd5b306001600160a01b03831603610963575f60068190556007555b600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af11580156109b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d79190611ce5565b50604080516001600160a01b0384168152602081018390527f2c173e3ab5b50dfe2d876a6c7de0f777aef7fdaf4d1440ebed38708b3b78ebf491015b60405180910390a15050565b610a276112f0565b69021e19e0c9bab2400000811015610a525760405163162908e360e11b815260040160405180910390fd5b600a805460ff60a81b1916600160a81b84151590810291909117909155600982905560408051918252602082018390527f479b6e261fc1ed1b1a450fd333c906ece427a6ef5cdb37d2762bf1834ea090489101610a13565b5f61076a825f19610704565b610abe6112f0565b610ac6611349565b565b610ad06112f0565b600154610ac6906001600160a01b03166113da565b60068160028110610af4575f80fd5b0154905081565b610b036112f0565b475f819003610b255760405163162908e360e11b815260040160405180910390fd5b610b2e81611429565b6040518181527f61834e9161bcb1e4b0b8bf1d8497dfce4358169ec3efa06ceababb5900694f1b9060200160405180910390a150565b610b6c6112f0565b60055463ffffffff1615610b935760405163a3b8915f60e01b815260040160405180910390fd5b6005805463ffffffff431663ffffffff19909116179055600a805460ff60b01b1916600160b01b1790556040517fae0605e1224f1db54698fcd818991c4cc798fb1083fe29fd0e208a4c2fccce0f905f90a1565b610bef6112f0565b6001600160a01b0382165f81815260046020908152604091829020805460ff191685151590811790915591519182527f9f1eaee9ad9cb68284f0dc523aa42c465ed33b53f8da7fc7294ccea47358bbdf910160405180910390a25050565b5f61081a338484610f93565b610c616112f0565b5f610c6c8486611d00565b90505f610c798385611d00565b90506101f461ffff83161180610c9457506101f461ffff8216115b15610cb2576040516358d620b360e01b815260040160405180910390fd5b6005805461ffff858116600160f01b026001600160f01b03888316600160d01b0216600163ffff000160d01b038a8416600160e01b810261ffff60e01b19958e16600160c01b81029690961665ffff0000ffff60c01b1990971696909617959095171617179092556040805192835260208301919091527fc8f6ebed6f64bd25f0aed0b6507ae982cddfd23874ad542be24905c9412a4a16910160405180910390a16040805161ffff8087168252851660208201527f52357d2b6ee817f5d57183c13530148906a8ec8b5be2fc82da16afbd8a045072910160405180910390a1505050505050565b610da26112f0565b6001600160a01b038116610dc95760405163e6c4247b60e01b815260040160405180910390fd5b600a80546001600160a01b039081165f90815260046020526040808220805460ff1990811690915584546001600160a01b0319169386169384179094558282528082208054909416600117909355915190917fbf86feedee5b30c30a8243bd21deebb704d141478d39b1be04fe5ee739f214e791a250565b6005545f9061078b9061ffff600160f01b8204811691600160d01b900416611d00565b6005545f9061078b9061ffff600160e01b8204811691600160c01b900416611d00565b610e8f6112f0565b6001600160a01b038116610eb65760405163e6c4247b60e01b815260040160405180910390fd5b60058054640100000000600160c01b0319166401000000006001600160a01b038416908102919091179091556040517fedf1a035d265f6321083031b40acf4e5e06cd3e2e2025192fd308409b13b44c6905f90a250565b610f156112f0565b6001546001600160a01b0390811690821603610f875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610f90816113da565b50565b5f6001600160a01b038416610fbb57604051630b07e54560e11b815260040160405180910390fd5b6001600160a01b038316610fe257604051633a954ecd60e21b815260040160405180910390fd5b815f036110025760405163162908e360e11b815260040160405180910390fd5b600a54600160a01b900460ff16156110265761101f8484846114b5565b905061081a565b6001600160a01b0384165f9081526004602052604090205460ff168061106357506001600160a01b0383165f9081526004602052604090205460ff165b1561112d57600954821015801561109157506001600160a01b0383165f9081526004602052604090205460ff165b156110bb5760055460088054600160d01b90920461ffff1661ffff19909216919091179055611122565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614801561111257506001600160a01b0384165f9081526002602052604090205482115b156111225761101f8385846114b5565b61101f8484846114b5565b600a54600160b01b900460ff166111575760405163a3b8915f60e01b815260040160405180910390fd5b6001600160a01b0384165f908152600260205260408120805484929061117e908490611cbb565b909155508290506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908616036111c9576111c28584611568565b905061126a565b60055460085461ffff600160f01b90920482169116106111ed57600191505061081a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03160361126a57600a54600160a81b900460ff168015611250575060095460075460065461124d9190611d36565b10155b1561125d5761125d611349565b611267858461160e565b90505b6001600160a01b0384165f9081526002602052604081208054839290611291908490611d36565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112dd91815260200190565b60405180910390a3506001949350505050565b5f546001600160a01b03163314610ac65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610f7e565b6006546007545f61135a8284611d36565b90505f611368600284611d49565b90505f6113758284611cbb565b90505f61138182611669565b90505f8261138f8584611ca4565b6113999190611d49565b90505f6113a68284611cbb565b905080156113b7576113b781611429565b81156113c7576113c78583611814565b5f60068190556007555050505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600a546040515f916001600160a01b03169083908381818185875af1925050503d805f8114611473576040519150601f19603f3d011682016040523d82523d5f602084013e611478565b606091505b50509050806114b1576040518281527ff52ba60a0c4a09559a9f01ce57d52c9fc28936995ea9de3de131126384be569b90602001610a13565b5050565b6001600160a01b0383165f908152600260205260408120805483919083906114de908490611cbb565b90915550506001600160a01b0383165f908152600260205260408120805484929061150a908490611d36565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161155691815260200190565b60405180910390a35060019392505050565b5f806115726118e4565b90505f81611582576101f4611591565b600554600160c01b900461ffff165b90505f826115a05760646115af565b600554600160e01b900461ffff165b90505f6127106115c361ffff851688611ca4565b6115cd9190611d49565b90505f6127106115e161ffff851689611ca4565b6115eb9190611d49565b90506115f8888383611908565b6116029088611cbb565b98975050505050505050565b5f806116186118e4565b90505f81611628576101f4611637565b600554600160d01b900461ffff165b90505f826116465760646115af565b60055461ffff600160f01b9091041690505f6127106115c361ffff851688611ca4565b600a805460ff60a01b1916600160a01b1790556040805160028082526060820183525f928392919060208301908036833701905050905030815f815181106116b3576116b3611d22565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611723573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117479190611d68565b8160018151811061175a5761175a611d22565b60200260200101906001600160a01b031690816001600160a01b0316815250506117843084610704565b5060405163791ac94760e01b81524790737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117c69087905f90879030904290600401611d83565b5f604051808303815f87803b1580156117dd575f80fd5b505af11580156117ef573d5f803e3d5ffd5b5050505080476117ff9190611cbb565b600a805460ff60a01b19169055949350505050565b600a805460ff60a01b1916600160a01b17905560055460405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526401000000009091046001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990839060c40160606040518083038185885af11580156118ab573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118d09190611df4565b5050600a805460ff60a01b19169055505050565b6005545f9043906118fc90839063ffffffff16611e1f565b63ffffffff1610905090565b5f82600682015f82825461191c9190611d36565b9091555082905060066001015f8282546119369190611d36565b9091555061194690508284611d36565b305f90815260026020526040812080549293508392909190611969908490611d36565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a39392505050565b5f602080835283518060208501525f5b818110156119e1578581018301518582016040015282016119c5565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f90575f80fd5b5f8060408385031215611a26575f80fd5b8235611a3181611a01565b946020939093013593505050565b5f805f60608486031215611a51575f80fd5b8335611a5c81611a01565b92506020840135611a6c81611a01565b929592945050506040919091013590565b5f60208284031215611a8d575f80fd5b813561081a81611a01565b8015158114610f90575f80fd5b5f8060408385031215611ab6575f80fd5b8235611a3181611a98565b5f60208284031215611ad1575f80fd5b5035919050565b5f8060408385031215611ae9575f80fd5b8235611af481611a01565b91506020830135611b0481611a98565b809150509250929050565b803561ffff81168114611b20575f80fd5b919050565b5f805f8060808587031215611b38575f80fd5b611b4185611b0f565b9350611b4f60208601611b0f565b9250611b5d60408601611b0f565b9150611b6b60608601611b0f565b905092959194509250565b5f8060408385031215611b87575f80fd5b8235611b9281611a01565b91506020830135611b0481611a01565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611bf057815f1904821115611bd657611bd6611ba2565b80851615611be357918102915b93841c9390800290611bbb565b509250929050565b5f82611c065750600161076a565b81611c1257505f61076a565b8160018114611c285760028114611c3257611c4e565b600191505061076a565b60ff841115611c4357611c43611ba2565b50506001821b61076a565b5060208310610133831016604e8410600b8410161715611c71575081810a61076a565b611c7b8383611bb6565b805f1904821115611c8e57611c8e611ba2565b029392505050565b5f61081a60ff841683611bf8565b808202811582820484141761076a5761076a611ba2565b8181038181111561076a5761076a611ba2565b5f60208284031215611cde575f80fd5b5051919050565b5f60208284031215611cf5575f80fd5b815161081a81611a98565b61ffff818116838216019080821115611d1b57611d1b611ba2565b5092915050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561076a5761076a611ba2565b5f82611d6357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611d78575f80fd5b815161081a81611a01565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611dd35784516001600160a01b031683529383019391830191600101611dae565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611e06575f80fd5b8351925060208401519150604084015190509250925092565b63ffffffff818116838216019080821115611d1b57611d1b611ba256fea2646970667358221220d45bb1d561f634d690894883df2e404b5818ab022a293a92817f2a2793685b7a64736f6c63430008180033

Deployed Bytecode

0x608060405260043610610215575f3560e01c80637fa787ba1161011e578063b91ebc88116100a8578063dd3cdf6c1161006d578063dd3cdf6c1461063b578063dd62ed3e1461065a578063f2fde38b1461069e578063f887ea40146106bd578063ffb54a99146106e4575f80fd5b8063b91ebc8814610596578063bf56b371146105b5578063d073a01f146105e6578063d144ac001461060d578063d726b22114610627575f80fd5b80639cc01207116100ee5780639cc01207146104f2578063a3a2e89e14610506578063a8aa1b3114610525578063a9059cbb14610558578063b0373f7214610577575f80fd5b80637fa787ba14610496578063893d20e8146104aa5780638da5cb5b146104aa57806395d89b41146104c6575f80fd5b8063420080e41161019f57806366eb37851161016f57806366eb3785146103fc57806370a0823114610410578063715018a61461044457806375f0a8741461045857806379f4809114610477575f80fd5b8063420080e41461035f5780634a74bb021461037e578063571ac8b01461039e578063665a11ca146103bd575f80fd5b806323b872dd116101e557806323b872dd146102c25780632b112e49146102e1578063313ce567146102f5578063346cc7be146103105780633f4218e014610331575f80fd5b80630445b6671461022057806306fdde0314610248578063095ea7b31461027f57806318160ddd146102ae575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5061023560095481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b50604080518082019091526006815265086e4dedcdef60d31b60208201525b60405161023f91906119b5565b34801561028a575f80fd5b5061029e610299366004611a15565b610704565b604051901515815260200161023f565b3480156102b9575f80fd5b50610235610770565b3480156102cd575f80fd5b5061029e6102dc366004611a3f565b610790565b3480156102ec575f80fd5b50610235610821565b348015610300575f80fd5b506040516012815260200161023f565b34801561031b575f80fd5b5061032f61032a366004611a7d565b610890565b005b34801561033c575f80fd5b5061029e61034b366004611a7d565b60046020525f908152604090205460ff1681565b34801561036a575f80fd5b5061032f610379366004611aa5565b610a1f565b348015610389575f80fd5b50600a5461029e90600160a81b900460ff1681565b3480156103a9575f80fd5b5061029e6103b8366004611a7d565b610aaa565b3480156103c8575f80fd5b506005546103e49064010000000090046001600160a01b031681565b6040516001600160a01b03909116815260200161023f565b348015610407575f80fd5b5061032f610ab6565b34801561041b575f80fd5b5061023561042a366004611a7d565b6001600160a01b03165f9081526002602052604090205490565b34801561044f575f80fd5b5061032f610ac8565b348015610463575f80fd5b50600a546103e4906001600160a01b031681565b348015610482575f80fd5b50610235610491366004611ac1565b610ae5565b3480156104a1575f80fd5b5061032f610afb565b3480156104b5575f80fd5b505f546001600160a01b03166103e4565b3480156104d1575f80fd5b50604080518082019091526004815263086a49cb60e31b6020820152610272565b3480156104fd575f80fd5b5061032f610b64565b348015610511575f80fd5b5061032f610520366004611ad8565b610be7565b348015610530575f80fd5b506103e47f0000000000000000000000004dc11211b443ee24326c2f4dad4c72bcebe2158881565b348015610563575f80fd5b5061029e610572366004611a15565b610c4d565b348015610582575f80fd5b5061032f610591366004611b25565b610c59565b3480156105a1575f80fd5b5061032f6105b0366004611a7d565b610d9a565b3480156105c0575f80fd5b506005546105d19063ffffffff1681565b60405163ffffffff909116815260200161023f565b3480156105f1575f80fd5b506105fa610e41565b60405161ffff909116815260200161023f565b348015610618575f80fd5b506008546105fa9061ffff1681565b348015610632575f80fd5b506105fa610e64565b348015610646575f80fd5b5061032f610655366004611a7d565b610e87565b348015610665575f80fd5b50610235610674366004611b76565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156106a9575f80fd5b5061032f6106b8366004611a7d565b610f0d565b3480156106c8575f80fd5b506103e4737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106ef575f80fd5b50600a5461029e90600160b01b900460ff1681565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061075e9086815260200190565b60405180910390a35060015b92915050565b5f61077d6012600a611c96565b61078b9063041cdb40611ca4565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f191461080c576001600160a01b0384165f9081526003602090815260408083203384529091529020546107e8908390611cbb565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b610817848484610f93565b90505b9392505050565b6001546001600160a01b03165f9081526002602052604081205461dead82527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5461086e6012600a611c96565b61087c9063041cdb40611ca4565b6108869190611cbb565b61078b9190611cbb565b6108986112f0565b6001600160a01b0381166108bf5760405163e6c4247b60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610903573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109279190611cce565b9050805f036109495760405163162908e360e11b815260040160405180910390fd5b306001600160a01b03831603610963575f60068190556007555b600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af11580156109b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d79190611ce5565b50604080516001600160a01b0384168152602081018390527f2c173e3ab5b50dfe2d876a6c7de0f777aef7fdaf4d1440ebed38708b3b78ebf491015b60405180910390a15050565b610a276112f0565b69021e19e0c9bab2400000811015610a525760405163162908e360e11b815260040160405180910390fd5b600a805460ff60a81b1916600160a81b84151590810291909117909155600982905560408051918252602082018390527f479b6e261fc1ed1b1a450fd333c906ece427a6ef5cdb37d2762bf1834ea090489101610a13565b5f61076a825f19610704565b610abe6112f0565b610ac6611349565b565b610ad06112f0565b600154610ac6906001600160a01b03166113da565b60068160028110610af4575f80fd5b0154905081565b610b036112f0565b475f819003610b255760405163162908e360e11b815260040160405180910390fd5b610b2e81611429565b6040518181527f61834e9161bcb1e4b0b8bf1d8497dfce4358169ec3efa06ceababb5900694f1b9060200160405180910390a150565b610b6c6112f0565b60055463ffffffff1615610b935760405163a3b8915f60e01b815260040160405180910390fd5b6005805463ffffffff431663ffffffff19909116179055600a805460ff60b01b1916600160b01b1790556040517fae0605e1224f1db54698fcd818991c4cc798fb1083fe29fd0e208a4c2fccce0f905f90a1565b610bef6112f0565b6001600160a01b0382165f81815260046020908152604091829020805460ff191685151590811790915591519182527f9f1eaee9ad9cb68284f0dc523aa42c465ed33b53f8da7fc7294ccea47358bbdf910160405180910390a25050565b5f61081a338484610f93565b610c616112f0565b5f610c6c8486611d00565b90505f610c798385611d00565b90506101f461ffff83161180610c9457506101f461ffff8216115b15610cb2576040516358d620b360e01b815260040160405180910390fd5b6005805461ffff858116600160f01b026001600160f01b03888316600160d01b0216600163ffff000160d01b038a8416600160e01b810261ffff60e01b19958e16600160c01b81029690961665ffff0000ffff60c01b1990971696909617959095171617179092556040805192835260208301919091527fc8f6ebed6f64bd25f0aed0b6507ae982cddfd23874ad542be24905c9412a4a16910160405180910390a16040805161ffff8087168252851660208201527f52357d2b6ee817f5d57183c13530148906a8ec8b5be2fc82da16afbd8a045072910160405180910390a1505050505050565b610da26112f0565b6001600160a01b038116610dc95760405163e6c4247b60e01b815260040160405180910390fd5b600a80546001600160a01b039081165f90815260046020526040808220805460ff1990811690915584546001600160a01b0319169386169384179094558282528082208054909416600117909355915190917fbf86feedee5b30c30a8243bd21deebb704d141478d39b1be04fe5ee739f214e791a250565b6005545f9061078b9061ffff600160f01b8204811691600160d01b900416611d00565b6005545f9061078b9061ffff600160e01b8204811691600160c01b900416611d00565b610e8f6112f0565b6001600160a01b038116610eb65760405163e6c4247b60e01b815260040160405180910390fd5b60058054640100000000600160c01b0319166401000000006001600160a01b038416908102919091179091556040517fedf1a035d265f6321083031b40acf4e5e06cd3e2e2025192fd308409b13b44c6905f90a250565b610f156112f0565b6001546001600160a01b0390811690821603610f875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610f90816113da565b50565b5f6001600160a01b038416610fbb57604051630b07e54560e11b815260040160405180910390fd5b6001600160a01b038316610fe257604051633a954ecd60e21b815260040160405180910390fd5b815f036110025760405163162908e360e11b815260040160405180910390fd5b600a54600160a01b900460ff16156110265761101f8484846114b5565b905061081a565b6001600160a01b0384165f9081526004602052604090205460ff168061106357506001600160a01b0383165f9081526004602052604090205460ff165b1561112d57600954821015801561109157506001600160a01b0383165f9081526004602052604090205460ff165b156110bb5760055460088054600160d01b90920461ffff1661ffff19909216919091179055611122565b7f0000000000000000000000004dc11211b443ee24326c2f4dad4c72bcebe215886001600160a01b0316836001600160a01b031614801561111257506001600160a01b0384165f9081526002602052604090205482115b156111225761101f8385846114b5565b61101f8484846114b5565b600a54600160b01b900460ff166111575760405163a3b8915f60e01b815260040160405180910390fd5b6001600160a01b0384165f908152600260205260408120805484929061117e908490611cbb565b909155508290506001600160a01b037f0000000000000000000000004dc11211b443ee24326c2f4dad4c72bcebe215888116908616036111c9576111c28584611568565b905061126a565b60055460085461ffff600160f01b90920482169116106111ed57600191505061081a565b7f0000000000000000000000004dc11211b443ee24326c2f4dad4c72bcebe215886001600160a01b0316846001600160a01b03160361126a57600a54600160a81b900460ff168015611250575060095460075460065461124d9190611d36565b10155b1561125d5761125d611349565b611267858461160e565b90505b6001600160a01b0384165f9081526002602052604081208054839290611291908490611d36565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112dd91815260200190565b60405180910390a3506001949350505050565b5f546001600160a01b03163314610ac65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610f7e565b6006546007545f61135a8284611d36565b90505f611368600284611d49565b90505f6113758284611cbb565b90505f61138182611669565b90505f8261138f8584611ca4565b6113999190611d49565b90505f6113a68284611cbb565b905080156113b7576113b781611429565b81156113c7576113c78583611814565b5f60068190556007555050505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600a546040515f916001600160a01b03169083908381818185875af1925050503d805f8114611473576040519150601f19603f3d011682016040523d82523d5f602084013e611478565b606091505b50509050806114b1576040518281527ff52ba60a0c4a09559a9f01ce57d52c9fc28936995ea9de3de131126384be569b90602001610a13565b5050565b6001600160a01b0383165f908152600260205260408120805483919083906114de908490611cbb565b90915550506001600160a01b0383165f908152600260205260408120805484929061150a908490611d36565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161155691815260200190565b60405180910390a35060019392505050565b5f806115726118e4565b90505f81611582576101f4611591565b600554600160c01b900461ffff165b90505f826115a05760646115af565b600554600160e01b900461ffff165b90505f6127106115c361ffff851688611ca4565b6115cd9190611d49565b90505f6127106115e161ffff851689611ca4565b6115eb9190611d49565b90506115f8888383611908565b6116029088611cbb565b98975050505050505050565b5f806116186118e4565b90505f81611628576101f4611637565b600554600160d01b900461ffff165b90505f826116465760646115af565b60055461ffff600160f01b9091041690505f6127106115c361ffff851688611ca4565b600a805460ff60a01b1916600160a01b1790556040805160028082526060820183525f928392919060208301908036833701905050905030815f815181106116b3576116b3611d22565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611723573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117479190611d68565b8160018151811061175a5761175a611d22565b60200260200101906001600160a01b031690816001600160a01b0316815250506117843084610704565b5060405163791ac94760e01b81524790737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117c69087905f90879030904290600401611d83565b5f604051808303815f87803b1580156117dd575f80fd5b505af11580156117ef573d5f803e3d5ffd5b5050505080476117ff9190611cbb565b600a805460ff60a01b19169055949350505050565b600a805460ff60a01b1916600160a01b17905560055460405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526401000000009091046001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990839060c40160606040518083038185885af11580156118ab573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118d09190611df4565b5050600a805460ff60a01b19169055505050565b6005545f9043906118fc90839063ffffffff16611e1f565b63ffffffff1610905090565b5f82600682015f82825461191c9190611d36565b9091555082905060066001015f8282546119369190611d36565b9091555061194690508284611d36565b305f90815260026020526040812080549293508392909190611969908490611d36565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a39392505050565b5f602080835283518060208501525f5b818110156119e1578581018301518582016040015282016119c5565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f90575f80fd5b5f8060408385031215611a26575f80fd5b8235611a3181611a01565b946020939093013593505050565b5f805f60608486031215611a51575f80fd5b8335611a5c81611a01565b92506020840135611a6c81611a01565b929592945050506040919091013590565b5f60208284031215611a8d575f80fd5b813561081a81611a01565b8015158114610f90575f80fd5b5f8060408385031215611ab6575f80fd5b8235611a3181611a98565b5f60208284031215611ad1575f80fd5b5035919050565b5f8060408385031215611ae9575f80fd5b8235611af481611a01565b91506020830135611b0481611a98565b809150509250929050565b803561ffff81168114611b20575f80fd5b919050565b5f805f8060808587031215611b38575f80fd5b611b4185611b0f565b9350611b4f60208601611b0f565b9250611b5d60408601611b0f565b9150611b6b60608601611b0f565b905092959194509250565b5f8060408385031215611b87575f80fd5b8235611b9281611a01565b91506020830135611b0481611a01565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611bf057815f1904821115611bd657611bd6611ba2565b80851615611be357918102915b93841c9390800290611bbb565b509250929050565b5f82611c065750600161076a565b81611c1257505f61076a565b8160018114611c285760028114611c3257611c4e565b600191505061076a565b60ff841115611c4357611c43611ba2565b50506001821b61076a565b5060208310610133831016604e8410600b8410161715611c71575081810a61076a565b611c7b8383611bb6565b805f1904821115611c8e57611c8e611ba2565b029392505050565b5f61081a60ff841683611bf8565b808202811582820484141761076a5761076a611ba2565b8181038181111561076a5761076a611ba2565b5f60208284031215611cde575f80fd5b5051919050565b5f60208284031215611cf5575f80fd5b815161081a81611a98565b61ffff818116838216019080821115611d1b57611d1b611ba2565b5092915050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561076a5761076a611ba2565b5f82611d6357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611d78575f80fd5b815161081a81611a01565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611dd35784516001600160a01b031683529383019391830191600101611dae565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611e06575f80fd5b8351925060208401519150604084015190509250925092565b63ffffffff818116838216019080821115611d1b57611d1b611ba256fea2646970667358221220d45bb1d561f634d690894883df2e404b5818ab022a293a92817f2a2793685b7a64736f6c63430008180033

Deployed Bytecode Sourcemap

4548:13507:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5806:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5806:50:0;;;;;;;;8144:94;;;;;;;;;;-1:-1:-1;8225:5:0;;;;;;;;;;;;-1:-1:-1;;;8225:5:0;;;;8144:94;;;;;;;:::i;8864:241::-;;;;;;;;;;-1:-1:-1;8864:241:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;8864:241:0;1205:187:1;7826:102:0;;;;;;;;;;;;;:::i;9243:405::-;;;;;;;;;;-1:-1:-1;9243:405:0;;;;;:::i;:::-;;:::i;7680:138::-;;;;;;;;;;;;;:::i;7936:94::-;;;;;;;;;;-1:-1:-1;7936:94:0;;5146:2;2000:36:1;;1988:2;1973:18;7936:94:0;1858:184:1;15401:450:0;;;;;;;;;;-1:-1:-1;15401:450:0;;;;;:::i;:::-;;:::i;:::-;;4988:43;;;;;;;;;;-1:-1:-1;4988:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12908:372;;;;;;;;;;-1:-1:-1;12908:372:0;;;;;:::i;:::-;;:::i;6120:40::-;;;;;;;;;;-1:-1:-1;6120:40:0;;;;-1:-1:-1;;;6120:40:0;;;;;;9113:122;;;;;;;;;;-1:-1:-1;9113:122:0;;;;;:::i;:::-;;:::i;5069:35::-;;;;;;;;;;-1:-1:-1;5069:35:0;;;;;;;-1:-1:-1;;;;;5069:35:0;;;;;;-1:-1:-1;;;;;3165:32:1;;;3147:51;;3135:2;3120:18;5069:35:0;3001:203:1;12026:75:0;;;;;;;;;;;;;:::i;8348:119::-;;;;;;;;;;-1:-1:-1;8348:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8441:18:0;8414:7;8441:18;;;:9;:18;;;;;;;8348:119;4042:97;;;;;;;;;;;;;:::i;6001:75::-;;;;;;;;;;-1:-1:-1;6001:75:0;;;;-1:-1:-1;;;;;6001:75:0;;;5600:41;;;;;;;;;;-1:-1:-1;5600:41:0;;;;;:::i;:::-;;:::i;15110:283::-;;;;;;;;;;;;;:::i;8246:94::-;;;;;;;;;;-1:-1:-1;8298:7:0;3880:6;-1:-1:-1;;;;;3880:6:0;8246:94;7826:102;8038:98;;;;;;;;;;-1:-1:-1;8121:7:0;;;;;;;;;;;;-1:-1:-1;;;8121:7:0;;;;8038:98;;17845:207;;;;;;;;;;;;;:::i;12109:173::-;;;;;;;;;;-1:-1:-1;12109:173:0;;;;;:::i;:::-;;:::i;5965:29::-;;;;;;;;;;;;;;;11193:177;;;;;;;;;;-1:-1:-1;11193:177:0;;;;;:::i;:::-;;:::i;13288:645::-;;;;;;;;;;-1:-1:-1;13288:645:0;;;;;:::i;:::-;;:::i;12290:353::-;;;;;;;;;;-1:-1:-1;12290:353:0;;;;;:::i;:::-;;:::i;5038:24::-;;;;;;;;;;-1:-1:-1;5038:24:0;;;;;;;;;;;4525:10:1;4513:23;;;4495:42;;4483:2;4468:18;5038:24:0;4351:192:1;8758:98:0;;;;;;;;;;;;;:::i;:::-;;;4722:6:1;4710:19;;;4692:38;;4680:2;4665:18;8758:98:0;4548:188:1;5648:26:0;;;;;;;;;;-1:-1:-1;5648:26:0;;;;;;;;8655:95;;;;;;;;;;;;;:::i;12651:249::-;;;;;;;;;;-1:-1:-1;12651:249:0;;;;;:::i;:::-;;:::i;8475:172::-;;;;;;;;;;-1:-1:-1;8475:172:0;;;;;:::i;:::-;-1:-1:-1;;;;;8611:19:0;;;8584:7;8611:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8475:172;4147:195;;;;;;;;;;-1:-1:-1;4147:195:0;;;;;:::i;:::-;;:::i;4590:90::-;;;;;;;;;;;;4637:42;4590:90;;6167:31;;;;;;;;;;-1:-1:-1;6167:31:0;;;;-1:-1:-1;;;6167:31:0;;;;;;8864:241;8993:10;8964:4;8981:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8981:32:0;;;;;;;;;;:41;;;9038:37;8964:4;;8981:32;;9038:37;;;;9016:6;160:25:1;;148:2;133:18;;14:177;9038:37:0;;;;;;;;-1:-1:-1;9093:4:0;8864:241;;;;;:::o;7826:102::-;7881:7;5783:15;5146:2;5783;:15;:::i;:::-;5771:28;;:8;:28;:::i;:::-;7901:19;;7826:102;:::o;9243:405::-;-1:-1:-1;;;;;9398:19:0;;9377:4;9398:19;;;:11;:19;;;;;;;;9418:10;9398:31;;;;;;;;-1:-1:-1;;9398:52:0;9394:193;;-1:-1:-1;;;;;9518:19:0;;;;;;:11;:19;;;;;;;;9538:10;9518:31;;;;;;;;:57;;9569:6;;9518:57;:::i;:::-;-1:-1:-1;;;;;9467:19:0;;;;;;:11;:19;;;;;;;;9487:10;9467:31;;;;;;;:108;9394:193;9604:36;9614:6;9622:9;9633:6;9604:9;:36::i;:::-;9597:43;;9243:405;;;;;;:::o;7680:138::-;7805:4;;-1:-1:-1;;;;;7805:4:0;7735:7;8441:18;;;:9;:18;;;;;;4719:42;8441:18;;;;5783:15;5146:2;5783;:15;:::i;:::-;5771:28;;:8;:28;:::i;:::-;7762:30;;;;:::i;:::-;:48;;;;:::i;15401:450::-;3766:13;:11;:13::i;:::-;-1:-1:-1;;;;;15475:28:0;::::1;15471:57;;15512:16;;-1:-1:-1::0;;;15512:16:0::1;;;;;;;;;;;15471:57;15557:30;::::0;-1:-1:-1;;;15557:30:0;;15581:4:::1;15557:30;::::0;::::1;3147:51:1::0;15539:15:0::1;::::0;-1:-1:-1;;;;;15557:15:0;::::1;::::0;::::1;::::0;3120:18:1;;15557:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15539:48;;15602:7;15613:1;15602:12:::0;15598:40:::1;;15623:15;;-1:-1:-1::0;;;15623:15:0::1;;;;;;;;;;;15598:40;15679:4;-1:-1:-1::0;;;;;15653:31:0;::::1;::::0;15649:85:::1;;15708:14;;-1:-1:-1::0;;;;;15701:21:0::1;15759:15;::::0;15744:40:::1;::::0;-1:-1:-1;;;15744:40:0;;-1:-1:-1;;;;;15759:15:0;;::::1;15744:40;::::0;::::1;7538:51:1::0;7605:18;;;7598:34;;;15744:14:0;;::::1;::::0;::::1;::::0;7511:18:1;;15744:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;15800:43:0::1;::::0;;-1:-1:-1;;;;;7556:32:1;;7538:51;;7620:2;7605:18;;7598:34;;;15800:43:0::1;::::0;7511:18:1;15800:43:0::1;;;;;;;;15460:391;15401:450:::0;:::o;12908:372::-;3766:13;:11;:13::i;:::-;5909:12:::1;13046:16;:37;13042:65;;;13092:15;;-1:-1:-1::0;;;13092:15:0::1;;;;;;;;;;;13042:65;13118:21;:38:::0;;-1:-1:-1;;;;13118:38:0::1;-1:-1:-1::0;;;13118:38:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;13167:13:::1;:32:::0;;;13215:57:::1;::::0;;8061:41:1;;;8133:2;8118:18;;8111:34;;;13215:57:0::1;::::0;8034:18:1;13215:57:0::1;7893:258:1::0;9113:122:0;9168:4;9192:35;9200:7;-1:-1:-1;;9192:7:0;:35::i;12026:75::-;3766:13;:11;:13::i;:::-;12082:11:::1;:9;:11::i;:::-;12026:75::o:0;4042:97::-;3766:13;:11;:13::i;:::-;4126:4:::1;::::0;4107:24:::1;::::0;-1:-1:-1;;;;;4126:4:0::1;4107:18;:24::i;5600:41::-:0;;;;;;;;;;;;;;;-1:-1:-1;5600:41:0;:::o;15110:283::-;3766:13;:11;:13::i;:::-;15197:21:::1;15168:26;15233:23:::0;;;15229:51:::1;;15265:15;;-1:-1:-1::0;;;15265:15:0::1;;;;;;;;;;;15229:51;15291:43;15315:18;15291:23;:43::i;:::-;15350:35;::::0;160:25:1;;;15350:35:0::1;::::0;148:2:1;133:18;15350:35:0::1;;;;;;;15157:236;15110:283::o:0;17845:207::-;3766:13;:11;:13::i;:::-;17902:10:::1;::::0;::::1;;:15:::0;17898:41:::1;;17926:13;;-1:-1:-1::0;;;17926:13:0::1;;;;;;;;;;;17898:41;17950:10;:33:::0;;::::1;17970:12;17950:33;-1:-1:-1::0;;17950:33:0;;::::1;;::::0;;17994:11:::1;:18:::0;;-1:-1:-1;;;;17994:18:0::1;-1:-1:-1::0;;;17994:18:0::1;::::0;;18028:16:::1;::::0;::::1;::::0;17950:10:::1;::::0;18028:16:::1;17845:207::o:0;12109:173::-;3766:13;:11;:13::i;:::-;-1:-1:-1;;;;;12195:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;;:28;;-1:-1:-1;;12195:28:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12239:35;;1345:41:1;;;12239:35:0::1;::::0;1318:18:1;12239:35:0::1;;;;;;;12109:173:::0;;:::o;11193:177::-;11298:4;11322:40;11332:10;11344:9;11355:6;11322:9;:40::i;13288:645::-;3766:13;:11;:13::i;:::-;13466:21:::1;13490:25;13504:11:::0;13490;:25:::1;:::i;:::-;13466:49:::0;-1:-1:-1;13526:22:0::1;13551:27;13566:12:::0;13551;:27:::1;:::i;:::-;13526:52:::0;-1:-1:-1;5450:3:0::1;13593:24;::::0;::::1;;::::0;:53:::1;;-1:-1:-1::0;5450:3:0::1;13621:25;::::0;::::1;;13593:53;13589:91;;;13668:12;;-1:-1:-1::0;;;13668:12:0::1;;;;;;;;;;;13589:91;13691:7;:21:::0;;::::1;13788:22:::0;;::::1;-1:-1:-1::0;;;13788:22:0::1;-1:-1:-1::0;;;;;13754:23:0;;::::1;-1:-1:-1::0;;;13754:23:0::1;13788:22:::0;-1:-1:-1;;;;;13723:20:0;;::::1;-1:-1:-1::0;;;13723:20:0;::::1;-1:-1:-1::0;;;;13691:21:0;;::::1;-1:-1:-1::0;;;13691:21:0;::::1;13723:20:::0;;;;-1:-1:-1;;;;13723:20:0;;;;;;;;;;::::1;13788:22:::0;;::::1;::::0;;;13826:40:::1;::::0;;8524:34:1;;;8589:2;8574:18;;8567:43;;;;13826:40:0::1;::::0;8472:18:1;13826:40:0::1;;;;;;;13882:43;::::0;;8509:6:1;8542:15;;;8524:34;;8594:15;;8589:2;8574:18;;8567:43;13882::0::1;::::0;8472:18:1;13882:43:0::1;;;;;;;13455:478;;13288:645:::0;;;;:::o;12290:353::-;3766:13;:11;:13::i;:::-;-1:-1:-1;;;;;12377:32:0;::::1;12373:61;;12418:16;;-1:-1:-1::0;;;12418:16:0::1;;;;;;;;;;;12373:61;12457:15;::::0;;-1:-1:-1;;;;;12457:15:0;;::::1;12476:5;12445:28:::0;;;:11:::1;:28;::::0;;;;;:36;;-1:-1:-1;;12445:36:0;;::::1;::::0;;;12492;;-1:-1:-1;;;;;;12492:36:0::1;::::0;;::::1;::::0;;::::1;::::0;;;12539:31;;;;;;:38;;;;::::1;-1:-1:-1::0;12539:38:0::1;::::0;;;12593:42;;12492:36;;12593:42:::1;::::0;::::1;12290:353:::0;:::o;8758:98::-;8841:7;;8804:6;;8830:18;;8841:7;-1:-1:-1;;;8841:7:0;;;;;-1:-1:-1;;;8830:8:0;;;:18;:::i;8655:95::-;8736:6;;8700;;8726:16;;8736:6;-1:-1:-1;;;8736:6:0;;;;;-1:-1:-1;;;8726:7:0;;;:16;:::i;12651:249::-;3766:13;:11;:13::i;:::-;-1:-1:-1;;;;;12740:30:0;::::1;12736:59;;12779:16;;-1:-1:-1::0;;;12779:16:0::1;;;;;;;;;;;12736:59;12806:13;:32:::0;;-1:-1:-1;;;;;;12806:32:0::1;::::0;-1:-1:-1;;;;;12806:32:0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;12854:38:::1;::::0;::::1;::::0;-1:-1:-1;;12854:38:0::1;12651:249:::0;:::o;4147:195::-;3766:13;:11;:13::i;:::-;4248:4:::1;::::0;-1:-1:-1;;;;;4248:4:0;;::::1;4236:16:::0;;::::1;::::0;4228:67:::1;;;::::0;-1:-1:-1;;;4228:67:0;;8823:2:1;4228:67:0::1;::::0;::::1;8805:21:1::0;8862:2;8842:18;;;8835:30;8901:34;8881:18;;;8874:62;-1:-1:-1;;;8952:18:1;;;8945:36;8998:19;;4228:67:0::1;;;;;;;;;4306:28;4325:8;4306:18;:28::i;:::-;4147:195:::0;:::o;9656:1529::-;9777:4;-1:-1:-1;;;;;9798:20:0;;9794:58;;9827:25;;-1:-1:-1;;;9827:25:0;;;;;;;;;;;9794:58;-1:-1:-1;;;;;9867:23:0;;9863:59;;9899:23;;-1:-1:-1;;;9899:23:0;;;;;;;;;;;9863:59;9937:6;9947:1;9937:11;9933:39;;9957:15;;-1:-1:-1;;;9957:15:0;;;;;;;;;;;9933:39;9987:17;;-1:-1:-1;;;9987:17:0;;;;9983:98;;;10028:41;10043:6;10051:9;10062:6;10028:14;:41::i;:::-;10021:48;;;;9983:98;-1:-1:-1;;;;;10095:19:0;;;;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10118:22:0;;;;;;:11;:22;;;;;;;;10095:45;10091:390;;;10171:13;;10161:6;:23;;:49;;;;-1:-1:-1;;;;;;10188:22:0;;;;;;:11;:22;;;;;;;;10161:49;10157:250;;;10242:8;;10231;:19;;-1:-1:-1;;;10242:8:0;;;;;-1:-1:-1;;10231:19:0;;;;;;;;;10157:250;;;10288:4;-1:-1:-1;;;;;10275:17:0;:9;-1:-1:-1;;;;;10275:17:0;;:47;;;;-1:-1:-1;;;;;;10305:17:0;;;;;;:9;:17;;;;;;10296:26;;10275:47;10272:135;;;10350:41;10365:9;10376:6;10384;10350:14;:41::i;10272:135::-;10428:41;10443:6;10451:9;10462:6;10428:14;:41::i;10091:390::-;10496:11;;-1:-1:-1;;;10496:11:0;;;;10491:38;;10516:13;;-1:-1:-1;;;10516:13:0;;;;;;;;;;;10491:38;-1:-1:-1;;;;;10540:17:0;;;;;;:9;:17;;;;;:27;;10561:6;;10540:17;:27;;10561:6;;10540:27;:::i;:::-;;;;-1:-1:-1;10600:6:0;;-1:-1:-1;;;;;;10631:4:0;10621:14;;;;;;10617:437;;10666:30;10681:6;10689;10666:14;:30::i;:::-;10652:44;;10617:437;;;10730:7;;10718:8;;10730:7;-1:-1:-1;;;10730:7:0;;;;;10718:8;;:19;10714:340;;10761:4;10754:11;;;;;10714:340;10800:4;-1:-1:-1;;;;;10787:17:0;:9;-1:-1:-1;;;;;10787:17:0;;10783:271;;10825:21;;-1:-1:-1;;;10825:21:0;;;;:96;;;;-1:-1:-1;10908:13:0;;10887:17;;:14;10867:17;:37;;10887:17;10867:37;:::i;:::-;:54;;10825:96;10821:162;;;10956:11;:9;:11::i;:::-;11011:31;11027:6;11035;11011:15;:31::i;:::-;10997:45;;10783:271;-1:-1:-1;;;;;11064:20:0;;;;;;:9;:20;;;;;:35;;11088:11;;11064:20;:35;;11088:11;;11064:35;:::i;:::-;;;;;;;;11132:9;-1:-1:-1;;;;;11115:40:0;11124:6;-1:-1:-1;;;;;11115:40:0;;11143:11;11115:40;;;;160:25:1;;148:2;133:18;;14:177;11115:40:0;;;;;;;;-1:-1:-1;11173:4:0;;9656:1529;-1:-1:-1;;;;9656:1529:0:o;3902:132::-;3853:7;3880:6;-1:-1:-1;;;;;3880:6:0;3260:10;3966:23;3958:68;;;;-1:-1:-1;;;3958:68:0;;9492:2:1;3958:68:0;;;9474:21:1;;;9511:18;;;9504:30;9570:34;9550:18;;;9543:62;9622:18;;3958:68:0;9290:356:1;17085:752:0;17143:14;:17;17189;;17125:15;17236:17;17189;17143;17236;:::i;:::-;17217:36;-1:-1:-1;17264:26:0;17293:11;17303:1;17293:7;:11;:::i;:::-;17264:40;-1:-1:-1;17315:20:0;17338:29;17264:40;17338:8;:29;:::i;:::-;17315:52;;17380:19;17402:31;17420:12;17402:17;:31::i;:::-;17380:53;-1:-1:-1;17446:23:0;17522:12;17473:32;17487:18;17380:53;17473:32;:::i;:::-;17472:62;;;;:::i;:::-;17446:88;-1:-1:-1;17545:16:0;17564:29;17446:88;17564:11;:29;:::i;:::-;17545:48;-1:-1:-1;17610:13:0;;17606:79;;17640:33;17664:8;17640:23;:33::i;:::-;17699:20;;17695:103;;17736:50;17750:18;17770:15;17736:13;:50::i;:::-;17815:14;;-1:-1:-1;;;;;17114:723:0;;;;;;;;17085:752::o;4350:191::-;4424:16;4443:6;;-1:-1:-1;;;;;4460:17:0;;;-1:-1:-1;;;;;;4460:17:0;;;;;;4493:40;;4443:6;;;;;;;4493:40;;4424:16;4493:40;4413:128;4350:191;:::o;15859:271::-;15946:15;;:39;;15928:12;;-1:-1:-1;;;;;15946:15:0;;15974:6;;15928:12;15946:39;15928:12;15946:39;15974:6;15946:15;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15927:58;;;16001:7;15996:127;;16095:16;;160:25:1;;;16095:16:0;;148:2:1;133:18;16095:16:0;14:177:1;15996:127:0;15916:214;15859:271;:::o;11378:292::-;-1:-1:-1;;;;;11521:17:0;;11504:4;11521:17;;;:9;:17;;;;;:27;;11542:6;;11521:17;11504:4;;11521:27;;11542:6;;11521:27;:::i;:::-;;;;-1:-1:-1;;;;;;;11559:20:0;;;;;;:9;:20;;;;;:30;;11583:6;;11559:20;:30;;11583:6;;11559:30;:::i;:::-;;;;;;;;11622:9;-1:-1:-1;;;;;11605:35:0;11614:6;-1:-1:-1;;;;;11605:35:0;;11633:6;11605:35;;;;160:25:1;;148:2;133:18;;14:177;11605:35:0;;;;;;;;-1:-1:-1;11658:4:0;11378:292;;;;;:::o;13942:475::-;14040:7;14060:18;14081:16;:14;:16::i;:::-;14060:37;;14108:12;14123:13;:42;;5247:3;14123:42;;;14139:7;;-1:-1:-1;;;14139:7:0;;;;14123:42;14108:57;;14176:12;14191:13;:40;;5353:3;14191:40;;;14207:6;;-1:-1:-1;;;14207:6:0;;;;14191:40;14176:55;-1:-1:-1;14242:14:0;5719:5;14260:14;14259:30;14260:14;;:6;:14;:::i;:::-;14259:30;;;;:::i;:::-;14242:47;-1:-1:-1;14300:14:0;5719:5;14318:14;14317:30;14318:14;;:6;:14;:::i;:::-;14317:30;;;;:::i;:::-;14300:47;;14374:35;14386:6;14394;14402;14374:11;:35::i;:::-;14365:44;;:6;:44;:::i;:::-;14358:51;13942:475;-1:-1:-1;;;;;;;;13942:475:0:o;14425:484::-;14524:7;14544:18;14565:16;:14;:16::i;:::-;14544:37;;14592:13;14608;:44;;5301:3;14608:44;;;14624:8;;-1:-1:-1;;;14624:8:0;;;;14608:44;14592:60;;14663:13;14679;:42;;5406:3;14679:42;;;14695:7;;;-1:-1:-1;;;14695:7:0;;;;14663:58;-1:-1:-1;14732:14:0;5719:5;14750:15;14749:31;14750:15;;:6;:15;:::i;16171:576::-;7108:17;:24;;-1:-1:-1;;;;7108:24:0;-1:-1:-1;;;7108:24:0;;;16308:16:::1;::::0;;16322:1:::1;16308:16:::0;;;;;::::1;::::0;;-1:-1:-1;;;;16308:16:0;16322:1;16308:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16308:16:0::1;16284:40;;16353:4;16335;16340:1;16335:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;16335:23:0::1;;;-1:-1:-1::0;;;;;16335:23:0::1;;;::::0;::::1;4637:42;-1:-1:-1::0;;;;;16379:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16369:4;16374:1;16369:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;16369:23:0::1;;;-1:-1:-1::0;;;;;16369:23:0::1;;;::::0;::::1;16403:35;16419:4;16426:11;16403:7;:35::i;:::-;-1:-1:-1::0;16501:187:0::1;::::0;-1:-1:-1;;;16501:187:0;;16469:21:::1;::::0;4637:42:::1;::::0;16501:57:::1;::::0;:187:::1;::::0;16573:11;;16449:17:::1;::::0;16615:4;;16642::::1;::::0;16662:15:::1;::::0;16501:187:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16730:9;16706:21;:33;;;;:::i;:::-;7155:17:::0;:25;;-1:-1:-1;;;;7155:25:0;;;16699:40;16171:576;-1:-1:-1;;;;16171:576:0:o;16755:322::-;7108:17;:24;;-1:-1:-1;;;;7108:24:0;-1:-1:-1;;;7108:24:0;;;17015:13:::1;::::0;16874:195:::1;::::0;-1:-1:-1;;;16874:195:0;;16937:4:::1;17015:13;16874:195:::0;::::1;11797:34:1::0;11847:18;;;11840:34;;;-1:-1:-1;11890:18:1;;;11883:34;;;11933:18;;;11926:34;17015:13:0;;;::::1;-1:-1:-1::0;;;;;17015:13:0::1;11976:19:1::0;;;11969:44;17043:15:0::1;12029:19:1::0;;;12022:35;4637:42:0::1;::::0;16874:22:::1;::::0;16904:9;;11731:19:1;;16874:195:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;7155:17:0;:25;;-1:-1:-1;;;;7155:25:0;;;-1:-1:-1;;;16755:322:0:o;14917:185::-;15051:10;;14965:4;;15082:12;;15051:28;;14965:4;;15051:10;;:28;:::i;:::-;:43;;;15044:50;;14917:185;:::o;11678:340::-;11790:11;11835:2;11814:14;11790:11;11814:17;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;11869:2:0;;-1:-1:-1;11848:14:0;11863:1;11848:17;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;11888:7:0;;-1:-1:-1;11893:2:0;11888;:7;:::i;:::-;11924:4;11906:24;;;;:9;:24;;;;;:31;;11882:13;;-1:-1:-1;11882:13:0;;11906:24;;;:31;;11882:13;;11906:31;:::i;:::-;;;;-1:-1:-1;;11953:36:0;;160:25:1;;;11978:4:0;;-1:-1:-1;;;;;11953:36:0;;;;;148:2:1;133:18;11953:36:0;;;;;;;11678:340;;;;;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:260::-;2119:6;2172:2;2160:9;2151:7;2147:23;2143:32;2140:52;;;2188:1;2185;2178:12;2140:52;2227:9;2214:23;2246:31;2271:5;2246:31;:::i;2564:118::-;2650:5;2643:13;2636:21;2629:5;2626:32;2616:60;;2672:1;2669;2662:12;2687:309;2752:6;2760;2813:2;2801:9;2792:7;2788:23;2784:32;2781:52;;;2829:1;2826;2819:12;2781:52;2868:9;2855:23;2887:28;2909:5;2887:28;:::i;3209:180::-;3268:6;3321:2;3309:9;3300:7;3296:23;3292:32;3289:52;;;3337:1;3334;3327:12;3289:52;-1:-1:-1;3360:23:1;;3209:180;-1:-1:-1;3209:180:1:o;3394:382::-;3459:6;3467;3520:2;3508:9;3499:7;3495:23;3491:32;3488:52;;;3536:1;3533;3526:12;3488:52;3575:9;3562:23;3594:31;3619:5;3594:31;:::i;:::-;3644:5;-1:-1:-1;3701:2:1;3686:18;;3673:32;3714:30;3673:32;3714:30;:::i;:::-;3763:7;3753:17;;;3394:382;;;;;:::o;3781:159::-;3848:20;;3908:6;3897:18;;3887:29;;3877:57;;3930:1;3927;3920:12;3877:57;3781:159;;;:::o;3945:401::-;4027:6;4035;4043;4051;4104:3;4092:9;4083:7;4079:23;4075:33;4072:53;;;4121:1;4118;4111:12;4072:53;4144:28;4162:9;4144:28;:::i;:::-;4134:38;;4191:37;4224:2;4213:9;4209:18;4191:37;:::i;:::-;4181:47;;4247:37;4280:2;4269:9;4265:18;4247:37;:::i;:::-;4237:47;;4303:37;4336:2;4325:9;4321:18;4303:37;:::i;:::-;4293:47;;3945:401;;;;;;;:::o;4741:388::-;4809:6;4817;4870:2;4858:9;4849:7;4845:23;4841:32;4838:52;;;4886:1;4883;4876:12;4838:52;4925:9;4912:23;4944:31;4969:5;4944:31;:::i;:::-;4994:5;-1:-1:-1;5051:2:1;5036:18;;5023:32;5064:33;5023:32;5064:33;:::i;5360:127::-;5421:10;5416:3;5412:20;5409:1;5402:31;5452:4;5449:1;5442:15;5476:4;5473:1;5466:15;5492:416;5581:1;5618:5;5581:1;5632:270;5653:7;5643:8;5640:21;5632:270;;;5712:4;5708:1;5704:6;5700:17;5694:4;5691:27;5688:53;;;5721:18;;:::i;:::-;5771:7;5761:8;5757:22;5754:55;;;5791:16;;;;5754:55;5870:22;;;;5830:15;;;;5632:270;;;5636:3;5492:416;;;;;:::o;5913:806::-;5962:5;5992:8;5982:80;;-1:-1:-1;6033:1:1;6047:5;;5982:80;6081:4;6071:76;;-1:-1:-1;6118:1:1;6132:5;;6071:76;6163:4;6181:1;6176:59;;;;6249:1;6244:130;;;;6156:218;;6176:59;6206:1;6197:10;;6220:5;;;6244:130;6281:3;6271:8;6268:17;6265:43;;;6288:18;;:::i;:::-;-1:-1:-1;;6344:1:1;6330:16;;6359:5;;6156:218;;6458:2;6448:8;6445:16;6439:3;6433:4;6430:13;6426:36;6420:2;6410:8;6407:16;6402:2;6396:4;6393:12;6389:35;6386:77;6383:159;;;-1:-1:-1;6495:19:1;;;6527:5;;6383:159;6574:34;6599:8;6593:4;6574:34;:::i;:::-;6644:6;6640:1;6636:6;6632:19;6623:7;6620:32;6617:58;;;6655:18;;:::i;:::-;6693:20;;5913:806;-1:-1:-1;;;5913:806:1:o;6724:140::-;6782:5;6811:47;6852:4;6842:8;6838:19;6832:4;6811:47;:::i;6869:168::-;6942:9;;;6973;;6990:15;;;6984:22;;6970:37;6960:71;;7011:18;;:::i;7042:128::-;7109:9;;;7130:11;;;7127:37;;;7144:18;;:::i;7175:184::-;7245:6;7298:2;7286:9;7277:7;7273:23;7269:32;7266:52;;;7314:1;7311;7304:12;7266:52;-1:-1:-1;7337:16:1;;7175:184;-1:-1:-1;7175:184:1:o;7643:245::-;7710:6;7763:2;7751:9;7742:7;7738:23;7734:32;7731:52;;;7779:1;7776;7769:12;7731:52;7811:9;7805:16;7830:28;7852:5;7830:28;:::i;8156:168::-;8223:6;8249:10;;;8261;;;8245:27;;8284:11;;;8281:37;;;8298:18;;:::i;:::-;8281:37;8156:168;;;;:::o;9028:127::-;9089:10;9084:3;9080:20;9077:1;9070:31;9120:4;9117:1;9110:15;9144:4;9141:1;9134:15;9160:125;9225:9;;;9246:10;;;9243:36;;;9259:18;;:::i;9651:217::-;9691:1;9717;9707:132;;9761:10;9756:3;9752:20;9749:1;9742:31;9796:4;9793:1;9786:15;9824:4;9821:1;9814:15;9707:132;-1:-1:-1;9853:9:1;;9651:217::o;10215:251::-;10285:6;10338:2;10326:9;10317:7;10313:23;10309:32;10306:52;;;10354:1;10351;10344:12;10306:52;10386:9;10380:16;10405:31;10430:5;10405:31;:::i;10471:980::-;10733:4;10781:3;10770:9;10766:19;10812:6;10801:9;10794:25;10838:2;10876:6;10871:2;10860:9;10856:18;10849:34;10919:3;10914:2;10903:9;10899:18;10892:31;10943:6;10978;10972:13;11009:6;11001;10994:22;11047:3;11036:9;11032:19;11025:26;;11086:2;11078:6;11074:15;11060:29;;11107:1;11117:195;11131:6;11128:1;11125:13;11117:195;;;11196:13;;-1:-1:-1;;;;;11192:39:1;11180:52;;11287:15;;;;11252:12;;;;11228:1;11146:9;11117:195;;;-1:-1:-1;;;;;;;11368:32:1;;;;11363:2;11348:18;;11341:60;-1:-1:-1;;;11432:3:1;11417:19;11410:35;11329:3;10471:980;-1:-1:-1;;;10471:980:1:o;12068:306::-;12156:6;12164;12172;12225:2;12213:9;12204:7;12200:23;12196:32;12193:52;;;12241:1;12238;12231:12;12193:52;12270:9;12264:16;12254:26;;12320:2;12309:9;12305:18;12299:25;12289:35;;12364:2;12353:9;12349:18;12343:25;12333:35;;12068:306;;;;;:::o;12379:172::-;12446:10;12476;;;12488;;;12472:27;;12511:11;;;12508:37;;;12525:18;;:::i

Swarm Source

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