ETH Price: $2,326.50 (+1.64%)

Token

Gyoto (GYOTO)
 

Overview

Max Total Supply

100,000 GYOTO

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: GYOTO-USDC
Balance
1,214.616537473064481782 GYOTO

Value
$0.00
0x1a3f1e24ef97aa80fdf0f9ab150022e1e8b32b06
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:
GYOTO

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-19
*/

/*

GYOTO $GYOTO

THE DUMPLING GANG - For the baddest only

Website: https://gyoto.xyz/

*/

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

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

 /* ======================================== INTERFACES ======================================== */

interface IDexRouter {
    function factory() external pure returns (address);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline
    ) external;
    function addLiquidity(
        address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline
    ) external payable returns (uint256 amountA, uint256 amountB, uint256 liquidity); 
}

interface IDexFactory {
    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 ======================================== */

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

    address public USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; 

    address payable public devWallet = payable(0x7054AAA2Ee9D6Bd788430d09F53F60f617e6fC16); 
    address payable public treasuryWallet = payable(0x69f918fB1eC59E7DEDAD5959a7B17C768143d43d); 
    address payable private developmentWallet = payable(0xa0BA136cCa334cCa33ee6aA38a8aeBbdB750cEb1); 
    address payable private gyoWallet = payable(0xdCB37CB368B83aDd890E80CDDC1fd65436556660); 

    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 = 500;  // buy tax = 5%
    uint256 public sellTax = 500; // sell tax = 5%

    uint256 public autoBurnShare = 1;
    uint256 public lpShare = 2;
    uint256 public developmentShare = 2;
    uint256 public gyoShare = 0; // to be activated later

    uint256 private constant _totalSupply = 100000 * 10**_decimals;
    uint256 private constant supplyPercentageForLP = 6500; // 65% of the token supply goes to the liquidity pool 
    uint256 private constant supplyPercentageForTreasury = 3000; // 30% of the token supply goes to the treasury wallet
    uint256 private constant supplyPercentageForDev = 500; // 5% of the token supply goes to the dev wallet (vested)
    
    uint256 public maxTxAmount = 500 * 10**_decimals; // max tx = 0.50% 
    uint256 public walletMax = 1000 * 10**_decimals; // max wallet = 1%
    uint256 public swapThreshold = 50 * 10**_decimals;

    IDexRouter public immutable dexRouter;
    address public lpPair;

    bool private isInSwap; // to check wether the contract is already in a swap, so as to avoid fees from _transfer function while swapping
    bool public swapEnabled = true; // enable the swap of token stored on the contract from fees
    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;

 /* ============= EVENTS ============= */

    event SwapSettingsUpdated(
        bool swapEnabled_,
        uint256 swapThreshold_,
        bool swapByLimitOnly_
    );
    event SwapTokensForUSDC(uint256 amountIn, address[] path); 
    event AccountWhitelisted(
        address account,
        bool feeExempt,
        bool walletLimitExempt,
        bool txLimitExempt
    );
    event TaxesChanged(uint256 newBuyTax, uint256 newSellTax);
    event TaxDistributionChanged(uint256 newLpShare, uint256 newDevelopmentShare, uint256 newAutoBurnShare, uint256 newGyoShare);
    event DevelopmentWalletChanged(address developmentWallet_);
    event TreasuryWalletChanged(address treasuryWallet_);
    event GyoWalletChanged(address gyoWallet_);
    event EarlyBuyerUpdated(address account, bool isEarlyBuyer_);
    event MarketPairUpdated(address account, bool isMarketPair_);
    event WalletLimitChanged(uint256 walletMax_);
    event MaxTxAmountChanged(uint256 maxTxAmount_);
    event MaxWalletCheckChanged(bool checkWalletLimit_);

 /* ============= MODIFIERS ============= */

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

 /* ============= CONSTRUCTOR ============= */

    constructor() payable {
        dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Router Uniswap V2
        
        isExcludedFromFee[owner()] = true;  
        isExcludedFromFee[address(this)] = true;      
        isExcludedFromFee[address(developmentWallet)] = true;
        isExcludedFromFee[address(treasuryWallet)] = true;
        isExcludedFromFee[address(gyoWallet)] = true;
        isExcludedFromFee[address(dexRouter)] = true;
        isExcludedFromFee[address(0xdead)] = true; 

        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(developmentWallet)] = true;
        isTxLimitExempt[address(treasuryWallet)] = true;
        isTxLimitExempt[address(gyoWallet)] = true;
        isTxLimitExempt[address(dexRouter)] = true;
        isTxLimitExempt[address(0xdead)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[address(developmentWallet)] = true;
        isWalletLimitExempt[address(treasuryWallet)] = true;
        isWalletLimitExempt[address(gyoWallet)] = true;
        isWalletLimitExempt[address(dexRouter)] = true;
        isWalletLimitExempt[address(0xdead)] = true;

        allowances[address(this)][address(dexRouter)] = _totalSupply;

        balances[address(this)] = _totalSupply * supplyPercentageForLP / 10000; // tokens for LP
        emit Transfer(address(0), address(this), balanceOf(address(this)));

        balances[treasuryWallet] = _totalSupply * supplyPercentageForTreasury / 10000; // tokens for TreasuryWallet 
        emit Transfer(address(0), treasuryWallet, balanceOf(treasuryWallet));

        balances[devWallet] = _totalSupply * supplyPercentageForDev / 10000; // tokens for DevWallet (vested)
        emit Transfer(address(0), devWallet, balanceOf(devWallet));

    }

    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 updateTaxes(uint256 newBuyTax, uint256 newSellTax) external onlyOwner { 
        require(newBuyTax <= 1000, "Cannot exceed 10%"); //The maximum buy tax amount can't be set to a value higher than 10%
        require(newSellTax <= 1000, "Cannot exceed 10%"); //The maximum sell tax amount can't be set to a value higher than 10%
        buyTax = newBuyTax;
        sellTax = newSellTax;
        emit TaxesChanged(newBuyTax, newSellTax);
    }

    function updateTaxDistribution(
        uint256 newLpShare,
        uint256 newDevelopmentShare,
        uint256 newAutoBurnShare,
        uint256 newGyoShare
    ) external onlyOwner {
        lpShare = newLpShare;
        developmentShare = newDevelopmentShare;
        autoBurnShare = newAutoBurnShare; 
        gyoShare = newGyoShare;
        emit TaxDistributionChanged(
            newLpShare,
            newDevelopmentShare,
            newAutoBurnShare,
            newGyoShare
        );
    }

    function updateMaxTxAmount(uint256 maxTxAmount_) external onlyOwner { 
        require(maxTxAmount_ >= totalSupply() * 50 / 10000); // max tx amount can't be set to a value lower than 0.5%
        maxTxAmount = maxTxAmount_;
        emit MaxTxAmountChanged(maxTxAmount_);
    }

    function updateWalletLimit(uint256 walletMax_) external onlyOwner {
        require(walletMax_ >= totalSupply() * 1 / 100); // max wallet can't be set to a value lower than 1%
        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 updateDevelopmentWallet(address developmentWallet_) external onlyOwner {
        require(developmentWallet_ != address(0), "New address cannot be zero address");
        developmentWallet = payable(developmentWallet_);
        emit DevelopmentWalletChanged(developmentWallet_);
    }

    function updateTreasuryWallet(address treasuryWallet_) external onlyOwner {
        require(treasuryWallet_ != address(0), "New address cannot be zero address");
        treasuryWallet = payable(treasuryWallet_);
        emit TreasuryWalletChanged(treasuryWallet_);
    }

    function updateGyoWallet(address gyoWallet_) external onlyOwner {
        require(gyoWallet_ != address(0), "New address cannot be zero address");
        gyoWallet = payable(gyoWallet_);
        emit GyoWalletChanged(gyoWallet_);
    }

    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; 
                    distributeFees(contractTokenBalance);
                }
            }            
            uint256 finalAmount = isTaxFree ? amount : takeFee(sender, recipient, amount);

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

            _basicTransfer(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 distributeFees(uint256 contractTokenBalance) private lockTheSwap { 
        uint256 totalSharesWithoutLP = getTotalFeeShare() - lpShare ; //LP share was automatically added to the pool (Spiral method)
        uint256 tokensForBurn = (contractTokenBalance * autoBurnShare) / totalSharesWithoutLP;
        uint256 tokensForGyo = (contractTokenBalance * gyoShare) / totalSharesWithoutLP;
        uint256 tokensForSwap = contractTokenBalance - tokensForBurn - tokensForGyo;

        swapTokensForUSDC(tokensForSwap); //swap USDC for developmentWallet

        //development fees
        uint256 usdcForMarketing = IERC20(USDC).balanceOf(address(this)); 
        if (usdcForMarketing > 0) {
            IERC20(USDC).transfer(developmentWallet, usdcForMarketing); 
        }

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

        //gyo fees (to be activated later)
         if (gyoShare > 0) {
            _basicTransfer(address(this), gyoWallet, tokensForGyo);
        }
    }

    function swapTokensForUSDC(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> usdc
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = USDC;

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

        //swap
        dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens( 
            tokenAmount,
            0, 
            path,
            developmentWallet,
            block.timestamp
        );

        emit SwapTokensForUSDC(tokenAmount, path); 
    }

    function getTotalFeeShare() public view returns(uint256){
        return lpShare + developmentShare + autoBurnShare + gyoShare;
    }

    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]) {
            // bot penalty
            if(launchBlock + sellBlockAmount > block.number){
                feeAmount = (amount * 9900) / 10000;
            } else {
                feeAmount = (amount * sellTax) / 10000;
            }
        }

        //auto LP (Spiral method)
        if (feeAmount > 0) { 
            _basicTransfer(sender, feeReceiver, feeAmount); // inject fees into the contract    

            if(lpShare > 0){
                uint256 lpFee = (feeAmount * lpShare) / getTotalFeeShare();
                _basicTransfer(feeReceiver, lpPair, lpFee); // re-inject the liquidity shares now held by the contract into the LP
            }
        }
        return amount - feeAmount;
    }

    function launch(uint256 _snipePenaltyBlocks, uint256 _sellPenaltyBlocks) external onlyOwner {
        require(!launched, "Trading is already active, cannot relaunch.");
        require(lpPair != address(0), "Liquidity has not been created yet.");
        
        launchBlock = block.number;
        snipeBlockAmount = _snipePenaltyBlocks;
        sellBlockAmount = _sellPenaltyBlocks;
        launched = true;
    }

    function createLiquidityPool() external onlyOwner returns(bool){ //Create LP pool (require tokens and USDC on the contract)
        require(!launched, "Contract is already launched.");
        require(lpPair == address(0), "Liquidity pool is already created.");
        require(balanceOf(address(this)) > 0, "Must have Tokens on contract to launch"); 
        require(IERC20(USDC).balanceOf(address(this)) > 0, "Must have USDC on contract to launch"); 

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

        //approve
        _approve(address(this), address(dexRouter), balanceOf(address(this)));
        IERC20(USDC).approve(address(dexRouter), IERC20(USDC).balanceOf(address(this)));

        //add liqu
        dexRouter.addLiquidity(
            address(this),
            USDC,
            balanceOf(address(this)),
            IERC20(USDC).balanceOf(address(this)),
            0, 
            0, 
            address(devWallet),
            block.timestamp
        );
        return true;
    }

    // withdraw ETH if stuck or someone sends to the contract
    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));
        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":"developmentWallet_","type":"address"}],"name":"DevelopmentWalletChanged","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":"gyoWallet_","type":"address"}],"name":"GyoWalletChanged","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":"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":"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":"SwapTokensForUSDC","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newLpShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newDevelopmentShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAutoBurnShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newGyoShare","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":"address","name":"treasuryWallet_","type":"address"}],"name":"TreasuryWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletMax_","type":"uint256"}],"name":"WalletLimitChanged","type":"event"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"createLiquidityPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"getTotalFeeShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gyoShare","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":[{"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":[],"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":[],"name":"treasuryWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"developmentWallet_","type":"address"}],"name":"updateDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gyoWallet_","type":"address"}],"name":"updateGyoWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount_","type":"uint256"}],"name":"updateMaxTxAmount","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":[{"internalType":"uint256","name":"newLpShare","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentShare","type":"uint256"},{"internalType":"uint256","name":"newAutoBurnShare","type":"uint256"},{"internalType":"uint256","name":"newGyoShare","type":"uint256"}],"name":"updateTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"treasuryWallet_","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"walletMax_","type":"uint256"}],"name":"updateWalletLimit","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"}]

60a0604052600180546001600160a01b031990811673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48178255600280548216737054aaa2ee9d6bd788430d09f53f60f617e6fc161781556003805483167369f918fb1ec59e7dedad5959a7b17c768143d43d17905560048054831673a0ba136cca334cca33ee6aa38a8aebbdb750ceb11790556005805490921673dcb37cb368b83add890e80cddc1fd65436556660179091556101f4600d819055600e55600f91909155601081905560115560006012908155620000d390600a62000715565b620000e1906101f46200072d565b601355620000f26012600a62000715565b62000100906103e86200072d565b601455620001116012600a62000715565b6200011e9060326200072d565b6015556016805464ffffffffff60a81b1916630100000160a81b1790556000601781905560188190556019819055620001543390565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d608052600160086000620001cf6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260089093528183208054851660019081179091556004548216845282842080548616821790556003548216845282842080548616821790556005548216845282842080548616821790556080519091168352908220805484168217905561dead82527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980549093168117909255600b90620002a36000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600b9093528183208054851660019081179091556004548216845282842080548616821790556003548216845282842080548616821790556005548216845282842080548616821790556080519091168352908220805484168217905561dead82527f44433eeeda1d04bdae79f62169cdb2ab0a6af287fa15706d3fafdbac5fac341580549093168117909255600c90620003776000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600c9093528183208054851660019081179091556004548216845282842080548616821790556003548216845282842080548616821790556005548216845282842080548616821790556080519091168352908220805484168217905561dead9091527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c8054909216179055620004426012600a62000715565b6200045190620186a06200072d565b3060009081526007602090815260408083206080516001600160a01b031684529091529020556127106119646200048b6012600a62000715565b6200049a90620186a06200072d565b620004a691906200072d565b620004b291906200074f565b306000818152600660205260408120839055909160008051602062003a0c8339815191529060405190815260200160405180910390a3612710610bb8620004fc6012600a62000715565b6200050b90620186a06200072d565b6200051791906200072d565b6200052391906200074f565b600380546001600160a01b03908116600090815260066020526040808220949094559154168082529181205460008051602062003a0c8339815191529060405190815260200160405180910390a36127106101f4620005856012600a62000715565b6200059490620186a06200072d565b620005a091906200072d565b620005ac91906200074f565b600280546001600160a01b03908116600090815260066020526040808220949094559154168082529181205460008051602062003a0c8339815191529060405190815260200160405180910390a362000772565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006575781600019048211156200063b576200063b62000600565b808516156200064957918102915b93841c93908002906200061b565b509250929050565b60008262000670575060016200070f565b816200067f575060006200070f565b8160018114620006985760028114620006a357620006c3565b60019150506200070f565b60ff841115620006b757620006b762000600565b50506001821b6200070f565b5060208310610133831016604e8410600b8410161715620006e8575081810a6200070f565b620006f4838362000616565b80600019048211156200070b576200070b62000600565b0290505b92915050565b60006200072660ff8416836200065f565b9392505050565b60008160001904831182151516156200074a576200074a62000600565b500290565b6000826200076d57634e487b7160e01b600052601260045260246000fd5b500490565b608051613254620007b8600039600081816104190152818161176a015281816118d20152818161192401528181611a0d01528181612b040152612b4401526132546000f3fe60806040526004361061039b5760003560e01c8063844d591c116101dc578063c4f89f3911610102578063e932ec9a116100a0578063f2fde38b1161006f578063f2fde38b14610aec578063f5648a4f14610b0c578063f872858a14610b21578063fe31452414610b4257600080fd5b8063e932ec9a14610a76578063ebc38ab014610a96578063f023f57314610aac578063f0ed555b14610acc57600080fd5b8063d00efb2f116100dc578063d00efb2f146109e3578063d08c5fc5146109f9578063dd62ed3e14610a0f578063e227cf9514610a5557600080fd5b8063c4f89f391461097d578063c867d60b1461099d578063cc1776d3146109cd57600080fd5b80638ea5220f1161017a578063a457c2d711610149578063a457c2d714610908578063a9059cbb14610928578063af7dd21f14610948578063baa16dc31461095d57600080fd5b80638ea5220f1461086a578063916d69431461088a57806395d89b41146108ba5780639691f1f1146108e857600080fd5b80638c0b5e22116101b65780638c0b5e22146107ff5780638d48e2ae146108155780638da5cb5b1461082b5780638e3657aa1461084957600080fd5b8063844d591c1461078f57806389a30271146107af5780638b42507f146107cf57600080fd5b80634626402b116102c15780636ddd17131161025f578063809d458d1161022e578063809d458d1461071957806382760cd2146107395780638366e79a1461075957806383e13fe31461077957600080fd5b80636ddd1713146106a257806370a08231146106c3578063715018a6146106e35780638091f3bf146106f857600080fd5b80635342acb41161029b5780635342acb41461061d57806354eb51211461064d5780636256d1811461066d578063630160bf1461068d57600080fd5b80634626402b146105c75780634f7041a5146105e75780634f7fbdde146105fd57600080fd5b806323b872dd11610339578063313ce56711610308578063313ce5671461053b57806339509351146105575780633ecad27114610577578063452ed4f1146105a757600080fd5b806323b872dd146104d05780632563ae83146104f05780632943bdab146105105780632b112e491461052657600080fd5b8063095ea7b311610375578063095ea7b3146104535780631006ee0c14610483578063174e078b146104a557806318160ddd146104bb57600080fd5b80630445b667146103a757806306fdde03146103d05780630758d9241461040757600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bd60155481565b6040519081526020015b60405180910390f35b3480156103dc57600080fd5b5060408051808201909152600581526447796f746f60d81b60208201525b6040516103c79190612be6565b34801561041357600080fd5b5061043b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103c7565b34801561045f57600080fd5b5061047361046e366004612c4c565b610b58565b60405190151581526020016103c7565b34801561048f57600080fd5b506104a361049e366004612c78565b610b6f565b005b3480156104b157600080fd5b506103bd60185481565b3480156104c757600080fd5b506103bd610c76565b3480156104dc57600080fd5b506104736104eb366004612c9a565b610c96565b3480156104fc57600080fd5b506104a361050b366004612ce9565b610cea565b34801561051c57600080fd5b506103bd600f5481565b34801561053257600080fd5b506103bd610d6c565b34801561054757600080fd5b50604051601281526020016103c7565b34801561056357600080fd5b50610473610572366004612c4c565b610d9c565b34801561058357600080fd5b50610473610592366004612d06565b60096020526000908152604090205460ff1681565b3480156105b357600080fd5b5060165461043b906001600160a01b031681565b3480156105d357600080fd5b5060035461043b906001600160a01b031681565b3480156105f357600080fd5b506103bd600d5481565b34801561060957600080fd5b506104a3610618366004612d23565b610dd3565b34801561062957600080fd5b50610473610638366004612d06565b60086020526000908152604090205460ff1681565b34801561065957600080fd5b506104a3610668366004612d3c565b610e5d565b34801561067957600080fd5b506104a3610688366004612d23565b610f68565b34801561069957600080fd5b506103bd610ff3565b3480156106ae57600080fd5b5060165461047390600160a81b900460ff1681565b3480156106cf57600080fd5b506103bd6106de366004612d06565b61101f565b3480156106ef57600080fd5b506104a361103a565b34801561070457600080fd5b5060165461047390600160b81b900460ff1681565b34801561072557600080fd5b506104a3610734366004612d06565b6110ae565b34801561074557600080fd5b506104a3610754366004612c78565b61114c565b34801561076557600080fd5b50610473610774366004612dc2565b61126a565b34801561078557600080fd5b506103bd60195481565b34801561079b57600080fd5b506104a36107aa366004612dfb565b6113ea565b3480156107bb57600080fd5b5060015461043b906001600160a01b031681565b3480156107db57600080fd5b506104736107ea366004612d06565b600b6020526000908152604090205460ff1681565b34801561080b57600080fd5b506103bd60135481565b34801561082157600080fd5b506103bd60115481565b34801561083757600080fd5b506000546001600160a01b031661043b565b34801561085557600080fd5b5060165461047390600160b01b900460ff1681565b34801561087657600080fd5b5060025461043b906001600160a01b031681565b34801561089657600080fd5b506104736108a5366004612d06565b600a6020526000908152604090205460ff1681565b3480156108c657600080fd5b5060408051808201909152600581526447594f544f60d81b60208201526103fa565b3480156108f457600080fd5b506104a3610903366004612d06565b611470565b34801561091457600080fd5b50610473610923366004612c4c565b61150e565b34801561093457600080fd5b50610473610943366004612c4c565b611545565b34801561095457600080fd5b50610473611552565b34801561096957600080fd5b506104a3610978366004612dfb565b611b57565b34801561098957600080fd5b506104a3610998366004612e29565b611bdd565b3480156109a957600080fd5b506104736109b8366004612d06565b600c6020526000908152604090205460ff1681565b3480156109d957600080fd5b506103bd600e5481565b3480156109ef57600080fd5b506103bd60175481565b348015610a0557600080fd5b506103bd60125481565b348015610a1b57600080fd5b506103bd610a2a366004612dc2565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610a6157600080fd5b5060165461047390600160c81b900460ff1681565b348015610a8257600080fd5b506104a3610a91366004612e5b565b611c6a565b348015610aa257600080fd5b506103bd60105481565b348015610ab857600080fd5b506104a3610ac7366004612d06565b611d13565b348015610ad857600080fd5b506104a3610ae7366004612e92565b611db1565b348015610af857600080fd5b506104a3610b07366004612d06565b611e6b565b348015610b1857600080fd5b506104a3611f55565b348015610b2d57600080fd5b5060165461047390600160c01b900460ff1681565b348015610b4e57600080fd5b506103bd60145481565b6000610b65338484611fc1565b5060015b92915050565b6000546001600160a01b03163314610ba25760405162461bcd60e51b8152600401610b9990612eee565b60405180910390fd5b6103e8821115610be85760405162461bcd60e51b815260206004820152601160248201527043616e6e6f74206578636565642031302560781b6044820152606401610b99565b6103e8811115610c2e5760405162461bcd60e51b815260206004820152601160248201527043616e6e6f74206578636565642031302560781b6044820152606401610b99565b600d829055600e81905560408051838152602081018390527f5eee0b95930ee59011f34615b0b7dc6cc58c01d1f07d04a01a3a1e70d2554cf091015b60405180910390a15050565b6000610c846012600a61301d565b610c9190620186a061302c565b905090565b6000610ca38484846120e5565b506001600160a01b038416600090815260076020908152604080832033808552925290912054610cdf918691610cda90869061304b565b611fc1565b5060015b9392505050565b6000546001600160a01b03163314610d145760405162461bcd60e51b8152600401610b9990612eee565b60168054821515600160c01b0260ff60c01b199091161790556040517fd77f03fb55ba6b94fd92cce5c4299c19942acdde281980bdcd02f132dd27fd3490610d6190831515815260200190565b60405180910390a150565b6000610d7961dead61101f565b610d856012600a61301d565b610d9290620186a061302c565b610c91919061304b565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610b65918590610cda90869061305e565b6000546001600160a01b03163314610dfd5760405162461bcd60e51b8152600401610b9990612eee565b6064610e07610c76565b610e1290600161302c565b610e1c9190613071565b811015610e2857600080fd5b60148190556040518181527f7872485612198920508f0a96f4e47084f84df76e33b2b1d76ceff0dc83499aa690602001610d61565b6000546001600160a01b03163314610e875760405162461bcd60e51b8152600401610b9990612eee565b60005b82811015610f625781600a6000868685818110610ea957610ea9613093565b9050602002016020810190610ebe9190612d06565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0861ffea819c7470cbefb1765bce78388684cd327b561fd217484236b4cbb2d3848483818110610f1957610f19613093565b9050602002016020810190610f2e9190612d06565b604080516001600160a01b03909216825284151560208301520160405180910390a180610f5a816130a9565b915050610e8a565b50505050565b6000546001600160a01b03163314610f925760405162461bcd60e51b8152600401610b9990612eee565b612710610f9d610c76565b610fa890603261302c565b610fb29190613071565b811015610fbe57600080fd5b60138190556040518181527fcff95ed354a1a3fcbabf882bfa4a9319f55569c324478c800820398451df187190602001610d61565b6000601254600f5460115460105461100b919061305e565b611015919061305e565b610c91919061305e565b6001600160a01b031660009081526006602052604090205490565b6000546001600160a01b031633146110645760405162461bcd60e51b8152600401610b9990612eee565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110d85760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b0381166110fe5760405162461bcd60e51b8152600401610b99906130c2565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f2551960305e8f85b09658bb3075878e3e3cef37a5f7b5d43261f5e6f36b3d6a490602001610d61565b6000546001600160a01b031633146111765760405162461bcd60e51b8152600401610b9990612eee565b601654600160b81b900460ff16156111e45760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610b99565b6016546001600160a01b03166112485760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920686173206e6f74206265656e2063726561746564207960448201526232ba1760e91b6064820152608401610b99565b436017556018919091556019556016805460ff60b81b1916600160b81b179055565b600080546001600160a01b031633146112955760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b0383166112eb5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610b99565b306001600160a01b0384160361130057600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b9190613104565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156113be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e2919061311d565b949350505050565b6000546001600160a01b031633146114145760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b038216600081815260096020908152604091829020805460ff19168515159081179091558251938452908301527f160ff69a72bc70f3e792a86c87d27070e421562197f032d96bcab11c5010222e9101610c6a565b6000546001600160a01b0316331461149a5760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b0381166114c05760405162461bcd60e51b8152600401610b99906130c2565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f089a99b3753cf41bde209d8df3748c1880a2581e31f702e7f057b0dda0a9dde990602001610d61565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610b65918590610cda90869061304b565b6000610cdf3384846120e5565b600080546001600160a01b0316331461157d5760405162461bcd60e51b8152600401610b9990612eee565b601654600160b81b900460ff16156115d75760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420697320616c7265616479206c61756e636865642e0000006044820152606401610b99565b6016546001600160a01b03161561163b5760405162461bcd60e51b815260206004820152602260248201527f4c697175696469747920706f6f6c20697320616c726561647920637265617465604482015261321760f11b6064820152608401610b99565b60006116463061101f565b116116a25760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610b99565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f9190613104565b116117685760405162461bcd60e51b8152602060048201526024808201527f4d75737420686176652055534443206f6e20636f6e747261637420746f206c616044820152630eadcc6d60e31b6064820152608401610b99565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ea919061313a565b6001546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af115801561183b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185f919061313a565b601680546001600160a01b0319166001600160a01b0392909216918217905561188757600080fd5b601680546001600160a01b0390811660009081526009602090815260408083208054600160ff19918216811790925595549094168352600c909152902080549092161790556118fa307f0000000000000000000000000000000000000000000000000000000000000000610cda8261101f565b6001546040516370a0823160e01b81523060048201526001600160a01b039091169063095ea7b3907f00000000000000000000000000000000000000000000000000000000000000009083906370a0823190602401602060405180830381865afa15801561196c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119909190613104565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156119db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ff919061311d565b506001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163e8e3370091309116611a418261101f565b6001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aad9190613104565b60025460405160e087901b6001600160e01b03191681526001600160a01b03958616600482015293851660248501526044840192909252606483015260006084830181905260a48301529190911660c48201524260e4820152610104016060604051808303816000875af1158015611b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4d9190613157565b5050506001905090565b6000546001600160a01b03163314611b815760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b0382166000818152600a6020908152604091829020805460ff19168515159081179091558251938452908301527f0861ffea819c7470cbefb1765bce78388684cd327b561fd217484236b4cbb2d39101610c6a565b6000546001600160a01b03163314611c075760405162461bcd60e51b8152600401610b9990612eee565b60108490556011839055600f82905560128190556040805185815260208101859052908101839052606081018290527f4d686d73fea437acf80f449d397171574a7b9bb291858621998231cd1c562b87906080015b60405180910390a150505050565b6000546001600160a01b03163314611c945760405162461bcd60e51b8152600401610b9990612eee565b60168054601584905561ffff60a81b1916600160a81b85151590810260ff60b01b191691909117600160b01b8415159081029190911790925560408051918252602082018590528101919091527f11208aed08835f646702af16c636fb4351554fa2f623991905cadb0293a88afc9060600160405180910390a1505050565b6000546001600160a01b03163314611d3d5760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b038116611d635760405162461bcd60e51b8152600401610b99906130c2565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f2e184dc34ab031d763441c588bd08760997797e8550c76fd439a20571233cc2090602001610d61565b6000546001600160a01b03163314611ddb5760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b0384166000818152600860209081526040808320805488151560ff199182168117909255600c845282852080548915159083168117909155600b855294839020805488151592168217905582519586529285015283019190915260608201527f12d9c9f75d95e930caf8a1f18460585ce2349b367898dbf23e394afef2d35d9590608001611c5c565b6000546001600160a01b03163314611e955760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b038116611efa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b99565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611f7f5760405162461bcd60e51b8152600401610b9990612eee565b604051600090339047908381818185875af1925050503d8060008114610f62576040519150601f19603f3d011682016040523d82523d6000602084013e610f62565b6001600160a01b0383166120235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b99565b6001600160a01b0382166120845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b99565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601654600090600160a01b900460ff161561210c57612105848484612583565b9050610ce3565b6001600160a01b0384166121705760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b99565b6001600160a01b0383166121d25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b99565b6001600160a01b0384166000908152600a602052604090205460ff1615801561221457506001600160a01b0383166000908152600a602052604090205460ff16155b6122605760405162461bcd60e51b815260206004820152601f60248201527f546f2f66726f6d206164647265737320697320626c61636b6c697374656421006044820152606401610b99565b6001600160a01b0384166000908152600b602052604090205460ff161580156122a257506001600160a01b0383166000908152600b602052604090205460ff16155b156123b257601654600160b81b900460ff166122f05760405162461bcd60e51b815260206004820152600d60248201526c2737ba102630bab731b432b21760991b6044820152606401610b99565b6001600160a01b03841660009081526009602052604090205460ff168061232f57506001600160a01b03831660009081526009602052604090205460ff165b15612397576013548211156123975760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b99565b601654600160c81b900460ff166123b2576123b2848461263d565b6001600160a01b03841660009081526009602052604081205460ff161580156123f457506001600160a01b03841660009081526009602052604090205460ff16155b8061241757506001600160a01b03851660009081526008602052604090205460ff165b8061243a57506001600160a01b03841660009081526008602052604090205460ff165b90508015801561246357506001600160a01b03851660009081526009602052604090205460ff16155b80156124785750601654600160a81b900460ff165b801561248e5750601654600160a01b900460ff16155b156124f757600061249e3061101f565b60155490915081108015906124f457601654600160b01b900460ff16156124c55760155491505b6015546124d390601461302c565b8211156124eb576015546124e890601461302c565b91505b6124f482612755565b50505b60008161250e57612509868686612920565b612510565b835b601654909150600160c01b900460ff16801561254557506001600160a01b0385166000908152600c602052604090205460ff16155b1561256c57601454816125578761101f565b612561919061305e565b111561256c57600080fd5b612577868683612583565b50600192505050610ce3565b6001600160a01b0383166000908152600660205260408120546125a790839061304b565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546125d790839061305e565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061262b9086815260200190565b60405180910390a35060019392505050565b60185460175461264d904361304b565b111561266a576016805460ff60c81b1916600160c81b1790555050565b6000546001600160a01b0383811691161480159061269657506000546001600160a01b03828116911614155b15612751576001600160a01b03821660009081526009602052604090205460ff161580156126cd57506001600160a01b0382163014155b156126f6576001600160a01b0382166000908152600a60205260409020805460ff191660011790555b6001600160a01b03811660009081526009602052604090205460ff1615801561272857506001600160a01b0381163014155b15612751576001600160a01b0381166000908152600a60205260409020805460ff191660011790555b5050565b6016805460ff60a01b1916600160a01b179055601054600090612776610ff3565b612780919061304b565b9050600081600f5484612793919061302c565b61279d9190613071565b9050600082601254856127b0919061302c565b6127ba9190613071565b90506000816127c9848761304b565b6127d3919061304b565b90506127de81612a79565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284b9190613104565b905080156128d2576001546004805460405163a9059cbb60e01b81526001600160a01b0391821692810192909252602482018490529091169063a9059cbb906044016020604051808303816000875af11580156128ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d0919061311d565b505b600f54156128e9576128e73061dead86612583565b505b6012541561290b576005546129099030906001600160a01b031685612583565b505b50506016805460ff60a01b1916905550505050565b600080612710600d5484612934919061302c565b61293e9190613071565b6001600160a01b0386166000908152600a6020526040902054909150309060ff168061298257506001600160a01b0385166000908152600a602052604090205460ff165b156129a757612710612996856126ac61302c565b6129a09190613071565b9150612a0c565b6001600160a01b03851660009081526009602052604090205460ff1615612a0c57436019546017546129d9919061305e565b11156129ee57612710612996856126ac61302c565b612710600e54856129ff919061302c565b612a099190613071565b91505b8115612a6557612a1d868284612583565b5060105415612a65576000612a30610ff3565b601054612a3d908561302c565b612a479190613071565b601654909150612a629083906001600160a01b031683612583565b50505b612a6f828561304b565b9695505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612aae57612aae613093565b6001600160a01b0392831660209182029290920101526001805483519216918391908110612ade57612ade613093565b60200260200101906001600160a01b031690816001600160a01b031681525050612b29307f000000000000000000000000000000000000000000000000000000000000000084611fc1565b60048054604051635c11d79560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693635c11d79593612b839388936000938993909116914291016131c9565b600060405180830381600087803b158015612b9d57600080fd5b505af1158015612bb1573d6000803e3d6000fd5b505050507f5f5f38e77198863582c9bb3300d9a1f0424ae4438a7e2aac19539cf36cefc0cd8282604051610c6a929190613205565b600060208083528351808285015260005b81811015612c1357858101830151858201604001528201612bf7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612c4957600080fd5b50565b60008060408385031215612c5f57600080fd5b8235612c6a81612c34565b946020939093013593505050565b60008060408385031215612c8b57600080fd5b50508035926020909101359150565b600080600060608486031215612caf57600080fd5b8335612cba81612c34565b92506020840135612cca81612c34565b929592945050506040919091013590565b8015158114612c4957600080fd5b600060208284031215612cfb57600080fd5b8135610ce381612cdb565b600060208284031215612d1857600080fd5b8135610ce381612c34565b600060208284031215612d3557600080fd5b5035919050565b600080600060408486031215612d5157600080fd5b833567ffffffffffffffff80821115612d6957600080fd5b818601915086601f830112612d7d57600080fd5b813581811115612d8c57600080fd5b8760208260051b8501011115612da157600080fd5b60209283019550935050840135612db781612cdb565b809150509250925092565b60008060408385031215612dd557600080fd5b8235612de081612c34565b91506020830135612df081612c34565b809150509250929050565b60008060408385031215612e0e57600080fd5b8235612e1981612c34565b91506020830135612df081612cdb565b60008060008060808587031215612e3f57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e7057600080fd5b8335612e7b81612cdb565b9250602084013591506040840135612db781612cdb565b60008060008060808587031215612ea857600080fd5b8435612eb381612c34565b93506020850135612ec381612cdb565b92506040850135612ed381612cdb565b91506060850135612ee381612cdb565b939692955090935050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612f74578160001904821115612f5a57612f5a612f23565b80851615612f6757918102915b93841c9390800290612f3e565b509250929050565b600082612f8b57506001610b69565b81612f9857506000610b69565b8160018114612fae5760028114612fb857612fd4565b6001915050610b69565b60ff841115612fc957612fc9612f23565b50506001821b610b69565b5060208310610133831016604e8410600b8410161715612ff7575081810a610b69565b6130018383612f39565b806000190482111561301557613015612f23565b029392505050565b6000610ce360ff841683612f7c565b600081600019048311821515161561304657613046612f23565b500290565b81810381811115610b6957610b69612f23565b80820180821115610b6957610b69612f23565b60008261308e57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000600182016130bb576130bb612f23565b5060010190565b60208082526022908201527f4e657720616464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b60006020828403121561311657600080fd5b5051919050565b60006020828403121561312f57600080fd5b8151610ce381612cdb565b60006020828403121561314c57600080fd5b8151610ce381612c34565b60008060006060848603121561316c57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156131be5781516001600160a01b031687529582019590820190600101613199565b509495945050505050565b85815284602082015260a0604082015260006131e860a0830186613185565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006113e2604083018461318556fea2646970667358221220456fcdbf0900eb3c7e54c2ec54ac4b7dced8cd4f09a8e49ea93c150cda0454e764736f6c63430008100033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061039b5760003560e01c8063844d591c116101dc578063c4f89f3911610102578063e932ec9a116100a0578063f2fde38b1161006f578063f2fde38b14610aec578063f5648a4f14610b0c578063f872858a14610b21578063fe31452414610b4257600080fd5b8063e932ec9a14610a76578063ebc38ab014610a96578063f023f57314610aac578063f0ed555b14610acc57600080fd5b8063d00efb2f116100dc578063d00efb2f146109e3578063d08c5fc5146109f9578063dd62ed3e14610a0f578063e227cf9514610a5557600080fd5b8063c4f89f391461097d578063c867d60b1461099d578063cc1776d3146109cd57600080fd5b80638ea5220f1161017a578063a457c2d711610149578063a457c2d714610908578063a9059cbb14610928578063af7dd21f14610948578063baa16dc31461095d57600080fd5b80638ea5220f1461086a578063916d69431461088a57806395d89b41146108ba5780639691f1f1146108e857600080fd5b80638c0b5e22116101b65780638c0b5e22146107ff5780638d48e2ae146108155780638da5cb5b1461082b5780638e3657aa1461084957600080fd5b8063844d591c1461078f57806389a30271146107af5780638b42507f146107cf57600080fd5b80634626402b116102c15780636ddd17131161025f578063809d458d1161022e578063809d458d1461071957806382760cd2146107395780638366e79a1461075957806383e13fe31461077957600080fd5b80636ddd1713146106a257806370a08231146106c3578063715018a6146106e35780638091f3bf146106f857600080fd5b80635342acb41161029b5780635342acb41461061d57806354eb51211461064d5780636256d1811461066d578063630160bf1461068d57600080fd5b80634626402b146105c75780634f7041a5146105e75780634f7fbdde146105fd57600080fd5b806323b872dd11610339578063313ce56711610308578063313ce5671461053b57806339509351146105575780633ecad27114610577578063452ed4f1146105a757600080fd5b806323b872dd146104d05780632563ae83146104f05780632943bdab146105105780632b112e491461052657600080fd5b8063095ea7b311610375578063095ea7b3146104535780631006ee0c14610483578063174e078b146104a557806318160ddd146104bb57600080fd5b80630445b667146103a757806306fdde03146103d05780630758d9241461040757600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bd60155481565b6040519081526020015b60405180910390f35b3480156103dc57600080fd5b5060408051808201909152600581526447796f746f60d81b60208201525b6040516103c79190612be6565b34801561041357600080fd5b5061043b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103c7565b34801561045f57600080fd5b5061047361046e366004612c4c565b610b58565b60405190151581526020016103c7565b34801561048f57600080fd5b506104a361049e366004612c78565b610b6f565b005b3480156104b157600080fd5b506103bd60185481565b3480156104c757600080fd5b506103bd610c76565b3480156104dc57600080fd5b506104736104eb366004612c9a565b610c96565b3480156104fc57600080fd5b506104a361050b366004612ce9565b610cea565b34801561051c57600080fd5b506103bd600f5481565b34801561053257600080fd5b506103bd610d6c565b34801561054757600080fd5b50604051601281526020016103c7565b34801561056357600080fd5b50610473610572366004612c4c565b610d9c565b34801561058357600080fd5b50610473610592366004612d06565b60096020526000908152604090205460ff1681565b3480156105b357600080fd5b5060165461043b906001600160a01b031681565b3480156105d357600080fd5b5060035461043b906001600160a01b031681565b3480156105f357600080fd5b506103bd600d5481565b34801561060957600080fd5b506104a3610618366004612d23565b610dd3565b34801561062957600080fd5b50610473610638366004612d06565b60086020526000908152604090205460ff1681565b34801561065957600080fd5b506104a3610668366004612d3c565b610e5d565b34801561067957600080fd5b506104a3610688366004612d23565b610f68565b34801561069957600080fd5b506103bd610ff3565b3480156106ae57600080fd5b5060165461047390600160a81b900460ff1681565b3480156106cf57600080fd5b506103bd6106de366004612d06565b61101f565b3480156106ef57600080fd5b506104a361103a565b34801561070457600080fd5b5060165461047390600160b81b900460ff1681565b34801561072557600080fd5b506104a3610734366004612d06565b6110ae565b34801561074557600080fd5b506104a3610754366004612c78565b61114c565b34801561076557600080fd5b50610473610774366004612dc2565b61126a565b34801561078557600080fd5b506103bd60195481565b34801561079b57600080fd5b506104a36107aa366004612dfb565b6113ea565b3480156107bb57600080fd5b5060015461043b906001600160a01b031681565b3480156107db57600080fd5b506104736107ea366004612d06565b600b6020526000908152604090205460ff1681565b34801561080b57600080fd5b506103bd60135481565b34801561082157600080fd5b506103bd60115481565b34801561083757600080fd5b506000546001600160a01b031661043b565b34801561085557600080fd5b5060165461047390600160b01b900460ff1681565b34801561087657600080fd5b5060025461043b906001600160a01b031681565b34801561089657600080fd5b506104736108a5366004612d06565b600a6020526000908152604090205460ff1681565b3480156108c657600080fd5b5060408051808201909152600581526447594f544f60d81b60208201526103fa565b3480156108f457600080fd5b506104a3610903366004612d06565b611470565b34801561091457600080fd5b50610473610923366004612c4c565b61150e565b34801561093457600080fd5b50610473610943366004612c4c565b611545565b34801561095457600080fd5b50610473611552565b34801561096957600080fd5b506104a3610978366004612dfb565b611b57565b34801561098957600080fd5b506104a3610998366004612e29565b611bdd565b3480156109a957600080fd5b506104736109b8366004612d06565b600c6020526000908152604090205460ff1681565b3480156109d957600080fd5b506103bd600e5481565b3480156109ef57600080fd5b506103bd60175481565b348015610a0557600080fd5b506103bd60125481565b348015610a1b57600080fd5b506103bd610a2a366004612dc2565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610a6157600080fd5b5060165461047390600160c81b900460ff1681565b348015610a8257600080fd5b506104a3610a91366004612e5b565b611c6a565b348015610aa257600080fd5b506103bd60105481565b348015610ab857600080fd5b506104a3610ac7366004612d06565b611d13565b348015610ad857600080fd5b506104a3610ae7366004612e92565b611db1565b348015610af857600080fd5b506104a3610b07366004612d06565b611e6b565b348015610b1857600080fd5b506104a3611f55565b348015610b2d57600080fd5b5060165461047390600160c01b900460ff1681565b348015610b4e57600080fd5b506103bd60145481565b6000610b65338484611fc1565b5060015b92915050565b6000546001600160a01b03163314610ba25760405162461bcd60e51b8152600401610b9990612eee565b60405180910390fd5b6103e8821115610be85760405162461bcd60e51b815260206004820152601160248201527043616e6e6f74206578636565642031302560781b6044820152606401610b99565b6103e8811115610c2e5760405162461bcd60e51b815260206004820152601160248201527043616e6e6f74206578636565642031302560781b6044820152606401610b99565b600d829055600e81905560408051838152602081018390527f5eee0b95930ee59011f34615b0b7dc6cc58c01d1f07d04a01a3a1e70d2554cf091015b60405180910390a15050565b6000610c846012600a61301d565b610c9190620186a061302c565b905090565b6000610ca38484846120e5565b506001600160a01b038416600090815260076020908152604080832033808552925290912054610cdf918691610cda90869061304b565b611fc1565b5060015b9392505050565b6000546001600160a01b03163314610d145760405162461bcd60e51b8152600401610b9990612eee565b60168054821515600160c01b0260ff60c01b199091161790556040517fd77f03fb55ba6b94fd92cce5c4299c19942acdde281980bdcd02f132dd27fd3490610d6190831515815260200190565b60405180910390a150565b6000610d7961dead61101f565b610d856012600a61301d565b610d9290620186a061302c565b610c91919061304b565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610b65918590610cda90869061305e565b6000546001600160a01b03163314610dfd5760405162461bcd60e51b8152600401610b9990612eee565b6064610e07610c76565b610e1290600161302c565b610e1c9190613071565b811015610e2857600080fd5b60148190556040518181527f7872485612198920508f0a96f4e47084f84df76e33b2b1d76ceff0dc83499aa690602001610d61565b6000546001600160a01b03163314610e875760405162461bcd60e51b8152600401610b9990612eee565b60005b82811015610f625781600a6000868685818110610ea957610ea9613093565b9050602002016020810190610ebe9190612d06565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0861ffea819c7470cbefb1765bce78388684cd327b561fd217484236b4cbb2d3848483818110610f1957610f19613093565b9050602002016020810190610f2e9190612d06565b604080516001600160a01b03909216825284151560208301520160405180910390a180610f5a816130a9565b915050610e8a565b50505050565b6000546001600160a01b03163314610f925760405162461bcd60e51b8152600401610b9990612eee565b612710610f9d610c76565b610fa890603261302c565b610fb29190613071565b811015610fbe57600080fd5b60138190556040518181527fcff95ed354a1a3fcbabf882bfa4a9319f55569c324478c800820398451df187190602001610d61565b6000601254600f5460115460105461100b919061305e565b611015919061305e565b610c91919061305e565b6001600160a01b031660009081526006602052604090205490565b6000546001600160a01b031633146110645760405162461bcd60e51b8152600401610b9990612eee565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110d85760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b0381166110fe5760405162461bcd60e51b8152600401610b99906130c2565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f2551960305e8f85b09658bb3075878e3e3cef37a5f7b5d43261f5e6f36b3d6a490602001610d61565b6000546001600160a01b031633146111765760405162461bcd60e51b8152600401610b9990612eee565b601654600160b81b900460ff16156111e45760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610b99565b6016546001600160a01b03166112485760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920686173206e6f74206265656e2063726561746564207960448201526232ba1760e91b6064820152608401610b99565b436017556018919091556019556016805460ff60b81b1916600160b81b179055565b600080546001600160a01b031633146112955760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b0383166112eb5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610b99565b306001600160a01b0384160361130057600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b9190613104565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156113be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e2919061311d565b949350505050565b6000546001600160a01b031633146114145760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b038216600081815260096020908152604091829020805460ff19168515159081179091558251938452908301527f160ff69a72bc70f3e792a86c87d27070e421562197f032d96bcab11c5010222e9101610c6a565b6000546001600160a01b0316331461149a5760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b0381166114c05760405162461bcd60e51b8152600401610b99906130c2565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f089a99b3753cf41bde209d8df3748c1880a2581e31f702e7f057b0dda0a9dde990602001610d61565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610b65918590610cda90869061304b565b6000610cdf3384846120e5565b600080546001600160a01b0316331461157d5760405162461bcd60e51b8152600401610b9990612eee565b601654600160b81b900460ff16156115d75760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420697320616c7265616479206c61756e636865642e0000006044820152606401610b99565b6016546001600160a01b03161561163b5760405162461bcd60e51b815260206004820152602260248201527f4c697175696469747920706f6f6c20697320616c726561647920637265617465604482015261321760f11b6064820152608401610b99565b60006116463061101f565b116116a25760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610b99565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f9190613104565b116117685760405162461bcd60e51b8152602060048201526024808201527f4d75737420686176652055534443206f6e20636f6e747261637420746f206c616044820152630eadcc6d60e31b6064820152608401610b99565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ea919061313a565b6001546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af115801561183b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185f919061313a565b601680546001600160a01b0319166001600160a01b0392909216918217905561188757600080fd5b601680546001600160a01b0390811660009081526009602090815260408083208054600160ff19918216811790925595549094168352600c909152902080549092161790556118fa307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d610cda8261101f565b6001546040516370a0823160e01b81523060048201526001600160a01b039091169063095ea7b3907f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9083906370a0823190602401602060405180830381865afa15801561196c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119909190613104565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156119db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ff919061311d565b506001546001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169163e8e3370091309116611a418261101f565b6001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aad9190613104565b60025460405160e087901b6001600160e01b03191681526001600160a01b03958616600482015293851660248501526044840192909252606483015260006084830181905260a48301529190911660c48201524260e4820152610104016060604051808303816000875af1158015611b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4d9190613157565b5050506001905090565b6000546001600160a01b03163314611b815760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b0382166000818152600a6020908152604091829020805460ff19168515159081179091558251938452908301527f0861ffea819c7470cbefb1765bce78388684cd327b561fd217484236b4cbb2d39101610c6a565b6000546001600160a01b03163314611c075760405162461bcd60e51b8152600401610b9990612eee565b60108490556011839055600f82905560128190556040805185815260208101859052908101839052606081018290527f4d686d73fea437acf80f449d397171574a7b9bb291858621998231cd1c562b87906080015b60405180910390a150505050565b6000546001600160a01b03163314611c945760405162461bcd60e51b8152600401610b9990612eee565b60168054601584905561ffff60a81b1916600160a81b85151590810260ff60b01b191691909117600160b01b8415159081029190911790925560408051918252602082018590528101919091527f11208aed08835f646702af16c636fb4351554fa2f623991905cadb0293a88afc9060600160405180910390a1505050565b6000546001600160a01b03163314611d3d5760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b038116611d635760405162461bcd60e51b8152600401610b99906130c2565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f2e184dc34ab031d763441c588bd08760997797e8550c76fd439a20571233cc2090602001610d61565b6000546001600160a01b03163314611ddb5760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b0384166000818152600860209081526040808320805488151560ff199182168117909255600c845282852080548915159083168117909155600b855294839020805488151592168217905582519586529285015283019190915260608201527f12d9c9f75d95e930caf8a1f18460585ce2349b367898dbf23e394afef2d35d9590608001611c5c565b6000546001600160a01b03163314611e955760405162461bcd60e51b8152600401610b9990612eee565b6001600160a01b038116611efa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b99565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611f7f5760405162461bcd60e51b8152600401610b9990612eee565b604051600090339047908381818185875af1925050503d8060008114610f62576040519150601f19603f3d011682016040523d82523d6000602084013e610f62565b6001600160a01b0383166120235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b99565b6001600160a01b0382166120845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b99565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601654600090600160a01b900460ff161561210c57612105848484612583565b9050610ce3565b6001600160a01b0384166121705760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b99565b6001600160a01b0383166121d25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b99565b6001600160a01b0384166000908152600a602052604090205460ff1615801561221457506001600160a01b0383166000908152600a602052604090205460ff16155b6122605760405162461bcd60e51b815260206004820152601f60248201527f546f2f66726f6d206164647265737320697320626c61636b6c697374656421006044820152606401610b99565b6001600160a01b0384166000908152600b602052604090205460ff161580156122a257506001600160a01b0383166000908152600b602052604090205460ff16155b156123b257601654600160b81b900460ff166122f05760405162461bcd60e51b815260206004820152600d60248201526c2737ba102630bab731b432b21760991b6044820152606401610b99565b6001600160a01b03841660009081526009602052604090205460ff168061232f57506001600160a01b03831660009081526009602052604090205460ff165b15612397576013548211156123975760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b99565b601654600160c81b900460ff166123b2576123b2848461263d565b6001600160a01b03841660009081526009602052604081205460ff161580156123f457506001600160a01b03841660009081526009602052604090205460ff16155b8061241757506001600160a01b03851660009081526008602052604090205460ff165b8061243a57506001600160a01b03841660009081526008602052604090205460ff165b90508015801561246357506001600160a01b03851660009081526009602052604090205460ff16155b80156124785750601654600160a81b900460ff165b801561248e5750601654600160a01b900460ff16155b156124f757600061249e3061101f565b60155490915081108015906124f457601654600160b01b900460ff16156124c55760155491505b6015546124d390601461302c565b8211156124eb576015546124e890601461302c565b91505b6124f482612755565b50505b60008161250e57612509868686612920565b612510565b835b601654909150600160c01b900460ff16801561254557506001600160a01b0385166000908152600c602052604090205460ff16155b1561256c57601454816125578761101f565b612561919061305e565b111561256c57600080fd5b612577868683612583565b50600192505050610ce3565b6001600160a01b0383166000908152600660205260408120546125a790839061304b565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546125d790839061305e565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061262b9086815260200190565b60405180910390a35060019392505050565b60185460175461264d904361304b565b111561266a576016805460ff60c81b1916600160c81b1790555050565b6000546001600160a01b0383811691161480159061269657506000546001600160a01b03828116911614155b15612751576001600160a01b03821660009081526009602052604090205460ff161580156126cd57506001600160a01b0382163014155b156126f6576001600160a01b0382166000908152600a60205260409020805460ff191660011790555b6001600160a01b03811660009081526009602052604090205460ff1615801561272857506001600160a01b0381163014155b15612751576001600160a01b0381166000908152600a60205260409020805460ff191660011790555b5050565b6016805460ff60a01b1916600160a01b179055601054600090612776610ff3565b612780919061304b565b9050600081600f5484612793919061302c565b61279d9190613071565b9050600082601254856127b0919061302c565b6127ba9190613071565b90506000816127c9848761304b565b6127d3919061304b565b90506127de81612a79565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284b9190613104565b905080156128d2576001546004805460405163a9059cbb60e01b81526001600160a01b0391821692810192909252602482018490529091169063a9059cbb906044016020604051808303816000875af11580156128ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d0919061311d565b505b600f54156128e9576128e73061dead86612583565b505b6012541561290b576005546129099030906001600160a01b031685612583565b505b50506016805460ff60a01b1916905550505050565b600080612710600d5484612934919061302c565b61293e9190613071565b6001600160a01b0386166000908152600a6020526040902054909150309060ff168061298257506001600160a01b0385166000908152600a602052604090205460ff165b156129a757612710612996856126ac61302c565b6129a09190613071565b9150612a0c565b6001600160a01b03851660009081526009602052604090205460ff1615612a0c57436019546017546129d9919061305e565b11156129ee57612710612996856126ac61302c565b612710600e54856129ff919061302c565b612a099190613071565b91505b8115612a6557612a1d868284612583565b5060105415612a65576000612a30610ff3565b601054612a3d908561302c565b612a479190613071565b601654909150612a629083906001600160a01b031683612583565b50505b612a6f828561304b565b9695505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612aae57612aae613093565b6001600160a01b0392831660209182029290920101526001805483519216918391908110612ade57612ade613093565b60200260200101906001600160a01b031690816001600160a01b031681525050612b29307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611fc1565b60048054604051635c11d79560e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d811693635c11d79593612b839388936000938993909116914291016131c9565b600060405180830381600087803b158015612b9d57600080fd5b505af1158015612bb1573d6000803e3d6000fd5b505050507f5f5f38e77198863582c9bb3300d9a1f0424ae4438a7e2aac19539cf36cefc0cd8282604051610c6a929190613205565b600060208083528351808285015260005b81811015612c1357858101830151858201604001528201612bf7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612c4957600080fd5b50565b60008060408385031215612c5f57600080fd5b8235612c6a81612c34565b946020939093013593505050565b60008060408385031215612c8b57600080fd5b50508035926020909101359150565b600080600060608486031215612caf57600080fd5b8335612cba81612c34565b92506020840135612cca81612c34565b929592945050506040919091013590565b8015158114612c4957600080fd5b600060208284031215612cfb57600080fd5b8135610ce381612cdb565b600060208284031215612d1857600080fd5b8135610ce381612c34565b600060208284031215612d3557600080fd5b5035919050565b600080600060408486031215612d5157600080fd5b833567ffffffffffffffff80821115612d6957600080fd5b818601915086601f830112612d7d57600080fd5b813581811115612d8c57600080fd5b8760208260051b8501011115612da157600080fd5b60209283019550935050840135612db781612cdb565b809150509250925092565b60008060408385031215612dd557600080fd5b8235612de081612c34565b91506020830135612df081612c34565b809150509250929050565b60008060408385031215612e0e57600080fd5b8235612e1981612c34565b91506020830135612df081612cdb565b60008060008060808587031215612e3f57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e7057600080fd5b8335612e7b81612cdb565b9250602084013591506040840135612db781612cdb565b60008060008060808587031215612ea857600080fd5b8435612eb381612c34565b93506020850135612ec381612cdb565b92506040850135612ed381612cdb565b91506060850135612ee381612cdb565b939692955090935050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612f74578160001904821115612f5a57612f5a612f23565b80851615612f6757918102915b93841c9390800290612f3e565b509250929050565b600082612f8b57506001610b69565b81612f9857506000610b69565b8160018114612fae5760028114612fb857612fd4565b6001915050610b69565b60ff841115612fc957612fc9612f23565b50506001821b610b69565b5060208310610133831016604e8410600b8410161715612ff7575081810a610b69565b6130018383612f39565b806000190482111561301557613015612f23565b029392505050565b6000610ce360ff841683612f7c565b600081600019048311821515161561304657613046612f23565b500290565b81810381811115610b6957610b69612f23565b80820180821115610b6957610b69612f23565b60008261308e57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000600182016130bb576130bb612f23565b5060010190565b60208082526022908201527f4e657720616464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b60006020828403121561311657600080fd5b5051919050565b60006020828403121561312f57600080fd5b8151610ce381612cdb565b60006020828403121561314c57600080fd5b8151610ce381612c34565b60008060006060848603121561316c57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156131be5781516001600160a01b031687529582019590820190600101613199565b509495945050505050565b85815284602082015260a0604082015260006131e860a0830186613185565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006113e2604083018461318556fea2646970667358221220456fcdbf0900eb3c7e54c2ec54ac4b7dced8cd4f09a8e49ea93c150cda0454e764736f6c63430008100033

Deployed Bytecode Sourcemap

3120:20751:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5036:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5036:49:0;;;;;;;;8921:83;;;;;;;;;;-1:-1:-1;8991:5:0;;;;;;;;;;;;-1:-1:-1;;;8991:5:0;;;;8921:83;;;;;;;:::i;5094:37::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;931:32:1;;;913:51;;901:2;886:18;5094:37:0;749:221:1;10380:193:0;;;;;;;;;;-1:-1:-1;10380:193:0;;;;;:::i;:::-;;:::i;:::-;;;1596:14:1;;1589:22;1571:41;;1559:2;1544:18;10380:193:0;1431:187:1;12252:455:0;;;;;;;;;;-1:-1:-1;12252:455:0;;;;;:::i;:::-;;:::i;:::-;;5609:35;;;;;;;;;;;;;;;;9198:100;;;;;;;;;;;;;:::i;11170:349::-;;;;;;;;;;-1:-1:-1;11170:349:0;;;;;:::i;:::-;;:::i;13801:211::-;;;;;;;;;;-1:-1:-1;13801:211:0;;;;;:::i;:::-;;:::i;4285:32::-;;;;;;;;;;;;;;;;9306:129;;;;;;;;;;;;;:::i;9107:83::-;;;;;;;;;;-1:-1:-1;9107:83:0;;3304:2;2848:36:1;;2836:2;2821:18;9107:83:0;2706:184:1;9762:296:0;;;;;;;;;;-1:-1:-1;9762:296:0;;;;;:::i;:::-;;:::i;3964:44::-;;;;;;;;;;-1:-1:-1;3964:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5138:21;;;;;;;;;;-1:-1:-1;5138:21:0;;;;-1:-1:-1;;;;;5138:21:0;;;3483:91;;;;;;;;;;-1:-1:-1;3483:91:0;;;;-1:-1:-1;;;;;3483:91:0;;;4180:27;;;;;;;;;;;;;;;;13531:262;;;;;;;;;;-1:-1:-1;13531:262:0;;;;;:::i;:::-;;:::i;3908:49::-;;;;;;;;;;-1:-1:-1;3908:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11727:290;;;;;;;;;;-1:-1:-1;11727:290:0;;;;;:::i;:::-;;:::i;13242:281::-;;;;;;;;;;-1:-1:-1;13242:281:0;;;;;:::i;:::-;;:::i;20324:135::-;;;;;;;;;;;;;:::i;5309:30::-;;;;;;;;;;-1:-1:-1;5309:30:0;;;;-1:-1:-1;;;5309:30:0;;;;;;9443:118;;;;;;;;;;-1:-1:-1;9443:118:0;;;;;:::i;:::-;;:::i;1124:148::-;;;;;;;;;;;;;:::i;5449:28::-;;;;;;;;;;-1:-1:-1;5449:28:0;;;;-1:-1:-1;;;5449:28:0;;;;;;15094:275;;;;;;;;;;-1:-1:-1;15094:275:0;;;;;:::i;:::-;;:::i;21607:424::-;;;;;;;;;;-1:-1:-1;21607:424:0;;;;;:::i;:::-;;:::i;23506:362::-;;;;;;;;;;-1:-1:-1;23506:362:0;;;;;:::i;:::-;;:::i;5651:34::-;;;;;;;;;;;;;;;;12025:219;;;;;;;;;;-1:-1:-1;12025:219:0;;;;;:::i;:::-;;:::i;3315:64::-;;;;;;;;;;-1:-1:-1;3315:64:0;;;;-1:-1:-1;;;;;3315:64:0;;;4066:47;;;;;;;;;;-1:-1:-1;4066:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4889:48;;;;;;;;;;;;;;;;4357:35;;;;;;;;;;;;;;;;910:79;;;;;;;;;;-1:-1:-1;948:7:0;975:6;-1:-1:-1;;;;;975:6:0;910:79;;5407:35;;;;;;;;;;-1:-1:-1;5407:35:0;;;;-1:-1:-1;;;5407:35:0;;;;;;3389:86;;;;;;;;;;-1:-1:-1;3389:86:0;;;;-1:-1:-1;;;;;3389:86:0;;;4015:44;;;;;;;;;;-1:-1:-1;4015:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9012:87;;;;;;;;;;-1:-1:-1;9084:7:0;;;;;;;;;;;;-1:-1:-1;;;9084:7:0;;;;9012:87;;15377:240;;;;;;;;;;-1:-1:-1;15377:240:0;;;;;:::i;:::-;;:::i;10066:306::-;;;;;;;;;;-1:-1:-1;10066:306:0;;;;;:::i;:::-;;:::i;10963:199::-;;;;;;;;;;-1:-1:-1;10963:199:0;;;;;:::i;:::-;;:::i;22039:1228::-;;;;;;;;;;;;;:::i;11527:192::-;;;;;;;;;;-1:-1:-1;11527:192:0;;;;;:::i;:::-;;:::i;12715:519::-;;;;;;;;;;-1:-1:-1;12715:519:0;;;;;:::i;:::-;;:::i;4120:51::-;;;;;;;;;;-1:-1:-1;4120:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4231:28;;;;;;;;;;;;;;;;5572:30;;;;;;;;;;;;;;;;4399:27;;;;;;;;;;;;;;;;9569:185;;;;;;;;;;-1:-1:-1;9569:185:0;;;;;:::i;:::-;-1:-1:-1;;;;;9719:18:0;;;9687:7;9719:18;;;:10;:18;;;;;;;;:27;;;;;;;;;;;;;9569:185;5526:37;;;;;;;;;;-1:-1:-1;5526:37:0;;;;-1:-1:-1;;;5526:37:0;;;;;;14407:375;;;;;;;;;;-1:-1:-1;14407:375:0;;;;;:::i;:::-;;:::i;4324:26::-;;;;;;;;;;;;;;;;14790:296;;;;;;;;;;-1:-1:-1;14790:296:0;;;;;:::i;:::-;;:::i;14020:375::-;;;;;;;;;;-1:-1:-1;14020:375:0;;;;;:::i;:::-;;:::i;1280:281::-;;;;;;;;;;-1:-1:-1;1280:281:0;;;;;:::i;:::-;;:::i;23338:160::-;;;;;;;;;;;;;:::i;5484:35::-;;;;;;;;;;-1:-1:-1;5484:35:0;;;;-1:-1:-1;;;5484:35:0;;;;;;4963:47;;;;;;;;;;;;;;;;10380:193;10482:4;10504:39;299:10;10527:7;10536:6;10504:8;:39::i;:::-;-1:-1:-1;10561:4:0;10380:193;;;;;:::o;12252:455::-;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;;;;;;;;;12364:4:::1;12351:9;:17;;12343:47;;;::::0;-1:-1:-1;;;12343:47:0;;7359:2:1;12343:47:0::1;::::0;::::1;7341:21:1::0;7398:2;7378:18;;;7371:30;-1:-1:-1;;;7417:18:1;;;7410:47;7474:18;;12343:47:0::1;7157:341:1::0;12343:47:0::1;12492:4;12478:10;:18;;12470:48;;;::::0;-1:-1:-1;;;12470:48:0;;7359:2:1;12470:48:0::1;::::0;::::1;7341:21:1::0;7398:2;7378:18;;;7371:30;-1:-1:-1;;;7417:18:1;;;7410:47;7474:18;;12470:48:0::1;7157:341:1::0;12470:48:0::1;12599:6;:18:::0;;;12628:7:::1;:20:::0;;;12664:35:::1;::::0;;7677:25:1;;;7733:2;7718:18;;7711:34;;;12664:35:0::1;::::0;7650:18:1;12664:35:0::1;;;;;;;;12252:455:::0;;:::o;9198:100::-;9251:7;4509:13;3304:2;4509;:13;:::i;:::-;4500:22;;:6;:22;:::i;:::-;9271:19;;9198:100;:::o;11170:349::-;11302:4;11319:36;11329:6;11337:9;11348:6;11319:9;:36::i;:::-;-1:-1:-1;;;;;;11437:18:0;;;;;;:10;:18;;;;;;;;299:10;11437:32;;;;;;;;;11366:123;;11389:6;;11437:41;;11472:6;;11437:41;:::i;:::-;11366:8;:123::i;:::-;-1:-1:-1;11507:4:0;11170:349;;;;;;:::o;13801:211::-;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;13912:16:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;13912:36:0::1;-1:-1:-1::0;;;;13912:36:0;;::::1;;::::0;;13964:40:::1;::::0;::::1;::::0;::::1;::::0;13931:17;1596:14:1;1589:22;1571:41;;1559:2;1544:18;;1431:187;13964:40:0::1;;;;;;;;13801:211:::0;:::o;9306:129::-;9359:7;9401:26;9419:6;9401:9;:26::i;:::-;4509:13;3304:2;4509;:13;:::i;:::-;4500:22;;:6;:22;:::i;:::-;9386:41;;;;:::i;9762:296::-;299:10;9877:4;9971:24;;;:10;:24;;;;;;;;-1:-1:-1;;;;;9971:33:0;;;;;;;;;;9877:4;;9899:129;;9949:7;;9971:46;;10007:10;;9971:46;:::i;13531:262::-;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;13650:3:::1;13630:13;:11;:13::i;:::-;:17;::::0;13646:1:::1;13630:17;:::i;:::-;:23;;;;:::i;:::-;13616:10;:37;;13608:46;;;::::0;::::1;;13717:9;:22:::0;;;13755:30:::1;::::0;160:25:1;;;13755:30:0::1;::::0;148:2:1;133:18;13755:30:0::1;14:177:1::0;11727:290:0;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;11837:9:::1;11833:177;11852:19:::0;;::::1;11833:177;;;11920:13;11892:12;:25;11905:8;;11914:1;11905:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11892:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11892:25:0;:41;;-1:-1:-1;;11892:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11953:45:::1;11971:8:::0;;11980:1;11971:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11953:45;::::0;;-1:-1:-1;;;;;10247:32:1;;;10229:51;;10323:14;;10316:22;10311:2;10296:18;;10289:50;10202:18;11953:45:0::1;;;;;;;11873:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11833:177;;;;11727:290:::0;;;:::o;13242:281::-;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;13367:5:::1;13346:13;:11;:13::i;:::-;:18;::::0;13362:2:::1;13346:18;:::i;:::-;:26;;;;:::i;:::-;13330:12;:42;;13322:51;;;::::0;::::1;;13441:11;:26:::0;;;13483:32:::1;::::0;160:25:1;;;13483:32:0::1;::::0;148:2:1;133:18;13483:32:0::1;14:177:1::0;20324:135:0;20372:7;20443:8;;20427:13;;20408:16;;20398:7;;:26;;;;:::i;:::-;:42;;;;:::i;:::-;:53;;;;:::i;9443:118::-;-1:-1:-1;;;;;9536:17:0;9509:7;9536:17;;;:8;:17;;;;;;;9443:118::o;1124:148::-;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;1231:1:::1;1215:6:::0;;1194:40:::1;::::0;-1:-1:-1;;;;;1215:6:0;;::::1;::::0;1194:40:::1;::::0;1231:1;;1194:40:::1;1262:1;1245:19:::0;;-1:-1:-1;;;;;;1245:19:0::1;::::0;;1124:148::o;15094:275::-;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15187:29:0;::::1;15179:76;;;;-1:-1:-1::0;;;15179:76:0::1;;;;;;;:::i;:::-;15266:14;:41:::0;;-1:-1:-1;;;;;;15266:41:0::1;-1:-1:-1::0;;;;;15266:41:0;::::1;::::0;;::::1;::::0;;;15323:38:::1;::::0;913:51:1;;;15323:38:0::1;::::0;901:2:1;886:18;15323:38:0::1;749:221:1::0;21607:424:0;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;21719:8:::1;::::0;-1:-1:-1;;;21719:8:0;::::1;;;21718:9;21710:65;;;::::0;-1:-1:-1;;;21710:65:0;;11095:2:1;21710:65:0::1;::::0;::::1;11077:21:1::0;11134:2;11114:18;;;11107:30;11173:34;11153:18;;;11146:62;-1:-1:-1;;;11224:18:1;;;11217:41;11275:19;;21710:65:0::1;10893:407:1::0;21710:65:0::1;21794:6;::::0;-1:-1:-1;;;;;21794:6:0::1;21786:68;;;::::0;-1:-1:-1;;;21786:68:0;;11507:2:1;21786:68:0::1;::::0;::::1;11489:21:1::0;11546:2;11526:18;;;11519:30;11585:34;11565:18;;;11558:62;-1:-1:-1;;;11636:18:1;;;11629:33;11679:19;;21786:68:0::1;11305:399:1::0;21786:68:0::1;21889:12;21875:11;:26:::0;21912:16:::1;:38:::0;;;;21961:15:::1;:36:::0;22008:8:::1;:15:::0;;-1:-1:-1;;;;22008:15:0::1;-1:-1:-1::0;;;22008:15:0::1;::::0;;21607:424::o;23506:362::-;23593:10;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23624:20:0;::::1;23616:59;;;::::0;-1:-1:-1;;;23616:59:0;;11911:2:1;23616:59:0::1;::::0;::::1;11893:21:1::0;11950:2;11930:18;;;11923:30;11989:28;11969:18;;;11962:56;12035:18;;23616:59:0::1;11709:350:1::0;23616:59:0::1;23712:4;-1:-1:-1::0;;;;;23694:23:0;::::1;::::0;23686:32:::1;;;::::0;::::1;;23756:39;::::0;-1:-1:-1;;;23756:39:0;;23789:4:::1;23756:39;::::0;::::1;913:51:1::0;23729:24:0::1;::::0;-1:-1:-1;;;;;23756:24:0;::::1;::::0;::::1;::::0;886:18:1;;23756:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23814:46;::::0;-1:-1:-1;;;23814:46:0;;-1:-1:-1;;;;;12445:32:1;;;23814:46:0::1;::::0;::::1;12427:51:1::0;12494:18;;;12487:34;;;23729:66:0;;-1:-1:-1;23814:23:0;;::::1;::::0;::::1;::::0;12400:18:1;;23814:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23806:54:::0;23506:362;-1:-1:-1;;;;23506:362:0:o;12025:219::-;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12142:21:0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;;:37;;-1:-1:-1;;12142:37:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12195:41;;10229:51:1;;;10296:18;;;10289:50;12195:41:0::1;::::0;10202:18:1;12195:41:0::1;10061:284:1::0;15377:240:0;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15460:24:0;::::1;15452:71;;;;-1:-1:-1::0;;;15452:71:0::1;;;;;;;:::i;:::-;15534:9;:31:::0;;-1:-1:-1;;;;;;15534:31:0::1;-1:-1:-1::0;;;;;15534:31:0;::::1;::::0;;::::1;::::0;;;15581:28:::1;::::0;913:51:1;;;15581:28:0::1;::::0;901:2:1;886:18;15581:28:0::1;749:221:1::0;10066:306:0;299:10;10186:4;10280:24;;;:10;:24;;;;;;;;-1:-1:-1;;;;;10280:33:0;;;;;;;;;;10186:4;;10208:134;;10258:7;;10280:51;;10316:15;;10280:51;:::i;10963:199::-;11068:4;11090:42;299:10;11114:9;11125:6;11090:9;:42::i;22039:1228::-;22097:4;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;22181:8:::1;::::0;-1:-1:-1;;;22181:8:0;::::1;;;22180:9;22172:51;;;::::0;-1:-1:-1;;;22172:51:0;;12984:2:1;22172:51:0::1;::::0;::::1;12966:21:1::0;13023:2;13003:18;;;12996:30;13062:31;13042:18;;;13035:59;13111:18;;22172:51:0::1;12782:353:1::0;22172:51:0::1;22242:6;::::0;-1:-1:-1;;;;;22242:6:0::1;:20:::0;22234:67:::1;;;::::0;-1:-1:-1;;;22234:67:0;;13342:2:1;22234:67:0::1;::::0;::::1;13324:21:1::0;13381:2;13361:18;;;13354:30;13420:34;13400:18;;;13393:62;-1:-1:-1;;;13471:18:1;;;13464:32;13513:19;;22234:67:0::1;13140:398:1::0;22234:67:0::1;22347:1;22320:24;22338:4;22320:9;:24::i;:::-;:28;22312:79;;;::::0;-1:-1:-1;;;22312:79:0;;13745:2:1;22312:79:0::1;::::0;::::1;13727:21:1::0;13784:2;13764:18;;;13757:30;13823:34;13803:18;;;13796:62;-1:-1:-1;;;13874:18:1;;;13867:36;13920:19;;22312:79:0::1;13543:402:1::0;22312:79:0::1;22418:4;::::0;22411:37:::1;::::0;-1:-1:-1;;;22411:37:0;;22442:4:::1;22411:37;::::0;::::1;913:51:1::0;22451:1:0::1;::::0;-1:-1:-1;;;;;22418:4:0::1;::::0;22411:22:::1;::::0;886:18:1;;22411:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;22403:90;;;::::0;-1:-1:-1;;;22403:90:0;;14152:2:1;22403:90:0::1;::::0;::::1;14134:21:1::0;14191:2;14171:18;;;14164:30;14230:34;14210:18;;;14203:62;-1:-1:-1;;;14281:18:1;;;14274:34;14325:19;;22403:90:0::1;13950:400:1::0;22403:90:0::1;22552:9;-1:-1:-1::0;;;;;22552:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22599:4;::::0;22540:64:::1;::::0;-1:-1:-1;;;22540:64:0;;22592:4:::1;22540:64;::::0;::::1;14823:34:1::0;-1:-1:-1;;;;;22599:4:0;;::::1;14873:18:1::0;;;14866:43;22540::0;::::1;::::0;::::1;::::0;14758:18:1;;22540:64:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22531:6;:73:::0;;-1:-1:-1;;;;;;22531:73:0::1;-1:-1:-1::0;;;;;22531:73:0;;;::::1;::::0;;::::1;::::0;;22615:29:::1;;;::::0;::::1;;22676:6;::::0;;-1:-1:-1;;;;;22676:6:0;;::::1;22655:29;::::0;;;:12:::1;:29;::::0;;;;;;;:36;;22687:4:::1;-1:-1:-1::0;;22655:36:0;;::::1;::::0;::::1;::::0;;;22730:6;;;;::::1;22702:36:::0;;:19:::1;:36:::0;;;;;:43;;;;::::1;;::::0;;22777:69:::1;22794:4;22809:9;22821:24;22794:4:::0;22821:9:::1;:24::i;22777:69::-;22864:4;::::0;22898:37:::1;::::0;-1:-1:-1;;;22898:37:0;;22929:4:::1;22898:37;::::0;::::1;913:51:1::0;-1:-1:-1;;;;;22864:4:0;;::::1;::::0;22857:20:::1;::::0;22886:9:::1;::::0;22864:4;;22898:22:::1;::::0;886:18:1;;22898:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22857:79;::::0;-1:-1:-1;;;;;;22857:79:0::1;::::0;;;;;;-1:-1:-1;;;;;12445:32:1;;;22857:79:0::1;::::0;::::1;12427:51:1::0;12494:18;;;12487:34;12400:18;;22857:79:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;23034:4:0::1;::::0;-1:-1:-1;;;;;22969:9:0::1;:22:::0;::::1;::::0;::::1;::::0;23014:4:::1;::::0;23034::::1;23053:24;23014:4:::0;23053:9:::1;:24::i;:::-;23099:4;::::0;23092:37:::1;::::0;-1:-1:-1;;;23092:37:0;;23123:4:::1;23092:37;::::0;::::1;913:51:1::0;-1:-1:-1;;;;;23099:4:0;;::::1;::::0;23092:22:::1;::::0;886:18:1;;23092:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23186:9;::::0;22969:268:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;22969:268:0;;;-1:-1:-1;;;;;15335:15:1;;;22969:268:0::1;::::0;::::1;15317:34:1::0;15387:15;;;15367:18;;;15360:43;15419:18;;;15412:34;;;;15462:18;;;15455:34;23144:1:0::1;15505:19:1::0;;;15498:35;;;15549:19;;;15542:35;23186:9:0;;;::::1;15593:19:1::0;;;15586:44;23211:15:0::1;15646:19:1::0;;;15639:35;15251:19;;22969:268:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23255:4;23248:11;;22039:1228:::0;:::o;11527:192::-;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11617:21:0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;;:37;;-1:-1:-1;;11617:37:0::1;::::0;::::1;;::::0;;::::1;::::0;;;11670:41;;10229:51:1;;;10296:18;;;10289:50;11670:41:0::1;::::0;10202:18:1;11670:41:0::1;10061:284:1::0;12715:519:0;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;12915:7:::1;:20:::0;;;12946:16:::1;:38:::0;;;12995:13:::1;:32:::0;;;13039:8:::1;:22:::0;;;13077:149:::1;::::0;;16227:25:1;;;16283:2;16268:18;;16261:34;;;16311:18;;;16304:34;;;16369:2;16354:18;;16347:34;;;13077:149:0::1;::::0;16214:3:1;16199:19;13077:149:0::1;;;;;;;;12715:519:::0;;;;:::o;14407:375::-;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;14529:11:::1;:26:::0;;:11:::1;14566:30:::0;;;-1:-1:-1;;;;14607:34:0;-1:-1:-1;;;14529:26:0;::::1;;::::0;;::::1;-1:-1:-1::0;;;;14607:34:0;;;;;-1:-1:-1;;;14607:34:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;14657:117:::1;::::0;;16582:41:1;;;16654:2;16639:18;;16632:34;;;16682:18;;16675:50;;;;14657:117:0::1;::::0;16570:2:1;16555:18;14657:117:0::1;;;;;;;14407:375:::0;;;:::o;14790:296::-;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14889:32:0;::::1;14881:79;;;;-1:-1:-1::0;;;14881:79:0::1;;;;;;;:::i;:::-;14971:17;:47:::0;;-1:-1:-1;;;;;;14971:47:0::1;-1:-1:-1::0;;;;;14971:47:0;::::1;::::0;;::::1;::::0;;;15034:44:::1;::::0;913:51:1;;;15034:44:0::1;::::0;901:2:1;886:18;15034:44:0::1;749:221:1::0;14020:375:0;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14151:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:38;;;::::1;;-1:-1:-1::0;;14151:38:0;;::::1;::::0;::::1;::::0;;;14200:19:::1;:28:::0;;;;;:48;;;::::1;;::::0;;::::1;::::0;::::1;::::0;;;14259:15:::1;:24:::0;;;;;;:40;;;::::1;;::::0;::::1;::::0;::::1;::::0;;14315:72;;16949:51:1;;;17016:18;;;17009:50;17075:18;;17068:50;;;;17149:2;17134:18;;17127:50;14315:72:0::1;::::0;16936:3:1;16921:19;14315:72:0::1;16736:447:1::0;1280:281:0;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1383:22:0;::::1;1361:110;;;::::0;-1:-1:-1;;;1361:110:0;;17390:2:1;1361:110:0::1;::::0;::::1;17372:21:1::0;17429:2;17409:18;;;17402:30;17468:34;17448:18;;;17441:62;-1:-1:-1;;;17519:18:1;;;17512:36;17565:19;;1361:110:0::1;17188:402:1::0;1361:110:0::1;1508:6;::::0;;1487:38:::1;::::0;-1:-1:-1;;;;;1487:38:0;;::::1;::::0;1508:6;::::1;::::0;1487:38:::1;::::0;::::1;1536:6;:17:::0;;-1:-1:-1;;;;;;1536:17:0::1;-1:-1:-1::0;;;;;1536:17:0;;;::::1;::::0;;;::::1;::::0;;1280:281::o;23338:160::-;1037:6;;-1:-1:-1;;;;;1037:6:0;299:10;1037:22;1029:67;;;;-1:-1:-1;;;1029:67:0;;;;;;;:::i;:::-;23432:58:::1;::::0;23396:12:::1;::::0;23440:10:::1;::::0;23464:21:::1;::::0;23396:12;23432:58;23396:12;23432:58;23464:21;23440:10;23432:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10581:374:::0;-1:-1:-1;;;;;10709:20:0;;10701:69;;;;-1:-1:-1;;;10701:69:0;;18007:2:1;10701:69:0;;;17989:21:1;18046:2;18026:18;;;18019:30;18085:34;18065:18;;;18058:62;-1:-1:-1;;;18136:18:1;;;18129:34;18180:19;;10701:69:0;17805:400:1;10701:69:0;-1:-1:-1;;;;;10789:21:0;;10781:68;;;;-1:-1:-1;;;10781:68:0;;18412:2:1;10781:68:0;;;18394:21:1;18451:2;18431:18;;;18424:30;18490:34;18470:18;;;18463:62;-1:-1:-1;;;18541:18:1;;;18534:32;18583:19;;10781:68:0;18210:398:1;10781:68:0;-1:-1:-1;;;;;10862:18:0;;;;;;;:10;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10914:33;;160:25:1;;;10914:33:0;;133:18:1;10914:33:0;;;;;;;10581:374;;;:::o;15625:2123::-;15770:8;;15747:4;;-1:-1:-1;;;15770:8:0;;;;15766:1975;;;15802:41;15817:6;15825:9;15836:6;15802:14;:41::i;:::-;15795:48;;;;15766:1975;-1:-1:-1;;;;;15884:20:0;;15876:70;;;;-1:-1:-1;;;15876:70:0;;18815:2:1;15876:70:0;;;18797:21:1;18854:2;18834:18;;;18827:30;18893:34;18873:18;;;18866:62;-1:-1:-1;;;18944:18:1;;;18937:35;18989:19;;15876:70:0;18613:401:1;15876:70:0;-1:-1:-1;;;;;15969:23:0;;15961:71;;;;-1:-1:-1;;;15961:71:0;;19221:2:1;15961:71:0;;;19203:21:1;19260:2;19240:18;;;19233:30;19299:34;19279:18;;;19272:62;-1:-1:-1;;;19350:18:1;;;19343:33;19393:19;;15961:71:0;19019:399:1;15961:71:0;-1:-1:-1;;;;;16056:20:0;;;;;;:12;:20;;;;;;;;16055:21;:49;;;;-1:-1:-1;;;;;;16081:23:0;;;;;;:12;:23;;;;;;;;16080:24;16055:49;16047:93;;;;-1:-1:-1;;;16047:93:0;;19625:2:1;16047:93:0;;;19607:21:1;19664:2;19644:18;;;19637:30;19703:33;19683:18;;;19676:61;19754:18;;16047:93:0;19423:355:1;16047:93:0;-1:-1:-1;;;;;16162:23:0;;;;;;:15;:23;;;;;;;;16161:24;:55;;;;-1:-1:-1;;;;;;16190:26:0;;;;;;:15;:26;;;;;;;;16189:27;16161:55;16157:432;;;16245:8;;-1:-1:-1;;;16245:8:0;;;;16237:34;;;;-1:-1:-1;;;16237:34:0;;19985:2:1;16237:34:0;;;19967:21:1;20024:2;20004:18;;;19997:30;-1:-1:-1;;;20043:18:1;;;20036:43;20096:18;;16237:34:0;19783:337:1;16237:34:0;-1:-1:-1;;;;;16294:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;16318:23:0;;;;;;:12;:23;;;;;;;;16294:47;16290:170;;;16384:11;;16374:6;:21;;16366:74;;;;-1:-1:-1;;;16366:74:0;;20327:2:1;16366:74:0;;;20309:21:1;20366:2;20346:18;;;20339:30;20405:34;20385:18;;;20378:62;-1:-1:-1;;;20456:18:1;;;20449:38;20504:19;;16366:74:0;20125:404:1;16366:74:0;16483:17;;-1:-1:-1;;;16483:17:0;;;;16478:96;;16525:29;16536:6;16544:9;16525:10;:29::i;:::-;-1:-1:-1;;;;;16625:20:0;;16605:14;16625:20;;;:12;:20;;;;;;;;16624:21;:66;;;;-1:-1:-1;;;;;;16667:23:0;;;;;;:12;:23;;;;;;;;16666:24;16624:66;16623:114;;;-1:-1:-1;;;;;;16712:25:0;;;;;;:17;:25;;;;;;;;16623:114;:163;;;-1:-1:-1;;;;;;16758:28:0;;;;;;:17;:28;;;;;;;;16623:163;16605:182;;16809:9;16808:10;:35;;;;-1:-1:-1;;;;;;16823:20:0;;;;;;:12;:20;;;;;;;;16822:21;16808:35;:50;;;;-1:-1:-1;16847:11:0;;-1:-1:-1;;;16847:11:0;;;;16808:50;:63;;;;-1:-1:-1;16863:8:0;;-1:-1:-1;;;16863:8:0;;;;16862:9;16808:63;16804:584;;;16892:28;16923:24;16941:4;16923:9;:24::i;:::-;17042:13;;16892:55;;-1:-1:-1;16997:58:0;;;;;17074:299;;17130:15;;-1:-1:-1;;;17130:15:0;;;;17126:57;;;17170:13;;17147:36;;17126:57;17232:13;;:18;;17248:2;17232:18;:::i;:::-;17209:20;:41;17206:87;;;17275:13;;:18;;17291:2;17275:18;:::i;:::-;17252:41;;17206:87;17317:36;17332:20;17317:14;:36::i;:::-;16873:515;;16804:584;17414:19;17436:9;:55;;17457:34;17465:6;17473:9;17484:6;17457:7;:34::i;:::-;17436:55;;;17448:6;17436:55;17512:16;;17414:77;;-1:-1:-1;;;;17512:16:0;;;;:51;;;;-1:-1:-1;;;;;;17533:30:0;;;;;;:19;:30;;;;;;;;17532:31;17512:51;17508:132;;;17630:9;;17614:11;17591:20;17601:9;17591;:20::i;:::-;:34;;;;:::i;:::-;17590:49;;17582:58;;;;;;17657:46;17672:6;17680:9;17691:11;17657:14;:46::i;:::-;;17725:4;17718:11;;;;;;18283:330;-1:-1:-1;;;;;18446:16:0;;18410:4;18446:16;;;:8;:16;;;;;;:25;;18465:6;;18446:25;:::i;:::-;-1:-1:-1;;;;;18427:16:0;;;;;;;:8;:16;;;;;;:44;;;;18504:19;;;;;;;:28;;18526:6;;18504:28;:::i;:::-;-1:-1:-1;;;;;18482:19:0;;;;;;;:8;:19;;;;;;;:50;;;;18548:35;;;;;;;;;;18576:6;160:25:1;;148:2;133:18;;14:177;18548:35:0;;;;;;;;-1:-1:-1;18601:4:0;18283:330;;;;;:::o;17756:519::-;17865:16;;17850:11;;17835:26;;:12;:26;:::i;:::-;17834:47;17830:438;;;17898:17;:24;;-1:-1:-1;;;;17898:24:0;-1:-1:-1;;;17898:24:0;;;17756:519;;:::o;17830:438::-;948:7;975:6;-1:-1:-1;;;;;17944:17:0;;;975:6;;17944:17;;;;:41;;-1:-1:-1;948:7:0;975:6;-1:-1:-1;;;;;17965:20:0;;;975:6;;17965:20;;17944:41;17940:328;;;-1:-1:-1;;;;;18007:20:0;;;;;;:12;:20;;;;;;;;18006:21;:48;;;;-1:-1:-1;;;;;;18031:23:0;;18049:4;18031:23;;18006:48;18002:116;;;-1:-1:-1;;;;;18075:20:0;;;;;;:12;:20;;;;;:27;;-1:-1:-1;;18075:27:0;18098:4;18075:27;;;18002:116;-1:-1:-1;;;;;18137:23:0;;;;;;:12;:23;;;;;;;;18136:24;:54;;;;-1:-1:-1;;;;;;18164:26:0;;18185:4;18164:26;;18136:54;18132:125;;;-1:-1:-1;;;;;18211:23:0;;;;;;:12;:23;;;;;:30;;-1:-1:-1;;18211:30:0;18237:4;18211:30;;;18132:125;17756:519;;:::o;18621:1100::-;6835:8;:15;;-1:-1:-1;;;;6835:15:0;-1:-1:-1;;;6835:15:0;;;18759:7:::1;::::0;6835:15;;18738:18:::1;:16;:18::i;:::-;:28;;;;:::i;:::-;18707:59;;18841:21;18906:20;18889:13;;18866:20;:36;;;;:::i;:::-;18865:61;;;;:::i;:::-;18841:85;;18937:20;18996;18984:8;;18961:20;:31;;;;:::i;:::-;18960:56;;;;:::i;:::-;18937:79:::0;-1:-1:-1;19027:21:0::1;18937:79:::0;19051:36:::1;19074:13:::0;19051:20;:36:::1;:::i;:::-;:51;;;;:::i;:::-;19027:75;;19115:32;19133:13;19115:17;:32::i;:::-;19256:4;::::0;19249:37:::1;::::0;-1:-1:-1;;;19249:37:0;;19280:4:::1;19249:37;::::0;::::1;913:51:1::0;19222:24:0::1;::::0;-1:-1:-1;;;;;19256:4:0::1;::::0;19249:22:::1;::::0;886:18:1;;19249:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19222:64:::0;-1:-1:-1;19302:20:0;;19298:112:::1;;19346:4;::::0;19361:17:::1;::::0;;19339:58:::1;::::0;-1:-1:-1;;;19339:58:0;;-1:-1:-1;;;;;19361:17:0;;::::1;19339:58:::0;;::::1;12427:51:1::0;;;;12494:18;;;12487:34;;;19346:4:0;;::::1;::::0;19339:21:::1;::::0;12400:18:1;;19339:58:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19298:112;19451:13;::::0;:17;19447:111:::1;;19485:61;19508:4;19523:6;19532:13;19485:14;:61::i;:::-;;19447:111;19619:8;::::0;:12;19615:99:::1;;19678:9;::::0;19648:54:::1;::::0;19671:4:::1;::::0;-1:-1:-1;;;;;19678:9:0::1;19689:12:::0;19648:14:::1;:54::i;:::-;;19615:99;-1:-1:-1::0;;6873:8:0;:16;;-1:-1:-1;;;;6873:16:0;;;-1:-1:-1;;;;18621:1100:0:o;20467:1132::-;20588:7;20608:17;20648:5;20638:6;;20629;:15;;;;:::i;:::-;20628:25;;;;:::i;:::-;-1:-1:-1;;;;;20716:20:0;;20664:19;20716:20;;;:12;:20;;;;;;20608:45;;-1:-1:-1;20694:4:0;;20716:20;;;:47;;-1:-1:-1;;;;;;20740:23:0;;;;;;:12;:23;;;;;;;;20716:47;20712:411;;;20810:5;20793:13;:6;20802:4;20793:13;:::i;:::-;20792:23;;;;:::i;:::-;20780:35;;20712:411;;;-1:-1:-1;;;;;20847:23:0;;;;;;:12;:23;;;;;;;;20843:280;;;20950:12;20932:15;;20918:11;;:29;;;;:::i;:::-;:44;20915:197;;;21012:5;20995:13;:6;21004:4;20995:13;:::i;20915:197::-;21091:5;21080:7;;21071:6;:16;;;;:::i;:::-;21070:26;;;;:::i;:::-;21058:38;;20915:197;21174:13;;21170:386;;21205:46;21220:6;21228:11;21241:9;21205:14;:46::i;:::-;-1:-1:-1;21308:7:0;;:11;21305:240;;21339:13;21379:18;:16;:18::i;:::-;21368:7;;21356:19;;:9;:19;:::i;:::-;21355:42;;;;:::i;:::-;21444:6;;21339:58;;-1:-1:-1;21416:42:0;;21431:11;;-1:-1:-1;;;;;21444:6:0;21339:58;21416:14;:42::i;:::-;;21320:225;21305:240;21573:18;21582:9;21573:6;:18;:::i;:::-;21566:25;20467:1132;-1:-1:-1;;;;;;20467:1132:0:o;19729:587::-;19880:16;;;19894:1;19880:16;;;;;;;;19856:21;;19880:16;;;;;;;;;;-1:-1:-1;19880:16:0;19856:40;;19925:4;19907;19912:1;19907:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19907:23:0;;;:7;;;;;;;;;:23;19951:4;;;19941:7;;19951:4;;;19941;;19951;19941:7;;;;;;:::i;:::-;;;;;;:14;-1:-1:-1;;;;;19941:14:0;;;-1:-1:-1;;;;;19941:14:0;;;;;19968:56;19985:4;20000:9;20012:11;19968:8;:56::i;:::-;20195:17;;;20054:199;;-1:-1:-1;;;20054:199:0;;-1:-1:-1;;;;;20054:9:0;:63;;;;;:199;;20133:11;;20159:1;;20176:4;;20195:17;;;;20227:15;;20054:199;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20271:36;20289:11;20302:4;20271:36;;;;;;;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;975:131::-;-1:-1:-1;;;;;1050:31:1;;1040:42;;1030:70;;1096:1;1093;1086:12;1030:70;975:131;:::o;1111:315::-;1179:6;1187;1240:2;1228:9;1219:7;1215:23;1211:32;1208:52;;;1256:1;1253;1246:12;1208:52;1295:9;1282:23;1314:31;1339:5;1314:31;:::i;:::-;1364:5;1416:2;1401:18;;;;1388:32;;-1:-1:-1;;;1111:315:1:o;1623:248::-;1691:6;1699;1752:2;1740:9;1731:7;1727:23;1723:32;1720:52;;;1768:1;1765;1758:12;1720:52;-1:-1:-1;;1791:23:1;;;1861:2;1846:18;;;1833:32;;-1:-1:-1;1623:248:1:o;1876:456::-;1953:6;1961;1969;2022:2;2010:9;2001:7;1997:23;1993:32;1990:52;;;2038:1;2035;2028:12;1990:52;2077:9;2064:23;2096:31;2121:5;2096:31;:::i;:::-;2146:5;-1:-1:-1;2203:2:1;2188:18;;2175:32;2216:33;2175:32;2216:33;:::i;:::-;1876:456;;2268:7;;-1:-1:-1;;;2322:2:1;2307:18;;;;2294:32;;1876:456::o;2337:118::-;2423:5;2416:13;2409:21;2402:5;2399:32;2389:60;;2445:1;2442;2435:12;2460:241;2516:6;2569:2;2557:9;2548:7;2544:23;2540:32;2537:52;;;2585:1;2582;2575:12;2537:52;2624:9;2611:23;2643:28;2665:5;2643:28;:::i;2895:247::-;2954:6;3007:2;2995:9;2986:7;2982:23;2978:32;2975:52;;;3023:1;3020;3013:12;2975:52;3062:9;3049:23;3081:31;3106:5;3081:31;:::i;3579:180::-;3638:6;3691:2;3679:9;3670:7;3666:23;3662:32;3659:52;;;3707:1;3704;3697:12;3659:52;-1:-1:-1;3730:23:1;;3579:180;-1:-1:-1;3579:180:1:o;3764:750::-;3856:6;3864;3872;3925:2;3913:9;3904:7;3900:23;3896:32;3893:52;;;3941:1;3938;3931:12;3893:52;3981:9;3968:23;4010:18;4051:2;4043:6;4040:14;4037:34;;;4067:1;4064;4057:12;4037:34;4105:6;4094:9;4090:22;4080:32;;4150:7;4143:4;4139:2;4135:13;4131:27;4121:55;;4172:1;4169;4162:12;4121:55;4212:2;4199:16;4238:2;4230:6;4227:14;4224:34;;;4254:1;4251;4244:12;4224:34;4309:7;4302:4;4292:6;4289:1;4285:14;4281:2;4277:23;4273:34;4270:47;4267:67;;;4330:1;4327;4320:12;4267:67;4361:4;4353:13;;;;-1:-1:-1;4385:6:1;-1:-1:-1;;4426:20:1;;4413:34;4456:28;4413:34;4456:28;:::i;:::-;4503:5;4493:15;;;3764:750;;;;;:::o;4519:388::-;4587:6;4595;4648:2;4636:9;4627:7;4623:23;4619:32;4616:52;;;4664:1;4661;4654:12;4616:52;4703:9;4690:23;4722:31;4747:5;4722:31;:::i;:::-;4772:5;-1:-1:-1;4829:2:1;4814:18;;4801:32;4842:33;4801:32;4842:33;:::i;:::-;4894:7;4884:17;;;4519:388;;;;;:::o;4912:382::-;4977:6;4985;5038:2;5026:9;5017:7;5013:23;5009:32;5006:52;;;5054:1;5051;5044:12;5006:52;5093:9;5080:23;5112:31;5137:5;5112:31;:::i;:::-;5162:5;-1:-1:-1;5219:2:1;5204:18;;5191:32;5232:30;5191:32;5232:30;:::i;5299:385::-;5385:6;5393;5401;5409;5462:3;5450:9;5441:7;5437:23;5433:33;5430:53;;;5479:1;5476;5469:12;5430:53;-1:-1:-1;;5502:23:1;;;5572:2;5557:18;;5544:32;;-1:-1:-1;5623:2:1;5608:18;;5595:32;;5674:2;5659:18;5646:32;;-1:-1:-1;5299:385:1;-1:-1:-1;5299:385:1:o;5689:444::-;5760:6;5768;5776;5829:2;5817:9;5808:7;5804:23;5800:32;5797:52;;;5845:1;5842;5835:12;5797:52;5884:9;5871:23;5903:28;5925:5;5903:28;:::i;:::-;5950:5;-1:-1:-1;6002:2:1;5987:18;;5974:32;;-1:-1:-1;6058:2:1;6043:18;;6030:32;6071:30;6030:32;6071:30;:::i;6138:653::-;6215:6;6223;6231;6239;6292:3;6280:9;6271:7;6267:23;6263:33;6260:53;;;6309:1;6306;6299:12;6260:53;6348:9;6335:23;6367:31;6392:5;6367:31;:::i;:::-;6417:5;-1:-1:-1;6474:2:1;6459:18;;6446:32;6487:30;6446:32;6487:30;:::i;:::-;6536:7;-1:-1:-1;6595:2:1;6580:18;;6567:32;6608:30;6567:32;6608:30;:::i;:::-;6657:7;-1:-1:-1;6716:2:1;6701:18;;6688:32;6729:30;6688:32;6729:30;:::i;:::-;6138:653;;;;-1:-1:-1;6138:653:1;;-1:-1:-1;;6138:653:1:o;6796:356::-;6998:2;6980:21;;;7017:18;;;7010:30;7076:34;7071:2;7056:18;;7049:62;7143:2;7128:18;;6796:356::o;7756:127::-;7817:10;7812:3;7808:20;7805:1;7798:31;7848:4;7845:1;7838:15;7872:4;7869:1;7862:15;7888:422;7977:1;8020:5;7977:1;8034:270;8055:7;8045:8;8042:21;8034:270;;;8114:4;8110:1;8106:6;8102:17;8096:4;8093:27;8090:53;;;8123:18;;:::i;:::-;8173:7;8163:8;8159:22;8156:55;;;8193:16;;;;8156:55;8272:22;;;;8232:15;;;;8034:270;;;8038:3;7888:422;;;;;:::o;8315:806::-;8364:5;8394:8;8384:80;;-1:-1:-1;8435:1:1;8449:5;;8384:80;8483:4;8473:76;;-1:-1:-1;8520:1:1;8534:5;;8473:76;8565:4;8583:1;8578:59;;;;8651:1;8646:130;;;;8558:218;;8578:59;8608:1;8599:10;;8622:5;;;8646:130;8683:3;8673:8;8670:17;8667:43;;;8690:18;;:::i;:::-;-1:-1:-1;;8746:1:1;8732:16;;8761:5;;8558:218;;8860:2;8850:8;8847:16;8841:3;8835:4;8832:13;8828:36;8822:2;8812:8;8809:16;8804:2;8798:4;8795:12;8791:35;8788:77;8785:159;;;-1:-1:-1;8897:19:1;;;8929:5;;8785:159;8976:34;9001:8;8995:4;8976:34;:::i;:::-;9046:6;9042:1;9038:6;9034:19;9025:7;9022:32;9019:58;;;9057:18;;:::i;:::-;9095:20;;8315:806;-1:-1:-1;;;8315:806:1:o;9126:140::-;9184:5;9213:47;9254:4;9244:8;9240:19;9234:4;9213:47;:::i;9271:168::-;9311:7;9377:1;9373;9369:6;9365:14;9362:1;9359:21;9354:1;9347:9;9340:17;9336:45;9333:71;;;9384:18;;:::i;:::-;-1:-1:-1;9424:9:1;;9271:168::o;9444:128::-;9511:9;;;9532:11;;;9529:37;;;9546:18;;:::i;9577:125::-;9642:9;;;9663:10;;;9660:36;;;9676:18;;:::i;9707:217::-;9747:1;9773;9763:132;;9817:10;9812:3;9808:20;9805:1;9798:31;9852:4;9849:1;9842:15;9880:4;9877:1;9870:15;9763:132;-1:-1:-1;9909:9:1;;9707:217::o;9929:127::-;9990:10;9985:3;9981:20;9978:1;9971:31;10021:4;10018:1;10011:15;10045:4;10042:1;10035:15;10350:135;10389:3;10410:17;;;10407:43;;10430:18;;:::i;:::-;-1:-1:-1;10477:1:1;10466:13;;10350:135::o;10490:398::-;10692:2;10674:21;;;10731:2;10711:18;;;10704:30;10770:34;10765:2;10750:18;;10743:62;-1:-1:-1;;;10836:2:1;10821:18;;10814:32;10878:3;10863:19;;10490:398::o;12064:184::-;12134:6;12187:2;12175:9;12166:7;12162:23;12158:32;12155:52;;;12203:1;12200;12193:12;12155:52;-1:-1:-1;12226:16:1;;12064:184;-1:-1:-1;12064:184:1:o;12532:245::-;12599:6;12652:2;12640:9;12631:7;12627:23;12623:32;12620:52;;;12668:1;12665;12658:12;12620:52;12700:9;12694:16;12719:28;12741:5;12719:28;:::i;14355:251::-;14425:6;14478:2;14466:9;14457:7;14453:23;14449:32;14446:52;;;14494:1;14491;14484:12;14446:52;14526:9;14520:16;14545:31;14570:5;14545:31;:::i;15685:306::-;15773:6;15781;15789;15842:2;15830:9;15821:7;15817:23;15813:32;15810:52;;;15858:1;15855;15848:12;15810:52;15887:9;15881:16;15871:26;;15937:2;15926:9;15922:18;15916:25;15906:35;;15981:2;15970:9;15966:18;15960:25;15950:35;;15685:306;;;;;:::o;20953:461::-;21006:3;21044:5;21038:12;21071:6;21066:3;21059:19;21097:4;21126:2;21121:3;21117:12;21110:19;;21163:2;21156:5;21152:14;21184:1;21194:195;21208:6;21205:1;21202:13;21194:195;;;21273:13;;-1:-1:-1;;;;;21269:39:1;21257:52;;21329:12;;;;21364:15;;;;21305:1;21223:9;21194:195;;;-1:-1:-1;21405:3:1;;20953:461;-1:-1:-1;;;;;20953:461:1:o;21419:590::-;21726:6;21715:9;21708:25;21769:6;21764:2;21753:9;21749:18;21742:34;21812:3;21807:2;21796:9;21792:18;21785:31;21689:4;21833:57;21885:3;21874:9;21870:19;21862:6;21833:57;:::i;:::-;-1:-1:-1;;;;;21926:32:1;;;;21921:2;21906:18;;21899:60;-1:-1:-1;21990:3:1;21975:19;21968:35;21825:65;21419:590;-1:-1:-1;;;21419:590:1:o;22014:332::-;22221:6;22210:9;22203:25;22264:2;22259;22248:9;22244:18;22237:30;22184:4;22284:56;22336:2;22325:9;22321:18;22313:6;22284:56;:::i

Swarm Source

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