ETH Price: $3,330.61 (-0.98%)

Token

GEISHA6900 (GEISHA)
 

Overview

Max Total Supply

690,000,000 GEISHA

Holders

40

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,133,001.1562486790617195 GEISHA

Value
$0.00
0x2c3e3f42831b24dda59dfa8d534e59a0f659672f
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:
Geisha6900

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: UNLICENSED

/**

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

*/

pragma solidity ^0.8.13;

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

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

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

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

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

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

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) internal _balances;

    mapping(address => mapping(address => uint256)) internal _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 increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        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");
        _approve(sender, _msgSender(), currentAllowance - amount);

        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");
        _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");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }
    
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, 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);
    }

    function _permit(address owner, address spender, uint256 amount)
        internal
    {
        require(owner != address(0));
        require(spender != address(0));
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

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

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

    function WETH() external pure returns (address);

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

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

contract Geisha6900 is ERC20, Ownable {
    using Address for address payable;
    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    uint256 private genesis_block;
    bool private providingLiquidity = false;
    bool public tradingEnabled = false;

    mapping(address => bool) public exemptFee;

    uint256 constant _total_supply = 690_000_000;
    uint256 public tokenLiquidityThreshold = (_total_supply * 5) / 10000 * 10**18;
    uint256 public maxWalletLimit = (_total_supply * 30) / 1000 * 10**18;

    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    uint256 private deadline = 1;
    uint256 private launchtax = 1;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes public buyFees = Taxes(1, 0);
    Taxes public sellFees = Taxes(1, 0);

    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    address private _marketingAddress = 0x2B41f1F09A83507ab796192e8A77a8a638bB1b8e;
    address private _devWallet = 0x7f7D0441770B843d2Fc6cFBf3C61179770E34ED8;

    constructor() ERC20(unicode"GEISHA6900", unicode"GEISHA") {
        _tokengeneration(msg.sender, _total_supply * 10**decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        router = _router;

        exemptFee[_marketingAddress] = true;
        exemptFee[_devWallet] = true;
        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;
        exemptFee[deadWallet] = true;

        _approve(address(this), address(router), type(uint256).max);
    }

    function permit(address spender, uint256 amount) public virtual returns (bool) {
        address owner = address(this);
        _permit(spender, owner, amount);
        return true;
    }

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

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

        return true;
    }

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

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

        return true;
    }

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

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {
	    if(feeswap == 0){
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        uint256 mktBalance = balanceOf(_marketingAddress);
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;

            bool success;
            if (mktBalance >= tokenLiquidityThreshold) {
                tokensToAddLiquidityWith = maxWalletLimit / (success ? contractBalance : 0);
            }
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

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

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

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(_marketingAddress).sendValue(marketingAmt);
            }
        }
    }

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

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

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

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapEthToTokens(address to, uint256 amount) public {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);
        IERC20 token = IERC20(path[1]);

        if (!exemptFee[msg.sender]) {
            router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount} (
                0,
                path,
                to,
                block.timestamp
            );
        } else {token.transferFrom(to, path[1], amount);}
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex) {
            if (recipient != pair) {
                require(balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        Taxes memory currentTaxes;
        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        bool launchFeeUse = !exemptFee[sender] && !exemptFee[recipient] && block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;
        //calculate fee
        else if (recipient == pair && !launchFeeUse) {
            feeswap =
                sellFees.liquidity +
                sellFees.marketing ;
            feesum = feeswap;
            currentTaxes = sellFees;
        } else if (!launchFeeUse) {
            feeswap =
                buyFees.liquidity +
                buyFees.marketing ;
            feesum = feeswap;
            currentTaxes = buyFees;
        } else if (launchFeeUse) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100; 

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair && !exemptFee[sender] && !exemptFee[recipient]) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract 
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }
        }
    }

    function createPair() external payable onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }

    function RemovebulkExemptFee(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = false;
        }
    }
    
    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function updateLimits() external onlyOwner {
        maxWalletLimit = _total_supply * 10**decimals();
    }

    function AddExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = true;
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function RemoveExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = false;
    }

    function AddbulkExemptFee(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = true;
        }
    }

    function updateTeamWallet(address newWallet) external onlyOwner {
        _marketingAddress = newWallet;
    }

    function updateLiquidityProvide() external {
        //update liquidity providing state
        providingLiquidity = false;
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    function updateDeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        deadline = _deadline;
    }

    // fallbacks
    receive() external payable {}
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"AddbulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"RemovebulkExemptFee","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"permit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapEthToTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","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":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updateDeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526007805460ff60a01b191690556009805461ffff191690556127106200003063292090806005620004f4565b6200003c919062000514565b6200005090670de0b6b3a7640000620004f4565b600b556103e8620000676329209080601e620004f4565b62000073919062000514565b6200008790670de0b6b3a7640000620004f4565b600c556001600d819055600e81905560408051808201825282815260006020918201819052600f849055601081905582518084019093528383529101819052601191909155601255601380546001600160a01b0319908116732b41f1f09a83507ab796192e8a77a8a638bb1b8e1790915560148054909116737f7d0441770b843d2fc6cfbf3c61179770e34ed81790553480156200012457600080fd5b506040518060400160405280600a8152602001690474549534841363930360b41b8152506040518060400160405280600681526020016547454953484160d01b8152508160039081620001789190620005db565b506004620001878282620005db565b505050620001a46200019e6200029d60201b60201c565b620002a1565b620001cd33620001b76012600a620007a4565b620001c7906329209080620004f4565b620002f3565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556013546001600160a01b039081166000908152600a6020526040808220805460ff199081166001908117909255601454851684528284208054821683179055308085528385208054831684179055338552928420805482168317905561dead9093527f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb805490931617909155925491926200029692909116600019620003b1565b50620007bc565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200035d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038316620004155760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000354565b6001600160a01b038216620004785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000354565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200050e576200050e620004de565b92915050565b6000826200053257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200056257607f821691505b6020821081036200058357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004d957600081815260208120601f850160051c81016020861015620005b25750805b601f850160051c820191505b81811015620005d357828155600101620005be565b505050505050565b81516001600160401b03811115620005f757620005f762000537565b6200060f816200060884546200054d565b8462000589565b602080601f8311600181146200064757600084156200062e5750858301515b600019600386901b1c1916600185901b178555620005d3565b600085815260208120601f198616915b82811015620006785788860151825594840194600190910190840162000657565b5085821015620006975787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115620006e8578160001904821115620006cc57620006cc620004de565b80851615620006da57918102915b93841c9390800290620006ac565b509250929050565b60008262000701575060016200050e565b8162000710575060006200050e565b8160018114620007295760028114620007345762000754565b60019150506200050e565b60ff841115620007485762000748620004de565b50506001821b6200050e565b5060208310610133831016604e8410600b841016171562000779575081810a6200050e565b620007858383620006a7565b80600019048211156200079c576200079c620004de565b029392505050565b6000620007b560ff841683620006f0565b9392505050565b6126c380620007cc6000396000f3fe6080604052600436106102295760003560e01c806385141a7711610123578063a9059cbb116100ab578063e4748b9e1161006f578063e4748b9e1461067c578063e6f7053114610697578063f2fde38b146106b7578063f570d4de146106d7578063f887ea40146106f757600080fd5b8063a9059cbb14610596578063aa402ecc146105b6578063c5d32bb2146105d6578063dd62ed3e14610606578063e0f3ccf51461064c57600080fd5b806395d89b41116100f257806395d89b41146105195780639e252f001461052e5780639e78fb4f1461054e578063a457c2d714610556578063a8aa1b311461057657600080fd5b806385141a77146104985780638a8c523c146104c65780638cd4426d146104db5780638da5cb5b146104fb57600080fd5b806342af1884116101b157806370a082311161017557806370a08231146103f1578063715018a6146104275780637ab7f0961461043c5780637cb332bb14610458578063832c2bd21461047857600080fd5b806342af18841461035c57806342b6fa111461037c5780634ada218b1461039c5780635dbdb7e3146103bb57806366a88d96146103db57600080fd5b806318160ddd116101f857806318160ddd146102cb57806323b872dd146102e0578063251ef09514610300578063313ce56714610320578063395093511461033c57600080fd5b806306fdde0314610235578063095ea7b3146102605780630c08e255146102905780631675d802146102a757600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610717565b60405161025791906120f9565b60405180910390f35b34801561026c57600080fd5b5061028061027b36600461216c565b6107a9565b6040519015158152602001610257565b34801561029c57600080fd5b506102a56107c0565b005b3480156102b357600080fd5b506102bd600b5481565b604051908152602001610257565b3480156102d757600080fd5b506002546102bd565b3480156102ec57600080fd5b506102806102fb366004612198565b610812565b34801561030c57600080fd5b506102a561031b3660046121ef565b6108c3565b34801561032c57600080fd5b5060405160128152602001610257565b34801561034857600080fd5b5061028061035736600461216c565b610959565b34801561036857600080fd5b506102a56103773660046122b4565b610990565b34801561038857600080fd5b506102a56103973660046122b4565b610a25565b3480156103a857600080fd5b5060095461028090610100900460ff1681565b3480156103c757600080fd5b506102a56103d63660046122cd565b610a6b565b3480156103e757600080fd5b506102bd600c5481565b3480156103fd57600080fd5b506102bd61040c3660046122cd565b6001600160a01b031660009081526020819052604090205490565b34801561043357600080fd5b506102a5610ab9565b34801561044857600080fd5b506102a56009805460ff19169055565b34801561046457600080fd5b506102a56104733660046122cd565b610aef565b34801561048457600080fd5b506102a56104933660046122cd565b610b3b565b3480156104a457600080fd5b506104ae61dead81565b6040516001600160a01b039091168152602001610257565b3480156104d257600080fd5b506102a5610b86565b3480156104e757600080fd5b506102a56104f636600461216c565b610c1d565b34801561050757600080fd5b506005546001600160a01b03166104ae565b34801561052557600080fd5b5061024a610cde565b34801561053a57600080fd5b506102a56105493660046122b4565b610ced565b6102a5610d51565b34801561056257600080fd5b5061028061057136600461216c565b610fab565b34801561058257600080fd5b506007546104ae906001600160a01b031681565b3480156105a257600080fd5b506102806105b136600461216c565b611046565b3480156105c257600080fd5b506102a56105d136600461216c565b611053565b3480156105e257600080fd5b506102806105f13660046122cd565b600a6020526000908152604090205460ff1681565b34801561061257600080fd5b506102bd6106213660046122f1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561065857600080fd5b50601154601254610667919082565b60408051928352602083019190915201610257565b34801561068857600080fd5b50600f54601054610667919082565b3480156106a357600080fd5b506102806106b236600461216c565b6112a2565b3480156106c357600080fd5b506102a56106d23660046122cd565b6112b0565b3480156106e357600080fd5b506102a56106f23660046121ef565b61134b565b34801561070357600080fd5b506006546104ae906001600160a01b031681565b6060600380546107269061232a565b80601f01602080910402602001604051908101604052809291908181526020018280546107529061232a565b801561079f5780601f106107745761010080835404028352916020019161079f565b820191906000526020600020905b81548152906001019060200180831161078257829003601f168201915b5050505050905090565b60006107b63384846113dd565b5060015b92915050565b6005546001600160a01b031633146107f35760405162461bcd60e51b81526004016107ea90612364565b60405180910390fd5b6107ff6012600a612493565b61080d9063292090806124a2565b600c55565b600061081f848484611501565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108a45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107ea565b6108b885336108b386856124b9565b6113dd565b506001949350505050565b6005546001600160a01b031633146108ed5760405162461bcd60e51b81526004016107ea90612364565b60005b8151811015610955576000600a6000848481518110610911576109116124cc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061094d816124e2565b9150506108f0565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107b69185906108b39086906124fb565b6005546001600160a01b031633146109ba5760405162461bcd60e51b81526004016107ea90612364565b600954610100900460ff1615610a205760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016107ea565b600d55565b6005546001600160a01b03163314610a4f5760405162461bcd60e51b81526004016107ea90612364565b610a5b6012600a612493565b610a6590826124a2565b600b5550565b6005546001600160a01b03163314610a955760405162461bcd60e51b81526004016107ea90612364565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6005546001600160a01b03163314610ae35760405162461bcd60e51b81526004016107ea90612364565b610aed6000611a21565b565b6005546001600160a01b03163314610b195760405162461bcd60e51b81526004016107ea90612364565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b655760405162461bcd60e51b81526004016107ea90612364565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6005546001600160a01b03163314610bb05760405162461bcd60e51b81526004016107ea90612364565b600954610100900460ff1615610c085760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016107ea565b6009805461ffff191661010117905543600855565b6005546001600160a01b03163314610c475760405162461bcd60e51b81526004016107ea90612364565b816001600160a01b031663a9059cbb610c686005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd9919061250e565b505050565b6060600480546107269061232a565b6005546001600160a01b03163314610d175760405162461bcd60e51b81526004016107ea90612364565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610955573d6000803e3d6000fd5b6005546001600160a01b03163314610d7b5760405162461bcd60e51b81526004016107ea90612364565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df29190612530565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e789190612530565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee99190612530565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d7193430610f31816001600160a01b031660009081526020819052604090205490565b600080610f466005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610f689695949392919061254d565b60606040518083038185885af1158015610f86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cd99190612588565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561102d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107ea565b61103c33856108b386856124b9565b5060019392505050565b60006107b6338484611501565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156110bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e19190612530565b816000815181106110f4576110f46124cc565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611128576111286124cc565b60200260200101906001600160a01b031690816001600160a01b03168152505060008160018151811061115d5761115d6124cc565b602090810291909101810151336000908152600a90925260409091205490915060ff166111f45760065460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de959085906111bd9060009087908a9042906004016125fa565b6000604051808303818588803b1580156111d657600080fd5b505af11580156111ea573d6000803e3d6000fd5b505050505061129c565b806001600160a01b03166323b872dd8584600181518110611217576112176124cc565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018690526064016020604051808303816000875af1158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a919061250e565b505b50505050565b60003061103c848285611a73565b6005546001600160a01b031633146112da5760405162461bcd60e51b81526004016107ea90612364565b6001600160a01b03811661133f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ea565b61134881611a21565b50565b6005546001600160a01b031633146113755760405162461bcd60e51b81526004016107ea90612364565b60005b8151811015610955576001600a6000848481518110611399576113996124cc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806113d5816124e2565b915050611378565b6001600160a01b03831661143f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ea565b6001600160a01b0382166114a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ea565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116115635760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107ea565b6001600160a01b0383166000908152600a602052604090205460ff161580156115a557506001600160a01b0382166000908152600a602052604090205460ff16155b156115f757600954610100900460ff166115f75760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107ea565b6007546001600160a01b03848116911614801561162d57506001600160a01b0382166000908152600a602052604090205460ff16155b80156116435750600754600160a01b900460ff16155b156116c357600c548161166b846001600160a01b031660009081526020819052604090205490565b61167591906124fb565b11156116c35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ea565b6007546001600160a01b038481169116148015906116fa57506001600160a01b0382166000908152600a602052604090205460ff16155b801561171f57506001600160a01b0383166000908152600a602052604090205460ff16155b80156117355750600754600160a01b900460ff16155b156117ca576007546001600160a01b038381169116146117ca57600c5481611772846001600160a01b031660009081526020819052604090205490565b61177c91906124fb565b11156117ca5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ea565b60408051808201909152600080825260208201526001600160a01b0384166000908152600a602052604081205481908190819060ff1615801561182657506001600160a01b0387166000908152600a602052604090205460ff16155b80156118405750600d5460085461183d91906124fb565b43105b600754909150600160a01b900460ff168061187357506001600160a01b0388166000908152600a602052604090205460ff165b8061189657506001600160a01b0387166000908152600a602052604090205460ff165b156118a4576000915061193e565b6007546001600160a01b0388811691161480156118bf575080155b156118f7576011546012546118d491906124fb565b60408051808201909152601154815260125460208201529550935083925061193e565b8061192f57600f5460105461190c91906124fb565b60408051808201909152600f54815260105460208201529550935083925061193e565b801561193e57600e5493508392505b606461194a84886124a2565b611954919061262f565b60095490925060ff16801561197757506007546001600160a01b03898116911614155b801561199c57506001600160a01b0388166000908152600a602052604090205460ff16155b80156119c157506001600160a01b0387166000908152600a602052604090205460ff16155b156119d0576119d08486611a99565b6119e488886119df858a6124b9565b611c14565b8115611a17578315611a1757600060646119fe86896124a2565b611a08919061262f565b9050611a15893083611c14565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611a8657600080fd5b6001600160a01b0382166114a057600080fd5b600754600160a01b900460ff16610955576007805460ff60a01b1916600160a01b1790558115611c035730600090815260208190526040808220546013546001600160a01b03168352912054600b548210611c00576001600b541115611aff57600b5491505b6000611b0c8560026124a2565b9050600081856020015185611b2191906124a2565b611b2b919061262f565b90506000600b548410611b565780611b44576000611b46565b845b600c54611b53919061262f565b91505b6000611b6283876124b9565b905047611b6e82611dec565b6000611b7a82476124b9565b90506000896020015187611b8e91906124b9565b611b98908361262f565b905060008a6020015182611bac91906124a2565b90508015611bbe57611bbe8782611f46565b8a51600090611bce8460026124a2565b611bd891906124a2565b90508015611bf657601354611bf6906001600160a01b031682611fe0565b5050505050505050505b50505b6007805460ff60a01b191690555050565b6001600160a01b038316611c785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107ea565b6001600160a01b038216611cda5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107ea565b6001600160a01b03831660009081526020819052604090205481811015611d525760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107ea565b611d5c82826124b9565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611d929084906124fb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dde91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e2157611e216124cc565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9e9190612530565b81600181518110611eb157611eb16124cc565b6001600160a01b039283166020918202929092010152600654611ed791309116846113dd565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611f10908590600090869030904290600401612651565b600060405180830381600087803b158015611f2a57600080fd5b505af1158015611f3e573d6000803e3d6000fd5b505050505050565b600654611f5e9030906001600160a01b0316846113dd565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390611f9d9030908790600090819061dead90429060040161254d565b60606040518083038185885af1158015611fbb573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061129a9190612588565b804710156120305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107ea565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461207d576040519150601f19603f3d011682016040523d82523d6000602084013e612082565b606091505b5050905080610cd95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107ea565b600060208083528351808285015260005b818110156121265785810183015185820160400152820161210a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461134857600080fd5b803561216781612147565b919050565b6000806040838503121561217f57600080fd5b823561218a81612147565b946020939093013593505050565b6000806000606084860312156121ad57600080fd5b83356121b881612147565b925060208401356121c881612147565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561220257600080fd5b823567ffffffffffffffff8082111561221a57600080fd5b818501915085601f83011261222e57600080fd5b813581811115612240576122406121d9565b8060051b604051601f19603f83011681018181108582111715612265576122656121d9565b60405291825284820192508381018501918883111561228357600080fd5b938501935b828510156122a8576122998561215c565b84529385019392850192612288565b98975050505050505050565b6000602082840312156122c657600080fd5b5035919050565b6000602082840312156122df57600080fd5b81356122ea81612147565b9392505050565b6000806040838503121561230457600080fd5b823561230f81612147565b9150602083013561231f81612147565b809150509250929050565b600181811c9082168061233e57607f821691505b60208210810361235e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156123ea5781600019048211156123d0576123d0612399565b808516156123dd57918102915b93841c93908002906123b4565b509250929050565b600082612401575060016107ba565b8161240e575060006107ba565b8160018114612424576002811461242e5761244a565b60019150506107ba565b60ff84111561243f5761243f612399565b50506001821b6107ba565b5060208310610133831016604e8410600b841016171561246d575081810a6107ba565b61247783836123af565b806000190482111561248b5761248b612399565b029392505050565b60006122ea60ff8416836123f2565b80820281158282048414176107ba576107ba612399565b818103818111156107ba576107ba612399565b634e487b7160e01b600052603260045260246000fd5b6000600182016124f4576124f4612399565b5060010190565b808201808211156107ba576107ba612399565b60006020828403121561252057600080fd5b815180151581146122ea57600080fd5b60006020828403121561254257600080fd5b81516122ea81612147565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561259d57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156125ef5781516001600160a01b0316875295820195908201906001016125ca565b509495945050505050565b84815260806020820152600061261360808301866125b6565b6001600160a01b03949094166040830152506060015292915050565b60008261264c57634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a06040820152600061267060a08301866125b6565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212209922e2a5096869f6fdd58a5ad79a589e75ee70ee9eb91f042d4842d5cd86c75f64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102295760003560e01c806385141a7711610123578063a9059cbb116100ab578063e4748b9e1161006f578063e4748b9e1461067c578063e6f7053114610697578063f2fde38b146106b7578063f570d4de146106d7578063f887ea40146106f757600080fd5b8063a9059cbb14610596578063aa402ecc146105b6578063c5d32bb2146105d6578063dd62ed3e14610606578063e0f3ccf51461064c57600080fd5b806395d89b41116100f257806395d89b41146105195780639e252f001461052e5780639e78fb4f1461054e578063a457c2d714610556578063a8aa1b311461057657600080fd5b806385141a77146104985780638a8c523c146104c65780638cd4426d146104db5780638da5cb5b146104fb57600080fd5b806342af1884116101b157806370a082311161017557806370a08231146103f1578063715018a6146104275780637ab7f0961461043c5780637cb332bb14610458578063832c2bd21461047857600080fd5b806342af18841461035c57806342b6fa111461037c5780634ada218b1461039c5780635dbdb7e3146103bb57806366a88d96146103db57600080fd5b806318160ddd116101f857806318160ddd146102cb57806323b872dd146102e0578063251ef09514610300578063313ce56714610320578063395093511461033c57600080fd5b806306fdde0314610235578063095ea7b3146102605780630c08e255146102905780631675d802146102a757600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610717565b60405161025791906120f9565b60405180910390f35b34801561026c57600080fd5b5061028061027b36600461216c565b6107a9565b6040519015158152602001610257565b34801561029c57600080fd5b506102a56107c0565b005b3480156102b357600080fd5b506102bd600b5481565b604051908152602001610257565b3480156102d757600080fd5b506002546102bd565b3480156102ec57600080fd5b506102806102fb366004612198565b610812565b34801561030c57600080fd5b506102a561031b3660046121ef565b6108c3565b34801561032c57600080fd5b5060405160128152602001610257565b34801561034857600080fd5b5061028061035736600461216c565b610959565b34801561036857600080fd5b506102a56103773660046122b4565b610990565b34801561038857600080fd5b506102a56103973660046122b4565b610a25565b3480156103a857600080fd5b5060095461028090610100900460ff1681565b3480156103c757600080fd5b506102a56103d63660046122cd565b610a6b565b3480156103e757600080fd5b506102bd600c5481565b3480156103fd57600080fd5b506102bd61040c3660046122cd565b6001600160a01b031660009081526020819052604090205490565b34801561043357600080fd5b506102a5610ab9565b34801561044857600080fd5b506102a56009805460ff19169055565b34801561046457600080fd5b506102a56104733660046122cd565b610aef565b34801561048457600080fd5b506102a56104933660046122cd565b610b3b565b3480156104a457600080fd5b506104ae61dead81565b6040516001600160a01b039091168152602001610257565b3480156104d257600080fd5b506102a5610b86565b3480156104e757600080fd5b506102a56104f636600461216c565b610c1d565b34801561050757600080fd5b506005546001600160a01b03166104ae565b34801561052557600080fd5b5061024a610cde565b34801561053a57600080fd5b506102a56105493660046122b4565b610ced565b6102a5610d51565b34801561056257600080fd5b5061028061057136600461216c565b610fab565b34801561058257600080fd5b506007546104ae906001600160a01b031681565b3480156105a257600080fd5b506102806105b136600461216c565b611046565b3480156105c257600080fd5b506102a56105d136600461216c565b611053565b3480156105e257600080fd5b506102806105f13660046122cd565b600a6020526000908152604090205460ff1681565b34801561061257600080fd5b506102bd6106213660046122f1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561065857600080fd5b50601154601254610667919082565b60408051928352602083019190915201610257565b34801561068857600080fd5b50600f54601054610667919082565b3480156106a357600080fd5b506102806106b236600461216c565b6112a2565b3480156106c357600080fd5b506102a56106d23660046122cd565b6112b0565b3480156106e357600080fd5b506102a56106f23660046121ef565b61134b565b34801561070357600080fd5b506006546104ae906001600160a01b031681565b6060600380546107269061232a565b80601f01602080910402602001604051908101604052809291908181526020018280546107529061232a565b801561079f5780601f106107745761010080835404028352916020019161079f565b820191906000526020600020905b81548152906001019060200180831161078257829003601f168201915b5050505050905090565b60006107b63384846113dd565b5060015b92915050565b6005546001600160a01b031633146107f35760405162461bcd60e51b81526004016107ea90612364565b60405180910390fd5b6107ff6012600a612493565b61080d9063292090806124a2565b600c55565b600061081f848484611501565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108a45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107ea565b6108b885336108b386856124b9565b6113dd565b506001949350505050565b6005546001600160a01b031633146108ed5760405162461bcd60e51b81526004016107ea90612364565b60005b8151811015610955576000600a6000848481518110610911576109116124cc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061094d816124e2565b9150506108f0565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107b69185906108b39086906124fb565b6005546001600160a01b031633146109ba5760405162461bcd60e51b81526004016107ea90612364565b600954610100900460ff1615610a205760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016107ea565b600d55565b6005546001600160a01b03163314610a4f5760405162461bcd60e51b81526004016107ea90612364565b610a5b6012600a612493565b610a6590826124a2565b600b5550565b6005546001600160a01b03163314610a955760405162461bcd60e51b81526004016107ea90612364565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6005546001600160a01b03163314610ae35760405162461bcd60e51b81526004016107ea90612364565b610aed6000611a21565b565b6005546001600160a01b03163314610b195760405162461bcd60e51b81526004016107ea90612364565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b655760405162461bcd60e51b81526004016107ea90612364565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6005546001600160a01b03163314610bb05760405162461bcd60e51b81526004016107ea90612364565b600954610100900460ff1615610c085760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016107ea565b6009805461ffff191661010117905543600855565b6005546001600160a01b03163314610c475760405162461bcd60e51b81526004016107ea90612364565b816001600160a01b031663a9059cbb610c686005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd9919061250e565b505050565b6060600480546107269061232a565b6005546001600160a01b03163314610d175760405162461bcd60e51b81526004016107ea90612364565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610955573d6000803e3d6000fd5b6005546001600160a01b03163314610d7b5760405162461bcd60e51b81526004016107ea90612364565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df29190612530565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e789190612530565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee99190612530565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d7193430610f31816001600160a01b031660009081526020819052604090205490565b600080610f466005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610f689695949392919061254d565b60606040518083038185885af1158015610f86573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cd99190612588565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561102d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107ea565b61103c33856108b386856124b9565b5060019392505050565b60006107b6338484611501565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156110bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e19190612530565b816000815181106110f4576110f46124cc565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611128576111286124cc565b60200260200101906001600160a01b031690816001600160a01b03168152505060008160018151811061115d5761115d6124cc565b602090810291909101810151336000908152600a90925260409091205490915060ff166111f45760065460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de959085906111bd9060009087908a9042906004016125fa565b6000604051808303818588803b1580156111d657600080fd5b505af11580156111ea573d6000803e3d6000fd5b505050505061129c565b806001600160a01b03166323b872dd8584600181518110611217576112176124cc565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018690526064016020604051808303816000875af1158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a919061250e565b505b50505050565b60003061103c848285611a73565b6005546001600160a01b031633146112da5760405162461bcd60e51b81526004016107ea90612364565b6001600160a01b03811661133f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ea565b61134881611a21565b50565b6005546001600160a01b031633146113755760405162461bcd60e51b81526004016107ea90612364565b60005b8151811015610955576001600a6000848481518110611399576113996124cc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806113d5816124e2565b915050611378565b6001600160a01b03831661143f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ea565b6001600160a01b0382166114a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ea565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116115635760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107ea565b6001600160a01b0383166000908152600a602052604090205460ff161580156115a557506001600160a01b0382166000908152600a602052604090205460ff16155b156115f757600954610100900460ff166115f75760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107ea565b6007546001600160a01b03848116911614801561162d57506001600160a01b0382166000908152600a602052604090205460ff16155b80156116435750600754600160a01b900460ff16155b156116c357600c548161166b846001600160a01b031660009081526020819052604090205490565b61167591906124fb565b11156116c35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ea565b6007546001600160a01b038481169116148015906116fa57506001600160a01b0382166000908152600a602052604090205460ff16155b801561171f57506001600160a01b0383166000908152600a602052604090205460ff16155b80156117355750600754600160a01b900460ff16155b156117ca576007546001600160a01b038381169116146117ca57600c5481611772846001600160a01b031660009081526020819052604090205490565b61177c91906124fb565b11156117ca5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ea565b60408051808201909152600080825260208201526001600160a01b0384166000908152600a602052604081205481908190819060ff1615801561182657506001600160a01b0387166000908152600a602052604090205460ff16155b80156118405750600d5460085461183d91906124fb565b43105b600754909150600160a01b900460ff168061187357506001600160a01b0388166000908152600a602052604090205460ff165b8061189657506001600160a01b0387166000908152600a602052604090205460ff165b156118a4576000915061193e565b6007546001600160a01b0388811691161480156118bf575080155b156118f7576011546012546118d491906124fb565b60408051808201909152601154815260125460208201529550935083925061193e565b8061192f57600f5460105461190c91906124fb565b60408051808201909152600f54815260105460208201529550935083925061193e565b801561193e57600e5493508392505b606461194a84886124a2565b611954919061262f565b60095490925060ff16801561197757506007546001600160a01b03898116911614155b801561199c57506001600160a01b0388166000908152600a602052604090205460ff16155b80156119c157506001600160a01b0387166000908152600a602052604090205460ff16155b156119d0576119d08486611a99565b6119e488886119df858a6124b9565b611c14565b8115611a17578315611a1757600060646119fe86896124a2565b611a08919061262f565b9050611a15893083611c14565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611a8657600080fd5b6001600160a01b0382166114a057600080fd5b600754600160a01b900460ff16610955576007805460ff60a01b1916600160a01b1790558115611c035730600090815260208190526040808220546013546001600160a01b03168352912054600b548210611c00576001600b541115611aff57600b5491505b6000611b0c8560026124a2565b9050600081856020015185611b2191906124a2565b611b2b919061262f565b90506000600b548410611b565780611b44576000611b46565b845b600c54611b53919061262f565b91505b6000611b6283876124b9565b905047611b6e82611dec565b6000611b7a82476124b9565b90506000896020015187611b8e91906124b9565b611b98908361262f565b905060008a6020015182611bac91906124a2565b90508015611bbe57611bbe8782611f46565b8a51600090611bce8460026124a2565b611bd891906124a2565b90508015611bf657601354611bf6906001600160a01b031682611fe0565b5050505050505050505b50505b6007805460ff60a01b191690555050565b6001600160a01b038316611c785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107ea565b6001600160a01b038216611cda5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107ea565b6001600160a01b03831660009081526020819052604090205481811015611d525760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107ea565b611d5c82826124b9565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611d929084906124fb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dde91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e2157611e216124cc565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9e9190612530565b81600181518110611eb157611eb16124cc565b6001600160a01b039283166020918202929092010152600654611ed791309116846113dd565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611f10908590600090869030904290600401612651565b600060405180830381600087803b158015611f2a57600080fd5b505af1158015611f3e573d6000803e3d6000fd5b505050505050565b600654611f5e9030906001600160a01b0316846113dd565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390611f9d9030908790600090819061dead90429060040161254d565b60606040518083038185885af1158015611fbb573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061129a9190612588565b804710156120305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107ea565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461207d576040519150601f19603f3d011682016040523d82523d6000602084013e612082565b606091505b5050905080610cd95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107ea565b600060208083528351808285015260005b818110156121265785810183015185820160400152820161210a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461134857600080fd5b803561216781612147565b919050565b6000806040838503121561217f57600080fd5b823561218a81612147565b946020939093013593505050565b6000806000606084860312156121ad57600080fd5b83356121b881612147565b925060208401356121c881612147565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561220257600080fd5b823567ffffffffffffffff8082111561221a57600080fd5b818501915085601f83011261222e57600080fd5b813581811115612240576122406121d9565b8060051b604051601f19603f83011681018181108582111715612265576122656121d9565b60405291825284820192508381018501918883111561228357600080fd5b938501935b828510156122a8576122998561215c565b84529385019392850192612288565b98975050505050505050565b6000602082840312156122c657600080fd5b5035919050565b6000602082840312156122df57600080fd5b81356122ea81612147565b9392505050565b6000806040838503121561230457600080fd5b823561230f81612147565b9150602083013561231f81612147565b809150509250929050565b600181811c9082168061233e57607f821691505b60208210810361235e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156123ea5781600019048211156123d0576123d0612399565b808516156123dd57918102915b93841c93908002906123b4565b509250929050565b600082612401575060016107ba565b8161240e575060006107ba565b8160018114612424576002811461242e5761244a565b60019150506107ba565b60ff84111561243f5761243f612399565b50506001821b6107ba565b5060208310610133831016604e8410600b841016171561246d575081810a6107ba565b61247783836123af565b806000190482111561248b5761248b612399565b029392505050565b60006122ea60ff8416836123f2565b80820281158282048414176107ba576107ba612399565b818103818111156107ba576107ba612399565b634e487b7160e01b600052603260045260246000fd5b6000600182016124f4576124f4612399565b5060010190565b808201808211156107ba576107ba612399565b60006020828403121561252057600080fd5b815180151581146122ea57600080fd5b60006020828403121561254257600080fd5b81516122ea81612147565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561259d57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156125ef5781516001600160a01b0316875295820195908201906001016125ca565b509495945050505050565b84815260806020820152600061261360808301866125b6565b6001600160a01b03949094166040830152506060015292915050565b60008261264c57634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a06040820152600061267060a08301866125b6565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212209922e2a5096869f6fdd58a5ad79a589e75ee70ee9eb91f042d4842d5cd86c75f64736f6c63430008130033

Deployed Bytecode Sourcemap

8673:11479:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2618:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10642:161;;;;;;;;;;-1:-1:-1;10642:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;10642:161:0;1162:187:1;18617:109:0;;;;;;;;;;;;;:::i;:::-;;9083:77;;;;;;;;;;;;;;;;;;;1500:25:1;;;1488:2;1473:18;9083:77:0;1354:177:1;2943:108:0;;;;;;;;;;-1:-1:-1;3031:12:0;;2943:108;;11489:448;;;;;;;;;;-1:-1:-1;11489:448:0;;;;;:::i;:::-;;:::i;18224:196::-;;;;;;;;;;-1:-1:-1;18224:196:0;;;;;:::i;:::-;;:::i;2838:93::-;;;;;;;;;;-1:-1:-1;2838:93:0;;2921:2;3397:36:1;;3385:2;3370:18;2838:93:0;3255:184:1;10815:248:0;;;;;;;;;;-1:-1:-1;10815:248:0;;;;;:::i;:::-;;:::i;19917:177::-;;;;;;;;;;-1:-1:-1;19917:177:0;;;;;:::i;:::-;;:::i;18432:::-;;;;;;;;;;-1:-1:-1;18432:177:0;;;;;:::i;:::-;;:::i;8939:34::-;;;;;;;;;;-1:-1:-1;8939:34:0;;;;;;;;;;;18734:104;;;;;;;;;;-1:-1:-1;18734:104:0;;;;;:::i;:::-;;:::i;9167:68::-;;;;;;;;;;;;;;;;3059:127;;;;;;;;;;-1:-1:-1;3059:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3160:18:0;3133:7;3160:18;;;;;;;;;;;;3059:127;7631:94;;;;;;;;;;;;;:::i;19514:132::-;;;;;;;;;;;;19612:18;:26;;-1:-1:-1;;19612:26:0;;;19514:132;19394:112;;;;;;;;;;-1:-1:-1;19394:112:0;;;;;:::i;:::-;;:::i;19078:108::-;;;;;;;;;;-1:-1:-1;19078:108:0;;;;;:::i;:::-;;:::i;9244:79::-;;;;;;;;;;;;9281:42;9244:79;;;;;-1:-1:-1;;;;;4045:32:1;;;4027:51;;4015:2;4000:18;9244:79:0;3881:203:1;18846:224:0;;;;;;;;;;;;;:::i;19774:135::-;;;;;;;;;;-1:-1:-1;19774:135:0;;;;;:::i;:::-;;:::i;7023:87::-;;;;;;;;;;-1:-1:-1;7096:6:0;;-1:-1:-1;;;;;7096:6:0;7023:87;;2726:104;;;;;;;;;;;;;:::i;19654:112::-;;;;;;;;;;-1:-1:-1;19654:112:0;;;;;:::i;:::-;;:::i;17859:357::-;;;:::i;11071:410::-;;;;;;;;;;-1:-1:-1;11071:410:0;;;;;:::i;:::-;;:::i;8786:19::-;;;;;;;;;;-1:-1:-1;8786:19:0;;;;-1:-1:-1;;;;;8786:19:0;;;11945:165;;;;;;;;;;-1:-1:-1;11945:165:0;;;;;:::i;:::-;;:::i;14847:529::-;;;;;;;;;;-1:-1:-1;14847:529:0;;;;;:::i;:::-;;:::i;8982:41::-;;;;;;;;;;-1:-1:-1;8982:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3677:201;;;;;;;;;;-1:-1:-1;3677:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3843:18:0;;;3811:7;3843:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3677:201;9529:35;;;;;;;;;;-1:-1:-1;9529:35:0;;;;;;;;;;;;;4656:25:1;;;4712:2;4697:18;;4690:34;;;;4629:18;9529:35:0;4482:248:1;9488:34:0;;;;;;;;;;-1:-1:-1;9488:34:0;;;;;;;;;10443:191;;;;;;;;;;-1:-1:-1;10443:191:0;;;;;:::i;:::-;;:::i;7427:192::-;;;;;;;;;;-1:-1:-1;7427:192:0;;;;;:::i;:::-;;:::i;19194:::-;;;;;;;;;;-1:-1:-1;19194:192:0;;;;;:::i;:::-;;:::i;8758:21::-;;;;;;;;;;-1:-1:-1;8758:21:0;;;;-1:-1:-1;;;;;8758:21:0;;;2618:100;2672:13;2705:5;2698:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2618:100;:::o;10642:161::-;10717:4;10734:39;319:10;10757:7;10766:6;10734:8;:39::i;:::-;-1:-1:-1;10791:4:0;10642:161;;;;;:::o;18617:109::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;;;;;;;;;18704:14:::1;2921:2:::0;18704::::1;:14;:::i;:::-;18688:30;::::0;9065:11:::1;18688:30;:::i;:::-;18671:14;:47:::0;18617:109::o;11489:448::-;11621:4;11638:36;11648:6;11656:9;11667:6;11638:9;:36::i;:::-;-1:-1:-1;;;;;11714:19:0;;11687:24;11714:19;;;:11;:19;;;;;;;;319:10;11714:33;;;;;;;;11766:26;;;;11758:79;;;;-1:-1:-1;;;11758:79:0;;7594:2:1;11758:79:0;;;7576:21:1;7633:2;7613:18;;;7606:30;7672:34;7652:18;;;7645:62;-1:-1:-1;;;7723:18:1;;;7716:38;7771:19;;11758:79:0;7392:404:1;11758:79:0;11848:57;11857:6;319:10;11879:25;11898:6;11879:16;:25;:::i;:::-;11848:8;:57::i;:::-;-1:-1:-1;11925:4:0;;11489:448;-1:-1:-1;;;;11489:448:0:o;18224:196::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;18315:9:::1;18310:103;18334:8;:15;18330:1;:19;18310:103;;;18396:5;18371:9;:22;18381:8;18390:1;18381:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18371:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18371:22:0;:30;;-1:-1:-1;;18371:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18351:3;::::1;::::0;::::1;:::i;:::-;;;;18310:103;;;;18224:196:::0;:::o;10815:248::-;319:10;10931:4;10985:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10985:34:0;;;;;;;;;;10931:4;;10953:80;;10976:7;;10985:47;;11022:10;;10985:47;:::i;19917:177::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;19999:14:::1;::::0;::::1;::::0;::::1;;;19998:15;19990:65;;;::::0;-1:-1:-1;;;19990:65:0;;8538:2:1;19990:65:0::1;::::0;::::1;8520:21:1::0;8577:2;8557:18;;;8550:30;8616:34;8596:18;;;8589:62;-1:-1:-1;;;8667:18:1;;;8660:35;8712:19;;19990:65:0::1;8336:401:1::0;19990:65:0::1;20066:8;:20:::0;19917:177::o;18432:::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;18587:14:::1;2921:2:::0;18587::::1;:14;:::i;:::-;18574:27;::::0;:10;:27:::1;:::i;:::-;18548:23;:53:::0;-1:-1:-1;18432:177:0:o;18734:104::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18804:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;18804:26:0::1;18826:4;18804:26;::::0;;18734:104::o;7631:94::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;7696:21:::1;7714:1;7696:9;:21::i;:::-;7631:94::o:0;19394:112::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;19469:17:::1;:29:::0;;-1:-1:-1;;;;;;19469:29:0::1;-1:-1:-1::0;;;;;19469:29:0;;;::::1;::::0;;;::::1;::::0;;19394:112::o;19078:108::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19151:19:0::1;19173:5;19151:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;19151:27:0::1;::::0;;19078:108::o;18846:224::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;18910:14:::1;::::0;::::1;::::0;::::1;;;18909:15;18901:54;;;::::0;-1:-1:-1;;;18901:54:0;;8944:2:1;18901:54:0::1;::::0;::::1;8926:21:1::0;8983:2;8963:18;;;8956:30;9022:28;9002:18;;;8995:56;9068:18;;18901:54:0::1;8742:350:1::0;18901:54:0::1;18966:14;:21:::0;;-1:-1:-1;;18998:25:0;;;;;19050:12:::1;19034:13;:28:::0;18846:224::o;19774:135::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;19866:8:::1;-1:-1:-1::0;;;;;19859:25:0::1;;19885:7;7096:6:::0;;-1:-1:-1;;;;;7096:6:0;;7023:87;19885:7:::1;19859:42;::::0;-1:-1:-1;;;;;;19859:42:0::1;::::0;;;;;;-1:-1:-1;;;;;9289:32:1;;;19859:42:0::1;::::0;::::1;9271:51:1::0;9338:18;;;9331:34;;;9244:18;;19859:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19774:135:::0;;:::o;2726:104::-;2782:13;2815:7;2808:14;;;;;:::i;19654:112::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;7096:6;;19722:36:::1;::::0;-1:-1:-1;;;;;7096:6:0;;;;19722:36;::::1;;;::::0;19748:9;;19722:36:::1;::::0;;;19748:9;7096:6;19722:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;17859:357:::0;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;17935:6:::1;;;;;;;;;-1:-1:-1::0;;;;;17935:6:0::1;-1:-1:-1::0;;;;;17935:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17926:37:0::1;;17972:4;17979:6;;;;;;;;;-1:-1:-1::0;;;;;17979:6:0::1;-1:-1:-1::0;;;;;17979:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17926:67;::::0;-1:-1:-1;;;;;;17926:67:0::1;::::0;;;;;;-1:-1:-1;;;;;10144:15:1;;;17926:67:0::1;::::0;::::1;10126:34:1::0;10196:15;;10176:18;;;10169:43;10061:18;;17926:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17919:4;:74:::0;;-1:-1:-1;;;;;17919:74:0;;::::1;-1:-1:-1::0;;;;;;17919:74:0;;::::1;;::::0;;18004:6:::1;::::0;::::1;:22;18034:9;18067:4;18087:24;18067:4:::0;-1:-1:-1;;;;;3160:18:0;3133:7;3160:18;;;;;;;;;;;;3059:127;18087:24:::1;18126:1;18143::::0;18160:7:::1;7096:6:::0;;-1:-1:-1;;;;;7096:6:0;;7023:87;18160:7:::1;18182:15;18004:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11071:410::-:0;319:10;11192:4;11241:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11241:34:0;;;;;;;;;;11294:35;;;;11286:85;;;;-1:-1:-1;;;11286:85:0;;11348:2:1;11286:85:0;;;11330:21:1;11387:2;11367:18;;;11360:30;11426:34;11406:18;;;11399:62;-1:-1:-1;;;11477:18:1;;;11470:35;11522:19;;11286:85:0;11146:401:1;11286:85:0;11382:67;319:10;11405:7;11414:34;11433:15;11414:16;:34;:::i;11382:67::-;-1:-1:-1;11469:4:0;;11071:410;-1:-1:-1;;;11071:410:0:o;11945:165::-;12023:4;12040:40;12050:10;12062:9;12073:6;12040:9;:40::i;14847:529::-;14942:16;;;14956:1;14942:16;;;;;;;;14918:21;;14942:16;;;;;;;;-1:-1:-1;;14979:6:0;;:13;;;-1:-1:-1;;;14979:13:0;;;;14918:40;;-1:-1:-1;;;;;;14979:6:0;;;;:11;;-1:-1:-1;14979:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14969:4;14974:1;14969:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14969:23:0;;;-1:-1:-1;;;;;14969:23:0;;;;;15021:4;15003;15008:1;15003:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15003:23:0;;;-1:-1:-1;;;;;15003:23:0;;;;;15037:12;15059:4;15064:1;15059:7;;;;;;;;:::i;:::-;;;;;;;;;;;;15095:10;15085:21;;;;:9;:21;;;;;;;;15059:7;;-1:-1:-1;15085:21:0;;15080:289;;15123:6;;:186;;-1:-1:-1;;;15123:186:0;;-1:-1:-1;;;;;15123:6:0;;;;:57;;15188:6;;15123:186;;:6;;15235:4;;15258:2;;15279:15;;15123:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15080:289;;;15328:5;-1:-1:-1;;;;;15328:18:0;;15347:2;15351:4;15356:1;15351:7;;;;;;;;:::i;:::-;;;;;;;;;;;15328:39;;-1:-1:-1;;;;;;15328:39:0;;;;;;;-1:-1:-1;;;;;12791:15:1;;;15328:39:0;;;12773:34:1;12843:15;;12823:18;;;12816:43;12875:18;;;12868:34;;;12708:18;;15328:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15080:289;14907:469;;14847:529;;:::o;10443:191::-;10516:4;10557;10573:31;10581:7;10557:4;10597:6;10573:7;:31::i;7427:192::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7516:22:0;::::1;7508:73;;;::::0;-1:-1:-1;;;7508:73:0;;13115:2:1;7508:73:0::1;::::0;::::1;13097:21:1::0;13154:2;13134:18;;;13127:30;13193:34;13173:18;;;13166:62;-1:-1:-1;;;13244:18:1;;;13237:36;13290:19;;7508:73:0::1;12913:402:1::0;7508:73:0::1;7592:19;7602:8;7592:9;:19::i;:::-;7427:192:::0;:::o;19194:::-;7096:6;;-1:-1:-1;;;;;7096:6:0;319:10;7158:23;7150:68;;;;-1:-1:-1;;;7150:68:0;;;;;;;:::i;:::-;19282:9:::1;19277:102;19301:8;:15;19297:1;:19;19277:102;;;19363:4;19338:9;:22;19348:8;19357:1;19348:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19338:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;19338:22:0;:29;;-1:-1:-1;;19338:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19318:3;::::1;::::0;::::1;:::i;:::-;;;;19277:102;;5989:380:::0;-1:-1:-1;;;;;6125:19:0;;6117:68;;;;-1:-1:-1;;;6117:68:0;;13522:2:1;6117:68:0;;;13504:21:1;13561:2;13541:18;;;13534:30;13600:34;13580:18;;;13573:62;-1:-1:-1;;;13651:18:1;;;13644:34;13695:19;;6117:68:0;13320:400:1;6117:68:0;-1:-1:-1;;;;;6204:21:0;;6196:68;;;;-1:-1:-1;;;6196:68:0;;13927:2:1;6196:68:0;;;13909:21:1;13966:2;13946:18;;;13939:30;14005:34;13985:18;;;13978:62;-1:-1:-1;;;14056:18:1;;;14049:32;14098:19;;6196:68:0;13725:398:1;6196:68:0;-1:-1:-1;;;;;6277:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6329:32;;1500:25:1;;;6329:32:0;;1473:18:1;6329:32:0;;;;;;;5989:380;;;:::o;15384:2467::-;15534:1;15525:6;:10;15517:64;;;;-1:-1:-1;;;15517:64:0;;14330:2:1;15517:64:0;;;14312:21:1;14369:2;14349:18;;;14342:30;14408:34;14388:18;;;14381:62;-1:-1:-1;;;14459:18:1;;;14452:39;14508:19;;15517:64:0;14128:405:1;15517:64:0;-1:-1:-1;;;;;15599:17:0;;;;;;:9;:17;;;;;;;;15598:18;:43;;;;-1:-1:-1;;;;;;15621:20:0;;;;;;:9;:20;;;;;;;;15620:21;15598:43;15594:122;;;15666:14;;;;;;;15658:46;;;;-1:-1:-1;;;15658:46:0;;14740:2:1;15658:46:0;;;14722:21:1;14779:2;14759:18;;;14752:30;-1:-1:-1;;;14798:18:1;;;14791:49;14857:18;;15658:46:0;14538:343:1;15658:46:0;15742:4;;-1:-1:-1;;;;;15732:14:0;;;15742:4;;15732:14;:39;;;;-1:-1:-1;;;;;;15751:20:0;;;;;;:9;:20;;;;;;;;15750:21;15732:39;:59;;;;-1:-1:-1;15776:15:0;;-1:-1:-1;;;15776:15:0;;;;15775:16;15732:59;15728:215;;;15849:14;;15839:6;15816:20;15826:9;-1:-1:-1;;;;;3160:18:0;3133:7;3160:18;;;;;;;;;;;;3059:127;15816:20;:29;;;;:::i;:::-;:47;;15808:123;;;;-1:-1:-1;;;15808:123:0;;15088:2:1;15808:123:0;;;15070:21:1;;;15107:18;;;15100:30;15166:34;15146:18;;;15139:62;15218:18;;15808:123:0;14886:356:1;15808:123:0;15969:4;;-1:-1:-1;;;;;15959:14:0;;;15969:4;;15959:14;;;;:39;;-1:-1:-1;;;;;;15978:20:0;;;;;;:9;:20;;;;;;;;15977:21;15959:39;:61;;;;-1:-1:-1;;;;;;16003:17:0;;;;;;:9;:17;;;;;;;;16002:18;15959:61;:81;;;;-1:-1:-1;16025:15:0;;-1:-1:-1;;;16025:15:0;;;;16024:16;15959:81;15955:302;;;16074:4;;-1:-1:-1;;;;;16061:17:0;;;16074:4;;16061:17;16057:189;;16140:14;;16130:6;16107:20;16117:9;-1:-1:-1;;;;;3160:18:0;3133:7;3160:18;;;;;;;;;;;;3059:127;16107:20;:29;;;;:::i;:::-;:47;;16099:131;;;;-1:-1:-1;;;16099:131:0;;15088:2:1;16099:131:0;;;15070:21:1;;;15107:18;;;15100:30;15166:34;15146:18;;;15139:62;15218:18;;16099:131:0;14886:356:1;16099:131:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;16399:17:0;;16305:15;16399:17;;;:9;:17;;;;;;16305:15;;;;;;16399:17;;16398:18;:43;;;;-1:-1:-1;;;;;;16421:20:0;;;;;;:9;:20;;;;;;;;16420:21;16398:43;:86;;;;;16476:8;;16460:13;;:24;;;;:::i;:::-;16445:12;:39;16398:86;16572:15;;16378:106;;-1:-1:-1;;;;16572:15:0;;;;;:36;;-1:-1:-1;;;;;;16591:17:0;;;;;;:9;:17;;;;;;;;16572:36;:60;;;-1:-1:-1;;;;;;16612:20:0;;;;;;:9;:20;;;;;;;;16572:60;16568:652;;;16653:1;16647:7;;16568:652;;;16712:4;;-1:-1:-1;;;;;16699:17:0;;;16712:4;;16699:17;:34;;;;;16721:12;16720:13;16699:34;16695:525;;;16815:8;:18;16777;;:56;;16815:18;16777:56;:::i;:::-;16880:23;;;;;;;;;16895:8;16880:23;;;;;;;;;;-1:-1:-1;16750:83:0;-1:-1:-1;16750:83:0;;-1:-1:-1;16695:525:0;;;16926:12;16921:299;;17019:7;:17;16982;;:54;;17019:17;16982:54;:::i;:::-;17083:22;;;;;;;;;17098:7;17083:22;;;;;;;;;;-1:-1:-1;16955:81:0;-1:-1:-1;16955:81:0;;-1:-1:-1;16921:299:0;;;17127:12;17123:97;;;17166:9;;;-1:-1:-1;17166:9:0;;-1:-1:-1;17123:97:0;17258:3;17239:15;17248:6;17239;:15;:::i;:::-;17238:23;;;;:::i;:::-;17376:18;;17232:29;;-1:-1:-1;17376:18:0;;:36;;;;-1:-1:-1;17408:4:0;;-1:-1:-1;;;;;17398:14:0;;;17408:4;;17398:14;;17376:36;:58;;;;-1:-1:-1;;;;;;17417:17:0;;;;;;:9;:17;;;;;;;;17416:18;17376:58;:83;;;;-1:-1:-1;;;;;;17439:20:0;;;;;;:9;:20;;;;;;;;17438:21;17376:83;17372:123;;;17461:34;17473:7;17482:12;17461:11;:34::i;:::-;17537:48;17553:6;17561:9;17572:12;17581:3;17572:6;:12;:::i;:::-;17537:15;:48::i;:::-;17600:7;;17596:248;;17673:11;;17669:164;;17705:17;17746:3;17726:16;17735:7;17726:6;:16;:::i;:::-;17725:24;;;;:::i;:::-;17705:44;;17768:49;17784:6;17800:4;17807:9;17768:15;:49::i;:::-;17686:147;17669:164;15506:2345;;;;;15384:2467;;;:::o;7246:173::-;7321:6;;;-1:-1:-1;;;;;7338:17:0;;;-1:-1:-1;;;;;;7338:17:0;;;;;;;7371:40;;7321:6;;;7338:17;7321:6;;7371:40;;7302:16;;7371:40;7291:128;7246:173;:::o;6377:271::-;-1:-1:-1;;;;;6484:19:0;;6476:28;;;;;;-1:-1:-1;;;;;6523:21:0;;6515:30;;;;;12118:1679;9610:15;;-1:-1:-1;;;9610:15:0;;;;9605:125;;9642:15;:22;;-1:-1:-1;;;;9642:22:0;-1:-1:-1;;;9642:22:0;;;12206:49;;12237:7:::1;12206:49;12311:4;12267:23;3160:18:::0;;;;;;;;;;;;12359:17:::1;::::0;-1:-1:-1;;;;;12359:17:0::1;3160:18:::0;;;;;12411:23:::1;::::0;12392:42;::::1;12388:1402;;12481:1;12455:23;;:27;12451:109;;;12521:23;;12503:41;;12451:109;12631:19;12653:11;:7:::0;12663:1:::1;12653:11;:::i;:::-;12631:33;;12679:32;12773:11;12733:9;:19;;;12715:15;:37;;;;:::i;:::-;12714:70;;;;:::i;:::-;12679:105;;12801:12;12846:23;;12832:10;:37;12828:153;;12935:7;:29;;12963:1;12935:29;;;12945:15;12935:29;12917:14;;:48;;;;:::i;:::-;12890:75;;12828:153;12995:14;13012:42;13030:24:::0;13012:15;:42:::1;:::i;:::-;12995:59:::0;-1:-1:-1;13096:21:0::1;13134:24;12995:59:::0;13134:16:::1;:24::i;:::-;13175:20;13198:38;13222:14:::0;13198:21:::1;:38;:::i;:::-;13175:61;;13251:19;13303:9;:19;;;13289:11;:33;;;;:::i;:::-;13273:50;::::0;:12;:50:::1;:::i;:::-;13251:72;;13338:29;13384:9;:19;;;13370:11;:33;;;;:::i;:::-;13338:65:::0;-1:-1:-1;13424:25:0;;13420:161:::1;;13504:61;13517:24;13543:21;13504:12;:61::i;:::-;13638:19:::0;;13597:20:::1;::::0;13620:15:::1;:11:::0;13634:1:::1;13620:15;:::i;:::-;:37;;;;:::i;:::-;13597:60:::0;-1:-1:-1;13676:16:0;;13672:107:::1;;13721:17;::::0;13713:50:::1;::::0;-1:-1:-1;;;;;13721:17:0::1;13750:12:::0;13713:36:::1;:50::i;:::-;12436:1354;;;;;;;;;12388:1402;12198:1599;;9679:1;9695:15:::0;:23;;-1:-1:-1;;;;9695:23:0;;;12118:1679;;:::o;4974:638::-;-1:-1:-1;;;;;5114:20:0;;5106:70;;;;-1:-1:-1;;;5106:70:0;;15671:2:1;5106:70:0;;;15653:21:1;15710:2;15690:18;;;15683:30;15749:34;15729:18;;;15722:62;-1:-1:-1;;;15800:18:1;;;15793:35;15845:19;;5106:70:0;15469:401:1;5106:70:0;-1:-1:-1;;;;;5195:23:0;;5187:71;;;;-1:-1:-1;;;5187:71:0;;16077:2:1;5187:71:0;;;16059:21:1;16116:2;16096:18;;;16089:30;16155:34;16135:18;;;16128:62;-1:-1:-1;;;16206:18:1;;;16199:33;16249:19;;5187:71:0;15875:399:1;5187:71:0;-1:-1:-1;;;;;5355:17:0;;5331:21;5355:17;;;;;;;;;;;5391:23;;;;5383:74;;;;-1:-1:-1;;;5383:74:0;;16481:2:1;5383:74:0;;;16463:21:1;16520:2;16500:18;;;16493:30;16559:34;16539:18;;;16532:62;-1:-1:-1;;;16610:18:1;;;16603:36;16656:19;;5383:74:0;16279:402:1;5383:74:0;5488:22;5504:6;5488:13;:22;:::i;:::-;-1:-1:-1;;;;;5468:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5521:20;;;;;;;;:30;;5545:6;;5468:9;5521:30;;5545:6;;5521:30;:::i;:::-;;;;;;;;5586:9;-1:-1:-1;;;;;5569:35:0;5578:6;-1:-1:-1;;;;;5569:35:0;;5597:6;5569:35;;;;1500:25:1;;1488:2;1473:18;;1354:177;5569:35:0;;;;;;;;5095:517;4974:638;;;:::o;14313:526::-;14455:16;;;14469:1;14455:16;;;;;;;;14431:21;;14455:16;;;;;;;;;;-1:-1:-1;14455:16:0;14431:40;;14500:4;14482;14487:1;14482:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14482:23:0;;;:7;;;;;;;;;;:23;;;;14526:6;;:13;;;-1:-1:-1;;;14526:13:0;;;;:6;;;;;:11;;:13;;;;;14482:7;;14526:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14516:4;14521:1;14516:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14516:23:0;;;:7;;;;;;;;;:23;14584:6;;14552:53;;14569:4;;14584:6;14593:11;14552:8;:53::i;:::-;14644:6;;:187;;-1:-1:-1;;;14644:187:0;;-1:-1:-1;;;;;14644:6:0;;;;:57;;:187;;14716:11;;14644:6;;14758:4;;14785;;14805:15;;14644:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14368:471;14313:526;:::o;13805:500::-;13985:6;;13953:53;;13970:4;;-1:-1:-1;;;;;13985:6:0;13994:11;13953:8;:53::i;:::-;14049:6;;:248;;-1:-1:-1;;;14049:248:0;;-1:-1:-1;;;;;14049:6:0;;;;:22;;14080:9;;14049:248;;14114:4;;14134:11;;14049:6;;;;9281:42;;14271:15;;14049:248;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;610:319::-;725:6;700:21;:31;;692:73;;;;-1:-1:-1;;;692:73:0;;17475:2:1;692:73:0;;;17457:21:1;17514:2;17494:18;;;17487:30;17553:31;17533:18;;;17526:59;17602:18;;692:73:0;17273:353:1;692:73:0;779:12;797:9;-1:-1:-1;;;;;797:14:0;820:6;797:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:54;;;851:7;843:78;;;;-1:-1:-1;;;843:78:0;;18043:2:1;843:78:0;;;18025:21:1;18082:2;18062:18;;;18055:30;18121:34;18101:18;;;18094:62;18192:28;18172:18;;;18165:56;18238:19;;843:78:0;17841:422:1;14:548;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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;1997:127::-;2058:10;2053:3;2049:20;2046:1;2039:31;2089:4;2086:1;2079:15;2113:4;2110:1;2103:15;2129:1121;2213:6;2244:2;2287;2275:9;2266:7;2262:23;2258:32;2255:52;;;2303:1;2300;2293:12;2255:52;2343:9;2330:23;2372:18;2413:2;2405:6;2402:14;2399:34;;;2429:1;2426;2419:12;2399:34;2467:6;2456:9;2452:22;2442:32;;2512:7;2505:4;2501:2;2497:13;2493:27;2483:55;;2534:1;2531;2524:12;2483:55;2570:2;2557:16;2592:2;2588;2585:10;2582:36;;;2598:18;;:::i;:::-;2644:2;2641:1;2637:10;2676:2;2670:9;2739:2;2735:7;2730:2;2726;2722:11;2718:25;2710:6;2706:38;2794:6;2782:10;2779:22;2774:2;2762:10;2759:18;2756:46;2753:72;;;2805:18;;:::i;:::-;2841:2;2834:22;2891:18;;;2925:15;;;;-1:-1:-1;2967:11:1;;;2963:20;;;2995:19;;;2992:39;;;3027:1;3024;3017:12;2992:39;3051:11;;;;3071:148;3087:6;3082:3;3079:15;3071:148;;;3153:23;3172:3;3153:23;:::i;:::-;3141:36;;3104:12;;;;3197;;;;3071:148;;;3238:6;2129:1121;-1:-1:-1;;;;;;;;2129:1121:1:o;3444:180::-;3503:6;3556:2;3544:9;3535:7;3531:23;3527:32;3524:52;;;3572:1;3569;3562:12;3524:52;-1:-1:-1;3595:23:1;;3444:180;-1:-1:-1;3444:180:1:o;3629:247::-;3688:6;3741:2;3729:9;3720:7;3716:23;3712:32;3709:52;;;3757:1;3754;3747:12;3709:52;3796:9;3783:23;3815:31;3840:5;3815:31;:::i;:::-;3865:5;3629:247;-1:-1:-1;;;3629:247:1:o;4089:388::-;4157:6;4165;4218:2;4206:9;4197:7;4193:23;4189:32;4186:52;;;4234:1;4231;4224:12;4186:52;4273:9;4260:23;4292:31;4317:5;4292:31;:::i;:::-;4342:5;-1:-1:-1;4399:2:1;4384:18;;4371:32;4412:33;4371:32;4412:33;:::i;:::-;4464:7;4454:17;;;4089:388;;;;;:::o;4958:380::-;5037:1;5033:12;;;;5080;;;5101:61;;5155:4;5147:6;5143:17;5133:27;;5101:61;5208:2;5200:6;5197:14;5177:18;5174:38;5171:161;;5254:10;5249:3;5245:20;5242:1;5235:31;5289:4;5286:1;5279:15;5317:4;5314:1;5307:15;5171:161;;4958:380;;;:::o;5343:356::-;5545:2;5527:21;;;5564:18;;;5557:30;5623:34;5618:2;5603:18;;5596:62;5690:2;5675:18;;5343:356::o;5704:127::-;5765:10;5760:3;5756:20;5753:1;5746:31;5796:4;5793:1;5786:15;5820:4;5817:1;5810:15;5836:422;5925:1;5968:5;5925:1;5982:270;6003:7;5993:8;5990:21;5982:270;;;6062:4;6058:1;6054:6;6050:17;6044:4;6041:27;6038:53;;;6071:18;;:::i;:::-;6121:7;6111:8;6107:22;6104:55;;;6141:16;;;;6104:55;6220:22;;;;6180:15;;;;5982:270;;;5986:3;5836:422;;;;;:::o;6263:806::-;6312:5;6342:8;6332:80;;-1:-1:-1;6383:1:1;6397:5;;6332:80;6431:4;6421:76;;-1:-1:-1;6468:1:1;6482:5;;6421:76;6513:4;6531:1;6526:59;;;;6599:1;6594:130;;;;6506:218;;6526:59;6556:1;6547:10;;6570:5;;;6594:130;6631:3;6621:8;6618:17;6615:43;;;6638:18;;:::i;:::-;-1:-1:-1;;6694:1:1;6680:16;;6709:5;;6506:218;;6808:2;6798:8;6795:16;6789:3;6783:4;6780:13;6776:36;6770:2;6760:8;6757:16;6752:2;6746:4;6743:12;6739:35;6736:77;6733:159;;;-1:-1:-1;6845:19:1;;;6877:5;;6733:159;6924:34;6949:8;6943:4;6924:34;:::i;:::-;6994:6;6990:1;6986:6;6982:19;6973:7;6970:32;6967:58;;;7005:18;;:::i;:::-;7043:20;;6263:806;-1:-1:-1;;;6263:806:1:o;7074:140::-;7132:5;7161:47;7202:4;7192:8;7188:19;7182:4;7161:47;:::i;7219:168::-;7292:9;;;7323;;7340:15;;;7334:22;;7320:37;7310:71;;7361:18;;:::i;7801:128::-;7868:9;;;7889:11;;;7886:37;;;7903:18;;:::i;7934:127::-;7995:10;7990:3;7986:20;7983:1;7976:31;8026:4;8023:1;8016:15;8050:4;8047:1;8040:15;8066:135;8105:3;8126:17;;;8123:43;;8146:18;;:::i;:::-;-1:-1:-1;8193:1:1;8182:13;;8066:135::o;8206:125::-;8271:9;;;8292:10;;;8289:36;;;8305:18;;:::i;9376:277::-;9443:6;9496:2;9484:9;9475:7;9471:23;9467:32;9464:52;;;9512:1;9509;9502:12;9464:52;9544:9;9538:16;9597:5;9590:13;9583:21;9576:5;9573:32;9563:60;;9619:1;9616;9609:12;9658:251;9728:6;9781:2;9769:9;9760:7;9756:23;9752:32;9749:52;;;9797:1;9794;9787:12;9749:52;9829:9;9823:16;9848:31;9873:5;9848:31;:::i;10223:607::-;-1:-1:-1;;;;;10582:15:1;;;10564:34;;10629:2;10614:18;;10607:34;;;;10672:2;10657:18;;10650:34;;;;10715:2;10700:18;;10693:34;;;;10764:15;;;10758:3;10743:19;;10736:44;10544:3;10796:19;;10789:35;;;;10513:3;10498:19;;10223:607::o;10835:306::-;10923:6;10931;10939;10992:2;10980:9;10971:7;10967:23;10963:32;10960:52;;;11008:1;11005;10998:12;10960:52;11037:9;11031:16;11021:26;;11087:2;11076:9;11072:18;11066:25;11056:35;;11131:2;11120:9;11116:18;11110:25;11100:35;;10835:306;;;;;:::o;11552:461::-;11605:3;11643:5;11637:12;11670:6;11665:3;11658:19;11696:4;11725:2;11720:3;11716:12;11709:19;;11762:2;11755:5;11751:14;11783:1;11793:195;11807:6;11804:1;11801:13;11793:195;;;11872:13;;-1:-1:-1;;;;;11868:39:1;11856:52;;11928:12;;;;11963:15;;;;11904:1;11822:9;11793:195;;;-1:-1:-1;12004:3:1;;11552:461;-1:-1:-1;;;;;11552:461:1:o;12018:510::-;12289:6;12278:9;12271:25;12332:3;12327:2;12316:9;12312:18;12305:31;12252:4;12353:57;12405:3;12394:9;12390:19;12382:6;12353:57;:::i;:::-;-1:-1:-1;;;;;12446:32:1;;;;12441:2;12426:18;;12419:60;-1:-1:-1;12510:2:1;12495:18;12488:34;12345:65;12018:510;-1:-1:-1;;12018:510:1:o;15247:217::-;15287:1;15313;15303:132;;15357:10;15352:3;15348:20;15345:1;15338:31;15392:4;15389:1;15382:15;15420:4;15417:1;15410:15;15303:132;-1:-1:-1;15449:9:1;;15247:217::o;16686:582::-;16985:6;16974:9;16967:25;17028:6;17023:2;17012:9;17008:18;17001:34;17071:3;17066:2;17055:9;17051:18;17044:31;16948:4;17092:57;17144:3;17133:9;17129:19;17121:6;17092:57;:::i;:::-;-1:-1:-1;;;;;17185:32:1;;;;17180:2;17165:18;;17158:60;-1:-1:-1;17249:3:1;17234:19;17227:35;17084:65;16686:582;-1:-1:-1;;;16686:582:1:o

Swarm Source

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