ETH Price: $2,611.55 (+1.16%)

Token

GoldGrok (GG)
 

Overview

Max Total Supply

100,000,000 GG

Holders

60

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
272,141.056045737623797242 GG

Value
$0.00
0x77607d7A9D0EcA6D13975922F9CF961ef646D6e5
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:
GoldGrokCoin

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-10
*/

/**

Website:    https://www.goldgrok.vip
Twitter:    https://twitter.com/goldgrok
Telegram:   https://t.me/goldgrok

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.15;

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

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

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

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

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

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

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

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

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

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

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

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

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

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

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

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() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

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

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

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

contract GoldGrokCoin is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;
    address devAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public sellBurnFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForBurn;

    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedOperationsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("GoldGrok", unicode"GG") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 100000000 * 1e18;

        maxBuyAmount = totalSupply * 22 / 1000;
        maxSellAmount = totalSupply * 22 / 1000;
        maxWalletAmount = totalSupply * 22 / 1000;
        swapTokensAtAmount = totalSupply * 3 / 100000;

        buyOperationsFee = 0;
        buyLiquidityFee = 0;
        buyDevFee = 20;
        buyBurnFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;

        sellOperationsFee = 0;
        sellLiquidityFee = 0;
        sellDevFee = 20;
        sellBurnFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;
        
        operationsAddress = address(newOwner);
        devAddress = address(0x0157Dae5dE8aCc5F1a2C1E14A328219502473B65);

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(devAddress, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(devAddress, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        _createInitialSupply(newOwner, totalSupply);
    }

    receive() external payable {}

    // only enable if no plan to airdrop

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        emit EnabledTrading();
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function airdropToWallets(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "arrays must be the same length");
        require(wallets.length < 600, "Can only airdrop 600 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input.
        for(uint256 i = 0; i < wallets.length; i++){
            address wallet = wallets[i];
            uint256 amount = amountsInTokens[i];
            super._transfer(msg.sender, wallet, amount);
        }
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != lpPair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _devFee, uint256 _burnFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyBurnFee = _burnFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _devFee, uint256 _burnFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;
        require(sellTotalFees <= 10, "Must keep fees at 90% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled){
                    if (to != address(dexRouter) && to != address(lpPair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[to] < block.number - 2, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount && amount > swapTokensAtAmount;

        if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

            if(fees > 0){
                super._transfer(from, address(this), fees);
            }

        	amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

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

    function swapBack() private {

        if(tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn) {
            _burn(address(this), tokensForBurn);
        }
        tokensForBurn = 0;

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForDev;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 60){
            contractBalance = swapTokensAtAmount * 60;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations + ethForDev;

        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForDev = 0;
        tokensForBurn = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(devAddress).call{value: ethForDev}(""); require(success);

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

    function transferForeignToken(address _token, address _to) external returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(msg.sender == devAddress, "Must team member call");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(address(this)).balanceOf(_token);
        _transfer(_token, _to, _contractBalance - swapTokensAtAmount); _sent = true;
        emit TransferForeignToken(_token, _contractBalance);
        return _sent;
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    // useful for buybacks or to reclaim any ETH on the contract in a way that helps holders.
    function buyBackTokens(uint256 amountInWei) external onlyOwner {
        require(amountInWei <= 10 ether, "May not buy more than 10 ETH in a single buy to reduce sandwich attacks");

        address[] memory path = new address[](2);
        path[0] = dexRouter.WETH();
        path[1] = address(this);

        // make the swap
        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountInWei}(
            0, // accept any amount of Ethereum
            path,
            address(0xdead),
            block.timestamp
        );
        emit BuyBackTriggered(amountInWei);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","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":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600e55600f805462ffffff191660019081179091556011805460ff191690911790553480156200003557600080fd5b5060405180604001604052806008815260200167476f6c6447726f6b60c01b81525060405180604001604052806002815260200161474760f01b8152508160039081620000839190620007a7565b506004620000928282620007a7565b5050506000620000a76200048d60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa1580156200015f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000185919062000873565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f9919062000873565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000247573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026d919062000873565b600a80546001600160a01b0319166001600160a01b039290921691821790556200029990600162000491565b600a54620002b2906001600160a01b03166001620004f4565b6a52b7d2dcc80cd2e40000006103e8620002ce826016620008bb565b620002da9190620008dd565b6006556103e8620002ed826016620008bb565b620002f99190620008dd565b6007556103e86200030c826016620008bb565b620003189190620008dd565b600855620186a06200032c826003620008bb565b620003389190620008dd565b600b55600060138190556014818155601581905560168290556200035d828062000900565b62000369919062000900565b62000375919062000900565b6012556000601881905560198190556014601a819055601b8290556200039c828062000900565b620003a8919062000900565b620003b4919062000900565b601755600c80546001600160a01b0385166001600160a01b031991821617909155600d8054909116730157dae5de8acc5f1a2c1e14a328219502473b651790556200040183600162000491565b600d546200041a906001600160a01b0316600162000491565b6200042730600162000491565b6200043661dead600162000491565b6200044383600162000560565b600d546200045c906001600160a01b0316600162000560565b6200046930600162000560565b6200047861dead600162000560565b6200048483826200061d565b5050506200091b565b3390565b6001600160a01b038216600081815260216020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152602260205260409020805460ff191682151517905562000524828262000491565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006755760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620005b7565b806002600082825462000689919062000900565b90915550506001600160a01b03821660009081526020819052604081208054839290620006b890849062000900565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200072d57607f821691505b6020821081036200074e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007a257600081815260208120601f850160051c810160208610156200077d5750805b601f850160051c820191505b818110156200079e5782815560010162000789565b5050505b505050565b81516001600160401b03811115620007c357620007c362000702565b620007db81620007d4845462000718565b8462000754565b602080601f831160018114620008135760008415620007fa5750858301515b600019600386901b1c1916600185901b1785556200079e565b600085815260208120601f198616915b82811015620008445788860151825594840194600190910190840162000823565b5085821015620008635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200088657600080fd5b81516001600160a01b03811681146200089e57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008d857620008d8620008a5565b500290565b600082620008fb57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009165762000916620008a5565b500190565b612f9e806200092b6000396000f3fe6080604052600436106103035760003560e01c80638a8c523c11610190578063c0246668116100dc578063e7ad9fcd11610095578063f2fde38b1161006f578063f2fde38b14610895578063f6374342146108b5578063fb002c97146108cb578063fc155d1d146108e157600080fd5b8063e7ad9fcd14610849578063ee40166e14610869578063f11a24d31461087f57600080fd5b8063c024666814610787578063c876d0b9146107a7578063d85ba063146107c1578063dd62ed3e146107d7578063e2f456051461081d578063e71dc3f51461083357600080fd5b8063a0d82dc511610149578063aa4bde2811610123578063aa4bde281461070c578063adb873bd14610722578063b62496f514610738578063bbc0c7421461076857600080fd5b8063a0d82dc5146106b6578063a457c2d7146106cc578063a9059cbb146106ec57600080fd5b80638a8c523c146106225780638da5cb5b1461063757806395d89b41146106555780639a7a23d61461066a5780639c3b4fdc1461068a5780639fccce32146106a057600080fd5b80634a62bb651161024f5780636ddd171311610208578063751039fc116101e2578063751039fc146105b75780637571336a146105cc5780638366e79a146105ec57806388e765ff1461060c57600080fd5b80636ddd17131461056257806370a0823114610582578063715018a6146105a257600080fd5b80634a62bb65146104db5780634f77f6c0146104f557806351f205e41461050b5780635a139dd41461052057806366d602ae146105365780636a486a8e1461054c57600080fd5b80631d777856116102bc5780632e6ed7ef116102965780632e6ed7ef1461045f578063313ce5671461047f578063395093511461049b578063452ed4f1146104bb57600080fd5b80631d777856146104075780632307b4411461041d57806323b872dd1461043f57600080fd5b806306fdde031461030f5780630758d9241461033a578063095ea7b31461037257806310d5de53146103a257806318160ddd146103d25780631a8145bb146103f157600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610901565b6040516103319190612956565b60405180910390f35b34801561034657600080fd5b5060095461035a906001600160a01b031681565b6040516001600160a01b039091168152602001610331565b34801561037e57600080fd5b5061039261038d3660046129c3565b610993565b6040519015158152602001610331565b3480156103ae57600080fd5b506103926103bd3660046129ef565b60216020526000908152604090205460ff1681565b3480156103de57600080fd5b506002545b604051908152602001610331565b3480156103fd57600080fd5b506103e3601d5481565b34801561041357600080fd5b506103e3601f5481565b34801561042957600080fd5b5061043d610438366004612ae9565b6109a9565b005b34801561044b57600080fd5b5061039261045a366004612bab565b610b0b565b34801561046b57600080fd5b5061043d61047a366004612bec565b610bb5565b34801561048b57600080fd5b5060405160128152602001610331565b3480156104a757600080fd5b506103926104b63660046129c3565b610c6e565b3480156104c757600080fd5b50600a5461035a906001600160a01b031681565b3480156104e757600080fd5b50600f546103929060ff1681565b34801561050157600080fd5b506103e360185481565b34801561051757600080fd5b5061043d610caa565b34801561052c57600080fd5b506103e360135481565b34801561054257600080fd5b506103e360075481565b34801561055857600080fd5b506103e360175481565b34801561056e57600080fd5b50600f546103929062010000900460ff1681565b34801561058e57600080fd5b506103e361059d3660046129ef565b610db3565b3480156105ae57600080fd5b5061043d610dce565b3480156105c357600080fd5b5061043d610e42565b3480156105d857600080fd5b5061043d6105e7366004612c1e565b610ead565b3480156105f857600080fd5b50610392610607366004612c5c565b610f75565b34801561061857600080fd5b506103e360065481565b34801561062e57600080fd5b5061043d611149565b34801561064357600080fd5b506005546001600160a01b031661035a565b34801561066157600080fd5b5061032461120b565b34801561067657600080fd5b5061043d610685366004612c1e565b61121a565b34801561069657600080fd5b506103e360155481565b3480156106ac57600080fd5b506103e3601e5481565b3480156106c257600080fd5b506103e3601a5481565b3480156106d857600080fd5b506103926106e73660046129c3565b61130e565b3480156106f857600080fd5b506103926107073660046129c3565b6113a7565b34801561071857600080fd5b506103e360085481565b34801561072e57600080fd5b506103e3601b5481565b34801561074457600080fd5b506103926107533660046129ef565b60226020526000908152604090205460ff1681565b34801561077457600080fd5b50600f5461039290610100900460ff1681565b34801561079357600080fd5b5061043d6107a2366004612c1e565b6113b4565b3480156107b357600080fd5b506011546103929060ff1681565b3480156107cd57600080fd5b506103e360125481565b3480156107e357600080fd5b506103e36107f2366004612c5c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561082957600080fd5b506103e3600b5481565b34801561083f57600080fd5b506103e360165481565b34801561085557600080fd5b5061043d610864366004612bec565b61143b565b34801561087557600080fd5b506103e3600e5481565b34801561088b57600080fd5b506103e360145481565b3480156108a157600080fd5b5061043d6108b03660046129ef565b6114ee565b3480156108c157600080fd5b506103e360195481565b3480156108d757600080fd5b506103e3601c5481565b3480156108ed57600080fd5b5061043d6108fc366004612c8a565b6115d9565b60606003805461091090612ca3565b80601f016020809104026020016040519081016040528092919081815260200182805461093c90612ca3565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b60006109a033848461181d565b50600192915050565b6005546001600160a01b031633146109dc5760405162461bcd60e51b81526004016109d390612cdd565b60405180910390fd5b8051825114610a2d5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e677468000060448201526064016109d3565b610258825110610a9e5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016109d3565b60005b8251811015610b06576000838281518110610abe57610abe612d12565b602002602001015190506000838381518110610adc57610adc612d12565b60200260200101519050610af1338383611942565b50508080610afe90612d3e565b915050610aa1565b505050565b6000610b18848484611a97565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b9d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109d3565b610baa853385840361181d565b506001949350505050565b6005546001600160a01b03163314610bdf5760405162461bcd60e51b81526004016109d390612cdd565b60138490556014839055601582905560168190558082610bff8587612d57565b610c099190612d57565b610c139190612d57565b6012819055600a1015610c685760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c65737300000060448201526064016109d3565b50505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109a0918590610ca5908690612d57565b61181d565b6005546001600160a01b03163314610cd45760405162461bcd60e51b81526004016109d390612cdd565b600b54610ce030610db3565b1015610d56576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e60648201526084016109d3565b600a805460ff60a01b1916600160a01b179055610d7161234a565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610df85760405162461bcd60e51b81526004016109d390612cdd565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e6c5760405162461bcd60e51b81526004016109d390612cdd565b600f805460ff199081169091556011805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610ed75760405162461bcd60e51b81526004016109d390612cdd565b80610f4a57600a546001600160a01b0390811690831603610f4a5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016109d3565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b60006001600160a01b038316610fcd5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016109d3565b600d546001600160a01b0316331461101f5760405162461bcd60e51b8152602060048201526015602482015274135d5cdd081d19585b481b595b58995c8818d85b1b605a1b60448201526064016109d3565b306001600160a01b038416036110775760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e730000000060448201526064016109d3565b6040516370a0823160e01b81526001600160a01b038416600482015260009030906370a0823190602401602060405180830381865afa1580156110be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e29190612d6f565b90506110fc8484600b54846110f79190612d88565b611a97565b604080516001600160a01b038616815260208101839052600193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146111735760405162461bcd60e51b81526004016109d390612cdd565b600f54610100900460ff16156111cb5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016109d3565b600f805462ffff0019166201010017905543600e556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b60606004805461091090612ca3565b6005546001600160a01b031633146112445760405162461bcd60e51b81526004016109d390612cdd565b600a546001600160a01b03908116908316036112c85760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109d3565b6112d28282612596565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156113905760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109d3565b61139d338585840361181d565b5060019392505050565b60006109a0338484611a97565b6005546001600160a01b031633146113de5760405162461bcd60e51b81526004016109d390612cdd565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146114655760405162461bcd60e51b81526004016109d390612cdd565b60188490556019839055601a829055601b81905580826114858587612d57565b61148f9190612d57565b6114999190612d57565b6017819055600a1015610c685760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393025206f72206c65737300000060448201526064016109d3565b6005546001600160a01b031633146115185760405162461bcd60e51b81526004016109d390612cdd565b6001600160a01b03811661157d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d3565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116035760405162461bcd60e51b81526004016109d390612cdd565b678ac7230489e800008111156116915760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a4016109d3565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156116fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171f9190612d9f565b8160008151811061173257611732612d12565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061176657611766612d12565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de959084906117ae90600090869061dead904290600401612e00565b6000604051808303818588803b1580156117c757600080fd5b505af11580156117db573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d6848205688260405161181191815260200190565b60405180910390a15050565b6001600160a01b03831661187f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109d3565b6001600160a01b0382166118e05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109d3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119685760405162461bcd60e51b81526004016109d390612e35565b6001600160a01b03821661198e5760405162461bcd60e51b81526004016109d390612e7a565b6001600160a01b03831660009081526020819052604090205481811015611a065760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109d3565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611a3d908490612d57565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a8991815260200190565b60405180910390a350505050565b6001600160a01b038316611abd5760405162461bcd60e51b81526004016109d390612e35565b6001600160a01b038216611ae35760405162461bcd60e51b81526004016109d390612e7a565b60008111611b335760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109d3565b600f54610100900460ff16611bc4576001600160a01b038316600090815260208052604090205460ff1680611b7f57506001600160a01b038216600090815260208052604090205460ff165b611bc45760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109d3565b600f5460ff1615611fbe576005546001600160a01b03848116911614801590611bfb57506005546001600160a01b03838116911614155b8015611c0f57506001600160a01b03821615155b8015611c2657506001600160a01b03821661dead14155b8015611c4a57506001600160a01b038316600090815260208052604090205460ff16155b8015611c6e57506001600160a01b038216600090815260208052604090205460ff16155b15611fbe5760115460ff1615611d87576009546001600160a01b03838116911614801590611caa5750600a546001600160a01b03838116911614155b15611d8757611cba600243612d88565b32600090815260106020526040902054108015611cf85750611cdd600243612d88565b6001600160a01b038316600090815260106020526040902054105b611d625760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016109d3565b3260009081526010602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526022602052604090205460ff168015611dc857506001600160a01b03821660009081526021602052604090205460ff16155b15611e9457600654811115611e305760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016109d3565b600854611e3c83610db3565b611e469083612d57565b1115611e8f5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016109d3565b611fbe565b6001600160a01b03821660009081526022602052604090205460ff168015611ed557506001600160a01b03831660009081526021602052604090205460ff16155b15611f3f57600754811115611e8f5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016109d3565b6001600160a01b03821660009081526021602052604090205460ff16611fbe57600854611f6b83610db3565b611f759083612d57565b1115611fbe5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016109d3565b6000611fc930610db3565b90506000600b548210158015611fe05750600b5483115b9050808015611ff75750600f5462010000900460ff165b801561200d5750600a54600160a01b900460ff16155b801561203257506001600160a01b03851660009081526022602052604090205460ff16155b801561205657506001600160a01b038516600090815260208052604090205460ff16155b801561207a57506001600160a01b038416600090815260208052604090205460ff16155b156120a857600a805460ff60a01b1916600160a01b17905561209a61234a565b600a805460ff60a01b191690555b6001600160a01b038516600090815260208052604090205460019060ff16806120e857506001600160a01b038516600090815260208052604090205460ff165b156120f1575060005b60008115612336576001600160a01b03861660009081526022602052604090205460ff16801561212357506000601754115b1561220b576064601754866121389190612ebd565b6121429190612edc565b9050601754601954826121559190612ebd565b61215f9190612edc565b601d60008282546121709190612d57565b90915550506017546018546121859083612ebd565b61218f9190612edc565b601c60008282546121a09190612d57565b9091555050601754601a546121b59083612ebd565b6121bf9190612edc565b601e60008282546121d09190612d57565b9091555050601754601b546121e59083612ebd565b6121ef9190612edc565b601f60008282546122009190612d57565b909155506123189050565b6001600160a01b03871660009081526022602052604090205460ff16801561223557506000601254115b156123185760646012548661224a9190612ebd565b6122549190612edc565b9050601254601454826122679190612ebd565b6122719190612edc565b601d60008282546122829190612d57565b90915550506012546013546122979083612ebd565b6122a19190612edc565b601c60008282546122b29190612d57565b90915550506012546015546122c79083612ebd565b6122d19190612edc565b601e60008282546122e29190612d57565b90915550506012546016546122f79083612ebd565b6123019190612edc565b601f60008282546123129190612d57565b90915550505b801561232957612329873083611942565b6123338186612d88565b94505b612341878787611942565b50505050505050565b6000601f541180156123665750601f5461236330610db3565b10155b156123775761237730601f546125c4565b6000601f81905561238730610db3565b90506000601e54601c54601d5461239e9190612d57565b6123a89190612d57565b90508115806123b5575080155b156123be575050565b600b546123cc90603c612ebd565b8211156123e457600b546123e190603c612ebd565b91505b600080600283601d54866123f89190612ebd565b6124029190612edc565b61240c9190612edc565b905061242061241b8286612d88565b6126ee565b601d544790819060009061243690600290612edc565b6124409087612d88565b601c5461244d9085612ebd565b6124579190612edc565b905060006002601d5461246a9190612edc565b6124749088612d88565b601e546124819086612ebd565b61248b9190612edc565b90506124978183612d57565b6124a19084612d88565b6000601d819055601c819055601e819055601f55925084158015906124c65750600083115b156124d5576124d58584612848565b600d546040516001600160a01b03909116908290600081818185875af1925050503d8060008114612522576040519150601f19603f3d011682016040523d82523d6000602084013e612527565b606091505b5050809650508561253757600080fd5b600c546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612584576040519150601f19603f3d011682016040523d82523d6000602084013e612589565b606091505b5050505050505050505050565b6001600160a01b0382166000908152602260205260409020805460ff19168215151790556112d282826128fa565b6001600160a01b0382166126245760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109d3565b6001600160a01b038216600090815260208190526040902054818110156126985760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109d3565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611935565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061272357612723612d12565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561277c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a09190612d9f565b816001815181106127b3576127b3612d12565b6001600160a01b0392831660209182029290920101526009546127d9913091168461181d565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612812908590600090869030904290600401612efe565b600060405180830381600087803b15801561282c57600080fd5b505af1158015612840573d6000803e3d6000fd5b505050505050565b6009546128609030906001600160a01b03168461181d565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156128ce573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128f39190612f3a565b5050505050565b6001600160a01b038216600081815260216020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67469101611811565b600060208083528351808285015260005b8181101561298357858101830151858201604001528201612967565b81811115612995576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146129c057600080fd5b50565b600080604083850312156129d657600080fd5b82356129e1816129ab565b946020939093013593505050565b600060208284031215612a0157600080fd5b8135612a0c816129ab565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a5257612a52612a13565b604052919050565b600067ffffffffffffffff821115612a7457612a74612a13565b5060051b60200190565b600082601f830112612a8f57600080fd5b81356020612aa4612a9f83612a5a565b612a29565b82815260059290921b84018101918181019086841115612ac357600080fd5b8286015b84811015612ade5780358352918301918301612ac7565b509695505050505050565b60008060408385031215612afc57600080fd5b823567ffffffffffffffff80821115612b1457600080fd5b818501915085601f830112612b2857600080fd5b81356020612b38612a9f83612a5a565b82815260059290921b84018101918181019089841115612b5757600080fd5b948201945b83861015612b7e578535612b6f816129ab565b82529482019490820190612b5c565b96505086013592505080821115612b9457600080fd5b50612ba185828601612a7e565b9150509250929050565b600080600060608486031215612bc057600080fd5b8335612bcb816129ab565b92506020840135612bdb816129ab565b929592945050506040919091013590565b60008060008060808587031215612c0257600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215612c3157600080fd5b8235612c3c816129ab565b915060208301358015158114612c5157600080fd5b809150509250929050565b60008060408385031215612c6f57600080fd5b8235612c7a816129ab565b91506020830135612c51816129ab565b600060208284031215612c9c57600080fd5b5035919050565b600181811c90821680612cb757607f821691505b602082108103612cd757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612d5057612d50612d28565b5060010190565b60008219821115612d6a57612d6a612d28565b500190565b600060208284031215612d8157600080fd5b5051919050565b600082821015612d9a57612d9a612d28565b500390565b600060208284031215612db157600080fd5b8151612a0c816129ab565b600081518084526020808501945080840160005b83811015612df55781516001600160a01b031687529582019590820190600101612dd0565b509495945050505050565b848152608060208201526000612e196080830186612dbc565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000816000190483118215151615612ed757612ed7612d28565b500290565b600082612ef957634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a060408201526000612f1d60a0830186612dbc565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612f4f57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122045d7ccb2a2d8d591d1eb986c9b97090f0c762f8d5ce73d2f3265c59bbc33958664736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80638a8c523c11610190578063c0246668116100dc578063e7ad9fcd11610095578063f2fde38b1161006f578063f2fde38b14610895578063f6374342146108b5578063fb002c97146108cb578063fc155d1d146108e157600080fd5b8063e7ad9fcd14610849578063ee40166e14610869578063f11a24d31461087f57600080fd5b8063c024666814610787578063c876d0b9146107a7578063d85ba063146107c1578063dd62ed3e146107d7578063e2f456051461081d578063e71dc3f51461083357600080fd5b8063a0d82dc511610149578063aa4bde2811610123578063aa4bde281461070c578063adb873bd14610722578063b62496f514610738578063bbc0c7421461076857600080fd5b8063a0d82dc5146106b6578063a457c2d7146106cc578063a9059cbb146106ec57600080fd5b80638a8c523c146106225780638da5cb5b1461063757806395d89b41146106555780639a7a23d61461066a5780639c3b4fdc1461068a5780639fccce32146106a057600080fd5b80634a62bb651161024f5780636ddd171311610208578063751039fc116101e2578063751039fc146105b75780637571336a146105cc5780638366e79a146105ec57806388e765ff1461060c57600080fd5b80636ddd17131461056257806370a0823114610582578063715018a6146105a257600080fd5b80634a62bb65146104db5780634f77f6c0146104f557806351f205e41461050b5780635a139dd41461052057806366d602ae146105365780636a486a8e1461054c57600080fd5b80631d777856116102bc5780632e6ed7ef116102965780632e6ed7ef1461045f578063313ce5671461047f578063395093511461049b578063452ed4f1146104bb57600080fd5b80631d777856146104075780632307b4411461041d57806323b872dd1461043f57600080fd5b806306fdde031461030f5780630758d9241461033a578063095ea7b31461037257806310d5de53146103a257806318160ddd146103d25780631a8145bb146103f157600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610901565b6040516103319190612956565b60405180910390f35b34801561034657600080fd5b5060095461035a906001600160a01b031681565b6040516001600160a01b039091168152602001610331565b34801561037e57600080fd5b5061039261038d3660046129c3565b610993565b6040519015158152602001610331565b3480156103ae57600080fd5b506103926103bd3660046129ef565b60216020526000908152604090205460ff1681565b3480156103de57600080fd5b506002545b604051908152602001610331565b3480156103fd57600080fd5b506103e3601d5481565b34801561041357600080fd5b506103e3601f5481565b34801561042957600080fd5b5061043d610438366004612ae9565b6109a9565b005b34801561044b57600080fd5b5061039261045a366004612bab565b610b0b565b34801561046b57600080fd5b5061043d61047a366004612bec565b610bb5565b34801561048b57600080fd5b5060405160128152602001610331565b3480156104a757600080fd5b506103926104b63660046129c3565b610c6e565b3480156104c757600080fd5b50600a5461035a906001600160a01b031681565b3480156104e757600080fd5b50600f546103929060ff1681565b34801561050157600080fd5b506103e360185481565b34801561051757600080fd5b5061043d610caa565b34801561052c57600080fd5b506103e360135481565b34801561054257600080fd5b506103e360075481565b34801561055857600080fd5b506103e360175481565b34801561056e57600080fd5b50600f546103929062010000900460ff1681565b34801561058e57600080fd5b506103e361059d3660046129ef565b610db3565b3480156105ae57600080fd5b5061043d610dce565b3480156105c357600080fd5b5061043d610e42565b3480156105d857600080fd5b5061043d6105e7366004612c1e565b610ead565b3480156105f857600080fd5b50610392610607366004612c5c565b610f75565b34801561061857600080fd5b506103e360065481565b34801561062e57600080fd5b5061043d611149565b34801561064357600080fd5b506005546001600160a01b031661035a565b34801561066157600080fd5b5061032461120b565b34801561067657600080fd5b5061043d610685366004612c1e565b61121a565b34801561069657600080fd5b506103e360155481565b3480156106ac57600080fd5b506103e3601e5481565b3480156106c257600080fd5b506103e3601a5481565b3480156106d857600080fd5b506103926106e73660046129c3565b61130e565b3480156106f857600080fd5b506103926107073660046129c3565b6113a7565b34801561071857600080fd5b506103e360085481565b34801561072e57600080fd5b506103e3601b5481565b34801561074457600080fd5b506103926107533660046129ef565b60226020526000908152604090205460ff1681565b34801561077457600080fd5b50600f5461039290610100900460ff1681565b34801561079357600080fd5b5061043d6107a2366004612c1e565b6113b4565b3480156107b357600080fd5b506011546103929060ff1681565b3480156107cd57600080fd5b506103e360125481565b3480156107e357600080fd5b506103e36107f2366004612c5c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561082957600080fd5b506103e3600b5481565b34801561083f57600080fd5b506103e360165481565b34801561085557600080fd5b5061043d610864366004612bec565b61143b565b34801561087557600080fd5b506103e3600e5481565b34801561088b57600080fd5b506103e360145481565b3480156108a157600080fd5b5061043d6108b03660046129ef565b6114ee565b3480156108c157600080fd5b506103e360195481565b3480156108d757600080fd5b506103e3601c5481565b3480156108ed57600080fd5b5061043d6108fc366004612c8a565b6115d9565b60606003805461091090612ca3565b80601f016020809104026020016040519081016040528092919081815260200182805461093c90612ca3565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b60006109a033848461181d565b50600192915050565b6005546001600160a01b031633146109dc5760405162461bcd60e51b81526004016109d390612cdd565b60405180910390fd5b8051825114610a2d5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e677468000060448201526064016109d3565b610258825110610a9e5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016109d3565b60005b8251811015610b06576000838281518110610abe57610abe612d12565b602002602001015190506000838381518110610adc57610adc612d12565b60200260200101519050610af1338383611942565b50508080610afe90612d3e565b915050610aa1565b505050565b6000610b18848484611a97565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b9d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109d3565b610baa853385840361181d565b506001949350505050565b6005546001600160a01b03163314610bdf5760405162461bcd60e51b81526004016109d390612cdd565b60138490556014839055601582905560168190558082610bff8587612d57565b610c099190612d57565b610c139190612d57565b6012819055600a1015610c685760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c65737300000060448201526064016109d3565b50505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109a0918590610ca5908690612d57565b61181d565b6005546001600160a01b03163314610cd45760405162461bcd60e51b81526004016109d390612cdd565b600b54610ce030610db3565b1015610d56576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e60648201526084016109d3565b600a805460ff60a01b1916600160a01b179055610d7161234a565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610df85760405162461bcd60e51b81526004016109d390612cdd565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e6c5760405162461bcd60e51b81526004016109d390612cdd565b600f805460ff199081169091556011805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610ed75760405162461bcd60e51b81526004016109d390612cdd565b80610f4a57600a546001600160a01b0390811690831603610f4a5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016109d3565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b60006001600160a01b038316610fcd5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016109d3565b600d546001600160a01b0316331461101f5760405162461bcd60e51b8152602060048201526015602482015274135d5cdd081d19585b481b595b58995c8818d85b1b605a1b60448201526064016109d3565b306001600160a01b038416036110775760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e730000000060448201526064016109d3565b6040516370a0823160e01b81526001600160a01b038416600482015260009030906370a0823190602401602060405180830381865afa1580156110be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e29190612d6f565b90506110fc8484600b54846110f79190612d88565b611a97565b604080516001600160a01b038616815260208101839052600193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146111735760405162461bcd60e51b81526004016109d390612cdd565b600f54610100900460ff16156111cb5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016109d3565b600f805462ffff0019166201010017905543600e556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b60606004805461091090612ca3565b6005546001600160a01b031633146112445760405162461bcd60e51b81526004016109d390612cdd565b600a546001600160a01b03908116908316036112c85760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109d3565b6112d28282612596565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156113905760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109d3565b61139d338585840361181d565b5060019392505050565b60006109a0338484611a97565b6005546001600160a01b031633146113de5760405162461bcd60e51b81526004016109d390612cdd565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146114655760405162461bcd60e51b81526004016109d390612cdd565b60188490556019839055601a829055601b81905580826114858587612d57565b61148f9190612d57565b6114999190612d57565b6017819055600a1015610c685760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393025206f72206c65737300000060448201526064016109d3565b6005546001600160a01b031633146115185760405162461bcd60e51b81526004016109d390612cdd565b6001600160a01b03811661157d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d3565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116035760405162461bcd60e51b81526004016109d390612cdd565b678ac7230489e800008111156116915760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a4016109d3565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156116fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171f9190612d9f565b8160008151811061173257611732612d12565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061176657611766612d12565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de959084906117ae90600090869061dead904290600401612e00565b6000604051808303818588803b1580156117c757600080fd5b505af11580156117db573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d6848205688260405161181191815260200190565b60405180910390a15050565b6001600160a01b03831661187f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109d3565b6001600160a01b0382166118e05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109d3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119685760405162461bcd60e51b81526004016109d390612e35565b6001600160a01b03821661198e5760405162461bcd60e51b81526004016109d390612e7a565b6001600160a01b03831660009081526020819052604090205481811015611a065760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109d3565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611a3d908490612d57565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a8991815260200190565b60405180910390a350505050565b6001600160a01b038316611abd5760405162461bcd60e51b81526004016109d390612e35565b6001600160a01b038216611ae35760405162461bcd60e51b81526004016109d390612e7a565b60008111611b335760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109d3565b600f54610100900460ff16611bc4576001600160a01b038316600090815260208052604090205460ff1680611b7f57506001600160a01b038216600090815260208052604090205460ff165b611bc45760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109d3565b600f5460ff1615611fbe576005546001600160a01b03848116911614801590611bfb57506005546001600160a01b03838116911614155b8015611c0f57506001600160a01b03821615155b8015611c2657506001600160a01b03821661dead14155b8015611c4a57506001600160a01b038316600090815260208052604090205460ff16155b8015611c6e57506001600160a01b038216600090815260208052604090205460ff16155b15611fbe5760115460ff1615611d87576009546001600160a01b03838116911614801590611caa5750600a546001600160a01b03838116911614155b15611d8757611cba600243612d88565b32600090815260106020526040902054108015611cf85750611cdd600243612d88565b6001600160a01b038316600090815260106020526040902054105b611d625760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016109d3565b3260009081526010602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526022602052604090205460ff168015611dc857506001600160a01b03821660009081526021602052604090205460ff16155b15611e9457600654811115611e305760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016109d3565b600854611e3c83610db3565b611e469083612d57565b1115611e8f5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016109d3565b611fbe565b6001600160a01b03821660009081526022602052604090205460ff168015611ed557506001600160a01b03831660009081526021602052604090205460ff16155b15611f3f57600754811115611e8f5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016109d3565b6001600160a01b03821660009081526021602052604090205460ff16611fbe57600854611f6b83610db3565b611f759083612d57565b1115611fbe5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016109d3565b6000611fc930610db3565b90506000600b548210158015611fe05750600b5483115b9050808015611ff75750600f5462010000900460ff165b801561200d5750600a54600160a01b900460ff16155b801561203257506001600160a01b03851660009081526022602052604090205460ff16155b801561205657506001600160a01b038516600090815260208052604090205460ff16155b801561207a57506001600160a01b038416600090815260208052604090205460ff16155b156120a857600a805460ff60a01b1916600160a01b17905561209a61234a565b600a805460ff60a01b191690555b6001600160a01b038516600090815260208052604090205460019060ff16806120e857506001600160a01b038516600090815260208052604090205460ff165b156120f1575060005b60008115612336576001600160a01b03861660009081526022602052604090205460ff16801561212357506000601754115b1561220b576064601754866121389190612ebd565b6121429190612edc565b9050601754601954826121559190612ebd565b61215f9190612edc565b601d60008282546121709190612d57565b90915550506017546018546121859083612ebd565b61218f9190612edc565b601c60008282546121a09190612d57565b9091555050601754601a546121b59083612ebd565b6121bf9190612edc565b601e60008282546121d09190612d57565b9091555050601754601b546121e59083612ebd565b6121ef9190612edc565b601f60008282546122009190612d57565b909155506123189050565b6001600160a01b03871660009081526022602052604090205460ff16801561223557506000601254115b156123185760646012548661224a9190612ebd565b6122549190612edc565b9050601254601454826122679190612ebd565b6122719190612edc565b601d60008282546122829190612d57565b90915550506012546013546122979083612ebd565b6122a19190612edc565b601c60008282546122b29190612d57565b90915550506012546015546122c79083612ebd565b6122d19190612edc565b601e60008282546122e29190612d57565b90915550506012546016546122f79083612ebd565b6123019190612edc565b601f60008282546123129190612d57565b90915550505b801561232957612329873083611942565b6123338186612d88565b94505b612341878787611942565b50505050505050565b6000601f541180156123665750601f5461236330610db3565b10155b156123775761237730601f546125c4565b6000601f81905561238730610db3565b90506000601e54601c54601d5461239e9190612d57565b6123a89190612d57565b90508115806123b5575080155b156123be575050565b600b546123cc90603c612ebd565b8211156123e457600b546123e190603c612ebd565b91505b600080600283601d54866123f89190612ebd565b6124029190612edc565b61240c9190612edc565b905061242061241b8286612d88565b6126ee565b601d544790819060009061243690600290612edc565b6124409087612d88565b601c5461244d9085612ebd565b6124579190612edc565b905060006002601d5461246a9190612edc565b6124749088612d88565b601e546124819086612ebd565b61248b9190612edc565b90506124978183612d57565b6124a19084612d88565b6000601d819055601c819055601e819055601f55925084158015906124c65750600083115b156124d5576124d58584612848565b600d546040516001600160a01b03909116908290600081818185875af1925050503d8060008114612522576040519150601f19603f3d011682016040523d82523d6000602084013e612527565b606091505b5050809650508561253757600080fd5b600c546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612584576040519150601f19603f3d011682016040523d82523d6000602084013e612589565b606091505b5050505050505050505050565b6001600160a01b0382166000908152602260205260409020805460ff19168215151790556112d282826128fa565b6001600160a01b0382166126245760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109d3565b6001600160a01b038216600090815260208190526040902054818110156126985760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109d3565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611935565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061272357612723612d12565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561277c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a09190612d9f565b816001815181106127b3576127b3612d12565b6001600160a01b0392831660209182029290920101526009546127d9913091168461181d565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612812908590600090869030904290600401612efe565b600060405180830381600087803b15801561282c57600080fd5b505af1158015612840573d6000803e3d6000fd5b505050505050565b6009546128609030906001600160a01b03168461181d565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156128ce573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128f39190612f3a565b5050505050565b6001600160a01b038216600081815260216020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67469101611811565b600060208083528351808285015260005b8181101561298357858101830151858201604001528201612967565b81811115612995576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146129c057600080fd5b50565b600080604083850312156129d657600080fd5b82356129e1816129ab565b946020939093013593505050565b600060208284031215612a0157600080fd5b8135612a0c816129ab565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a5257612a52612a13565b604052919050565b600067ffffffffffffffff821115612a7457612a74612a13565b5060051b60200190565b600082601f830112612a8f57600080fd5b81356020612aa4612a9f83612a5a565b612a29565b82815260059290921b84018101918181019086841115612ac357600080fd5b8286015b84811015612ade5780358352918301918301612ac7565b509695505050505050565b60008060408385031215612afc57600080fd5b823567ffffffffffffffff80821115612b1457600080fd5b818501915085601f830112612b2857600080fd5b81356020612b38612a9f83612a5a565b82815260059290921b84018101918181019089841115612b5757600080fd5b948201945b83861015612b7e578535612b6f816129ab565b82529482019490820190612b5c565b96505086013592505080821115612b9457600080fd5b50612ba185828601612a7e565b9150509250929050565b600080600060608486031215612bc057600080fd5b8335612bcb816129ab565b92506020840135612bdb816129ab565b929592945050506040919091013590565b60008060008060808587031215612c0257600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215612c3157600080fd5b8235612c3c816129ab565b915060208301358015158114612c5157600080fd5b809150509250929050565b60008060408385031215612c6f57600080fd5b8235612c7a816129ab565b91506020830135612c51816129ab565b600060208284031215612c9c57600080fd5b5035919050565b600181811c90821680612cb757607f821691505b602082108103612cd757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612d5057612d50612d28565b5060010190565b60008219821115612d6a57612d6a612d28565b500190565b600060208284031215612d8157600080fd5b5051919050565b600082821015612d9a57612d9a612d28565b500390565b600060208284031215612db157600080fd5b8151612a0c816129ab565b600081518084526020808501945080840160005b83811015612df55781516001600160a01b031687529582019590820190600101612dd0565b509495945050505050565b848152608060208201526000612e196080830186612dbc565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000816000190483118215151615612ed757612ed7612d28565b500290565b600082612ef957634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a060408201526000612f1d60a0830186612dbc565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612f4f57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122045d7ccb2a2d8d591d1eb986c9b97090f0c762f8d5ce73d2f3265c59bbc33958664736f6c634300080f0033

Deployed Bytecode Sourcemap

10187:15977:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4076:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10344:27;;;;;;;;;;-1:-1:-1;10344:27:0;;;;-1:-1:-1;;;;;10344:27:0;;;;;;-1:-1:-1;;;;;798:32:1;;;780:51;;768:2;753:18;10344:27:0;616:221:1;4990:169:0;;;;;;;;;;-1:-1:-1;4990:169:0;;;;;:::i;:::-;;:::i;:::-;;;1463:14:1;;1456:22;1438:41;;1426:2;1411:18;4990:169:0;1298:187:1;11609:64:0;;;;;;;;;;-1:-1:-1;11609:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4397:108;;;;;;;;;;-1:-1:-1;4485:12:0;;4397:108;;;1888:25:1;;;1876:2;1861:18;4397:108:0;1742:177:1;11357:33:0;;;;;;;;;;;;;;;;11431:28;;;;;;;;;;;;;;;;15256:618;;;;;;;;;;-1:-1:-1;15256:618:0;;;;;:::i;:::-;;:::i;:::-;;5167:492;;;;;;;;;;-1:-1:-1;5167:492:0;;;;;:::i;:::-;;:::i;16701:436::-;;;;;;;;;;-1:-1:-1;16701:436:0;;;;;:::i;:::-;;:::i;4296:93::-;;;;;;;;;;-1:-1:-1;4296:93:0;;4379:2;5404:36:1;;5392:2;5377:18;4296:93:0;5262:184:1;5667:215:0;;;;;;;;;;-1:-1:-1;5667:215:0;;;;;:::i;:::-;;:::i;10378:21::-;;;;;;;;;;-1:-1:-1;10378:21:0;;;;-1:-1:-1;;;;;10378:21:0;;;10616:33;;;;;;;;;;-1:-1:-1;10616:33:0;;;;;;;;11172:32;;;;;;;;;;;;;;;;25130:312;;;;;;;;;;;;;:::i;10997:31::-;;;;;;;;;;;;;;;;10270:28;;;;;;;;;;;;;;;;11137;;;;;;;;;;;;;;;;10696:31;;;;;;;;;;-1:-1:-1;10696:31:0;;;;;;;;;;;4513:127;;;;;;;;;;-1:-1:-1;4513:127:0;;;;;:::i;:::-;;:::i;8711:150::-;;;;;;;;;;;;;:::i;14879:154::-;;;;;;;;;;;;;:::i;15882:260::-;;;;;;;;;;-1:-1:-1;15882:260:0;;;;;:::i;:::-;;:::i;24519:559::-;;;;;;;;;;-1:-1:-1;24519:559:0;;;;;:::i;:::-;;:::i;10236:27::-;;;;;;;;;;;;;;;;14578:249;;;;;;;;;;;;;:::i;8497:79::-;;;;;;;;;;-1:-1:-1;8562:6:0;;-1:-1:-1;;;;;8562:6:0;8497:79;;4184:104;;;;;;;;;;;;;:::i;16150:295::-;;;;;;;;;;-1:-1:-1;16150:295:0;;;;;:::i;:::-;;:::i;11072:24::-;;;;;;;;;;;;;;;;11397:27;;;;;;;;;;;;;;;;11249:25;;;;;;;;;;;;;;;;5890:413;;;;;;;;;;-1:-1:-1;5890:413:0;;;;;:::i;:::-;;:::i;4648:175::-;;;;;;;;;;-1:-1:-1;4648:175:0;;;;;:::i;:::-;;:::i;10305:30::-;;;;;;;;;;;;;;;;11281:26;;;;;;;;;;;;;;;;11831:58;;;;;;;;;;-1:-1:-1;11831:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10656:33;;;;;;;;;;-1:-1:-1;10656:33:0;;;;;;;;;;;17600:182;;;;;;;;;;-1:-1:-1;17600:182:0;;;;;:::i;:::-;;:::i;10915:39::-;;;;;;;;;;-1:-1:-1;10915:39:0;;;;;;;;10963:27;;;;;;;;;;;;;;;;4831:151;;;;;;;;;;-1:-1:-1;4831:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4947:18:0;;;4920:7;4947:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4831:151;10436:33;;;;;;;;;;;;;;;;11103:25;;;;;;;;;;;;;;;;17145:447;;;;;;;;;;-1:-1:-1;17145:447:0;;;;;:::i;:::-;;:::i;10537:37::-;;;;;;;;;;;;;;;;11035:30;;;;;;;;;;;;;;;;8869:244;;;;;;;;;;-1:-1:-1;8869:244:0;;;;;:::i;:::-;;:::i;11211:31::-;;;;;;;;;;;;;;;;11316:34;;;;;;;;;;;;;;;;25545:616;;;;;;;;;;-1:-1:-1;25545:616:0;;;;;:::i;:::-;;:::i;4076:100::-;4130:13;4163:5;4156:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4076:100;:::o;4990:169::-;5073:4;5090:39;305:10;5113:7;5122:6;5090:8;:39::i;:::-;-1:-1:-1;5147:4:0;4990:169;;;;:::o;15256:618::-;8624:6;;-1:-1:-1;;;;;8624:6:0;305:10;8624:22;8616:67;;;;-1:-1:-1;;;8616:67:0;;;;;;;:::i;:::-;;;;;;;;;15398:15:::1;:22;15380:7;:14;:40;15372:83;;;::::0;-1:-1:-1;;;15372:83:0;;7606:2:1;15372:83:0::1;::::0;::::1;7588:21:1::0;7645:2;7625:18;;;7618:30;7684:32;7664:18;;;7657:60;7734:18;;15372:83:0::1;7404:354:1::0;15372:83:0::1;15491:3;15474:7;:14;:20;15466:87;;;::::0;-1:-1:-1;;;15466:87:0;;7965:2:1;15466:87:0::1;::::0;::::1;7947:21:1::0;8004:2;7984:18;;;7977:30;8043:34;8023:18;;;8016:62;-1:-1:-1;;;8094:18:1;;;8087:52;8156:19;;15466:87:0::1;7763:418:1::0;15466:87:0::1;15666:9;15662:205;15685:7;:14;15681:1;:18;15662:205;;;15720:14;15737:7;15745:1;15737:10;;;;;;;;:::i;:::-;;;;;;;15720:27;;15762:14;15779:15;15795:1;15779:18;;;;;;;;:::i;:::-;;;;;;;15762:35;;15812:43;15828:10;15840:6;15848;15812:15;:43::i;:::-;15705:162;;15701:3;;;;;:::i;:::-;;;;15662:205;;;;15256:618:::0;;:::o;5167:492::-;5307:4;5324:36;5334:6;5342:9;5353:6;5324:9;:36::i;:::-;-1:-1:-1;;;;;5400:19:0;;5373:24;5400:19;;;:11;:19;;;;;;;;305:10;5400:33;;;;;;;;5452:26;;;;5444:79;;;;-1:-1:-1;;;5444:79:0;;8792:2:1;5444:79:0;;;8774:21:1;8831:2;8811:18;;;8804:30;8870:34;8850:18;;;8843:62;-1:-1:-1;;;8921:18:1;;;8914:38;8969:19;;5444:79:0;8590:404:1;5444:79:0;5559:57;5568:6;305:10;5609:6;5590:16;:25;5559:8;:57::i;:::-;-1:-1:-1;5647:4:0;;5167:492;-1:-1:-1;;;;5167:492:0:o;16701:436::-;8624:6;;-1:-1:-1;;;;;8624:6:0;305:10;8624:22;8616:67;;;;-1:-1:-1;;;8616:67:0;;;;;;;:::i;:::-;16836:16:::1;:33:::0;;;16880:15:::1;:31:::0;;;16922:9:::1;:19:::0;;;16952:10:::1;:21:::0;;;16965:8;16934:7;16999:34:::1;16898:13:::0;16855:14;16999:34:::1;:::i;:::-;:46;;;;:::i;:::-;:59;;;;:::i;:::-;16984:12;:74:::0;;;17093:2:::1;-1:-1:-1::0;17077:18:0::1;17069:60;;;::::0;-1:-1:-1;;;17069:60:0;;9334:2:1;17069:60:0::1;::::0;::::1;9316:21:1::0;9373:2;9353:18;;;9346:30;9412:31;9392:18;;;9385:59;9461:18;;17069:60:0::1;9132:353:1::0;17069:60:0::1;16701:436:::0;;;;:::o;5667:215::-;305:10;5755:4;5804:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5804:34:0;;;;;;;;;;5755:4;;5772:80;;5795:7;;5804:47;;5841:10;;5804:47;:::i;:::-;5772:8;:80::i;25130:312::-;8624:6;;-1:-1:-1;;;;;8624:6:0;305:10;8624:22;8616:67;;;;-1:-1:-1;;;8616:67:0;;;;;;;:::i;:::-;25221:18:::1;;25193:24;25211:4;25193:9;:24::i;:::-;:46;;25185:123;;;::::0;;-1:-1:-1;;;25185:123:0;;9692:2:1;25185:123:0::1;::::0;::::1;9674:21:1::0;9711:18;;;9704:30;;;;9770:34;9750:18;;;9743:62;9841:34;9821:18;;;9814:62;9893:19;;25185:123:0::1;9490:428:1::0;25185:123:0::1;25319:8;:15:::0;;-1:-1:-1;;;;25319:15:0::1;-1:-1:-1::0;;;25319:15:0::1;::::0;;25345:10:::1;:8;:10::i;:::-;25366:8;:16:::0;;-1:-1:-1;;;;25366:16:0::1;::::0;;25398:36:::1;::::0;25418:15:::1;1888:25:1::0;;25398:36:0::1;::::0;1876:2:1;1861:18;25398:36:0::1;;;;;;;25130:312::o:0;4513:127::-;-1:-1:-1;;;;;4614:18:0;4587:7;4614:18;;;;;;;;;;;;4513:127::o;8711:150::-;8624:6;;-1:-1:-1;;;;;8624:6:0;305:10;8624:22;8616:67;;;;-1:-1:-1;;;8616:67:0;;;;;;;:::i;:::-;8804:6:::1;::::0;8783:40:::1;::::0;8820:1:::1;::::0;-1:-1:-1;;;;;8804:6:0::1;::::0;8783:40:::1;::::0;8820:1;;8783:40:::1;8834:6;:19:::0;;-1:-1:-1;;;;;;8834:19:0::1;::::0;;8711:150::o;14879:154::-;8624:6;;-1:-1:-1;;;;;8624:6:0;305:10;8624:22;8616:67;;;;-1:-1:-1;;;8616:67:0;;;;;;;:::i;:::-;14933:14:::1;:22:::0;;-1:-1:-1;;14933:22:0;;::::1;::::0;;;14966:20:::1;:28:::0;;;;::::1;::::0;;15010:15:::1;::::0;::::1;::::0;14950:5:::1;::::0;15010:15:::1;14879:154::o:0;15882:260::-;8624:6;;-1:-1:-1;;;;;8624:6:0;305:10;8624:22;8616:67;;;;-1:-1:-1;;;8616:67:0;;;;;;;:::i;:::-;15978:4:::1;15974:104;;16016:6;::::0;-1:-1:-1;;;;;16016:6:0;;::::1;16006:16:::0;;::::1;::::0;15998:68:::1;;;::::0;-1:-1:-1;;;15998:68:0;;10125:2:1;15998:68:0::1;::::0;::::1;10107:21:1::0;10164:2;10144:18;;;10137:30;10203:34;10183:18;;;10176:62;-1:-1:-1;;;10254:18:1;;;10247:37;10301:19;;15998:68:0::1;9923:403:1::0;15998:68:0::1;-1:-1:-1::0;;;;;16088:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;16088:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15882:260::o;24519:559::-;24596:10;-1:-1:-1;;;;;24627:20:0;;24619:59;;;;-1:-1:-1;;;24619:59:0;;10533:2:1;24619:59:0;;;10515:21:1;10572:2;10552:18;;;10545:30;10611:28;10591:18;;;10584:56;10657:18;;24619:59:0;10331:350:1;24619:59:0;24711:10;;-1:-1:-1;;;;;24711:10:0;24697;:24;24689:58;;;;-1:-1:-1;;;24689:58:0;;10888:2:1;24689:58:0;;;10870:21:1;10927:2;10907:18;;;10900:30;-1:-1:-1;;;10946:18:1;;;10939:51;11007:18;;24689:58:0;10686:345:1;24689:58:0;24784:4;-1:-1:-1;;;;;24766:23:0;;;24758:64;;;;-1:-1:-1;;;24758:64:0;;11238:2:1;24758:64:0;;;11220:21:1;11277:2;11257:18;;;11250:30;11316;11296:18;;;11289:58;11364:18;;24758:64:0;11036:352:1;24758:64:0;24860:39;;-1:-1:-1;;;24860:39:0;;-1:-1:-1;;;;;798:32:1;;24860:39:0;;;780:51:1;24833:24:0;;24875:4;;24860:31;;753:18:1;;24860:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24833:66;;24910:61;24920:6;24928:3;24952:18;;24933:16;:37;;;;:::i;:::-;24910:9;:61::i;:::-;25001:46;;;-1:-1:-1;;;;;11904:32:1;;11886:51;;11968:2;11953:18;;11946:34;;;24981:4:0;;-1:-1:-1;25001:46:0;;11859:18:1;25001:46:0;;;;;;;25058:12;24519:559;;;;:::o;14578:249::-;8624:6;;-1:-1:-1;;;;;8624:6:0;305:10;8624:22;8616:67;;;;-1:-1:-1;;;8616:67:0;;;;;;;:::i;:::-;14642:13:::1;::::0;::::1;::::0;::::1;;;14641:14;14633:50;;;::::0;-1:-1:-1;;;14633:50:0;;12193:2:1;14633:50:0::1;::::0;::::1;12175:21:1::0;12232:2;12212:18;;;12205:30;12271:25;12251:18;;;12244:53;12314:18;;14633:50:0::1;11991:347:1::0;14633:50:0::1;14694:13;:20:::0;;-1:-1:-1;;14725:18:0;;;;;14775:12:::1;14754:18;:33:::0;14803:16:::1;::::0;::::1;::::0;-1:-1:-1;;14803:16:0::1;14578:249::o:0;4184:104::-;4240:13;4273:7;4266:14;;;;;:::i;16150:295::-;8624:6;;-1:-1:-1;;;;;8624:6:0;305:10;8624:22;8616:67;;;;-1:-1:-1;;;8616:67:0;;;;;;;:::i;:::-;16259:6:::1;::::0;-1:-1:-1;;;;;16259:6:0;;::::1;16251:14:::0;;::::1;::::0;16243:84:::1;;;::::0;-1:-1:-1;;;16243:84:0;;12545:2:1;16243:84:0::1;::::0;::::1;12527:21:1::0;12584:2;12564:18;;;12557:30;12623:34;12603:18;;;12596:62;12694:27;12674:18;;;12667:55;12739:19;;16243:84:0::1;12343:421:1::0;16243:84:0::1;16340:41;16369:4;16375:5;16340:28;:41::i;:::-;16397:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;16397:40:0;::::1;::::0;::::1;::::0;;;::::1;16150:295:::0;;:::o;5890:413::-;305:10;5983:4;6027:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6027:34:0;;;;;;;;;;6080:35;;;;6072:85;;;;-1:-1:-1;;;6072:85:0;;12971:2:1;6072:85:0;;;12953:21:1;13010:2;12990:18;;;12983:30;13049:34;13029:18;;;13022:62;-1:-1:-1;;;13100:18:1;;;13093:35;13145:19;;6072:85:0;12769:401:1;6072:85:0;6193:67;305:10;6216:7;6244:15;6225:16;:34;6193:8;:67::i;:::-;-1:-1:-1;6291:4:0;;5890:413;-1:-1:-1;;;5890:413:0:o;4648:175::-;4734:4;4751:42;305:10;4775:9;4786:6;4751:9;:42::i;17600:182::-;8624:6;;-1:-1:-1;;;;;8624:6:0;305:10;8624:22;8616:67;;;;-1:-1:-1;;;8616:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17685:28:0;::::1;;::::0;;;:19:::1;:28:::0;;;;;;;;:39;;-1:-1:-1;;17685:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17740:34;;1438:41:1;;;17740:34:0::1;::::0;1411:18:1;17740:34:0::1;;;;;;;17600:182:::0;;:::o;17145:447::-;8624:6;;-1:-1:-1;;;;;8624:6:0;305:10;8624:22;8616:67;;;;-1:-1:-1;;;8616:67:0;;;;;;;:::i;:::-;17281:17:::1;:34:::0;;;17326:16:::1;:32:::0;;;17369:10:::1;:20:::0;;;17400:11:::1;:22:::0;;;17414:8;17382:7;17449:36:::1;17345:13:::0;17301:14;17449:36:::1;:::i;:::-;:49;;;;:::i;:::-;:63;;;;:::i;:::-;17433:13;:79:::0;;;17548:2:::1;-1:-1:-1::0;17531:19:0::1;17523:61;;;::::0;-1:-1:-1;;;17523:61:0;;13377:2:1;17523:61:0::1;::::0;::::1;13359:21:1::0;13416:2;13396:18;;;13389:30;13455:31;13435:18;;;13428:59;13504:18;;17523:61:0::1;13175:353:1::0;8869:244:0;8624:6;;-1:-1:-1;;;;;8624:6:0;305:10;8624:22;8616:67;;;;-1:-1:-1;;;8616:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8958:22:0;::::1;8950:73;;;::::0;-1:-1:-1;;;8950:73:0;;13735:2:1;8950:73:0::1;::::0;::::1;13717:21:1::0;13774:2;13754:18;;;13747:30;13813:34;13793:18;;;13786:62;-1:-1:-1;;;13864:18:1;;;13857:36;13910:19;;8950:73:0::1;13533:402:1::0;8950:73:0::1;9060:6;::::0;9039:38:::1;::::0;-1:-1:-1;;;;;9039:38:0;;::::1;::::0;9060:6:::1;::::0;9039:38:::1;::::0;9060:6:::1;::::0;9039:38:::1;9088:6;:17:::0;;-1:-1:-1;;;;;;9088:17:0::1;-1:-1:-1::0;;;;;9088:17:0;;;::::1;::::0;;;::::1;::::0;;8869:244::o;25545:616::-;8624:6;;-1:-1:-1;;;;;8624:6:0;305:10;8624:22;8616:67;;;;-1:-1:-1;;;8616:67:0;;;;;;;:::i;:::-;25642:8:::1;25627:11;:23;;25619:107;;;::::0;-1:-1:-1;;;25619:107:0;;14142:2:1;25619:107:0::1;::::0;::::1;14124:21:1::0;14181:2;14161:18;;;14154:30;14220:34;14200:18;;;14193:62;14291:34;14271:18;;;14264:62;-1:-1:-1;;;14342:19:1;;;14335:38;14390:19;;25619:107:0::1;13940:475:1::0;25619:107:0::1;25763:16;::::0;;25777:1:::1;25763:16:::0;;;;;::::1;::::0;;25739:21:::1;::::0;25763:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;25800:9:0::1;::::0;:16:::1;::::0;;-1:-1:-1;;;25800:16:0;;;;25739:40;;-1:-1:-1;;;;;;25800:9:0;;::::1;::::0;:14:::1;::::0;-1:-1:-1;25800:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25790:4;25795:1;25790:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1::0;;;;;25790:26:0::1;;;-1:-1:-1::0;;;;;25790:26:0::1;;;::::0;::::1;25845:4;25827;25832:1;25827:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25827:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;25889:9:::1;::::0;:219:::1;::::0;-1:-1:-1;;;25889:219:0;;:9;::::1;::::0;:60:::1;::::0;25957:11;;25889:219:::1;::::0;:9:::1;::::0;26033:4;;26060:6:::1;::::0;26082:15:::1;::::0;25889:219:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;26124:29;26141:11;26124:29;;;;1888:25:1::0;;1876:2;1861:18;;1742:177;26124:29:0::1;;;;;;;;25608:553;25545:616:::0;:::o;7790:380::-;-1:-1:-1;;;;;7926:19:0;;7918:68;;;;-1:-1:-1;;;7918:68:0;;15859:2:1;7918:68:0;;;15841:21:1;15898:2;15878:18;;;15871:30;15937:34;15917:18;;;15910:62;-1:-1:-1;;;15988:18:1;;;15981:34;16032:19;;7918:68:0;15657:400:1;7918:68:0;-1:-1:-1;;;;;8005:21:0;;7997:68;;;;-1:-1:-1;;;7997:68:0;;16264:2:1;7997:68:0;;;16246:21:1;16303:2;16283:18;;;16276:30;16342:34;16322:18;;;16315:62;-1:-1:-1;;;16393:18:1;;;16386:32;16435:19;;7997:68:0;16062:398:1;7997:68:0;-1:-1:-1;;;;;8078:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8130:32;;1888:25:1;;;8130:32:0;;1861:18:1;8130:32:0;;;;;;;;7790:380;;;:::o;6311:614::-;-1:-1:-1;;;;;6451:20:0;;6443:70;;;;-1:-1:-1;;;6443:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6532:23:0;;6524:71;;;;-1:-1:-1;;;6524:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6632:17:0;;6608:21;6632:17;;;;;;;;;;;6668:23;;;;6660:74;;;;-1:-1:-1;;;6660:74:0;;17477:2:1;6660:74:0;;;17459:21:1;17516:2;17496:18;;;17489:30;17555:34;17535:18;;;17528:62;-1:-1:-1;;;17606:18:1;;;17599:36;17652:19;;6660:74:0;17275:402:1;6660:74:0;-1:-1:-1;;;;;6770:17:0;;;:9;:17;;;;;;;;;;;6790:22;;;6770:42;;6834:20;;;;;;;;:30;;6806:6;;6770:9;6834:30;;6806:6;;6834:30;:::i;:::-;;;;;;;;6899:9;-1:-1:-1;;;;;6882:35:0;6891:6;-1:-1:-1;;;;;6882:35:0;;6910:6;6882:35;;;;1888:25:1;;1876:2;1861:18;;1742:177;6882:35:0;;;;;;;;6432:493;6311:614;;;:::o;17790:3999::-;-1:-1:-1;;;;;17890:18:0;;17882:68;;;;-1:-1:-1;;;17882:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17969:16:0;;17961:64;;;;-1:-1:-1;;;17961:64:0;;;;;;;:::i;:::-;18053:1;18044:6;:10;18036:52;;;;-1:-1:-1;;;18036:52:0;;17884:2:1;18036:52:0;;;17866:21:1;17923:2;17903:18;;;17896:30;17962:31;17942:18;;;17935:59;18011:18;;18036:52:0;17682:353:1;18036:52:0;18105:13;;;;;;;18101:132;;-1:-1:-1;;;;;18142:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;18171:23:0;;;;;;:19;:23;;;;;;;;18142:52;18134:87;;;;-1:-1:-1;;;18134:87:0;;18242:2:1;18134:87:0;;;18224:21:1;18281:2;18261:18;;;18254:30;-1:-1:-1;;;18300:18:1;;;18293:52;18362:18;;18134:87:0;18040:346:1;18134:87:0;18248:14;;;;18245:1649;;;8562:6;;-1:-1:-1;;;;;18282:15:0;;;8562:6;;18282:15;;;;:32;;-1:-1:-1;8562:6:0;;-1:-1:-1;;;;;18301:13:0;;;8562:6;;18301:13;;18282:32;:52;;;;-1:-1:-1;;;;;;18318:16:0;;;;18282:52;:77;;;;-1:-1:-1;;;;;;18338:21:0;;18352:6;18338:21;;18282:77;:107;;;;-1:-1:-1;;;;;;18364:25:0;;;;;;:19;:25;;;;;;;;18363:26;18282:107;:135;;;;-1:-1:-1;;;;;;18394:23:0;;;;;;:19;:23;;;;;;;;18393:24;18282:135;18278:1605;;;18575:20;;;;18571:506;;;18637:9;;-1:-1:-1;;;;;18623:24:0;;;18637:9;;18623:24;;;;:49;;-1:-1:-1;18665:6:0;;-1:-1:-1;;;;;18651:21:0;;;18665:6;;18651:21;;18623:49;18619:439;;;18750:16;18765:1;18750:12;:16;:::i;:::-;18737:9;18708:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;18805:16:0;18820:1;18805:12;:16;:::i;:::-;-1:-1:-1;;;;;18770:32:0;;;;;;:28;:32;;;;;;:51;18708:113;18700:179;;;;-1:-1:-1;;;18700:179:0;;18593:2:1;18700:179:0;;;18575:21:1;18632:2;18612:18;;;18605:30;18671:34;18651:18;;;18644:62;-1:-1:-1;;;18722:18:1;;;18715:51;18783:19;;18700:179:0;18391:417:1;18700:179:0;18935:9;18906:39;;;;:28;:39;;;;;;18948:12;18906:54;;;;-1:-1:-1;;;;;18987:32:0;;;;;;:47;18619:439;-1:-1:-1;;;;;19129:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;19165:35:0;;;;;;:31;:35;;;;;;;;19164:36;19129:71;19125:743;;;19247:12;;19237:6;:22;;19229:75;;;;-1:-1:-1;;;19229:75:0;;19015:2:1;19229:75:0;;;18997:21:1;19054:2;19034:18;;;19027:30;19093:34;19073:18;;;19066:62;-1:-1:-1;;;19144:18:1;;;19137:38;19192:19;;19229:75:0;18813:404:1;19229:75:0;19365:15;;19348:13;19358:2;19348:9;:13::i;:::-;19339:22;;:6;:22;:::i;:::-;:41;;19331:78;;;;-1:-1:-1;;;19331:78:0;;19424:2:1;19331:78:0;;;19406:21:1;19463:2;19443:18;;;19436:30;-1:-1:-1;;;19482:18:1;;;19475:54;19546:18;;19331:78:0;19222:348:1;19331:78:0;19125:743;;;-1:-1:-1;;;;;19485:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;19519:37:0;;;;;;:31;:37;;;;;;;;19518:38;19485:71;19481:387;;;19603:13;;19593:6;:23;;19585:78;;;;-1:-1:-1;;;19585:78:0;;19777:2:1;19585:78:0;;;19759:21:1;19816:2;19796:18;;;19789:30;19855:34;19835:18;;;19828:62;-1:-1:-1;;;19906:18:1;;;19899:40;19956:19;;19585:78:0;19575:406:1;19481:387:0;-1:-1:-1;;;;;19711:35:0;;;;;;:31;:35;;;;;;;;19706:162;;19804:15;;19787:13;19797:2;19787:9;:13::i;:::-;19778:22;;:6;:22;:::i;:::-;:41;;19770:78;;;;-1:-1:-1;;;19770:78:0;;19424:2:1;19770:78:0;;;19406:21:1;19463:2;19443:18;;;19436:30;-1:-1:-1;;;19482:18:1;;;19475:54;19546:18;;19770:78:0;19222:348:1;19770:78:0;19906:28;19937:24;19955:4;19937:9;:24::i;:::-;19906:55;;19974:12;20013:18;;19989:20;:42;;:73;;;;;20044:18;;20035:6;:27;19989:73;19974:88;;20078:7;:22;;;;-1:-1:-1;20089:11:0;;;;;;;20078:22;:35;;;;-1:-1:-1;20105:8:0;;-1:-1:-1;;;20105:8:0;;;;20104:9;20078:35;:71;;;;-1:-1:-1;;;;;;20118:31:0;;;;;;:25;:31;;;;;;;;20117:32;20078:71;:101;;;;-1:-1:-1;;;;;;20154:25:0;;;;;;:19;:25;;;;;;;;20153:26;20078:101;:129;;;;-1:-1:-1;;;;;;20184:23:0;;;;;;:19;:23;;;;;;;;20183:24;20078:129;20075:236;;;20224:8;:15;;-1:-1:-1;;;;20224:15:0;-1:-1:-1;;;20224:15:0;;;20256:10;:8;:10::i;:::-;20283:8;:16;;-1:-1:-1;;;;20283:16:0;;;20075:236;-1:-1:-1;;;;;20441:25:0;;20323:12;20441:25;;;:19;:25;;;;;;20338:4;;20441:25;;;:52;;-1:-1:-1;;;;;;20470:23:0;;;;;;:19;:23;;;;;;;;20441:52;20438:99;;;-1:-1:-1;20520:5:0;20438:99;20549:12;20653:7;20650:1086;;;-1:-1:-1;;;;;20716:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;20765:1;20749:13;;:17;20716:50;20712:880;;;20818:3;20802:13;;20793:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;20786:35;;20888:13;;20869:16;;20862:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;20840:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;20970:13:0;;20950:17;;20943:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;20920:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;21038:13:0;;21025:10;;21018:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;21002:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21108:13:0;;21094:11;;21087:18;;:4;:18;:::i;:::-;:34;;;;:::i;:::-;21070:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;20712:880:0;;-1:-1:-1;20712:880:0;;-1:-1:-1;;;;;21184:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;21234:1;21219:12;;:16;21184:51;21181:411;;;21284:3;21269:12;;21260:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;21253:34;;21350:12;;21332:15;;21325:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21303:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;21430:12:0;;21411:16;;21404:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;21381:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;21496:12:0;;21484:9;;21477:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;21461:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;21564:12:0;;21551:10;;21544:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;21527:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21181:411:0;21611:8;;21608:89;;21639:42;21655:4;21669;21676;21639:15;:42::i;:::-;21710:14;21720:4;21710:14;;:::i;:::-;;;20650:1086;21748:33;21764:4;21770:2;21774:6;21748:15;:33::i;:::-;17869:3920;;;;17790:3999;;;:::o;22895:1616::-;22955:1;22939:13;;:17;:62;;;;;22988:13;;22960:24;22978:4;22960:9;:24::i;:::-;:41;;22939:62;22936:129;;;23018:35;23032:4;23039:13;;23018:5;:35::i;:::-;23091:1;23075:13;:17;;;23131:24;23149:4;23131:9;:24::i;:::-;23105:50;;23166:25;23237:12;;23215:19;;23194:18;;:40;;;;:::i;:::-;:55;;;;:::i;:::-;23166:83;-1:-1:-1;23265:20:0;;;:46;;-1:-1:-1;23289:22:0;;23265:46;23262:60;;;23314:7;;22895:1616::o;23262:60::-;23355:18;;:23;;23376:2;23355:23;:::i;:::-;23337:15;:41;23334:113;;;23412:18;;:23;;23433:2;23412:23;:::i;:::-;23394:41;;23334:113;23459:12;23533:23;23618:1;23598:17;23577:18;;23559:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;23533:86;-1:-1:-1;23632:51:0;23649:33;23533:86;23649:15;:33;:::i;:::-;23632:16;:51::i;:::-;23882:18;;23717:21;;;;23696:18;;23882:20;;23901:1;;23882:20;:::i;:::-;23861:42;;:17;:42;:::i;:::-;23838:19;;23825:32;;:10;:32;:::i;:::-;:79;;;;:::i;:::-;23798:106;;23915:17;24004:1;23985:18;;:20;;;;:::i;:::-;23964:42;;:17;:42;:::i;:::-;23948:12;;23935:25;;:10;:25;:::i;:::-;:72;;;;:::i;:::-;23915:92;-1:-1:-1;24039:28:0;23915:92;24039:16;:28;:::i;:::-;24020:47;;;;:::i;:::-;24101:1;24080:18;:22;;;24113:19;:23;;;24147:12;:16;;;24174:13;:17;24020:47;-1:-1:-1;24207:19:0;;;;;:42;;;24248:1;24230:15;:19;24207:42;24204:119;;;24265:46;24278:15;24295;24265:12;:46::i;:::-;24356:10;;24348:46;;-1:-1:-1;;;;;24356:10:0;;;;24380:9;;24348:46;;;;24380:9;24356:10;24348:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24335:59;;;;;24404:7;24396:16;;;;;;24446:17;;24438:65;;-1:-1:-1;;;;;24446:17:0;;;;24477:21;;24438:65;;;;24477:21;24446:17;24438:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22895:1616:0:o;16453:240::-;-1:-1:-1;;;;;16536:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;16536:39:0;;;;;;;16588;16536:31;:39;16588:26;:39::i;7232:550::-;-1:-1:-1;;;;;7316:21:0;;7308:67;;;;-1:-1:-1;;;7308:67:0;;20793:2:1;7308:67:0;;;20775:21:1;20832:2;20812:18;;;20805:30;20871:34;20851:18;;;20844:62;-1:-1:-1;;;20922:18:1;;;20915:31;20963:19;;7308:67:0;20591:397:1;7308:67:0;-1:-1:-1;;;;;7411:18:0;;7386:22;7411:18;;;;;;;;;;;7448:24;;;;7440:71;;;;-1:-1:-1;;;7440:71:0;;21195:2:1;7440:71:0;;;21177:21:1;21234:2;21214:18;;;21207:30;21273:34;21253:18;;;21246:62;-1:-1:-1;;;21324:18:1;;;21317:32;21366:19;;7440:71:0;20993:398:1;7440:71:0;-1:-1:-1;;;;;7547:18:0;;:9;:18;;;;;;;;;;;7568:23;;;7547:44;;7686:12;:22;;;;;;;7737:37;1888:25:1;;;7547:9:0;;:18;7737:37;;1861:18:1;7737:37:0;1742:177:1;21797:573:0;21949:16;;;21963:1;21949:16;;;;;;;;21925:21;;21949:16;;;;;;;;;;-1:-1:-1;21949:16:0;21925:40;;21994:4;21976;21981:1;21976:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21976:23:0;;;:7;;;;;;;;;;:23;;;;22020:9;;:16;;;-1:-1:-1;;;22020:16:0;;;;:9;;;;;:14;;:16;;;;;21976:7;;22020:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22010:4;22015:1;22010:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22010:26:0;;;:7;;;;;;;;;:26;22081:9;;22049:56;;22066:4;;22081:9;22093:11;22049:8;:56::i;:::-;22144:9;;:218;;-1:-1:-1;;;22144:218:0;;-1:-1:-1;;;;;22144:9:0;;;;:60;;:218;;22219:11;;22144:9;;22289:4;;22316;;22336:15;;22144:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21852:518;21797:573;:::o;22378:509::-;22558:9;;22526:56;;22543:4;;-1:-1:-1;;;;;22558:9:0;22570:11;22526:8;:56::i;:::-;22625:9;;:254;;-1:-1:-1;;;22625:254:0;;22691:4;22625:254;;;22324:34:1;22374:18;;;22367:34;;;22625:9:0;22417:18:1;;;22410:34;;;22460:18;;;22453:34;22831:6:0;22503:19:1;;;22496:44;22853:15:0;22556:19:1;;;22549:35;-1:-1:-1;;;;;22625:9:0;;;;:25;;22658:9;;22258:19:1;;22625:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22378:509;;:::o;15041:207::-;-1:-1:-1;;;;;15129:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;15129:52:0;;;;;;;;;;15197:43;;23074:51:1;;;23141:18;;;23134:50;15197:43:0;;23047:18:1;15197:43:0;22906:284:1;14:597;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;842:131::-;-1:-1:-1;;;;;917:31:1;;907:42;;897:70;;963:1;960;953:12;897:70;842:131;:::o;978:315::-;1046:6;1054;1107:2;1095:9;1086:7;1082:23;1078:32;1075:52;;;1123:1;1120;1113:12;1075:52;1162:9;1149:23;1181:31;1206:5;1181:31;:::i;:::-;1231:5;1283:2;1268:18;;;;1255:32;;-1:-1:-1;;;978:315:1:o;1490:247::-;1549:6;1602:2;1590:9;1581:7;1577:23;1573:32;1570:52;;;1618:1;1615;1608:12;1570:52;1657:9;1644:23;1676:31;1701:5;1676:31;:::i;:::-;1726:5;1490:247;-1:-1:-1;;;1490:247:1:o;1924:127::-;1985:10;1980:3;1976:20;1973:1;1966:31;2016:4;2013:1;2006:15;2040:4;2037:1;2030:15;2056:275;2127:2;2121:9;2192:2;2173:13;;-1:-1:-1;;2169:27:1;2157:40;;2227:18;2212:34;;2248:22;;;2209:62;2206:88;;;2274:18;;:::i;:::-;2310:2;2303:22;2056:275;;-1:-1:-1;2056:275:1:o;2336:183::-;2396:4;2429:18;2421:6;2418:30;2415:56;;;2451:18;;:::i;:::-;-1:-1:-1;2496:1:1;2492:14;2508:4;2488:25;;2336:183::o;2524:662::-;2578:5;2631:3;2624:4;2616:6;2612:17;2608:27;2598:55;;2649:1;2646;2639:12;2598:55;2685:6;2672:20;2711:4;2735:60;2751:43;2791:2;2751:43;:::i;:::-;2735:60;:::i;:::-;2829:15;;;2915:1;2911:10;;;;2899:23;;2895:32;;;2860:12;;;;2939:15;;;2936:35;;;2967:1;2964;2957:12;2936:35;3003:2;2995:6;2991:15;3015:142;3031:6;3026:3;3023:15;3015:142;;;3097:17;;3085:30;;3135:12;;;;3048;;3015:142;;;-1:-1:-1;3175:5:1;2524:662;-1:-1:-1;;;;;;2524:662:1:o;3191:1215::-;3309:6;3317;3370:2;3358:9;3349:7;3345:23;3341:32;3338:52;;;3386:1;3383;3376:12;3338:52;3426:9;3413:23;3455:18;3496:2;3488:6;3485:14;3482:34;;;3512:1;3509;3502:12;3482:34;3550:6;3539:9;3535:22;3525:32;;3595:7;3588:4;3584:2;3580:13;3576:27;3566:55;;3617:1;3614;3607:12;3566:55;3653:2;3640:16;3675:4;3699:60;3715:43;3755:2;3715:43;:::i;3699:60::-;3793:15;;;3875:1;3871:10;;;;3863:19;;3859:28;;;3824:12;;;;3899:19;;;3896:39;;;3931:1;3928;3921:12;3896:39;3955:11;;;;3975:217;3991:6;3986:3;3983:15;3975:217;;;4071:3;4058:17;4088:31;4113:5;4088:31;:::i;:::-;4132:18;;4008:12;;;;4170;;;;3975:217;;;4211:5;-1:-1:-1;;4254:18:1;;4241:32;;-1:-1:-1;;4285:16:1;;;4282:36;;;4314:1;4311;4304:12;4282:36;;4337:63;4392:7;4381:8;4370:9;4366:24;4337:63;:::i;:::-;4327:73;;;3191:1215;;;;;:::o;4411:456::-;4488:6;4496;4504;4557:2;4545:9;4536:7;4532:23;4528:32;4525:52;;;4573:1;4570;4563:12;4525:52;4612:9;4599:23;4631:31;4656:5;4631:31;:::i;:::-;4681:5;-1:-1:-1;4738:2:1;4723:18;;4710:32;4751:33;4710:32;4751:33;:::i;:::-;4411:456;;4803:7;;-1:-1:-1;;;4857:2:1;4842:18;;;;4829:32;;4411:456::o;4872:385::-;4958:6;4966;4974;4982;5035:3;5023:9;5014:7;5010:23;5006:33;5003:53;;;5052:1;5049;5042:12;5003:53;-1:-1:-1;;5075:23:1;;;5145:2;5130:18;;5117:32;;-1:-1:-1;5196:2:1;5181:18;;5168:32;;5247:2;5232:18;5219:32;;-1:-1:-1;4872:385:1;-1:-1:-1;4872:385:1:o;5659:416::-;5724:6;5732;5785:2;5773:9;5764:7;5760:23;5756:32;5753:52;;;5801:1;5798;5791:12;5753:52;5840:9;5827:23;5859:31;5884:5;5859:31;:::i;:::-;5909:5;-1:-1:-1;5966:2:1;5951:18;;5938:32;6008:15;;6001:23;5989:36;;5979:64;;6039:1;6036;6029:12;5979:64;6062:7;6052:17;;;5659:416;;;;;:::o;6080:388::-;6148:6;6156;6209:2;6197:9;6188:7;6184:23;6180:32;6177:52;;;6225:1;6222;6215:12;6177:52;6264:9;6251:23;6283:31;6308:5;6283:31;:::i;:::-;6333:5;-1:-1:-1;6390:2:1;6375:18;;6362:32;6403:33;6362:32;6403:33;:::i;6473:180::-;6532:6;6585:2;6573:9;6564:7;6560:23;6556:32;6553:52;;;6601:1;6598;6591:12;6553:52;-1:-1:-1;6624:23:1;;6473:180;-1:-1:-1;6473:180:1:o;6658:380::-;6737:1;6733:12;;;;6780;;;6801:61;;6855:4;6847:6;6843:17;6833:27;;6801:61;6908:2;6900:6;6897:14;6877:18;6874:38;6871:161;;6954:10;6949:3;6945:20;6942:1;6935:31;6989:4;6986:1;6979:15;7017:4;7014:1;7007:15;6871:161;;6658:380;;;:::o;7043:356::-;7245:2;7227:21;;;7264:18;;;7257:30;7323:34;7318:2;7303:18;;7296:62;7390:2;7375:18;;7043:356::o;8186:127::-;8247:10;8242:3;8238:20;8235:1;8228:31;8278:4;8275:1;8268:15;8302:4;8299:1;8292:15;8318:127;8379:10;8374:3;8370:20;8367:1;8360:31;8410:4;8407:1;8400:15;8434:4;8431:1;8424:15;8450:135;8489:3;8510:17;;;8507:43;;8530:18;;:::i;:::-;-1:-1:-1;8577:1:1;8566:13;;8450:135::o;8999:128::-;9039:3;9070:1;9066:6;9063:1;9060:13;9057:39;;;9076:18;;:::i;:::-;-1:-1:-1;9112:9:1;;8999:128::o;11393:184::-;11463:6;11516:2;11504:9;11495:7;11491:23;11487:32;11484:52;;;11532:1;11529;11522:12;11484:52;-1:-1:-1;11555:16:1;;11393:184;-1:-1:-1;11393:184:1:o;11582:125::-;11622:4;11650:1;11647;11644:8;11641:34;;;11655:18;;:::i;:::-;-1:-1:-1;11692:9:1;;11582:125::o;14420:251::-;14490:6;14543:2;14531:9;14522:7;14518:23;14514:32;14511:52;;;14559:1;14556;14549:12;14511:52;14591:9;14585:16;14610:31;14635:5;14610:31;:::i;14676:461::-;14729:3;14767:5;14761:12;14794:6;14789:3;14782:19;14820:4;14849:2;14844:3;14840:12;14833:19;;14886:2;14879:5;14875:14;14907:1;14917:195;14931:6;14928:1;14925:13;14917:195;;;14996:13;;-1:-1:-1;;;;;14992:39:1;14980:52;;15052:12;;;;15087:15;;;;15028:1;14946:9;14917:195;;;-1:-1:-1;15128:3:1;;14676:461;-1:-1:-1;;;;;14676:461:1:o;15142:510::-;15413:6;15402:9;15395:25;15456:3;15451:2;15440:9;15436:18;15429:31;15376:4;15477:57;15529:3;15518:9;15514:19;15506:6;15477:57;:::i;:::-;-1:-1:-1;;;;;15570:32:1;;;;15565:2;15550:18;;15543:60;-1:-1:-1;15634:2:1;15619:18;15612:34;15469:65;15142:510;-1:-1:-1;;15142:510:1:o;16465:401::-;16667:2;16649:21;;;16706:2;16686:18;;;16679:30;16745:34;16740:2;16725:18;;16718:62;-1:-1:-1;;;16811:2:1;16796:18;;16789:35;16856:3;16841:19;;16465:401::o;16871:399::-;17073:2;17055:21;;;17112:2;17092:18;;;17085:30;17151:34;17146:2;17131:18;;17124:62;-1:-1:-1;;;17217:2:1;17202:18;;17195:33;17260:3;17245:19;;16871:399::o;19986:168::-;20026:7;20092:1;20088;20084:6;20080:14;20077:1;20074:21;20069:1;20062:9;20055:17;20051:45;20048:71;;;20099:18;;:::i;:::-;-1:-1:-1;20139:9:1;;19986:168::o;20159:217::-;20199:1;20225;20215:132;;20269:10;20264:3;20260:20;20257:1;20250:31;20304:4;20301:1;20294:15;20332:4;20329:1;20322:15;20215:132;-1:-1:-1;20361:9:1;;20159:217::o;21396:582::-;21695:6;21684:9;21677:25;21738:6;21733:2;21722:9;21718:18;21711:34;21781:3;21776:2;21765:9;21761:18;21754:31;21658:4;21802:57;21854:3;21843:9;21839:19;21831:6;21802:57;:::i;:::-;-1:-1:-1;;;;;21895:32:1;;;;21890:2;21875:18;;21868:60;-1:-1:-1;21959:3:1;21944:19;21937:35;21794:65;21396:582;-1:-1:-1;;;21396:582:1:o;22595:306::-;22683:6;22691;22699;22752:2;22740:9;22731:7;22727:23;22723:32;22720:52;;;22768:1;22765;22758:12;22720:52;22797:9;22791:16;22781:26;;22847:2;22836:9;22832:18;22826:25;22816:35;;22891:2;22880:9;22876:18;22870:25;22860:35;;22595:306;;;;;:::o

Swarm Source

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