ETH Price: $3,148.69 (+0.92%)
Gas: 2 Gwei

Token

Underworld (Hades)
 

Overview

Max Total Supply

6,666,666 Hades

Holders

185

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
bartbaker.eth
Balance
8,691.533785187080254958 Hades

Value
$0.00
0x2f4e6d42ff6a68497656d8788ea2bcc7d04658b1
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:
Hades

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-21
*/

/**

https://medium.com/@HadesUnderworld/hades-has-awoken-18bfe636da49

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.15;

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

contract Hades is Context, IERC20, Ownable {
    string private constant _name = "Underworld";
    string private constant _symbol = "Hades";
    uint8 private constant _decimals = 18;

    address payable public marketingWalletAddress =
        payable(0x6f9753730fF956D2cdf66A6Bd69145f7a9fb633F);
    address payable private constant initialLpReceiver =
        payable(0x1D6eE36D23012660DfFd470e9142736E7d3F3C77);

    mapping(address => uint256) private balances;
    mapping(address => mapping(address => uint256)) private allowances;

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isMarketPair;
    mapping(address => bool) public isEarlyBuyer;
    mapping(address => bool) public isTxLimitExempt;
    mapping(address => bool) public isWalletLimitExempt;

    uint256 public buyTax = 666;
    uint256 public sellTax = 666;

    uint256 public lpShare = 200;
    uint256 public marketingShare = 366;
    uint256 public autoBurnShare = 100;

    uint256 private constant _totalSupply = 6666666 * 10**_decimals;
    uint256 public swapThreshold = 1000 * 10**_decimals;
    uint256 public maxTxAmount = 33333 * 10**_decimals;
    uint256 public walletMax = 66666 * 10**_decimals;

    IDexRouter public immutable dexRouter;
    address public lpPair;

    bool private isInSwap;
    bool public swapEnabled = true;
    bool public swapByLimitOnly = false;
    bool public launched = false;
    bool public checkWalletLimit = true;
    bool public snipeBlockExpired = false;

    uint256 public launchBlock = 0;
    uint256 public snipeBlockAmount = 0;
    uint256 public sellBlockAmount = 0;

    event SwapSettingsUpdated(
        bool swapEnabled_,
        uint256 swapThreshold_,
        bool swapByLimitOnly_
    );
    event SwapTokensForETH(uint256 amountIn, address[] path);
    event AccountWhitelisted(
        address account,
        bool feeExempt,
        bool walletLimitExempt,
        bool txLimitExempt
    );
    event RouterVersionChanged(address newRouterAddress);
    event TaxesChanged(uint256 newBuyTax, uint256 newSellTax);
    event TaxDistributionChanged(
        uint256 newLpShare,
        uint256 newMarketingShare,
        uint256 newAutoBurnShare
    );
    event MarketingWalletChanged(address marketingWalletAddress_);
    event EarlyBuyerUpdated(address account, bool isEarlyBuyer_);
    event MarketPairUpdated(address account, bool isMarketPair_);
    event WalletLimitChanged(uint256 walletMax_);
    event MaxTxAmountChanged(uint256 maxTxAmount_);
    event MaxWalletCheckChanged(bool checkWalletLimit_);

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

    constructor() payable {
        dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(marketingWalletAddress)] = true;
        isExcludedFromFee[address(initialLpReceiver)] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(marketingWalletAddress)] = true;
        isTxLimitExempt[address(initialLpReceiver)] = true;
        isTxLimitExempt[address(dexRouter)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[address(marketingWalletAddress)] = true;
        isWalletLimitExempt[address(initialLpReceiver)] = true;
        isWalletLimitExempt[address(dexRouter)] = true;

        allowances[address(this)][address(dexRouter)] = _totalSupply;
        balances[address(this)] = 4889333 * (10 ** decimals());
        emit Transfer(address(0), address(this), balanceOf(address(this)));
        balances[initialLpReceiver] = _totalSupply - balanceOf(address(this));
        emit Transfer(address(0), initialLpReceiver, balanceOf(initialLpReceiver));
    }

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

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

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

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(address(0xdead));
    }

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            allowances[_msgSender()][spender] - subtractedValue
        );
        return true;
    }

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

    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 recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, 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()] - amount
        );
        return true;
    }

    function setIsEarlyBuyer(address account, bool isEarlyBuyer_)
        public
        onlyOwner
    {
        isEarlyBuyer[account] = isEarlyBuyer_;
        emit EarlyBuyerUpdated(account, isEarlyBuyer_);
    }

    function massSetIsEarlyBuyer(address[] calldata accounts, bool isEarlyBuyer_)
        public
        onlyOwner
    {
        for(uint256 i = 0; i < accounts.length; i++){
            isEarlyBuyer[accounts[i]] = isEarlyBuyer_;
            emit EarlyBuyerUpdated(accounts[i], isEarlyBuyer_);
        }
    }

    function setMarketPairStatus(address account, bool isMarketPair_)
        public
        onlyOwner
    {
        isMarketPair[account] = isMarketPair_;
        emit MarketPairUpdated(account, isMarketPair_);
    }

    function setTaxes(uint256 newBuyTax, uint256 newSellTax)
        external
        onlyOwner
    {
        require(newBuyTax <= 3000, "Cannot exceed 30%");
        require(newSellTax <= 3000, "Cannot exceed 30%");
        buyTax = newBuyTax;
        sellTax = newSellTax;
        emit TaxesChanged(newBuyTax, newSellTax);
    }

    function setTaxDistribution(
        uint256 newLpShare,
        uint256 newMarketingShare,
        uint256 newAutoBurnShare
    ) external onlyOwner {
        lpShare = newLpShare;
        marketingShare = newMarketingShare;
        autoBurnShare = newAutoBurnShare;
        emit TaxDistributionChanged(
            newLpShare,
            newMarketingShare,
            newAutoBurnShare
        );
    }

    function setMaxTxAmount(uint256 maxTxAmount_) external onlyOwner {
        require(maxTxAmount_ >= totalSupply() * 5 / 1000);
        maxTxAmount = maxTxAmount_;
        emit MaxTxAmountChanged(maxTxAmount_);
    }

    function setWalletLimit(uint256 walletMax_) external onlyOwner {
        require(walletMax_ >= totalSupply() * 1 / 100);
        walletMax = walletMax_;
        emit WalletLimitChanged(walletMax_);
    }

    function enableDisableWalletLimit(bool checkWalletLimit_)
        external
        onlyOwner
    {
        checkWalletLimit = checkWalletLimit_;
        emit MaxWalletCheckChanged(checkWalletLimit_);
    }

    function whitelistAccount(
        address account,
        bool feeExempt,
        bool walletLimitExempt,
        bool txLimitExempt
    ) public onlyOwner {
        isExcludedFromFee[account] = feeExempt;
        isWalletLimitExempt[account] = walletLimitExempt;
        isTxLimitExempt[account] = txLimitExempt;
        emit AccountWhitelisted(
            account,
            feeExempt,
            walletLimitExempt,
            txLimitExempt
        );
    }

    function updateSwapSettings(
        bool swapEnabled_,
        uint256 swapThreshold_,
        bool swapByLimitOnly_
    ) public onlyOwner {
        swapEnabled = swapEnabled_;
        swapThreshold = swapThreshold_;
        swapByLimitOnly = swapByLimitOnly_;
        emit SwapSettingsUpdated(
            swapEnabled_,
            swapThreshold_,
            swapByLimitOnly_
        );
    }

    function setMarketingWalletAddress(address marketingWalletAddress_)
        external
        onlyOwner
    {
        require(
            marketingWalletAddress_ != address(0),
            "New address cannot be zero address"
        );
        marketingWalletAddress = payable(marketingWalletAddress_);
        emit MarketingWalletChanged(marketingWalletAddress_);
    }

    function transferToAddressETH(address payable recipient, uint256 amount)
        private
    {
        bool success;
        (success, ) = address(recipient).call{value: amount}("");
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        if (isInSwap) {
            return _basicTransfer(sender, recipient, amount);
        } else {
            require(
                sender != address(0),
                "ERC20: transfer from the zero address"
            );
            require(
                recipient != address(0),
                "ERC20: transfer to the zero address"
            );
            require(
                !isEarlyBuyer[sender] && !isEarlyBuyer[recipient],
                "To/from address is blacklisted!"
            );

            if (!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(launched, "Not Launched.");
                if (isMarketPair[sender] || isMarketPair[recipient]) {
                    require(
                        amount <= maxTxAmount,
                        "Transfer amount exceeds the maxTxAmount."
                    );
                }
                if (!snipeBlockExpired) {
                    checkIfBot(sender, recipient);
                }
            }

            bool isTaxFree = ((!isMarketPair[sender] &&
                !isMarketPair[recipient]) ||
                isExcludedFromFee[sender] ||
                isExcludedFromFee[recipient]);

            if (
                !isTaxFree && !isMarketPair[sender] && swapEnabled && !isInSwap
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                bool overMinimumTokenBalance = contractTokenBalance >=
                    swapThreshold;
                if (overMinimumTokenBalance) {
                    if (swapByLimitOnly) contractTokenBalance = swapThreshold;
                    if(contractTokenBalance > swapThreshold * 20) contractTokenBalance = swapThreshold * 20;
                    swapAndLiquify(contractTokenBalance);
                }
            }

            balances[sender] = balances[sender] - amount;

            uint256 finalAmount = isTaxFree
                ? amount
                : takeFee(sender, recipient, amount);

            if (checkWalletLimit && !isWalletLimitExempt[recipient])
                require((balanceOf(recipient) + finalAmount) <= walletMax);

            balances[recipient] = balances[recipient] + finalAmount;

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function checkIfBot(address sender, address recipient) private {
        if ((block.number - launchBlock) > snipeBlockAmount) {
            snipeBlockExpired = true;
        } else if (sender != owner() && recipient != owner()) {
            if (!isMarketPair[sender] && sender != address(this)) {
                isEarlyBuyer[sender] = true;
            }
            if (!isMarketPair[recipient] && recipient != address(this)) {
                isEarlyBuyer[recipient] = true;
            }
        }
    }

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        uint256 totalShares = lpShare + marketingShare + autoBurnShare;
        uint256 tokensForBurn = (tAmount * autoBurnShare) / totalShares;
        uint256 tokensForLP = ((tAmount * lpShare) / totalShares) / 2;
        uint256 tokensForSwap = tAmount - tokensForLP - tokensForBurn;

        swapTokensForEth(tokensForSwap);

        uint256 amountReceived = address(this).balance;

        uint256 bnbShares = totalShares - autoBurnShare - (lpShare / 2);

        uint256 bnbForLiquidity = ((amountReceived * lpShare) / bnbShares) / 2;
        uint256 bnbForMarketing = amountReceived - bnbForLiquidity;

        if (bnbForMarketing > 0) {
            transferToAddressETH(marketingWalletAddress, bnbForMarketing);
        }

        if (autoBurnShare > 0) {
            _basicTransfer(address(this), address(0xdead), tokensForBurn);
        }

        if (bnbForLiquidity > 0 && tokensForLP > 0) {
            addLiquidity(tokensForLP, bnbForLiquidity);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0xdead),
            block.timestamp
        );
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeAmount = (amount * buyTax) / 10000;
        address feeReceiver = address(this);

        if (isEarlyBuyer[sender] || isEarlyBuyer[recipient]) {
            feeAmount = (amount * 9900) / 10000;
        } 
        else if (isMarketPair[recipient]) {
            // Early seller penalty
            if(launchBlock + sellBlockAmount > block.number){
                feeAmount = (amount * 9900) / 10000;
            } else {
                feeAmount = (amount * sellTax) / 10000;
            }
        }

        if (feeAmount > 0) {
            balances[feeReceiver] = balances[feeReceiver] + feeAmount;
            emit Transfer(sender, feeReceiver, feeAmount);
        }

        return amount - feeAmount;
    }

    function launch(uint256 _snipePenaltyBlocks, uint256 _sellPenaltyBlocks) external onlyOwner {
        require(!launched, "Trading is already active, cannot relaunch.");

        // create pair
        lpPair = IDexFactory(dexRouter.factory()).createPair(address(this),dexRouter.WETH());
        isMarketPair[address(lpPair)] = true;
        isWalletLimitExempt[address(lpPair)] = true;

        // add the liquidity

        require(address(this).balance > 0, "Must have ETH on contract to launch");

        require(balanceOf(address(this)) > 0, "Must have Tokens on contract to launch");

        _approve(address(this), address(dexRouter), balanceOf(address(this)));
        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(initialLpReceiver),
            block.timestamp
        );

        launched = true;
        launchBlock = block.number;
        snipeBlockAmount = _snipePenaltyBlocks;
        sellBlockAmount = _sellPenaltyBlocks;
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this) || !launched, "Can't withdraw native tokens while trading is active");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"feeExempt","type":"bool"},{"indexed":false,"internalType":"bool","name":"walletLimitExempt","type":"bool"},{"indexed":false,"internalType":"bool","name":"txLimitExempt","type":"bool"}],"name":"AccountWhitelisted","type":"event"},{"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":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isEarlyBuyer_","type":"bool"}],"name":"EarlyBuyerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isMarketPair_","type":"bool"}],"name":"MarketPairUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWalletAddress_","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTxAmount_","type":"uint256"}],"name":"MaxTxAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"checkWalletLimit_","type":"bool"}],"name":"MaxWalletCheckChanged","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":"address","name":"newRouterAddress","type":"address"}],"name":"RouterVersionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"swapEnabled_","type":"bool"},{"indexed":false,"internalType":"uint256","name":"swapThreshold_","type":"uint256"},{"indexed":false,"internalType":"bool","name":"swapByLimitOnly_","type":"bool"}],"name":"SwapSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newLpShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAutoBurnShare","type":"uint256"}],"name":"TaxDistributionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"TaxesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletMax_","type":"uint256"}],"name":"WalletLimitChanged","type":"event"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBurnShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"checkWalletLimit_","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isEarlyBuyer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snipePenaltyBlocks","type":"uint256"},{"internalType":"uint256","name":"_sellPenaltyBlocks","type":"uint256"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"isEarlyBuyer_","type":"bool"}],"name":"massSetIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBlockAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isEarlyBuyer_","type":"bool"}],"name":"setIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isMarketPair_","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWalletAddress_","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount_","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLpShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newAutoBurnShare","type":"uint256"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"walletMax_","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipeBlockAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snipeBlockExpired","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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":"bool","name":"swapEnabled_","type":"bool"},{"internalType":"uint256","name":"swapThreshold_","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly_","type":"bool"}],"name":"updateSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"feeExempt","type":"bool"},{"internalType":"bool","name":"walletLimitExempt","type":"bool"},{"internalType":"bool","name":"txLimitExempt","type":"bool"}],"name":"whitelistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600180546001600160a01b031916736f9753730ff956d2cdf66a6bd69145f7a9fb633f17905561029a6009819055600a90815560c8600b5561016e600c556064600d55620000559060129062000589565b62000063906103e8620005a1565b600e55620000746012600a62000589565b6200008290618235620005a1565b600f55620000936012600a62000589565b620000a2906201046a620005a1565b6010556011805464ffffffffff60a81b1916630100000160a81b1790556000601281905560138190556014819055620000d83390565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d608052600160046000620001536000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600490935281832080548516600190811790915580548216845282842080548616821790557f72561d5c342534b1deca11a33c1020fa14db18c1e4ac0bf44a776f9e7573e5768054861682179055608051909116835290822080549093168117909255600790620001fd6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600790935281832080548516600190811790915580548216845282842080548616821790557fe91869424c29752464d2787eacddeda57193b221f303bd0acc5f50fab5273f4f8054861682179055608051909116835290822080549093168117909255600890620002a76000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600890935281832080548516600190811790915580548216845282842080548616821790557f612bb347ff48b73a63d465feccf3717b905df8067413b8db2e7c15c1094a27048054861682179055608051909116835291208054909216179055620003466012600a62000589565b62000355906265b9aa620005a1565b3060009081526003602090815260408083206080516001600160a01b03168452909152902055620003896012600a62000589565b6200039890624a9af5620005a1565b3060008181526002602052604081208390559091600080516020620035d88339815191529060405190815260200160405180910390a330600090815260026020526040902054620003ec6012600a62000589565b620003fb906265b9aa620005a1565b620004079190620005c3565b731d6ee36d23012660dffd470e9142736e7d3f3c77600081815260026020527f8a5c5aa8594df8088bfe9bc1f95be866ae11e00dbeda11401dbce92dd2e0b5048390559091600080516020620035d88339815191529060405190815260200160405180910390a3620005dd565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004cb578160001904821115620004af57620004af62000474565b80851615620004bd57918102915b93841c93908002906200048f565b509250929050565b600082620004e45750600162000583565b81620004f35750600062000583565b81600181146200050c5760028114620005175762000537565b600191505062000583565b60ff8411156200052b576200052b62000474565b50506001821b62000583565b5060208310610133831016604e8410600b84101617156200055c575081810a62000583565b6200056883836200048a565b80600019048211156200057f576200057f62000474565b0290505b92915050565b60006200059a60ff841683620004d3565b9392505050565b6000816000190483118215151615620005be57620005be62000474565b500290565b600082821015620005d857620005d862000474565b500390565b608051612fa062000638600039600081816103a101528181610eaa01528181610f3b01528181611149015281816111730152818161266f01528181612728015281816127640152818161286501526128a10152612fa06000f3fe60806040526004361061031e5760003560e01c8063844d591c116101ab578063cc1776d3116100f7578063ec28438a11610095578063f2fde38b1161006f578063f2fde38b146109b4578063f5648a4f146109d4578063f872858a146109e9578063fe31452414610a0a57600080fd5b8063ec28438a14610954578063f0ed555b14610974578063f1d5f5171461099457600080fd5b8063dd62ed3e116100d1578063dd62ed3e146108b7578063e227cf95146108fd578063e932ec9a1461091e578063ebc38ab01461093e57600080fd5b8063cc1776d31461086b578063d00efb2f14610881578063d158272d1461089757600080fd5b8063916d694311610164578063a9059cbb1161013e578063a9059cbb146107db578063baa16dc3146107fb578063c647b20e1461081b578063c867d60b1461083b57600080fd5b8063916d69431461075d57806395d89b411461078d578063a457c2d7146107bb57600080fd5b8063844d591c146106985780638b42507f146106b85780638c06f391146106e85780638c0b5e22146107085780638da5cb5b1461071e5780638e3657aa1461073c57600080fd5b80633ecad2711161026a5780636ddd1713116102235780638091f3bf116101fd5780638091f3bf1461062157806382760cd2146106425780638366e79a1461066257806383e13fe31461068257600080fd5b80636ddd1713146105cb57806370a08231146105ec578063715018a61461060c57600080fd5b80633ecad271146104f5578063452ed4f1146105255780634cb80fd5146105455780634f7041a5146105655780635342acb41461057b57806354eb5121146105ab57600080fd5b806318160ddd116102d75780632943bdab116102b15780632943bdab1461048e5780632b112e49146104a4578063313ce567146104b957806339509351146104d557600080fd5b806318160ddd1461043757806323b872dd1461044c5780632563ae831461046c57600080fd5b80630445b6671461032a57806306fdde03146103535780630758d9241461038f57806309218ee7146103db578063095ea7b3146103f1578063174e078b1461042157600080fd5b3661032557005b600080fd5b34801561033657600080fd5b50610340600e5481565b6040519081526020015b60405180910390f35b34801561035f57600080fd5b5060408051808201909152600a815269155b99195c9ddbdc9b1960b21b60208201525b60405161034a919061292f565b34801561039b57600080fd5b506103c37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034a565b3480156103e757600080fd5b50610340600c5481565b3480156103fd57600080fd5b5061041161040c36600461299c565b610a20565b604051901515815260200161034a565b34801561042d57600080fd5b5061034060135481565b34801561044357600080fd5b50610340610a37565b34801561045857600080fd5b506104116104673660046129c8565b610a57565b34801561047857600080fd5b5061048c610487366004612a17565b610aab565b005b34801561049a57600080fd5b50610340600d5481565b3480156104b057600080fd5b50610340610b36565b3480156104c557600080fd5b506040516012815260200161034a565b3480156104e157600080fd5b506104116104f036600461299c565b610b66565b34801561050157600080fd5b50610411610510366004612a34565b60056020526000908152604090205460ff1681565b34801561053157600080fd5b506011546103c3906001600160a01b031681565b34801561055157600080fd5b5061048c610560366004612a34565b610b9d565b34801561057157600080fd5b5061034060095481565b34801561058757600080fd5b50610411610596366004612a34565b60046020526000908152604090205460ff1681565b3480156105b757600080fd5b5061048c6105c6366004612a51565b610c76565b3480156105d757600080fd5b5060115461041190600160a81b900460ff1681565b3480156105f857600080fd5b50610340610607366004612a34565b610d81565b34801561061857600080fd5b5061048c610d9c565b34801561062d57600080fd5b5060115461041190600160b81b900460ff1681565b34801561064e57600080fd5b5061048c61065d366004612ad7565b610e10565b34801561066e57600080fd5b5061041161067d366004612af9565b61124d565b34801561068e57600080fd5b5061034060145481565b3480156106a457600080fd5b5061048c6106b3366004612b32565b611443565b3480156106c457600080fd5b506104116106d3366004612a34565b60076020526000908152604090205460ff1681565b3480156106f457600080fd5b5061048c610703366004612b60565b6114d1565b34801561071457600080fd5b50610340600f5481565b34801561072a57600080fd5b506000546001600160a01b03166103c3565b34801561074857600080fd5b5060115461041190600160b01b900460ff1681565b34801561076957600080fd5b50610411610778366004612a34565b60066020526000908152604090205460ff1681565b34801561079957600080fd5b50604080518082019091526005815264486164657360d81b6020820152610382565b3480156107c757600080fd5b506104116107d636600461299c565b611551565b3480156107e757600080fd5b506104116107f636600461299c565b611588565b34801561080757600080fd5b5061048c610816366004612b32565b611595565b34801561082757600080fd5b5061048c610836366004612ad7565b61161b565b34801561084757600080fd5b50610411610856366004612a34565b60086020526000908152604090205460ff1681565b34801561087757600080fd5b50610340600a5481565b34801561088d57600080fd5b5061034060125481565b3480156108a357600080fd5b506001546103c3906001600160a01b031681565b3480156108c357600080fd5b506103406108d2366004612af9565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561090957600080fd5b5060115461041190600160c81b900460ff1681565b34801561092a57600080fd5b5061048c610939366004612b8c565b611711565b34801561094a57600080fd5b50610340600b5481565b34801561096057600080fd5b5061048c61096f366004612bc3565b6117b2565b34801561098057600080fd5b5061048c61098f366004612bdc565b61183d565b3480156109a057600080fd5b5061048c6109af366004612bc3565b611900565b3480156109c057600080fd5b5061048c6109cf366004612a34565b61198a565b3480156109e057600080fd5b5061048c611a74565b3480156109f557600080fd5b5060115461041190600160c01b900460ff1681565b348015610a1657600080fd5b5061034060105481565b6000610a2d338484611ae0565b5060015b92915050565b6000610a456012600a612d32565b610a52906265b9aa612d41565b905090565b6000610a64848484611c04565b506001600160a01b038416600090815260036020908152604080832033808552925290912054610aa0918691610a9b908690612d60565b611ae0565b5060015b9392505050565b6000546001600160a01b03163314610ade5760405162461bcd60e51b8152600401610ad590612d77565b60405180910390fd5b60118054821515600160c01b0260ff60c01b199091161790556040517fd77f03fb55ba6b94fd92cce5c4299c19942acdde281980bdcd02f132dd27fd3490610b2b90831515815260200190565b60405180910390a150565b6000610b4361dead610d81565b610b4f6012600a612d32565b610b5c906265b9aa612d41565b610a529190612d60565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a2d918590610a9b908690612dac565b6000546001600160a01b03163314610bc75760405162461bcd60e51b8152600401610ad590612d77565b6001600160a01b038116610c285760405162461bcd60e51b815260206004820152602260248201527f4e657720616464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608401610ad5565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610b2b565b6000546001600160a01b03163314610ca05760405162461bcd60e51b8152600401610ad590612d77565b60005b82811015610d7b578160066000868685818110610cc257610cc2612dc4565b9050602002016020810190610cd79190612a34565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0861ffea819c7470cbefb1765bce78388684cd327b561fd217484236b4cbb2d3848483818110610d3257610d32612dc4565b9050602002016020810190610d479190612a34565b604080516001600160a01b03909216825284151560208301520160405180910390a180610d7381612dda565b915050610ca3565b50505050565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b03163314610dc65760405162461bcd60e51b8152600401610ad590612d77565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e3a5760405162461bcd60e51b8152600401610ad590612d77565b601154600160b81b900460ff1615610ea85760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610ad5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2a9190612df3565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbb9190612df3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611008573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102c9190612df3565b601180546001600160a01b0319166001600160a01b0392831690811782556000908152600560209081526040808320805460ff199081166001908117909255945490951683526008909152902080549091169091179055476110dc5760405162461bcd60e51b815260206004820152602360248201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756044820152620dcc6d60eb1b6064820152608401610ad5565b60006110e730610d81565b116111435760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610ad5565b611171307f0000000000000000000000000000000000000000000000000000000000000000610a9b30610d81565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d71947306111ab30610d81565b600080731d6ee36d23012660dffd470e9142736e7d3f3c77426040518863ffffffff1660e01b81526004016111e596959493929190612e10565b60606040518083038185885af1158015611203573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112289190612e4b565b50506011805460ff60b81b1916600160b81b1790555043601255601391909155601455565b600080546001600160a01b031633146112785760405162461bcd60e51b8152600401610ad590612d77565b6001600160a01b0383166112ce5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610ad5565b6001600160a01b038316301415806112f05750601154600160b81b900460ff16155b6113595760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610ad5565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156113a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c49190612e79565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b9190612e92565b949350505050565b6000546001600160a01b0316331461146d5760405162461bcd60e51b8152600401610ad590612d77565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527f160ff69a72bc70f3e792a86c87d27070e421562197f032d96bcab11c5010222e91015b60405180910390a15050565b6000546001600160a01b031633146114fb5760405162461bcd60e51b8152600401610ad590612d77565b600b839055600c829055600d81905560408051848152602081018490529081018290527f182101bc4f3117ca4bac06c236d9b9d22164fd259705bb944f9c4580cdba1d9b906060015b60405180910390a1505050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a2d918590610a9b908690612d60565b6000610aa0338484611c04565b6000546001600160a01b031633146115bf5760405162461bcd60e51b8152600401610ad590612d77565b6001600160a01b038216600081815260066020908152604091829020805460ff19168515159081179091558251938452908301527f0861ffea819c7470cbefb1765bce78388684cd327b561fd217484236b4cbb2d391016114c5565b6000546001600160a01b031633146116455760405162461bcd60e51b8152600401610ad590612d77565b610bb882111561168b5760405162461bcd60e51b815260206004820152601160248201527043616e6e6f74206578636565642033302560781b6044820152606401610ad5565b610bb88111156116d15760405162461bcd60e51b815260206004820152601160248201527043616e6e6f74206578636565642033302560781b6044820152606401610ad5565b6009829055600a81905560408051838152602081018390527f5eee0b95930ee59011f34615b0b7dc6cc58c01d1f07d04a01a3a1e70d2554cf091016114c5565b6000546001600160a01b0316331461173b5760405162461bcd60e51b8152600401610ad590612d77565b60118054600e84905561ffff60a81b1916600160a81b85151590810260ff60b01b191691909117600160b01b8415159081029190911790925560408051918252602082018590528101919091527f11208aed08835f646702af16c636fb4351554fa2f623991905cadb0293a88afc90606001611544565b6000546001600160a01b031633146117dc5760405162461bcd60e51b8152600401610ad590612d77565b6103e86117e7610a37565b6117f2906005612d41565b6117fc9190612eaf565b81101561180857600080fd5b600f8190556040518181527fcff95ed354a1a3fcbabf882bfa4a9319f55569c324478c800820398451df187190602001610b2b565b6000546001600160a01b031633146118675760405162461bcd60e51b8152600401610ad590612d77565b6001600160a01b0384166000818152600460209081526040808320805488151560ff19918216811790925560088452828520805489151590831681179091556007855294839020805488151592168217905582519586529285015283019190915260608201527f12d9c9f75d95e930caf8a1f18460585ce2349b367898dbf23e394afef2d35d959060800160405180910390a150505050565b6000546001600160a01b0316331461192a5760405162461bcd60e51b8152600401610ad590612d77565b6064611934610a37565b61193f906001612d41565b6119499190612eaf565b81101561195557600080fd5b60108190556040518181527f7872485612198920508f0a96f4e47084f84df76e33b2b1d76ceff0dc83499aa690602001610b2b565b6000546001600160a01b031633146119b45760405162461bcd60e51b8152600401610ad590612d77565b6001600160a01b038116611a195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a9e5760405162461bcd60e51b8152600401610ad590612d77565b604051600090339047908381818185875af1925050503d8060008114610d7b576040519150601f19603f3d011682016040523d82523d6000602084013e610d7b565b6001600160a01b038316611b425760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad5565b6001600160a01b038216611ba35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601154600090600160a01b900460ff1615611c2b57611c24848484612154565b9050610aa4565b6001600160a01b038416611c8f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad5565b6001600160a01b038316611cf15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad5565b6001600160a01b03841660009081526006602052604090205460ff16158015611d3357506001600160a01b03831660009081526006602052604090205460ff16155b611d7f5760405162461bcd60e51b815260206004820152601f60248201527f546f2f66726f6d206164647265737320697320626c61636b6c697374656421006044820152606401610ad5565b6001600160a01b03841660009081526007602052604090205460ff16158015611dc157506001600160a01b03831660009081526007602052604090205460ff16155b15611ed157601154600160b81b900460ff16611e0f5760405162461bcd60e51b815260206004820152600d60248201526c2737ba102630bab731b432b21760991b6044820152606401610ad5565b6001600160a01b03841660009081526005602052604090205460ff1680611e4e57506001600160a01b03831660009081526005602052604090205460ff165b15611eb657600f54821115611eb65760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ad5565b601154600160c81b900460ff16611ed157611ed1848461220e565b6001600160a01b03841660009081526005602052604081205460ff16158015611f1357506001600160a01b03841660009081526005602052604090205460ff16155b80611f3657506001600160a01b03851660009081526004602052604090205460ff165b80611f5957506001600160a01b03841660009081526004602052604090205460ff165b905080158015611f8257506001600160a01b03851660009081526005602052604090205460ff16155b8015611f975750601154600160a81b900460ff165b8015611fad5750601154600160a01b900460ff16155b15612016576000611fbd30610d81565b600e54909150811080159061201357601154600160b01b900460ff1615611fe457600e5491505b600e54611ff2906014612d41565b82111561200a57600e54612007906014612d41565b91505b61201382612326565b50505b6001600160a01b03851660009081526002602052604090205461203a908490612d60565b6001600160a01b0386166000908152600260205260408120919091558161206b57612066868686612491565b61206d565b835b601154909150600160c01b900460ff1680156120a257506001600160a01b03851660009081526008602052604090205460ff16155b156120c957601054816120b487610d81565b6120be9190612dac565b11156120c957600080fd5b6001600160a01b0385166000908152600260205260409020546120ed908290612dac565b6001600160a01b0380871660008181526002602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121419085815260200190565b60405180910390a3600192505050610aa4565b6001600160a01b038316600090815260026020526040812054612178908390612d60565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546121a8908390612dac565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121fc9086815260200190565b60405180910390a35060019392505050565b60135460125461221e9043612d60565b111561223b576011805460ff60c81b1916600160c81b1790555050565b6000546001600160a01b0383811691161480159061226757506000546001600160a01b03828116911614155b15612322576001600160a01b03821660009081526005602052604090205460ff1615801561229e57506001600160a01b0382163014155b156122c7576001600160a01b0382166000908152600660205260409020805460ff191660011790555b6001600160a01b03811660009081526005602052604090205460ff161580156122f957506001600160a01b0381163014155b15612322576001600160a01b0381166000908152600660205260409020805460ff191660011790555b5050565b6011805460ff60a01b1916600160a01b179055600d54600c54600b546000929161234f91612dac565b6123599190612dac565b9050600081600d548461236c9190612d41565b6123769190612eaf565b90506000600283600b548661238b9190612d41565b6123959190612eaf565b61239f9190612eaf565b90506000826123ae8387612d60565b6123b89190612d60565b90506123c381612618565b600b5447906000906123d790600290612eaf565b600d546123e49088612d60565b6123ee9190612d60565b90506000600282600b54856124039190612d41565b61240d9190612eaf565b6124179190612eaf565b905060006124258285612d60565b9050801561244357600154612443906001600160a01b031682612805565b600d541561245a576124583061dead89612154565b505b60008211801561246a5750600086115b1561247957612479868361285f565b50506011805460ff60a01b1916905550505050505050565b600080612710600954846124a59190612d41565b6124af9190612eaf565b6001600160a01b038616600090815260066020526040902054909150309060ff16806124f357506001600160a01b03851660009081526006602052604090205460ff165b1561251857612710612507856126ac612d41565b6125119190612eaf565b915061257d565b6001600160a01b03851660009081526005602052604090205460ff161561257d574360145460125461254a9190612dac565b111561255f57612710612507856126ac612d41565b612710600a54856125709190612d41565b61257a9190612eaf565b91505b8115612604576001600160a01b0381166000908152600260205260409020546125a7908390612dac565b6001600160a01b0380831660008181526002602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125fb9086815260200190565b60405180910390a35b61260e8285612d60565b9695505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061264d5761264d612dc4565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ef9190612df3565b8160018151811061270257612702612dc4565b60200260200101906001600160a01b031690816001600160a01b03168152505061274d307f000000000000000000000000000000000000000000000000000000000000000084611ae0565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906127a2908590600090869030904290600401612f15565b600060405180830381600087803b1580156127bc57600080fd5b505af11580156127d0573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516114c5929190612f51565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612852576040519150601f19603f3d011682016040523d82523d6000602084013e612857565b606091505b505050505050565b61288a307f000000000000000000000000000000000000000000000000000000000000000084611ae0565b60405163f305d71960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f305d7199083906128e59030908790600090819061dead904290600401612e10565b60606040518083038185885af1158015612903573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129289190612e4b565b5050505050565b600060208083528351808285015260005b8181101561295c57858101830151858201604001528201612940565b8181111561296e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461299957600080fd5b50565b600080604083850312156129af57600080fd5b82356129ba81612984565b946020939093013593505050565b6000806000606084860312156129dd57600080fd5b83356129e881612984565b925060208401356129f881612984565b929592945050506040919091013590565b801515811461299957600080fd5b600060208284031215612a2957600080fd5b8135610aa481612a09565b600060208284031215612a4657600080fd5b8135610aa481612984565b600080600060408486031215612a6657600080fd5b833567ffffffffffffffff80821115612a7e57600080fd5b818601915086601f830112612a9257600080fd5b813581811115612aa157600080fd5b8760208260051b8501011115612ab657600080fd5b60209283019550935050840135612acc81612a09565b809150509250925092565b60008060408385031215612aea57600080fd5b50508035926020909101359150565b60008060408385031215612b0c57600080fd5b8235612b1781612984565b91506020830135612b2781612984565b809150509250929050565b60008060408385031215612b4557600080fd5b8235612b5081612984565b91506020830135612b2781612a09565b600080600060608486031215612b7557600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612ba157600080fd5b8335612bac81612a09565b9250602084013591506040840135612acc81612a09565b600060208284031215612bd557600080fd5b5035919050565b60008060008060808587031215612bf257600080fd5b8435612bfd81612984565b93506020850135612c0d81612a09565b92506040850135612c1d81612a09565b91506060850135612c2d81612a09565b939692955090935050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612c89578160001904821115612c6f57612c6f612c38565b80851615612c7c57918102915b93841c9390800290612c53565b509250929050565b600082612ca057506001610a31565b81612cad57506000610a31565b8160018114612cc35760028114612ccd57612ce9565b6001915050610a31565b60ff841115612cde57612cde612c38565b50506001821b610a31565b5060208310610133831016604e8410600b8410161715612d0c575081810a610a31565b612d168383612c4e565b8060001904821115612d2a57612d2a612c38565b029392505050565b6000610aa460ff841683612c91565b6000816000190483118215151615612d5b57612d5b612c38565b500290565b600082821015612d7257612d72612c38565b500390565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115612dbf57612dbf612c38565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201612dec57612dec612c38565b5060010190565b600060208284031215612e0557600080fd5b8151610aa481612984565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612e6057600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612e8b57600080fd5b5051919050565b600060208284031215612ea457600080fd5b8151610aa481612a09565b600082612ecc57634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526020808501945080840160005b83811015612f0a5781516001600160a01b031687529582019590820190600101612ee5565b509495945050505050565b85815284602082015260a060408201526000612f3460a0830186612ed1565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061143b6040830184612ed156fea2646970667358221220d5ec94cf524573f7cc204e95ca4fdb6308f59c02eb9b6b42800bcd86f784f5ef64736f6c634300080f0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061031e5760003560e01c8063844d591c116101ab578063cc1776d3116100f7578063ec28438a11610095578063f2fde38b1161006f578063f2fde38b146109b4578063f5648a4f146109d4578063f872858a146109e9578063fe31452414610a0a57600080fd5b8063ec28438a14610954578063f0ed555b14610974578063f1d5f5171461099457600080fd5b8063dd62ed3e116100d1578063dd62ed3e146108b7578063e227cf95146108fd578063e932ec9a1461091e578063ebc38ab01461093e57600080fd5b8063cc1776d31461086b578063d00efb2f14610881578063d158272d1461089757600080fd5b8063916d694311610164578063a9059cbb1161013e578063a9059cbb146107db578063baa16dc3146107fb578063c647b20e1461081b578063c867d60b1461083b57600080fd5b8063916d69431461075d57806395d89b411461078d578063a457c2d7146107bb57600080fd5b8063844d591c146106985780638b42507f146106b85780638c06f391146106e85780638c0b5e22146107085780638da5cb5b1461071e5780638e3657aa1461073c57600080fd5b80633ecad2711161026a5780636ddd1713116102235780638091f3bf116101fd5780638091f3bf1461062157806382760cd2146106425780638366e79a1461066257806383e13fe31461068257600080fd5b80636ddd1713146105cb57806370a08231146105ec578063715018a61461060c57600080fd5b80633ecad271146104f5578063452ed4f1146105255780634cb80fd5146105455780634f7041a5146105655780635342acb41461057b57806354eb5121146105ab57600080fd5b806318160ddd116102d75780632943bdab116102b15780632943bdab1461048e5780632b112e49146104a4578063313ce567146104b957806339509351146104d557600080fd5b806318160ddd1461043757806323b872dd1461044c5780632563ae831461046c57600080fd5b80630445b6671461032a57806306fdde03146103535780630758d9241461038f57806309218ee7146103db578063095ea7b3146103f1578063174e078b1461042157600080fd5b3661032557005b600080fd5b34801561033657600080fd5b50610340600e5481565b6040519081526020015b60405180910390f35b34801561035f57600080fd5b5060408051808201909152600a815269155b99195c9ddbdc9b1960b21b60208201525b60405161034a919061292f565b34801561039b57600080fd5b506103c37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161034a565b3480156103e757600080fd5b50610340600c5481565b3480156103fd57600080fd5b5061041161040c36600461299c565b610a20565b604051901515815260200161034a565b34801561042d57600080fd5b5061034060135481565b34801561044357600080fd5b50610340610a37565b34801561045857600080fd5b506104116104673660046129c8565b610a57565b34801561047857600080fd5b5061048c610487366004612a17565b610aab565b005b34801561049a57600080fd5b50610340600d5481565b3480156104b057600080fd5b50610340610b36565b3480156104c557600080fd5b506040516012815260200161034a565b3480156104e157600080fd5b506104116104f036600461299c565b610b66565b34801561050157600080fd5b50610411610510366004612a34565b60056020526000908152604090205460ff1681565b34801561053157600080fd5b506011546103c3906001600160a01b031681565b34801561055157600080fd5b5061048c610560366004612a34565b610b9d565b34801561057157600080fd5b5061034060095481565b34801561058757600080fd5b50610411610596366004612a34565b60046020526000908152604090205460ff1681565b3480156105b757600080fd5b5061048c6105c6366004612a51565b610c76565b3480156105d757600080fd5b5060115461041190600160a81b900460ff1681565b3480156105f857600080fd5b50610340610607366004612a34565b610d81565b34801561061857600080fd5b5061048c610d9c565b34801561062d57600080fd5b5060115461041190600160b81b900460ff1681565b34801561064e57600080fd5b5061048c61065d366004612ad7565b610e10565b34801561066e57600080fd5b5061041161067d366004612af9565b61124d565b34801561068e57600080fd5b5061034060145481565b3480156106a457600080fd5b5061048c6106b3366004612b32565b611443565b3480156106c457600080fd5b506104116106d3366004612a34565b60076020526000908152604090205460ff1681565b3480156106f457600080fd5b5061048c610703366004612b60565b6114d1565b34801561071457600080fd5b50610340600f5481565b34801561072a57600080fd5b506000546001600160a01b03166103c3565b34801561074857600080fd5b5060115461041190600160b01b900460ff1681565b34801561076957600080fd5b50610411610778366004612a34565b60066020526000908152604090205460ff1681565b34801561079957600080fd5b50604080518082019091526005815264486164657360d81b6020820152610382565b3480156107c757600080fd5b506104116107d636600461299c565b611551565b3480156107e757600080fd5b506104116107f636600461299c565b611588565b34801561080757600080fd5b5061048c610816366004612b32565b611595565b34801561082757600080fd5b5061048c610836366004612ad7565b61161b565b34801561084757600080fd5b50610411610856366004612a34565b60086020526000908152604090205460ff1681565b34801561087757600080fd5b50610340600a5481565b34801561088d57600080fd5b5061034060125481565b3480156108a357600080fd5b506001546103c3906001600160a01b031681565b3480156108c357600080fd5b506103406108d2366004612af9565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561090957600080fd5b5060115461041190600160c81b900460ff1681565b34801561092a57600080fd5b5061048c610939366004612b8c565b611711565b34801561094a57600080fd5b50610340600b5481565b34801561096057600080fd5b5061048c61096f366004612bc3565b6117b2565b34801561098057600080fd5b5061048c61098f366004612bdc565b61183d565b3480156109a057600080fd5b5061048c6109af366004612bc3565b611900565b3480156109c057600080fd5b5061048c6109cf366004612a34565b61198a565b3480156109e057600080fd5b5061048c611a74565b3480156109f557600080fd5b5060115461041190600160c01b900460ff1681565b348015610a1657600080fd5b5061034060105481565b6000610a2d338484611ae0565b5060015b92915050565b6000610a456012600a612d32565b610a52906265b9aa612d41565b905090565b6000610a64848484611c04565b506001600160a01b038416600090815260036020908152604080832033808552925290912054610aa0918691610a9b908690612d60565b611ae0565b5060015b9392505050565b6000546001600160a01b03163314610ade5760405162461bcd60e51b8152600401610ad590612d77565b60405180910390fd5b60118054821515600160c01b0260ff60c01b199091161790556040517fd77f03fb55ba6b94fd92cce5c4299c19942acdde281980bdcd02f132dd27fd3490610b2b90831515815260200190565b60405180910390a150565b6000610b4361dead610d81565b610b4f6012600a612d32565b610b5c906265b9aa612d41565b610a529190612d60565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a2d918590610a9b908690612dac565b6000546001600160a01b03163314610bc75760405162461bcd60e51b8152600401610ad590612d77565b6001600160a01b038116610c285760405162461bcd60e51b815260206004820152602260248201527f4e657720616464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608401610ad5565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610b2b565b6000546001600160a01b03163314610ca05760405162461bcd60e51b8152600401610ad590612d77565b60005b82811015610d7b578160066000868685818110610cc257610cc2612dc4565b9050602002016020810190610cd79190612a34565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0861ffea819c7470cbefb1765bce78388684cd327b561fd217484236b4cbb2d3848483818110610d3257610d32612dc4565b9050602002016020810190610d479190612a34565b604080516001600160a01b03909216825284151560208301520160405180910390a180610d7381612dda565b915050610ca3565b50505050565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b03163314610dc65760405162461bcd60e51b8152600401610ad590612d77565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e3a5760405162461bcd60e51b8152600401610ad590612d77565b601154600160b81b900460ff1615610ea85760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610ad5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2a9190612df3565b6001600160a01b031663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbb9190612df3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611008573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102c9190612df3565b601180546001600160a01b0319166001600160a01b0392831690811782556000908152600560209081526040808320805460ff199081166001908117909255945490951683526008909152902080549091169091179055476110dc5760405162461bcd60e51b815260206004820152602360248201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756044820152620dcc6d60eb1b6064820152608401610ad5565b60006110e730610d81565b116111435760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610ad5565b611171307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d610a9b30610d81565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d71947306111ab30610d81565b600080731d6ee36d23012660dffd470e9142736e7d3f3c77426040518863ffffffff1660e01b81526004016111e596959493929190612e10565b60606040518083038185885af1158015611203573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112289190612e4b565b50506011805460ff60b81b1916600160b81b1790555043601255601391909155601455565b600080546001600160a01b031633146112785760405162461bcd60e51b8152600401610ad590612d77565b6001600160a01b0383166112ce5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610ad5565b6001600160a01b038316301415806112f05750601154600160b81b900460ff16155b6113595760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610ad5565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156113a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c49190612e79565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b9190612e92565b949350505050565b6000546001600160a01b0316331461146d5760405162461bcd60e51b8152600401610ad590612d77565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527f160ff69a72bc70f3e792a86c87d27070e421562197f032d96bcab11c5010222e91015b60405180910390a15050565b6000546001600160a01b031633146114fb5760405162461bcd60e51b8152600401610ad590612d77565b600b839055600c829055600d81905560408051848152602081018490529081018290527f182101bc4f3117ca4bac06c236d9b9d22164fd259705bb944f9c4580cdba1d9b906060015b60405180910390a1505050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a2d918590610a9b908690612d60565b6000610aa0338484611c04565b6000546001600160a01b031633146115bf5760405162461bcd60e51b8152600401610ad590612d77565b6001600160a01b038216600081815260066020908152604091829020805460ff19168515159081179091558251938452908301527f0861ffea819c7470cbefb1765bce78388684cd327b561fd217484236b4cbb2d391016114c5565b6000546001600160a01b031633146116455760405162461bcd60e51b8152600401610ad590612d77565b610bb882111561168b5760405162461bcd60e51b815260206004820152601160248201527043616e6e6f74206578636565642033302560781b6044820152606401610ad5565b610bb88111156116d15760405162461bcd60e51b815260206004820152601160248201527043616e6e6f74206578636565642033302560781b6044820152606401610ad5565b6009829055600a81905560408051838152602081018390527f5eee0b95930ee59011f34615b0b7dc6cc58c01d1f07d04a01a3a1e70d2554cf091016114c5565b6000546001600160a01b0316331461173b5760405162461bcd60e51b8152600401610ad590612d77565b60118054600e84905561ffff60a81b1916600160a81b85151590810260ff60b01b191691909117600160b01b8415159081029190911790925560408051918252602082018590528101919091527f11208aed08835f646702af16c636fb4351554fa2f623991905cadb0293a88afc90606001611544565b6000546001600160a01b031633146117dc5760405162461bcd60e51b8152600401610ad590612d77565b6103e86117e7610a37565b6117f2906005612d41565b6117fc9190612eaf565b81101561180857600080fd5b600f8190556040518181527fcff95ed354a1a3fcbabf882bfa4a9319f55569c324478c800820398451df187190602001610b2b565b6000546001600160a01b031633146118675760405162461bcd60e51b8152600401610ad590612d77565b6001600160a01b0384166000818152600460209081526040808320805488151560ff19918216811790925560088452828520805489151590831681179091556007855294839020805488151592168217905582519586529285015283019190915260608201527f12d9c9f75d95e930caf8a1f18460585ce2349b367898dbf23e394afef2d35d959060800160405180910390a150505050565b6000546001600160a01b0316331461192a5760405162461bcd60e51b8152600401610ad590612d77565b6064611934610a37565b61193f906001612d41565b6119499190612eaf565b81101561195557600080fd5b60108190556040518181527f7872485612198920508f0a96f4e47084f84df76e33b2b1d76ceff0dc83499aa690602001610b2b565b6000546001600160a01b031633146119b45760405162461bcd60e51b8152600401610ad590612d77565b6001600160a01b038116611a195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a9e5760405162461bcd60e51b8152600401610ad590612d77565b604051600090339047908381818185875af1925050503d8060008114610d7b576040519150601f19603f3d011682016040523d82523d6000602084013e610d7b565b6001600160a01b038316611b425760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad5565b6001600160a01b038216611ba35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601154600090600160a01b900460ff1615611c2b57611c24848484612154565b9050610aa4565b6001600160a01b038416611c8f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad5565b6001600160a01b038316611cf15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad5565b6001600160a01b03841660009081526006602052604090205460ff16158015611d3357506001600160a01b03831660009081526006602052604090205460ff16155b611d7f5760405162461bcd60e51b815260206004820152601f60248201527f546f2f66726f6d206164647265737320697320626c61636b6c697374656421006044820152606401610ad5565b6001600160a01b03841660009081526007602052604090205460ff16158015611dc157506001600160a01b03831660009081526007602052604090205460ff16155b15611ed157601154600160b81b900460ff16611e0f5760405162461bcd60e51b815260206004820152600d60248201526c2737ba102630bab731b432b21760991b6044820152606401610ad5565b6001600160a01b03841660009081526005602052604090205460ff1680611e4e57506001600160a01b03831660009081526005602052604090205460ff165b15611eb657600f54821115611eb65760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ad5565b601154600160c81b900460ff16611ed157611ed1848461220e565b6001600160a01b03841660009081526005602052604081205460ff16158015611f1357506001600160a01b03841660009081526005602052604090205460ff16155b80611f3657506001600160a01b03851660009081526004602052604090205460ff165b80611f5957506001600160a01b03841660009081526004602052604090205460ff165b905080158015611f8257506001600160a01b03851660009081526005602052604090205460ff16155b8015611f975750601154600160a81b900460ff165b8015611fad5750601154600160a01b900460ff16155b15612016576000611fbd30610d81565b600e54909150811080159061201357601154600160b01b900460ff1615611fe457600e5491505b600e54611ff2906014612d41565b82111561200a57600e54612007906014612d41565b91505b61201382612326565b50505b6001600160a01b03851660009081526002602052604090205461203a908490612d60565b6001600160a01b0386166000908152600260205260408120919091558161206b57612066868686612491565b61206d565b835b601154909150600160c01b900460ff1680156120a257506001600160a01b03851660009081526008602052604090205460ff16155b156120c957601054816120b487610d81565b6120be9190612dac565b11156120c957600080fd5b6001600160a01b0385166000908152600260205260409020546120ed908290612dac565b6001600160a01b0380871660008181526002602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121419085815260200190565b60405180910390a3600192505050610aa4565b6001600160a01b038316600090815260026020526040812054612178908390612d60565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546121a8908390612dac565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121fc9086815260200190565b60405180910390a35060019392505050565b60135460125461221e9043612d60565b111561223b576011805460ff60c81b1916600160c81b1790555050565b6000546001600160a01b0383811691161480159061226757506000546001600160a01b03828116911614155b15612322576001600160a01b03821660009081526005602052604090205460ff1615801561229e57506001600160a01b0382163014155b156122c7576001600160a01b0382166000908152600660205260409020805460ff191660011790555b6001600160a01b03811660009081526005602052604090205460ff161580156122f957506001600160a01b0381163014155b15612322576001600160a01b0381166000908152600660205260409020805460ff191660011790555b5050565b6011805460ff60a01b1916600160a01b179055600d54600c54600b546000929161234f91612dac565b6123599190612dac565b9050600081600d548461236c9190612d41565b6123769190612eaf565b90506000600283600b548661238b9190612d41565b6123959190612eaf565b61239f9190612eaf565b90506000826123ae8387612d60565b6123b89190612d60565b90506123c381612618565b600b5447906000906123d790600290612eaf565b600d546123e49088612d60565b6123ee9190612d60565b90506000600282600b54856124039190612d41565b61240d9190612eaf565b6124179190612eaf565b905060006124258285612d60565b9050801561244357600154612443906001600160a01b031682612805565b600d541561245a576124583061dead89612154565b505b60008211801561246a5750600086115b1561247957612479868361285f565b50506011805460ff60a01b1916905550505050505050565b600080612710600954846124a59190612d41565b6124af9190612eaf565b6001600160a01b038616600090815260066020526040902054909150309060ff16806124f357506001600160a01b03851660009081526006602052604090205460ff165b1561251857612710612507856126ac612d41565b6125119190612eaf565b915061257d565b6001600160a01b03851660009081526005602052604090205460ff161561257d574360145460125461254a9190612dac565b111561255f57612710612507856126ac612d41565b612710600a54856125709190612d41565b61257a9190612eaf565b91505b8115612604576001600160a01b0381166000908152600260205260409020546125a7908390612dac565b6001600160a01b0380831660008181526002602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125fb9086815260200190565b60405180910390a35b61260e8285612d60565b9695505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061264d5761264d612dc4565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ef9190612df3565b8160018151811061270257612702612dc4565b60200260200101906001600160a01b031690816001600160a01b03168152505061274d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ae0565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906127a2908590600090869030904290600401612f15565b600060405180830381600087803b1580156127bc57600080fd5b505af11580156127d0573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516114c5929190612f51565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612852576040519150601f19603f3d011682016040523d82523d6000602084013e612857565b606091505b505050505050565b61288a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ae0565b60405163f305d71960e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063f305d7199083906128e59030908790600090819061dead904290600401612e10565b60606040518083038185885af1158015612903573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129289190612e4b565b5050505050565b600060208083528351808285015260005b8181101561295c57858101830151858201604001528201612940565b8181111561296e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461299957600080fd5b50565b600080604083850312156129af57600080fd5b82356129ba81612984565b946020939093013593505050565b6000806000606084860312156129dd57600080fd5b83356129e881612984565b925060208401356129f881612984565b929592945050506040919091013590565b801515811461299957600080fd5b600060208284031215612a2957600080fd5b8135610aa481612a09565b600060208284031215612a4657600080fd5b8135610aa481612984565b600080600060408486031215612a6657600080fd5b833567ffffffffffffffff80821115612a7e57600080fd5b818601915086601f830112612a9257600080fd5b813581811115612aa157600080fd5b8760208260051b8501011115612ab657600080fd5b60209283019550935050840135612acc81612a09565b809150509250925092565b60008060408385031215612aea57600080fd5b50508035926020909101359150565b60008060408385031215612b0c57600080fd5b8235612b1781612984565b91506020830135612b2781612984565b809150509250929050565b60008060408385031215612b4557600080fd5b8235612b5081612984565b91506020830135612b2781612a09565b600080600060608486031215612b7557600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612ba157600080fd5b8335612bac81612a09565b9250602084013591506040840135612acc81612a09565b600060208284031215612bd557600080fd5b5035919050565b60008060008060808587031215612bf257600080fd5b8435612bfd81612984565b93506020850135612c0d81612a09565b92506040850135612c1d81612a09565b91506060850135612c2d81612a09565b939692955090935050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612c89578160001904821115612c6f57612c6f612c38565b80851615612c7c57918102915b93841c9390800290612c53565b509250929050565b600082612ca057506001610a31565b81612cad57506000610a31565b8160018114612cc35760028114612ccd57612ce9565b6001915050610a31565b60ff841115612cde57612cde612c38565b50506001821b610a31565b5060208310610133831016604e8410600b8410161715612d0c575081810a610a31565b612d168383612c4e565b8060001904821115612d2a57612d2a612c38565b029392505050565b6000610aa460ff841683612c91565b6000816000190483118215151615612d5b57612d5b612c38565b500290565b600082821015612d7257612d72612c38565b500390565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115612dbf57612dbf612c38565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201612dec57612dec612c38565b5060010190565b600060208284031215612e0557600080fd5b8151610aa481612984565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612e6057600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612e8b57600080fd5b5051919050565b600060208284031215612ea457600080fd5b8151610aa481612a09565b600082612ecc57634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526020808501945080840160005b83811015612f0a5781516001600160a01b031687529582019590820190600101612ee5565b509495945050505050565b85815284602082015260a060408201526000612f3460a0830186612ed1565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061143b6040830184612ed156fea2646970667358221220d5ec94cf524573f7cc204e95ca4fdb6308f59c02eb9b6b42800bcd86f784f5ef64736f6c634300080f0033

Deployed Bytecode Sourcemap

3969:18862:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:51;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5060:51:0;;;;;;;;8176:83;;;;;;;;;;-1:-1:-1;8246:5:0;;;;;;;;;;;;-1:-1:-1;;;8246:5:0;;;;8176:83;;;;;;;:::i;5232:37::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;980:32:1;;;962:51;;950:2;935:18;5232:37:0;798:221:1;4905:35:0;;;;;;;;;;;;;;;;9635:193;;;;;;;;;;-1:-1:-1;9635:193:0;;;;;:::i;:::-;;:::i;:::-;;;1645:14:1;;1638:22;1620:41;;1608:2;1593:18;9635:193:0;1480:187:1;5573:35:0;;;;;;;;;;;;;;;;8453:100;;;;;;;;;;;;;:::i;10425:349::-;;;;;;;;;;-1:-1:-1;10425:349:0;;;;;:::i;:::-;;:::i;12763:211::-;;;;;;;;;;-1:-1:-1;12763:211:0;;;;;:::i;:::-;;:::i;:::-;;4947:34;;;;;;;;;;;;;;;;8561:129;;;;;;;;;;;;;:::i;8362:83::-;;;;;;;;;;-1:-1:-1;8362:83:0;;4153:2;2644:36:1;;2632:2;2617:18;8362:83:0;2502:184:1;9017:296:0;;;;;;;;;;-1:-1:-1;9017:296:0;;;;;:::i;:::-;;:::i;4583:44::-;;;;;;;;;;-1:-1:-1;4583:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5276:21;;;;;;;;;;-1:-1:-1;5276:21:0;;;;-1:-1:-1;;;;;5276:21:0;;;13888:381;;;;;;;;;;-1:-1:-1;13888:381:0;;;;;:::i;:::-;;:::i;4799:27::-;;;;;;;;;;;;;;;;4527:49;;;;;;;;;;-1:-1:-1;4527:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11005:313;;;;;;;;;;-1:-1:-1;11005:313:0;;;;;:::i;:::-;;:::i;5334:30::-;;;;;;;;;;-1:-1:-1;5334:30:0;;;;-1:-1:-1;;;5334:30:0;;;;;;8698:118;;;;;;;;;;-1:-1:-1;8698:118:0;;;;;:::i;:::-;;:::i;1103:148::-;;;;;;;;;;;;;:::i;5413:28::-;;;;;;;;;;-1:-1:-1;5413:28:0;;;;-1:-1:-1;;;5413:28:0;;;;;;21007:1152;;;;;;;;;;-1:-1:-1;21007:1152:0;;;;;:::i;:::-;;:::i;22397:431::-;;;;;;;;;;-1:-1:-1;22397:431:0;;;;;:::i;:::-;;:::i;5615:34::-;;;;;;;;;;;;;;;;11326:219;;;;;;;;;;-1:-1:-1;11326:219:0;;;;;:::i;:::-;;:::i;4685:47::-;;;;;;;;;;-1:-1:-1;4685:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11896:418;;;;;;;;;;-1:-1:-1;11896:418:0;;;;;:::i;:::-;;:::i;5118:50::-;;;;;;;;;;;;;;;;889:79;;;;;;;;;;-1:-1:-1;927:7:0;954:6;-1:-1:-1;;;;;954:6:0;889:79;;5371:35;;;;;;;;;;-1:-1:-1;5371:35:0;;;;-1:-1:-1;;;5371:35:0;;;;;;4634:44;;;;;;;;;;-1:-1:-1;4634:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8267:87;;;;;;;;;;-1:-1:-1;8339:7:0;;;;;;;;;;;;-1:-1:-1;;;8339:7:0;;;;8267:87;;9321:306;;;;;;;;;;-1:-1:-1;9321:306:0;;;;;:::i;:::-;;:::i;10218:199::-;;;;;;;;;;-1:-1:-1;10218:199:0;;;;;:::i;:::-;;:::i;10782:215::-;;;;;;;;;;-1:-1:-1;10782:215:0;;;;;:::i;:::-;;:::i;11553:335::-;;;;;;;;;;-1:-1:-1;11553:335:0;;;;;:::i;:::-;;:::i;4739:51::-;;;;;;;;;;-1:-1:-1;4739:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4833:28;;;;;;;;;;;;;;;;5536:30;;;;;;;;;;;;;;;;4164:108;;;;;;;;;;-1:-1:-1;4164:108:0;;;;-1:-1:-1;;;;;4164:108:0;;;8824:185;;;;;;;;;;-1:-1:-1;8824:185:0;;;;;:::i;:::-;-1:-1:-1;;;;;8974:18:0;;;8942:7;8974:18;;;:10;:18;;;;;;;;:27;;;;;;;;;;;;;8824:185;5490:37;;;;;;;;;;-1:-1:-1;5490:37:0;;;;-1:-1:-1;;;5490:37:0;;;;;;13471:409;;;;;;;;;;-1:-1:-1;13471:409:0;;;;;:::i;:::-;;:::i;4870:28::-;;;;;;;;;;;;;;;;12322:218;;;;;;;;;;-1:-1:-1;12322:218:0;;;;;:::i;:::-;;:::i;12982:481::-;;;;;;;;;;-1:-1:-1;12982:481:0;;;;;:::i;:::-;;:::i;12548:207::-;;;;;;;;;;-1:-1:-1;12548:207:0;;;;;:::i;:::-;;:::i;1259:281::-;;;;;;;;;;-1:-1:-1;1259:281:0;;;;;:::i;:::-;;:::i;22229:160::-;;;;;;;;;;;;;:::i;5448:35::-;;;;;;;;;;-1:-1:-1;5448:35:0;;;;-1:-1:-1;;;5448:35:0;;;;;;5175:48;;;;;;;;;;;;;;;;9635:193;9737:4;9759:39;278:10;9782:7;9791:6;9759:8;:39::i;:::-;-1:-1:-1;9816:4:0;9635:193;;;;;:::o;8453:100::-;8506:7;5040:13;4153:2;5040;:13;:::i;:::-;5030:23;;:7;:23;:::i;:::-;8526:19;;8453:100;:::o;10425:349::-;10557:4;10574:36;10584:6;10592:9;10603:6;10574:9;:36::i;:::-;-1:-1:-1;;;;;;10692:18:0;;;;;;:10;:18;;;;;;;;278:10;10692:32;;;;;;;;;10621:123;;10644:6;;10692:41;;10727:6;;10692:41;:::i;:::-;10621:8;:123::i;:::-;-1:-1:-1;10762:4:0;10425:349;;;;;;:::o;12763:211::-;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;;;;;;;;;12874:16:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;12874:36:0::1;-1:-1:-1::0;;;;12874:36:0;;::::1;;::::0;;12926:40:::1;::::0;::::1;::::0;::::1;::::0;12893:17;1645:14:1;1638:22;1620:41;;1608:2;1593:18;;1480:187;12926:40:0::1;;;;;;;;12763:211:::0;:::o;8561:129::-;8614:7;8656:26;8674:6;8656:9;:26::i;:::-;5040:13;4153:2;5040;:13;:::i;:::-;5030:23;;:7;:23;:::i;:::-;8641:41;;;;:::i;9017:296::-;278:10;9132:4;9226:24;;;:10;:24;;;;;;;;-1:-1:-1;;;;;9226:33:0;;;;;;;;;;9132:4;;9154:129;;9204:7;;9226:46;;9262:10;;9226:46;:::i;13888:381::-;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14031:37:0;::::1;14009:121;;;::::0;-1:-1:-1;;;14009:121:0;;9290:2:1;14009:121:0::1;::::0;::::1;9272:21:1::0;9329:2;9309:18;;;9302:30;9368:34;9348:18;;;9341:62;-1:-1:-1;;;9419:18:1;;;9412:32;9461:19;;14009:121:0::1;9088:398:1::0;14009:121:0::1;14141:22;:57:::0;;-1:-1:-1;;;;;;14141:57:0::1;-1:-1:-1::0;;;;;14141:57:0;::::1;::::0;;::::1;::::0;;;14214:47:::1;::::0;962:51:1;;;14214:47:0::1;::::0;950:2:1;935:18;14214:47:0::1;798:221:1::0;11005:313:0;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;11138:9:::1;11134:177;11153:19:::0;;::::1;11134:177;;;11221:13;11193:12;:25;11206:8;;11215:1;11206:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11193:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11193:25:0;:41;;-1:-1:-1;;11193:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11254:45:::1;11272:8:::0;;11281:1;11272:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11254:45;::::0;;-1:-1:-1;;;;;9809:32:1;;;9791:51;;9885:14;;9878:22;9873:2;9858:18;;9851:50;9764:18;11254:45:0::1;;;;;;;11174:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11134:177;;;;11005:313:::0;;;:::o;8698:118::-;-1:-1:-1;;;;;8791:17:0;8764:7;8791:17;;;:8;:17;;;;;;;8698:118::o;1103:148::-;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;1210:1:::1;1194:6:::0;;1173:40:::1;::::0;-1:-1:-1;;;;;1194:6:0;;::::1;::::0;1173:40:::1;::::0;1210:1;;1173:40:::1;1241:1;1224:19:::0;;-1:-1:-1;;;;;;1224:19:0::1;::::0;;1103:148::o;21007:1152::-;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;21119:8:::1;::::0;-1:-1:-1;;;21119:8:0;::::1;;;21118:9;21110:65;;;::::0;-1:-1:-1;;;21110:65:0;;10254:2:1;21110:65:0::1;::::0;::::1;10236:21:1::0;10293:2;10273:18;;;10266:30;10332:34;10312:18;;;10305:62;-1:-1:-1;;;10383:18:1;;;10376:41;10434:19;;21110:65:0::1;10052:407:1::0;21110:65:0::1;21233:9;-1:-1:-1::0;;;;;21233:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21221:43:0::1;;21273:4;21279:9;-1:-1:-1::0;;;;;21279:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21221:75;::::0;-1:-1:-1;;;;;;21221:75:0::1;::::0;;;;;;-1:-1:-1;;;;;10950:15:1;;;21221:75:0::1;::::0;::::1;10932:34:1::0;11002:15;;10982:18;;;10975:43;10867:18;;21221:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21212:6;:84:::0;;-1:-1:-1;;;;;;21212:84:0::1;-1:-1:-1::0;;;;;21212:84:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;21307:29:0;;;:12:::1;:29;::::0;;;;;;;:36;;-1:-1:-1;;21307:36:0;;::::1;-1:-1:-1::0;21307:36:0;;::::1;::::0;;;21382:6;;;;::::1;21354:36:::0;;:19:::1;:36:::0;;;;;:43;;;;::::1;::::0;;::::1;::::0;;21450:21:::1;21442:73;;;::::0;-1:-1:-1;;;21442:73:0;;11231:2:1;21442:73:0::1;::::0;::::1;11213:21:1::0;11270:2;11250:18;;;11243:30;11309:34;11289:18;;;11282:62;-1:-1:-1;;;11360:18:1;;;11353:33;11403:19;;21442:73:0::1;11029:399:1::0;21442:73:0::1;21563:1;21536:24;21554:4;21536:9;:24::i;:::-;:28;21528:79;;;::::0;-1:-1:-1;;;21528:79:0;;11635:2:1;21528:79:0::1;::::0;::::1;11617:21:1::0;11674:2;11654:18;;;11647:30;11713:34;11693:18;;;11686:62;-1:-1:-1;;;11764:18:1;;;11757:36;11810:19;;21528:79:0::1;11433:402:1::0;21528:79:0::1;21620:69;21637:4;21652:9;21664:24;21682:4;21664:9;:24::i;21620:69::-;21700:9;-1:-1:-1::0;;;;;21700:25:0::1;;21733:21;21778:4;21798:24;21816:4;21798:9;:24::i;:::-;21837:1;21880::::0;4349:42:::1;21964:15;21700:290;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22003:8:0::1;:15:::0;;-1:-1:-1;;;;22003:15:0::1;-1:-1:-1::0;;;22003:15:0::1;::::0;;-1:-1:-1;22043:12:0::1;22029:11;:26:::0;22066:16:::1;:38:::0;;;;22115:15:::1;:36:::0;21007:1152::o;22397:431::-;22484:10;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22515:20:0;::::1;22507:59;;;::::0;-1:-1:-1;;;22507:59:0;;12965:2:1;22507:59:0::1;::::0;::::1;12947:21:1::0;13004:2;12984:18;;;12977:30;13043:28;13023:18;;;13016:56;13089:18;;22507:59:0::1;12763:350:1::0;22507:59:0::1;-1:-1:-1::0;;;;;22585:23:0;::::1;22603:4;22585:23;;::::0;:36:::1;;-1:-1:-1::0;22613:8:0::1;::::0;-1:-1:-1;;;22613:8:0;::::1;;;22612:9;22585:36;22577:101;;;::::0;-1:-1:-1;;;22577:101:0;;13320:2:1;22577:101:0::1;::::0;::::1;13302:21:1::0;13359:2;13339:18;;;13332:30;13398:34;13378:18;;;13371:62;-1:-1:-1;;;13449:18:1;;;13442:50;13509:19;;22577:101:0::1;13118:416:1::0;22577:101:0::1;22716:39;::::0;-1:-1:-1;;;22716:39:0;;22749:4:::1;22716:39;::::0;::::1;962:51:1::0;22689:24:0::1;::::0;-1:-1:-1;;;;;22716:24:0;::::1;::::0;::::1;::::0;935:18:1;;22716:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22774:46;::::0;-1:-1:-1;;;22774:46:0;;-1:-1:-1;;;;;13920:32:1;;;22774:46:0::1;::::0;::::1;13902:51:1::0;13969:18;;;13962:34;;;22689:66:0;;-1:-1:-1;22774:23:0;;::::1;::::0;::::1;::::0;13875:18:1;;22774:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22766:54:::0;22397:431;-1:-1:-1;;;;22397:431:0:o;11326:219::-;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11443:21:0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;;:37;;-1:-1:-1;;11443:37:0::1;::::0;::::1;;::::0;;::::1;::::0;;;11496:41;;9791:51:1;;;9858:18;;;9851:50;11496:41:0::1;::::0;9764:18:1;11496:41:0::1;;;;;;;;11326:219:::0;;:::o;11896:418::-;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;12061:7:::1;:20:::0;;;12092:14:::1;:34:::0;;;12137:13:::1;:32:::0;;;12185:121:::1;::::0;;14459:25:1;;;14515:2;14500:18;;14493:34;;;14543:18;;;14536:34;;;12185:121:0::1;::::0;14447:2:1;14432:18;12185:121:0::1;;;;;;;;11896:418:::0;;;:::o;9321:306::-;278:10;9441:4;9535:24;;;:10;:24;;;;;;;;-1:-1:-1;;;;;9535:33:0;;;;;;;;;;9441:4;;9463:134;;9513:7;;9535:51;;9571:15;;9535:51;:::i;10218:199::-;10323:4;10345:42;278:10;10369:9;10380:6;10345:9;:42::i;10782:215::-;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10895:21:0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;;:37;;-1:-1:-1;;10895:37:0::1;::::0;::::1;;::::0;;::::1;::::0;;;10948:41;;9791:51:1;;;9858:18;;;9851:50;10948:41:0::1;::::0;9764:18:1;10948:41:0::1;9623:284:1::0;11553:335:0;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;11684:4:::1;11671:9;:17;;11663:47;;;::::0;-1:-1:-1;;;11663:47:0;;14783:2:1;11663:47:0::1;::::0;::::1;14765:21:1::0;14822:2;14802:18;;;14795:30;-1:-1:-1;;;14841:18:1;;;14834:47;14898:18;;11663:47:0::1;14581:341:1::0;11663:47:0::1;11743:4;11729:10;:18;;11721:48;;;::::0;-1:-1:-1;;;11721:48:0;;14783:2:1;11721:48:0::1;::::0;::::1;14765:21:1::0;14822:2;14802:18;;;14795:30;-1:-1:-1;;;14841:18:1;;;14834:47;14898:18;;11721:48:0::1;14581:341:1::0;11721:48:0::1;11780:6;:18:::0;;;11809:7:::1;:20:::0;;;11845:35:::1;::::0;;15101:25:1;;;15157:2;15142:18;;15135:34;;;11845:35:0::1;::::0;15074:18:1;11845:35:0::1;14927:248:1::0;13471:409:0;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;13627:11:::1;:26:::0;;13664:13:::1;:30:::0;;;-1:-1:-1;;;;13705:34:0;-1:-1:-1;;;13627:26:0;::::1;;::::0;;::::1;-1:-1:-1::0;;;;13705:34:0;;;;;-1:-1:-1;;;13705:34:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;13755:117:::1;::::0;;15370:41:1;;;15442:2;15427:18;;15420:34;;;15470:18;;15463:50;;;;13755:117:0::1;::::0;15358:2:1;15343:18;13755:117:0::1;15180:339:1::0;12322:218:0;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;12442:4:::1;12422:13;:11;:13::i;:::-;:17;::::0;12438:1:::1;12422:17;:::i;:::-;:24;;;;:::i;:::-;12406:12;:40;;12398:49;;;::::0;::::1;;12458:11;:26:::0;;;12500:32:::1;::::0;160:25:1;;;12500:32:0::1;::::0;148:2:1;133:18;12500:32:0::1;14:177:1::0;12982:481:0;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13156:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:38;;;::::1;;-1:-1:-1::0;;13156:38:0;;::::1;::::0;::::1;::::0;;;13205:19:::1;:28:::0;;;;;:48;;;::::1;;::::0;;::::1;::::0;::::1;::::0;;;13264:15:::1;:24:::0;;;;;;:40;;;::::1;;::::0;::::1;::::0;::::1;::::0;;13320:135;;15959:51:1;;;16026:18;;;16019:50;16085:18;;16078:50;;;;16159:2;16144:18;;16137:50;13320:135:0::1;::::0;15946:3:1;15931:19;13320:135:0::1;;;;;;;12982:481:::0;;;;:::o;12548:207::-;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;12664:3:::1;12644:13;:11;:13::i;:::-;:17;::::0;12660:1:::1;12644:17;:::i;:::-;:23;;;;:::i;:::-;12630:10;:37;;12622:46;;;::::0;::::1;;12679:9;:22:::0;;;12717:30:::1;::::0;160:25:1;;;12717:30:0::1;::::0;148:2:1;133:18;12717:30:0::1;14:177:1::0;1259:281:0;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1362:22:0;::::1;1340:110;;;::::0;-1:-1:-1;;;1340:110:0;;16400:2:1;1340:110:0::1;::::0;::::1;16382:21:1::0;16439:2;16419:18;;;16412:30;16478:34;16458:18;;;16451:62;-1:-1:-1;;;16529:18:1;;;16522:36;16575:19;;1340:110:0::1;16198:402:1::0;1340:110:0::1;1487:6;::::0;;1466:38:::1;::::0;-1:-1:-1;;;;;1466:38:0;;::::1;::::0;1487:6;::::1;::::0;1466:38:::1;::::0;::::1;1515:6;:17:::0;;-1:-1:-1;;;;;;1515:17:0::1;-1:-1:-1::0;;;;;1515:17:0;;;::::1;::::0;;;::::1;::::0;;1259:281::o;22229:160::-;1016:6;;-1:-1:-1;;;;;1016:6:0;278:10;1016:22;1008:67;;;;-1:-1:-1;;;1008:67:0;;;;;;;:::i;:::-;22323:58:::1;::::0;22287:12:::1;::::0;22331:10:::1;::::0;22355:21:::1;::::0;22287:12;22323:58;22287:12;22323:58;22355:21;22331:10;22323:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9836:374:::0;-1:-1:-1;;;;;9964:20:0;;9956:69;;;;-1:-1:-1;;;9956:69:0;;17017:2:1;9956:69:0;;;16999:21:1;17056:2;17036:18;;;17029:30;17095:34;17075:18;;;17068:62;-1:-1:-1;;;17146:18:1;;;17139:34;17190:19;;9956:69:0;16815:400:1;9956:69:0;-1:-1:-1;;;;;10044:21:0;;10036:68;;;;-1:-1:-1;;;10036:68:0;;17422:2:1;10036:68:0;;;17404:21:1;17461:2;17441:18;;;17434:30;17500:34;17480:18;;;17473:62;-1:-1:-1;;;17551:18:1;;;17544:32;17593:19;;10036:68:0;17220:398:1;10036:68:0;-1:-1:-1;;;;;10117:18:0;;;;;;;:10;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10169:33;;160:25:1;;;10169:33:0;;133:18:1;10169:33:0;;;;;;;9836:374;;;:::o;14478:2527::-;14620:8;;14599:4;;-1:-1:-1;;;14620:8:0;;;;14616:2382;;;14652:41;14667:6;14675:9;14686:6;14652:14;:41::i;:::-;14645:48;;;;14616:2382;-1:-1:-1;;;;;14752:20:0;;14726:119;;;;-1:-1:-1;;;14726:119:0;;17825:2:1;14726:119:0;;;17807:21:1;17864:2;17844:18;;;17837:30;17903:34;17883:18;;;17876:62;-1:-1:-1;;;17954:18:1;;;17947:35;17999:19;;14726:119:0;17623:401:1;14726:119:0;-1:-1:-1;;;;;14886:23:0;;14860:120;;;;-1:-1:-1;;;14860:120:0;;18231:2:1;14860:120:0;;;18213:21:1;18270:2;18250:18;;;18243:30;18309:34;18289:18;;;18282:62;-1:-1:-1;;;18360:18:1;;;18353:33;18403:19;;14860:120:0;18029:399:1;14860:120:0;-1:-1:-1;;;;;15022:20:0;;;;;;:12;:20;;;;;;;;15021:21;:49;;;;-1:-1:-1;;;;;;15047:23:0;;;;;;:12;:23;;;;;;;;15046:24;15021:49;14995:142;;;;-1:-1:-1;;;14995:142:0;;18635:2:1;14995:142:0;;;18617:21:1;18674:2;18654:18;;;18647:30;18713:33;18693:18;;;18686:61;18764:18;;14995:142:0;18433:355:1;14995:142:0;-1:-1:-1;;;;;15159:23:0;;;;;;:15;:23;;;;;;;;15158:24;:55;;;;-1:-1:-1;;;;;;15187:26:0;;;;;;:15;:26;;;;;;;;15186:27;15158:55;15154:505;;;15242:8;;-1:-1:-1;;;15242:8:0;;;;15234:34;;;;-1:-1:-1;;;15234:34:0;;18995:2:1;15234:34:0;;;18977:21:1;19034:2;19014:18;;;19007:30;-1:-1:-1;;;19053:18:1;;;19046:43;19106:18;;15234:34:0;18793:337:1;15234:34:0;-1:-1:-1;;;;;15291:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;15315:23:0;;;;;;:12;:23;;;;;;;;15291:47;15287:243;;;15407:11;;15397:6;:21;;15363:147;;;;-1:-1:-1;;;15363:147:0;;19337:2:1;15363:147:0;;;19319:21:1;19376:2;19356:18;;;19349:30;19415:34;19395:18;;;19388:62;-1:-1:-1;;;19466:18:1;;;19459:38;19514:19;;15363:147:0;19135:404:1;15363:147:0;15553:17;;-1:-1:-1;;;15553:17:0;;;;15548:96;;15595:29;15606:6;15614:9;15595:10;:29::i;:::-;-1:-1:-1;;;;;15695:20:0;;15675:14;15695:20;;;:12;:20;;;;;;;;15694:21;:66;;;;-1:-1:-1;;;;;;15737:23:0;;;;;;:12;:23;;;;;;;;15736:24;15694:66;15693:114;;;-1:-1:-1;;;;;;15782:25:0;;;;;;:17;:25;;;;;;;;15693:114;:163;;;-1:-1:-1;;;;;;15828:28:0;;;;;;:17;:28;;;;;;;;15693:163;15675:182;;15897:9;15896:10;:35;;;;-1:-1:-1;;;;;;15911:20:0;;;;;;:12;:20;;;;;;;;15910:21;15896:35;:50;;;;-1:-1:-1;15935:11:0;;-1:-1:-1;;;15935:11:0;;;;15896:50;:63;;;;-1:-1:-1;15951:8:0;;-1:-1:-1;;;15951:8:0;;;;15950:9;15896:63;15874:615;;;15994:28;16025:24;16043:4;16025:9;:24::i;:::-;16144:13;;15994:55;;-1:-1:-1;16099:58:0;;;;;16176:298;;16232:15;;-1:-1:-1;;;16232:15:0;;;;16228:57;;;16272:13;;16249:36;;16228:57;16334:13;;:18;;16350:2;16334:18;:::i;:::-;16311:20;:41;16308:87;;;16377:13;;:18;;16393:2;16377:18;:::i;:::-;16354:41;;16308:87;16418:36;16433:20;16418:14;:36::i;:::-;15975:514;;15874:615;-1:-1:-1;;;;;16524:16:0;;;;;;:8;:16;;;;;;:25;;16543:6;;16524:25;:::i;:::-;-1:-1:-1;;;;;16505:16:0;;;;;;:8;:16;;;;;:44;;;;16588:9;:89;;16643:34;16651:6;16659:9;16670:6;16643:7;:34::i;:::-;16588:89;;;16617:6;16588:89;16698:16;;16566:111;;-1:-1:-1;;;;16698:16:0;;;;:51;;;;-1:-1:-1;;;;;;16719:30:0;;;;;;:19;:30;;;;;;;;16718:31;16698:51;16694:132;;;16816:9;;16800:11;16777:20;16787:9;16777;:20::i;:::-;:34;;;;:::i;:::-;16776:49;;16768:58;;;;;;-1:-1:-1;;;;;16865:19:0;;;;;;:8;:19;;;;;;:33;;16887:11;;16865:33;:::i;:::-;-1:-1:-1;;;;;16843:19:0;;;;;;;:8;:19;;;;;;;:55;;;;16920:40;;;;;;;;;;16948:11;160:25:1;;148:2;133:18;;14:177;16920:40:0;;;;;;;;16982:4;16975:11;;;;;;17540:330;-1:-1:-1;;;;;17703:16:0;;17667:4;17703:16;;;:8;:16;;;;;;:25;;17722:6;;17703:25;:::i;:::-;-1:-1:-1;;;;;17684:16:0;;;;;;;:8;:16;;;;;;:44;;;;17761:19;;;;;;;:28;;17783:6;;17761:28;:::i;:::-;-1:-1:-1;;;;;17739:19:0;;;;;;;:8;:19;;;;;;;:50;;;;17805:35;;;;;;;;;;17833:6;160:25:1;;148:2;133:18;;14:177;17805:35:0;;;;;;;;-1:-1:-1;17858:4:0;17540:330;;;;;:::o;17013:519::-;17122:16;;17107:11;;17092:26;;:12;:26;:::i;:::-;17091:47;17087:438;;;17155:17;:24;;-1:-1:-1;;;;17155:24:0;-1:-1:-1;;;17155:24:0;;;17013:519;;:::o;17087:438::-;927:7;954:6;-1:-1:-1;;;;;17201:17:0;;;954:6;;17201:17;;;;:41;;-1:-1:-1;927:7:0;954:6;-1:-1:-1;;;;;17222:20:0;;;954:6;;17222:20;;17201:41;17197:328;;;-1:-1:-1;;;;;17264:20:0;;;;;;:12;:20;;;;;;;;17263:21;:48;;;;-1:-1:-1;;;;;;17288:23:0;;17306:4;17288:23;;17263:48;17259:116;;;-1:-1:-1;;;;;17332:20:0;;;;;;:12;:20;;;;;:27;;-1:-1:-1;;17332:27:0;17355:4;17332:27;;;17259:116;-1:-1:-1;;;;;17394:23:0;;;;;;:12;:23;;;;;;;;17393:24;:54;;;;-1:-1:-1;;;;;;17421:26:0;;17442:4;17421:26;;17393:54;17389:125;;;-1:-1:-1;;;;;17468:23:0;;;;;;:12;:23;;;;;:30;;-1:-1:-1;;17468:30:0;17494:4;17468:30;;;17389:125;17013:519;;:::o;17878:1064::-;6669:8;:15;;-1:-1:-1;;;;6669:15:0;-1:-1:-1;;;6669:15:0;;;17999:13:::1;::::0;17982:14:::1;::::0;17972:7:::1;::::0;6669:15;;17999:13;17972:24:::1;::::0;::::1;:::i;:::-;:40;;;;:::i;:::-;17950:62;;18023:21;18075:11;18058:13;;18048:7;:23;;;;:::i;:::-;18047:39;;;;:::i;:::-;18023:63;;18097:19;18157:1;18142:11;18131:7;;18121;:17;;;;:::i;:::-;18120:33;;;;:::i;:::-;18119:39;;;;:::i;:::-;18097:61:::0;-1:-1:-1;18169:21:0::1;18217:13:::0;18193:21:::1;18097:61:::0;18193:7;:21:::1;:::i;:::-;:37;;;;:::i;:::-;18169:61;;18243:31;18260:13;18243:16;:31::i;:::-;18397:7;::::0;18312:21:::1;::::0;18287:22:::1;::::0;18397:11:::1;::::0;18407:1:::1;::::0;18397:11:::1;:::i;:::-;18380:13;::::0;18366:27:::1;::::0;:11;:27:::1;:::i;:::-;:43;;;;:::i;:::-;18346:63;;18422:23;18491:1;18478:9;18467:7;;18450:14;:24;;;;:::i;:::-;18449:38;;;;:::i;:::-;18448:44;;;;:::i;:::-;18422:70:::0;-1:-1:-1;18503:23:0::1;18529:32;18422:70:::0;18529:14;:32:::1;:::i;:::-;18503:58:::0;-1:-1:-1;18578:19:0;;18574:113:::1;;18635:22;::::0;18614:61:::1;::::0;-1:-1:-1;;;;;18635:22:0::1;18659:15:::0;18614:20:::1;:61::i;:::-;18703:13;::::0;:17;18699:111:::1;;18737:61;18760:4;18775:6;18784:13;18737:14;:61::i;:::-;;18699:111;18844:1;18826:15;:19;:38;;;;;18863:1;18849:11;:15;18826:38;18822:113;;;18881:42;18894:11;18907:15;18881:12;:42::i;:::-;-1:-1:-1::0;;6707:8:0;:16;;-1:-1:-1;;;;6707:16:0;;;-1:-1:-1;;;;;;;17878:1064:0:o;20115:884::-;20235:7;20255:17;20295:5;20285:6;;20276;:15;;;;:::i;:::-;20275:25;;;;:::i;:::-;-1:-1:-1;;;;;20363:20:0;;20311:19;20363:20;;;:12;:20;;;;;;20255:45;;-1:-1:-1;20341:4:0;;20363:20;;;:47;;-1:-1:-1;;;;;;20387:23:0;;;;;;:12;:23;;;;;;;;20363:47;20359:420;;;20457:5;20440:13;:6;20449:4;20440:13;:::i;:::-;20439:23;;;;:::i;:::-;20427:35;;20359:420;;;-1:-1:-1;;;;;20494:23:0;;;;;;:12;:23;;;;;;;;20490:289;;;20606:12;20588:15;;20574:11;;:29;;;;:::i;:::-;:44;20571:197;;;20668:5;20651:13;:6;20660:4;20651:13;:::i;20571:197::-;20747:5;20736:7;;20727:6;:16;;;;:::i;:::-;20726:26;;;;:::i;:::-;20714:38;;20571:197;20795:13;;20791:163;;-1:-1:-1;;;;;20849:21:0;;;;;;:8;:21;;;;;;:33;;20873:9;;20849:33;:::i;:::-;-1:-1:-1;;;;;20825:21:0;;;;;;;:8;:21;;;;;;;:57;;;;20902:40;;;;;;;;;;20932:9;160:25:1;;148:2;133:18;;14:177;20902:40:0;;;;;;;;20791:163;20973:18;20982:9;20973:6;:18;:::i;:::-;20966:25;20115:884;-1:-1:-1;;;;;;20115:884:0:o;18950:640::-;19100:16;;;19114:1;19100:16;;;;;;;;19076:21;;19100:16;;;;;;;;;;-1:-1:-1;19100:16:0;19076:40;;19145:4;19127;19132:1;19127:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;19127:23:0;;;-1:-1:-1;;;;;19127:23:0;;;;;19171:9;-1:-1:-1;;;;;19171:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19161:4;19166:1;19161:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;19161:26:0;;;-1:-1:-1;;;;;19161:26:0;;;;;19200:56;19217:4;19232:9;19244:11;19200:8;:56::i;:::-;19295:234;;-1:-1:-1;;;19295:234:0;;-1:-1:-1;;;;;19295:9:0;:60;;;;:234;;19370:11;;19396:1;;19440:4;;19467;;19503:15;;19295:234;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19547:35;19564:11;19577:4;19547:35;;;;;;;:::i;14277:193::-;14383:12;14428:9;-1:-1:-1;;;;;14420:23:0;14451:6;14420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14277:193:0:o;19598:509::-;19746:56;19763:4;19778:9;19790:11;19746:8;:56::i;:::-;19845:254;;-1:-1:-1;;;19845:254:0;;-1:-1:-1;;;;;19845:9:0;:25;;;;19878:9;;19845:254;;19911:4;;19931:11;;19957:1;;;;20051:6;;20073:15;;19845:254;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19598:509;;:::o;196:597: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;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;1024:131::-;-1:-1:-1;;;;;1099:31:1;;1089:42;;1079:70;;1145:1;1142;1135:12;1079:70;1024:131;:::o;1160:315::-;1228:6;1236;1289:2;1277:9;1268:7;1264:23;1260:32;1257:52;;;1305:1;1302;1295:12;1257:52;1344:9;1331:23;1363:31;1388:5;1363:31;:::i;:::-;1413:5;1465:2;1450:18;;;;1437:32;;-1:-1:-1;;;1160:315:1:o;1672:456::-;1749:6;1757;1765;1818:2;1806:9;1797:7;1793:23;1789:32;1786:52;;;1834:1;1831;1824:12;1786:52;1873:9;1860:23;1892:31;1917:5;1892:31;:::i;:::-;1942:5;-1:-1:-1;1999:2:1;1984:18;;1971:32;2012:33;1971:32;2012:33;:::i;:::-;1672:456;;2064:7;;-1:-1:-1;;;2118:2:1;2103:18;;;;2090:32;;1672:456::o;2133:118::-;2219:5;2212:13;2205:21;2198:5;2195:32;2185:60;;2241:1;2238;2231:12;2256:241;2312:6;2365:2;2353:9;2344:7;2340:23;2336:32;2333:52;;;2381:1;2378;2371:12;2333:52;2420:9;2407:23;2439:28;2461:5;2439:28;:::i;2691:247::-;2750:6;2803:2;2791:9;2782:7;2778:23;2774:32;2771:52;;;2819:1;2816;2809:12;2771:52;2858:9;2845:23;2877:31;2902:5;2877:31;:::i;3151:750::-;3243:6;3251;3259;3312:2;3300:9;3291:7;3287:23;3283:32;3280:52;;;3328:1;3325;3318:12;3280:52;3368:9;3355:23;3397:18;3438:2;3430:6;3427:14;3424:34;;;3454:1;3451;3444:12;3424:34;3492:6;3481:9;3477:22;3467:32;;3537:7;3530:4;3526:2;3522:13;3518:27;3508:55;;3559:1;3556;3549:12;3508:55;3599:2;3586:16;3625:2;3617:6;3614:14;3611:34;;;3641:1;3638;3631:12;3611:34;3696:7;3689:4;3679:6;3676:1;3672:14;3668:2;3664:23;3660:34;3657:47;3654:67;;;3717:1;3714;3707:12;3654:67;3748:4;3740:13;;;;-1:-1:-1;3772:6:1;-1:-1:-1;;3813:20:1;;3800:34;3843:28;3800:34;3843:28;:::i;:::-;3890:5;3880:15;;;3151:750;;;;;:::o;3906:248::-;3974:6;3982;4035:2;4023:9;4014:7;4010:23;4006:32;4003:52;;;4051:1;4048;4041:12;4003:52;-1:-1:-1;;4074:23:1;;;4144:2;4129:18;;;4116:32;;-1:-1:-1;3906:248:1:o;4159:388::-;4227:6;4235;4288:2;4276:9;4267:7;4263:23;4259:32;4256:52;;;4304:1;4301;4294:12;4256:52;4343:9;4330:23;4362:31;4387:5;4362:31;:::i;:::-;4412:5;-1:-1:-1;4469:2:1;4454:18;;4441:32;4482:33;4441:32;4482:33;:::i;:::-;4534:7;4524:17;;;4159:388;;;;;:::o;4552:382::-;4617:6;4625;4678:2;4666:9;4657:7;4653:23;4649:32;4646:52;;;4694:1;4691;4684:12;4646:52;4733:9;4720:23;4752:31;4777:5;4752:31;:::i;:::-;4802:5;-1:-1:-1;4859:2:1;4844:18;;4831:32;4872:30;4831:32;4872:30;:::i;4939:316::-;5016:6;5024;5032;5085:2;5073:9;5064:7;5060:23;5056:32;5053:52;;;5101:1;5098;5091:12;5053:52;-1:-1:-1;;5124:23:1;;;5194:2;5179:18;;5166:32;;-1:-1:-1;5245:2:1;5230:18;;;5217:32;;4939:316;-1:-1:-1;4939:316:1:o;5484:444::-;5555:6;5563;5571;5624:2;5612:9;5603:7;5599:23;5595:32;5592:52;;;5640:1;5637;5630:12;5592:52;5679:9;5666:23;5698:28;5720:5;5698:28;:::i;:::-;5745:5;-1:-1:-1;5797:2:1;5782:18;;5769:32;;-1:-1:-1;5853:2:1;5838:18;;5825:32;5866:30;5825:32;5866:30;:::i;5933:180::-;5992:6;6045:2;6033:9;6024:7;6020:23;6016:32;6013:52;;;6061:1;6058;6051:12;6013:52;-1:-1:-1;6084:23:1;;5933:180;-1:-1:-1;5933:180:1:o;6118:653::-;6195:6;6203;6211;6219;6272:3;6260:9;6251:7;6247:23;6243:33;6240:53;;;6289:1;6286;6279:12;6240:53;6328:9;6315:23;6347:31;6372:5;6347:31;:::i;:::-;6397:5;-1:-1:-1;6454:2:1;6439:18;;6426:32;6467:30;6426:32;6467:30;:::i;:::-;6516:7;-1:-1:-1;6575:2:1;6560:18;;6547:32;6588:30;6547:32;6588:30;:::i;:::-;6637:7;-1:-1:-1;6696:2:1;6681:18;;6668:32;6709:30;6668:32;6709:30;:::i;:::-;6118:653;;;;-1:-1:-1;6118:653:1;;-1:-1:-1;;6118:653:1:o;6776:127::-;6837:10;6832:3;6828:20;6825:1;6818:31;6868:4;6865:1;6858:15;6892:4;6889:1;6882:15;6908:422;6997:1;7040:5;6997:1;7054:270;7075:7;7065:8;7062:21;7054:270;;;7134:4;7130:1;7126:6;7122:17;7116:4;7113:27;7110:53;;;7143:18;;:::i;:::-;7193:7;7183:8;7179:22;7176:55;;;7213:16;;;;7176:55;7292:22;;;;7252:15;;;;7054:270;;;7058:3;6908:422;;;;;:::o;7335:806::-;7384:5;7414:8;7404:80;;-1:-1:-1;7455:1:1;7469:5;;7404:80;7503:4;7493:76;;-1:-1:-1;7540:1:1;7554:5;;7493:76;7585:4;7603:1;7598:59;;;;7671:1;7666:130;;;;7578:218;;7598:59;7628:1;7619:10;;7642:5;;;7666:130;7703:3;7693:8;7690:17;7687:43;;;7710:18;;:::i;:::-;-1:-1:-1;;7766:1:1;7752:16;;7781:5;;7578:218;;7880:2;7870:8;7867:16;7861:3;7855:4;7852:13;7848:36;7842:2;7832:8;7829:16;7824:2;7818:4;7815:12;7811:35;7808:77;7805:159;;;-1:-1:-1;7917:19:1;;;7949:5;;7805:159;7996:34;8021:8;8015:4;7996:34;:::i;:::-;8066:6;8062:1;8058:6;8054:19;8045:7;8042:32;8039:58;;;8077:18;;:::i;:::-;8115:20;;7335:806;-1:-1:-1;;;7335:806:1:o;8146:140::-;8204:5;8233:47;8274:4;8264:8;8260:19;8254:4;8233:47;:::i;8291:168::-;8331:7;8397:1;8393;8389:6;8385:14;8382:1;8379:21;8374:1;8367:9;8360:17;8356:45;8353:71;;;8404:18;;:::i;:::-;-1:-1:-1;8444:9:1;;8291:168::o;8464:125::-;8504:4;8532:1;8529;8526:8;8523:34;;;8537:18;;:::i;:::-;-1:-1:-1;8574:9:1;;8464:125::o;8594:356::-;8796:2;8778:21;;;8815:18;;;8808:30;8874:34;8869:2;8854:18;;8847:62;8941:2;8926:18;;8594:356::o;8955:128::-;8995:3;9026:1;9022:6;9019:1;9016:13;9013:39;;;9032:18;;:::i;:::-;-1:-1:-1;9068:9:1;;8955:128::o;9491:127::-;9552:10;9547:3;9543:20;9540:1;9533:31;9583:4;9580:1;9573:15;9607:4;9604:1;9597:15;9912:135;9951:3;9972:17;;;9969:43;;9992:18;;:::i;:::-;-1:-1:-1;10039:1:1;10028:13;;9912:135::o;10464:251::-;10534:6;10587:2;10575:9;10566:7;10562:23;10558:32;10555:52;;;10603:1;10600;10593:12;10555:52;10635:9;10629:16;10654:31;10679:5;10654:31;:::i;11840:607::-;-1:-1:-1;;;;;12199:15:1;;;12181:34;;12246:2;12231:18;;12224:34;;;;12289:2;12274:18;;12267:34;;;;12332:2;12317:18;;12310:34;;;;12381:15;;;12375:3;12360:19;;12353:44;12161:3;12413:19;;12406:35;;;;12130:3;12115:19;;11840:607::o;12452:306::-;12540:6;12548;12556;12609:2;12597:9;12588:7;12584:23;12580:32;12577:52;;;12625:1;12622;12615:12;12577:52;12654:9;12648:16;12638:26;;12704:2;12693:9;12689:18;12683:25;12673:35;;12748:2;12737:9;12733:18;12727:25;12717:35;;12452:306;;;;;:::o;13539:184::-;13609:6;13662:2;13650:9;13641:7;13637:23;13633:32;13630:52;;;13678:1;13675;13668:12;13630:52;-1:-1:-1;13701:16:1;;13539:184;-1:-1:-1;13539:184:1:o;14007:245::-;14074:6;14127:2;14115:9;14106:7;14102:23;14098:32;14095:52;;;14143:1;14140;14133:12;14095:52;14175:9;14169:16;14194:28;14216:5;14194:28;:::i;15524:217::-;15564:1;15590;15580:132;;15634:10;15629:3;15625:20;15622:1;15615:31;15669:4;15666:1;15659:15;15697:4;15694:1;15687:15;15580:132;-1:-1:-1;15726:9:1;;15524:217::o;19676:461::-;19729:3;19767:5;19761:12;19794:6;19789:3;19782:19;19820:4;19849:2;19844:3;19840:12;19833:19;;19886:2;19879:5;19875:14;19907:1;19917:195;19931:6;19928:1;19925:13;19917:195;;;19996:13;;-1:-1:-1;;;;;19992:39:1;19980:52;;20052:12;;;;20087:15;;;;20028:1;19946:9;19917:195;;;-1:-1:-1;20128:3:1;;19676:461;-1:-1:-1;;;;;19676:461:1:o;20142:582::-;20441:6;20430:9;20423:25;20484:6;20479:2;20468:9;20464:18;20457:34;20527:3;20522:2;20511:9;20507:18;20500:31;20404:4;20548:57;20600:3;20589:9;20585:19;20577:6;20548:57;:::i;:::-;-1:-1:-1;;;;;20641:32:1;;;;20636:2;20621:18;;20614:60;-1:-1:-1;20705:3:1;20690:19;20683:35;20540:65;20142:582;-1:-1:-1;;;20142:582:1:o;20729:332::-;20936:6;20925:9;20918:25;20979:2;20974;20963:9;20959:18;20952:30;20899:4;20999:56;21051:2;21040:9;21036:18;21028:6;20999:56;:::i

Swarm Source

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