ETH Price: $3,286.81 (+2.37%)

Token

Ryoshi Inu (RSI)
 

Overview

Max Total Supply

1,000,000 RSI

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
14,380.081497018571129296 RSI

Value
$0.00
0x9dd3d61dffa62ab82af3346d9fc86d6237131725
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:
RYOSHIINU

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 9 of 9: RyoshiInu.sol
//https://t.me/RyoshiInuPortal
//https://ryoshi-inu.org/

// RyoshiInu.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.21;

import "./Context.sol";
import "./IERC20Metadata.sol"; 
import "./IERC20.sol"; 
import "./Ownable.sol";
import "./IDexRouter.sol";
import "./IDexFactory.sol";
import "./ILpPair.sol";
import "./ERC20.sol"; 

contract RYOSHIINU is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;

    IDexRouter public immutable dexRouter;
    address public immutable lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;

    uint256 public tradingActiveBlock;
    uint256 public tradingActiveTs;
    uint256 public blockForPenaltyEnd;

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

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

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;

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

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

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

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

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedOperationsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("Ryoshi Inu", "RSI") {

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

        _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2

        dexRouter = IDexRouter(_dexRouter);

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

        uint256 totalSupply = 1 * 1e6 * 1e18;

        maxBuyAmount = totalSupply * 2 / 100;
        maxSellAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 3 / 100; 

        buyOperationsFee = 25;
        buyLiquidityFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;

        sellOperationsFee = 35;
        sellLiquidityFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;

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

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

        operationsAddress = address(newOwner);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function openTrading(uint256 deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        require(deadBlocks <= 8, "Cannot set more than 8 deadblocks");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        tradingActiveTs = block.timestamp;
        blockForPenaltyEnd = tradingActiveBlock + deadBlocks;
        emit EnabledTrading();
    }

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

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }
    
    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max buy amount lower than 0.2%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max sell amount lower than 0.2%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
  	    swapTokensAtAmount = newAmount;
  	}

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

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

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

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

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _OperationsFee, uint256 _liquidityFee) external onlyOwner {
        buyOperationsFee = _OperationsFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;
    }

    function updateSellFees(uint256 _OperationsFee, uint256 _liquidityFee) external onlyOwner {
        sellOperationsFee = _OperationsFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;
    }

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

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

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

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

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

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

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

        uint256 fees = 0;

        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.
            if(earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){
                fees = amount * 99 / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
            }

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

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

        	amount -= fees;
        }

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

    function earlyBuyPenaltyInEffect() public view returns (bool){
        return block.number < blockForPenaltyEnd;
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

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

    function swapBack() private {

        if(tokensForLiquidity > 0 && balanceOf(address(this)) >= tokensForLiquidity) {
            super._transfer(address(this), address(lpPair),tokensForLiquidity);
            ILpPair(lpPair).sync();
        }
        tokensForLiquidity = 0;

        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) {return;}

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

        swapTokensForEth(contractBalance);

        tokensForOperations = balanceOf(address(this));
    }

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

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

File 1 of 9: Context.sol
// SPDX-License-Identifier: MIT
// Context.sol
pragma solidity 0.8.21;

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

File 2 of 9: ERC20.sol
// SPDX-License-Identifier: MIT
// ERC20.sol
pragma solidity 0.8.21;

import "./Context.sol";
import "./IERC20.sol";
import "./IERC20Metadata.sol";

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

File 3 of 9: IDexFactory.sol
// SPDX-License-Identifier: MIT
// IDexFactory.sol
pragma solidity 0.8.21;

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

File 4 of 9: IDexRouter.sol
// SPDX-License-Identifier: MIT
// IDexRouter.sol
pragma solidity 0.8.21;

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

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

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

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

File 5 of 9: IERC20.sol
// SPDX-License-Identifier: MIT
// IERC20.sol
pragma solidity 0.8.21;

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

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

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

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

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

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

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

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


File 6 of 9: IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// IERC20Metadata.sol
pragma solidity 0.8.21;

import "./IERC20.sol";

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

File 7 of 9: ILpPair.sol
// SPDX-License-Identifier: MIT
// ILpPair.sol
pragma solidity 0.8.21;

interface ILpPair {
    function sync() external;
}

File 8 of 9: Ownable.sol
// SPDX-License-Identifier: MIT
// Ownable.sol
pragma solidity 0.8.21;

import "./Context.sol";

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveTs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_OperationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_OperationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600e805462ffffff191660019081179091556010805460ff191690911790553480156200002f575f80fd5b506040518060400160405280600a81526020016952796f73686920496e7560b01b8152506040518060400160405280600381526020016252534960e81b8152508160039081620000809190620007ad565b5060046200008f8282620007ad565b5050505f620000a3620003b560201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f805160206200311e833981519152908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000137573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200015d919062000875565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001d1919062000875565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200021c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000242919062000875565b6001600160a01b031660a08190526200025d906001620003b9565b60a0516200026d9060016200041b565b69d3c21bcecceda1000000606462000287826002620008b8565b620002939190620008d8565b6006556064620002a5826002620008b8565b620002b19190620008d8565b6007556064620002c3826003620008b8565b620002cf9190620008d8565b600955601960128190555f6013819055620002ea91620008f8565b601155602360158190555f60168190556200030591620008f8565b60145562000315836001620003b9565b62000322306001620003b9565b6200033161dead6001620003b9565b60805162000341906001620003b9565b6200034e83600162000485565b6200035b30600162000485565b6200036a61dead600162000485565b6080516200037a90600162000485565b600a80546001600160a01b0319166001600160a01b038516179055620003a1838262000531565b620003ac8362000613565b5050506200090e565b3390565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382165f908152601b60205260409020805460ff19168215151790556200044a8282620003b9565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b03163314620004d35760405162461bcd60e51b815260206004820181905260248201525f80516020620030fe83398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005895760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004ca565b8060025f8282546200059c9190620008f8565b90915550506001600160a01b0382165f9081526020819052604081208054839290620005ca908490620008f8565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146200065d5760405162461bcd60e51b815260206004820181905260248201525f80516020620030fe8339815191526044820152606401620004ca565b6001600160a01b038116620006c45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004ca565b6005546040516001600160a01b038084169216905f805160206200311e833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200073657607f821691505b6020821081036200075557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007a8575f81815260208120601f850160051c81016020861015620007835750805b601f850160051c820191505b81811015620007a4578281556001016200078f565b5050505b505050565b81516001600160401b03811115620007c957620007c96200070d565b620007e181620007da845462000721565b846200075b565b602080601f83116001811462000817575f8415620007ff5750858301515b5f19600386901b1c1916600185901b178555620007a4565b5f85815260208120601f198616915b82811015620008475788860151825594840194600190910190840162000826565b50858210156200086557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000886575f80fd5b81516001600160a01b03811681146200089d575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620008d257620008d2620008a4565b92915050565b5f82620008f357634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620008d257620008d2620008a4565b60805160a05161278f6200096f5f395f818161047c01528181610de201528181610ed60152818161194b01528181611f350152611f5e01525f81816103290152818161190e01528181612202015281816122b901526122f8015261278f5ff3fe6080604052600436106102c2575f3560e01c806388e765ff1161016f578063d1633649116100d8578063e884f26011610092578063f2fde38b1161006d578063f2fde38b14610848578063f5648a4f14610867578063f63743421461087b578063fb002c9714610890575f80fd5b8063e884f2601461080a578063ee40166e1461081e578063f11a24d314610833575f80fd5b8063d16336491461073f578063d257b34f1461075e578063d85ba0631461077d578063dc3f0d0f14610792578063dd62ed3e146107b1578063e2f45605146107f5575f80fd5b8063a62068ce11610129578063a62068ce14610687578063a9059cbb1461069c578063b62496f5146106bb578063bbc0c742146106e9578063c024666814610707578063c876d0b914610726575f80fd5b806388e765ff146105ee57806389c9e320146106035780638da5cb5b1461061857806395d89b41146106355780639a7a23d614610649578063a457c2d714610668575f80fd5b80634a62bb651161022b57806366d602ae116101e557806370a08231116101c057806370a0823114610573578063715018a6146105a7578063751039fc146105bb5780637571336a146105cf575f80fd5b806366d602ae1461052a5780636a486a8e1461053f5780636ddd171314610554575f80fd5b80634a62bb651461049e5780634f77f6c0146104b757806351f205e4146104cc57806358a6d531146104e05780635a139dd4146104f657806366ca9b831461050b575f80fd5b80631a8145bb1161027c5780631a8145bb146103de57806323b872dd146103f35780632be32b6114610412578063313ce56714610431578063395093511461044c578063452ed4f11461046b575f80fd5b806302dbd8f8146102cd57806306fdde03146102ee5780630758d92414610318578063095ea7b31461036357806310d5de531461039257806318160ddd146103c0575f80fd5b366102c957005b5f80fd5b3480156102d8575f80fd5b506102ec6102e73660046123cc565b6108a5565b005b3480156102f9575f80fd5b506103026108f3565b60405161030f91906123ec565b60405180910390f35b348015610323575f80fd5b5061034b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161030f565b34801561036e575f80fd5b5061038261037d36600461244e565b610983565b604051901515815260200161030f565b34801561039d575f80fd5b506103826103ac366004612478565b601a6020525f908152604090205460ff1681565b3480156103cb575f80fd5b506002545b60405190815260200161030f565b3480156103e9575f80fd5b506103d060185481565b3480156103fe575f80fd5b5061038261040d36600461249a565b610999565b34801561041d575f80fd5b506102ec61042c3660046124d8565b610a41565b34801561043c575f80fd5b506040516012815260200161030f565b348015610457575f80fd5b5061038261046636600461244e565b610b4e565b348015610476575f80fd5b5061034b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a9575f80fd5b50600e546103829060ff1681565b3480156104c2575f80fd5b506103d060155481565b3480156104d7575f80fd5b506102ec610b89565b3480156104eb575f80fd5b50600d544310610382565b348015610501575f80fd5b506103d060125481565b348015610516575f80fd5b506102ec6105253660046123cc565b610c8f565b348015610535575f80fd5b506103d060075481565b34801561054a575f80fd5b506103d060145481565b34801561055f575f80fd5b50600e546103829062010000900460ff1681565b34801561057e575f80fd5b506103d061058d366004612478565b6001600160a01b03165f9081526020819052604090205490565b3480156105b2575f80fd5b506102ec610cd4565b3480156105c6575f80fd5b506102ec610d47565b3480156105da575f80fd5b506102ec6105e93660046124ef565b610db1565b3480156105f9575f80fd5b506103d060065481565b34801561060e575f80fd5b506103d0600c5481565b348015610623575f80fd5b506005546001600160a01b031661034b565b348015610640575f80fd5b50610302610e9b565b348015610654575f80fd5b506102ec6106633660046124ef565b610eaa565b348015610673575f80fd5b5061038261068236600461244e565b610fc0565b348015610692575f80fd5b506103d0600d5481565b3480156106a7575f80fd5b506103826106b636600461244e565b611058565b3480156106c6575f80fd5b506103826106d5366004612478565b601b6020525f908152604090205460ff1681565b3480156106f4575f80fd5b50600e5461038290610100900460ff1681565b348015610712575f80fd5b506102ec6107213660046124ef565b611064565b348015610731575f80fd5b506010546103829060ff1681565b34801561074a575f80fd5b506102ec6107593660046124d8565b6110ec565b348015610769575f80fd5b506102ec6107783660046124d8565b61121d565b348015610788575f80fd5b506103d060115481565b34801561079d575f80fd5b506102ec6107ac3660046124d8565b611368565b3480156107bc575f80fd5b506103d06107cb36600461252a565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610800575f80fd5b506103d060095481565b348015610815575f80fd5b506102ec61146f565b348015610829575f80fd5b506103d0600b5481565b34801561083e575f80fd5b506103d060135481565b348015610853575f80fd5b506102ec610862366004612478565b6114a5565b348015610872575f80fd5b506102ec61158f565b348015610886575f80fd5b506103d060165481565b34801561089b575f80fd5b506103d060175481565b6005546001600160a01b031633146108d85760405162461bcd60e51b81526004016108cf90612556565b60405180910390fd5b601582905560168190556108ec818361259f565b6014555050565b606060038054610902906125b2565b80601f016020809104026020016040519081016040528092919081815260200182805461092e906125b2565b80156109795780601f1061095057610100808354040283529160200191610979565b820191905f5260205f20905b81548152906001019060200180831161095c57829003601f168201915b5050505050905090565b5f61098f338484611603565b5060015b92915050565b5f6109a5848484611726565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610a295760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108cf565b610a368533858403611603565b506001949350505050565b6005546001600160a01b03163314610a6b5760405162461bcd60e51b81526004016108cf90612556565b670de0b6b3a76400006103e8610a8060025490565b610a8b9060026125ea565b610a959190612601565b610a9f9190612601565b811015610b005760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b60648201526084016108cf565b610b1281670de0b6b3a76400006125ea565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161098f918590610b8490869061259f565b611603565b6005546001600160a01b03163314610bb35760405162461bcd60e51b81526004016108cf90612556565b600954305f908152602081905260409020541015610c3b576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e60648201526084016108cf565b6008805460ff19166001179055610c50611f09565b6008805460ff191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610cb95760405162461bcd60e51b81526004016108cf90612556565b60128290556013819055610ccd818361259f565b6011555050565b6005546001600160a01b03163314610cfe5760405162461bcd60e51b81526004016108cf90612556565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610d715760405162461bcd60e51b81526004016108cf90612556565b600e805460ff199081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610ddb5760405162461bcd60e51b81526004016108cf90612556565b80610e71577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610e715760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016108cf565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b606060048054610902906125b2565b6005546001600160a01b03163314610ed45760405162461bcd60e51b81526004016108cf90612556565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f7b5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108cf565b610f85828261202d565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156110415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108cf565b61104e3385858403611603565b5060019392505050565b5f61098f338484611726565b6005546001600160a01b0316331461108e5760405162461bcd60e51b81526004016108cf90612556565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146111165760405162461bcd60e51b81526004016108cf90612556565b600e54610100900460ff161561116e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016108cf565b60088111156111c95760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420736574206d6f7265207468616e20382064656164626c6f636b6044820152607360f81b60648201526084016108cf565b600e805462ffff0019166201010017905543600b81905542600c556111ef90829061259f565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6005546001600160a01b031633146112475760405162461bcd60e51b81526004016108cf90612556565b620186a061125460025490565b61125f9060016125ea565b6112699190612601565b8110156112d65760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108cf565b6103e86112e260025490565b6112ed9060016125ea565b6112f79190612601565b8111156113635760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b60648201526084016108cf565b600955565b6005546001600160a01b031633146113925760405162461bcd60e51b81526004016108cf90612556565b670de0b6b3a76400006103e86113a760025490565b6113b29060026125ea565b6113bc9190612601565b6113c69190612601565b8110156114285760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b60648201526084016108cf565b61143a81670de0b6b3a76400006125ea565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610b43565b6005546001600160a01b031633146114995760405162461bcd60e51b81526004016108cf90612556565b6010805460ff19169055565b6005546001600160a01b031633146114cf5760405162461bcd60e51b81526004016108cf90612556565b6001600160a01b0381166115345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108cf565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146115b95760405162461bcd60e51b81526004016108cf90612556565b6040515f90339047908381818185875af1925050503d805f81146115f8576040519150601f19603f3d011682016040523d82523d5f602084013e6115fd565b606091505b50505050565b6001600160a01b0383166116655760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108cf565b6001600160a01b0382166116c65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108cf565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661174c5760405162461bcd60e51b81526004016108cf90612620565b6001600160a01b0382166117725760405162461bcd60e51b81526004016108cf90612665565b5f81116117c15760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016108cf565b600e54610100900460ff16611852576001600160a01b0383165f9081526019602052604090205460ff168061180d57506001600160a01b0382165f9081526019602052604090205460ff165b6118525760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108cf565b600e5460ff1615611baf576005546001600160a01b0384811691161480159061188957506005546001600160a01b03838116911614155b801561189d57506001600160a01b03821615155b80156118b457506001600160a01b03821661dead14155b80156118d857506001600160a01b0383165f9081526019602052604090205460ff16155b80156118fc57506001600160a01b0382165f9081526019602052604090205460ff16155b15611baf5760105460ff1615611a5a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415801561198057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611a5a576119906002436126a8565b325f908152600f60205260409020541080156119cc57506119b26002436126a8565b6001600160a01b0383165f908152600f6020526040902054105b611a365760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016108cf565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f908152601b602052604090205460ff168015611a9957506001600160a01b0382165f908152601a602052604090205460ff16155b15611b0657600654811115611b015760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016108cf565b611baf565b6001600160a01b0382165f908152601b602052604090205460ff168015611b4557506001600160a01b0383165f908152601a602052604090205460ff16155b15611baf57600754811115611baf5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016108cf565b305f9081526020819052604090205460095481108015908190611bda5750600e5462010000900460ff165b8015611be9575060085460ff16155b8015611c0d57506001600160a01b0385165f908152601b602052604090205460ff16155b8015611c3157506001600160a01b0385165f9081526019602052604090205460ff16155b8015611c5557506001600160a01b0384165f9081526019602052604090205460ff16155b15611c7a576008805460ff19166001179055611c6f611f09565b6008805460ff191690555b6001600160a01b0385165f9081526019602052604090205460019060ff1680611cba57506001600160a01b0385165f9081526019602052604090205460ff165b15611cc257505f5b5f8115611ef557600d5443108015611cf157506001600160a01b0387165f908152601b602052604090205460ff165b8015611d1557506001600160a01b0386165f908152601b602052604090205460ff16155b8015611d2257505f601154115b15611da5576064611d348660636125ea565b611d3e9190612601565b905060115460135482611d5191906125ea565b611d5b9190612601565b60185f828254611d6b919061259f565b9091555050601154601254611d8090836125ea565b611d8a9190612601565b60175f828254611d9a919061259f565b90915550611ed79050565b6001600160a01b0386165f908152601b602052604090205460ff168015611dcd57505f601454115b15611e2e57606460145486611de291906125ea565b611dec9190612601565b905060145460165482611dff91906125ea565b611e099190612601565b60185f828254611e19919061259f565b9091555050601454601554611d8090836125ea565b6001600160a01b0387165f908152601b602052604090205460ff168015611e5657505f601154115b15611ed757606460115486611e6b91906125ea565b611e759190612601565b905060115460135482611e8891906125ea565b611e929190612601565b60185f828254611ea2919061259f565b9091555050601154601254611eb790836125ea565b611ec19190612601565b60175f828254611ed1919061259f565b90915550505b8015611ee857611ee887308361205a565b611ef281866126a8565b94505b611f0087878761205a565b50505050505050565b5f601854118015611f2a5750601854305f9081526020819052604090205410155b15611fcb57611f5c307f000000000000000000000000000000000000000000000000000000000000000060185461205a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611fb4575f80fd5b505af1158015611fc6573d5f803e3d5ffd5b505050505b5f60188190553081526020819052604081205490819003611fe95750565b600954611ff79060146125ea565b81111561200f5760095461200c9060146125ea565b90505b612018816121ad565b305f9081526020819052604090205460175550565b6001600160a01b0382165f908152601b60205260409020805460ff1916821515179055610f85828261236a565b6001600160a01b0383166120805760405162461bcd60e51b81526004016108cf90612620565b6001600160a01b0382166120a65760405162461bcd60e51b81526004016108cf90612665565b6001600160a01b0383165f908152602081905260409020548181101561211d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108cf565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061215390849061259f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161219f91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106121e0576121e06126bb565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561225c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228091906126cf565b81600181518110612293576122936126bb565b60200260200101906001600160a01b031690816001600160a01b0316815250506122de307f000000000000000000000000000000000000000000000000000000000000000084611603565b600a5460405163791ac94760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263791ac947926123399287925f928892919091169042906004016126ea565b5f604051808303815f87803b158015612350575f80fd5b505af1158015612362573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b5f80604083850312156123dd575f80fd5b50508035926020909101359150565b5f6020808352835180828501525f5b81811015612417578581018301518582016040015282016123fb565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461244b575f80fd5b50565b5f806040838503121561245f575f80fd5b823561246a81612437565b946020939093013593505050565b5f60208284031215612488575f80fd5b813561249381612437565b9392505050565b5f805f606084860312156124ac575f80fd5b83356124b781612437565b925060208401356124c781612437565b929592945050506040919091013590565b5f602082840312156124e8575f80fd5b5035919050565b5f8060408385031215612500575f80fd5b823561250b81612437565b91506020830135801515811461251f575f80fd5b809150509250929050565b5f806040838503121561253b575f80fd5b823561254681612437565b9150602083013561251f81612437565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109935761099361258b565b600181811c908216806125c657607f821691505b6020821081036125e457634e487b7160e01b5f52602260045260245ffd5b50919050565b80820281158282048414176109935761099361258b565b5f8261261b57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109935761099361258b565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156126df575f80fd5b815161249381612437565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156127385784516001600160a01b031683529383019391830191600101612713565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220b2a8e140af296e38f36c7d6d182a90fe52a29ea24bb69ad9c97df2381a6c114864736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102c2575f3560e01c806388e765ff1161016f578063d1633649116100d8578063e884f26011610092578063f2fde38b1161006d578063f2fde38b14610848578063f5648a4f14610867578063f63743421461087b578063fb002c9714610890575f80fd5b8063e884f2601461080a578063ee40166e1461081e578063f11a24d314610833575f80fd5b8063d16336491461073f578063d257b34f1461075e578063d85ba0631461077d578063dc3f0d0f14610792578063dd62ed3e146107b1578063e2f45605146107f5575f80fd5b8063a62068ce11610129578063a62068ce14610687578063a9059cbb1461069c578063b62496f5146106bb578063bbc0c742146106e9578063c024666814610707578063c876d0b914610726575f80fd5b806388e765ff146105ee57806389c9e320146106035780638da5cb5b1461061857806395d89b41146106355780639a7a23d614610649578063a457c2d714610668575f80fd5b80634a62bb651161022b57806366d602ae116101e557806370a08231116101c057806370a0823114610573578063715018a6146105a7578063751039fc146105bb5780637571336a146105cf575f80fd5b806366d602ae1461052a5780636a486a8e1461053f5780636ddd171314610554575f80fd5b80634a62bb651461049e5780634f77f6c0146104b757806351f205e4146104cc57806358a6d531146104e05780635a139dd4146104f657806366ca9b831461050b575f80fd5b80631a8145bb1161027c5780631a8145bb146103de57806323b872dd146103f35780632be32b6114610412578063313ce56714610431578063395093511461044c578063452ed4f11461046b575f80fd5b806302dbd8f8146102cd57806306fdde03146102ee5780630758d92414610318578063095ea7b31461036357806310d5de531461039257806318160ddd146103c0575f80fd5b366102c957005b5f80fd5b3480156102d8575f80fd5b506102ec6102e73660046123cc565b6108a5565b005b3480156102f9575f80fd5b506103026108f3565b60405161030f91906123ec565b60405180910390f35b348015610323575f80fd5b5061034b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161030f565b34801561036e575f80fd5b5061038261037d36600461244e565b610983565b604051901515815260200161030f565b34801561039d575f80fd5b506103826103ac366004612478565b601a6020525f908152604090205460ff1681565b3480156103cb575f80fd5b506002545b60405190815260200161030f565b3480156103e9575f80fd5b506103d060185481565b3480156103fe575f80fd5b5061038261040d36600461249a565b610999565b34801561041d575f80fd5b506102ec61042c3660046124d8565b610a41565b34801561043c575f80fd5b506040516012815260200161030f565b348015610457575f80fd5b5061038261046636600461244e565b610b4e565b348015610476575f80fd5b5061034b7f000000000000000000000000c0d98b2b70132f6eb2d5e6f8750e5c221e77d57981565b3480156104a9575f80fd5b50600e546103829060ff1681565b3480156104c2575f80fd5b506103d060155481565b3480156104d7575f80fd5b506102ec610b89565b3480156104eb575f80fd5b50600d544310610382565b348015610501575f80fd5b506103d060125481565b348015610516575f80fd5b506102ec6105253660046123cc565b610c8f565b348015610535575f80fd5b506103d060075481565b34801561054a575f80fd5b506103d060145481565b34801561055f575f80fd5b50600e546103829062010000900460ff1681565b34801561057e575f80fd5b506103d061058d366004612478565b6001600160a01b03165f9081526020819052604090205490565b3480156105b2575f80fd5b506102ec610cd4565b3480156105c6575f80fd5b506102ec610d47565b3480156105da575f80fd5b506102ec6105e93660046124ef565b610db1565b3480156105f9575f80fd5b506103d060065481565b34801561060e575f80fd5b506103d0600c5481565b348015610623575f80fd5b506005546001600160a01b031661034b565b348015610640575f80fd5b50610302610e9b565b348015610654575f80fd5b506102ec6106633660046124ef565b610eaa565b348015610673575f80fd5b5061038261068236600461244e565b610fc0565b348015610692575f80fd5b506103d0600d5481565b3480156106a7575f80fd5b506103826106b636600461244e565b611058565b3480156106c6575f80fd5b506103826106d5366004612478565b601b6020525f908152604090205460ff1681565b3480156106f4575f80fd5b50600e5461038290610100900460ff1681565b348015610712575f80fd5b506102ec6107213660046124ef565b611064565b348015610731575f80fd5b506010546103829060ff1681565b34801561074a575f80fd5b506102ec6107593660046124d8565b6110ec565b348015610769575f80fd5b506102ec6107783660046124d8565b61121d565b348015610788575f80fd5b506103d060115481565b34801561079d575f80fd5b506102ec6107ac3660046124d8565b611368565b3480156107bc575f80fd5b506103d06107cb36600461252a565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610800575f80fd5b506103d060095481565b348015610815575f80fd5b506102ec61146f565b348015610829575f80fd5b506103d0600b5481565b34801561083e575f80fd5b506103d060135481565b348015610853575f80fd5b506102ec610862366004612478565b6114a5565b348015610872575f80fd5b506102ec61158f565b348015610886575f80fd5b506103d060165481565b34801561089b575f80fd5b506103d060175481565b6005546001600160a01b031633146108d85760405162461bcd60e51b81526004016108cf90612556565b60405180910390fd5b601582905560168190556108ec818361259f565b6014555050565b606060038054610902906125b2565b80601f016020809104026020016040519081016040528092919081815260200182805461092e906125b2565b80156109795780601f1061095057610100808354040283529160200191610979565b820191905f5260205f20905b81548152906001019060200180831161095c57829003601f168201915b5050505050905090565b5f61098f338484611603565b5060015b92915050565b5f6109a5848484611726565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610a295760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108cf565b610a368533858403611603565b506001949350505050565b6005546001600160a01b03163314610a6b5760405162461bcd60e51b81526004016108cf90612556565b670de0b6b3a76400006103e8610a8060025490565b610a8b9060026125ea565b610a959190612601565b610a9f9190612601565b811015610b005760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b60648201526084016108cf565b610b1281670de0b6b3a76400006125ea565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161098f918590610b8490869061259f565b611603565b6005546001600160a01b03163314610bb35760405162461bcd60e51b81526004016108cf90612556565b600954305f908152602081905260409020541015610c3b576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e60648201526084016108cf565b6008805460ff19166001179055610c50611f09565b6008805460ff191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610cb95760405162461bcd60e51b81526004016108cf90612556565b60128290556013819055610ccd818361259f565b6011555050565b6005546001600160a01b03163314610cfe5760405162461bcd60e51b81526004016108cf90612556565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610d715760405162461bcd60e51b81526004016108cf90612556565b600e805460ff199081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610ddb5760405162461bcd60e51b81526004016108cf90612556565b80610e71577f000000000000000000000000c0d98b2b70132f6eb2d5e6f8750e5c221e77d5796001600160a01b0316826001600160a01b031603610e715760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016108cf565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b606060048054610902906125b2565b6005546001600160a01b03163314610ed45760405162461bcd60e51b81526004016108cf90612556565b7f000000000000000000000000c0d98b2b70132f6eb2d5e6f8750e5c221e77d5796001600160a01b0316826001600160a01b031603610f7b5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108cf565b610f85828261202d565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156110415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108cf565b61104e3385858403611603565b5060019392505050565b5f61098f338484611726565b6005546001600160a01b0316331461108e5760405162461bcd60e51b81526004016108cf90612556565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146111165760405162461bcd60e51b81526004016108cf90612556565b600e54610100900460ff161561116e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016108cf565b60088111156111c95760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420736574206d6f7265207468616e20382064656164626c6f636b6044820152607360f81b60648201526084016108cf565b600e805462ffff0019166201010017905543600b81905542600c556111ef90829061259f565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6005546001600160a01b031633146112475760405162461bcd60e51b81526004016108cf90612556565b620186a061125460025490565b61125f9060016125ea565b6112699190612601565b8110156112d65760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108cf565b6103e86112e260025490565b6112ed9060016125ea565b6112f79190612601565b8111156113635760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b60648201526084016108cf565b600955565b6005546001600160a01b031633146113925760405162461bcd60e51b81526004016108cf90612556565b670de0b6b3a76400006103e86113a760025490565b6113b29060026125ea565b6113bc9190612601565b6113c69190612601565b8110156114285760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b60648201526084016108cf565b61143a81670de0b6b3a76400006125ea565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610b43565b6005546001600160a01b031633146114995760405162461bcd60e51b81526004016108cf90612556565b6010805460ff19169055565b6005546001600160a01b031633146114cf5760405162461bcd60e51b81526004016108cf90612556565b6001600160a01b0381166115345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108cf565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146115b95760405162461bcd60e51b81526004016108cf90612556565b6040515f90339047908381818185875af1925050503d805f81146115f8576040519150601f19603f3d011682016040523d82523d5f602084013e6115fd565b606091505b50505050565b6001600160a01b0383166116655760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108cf565b6001600160a01b0382166116c65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108cf565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661174c5760405162461bcd60e51b81526004016108cf90612620565b6001600160a01b0382166117725760405162461bcd60e51b81526004016108cf90612665565b5f81116117c15760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016108cf565b600e54610100900460ff16611852576001600160a01b0383165f9081526019602052604090205460ff168061180d57506001600160a01b0382165f9081526019602052604090205460ff165b6118525760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108cf565b600e5460ff1615611baf576005546001600160a01b0384811691161480159061188957506005546001600160a01b03838116911614155b801561189d57506001600160a01b03821615155b80156118b457506001600160a01b03821661dead14155b80156118d857506001600160a01b0383165f9081526019602052604090205460ff16155b80156118fc57506001600160a01b0382165f9081526019602052604090205460ff16155b15611baf5760105460ff1615611a5a577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b03161415801561198057507f000000000000000000000000c0d98b2b70132f6eb2d5e6f8750e5c221e77d5796001600160a01b0316826001600160a01b031614155b15611a5a576119906002436126a8565b325f908152600f60205260409020541080156119cc57506119b26002436126a8565b6001600160a01b0383165f908152600f6020526040902054105b611a365760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016108cf565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f908152601b602052604090205460ff168015611a9957506001600160a01b0382165f908152601a602052604090205460ff16155b15611b0657600654811115611b015760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016108cf565b611baf565b6001600160a01b0382165f908152601b602052604090205460ff168015611b4557506001600160a01b0383165f908152601a602052604090205460ff16155b15611baf57600754811115611baf5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016108cf565b305f9081526020819052604090205460095481108015908190611bda5750600e5462010000900460ff165b8015611be9575060085460ff16155b8015611c0d57506001600160a01b0385165f908152601b602052604090205460ff16155b8015611c3157506001600160a01b0385165f9081526019602052604090205460ff16155b8015611c5557506001600160a01b0384165f9081526019602052604090205460ff16155b15611c7a576008805460ff19166001179055611c6f611f09565b6008805460ff191690555b6001600160a01b0385165f9081526019602052604090205460019060ff1680611cba57506001600160a01b0385165f9081526019602052604090205460ff165b15611cc257505f5b5f8115611ef557600d5443108015611cf157506001600160a01b0387165f908152601b602052604090205460ff165b8015611d1557506001600160a01b0386165f908152601b602052604090205460ff16155b8015611d2257505f601154115b15611da5576064611d348660636125ea565b611d3e9190612601565b905060115460135482611d5191906125ea565b611d5b9190612601565b60185f828254611d6b919061259f565b9091555050601154601254611d8090836125ea565b611d8a9190612601565b60175f828254611d9a919061259f565b90915550611ed79050565b6001600160a01b0386165f908152601b602052604090205460ff168015611dcd57505f601454115b15611e2e57606460145486611de291906125ea565b611dec9190612601565b905060145460165482611dff91906125ea565b611e099190612601565b60185f828254611e19919061259f565b9091555050601454601554611d8090836125ea565b6001600160a01b0387165f908152601b602052604090205460ff168015611e5657505f601154115b15611ed757606460115486611e6b91906125ea565b611e759190612601565b905060115460135482611e8891906125ea565b611e929190612601565b60185f828254611ea2919061259f565b9091555050601154601254611eb790836125ea565b611ec19190612601565b60175f828254611ed1919061259f565b90915550505b8015611ee857611ee887308361205a565b611ef281866126a8565b94505b611f0087878761205a565b50505050505050565b5f601854118015611f2a5750601854305f9081526020819052604090205410155b15611fcb57611f5c307f000000000000000000000000c0d98b2b70132f6eb2d5e6f8750e5c221e77d57960185461205a565b7f000000000000000000000000c0d98b2b70132f6eb2d5e6f8750e5c221e77d5796001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611fb4575f80fd5b505af1158015611fc6573d5f803e3d5ffd5b505050505b5f60188190553081526020819052604081205490819003611fe95750565b600954611ff79060146125ea565b81111561200f5760095461200c9060146125ea565b90505b612018816121ad565b305f9081526020819052604090205460175550565b6001600160a01b0382165f908152601b60205260409020805460ff1916821515179055610f85828261236a565b6001600160a01b0383166120805760405162461bcd60e51b81526004016108cf90612620565b6001600160a01b0382166120a65760405162461bcd60e51b81526004016108cf90612665565b6001600160a01b0383165f908152602081905260409020548181101561211d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108cf565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061215390849061259f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161219f91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106121e0576121e06126bb565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561225c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228091906126cf565b81600181518110612293576122936126bb565b60200260200101906001600160a01b031690816001600160a01b0316815250506122de307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611603565b600a5460405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169263791ac947926123399287925f928892919091169042906004016126ea565b5f604051808303815f87803b158015612350575f80fd5b505af1158015612362573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b5f80604083850312156123dd575f80fd5b50508035926020909101359150565b5f6020808352835180828501525f5b81811015612417578581018301518582016040015282016123fb565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461244b575f80fd5b50565b5f806040838503121561245f575f80fd5b823561246a81612437565b946020939093013593505050565b5f60208284031215612488575f80fd5b813561249381612437565b9392505050565b5f805f606084860312156124ac575f80fd5b83356124b781612437565b925060208401356124c781612437565b929592945050506040919091013590565b5f602082840312156124e8575f80fd5b5035919050565b5f8060408385031215612500575f80fd5b823561250b81612437565b91506020830135801515811461251f575f80fd5b809150509250929050565b5f806040838503121561253b575f80fd5b823561254681612437565b9150602083013561251f81612437565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109935761099361258b565b600181811c908216806125c657607f821691505b6020821081036125e457634e487b7160e01b5f52602260045260245ffd5b50919050565b80820281158282048414176109935761099361258b565b5f8261261b57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109935761099361258b565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156126df575f80fd5b815161249381612437565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156127385784516001600160a01b031683529383019391830191600101612713565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220b2a8e140af296e38f36c7d6d182a90fe52a29ea24bb69ad9c97df2381a6c114864736f6c63430008150033

Deployed Bytecode Sourcemap

355:13768:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7420:249;;;;;;;;;;-1:-1:-1;7420:249:8;;;;;:::i;:::-;;:::i;:::-;;563:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;472:37:8;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1002:32:9;;;984:51;;972:2;957:18;472:37:8;820:221:9;1477:169:1;;;;;;;;;;-1:-1:-1;1477:169:1;;;;;:::i;:::-;;:::i;:::-;;;1667:14:9;;1660:22;1642:41;;1630:2;1615:18;1477:169:1;1502:187:9;1575:64:8;;;;;;;;;;-1:-1:-1;1575:64:8;;;;;:::i;:::-;;;;;;;;;;;;;;;;884:108:1;;;;;;;;;;-1:-1:-1;972:12:1;;884:108;;;2092:25:9;;;2080:2;2065:18;884:108:1;1946:177:9;1392:33:8;;;;;;;;;;;;;;;;1654:492:1;;;;;;;;;;-1:-1:-1;1654:492:1;;;;;:::i;:::-;;:::i;5160:269:8:-;;;;;;;;;;-1:-1:-1;5160:269:8;;;;;:::i;:::-;;:::i;783:93:1:-;;;;;;;;;;-1:-1:-1;783:93:1;;866:2;2916:36:9;;2904:2;2889:18;783:93:1;2774:184:9;2154:215:1;;;;;;;;;;-1:-1:-1;2154:215:1;;;;;:::i;:::-;;:::i;516:31:8:-;;;;;;;;;;;;;;;779:33;;;;;;;;;;-1:-1:-1;779:33:8;;;;;;;;1272:32;;;;;;;;;;;;;;;;13808:312;;;;;;;;;;;;;:::i;11660:120::-;;;;;;;;;;-1:-1:-1;11754:18:8;;11739:12;:33;11660:120;;1160:31;;;;;;;;;;;;;;;;7169:243;;;;;;;;;;-1:-1:-1;7169:243:8;;;;;:::i;:::-;;:::i;435:28::-;;;;;;;;;;;;;;;;1237;;;;;;;;;;;;;;;;859:31;;;;;;;;;;-1:-1:-1;859:31:8;;;;;;;;;;;1000:127:1;;;;;;;;;;-1:-1:-1;1000:127:1;;;;;:::i;:::-;-1:-1:-1;;;;;1101:18:1;1074:7;1101:18;;;;;;;;;;;;1000:127;637:150:7;;;;;;;;;;;;;:::i;4835:154:8:-;;;;;;;;;;;;;:::i;6350:260::-;;;;;;;;;;-1:-1:-1;6350:260:8;;;;;:::i;:::-;;:::i;401:27::-;;;;;;;;;;;;;;;;700:30;;;;;;;;;;;;;;;;423:79:7;;;;;;;;;;-1:-1:-1;488:6:7;;-1:-1:-1;;;;;488:6:7;423:79;;671:104:1;;;;;;;;;;;;;:::i;6618:295:8:-;;;;;;;;;;-1:-1:-1;6618:295:8;;;;;:::i;:::-;;:::i;2377:413:1:-;;;;;;;;;;-1:-1:-1;2377:413:1;;;;;:::i;:::-;;:::i;737:33:8:-;;;;;;;;;;;;;;;;1135:175:1;;;;;;;;;;-1:-1:-1;1135:175:1;;;;;:::i;:::-;;:::i;1797:58:8:-;;;;;;;;;;-1:-1:-1;1797:58:8;;;;;:::i;:::-;;;;;;;;;;;;;;;;819:33;;;;;;;;;;-1:-1:-1;819:33:8;;;;;;;;;;;7677:182;;;;;;;;;;-1:-1:-1;7677:182:8;;;;;:::i;:::-;;:::i;1078:39::-;;;;;;;;;;-1:-1:-1;1078:39:8;;;;;;;;4339:444;;;;;;;;;;-1:-1:-1;4339:444:8;;;;;:::i;:::-;;:::i;5781:346::-;;;;;;;;;;-1:-1:-1;5781:346:8;;;;;:::i;:::-;;:::i;1126:27::-;;;;;;;;;;;;;;;;5437:274;;;;;;;;;;-1:-1:-1;5437:274:8;;;;;:::i;:::-;;:::i;1318:151:1:-;;;;;;;;;;-1:-1:-1;1318:151:1;;;;;:::i;:::-;-1:-1:-1;;;;;1434:18:1;;;1407:7;1434:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;1318:151;584:33:8;;;;;;;;;;;;;;;;5050:98;;;;;;;;;;;;;:::i;660:33::-;;;;;;;;;;;;;;;;1198:30;;;;;;;;;;;;;;;;795:244:7;;;;;;;;;;-1:-1:-1;795:244:7;;;;;:::i;:::-;;:::i;13596:160:8:-;;;;;;;;;;;;;:::i;1311:31::-;;;;;;;;;;;;;;;;1351:34;;;;;;;;;;;;;;;;7420:249;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;;;;;;;;;7521:17:8::1;:34:::0;;;7566:16:::1;:32:::0;;;7625:36:::1;7585:13:::0;7541:14;7625:36:::1;:::i;:::-;7609:13;:52:::0;-1:-1:-1;;7420:249:8:o;563:100:1:-;617:13;650:5;643:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;563:100;:::o;1477:169::-;1560:4;1577:39;189:10:0;1600:7:1;1609:6;1577:8;:39::i;:::-;-1:-1:-1;1634:4:1;1477:169;;;;;:::o;1654:492::-;1794:4;1811:36;1821:6;1829:9;1840:6;1811:9;:36::i;:::-;-1:-1:-1;;;;;1887:19:1;;1860:24;1887:19;;;:11;:19;;;;;;;;189:10:0;1887:33:1;;;;;;;;1939:26;;;;1931:79;;;;-1:-1:-1;;;1931:79:1;;5195:2:9;1931:79:1;;;5177:21:9;5234:2;5214:18;;;5207:30;5273:34;5253:18;;;5246:62;-1:-1:-1;;;5324:18:9;;;5317:38;5372:19;;1931:79:1;4993:404:9;1931:79:1;2046:57;2055:6;189:10:0;2096:6:1;2077:16;:25;2046:8;:57::i;:::-;-1:-1:-1;2134:4:1;;1654:492;-1:-1:-1;;;;1654:492:1:o;5160:269:8:-;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;5279:4:8::1;5273;5253:13;972:12:1::0;;;884:108;5253:13:8::1;:17;::::0;5269:1:::1;5253:17;:::i;:::-;:24;;;;:::i;:::-;5252:31;;;;:::i;:::-;5242:6;:41;;5234:95;;;::::0;-1:-1:-1;;;5234:95:8;;5999:2:9;5234:95:8::1;::::0;::::1;5981:21:9::0;6038:2;6018:18;;;6011:30;6077:34;6057:18;;;6050:62;-1:-1:-1;;;6128:18:9;;;6121:39;6177:19;;5234:95:8::1;5797:405:9::0;5234:95:8::1;5355:17;:6:::0;5365::::1;5355:17;:::i;:::-;5340:12;:32:::0;;;5388:33:::1;::::0;2092:25:9;;;5388:33:8::1;::::0;2080:2:9;2065:18;5388:33:8::1;;;;;;;;5160:269:::0;:::o;2154:215:1:-;189:10:0;2242:4:1;2291:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;2291:34:1;;;;;;;;;;2242:4;;2259:80;;2282:7;;2291:47;;2328:10;;2291:47;:::i;:::-;2259:8;:80::i;13808:312:8:-;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;13899:18:8::1;::::0;13889:4:::1;1074:7:1::0;1101:18;;;;;;;;;;;13871:46:8::1;;13863:123;;;::::0;;-1:-1:-1;;;13863:123:8;;6409:2:9;13863:123:8::1;::::0;::::1;6391:21:9::0;6428:18;;;6421:30;;;;6487:34;6467:18;;;6460:62;6558:34;6538:18;;;6531:62;6610:19;;13863:123:8::1;6207:428:9::0;13863:123:8::1;13997:8;:15:::0;;-1:-1:-1;;13997:15:8::1;14008:4;13997:15;::::0;;14023:10:::1;:8;:10::i;:::-;14044:8;:16:::0;;-1:-1:-1;;14044:16:8::1;::::0;;14076:36:::1;::::0;14096:15:::1;2092:25:9::0;;14076:36:8::1;::::0;2080:2:9;2065:18;14076:36:8::1;;;;;;;13808:312::o:0;7169:243::-;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;7269:16:8::1;:33:::0;;;7313:15:::1;:31:::0;;;7370:34:::1;7331:13:::0;7288:14;7370:34:::1;:::i;:::-;7355:12;:49:::0;-1:-1:-1;;7169:243:8:o;637:150:7:-;550:6;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;730:6:::1;::::0;709:40:::1;::::0;746:1:::1;::::0;-1:-1:-1;;;;;730:6:7::1;::::0;709:40:::1;::::0;746:1;;709:40:::1;760:6;:19:::0;;-1:-1:-1;;;;;;760:19:7::1;::::0;;637:150::o;4835:154:8:-;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;4889:14:8::1;:22:::0;;-1:-1:-1;;4889:22:8;;::::1;::::0;;;4922:20:::1;:28:::0;;;;::::1;::::0;;4966:15:::1;::::0;::::1;::::0;4906:5:::1;::::0;4966:15:::1;4835:154::o:0;6350:260::-;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;6446:4:8::1;6442:104;;6484:6;-1:-1:-1::0;;;;;6474:16:8::1;:6;-1:-1:-1::0;;;;;6474:16:8::1;::::0;6466:68:::1;;;::::0;-1:-1:-1;;;6466:68:8;;6842:2:9;6466:68:8::1;::::0;::::1;6824:21:9::0;6881:2;6861:18;;;6854:30;6920:34;6900:18;;;6893:62;-1:-1:-1;;;6971:18:9;;;6964:37;7018:19;;6466:68:8::1;6640:403:9::0;6466:68:8::1;-1:-1:-1::0;;;;;6556:39:8;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;6556:46:8::1;::::0;::::1;;::::0;;;::::1;::::0;;6350:260::o;671:104:1:-;727:13;760:7;753:14;;;;;:::i;6618:295:8:-;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;6727:6:8::1;-1:-1:-1::0;;;;;6719:14:8::1;:4;-1:-1:-1::0;;;;;6719:14:8::1;::::0;6711:84:::1;;;::::0;-1:-1:-1;;;6711:84:8;;7250:2:9;6711:84:8::1;::::0;::::1;7232:21:9::0;7289:2;7269:18;;;7262:30;7328:34;7308:18;;;7301:62;7399:27;7379:18;;;7372:55;7444:19;;6711:84:8::1;7048:421:9::0;6711:84:8::1;6808:41;6837:4;6843:5;6808:28;:41::i;:::-;6865:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;6865:40:8;::::1;::::0;::::1;::::0;;;::::1;6618:295:::0;;:::o;2377:413:1:-;189:10:0;2470:4:1;2514:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;2514:34:1;;;;;;;;;;2567:35;;;;2559:85;;;;-1:-1:-1;;;2559:85:1;;7676:2:9;2559:85:1;;;7658:21:9;7715:2;7695:18;;;7688:30;7754:34;7734:18;;;7727:62;-1:-1:-1;;;7805:18:9;;;7798:35;7850:19;;2559:85:1;7474:401:9;2559:85:1;2680:67;189:10:0;2703:7:1;2731:15;2712:16;:34;2680:8;:67::i;:::-;-1:-1:-1;2778:4:1;;2377:413;-1:-1:-1;;;2377:413:1:o;1135:175::-;1221:4;1238:42;189:10:0;1262:9:1;1273:6;1238:9;:42::i;7677:182:8:-;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;-1:-1:-1;;;;;7762:28:8;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;7762:39:8::1;::::0;::::1;;::::0;;::::1;::::0;;;7817:34;;1642:41:9;;;7817:34:8::1;::::0;1615:18:9;7817:34:8::1;;;;;;;7677:182:::0;;:::o;4339:444::-;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;4419:13:8::1;::::0;::::1;::::0;::::1;;;4418:14;4410:50;;;::::0;-1:-1:-1;;;4410:50:8;;8082:2:9;4410:50:8::1;::::0;::::1;8064:21:9::0;8121:2;8101:18;;;8094:30;8160:25;8140:18;;;8133:53;8203:18;;4410:50:8::1;7880:347:9::0;4410:50:8::1;4493:1;4479:10;:15;;4471:61;;;::::0;-1:-1:-1;;;4471:61:8;;8434:2:9;4471:61:8::1;::::0;::::1;8416:21:9::0;8473:2;8453:18;;;8446:30;8512:34;8492:18;;;8485:62;-1:-1:-1;;;8563:18:9;;;8556:31;8604:19;;4471:61:8::1;8232:397:9::0;4471:61:8::1;4543:13;:20:::0;;-1:-1:-1;;4574:18:8;;;;;4624:12:::1;4603:18;:33:::0;;;4665:15:::1;4647;:33:::0;4712:31:::1;::::0;4733:10;;4712:31:::1;:::i;:::-;4691:18;:52:::0;4759:16:::1;::::0;::::1;::::0;;;::::1;4339:444:::0;:::o;5781:346::-;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;5904:6:8::1;5884:13;972:12:1::0;;;884:108;5884:13:8::1;:17;::::0;5900:1:::1;5884:17;:::i;:::-;:26;;;;:::i;:::-;5871:9;:39;;5863:105;;;::::0;-1:-1:-1;;;5863:105:8;;8836:2:9;5863:105:8::1;::::0;::::1;8818:21:9::0;8875:2;8855:18;;;8848:30;8914:34;8894:18;;;8887:62;-1:-1:-1;;;8965:18:9;;;8958:51;9026:19;;5863:105:8::1;8634:417:9::0;5863:105:8::1;6019:4;5999:13;972:12:1::0;;;884:108;5999:13:8::1;:17;::::0;6015:1:::1;5999:17;:::i;:::-;:24;;;;:::i;:::-;5986:9;:37;;5978:102;;;::::0;-1:-1:-1;;;5978:102:8;;9258:2:9;5978:102:8::1;::::0;::::1;9240:21:9::0;9297:2;9277:18;;;9270:30;9336:34;9316:18;;;9309:62;-1:-1:-1;;;9387:18:9;;;9380:50;9447:19;;5978:102:8::1;9056:416:9::0;5978:102:8::1;6090:18;:30:::0;5781:346::o;5437:274::-;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;5557:4:8::1;5551;5531:13;972:12:1::0;;;884:108;5531:13:8::1;:17;::::0;5547:1:::1;5531:17;:::i;:::-;:24;;;;:::i;:::-;5530:31;;;;:::i;:::-;5520:6;:41;;5512:96;;;::::0;-1:-1:-1;;;5512:96:8;;9679:2:9;5512:96:8::1;::::0;::::1;9661:21:9::0;9718:2;9698:18;;;9691:30;9757:34;9737:18;;;9730:62;-1:-1:-1;;;9808:18:9;;;9801:40;9858:19;;5512:96:8::1;9477:406:9::0;5512:96:8::1;5635:17;:6:::0;5645::::1;5635:17;:::i;:::-;5619:13;:33:::0;;;5668:35:::1;::::0;2092:25:9;;;5668:35:8::1;::::0;2080:2:9;2065:18;5668:35:8::1;1946:177:9::0;5050:98:8;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;5112:20:8::1;:28:::0;;-1:-1:-1;;5112:28:8::1;::::0;;5050:98::o;795:244:7:-;550:6;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;-1:-1:-1;;;;;884:22:7;::::1;876:73;;;::::0;-1:-1:-1;;;876:73:7;;10090:2:9;876:73:7::1;::::0;::::1;10072:21:9::0;10129:2;10109:18;;;10102:30;10168:34;10148:18;;;10141:62;-1:-1:-1;;;10219:18:9;;;10212:36;10265:19;;876:73:7::1;9888:402:9::0;876:73:7::1;986:6;::::0;965:38:::1;::::0;-1:-1:-1;;;;;965:38:7;;::::1;::::0;986:6:::1;::::0;965:38:::1;::::0;986:6:::1;::::0;965:38:::1;1014:6;:17:::0;;-1:-1:-1;;;;;;1014:17:7::1;-1:-1:-1::0;;;;;1014:17:7;;;::::1;::::0;;;::::1;::::0;;795:244::o;13596:160:8:-;550:6:7;;-1:-1:-1;;;;;550:6:7;189:10:0;550:22:7;542:67;;;;-1:-1:-1;;;542:67:7;;;;;;;:::i;:::-;13690:58:8::1;::::0;13654:12:::1;::::0;13698:10:::1;::::0;13722:21:::1;::::0;13654:12;13690:58;13654:12;13690:58;13722:21;13698:10;13690:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;13596:160:8:o;4277:380:1:-;-1:-1:-1;;;;;4413:19:1;;4405:68;;;;-1:-1:-1;;;4405:68:1;;10707:2:9;4405:68:1;;;10689:21:9;10746:2;10726:18;;;10719:30;10785:34;10765:18;;;10758:62;-1:-1:-1;;;10836:18:9;;;10829:34;10880:19;;4405:68:1;10505:400:9;4405:68:1;-1:-1:-1;;;;;4492:21:1;;4484:68;;;;-1:-1:-1;;;4484:68:1;;11112:2:9;4484:68:1;;;11094:21:9;11151:2;11131:18;;;11124:30;11190:34;11170:18;;;11163:62;-1:-1:-1;;;11241:18:9;;;11234:32;11283:19;;4484:68:1;10910:398:9;4484:68:1;-1:-1:-1;;;;;4565:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;4617:32;;2092:25:9;;;4617:32:1;;2065:18:9;4617:32:1;;;;;;;4277:380;;;:::o;7867:3785:8:-;-1:-1:-1;;;;;7967:18:8;;7959:68;;;;-1:-1:-1;;;7959:68:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;8046:16:8;;8038:64;;;;-1:-1:-1;;;8038:64:8;;;;;;;:::i;:::-;8130:1;8121:6;:10;8113:52;;;;-1:-1:-1;;;8113:52:8;;12325:2:9;8113:52:8;;;12307:21:9;12364:2;12344:18;;;12337:30;12403:31;12383:18;;;12376:59;12452:18;;8113:52:8;12123:353:9;8113:52:8;8182:13;;;;;;;8178:132;;-1:-1:-1;;;;;8219:25:8;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;8248:23:8;;;;;;:19;:23;;;;;;;;8219:52;8211:87;;;;-1:-1:-1;;;8211:87:8;;12683:2:9;8211:87:8;;;12665:21:9;12722:2;12702:18;;;12695:30;-1:-1:-1;;;12741:18:9;;;12734:52;12803:18;;8211:87:8;12481:346:9;8211:87:8;8325:14;;;;8322:1359;;;488:6:7;;-1:-1:-1;;;;;8359:15:8;;;488:6:7;;8359:15:8;;;;:32;;-1:-1:-1;488:6:7;;-1:-1:-1;;;;;8378:13:8;;;488:6:7;;8378:13:8;;8359:32;:52;;;;-1:-1:-1;;;;;;8395:16:8;;;;8359:52;:77;;;;-1:-1:-1;;;;;;8415:21:8;;8429:6;8415:21;;8359:77;:107;;;;-1:-1:-1;;;;;;8441:25:8;;;;;;:19;:25;;;;;;;;8440:26;8359:107;:135;;;;-1:-1:-1;;;;;;8471:23:8;;;;;;:19;:23;;;;;;;;8470:24;8359:135;8355:1315;;;8652:20;;;;8648:506;;;8714:9;-1:-1:-1;;;;;8700:24:8;:2;-1:-1:-1;;;;;8700:24:8;;;:49;;;;;8742:6;-1:-1:-1;;;;;8728:21:8;:2;-1:-1:-1;;;;;8728:21:8;;;8700:49;8696:439;;;8827:16;8842:1;8827:12;:16;:::i;:::-;8814:9;8785:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;8882:16:8;8897:1;8882:12;:16;:::i;:::-;-1:-1:-1;;;;;8847:32:8;;;;;;:28;:32;;;;;;:51;8785:113;8777:179;;;;-1:-1:-1;;;8777:179:8;;13167:2:9;8777:179:8;;;13149:21:9;13206:2;13186:18;;;13179:30;13245:34;13225:18;;;13218:62;-1:-1:-1;;;13296:18:9;;;13289:51;13357:19;;8777:179:8;12965:417:9;8777:179:8;9012:9;8983:39;;;;:28;:39;;;;;;9025:12;8983:54;;;;-1:-1:-1;;;;;9064:32:8;;;;;;:47;8696:439;-1:-1:-1;;;;;9206:31:8;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;9242:35:8;;;;;;:31;:35;;;;;;;;9241:36;9206:71;9202:453;;;9324:12;;9314:6;:22;;9306:75;;;;-1:-1:-1;;;9306:75:8;;13589:2:9;9306:75:8;;;13571:21:9;13628:2;13608:18;;;13601:30;13667:34;13647:18;;;13640:62;-1:-1:-1;;;13718:18:9;;;13711:38;13766:19;;9306:75:8;13387:404:9;9306:75:8;9202:453;;;-1:-1:-1;;;;;9457:29:8;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;9491:37:8;;;;;;:31;:37;;;;;;;;9490:38;9457:71;9453:202;;;9575:13;;9565:6;:23;;9557:78;;;;-1:-1:-1;;;9557:78:8;;13998:2:9;9557:78:8;;;13980:21:9;14037:2;14017:18;;;14010:30;14076:34;14056:18;;;14049:62;-1:-1:-1;;;14127:18:9;;;14120:40;14177:19;;9557:78:8;13796:406:9;9557:78:8;9742:4;9693:28;1101:18:1;;;;;;;;;;;9800::8;;9776:42;;;;;;;9834:22;;-1:-1:-1;9845:11:8;;;;;;;9834:22;:35;;;;-1:-1:-1;9861:8:8;;;;9860:9;9834:35;:71;;;;-1:-1:-1;;;;;;9874:31:8;;;;;;:25;:31;;;;;;;;9873:32;9834:71;:101;;;;-1:-1:-1;;;;;;9910:25:8;;;;;;:19;:25;;;;;;;;9909:26;9834:101;:129;;;;-1:-1:-1;;;;;;9940:23:8;;;;;;:19;:23;;;;;;;;9939:24;9834:129;9831:236;;;9980:8;:15;;-1:-1:-1;;9980:15:8;9991:4;9980:15;;;10012:10;:8;:10::i;:::-;10039:8;:16;;-1:-1:-1;;10039:16:8;;;9831:236;-1:-1:-1;;;;;10197:25:8;;10079:12;10197:25;;;:19;:25;;;;;;10094:4;;10197:25;;;:52;;-1:-1:-1;;;;;;10226:23:8;;;;;;:19;:23;;;;;;;;10197:52;10194:99;;;-1:-1:-1;10276:5:8;10194:99;10305:12;10411:7;10408:1191;;;11754:18;;11739:12;:33;10473:60;;;;-1:-1:-1;;;;;;10502:31:8;;;;;;:25;:31;;;;;;;;10473:60;:94;;;;-1:-1:-1;;;;;;10538:29:8;;;;;;:25;:29;;;;;;;;10537:30;10473:94;:114;;;;;10586:1;10571:12;;:16;10473:114;10470:985;;;10628:3;10614:11;:6;10623:2;10614:11;:::i;:::-;:17;;;;:::i;:::-;10607:24;;10694:12;;10676:15;;10669:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;10647:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;10774:12:8;;10755:16;;10748:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;10725:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;10470:985:8;;-1:-1:-1;10470:985:8;;-1:-1:-1;;;;;10851:29:8;;;;;;:25;:29;;;;;;;;:50;;;;;10900:1;10884:13;;:17;10851:50;10847:608;;;10953:3;10937:13;;10928:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;10921:35;;11023:13;;11004:16;;10997:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;10975:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;11105:13:8;;11085:17;;11078:24;;:4;:24;:::i;10847:608::-;-1:-1:-1;;;;;11181:31:8;;;;;;:25;:31;;;;;;;;:51;;;;;11231:1;11216:12;;:16;11181:51;11178:277;;;11281:3;11266:12;;11257:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;11250:34;;11347:12;;11329:15;;11322:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;11300:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;11427:12:8;;11408:16;;11401:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;11378:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;11178:277:8;11474:8;;11471:89;;11502:42;11518:4;11532;11539;11502:15;:42::i;:::-;11573:14;11583:4;11573:14;;:::i;:::-;;;10408:1191;11611:33;11627:4;11633:2;11637:6;11611:15;:33::i;:::-;7946:3706;;;;7867:3785;;;:::o;12899:627::-;12964:1;12943:18;;:22;:72;;;;-1:-1:-1;12997:18:8;;12987:4;1074:7:1;1101:18;;;;;;;;;;;12969:46:8;;12943:72;12940:207;;;13032:66;13056:4;13071:6;13079:18;;13032:15;:66::i;:::-;13121:6;-1:-1:-1;;;;;13113:20:8;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12940:207;13178:1;13157:18;:22;;;13236:4;1101:18:1;;;;;;;;;;;13258:20:8;;;13255:34;;13281:7;12899:627::o;13255:34::-;13322:18;;:23;;13343:2;13322:23;:::i;:::-;13304:15;:41;13301:113;;;13379:18;;:23;;13400:2;13379:23;:::i;:::-;13361:41;;13301:113;13426:33;13443:15;13426:16;:33::i;:::-;13512:4;1074:7:1;1101:18;;;;;;;;;;;13472:19:8;:46;-1:-1:-1;12899:627:8:o;6921:240::-;-1:-1:-1;;;;;7004:31:8;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;7004:39:8;;;;;;;7056;7004:31;:39;7056:26;:39::i;2798:614:1:-;-1:-1:-1;;;;;2938:20:1;;2930:70;;;;-1:-1:-1;;;2930:70:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;3019:23:1;;3011:71;;;;-1:-1:-1;;;3011:71:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;3119:17:1;;3095:21;3119:17;;;;;;;;;;;3155:23;;;;3147:74;;;;-1:-1:-1;;;3147:74:1;;14409:2:9;3147:74:1;;;14391:21:9;14448:2;14428:18;;;14421:30;14487:34;14467:18;;;14460:62;-1:-1:-1;;;14538:18:9;;;14531:36;14584:19;;3147:74:1;14207:402:9;3147:74:1;-1:-1:-1;;;;;3257:17:1;;;:9;:17;;;;;;;;;;;3277:22;;;3257:42;;3321:20;;;;;;;;:30;;3293:6;;3257:9;3321:30;;3293:6;;3321:30;:::i;:::-;;;;;;;;3386:9;-1:-1:-1;;;;;3369:35:1;3378:6;-1:-1:-1;;;;;3369:35:1;;3397:6;3369:35;;;;2092:25:9;;2080:2;2065:18;;1946:177;3369:35:1;;;;;;;;2919:493;2798:614;;;:::o;11788:586:8:-;11940:16;;;11954:1;11940:16;;;;;;;;11916:21;;11940:16;;;;;;;;;;-1:-1:-1;11940:16:8;11916:40;;11985:4;11967;11972:1;11967:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;11967:23:8;;;-1:-1:-1;;;;;11967:23:8;;;;;12011:9;-1:-1:-1;;;;;12011:14:8;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12001:4;12006:1;12001:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;12001:26:8;;;-1:-1:-1;;;;;12001:26:8;;;;;12040:56;12057:4;12072:9;12084:11;12040:8;:56::i;:::-;12307:17;;12135:231;;-1:-1:-1;;;12135:231:8;;-1:-1:-1;;;;;12135:9:8;:60;;;;;:231;;12210:11;;12236:1;;12280:4;;12307:17;;;;;12340:15;;12135:231;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11843:531;11788:586;:::o;6135:207::-;-1:-1:-1;;;;;6223:39:8;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;6223:52:8;;;;;;;;;;6291:43;;16287:51:9;;;16354:18;;;16347:50;6291:43:8;;16260:18:9;6291:43:8;;;;;;;6135:207;;:::o;14:248:9:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:9;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:9:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;1046:131::-;-1:-1:-1;;;;;1121:31:9;;1111:42;;1101:70;;1167:1;1164;1157:12;1101:70;1046:131;:::o;1182:315::-;1250:6;1258;1311:2;1299:9;1290:7;1286:23;1282:32;1279:52;;;1327:1;1324;1317:12;1279:52;1366:9;1353:23;1385:31;1410:5;1385:31;:::i;:::-;1435:5;1487:2;1472:18;;;;1459:32;;-1:-1:-1;;;1182:315:9:o;1694:247::-;1753:6;1806:2;1794:9;1785:7;1781:23;1777:32;1774:52;;;1822:1;1819;1812:12;1774:52;1861:9;1848:23;1880:31;1905:5;1880:31;:::i;:::-;1930:5;1694:247;-1:-1:-1;;;1694:247:9:o;2128:456::-;2205:6;2213;2221;2274:2;2262:9;2253:7;2249:23;2245:32;2242:52;;;2290:1;2287;2280:12;2242:52;2329:9;2316:23;2348:31;2373:5;2348:31;:::i;:::-;2398:5;-1:-1:-1;2455:2:9;2440:18;;2427:32;2468:33;2427:32;2468:33;:::i;:::-;2128:456;;2520:7;;-1:-1:-1;;;2574:2:9;2559:18;;;;2546:32;;2128:456::o;2589:180::-;2648:6;2701:2;2689:9;2680:7;2676:23;2672:32;2669:52;;;2717:1;2714;2707:12;2669:52;-1:-1:-1;2740:23:9;;2589:180;-1:-1:-1;2589:180:9:o;3171:416::-;3236:6;3244;3297:2;3285:9;3276:7;3272:23;3268:32;3265:52;;;3313:1;3310;3303:12;3265:52;3352:9;3339:23;3371:31;3396:5;3371:31;:::i;:::-;3421:5;-1:-1:-1;3478:2:9;3463:18;;3450:32;3520:15;;3513:23;3501:36;;3491:64;;3551:1;3548;3541:12;3491:64;3574:7;3564:17;;;3171:416;;;;;:::o;3592:388::-;3660:6;3668;3721:2;3709:9;3700:7;3696:23;3692:32;3689:52;;;3737:1;3734;3727:12;3689:52;3776:9;3763:23;3795:31;3820:5;3795:31;:::i;:::-;3845:5;-1:-1:-1;3902:2:9;3887:18;;3874:32;3915:33;3874:32;3915:33;:::i;3985:356::-;4187:2;4169:21;;;4206:18;;;4199:30;4265:34;4260:2;4245:18;;4238:62;4332:2;4317:18;;3985:356::o;4346:127::-;4407:10;4402:3;4398:20;4395:1;4388:31;4438:4;4435:1;4428:15;4462:4;4459:1;4452:15;4478:125;4543:9;;;4564:10;;;4561:36;;;4577:18;;:::i;4608:380::-;4687:1;4683:12;;;;4730;;;4751:61;;4805:4;4797:6;4793:17;4783:27;;4751:61;4858:2;4850:6;4847:14;4827:18;4824:38;4821:161;;4904:10;4899:3;4895:20;4892:1;4885:31;4939:4;4936:1;4929:15;4967:4;4964:1;4957:15;4821:161;;4608:380;;;:::o;5402:168::-;5475:9;;;5506;;5523:15;;;5517:22;;5503:37;5493:71;;5544:18;;:::i;5575:217::-;5615:1;5641;5631:132;;5685:10;5680:3;5676:20;5673:1;5666:31;5720:4;5717:1;5710:15;5748:4;5745:1;5738:15;5631:132;-1:-1:-1;5777:9:9;;5575:217::o;11313:401::-;11515:2;11497:21;;;11554:2;11534:18;;;11527:30;11593:34;11588:2;11573:18;;11566:62;-1:-1:-1;;;11659:2:9;11644:18;;11637:35;11704:3;11689:19;;11313:401::o;11719:399::-;11921:2;11903:21;;;11960:2;11940:18;;;11933:30;11999:34;11994:2;11979:18;;11972:62;-1:-1:-1;;;12065:2:9;12050:18;;12043:33;12108:3;12093:19;;11719:399::o;12832:128::-;12899:9;;;12920:11;;;12917:37;;;12934:18;;:::i;14746:127::-;14807:10;14802:3;14798:20;14795:1;14788:31;14838:4;14835:1;14828:15;14862:4;14859:1;14852:15;14878:251;14948:6;15001:2;14989:9;14980:7;14976:23;14972:32;14969:52;;;15017:1;15014;15007:12;14969:52;15049:9;15043:16;15068:31;15093:5;15068:31;:::i;15134:980::-;15396:4;15444:3;15433:9;15429:19;15475:6;15464:9;15457:25;15501:2;15539:6;15534:2;15523:9;15519:18;15512:34;15582:3;15577:2;15566:9;15562:18;15555:31;15606:6;15641;15635:13;15672:6;15664;15657:22;15710:3;15699:9;15695:19;15688:26;;15749:2;15741:6;15737:15;15723:29;;15770:1;15780:195;15794:6;15791:1;15788:13;15780:195;;;15859:13;;-1:-1:-1;;;;;15855:39:9;15843:52;;15950:15;;;;15915:12;;;;15891:1;15809:9;15780:195;;;-1:-1:-1;;;;;;;16031:32:9;;;;16026:2;16011:18;;16004:60;-1:-1:-1;;;16095:3:9;16080:19;16073:35;15992:3;15134:980;-1:-1:-1;;;15134:980:9:o

Swarm Source

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