ETH Price: $3,328.03 (-3.93%)

Token

Neow (NEOW)
 

Overview

Max Total Supply

1,000,000,000 NEOW

Holders

447

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
779,927.090846197485656649 NEOW

Value
$0.00
0xd8508a25117cb4bfbb2ed9615ed4b004cf52a5c5
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:
Neow

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : Neow.sol
// SPDX-License-Identifier: MIT

// NEOWWWWWWWwwwwwwww
// WEBSITE: neow.lol

pragma solidity ^0.8.23;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

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

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

contract Neow is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public feeWallet;

    uint256 public maxTx;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    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;
    bool public transferDelayEnabled = true;

    uint256 public buyFee;
    uint256 public sellFee;

    mapping(address => bool) private _isBlackList;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedmaxTx;

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    event feeWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    constructor() ERC20("Neow", unicode"NEOW") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        excludeFromMaxTx(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTx(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 1_000_000_000 * 1e18;

        maxTx = 20_000_000 * 1e18; // 2% of total supply 
        maxWallet = 20_000_000 * 1e18; // 2% of total supply
        swapTokensAtAmount = (totalSupply * 25) / 10000; // 0.25% swap wallet

        buyFee = 0;
        sellFee = 40;

        feeWallet = address(msg.sender);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTx(owner(), true);
        excludeFromMaxTx(address(this), true);
        excludeFromMaxTx(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function enableTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes('Trading Token')),
                keccak256(bytes('1')),
                block.chainid,
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                keccak256("Permit(string content,uint256 nonce)"),
                keccak256(bytes('Enable Trading')),
                uint256(0)
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                domainHash,
                structHash                
            )
        );

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        tradingActive = true;
        swapEnabled = true;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

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

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTx lower than 0.1%"
        );
        maxTx = newNum * (10**18);
    }

    function updatemaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

    function excludeFromMaxTx(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedmaxTx[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _buyFee
    ) external onlyOwner {
        require(_buyFee <= 40, "Must keep fees at 40% or less");
        buyFee = _buyFee;
    }

    function updateSellFees(
        uint256 _sellFee
    ) external onlyOwner {
        require(_sellFee <= 40, "Must keep fees at 40% or less");
        sellFee = _sellFee;
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateFeeWallet(address newWallet) external onlyOwner {
        emit feeWalletUpdated(newWallet, feeWallet);
        feeWallet = newWallet;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_isBlackList[from], "[from] black list");
        require(!_isBlackList[to], "[to] black list");

        if (limitsInEffect) {
            if (from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping) {
                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedmaxTx[to]) {
                    require(amount <= maxTx, "Buy transfer amount exceeds the maxTx.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTx[from]) {
                    require(amount <= maxTx, "Sell transfer amount exceeds the maxTx.");
                }
                else if (!_isExcludedmaxTx[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        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 = !swapping;

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

        uint256 fee = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellFee > 0) {
                fee = amount.mul(sellFee).div(100);
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyFee > 0) {
                fee = amount.mul(buyFee).div(100);
            }

            super._transfer(from, address(this), fee);

            amount -= fee;
        }

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

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function manualSwap(uint256 amount) external {
        require(_msgSender() == feeWallet);
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    }    

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;

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

        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance;

        (success, ) = address(feeWallet).call{value: ethBalance}("");
    }
}

Settings
{
  "evmVersion": "paris",
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"feeWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTx","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":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"enableTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","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":"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":[{"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600d60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600481526020017f4e656f77000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e454f57000000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000cb0565b5080600490816200010d919062000cb0565b5050506200013062000124620004f760201b60201c565b620004ff60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015c816001620005c560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000202919062000e01565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000e01565b6040518363ffffffff1660e01b8152600401620002af92919062000e44565b6020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000e01565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200036a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005c560201b60201c565b6200039f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006af60201b60201c565b60006b033b2e3c9fd0803ce800000090506a108b2a2c280290940000006008819055506a108b2a2c28029094000000600a81905550612710601982620003e6919062000ea0565b620003f2919062000f1a565b6009819055506000600e819055506028600f8190555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200046b6200045d6200075060201b60201c565b60016200077a60201b60201c565b6200047e3060016200077a60201b60201c565b6200049361dead60016200077a60201b60201c565b620004b5620004a76200075060201b60201c565b6001620005c560201b60201c565b620004c8306001620005c560201b60201c565b620004dd61dead6001620005c560201b60201c565b620004ef3382620008b460201b60201c565b5050620010ea565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005d5620004f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005fb6200075060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000654576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200064b9062000fb3565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200078a620004f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007b06200075060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000809576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008009062000fb3565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008a8919062000ff2565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000926576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091d906200105f565b60405180910390fd5b6200093a6000838362000a2c60201b60201c565b80600260008282546200094e919062001081565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009a5919062001081565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a0c9190620010cd565b60405180910390a362000a286000838362000a3160201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ab857607f821691505b60208210810362000ace5762000acd62000a70565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000af9565b62000b44868362000af9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b9162000b8b62000b858462000b5c565b62000b66565b62000b5c565b9050919050565b6000819050919050565b62000bad8362000b70565b62000bc562000bbc8262000b98565b84845462000b06565b825550505050565b600090565b62000bdc62000bcd565b62000be981848462000ba2565b505050565b5b8181101562000c115762000c0560008262000bd2565b60018101905062000bef565b5050565b601f82111562000c605762000c2a8162000ad4565b62000c358462000ae9565b8101602085101562000c45578190505b62000c5d62000c548562000ae9565b83018262000bee565b50505b505050565b600082821c905092915050565b600062000c856000198460080262000c65565b1980831691505092915050565b600062000ca0838362000c72565b9150826002028217905092915050565b62000cbb8262000a36565b67ffffffffffffffff81111562000cd75762000cd662000a41565b5b62000ce3825462000a9f565b62000cf082828562000c15565b600060209050601f83116001811462000d28576000841562000d13578287015190505b62000d1f858262000c92565b86555062000d8f565b601f19841662000d388662000ad4565b60005b8281101562000d625784890151825560018201915060208501945060208101905062000d3b565b8683101562000d82578489015162000d7e601f89168262000c72565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dc98262000d9c565b9050919050565b62000ddb8162000dbc565b811462000de757600080fd5b50565b60008151905062000dfb8162000dd0565b92915050565b60006020828403121562000e1a5762000e1962000d97565b5b600062000e2a8482850162000dea565b91505092915050565b62000e3e8162000dbc565b82525050565b600060408201905062000e5b600083018562000e33565b62000e6a602083018462000e33565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ead8262000b5c565b915062000eba8362000b5c565b925082820262000eca8162000b5c565b9150828204841483151762000ee45762000ee362000e71565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f278262000b5c565b915062000f348362000b5c565b92508262000f475762000f4662000eeb565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f9b60208362000f52565b915062000fa88262000f63565b602082019050919050565b6000602082019050818103600083015262000fce8162000f8c565b9050919050565b60008115159050919050565b62000fec8162000fd5565b82525050565b600060208201905062001009600083018462000fe1565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001047601f8362000f52565b915062001054826200100f565b602082019050919050565b600060208201905081810360008301526200107a8162001038565b9050919050565b60006200108e8262000b5c565b91506200109b8362000b5c565b9250828201905080821115620010b657620010b562000e71565b5b92915050565b620010c78162000b5c565b82525050565b6000602082019050620010e46000830184620010bc565b92915050565b608051614e4b6200112260003960008181610b49015281816128040152818161320a015281816132eb01526133120152614e4b6000f3fe6080604052600436106102765760003560e01c80638da5cb5b1161014f578063c0246668116100c1578063e6819ba71161007a578063e6819ba714610987578063e884f260146109c4578063eba4c333146109ef578063f25f4b5614610a18578063f2fde38b14610a43578063f8b45b0514610a6c5761027d565b8063c024666814610865578063c876d0b91461088e578063d257b34f146108b9578063d4c989d3146108f6578063dd62ed3e1461091f578063e2f456051461095c5761027d565b8063a9059cbb11610113578063a9059cbb14610745578063a90eab8c14610782578063b5cc50b7146107ab578063b62496f5146107d4578063b70143c914610811578063bbc0c7421461083a5761027d565b80638da5cb5b14610660578063924de9b71461068b57806395d89b41146106b45780639a7a23d6146106df578063a457c2d7146107085761027d565b806349bd5a5e116101e857806370a08231116101ac57806370a0823114610576578063715018a6146105b357806371fc4688146105ca5780637437681e146105f3578063751039fc1461061e5780638a8c523c146106495761027d565b806349bd5a5e1461048f5780634a62bb65146104ba5780634fbee193146104e557806366718524146105225780636ddd17131461054b5761027d565b806323b872dd1161023a57806323b872dd1461036957806327c8f835146103a65780632b14ca56146103d1578063313ce567146103fc578063395093511461042757806347062402146104645761027d565b806306fdde0314610282578063095ea7b3146102ad5780631694505e146102ea57806318160ddd14610315578063203e727e146103405761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a97565b6040516102a491906137c5565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190613880565b610b29565b6040516102e191906138db565b60405180910390f35b3480156102f657600080fd5b506102ff610b47565b60405161030c9190613955565b60405180910390f35b34801561032157600080fd5b5061032a610b6b565b604051610337919061397f565b60405180910390f35b34801561034c57600080fd5b506103676004803603810190610362919061399a565b610b75565b005b34801561037557600080fd5b50610390600480360381019061038b91906139c7565b610c84565b60405161039d91906138db565b60405180910390f35b3480156103b257600080fd5b506103bb610d7c565b6040516103c89190613a29565b60405180910390f35b3480156103dd57600080fd5b506103e6610d82565b6040516103f3919061397f565b60405180910390f35b34801561040857600080fd5b50610411610d88565b60405161041e9190613a60565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190613880565b610d91565b60405161045b91906138db565b60405180910390f35b34801561047057600080fd5b50610479610e3d565b604051610486919061397f565b60405180910390f35b34801561049b57600080fd5b506104a4610e43565b6040516104b19190613a29565b60405180910390f35b3480156104c657600080fd5b506104cf610e69565b6040516104dc91906138db565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190613a7b565b610e7c565b60405161051991906138db565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190613a7b565b610ed2565b005b34801561055757600080fd5b5061056061100e565b60405161056d91906138db565b60405180910390f35b34801561058257600080fd5b5061059d60048036038101906105989190613a7b565b611021565b6040516105aa919061397f565b60405180910390f35b3480156105bf57600080fd5b506105c8611069565b005b3480156105d657600080fd5b506105f160048036038101906105ec919061399a565b6110f1565b005b3480156105ff57600080fd5b506106086111bb565b604051610615919061397f565b60405180910390f35b34801561062a57600080fd5b506106336111c1565b60405161064091906138db565b60405180910390f35b34801561065557600080fd5b5061065e611261565b005b34801561066c57600080fd5b50610675611315565b6040516106829190613a29565b60405180910390f35b34801561069757600080fd5b506106b260048036038101906106ad9190613ad4565b61133f565b005b3480156106c057600080fd5b506106c96113d8565b6040516106d691906137c5565b60405180910390f35b3480156106eb57600080fd5b5061070660048036038101906107019190613b01565b61146a565b005b34801561071457600080fd5b5061072f600480360381019061072a9190613880565b611584565b60405161073c91906138db565b60405180910390f35b34801561075157600080fd5b5061076c60048036038101906107679190613880565b61166f565b60405161077991906138db565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190613ba3565b61168d565b005b3480156107b757600080fd5b506107d260048036038101906107cd919061399a565b611918565b005b3480156107e057600080fd5b506107fb60048036038101906107f69190613a7b565b611a27565b60405161080891906138db565b60405180910390f35b34801561081d57600080fd5b506108386004803603810190610833919061399a565b611a47565b005b34801561084657600080fd5b5061084f611b0b565b60405161085c91906138db565b60405180910390f35b34801561087157600080fd5b5061088c60048036038101906108879190613b01565b611b1e565b005b34801561089a57600080fd5b506108a3611c43565b6040516108b091906138db565b60405180910390f35b3480156108c557600080fd5b506108e060048036038101906108db919061399a565b611c56565b6040516108ed91906138db565b60405180910390f35b34801561090257600080fd5b5061091d60048036038101906109189190613b01565b611dab565b005b34801561092b57600080fd5b5061094660048036038101906109419190613bf6565b611e82565b604051610953919061397f565b60405180910390f35b34801561096857600080fd5b50610971611f09565b60405161097e919061397f565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a99190613a7b565b611f0f565b6040516109bb91906138db565b60405180910390f35b3480156109d057600080fd5b506109d9611f2f565b6040516109e691906138db565b60405180910390f35b3480156109fb57600080fd5b50610a166004803603810190610a11919061399a565b611fcf565b005b348015610a2457600080fd5b50610a2d612099565b604051610a3a9190613a29565b60405180910390f35b348015610a4f57600080fd5b50610a6a6004803603810190610a659190613a7b565b6120bf565b005b348015610a7857600080fd5b50610a816121b6565b604051610a8e919061397f565b60405180910390f35b606060038054610aa690613c65565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad290613c65565b8015610b1f5780601f10610af457610100808354040283529160200191610b1f565b820191906000526020600020905b815481529060010190602001808311610b0257829003601f168201915b5050505050905090565b6000610b3d610b366121bc565b84846121c4565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610b7d6121bc565b73ffffffffffffffffffffffffffffffffffffffff16610b9b611315565b73ffffffffffffffffffffffffffffffffffffffff1614610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be890613ce2565b60405180910390fd5b670de0b6b3a76400006103e86001610c07610b6b565b610c119190613d31565b610c1b9190613da2565b610c259190613da2565b811015610c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5e90613e1f565b60405180910390fd5b670de0b6b3a764000081610c7b9190613d31565b60088190555050565b6000610c9184848461238d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cdc6121bc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5390613eb1565b60405180910390fd5b610d7085610d686121bc565b8584036121c4565b60019150509392505050565b61dead81565b600f5481565b60006012905090565b6000610e33610d9e6121bc565b848460016000610dac6121bc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e2e9190613ed1565b6121c4565b6001905092915050565b600e5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900460ff1681565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610eda6121bc565b73ffffffffffffffffffffffffffffffffffffffff16610ef8611315565b73ffffffffffffffffffffffffffffffffffffffff1614610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590613ce2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5deb5ef622431f0df5a39b72dd556892f68ba42aa0f3aaf0800e166ce866492860405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110716121bc565b73ffffffffffffffffffffffffffffffffffffffff1661108f611315565b73ffffffffffffffffffffffffffffffffffffffff16146110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc90613ce2565b60405180910390fd5b6110ef6000613004565b565b6110f96121bc565b73ffffffffffffffffffffffffffffffffffffffff16611117611315565b73ffffffffffffffffffffffffffffffffffffffff161461116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116490613ce2565b60405180910390fd5b60288111156111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a890613f51565b60405180910390fd5b80600e8190555050565b60085481565b60006111cb6121bc565b73ffffffffffffffffffffffffffffffffffffffff166111e9611315565b73ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690613ce2565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6112696121bc565b73ffffffffffffffffffffffffffffffffffffffff16611287611315565b73ffffffffffffffffffffffffffffffffffffffff16146112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d490613ce2565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113476121bc565b73ffffffffffffffffffffffffffffffffffffffff16611365611315565b73ffffffffffffffffffffffffffffffffffffffff16146113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b290613ce2565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546113e790613c65565b80601f016020809104026020016040519081016040528092919081815260200182805461141390613c65565b80156114605780601f1061143557610100808354040283529160200191611460565b820191906000526020600020905b81548152906001019060200180831161144357829003601f168201915b5050505050905090565b6114726121bc565b73ffffffffffffffffffffffffffffffffffffffff16611490611315565b73ffffffffffffffffffffffffffffffffffffffff16146114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd90613ce2565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d90613fe3565b60405180910390fd5b61158082826130ca565b5050565b600080600160006115936121bc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790614075565b60405180910390fd5b61166461165b6121bc565b858584036121c4565b600191505092915050565b600061168361167c6121bc565b848461238d565b6001905092915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508051906020012046306040516020016117409594939291906140a4565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e670000000000000000000000000000000000008152508051906020012060006040516020016117cc939291906140f7565b604051602081830303815290604052805190602001209050600082826040516020016117f99291906141a6565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161183694939291906141dd565b6020604051602081039080840390855afa158015611858573d6000803e3d6000fd5b50505060206040510351905061186c611315565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d09061426e565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555050505050505050565b6119206121bc565b73ffffffffffffffffffffffffffffffffffffffff1661193e611315565b73ffffffffffffffffffffffffffffffffffffffff1614611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b90613ce2565b60405180910390fd5b670de0b6b3a76400006103e860056119aa610b6b565b6119b49190613d31565b6119be9190613da2565b6119c89190613da2565b811015611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190614300565b60405180910390fd5b670de0b6b3a764000081611a1e9190613d31565b600a8190555050565b60136020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a886121bc565b73ffffffffffffffffffffffffffffffffffffffff1614611aa857600080fd5b611ab130611021565b8111158015611ac05750600081115b611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af69061436c565b60405180910390fd5b611b088161316b565b50565b600b60019054906101000a900460ff1681565b611b266121bc565b73ffffffffffffffffffffffffffffffffffffffff16611b44611315565b73ffffffffffffffffffffffffffffffffffffffff1614611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190613ce2565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c3791906138db565b60405180910390a25050565b600d60009054906101000a900460ff1681565b6000611c606121bc565b73ffffffffffffffffffffffffffffffffffffffff16611c7e611315565b73ffffffffffffffffffffffffffffffffffffffff1614611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccb90613ce2565b60405180910390fd5b620186a06001611ce2610b6b565b611cec9190613d31565b611cf69190613da2565b821015611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f906143fe565b60405180910390fd5b6103e86005611d45610b6b565b611d4f9190613d31565b611d599190613da2565b821115611d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9290614490565b60405180910390fd5b8160098190555060019050919050565b611db36121bc565b73ffffffffffffffffffffffffffffffffffffffff16611dd1611315565b73ffffffffffffffffffffffffffffffffffffffff1614611e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1e90613ce2565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60126020528060005260406000206000915054906101000a900460ff1681565b6000611f396121bc565b73ffffffffffffffffffffffffffffffffffffffff16611f57611315565b73ffffffffffffffffffffffffffffffffffffffff1614611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa490613ce2565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b611fd76121bc565b73ffffffffffffffffffffffffffffffffffffffff16611ff5611315565b73ffffffffffffffffffffffffffffffffffffffff161461204b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204290613ce2565b60405180910390fd5b602881111561208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690613f51565b60405180910390fd5b80600f8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120c76121bc565b73ffffffffffffffffffffffffffffffffffffffff166120e5611315565b73ffffffffffffffffffffffffffffffffffffffff161461213b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213290613ce2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a190614522565b60405180910390fd5b6121b381613004565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a906145b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229990614646565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612380919061397f565b60405180910390a3505050565b600081036123a6576123a1838360006133a8565b612fff565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240c906146d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b9061476a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612511576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612508906147d6565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561259e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259590614842565b60405180910390fd5b600b60009054906101000a900460ff1615612c63576125bb611315565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561262957506125f9611315565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126625750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561269c575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126b55750600660149054906101000a900460ff16155b15612c6257600b60019054906101000a900460ff166127af57601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061276f5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a5906148ae565b60405180910390fd5b5b600d60009054906101000a900460ff1615612979576127cc611315565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561285357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128ad5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129785743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292a90614966565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a1c5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ac357600854811115612a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5d906149f8565b60405180910390fd5b600a54612a7283611021565b82612a7d9190613ed1565b1115612abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab590614a64565b60405180910390fd5b612c61565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b665750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bb557600854811115612bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba790614af6565b60405180910390fd5b612c60565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c5f57600a54612c1283611021565b82612c1d9190613ed1565b1115612c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5590614a64565b60405180910390fd5b5b5b5b5b5b6000612c6e30611021565b905060006009548210159050808015612c935750600b60029054906101000a900460ff165b8015612cac5750600660149054906101000a900460ff16155b8015612d025750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d585750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dae5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612df2576001600660146101000a81548160ff021916908315150217905550612dd6613627565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ea85750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612eb257600090505b60008115612fef57601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f1557506000600f54115b15612f4957612f426064612f34600f54886136ff90919063ffffffff16565b61371590919063ffffffff16565b9050612fd5565b601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fa457506000600e54115b15612fd457612fd16064612fc3600e54886136ff90919063ffffffff16565b61371590919063ffffffff16565b90505b5b612fe08730836133a8565b8085612fec9190614b16565b94505b612ffa8787876133a8565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff81111561318857613187614b4a565b5b6040519080825280602002602001820160405280156131b65781602001602082028036833780820191505090505b50905030816000815181106131ce576131cd614b79565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132979190614bbd565b816001815181106132ab576132aa614b79565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613310307f0000000000000000000000000000000000000000000000000000000000000000846121c4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613372959493929190614ce3565b600060405180830381600087803b15801561338c57600080fd5b505af11580156133a0573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340e906146d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347d9061476a565b60405180910390fd5b61349183838361372b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350e90614daf565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135aa9190613ed1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161360e919061397f565b60405180910390a3613621848484613730565b50505050565b600061363230611021565b9050600060146009546136459190613d31565b82111561365e57601460095461365b9190613d31565b91505b6136678261316b565b6000479050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516136b290614e00565b60006040518083038185875af1925050503d80600081146136ef576040519150601f19603f3d011682016040523d82523d6000602084013e6136f4565b606091505b505080925050505050565b6000818361370d9190613d31565b905092915050565b600081836137239190613da2565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561376f578082015181840152602081019050613754565b60008484015250505050565b6000601f19601f8301169050919050565b600061379782613735565b6137a18185613740565b93506137b1818560208601613751565b6137ba8161377b565b840191505092915050565b600060208201905081810360008301526137df818461378c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613817826137ec565b9050919050565b6138278161380c565b811461383257600080fd5b50565b6000813590506138448161381e565b92915050565b6000819050919050565b61385d8161384a565b811461386857600080fd5b50565b60008135905061387a81613854565b92915050565b60008060408385031215613897576138966137e7565b5b60006138a585828601613835565b92505060206138b68582860161386b565b9150509250929050565b60008115159050919050565b6138d5816138c0565b82525050565b60006020820190506138f060008301846138cc565b92915050565b6000819050919050565b600061391b613916613911846137ec565b6138f6565b6137ec565b9050919050565b600061392d82613900565b9050919050565b600061393f82613922565b9050919050565b61394f81613934565b82525050565b600060208201905061396a6000830184613946565b92915050565b6139798161384a565b82525050565b60006020820190506139946000830184613970565b92915050565b6000602082840312156139b0576139af6137e7565b5b60006139be8482850161386b565b91505092915050565b6000806000606084860312156139e0576139df6137e7565b5b60006139ee86828701613835565b93505060206139ff86828701613835565b9250506040613a108682870161386b565b9150509250925092565b613a238161380c565b82525050565b6000602082019050613a3e6000830184613a1a565b92915050565b600060ff82169050919050565b613a5a81613a44565b82525050565b6000602082019050613a756000830184613a51565b92915050565b600060208284031215613a9157613a906137e7565b5b6000613a9f84828501613835565b91505092915050565b613ab1816138c0565b8114613abc57600080fd5b50565b600081359050613ace81613aa8565b92915050565b600060208284031215613aea57613ae96137e7565b5b6000613af884828501613abf565b91505092915050565b60008060408385031215613b1857613b176137e7565b5b6000613b2685828601613835565b9250506020613b3785828601613abf565b9150509250929050565b613b4a81613a44565b8114613b5557600080fd5b50565b600081359050613b6781613b41565b92915050565b6000819050919050565b613b8081613b6d565b8114613b8b57600080fd5b50565b600081359050613b9d81613b77565b92915050565b600080600060608486031215613bbc57613bbb6137e7565b5b6000613bca86828701613b58565b9350506020613bdb86828701613b8e565b9250506040613bec86828701613b8e565b9150509250925092565b60008060408385031215613c0d57613c0c6137e7565b5b6000613c1b85828601613835565b9250506020613c2c85828601613835565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c7d57607f821691505b602082108103613c9057613c8f613c36565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ccc602083613740565b9150613cd782613c96565b602082019050919050565b60006020820190508181036000830152613cfb81613cbf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d3c8261384a565b9150613d478361384a565b9250828202613d558161384a565b91508282048414831517613d6c57613d6b613d02565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613dad8261384a565b9150613db88361384a565b925082613dc857613dc7613d73565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3125600082015250565b6000613e09602083613740565b9150613e1482613dd3565b602082019050919050565b60006020820190508181036000830152613e3881613dfc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613e9b602883613740565b9150613ea682613e3f565b604082019050919050565b60006020820190508181036000830152613eca81613e8e565b9050919050565b6000613edc8261384a565b9150613ee78361384a565b9250828201905080821115613eff57613efe613d02565b5b92915050565b7f4d757374206b656570206665657320617420343025206f72206c657373000000600082015250565b6000613f3b601d83613740565b9150613f4682613f05565b602082019050919050565b60006020820190508181036000830152613f6a81613f2e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613fcd603983613740565b9150613fd882613f71565b604082019050919050565b60006020820190508181036000830152613ffc81613fc0565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061405f602583613740565b915061406a82614003565b604082019050919050565b6000602082019050818103600083015261408e81614052565b9050919050565b61409e81613b6d565b82525050565b600060a0820190506140b96000830188614095565b6140c66020830187614095565b6140d36040830186614095565b6140e06060830185613970565b6140ed6080830184613a1a565b9695505050505050565b600060608201905061410c6000830186614095565b6141196020830185614095565b6141266040830184613970565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b600061416f60028361412e565b915061417a82614139565b600282019050919050565b6000819050919050565b6141a061419b82613b6d565b614185565b82525050565b60006141b182614162565b91506141bd828561418f565b6020820191506141cd828461418f565b6020820191508190509392505050565b60006080820190506141f26000830187614095565b6141ff6020830186613a51565b61420c6040830185614095565b6142196060830184614095565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614258601183613740565b915061426382614222565b602082019050919050565b600060208201905081810360008301526142878161424b565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006142ea602483613740565b91506142f58261428e565b604082019050919050565b60006020820190508181036000830152614319816142dd565b9050919050565b7f57726f6e6720616d6f756e740000000000000000000000000000000000000000600082015250565b6000614356600c83613740565b915061436182614320565b602082019050919050565b6000602082019050818103600083015261438581614349565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006143e8603583613740565b91506143f38261438c565b604082019050919050565b60006020820190508181036000830152614417816143db565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061447a603483613740565b91506144858261441e565b604082019050919050565b600060208201905081810360008301526144a98161446d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061450c602683613740565b9150614517826144b0565b604082019050919050565b6000602082019050818103600083015261453b816144ff565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061459e602483613740565b91506145a982614542565b604082019050919050565b600060208201905081810360008301526145cd81614591565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614630602283613740565b915061463b826145d4565b604082019050919050565b6000602082019050818103600083015261465f81614623565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146c2602583613740565b91506146cd82614666565b604082019050919050565b600060208201905081810360008301526146f1816146b5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614754602383613740565b915061475f826146f8565b604082019050919050565b6000602082019050818103600083015261478381614747565b9050919050565b7f5b66726f6d5d20626c61636b206c697374000000000000000000000000000000600082015250565b60006147c0601183613740565b91506147cb8261478a565b602082019050919050565b600060208201905081810360008301526147ef816147b3565b9050919050565b7f5b746f5d20626c61636b206c6973740000000000000000000000000000000000600082015250565b600061482c600f83613740565b9150614837826147f6565b602082019050919050565b6000602082019050818103600083015261485b8161481f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614898601683613740565b91506148a382614862565b602082019050919050565b600060208201905081810360008301526148c78161488b565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614950604983613740565b915061495b826148ce565b606082019050919050565b6000602082019050818103600083015261497f81614943565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b60006149e2602683613740565b91506149ed82614986565b604082019050919050565b60006020820190508181036000830152614a11816149d5565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614a4e601383613740565b9150614a5982614a18565b602082019050919050565b60006020820190508181036000830152614a7d81614a41565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b6000614ae0602783613740565b9150614aeb82614a84565b604082019050919050565b60006020820190508181036000830152614b0f81614ad3565b9050919050565b6000614b218261384a565b9150614b2c8361384a565b9250828203905081811115614b4457614b43613d02565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614bb78161381e565b92915050565b600060208284031215614bd357614bd26137e7565b5b6000614be184828501614ba8565b91505092915050565b6000819050919050565b6000614c0f614c0a614c0584614bea565b6138f6565b61384a565b9050919050565b614c1f81614bf4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c5a8161380c565b82525050565b6000614c6c8383614c51565b60208301905092915050565b6000602082019050919050565b6000614c9082614c25565b614c9a8185614c30565b9350614ca583614c41565b8060005b83811015614cd6578151614cbd8882614c60565b9750614cc883614c78565b925050600181019050614ca9565b5085935050505092915050565b600060a082019050614cf86000830188613970565b614d056020830187614c16565b8181036040830152614d178186614c85565b9050614d266060830185613a1a565b614d336080830184613970565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614d99602683613740565b9150614da482614d3d565b604082019050919050565b60006020820190508181036000830152614dc881614d8c565b9050919050565b600081905092915050565b50565b6000614dea600083614dcf565b9150614df582614dda565b600082019050919050565b6000614e0b82614ddd565b915081905091905056fea26469706673582212208ea2bcc08f49f804a67fb90e55f7bfb02139af359d6837b8fea3982c3cfc441c64736f6c63430008170033

Deployed Bytecode

0x6080604052600436106102765760003560e01c80638da5cb5b1161014f578063c0246668116100c1578063e6819ba71161007a578063e6819ba714610987578063e884f260146109c4578063eba4c333146109ef578063f25f4b5614610a18578063f2fde38b14610a43578063f8b45b0514610a6c5761027d565b8063c024666814610865578063c876d0b91461088e578063d257b34f146108b9578063d4c989d3146108f6578063dd62ed3e1461091f578063e2f456051461095c5761027d565b8063a9059cbb11610113578063a9059cbb14610745578063a90eab8c14610782578063b5cc50b7146107ab578063b62496f5146107d4578063b70143c914610811578063bbc0c7421461083a5761027d565b80638da5cb5b14610660578063924de9b71461068b57806395d89b41146106b45780639a7a23d6146106df578063a457c2d7146107085761027d565b806349bd5a5e116101e857806370a08231116101ac57806370a0823114610576578063715018a6146105b357806371fc4688146105ca5780637437681e146105f3578063751039fc1461061e5780638a8c523c146106495761027d565b806349bd5a5e1461048f5780634a62bb65146104ba5780634fbee193146104e557806366718524146105225780636ddd17131461054b5761027d565b806323b872dd1161023a57806323b872dd1461036957806327c8f835146103a65780632b14ca56146103d1578063313ce567146103fc578063395093511461042757806347062402146104645761027d565b806306fdde0314610282578063095ea7b3146102ad5780631694505e146102ea57806318160ddd14610315578063203e727e146103405761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a97565b6040516102a491906137c5565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190613880565b610b29565b6040516102e191906138db565b60405180910390f35b3480156102f657600080fd5b506102ff610b47565b60405161030c9190613955565b60405180910390f35b34801561032157600080fd5b5061032a610b6b565b604051610337919061397f565b60405180910390f35b34801561034c57600080fd5b506103676004803603810190610362919061399a565b610b75565b005b34801561037557600080fd5b50610390600480360381019061038b91906139c7565b610c84565b60405161039d91906138db565b60405180910390f35b3480156103b257600080fd5b506103bb610d7c565b6040516103c89190613a29565b60405180910390f35b3480156103dd57600080fd5b506103e6610d82565b6040516103f3919061397f565b60405180910390f35b34801561040857600080fd5b50610411610d88565b60405161041e9190613a60565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190613880565b610d91565b60405161045b91906138db565b60405180910390f35b34801561047057600080fd5b50610479610e3d565b604051610486919061397f565b60405180910390f35b34801561049b57600080fd5b506104a4610e43565b6040516104b19190613a29565b60405180910390f35b3480156104c657600080fd5b506104cf610e69565b6040516104dc91906138db565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190613a7b565b610e7c565b60405161051991906138db565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190613a7b565b610ed2565b005b34801561055757600080fd5b5061056061100e565b60405161056d91906138db565b60405180910390f35b34801561058257600080fd5b5061059d60048036038101906105989190613a7b565b611021565b6040516105aa919061397f565b60405180910390f35b3480156105bf57600080fd5b506105c8611069565b005b3480156105d657600080fd5b506105f160048036038101906105ec919061399a565b6110f1565b005b3480156105ff57600080fd5b506106086111bb565b604051610615919061397f565b60405180910390f35b34801561062a57600080fd5b506106336111c1565b60405161064091906138db565b60405180910390f35b34801561065557600080fd5b5061065e611261565b005b34801561066c57600080fd5b50610675611315565b6040516106829190613a29565b60405180910390f35b34801561069757600080fd5b506106b260048036038101906106ad9190613ad4565b61133f565b005b3480156106c057600080fd5b506106c96113d8565b6040516106d691906137c5565b60405180910390f35b3480156106eb57600080fd5b5061070660048036038101906107019190613b01565b61146a565b005b34801561071457600080fd5b5061072f600480360381019061072a9190613880565b611584565b60405161073c91906138db565b60405180910390f35b34801561075157600080fd5b5061076c60048036038101906107679190613880565b61166f565b60405161077991906138db565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190613ba3565b61168d565b005b3480156107b757600080fd5b506107d260048036038101906107cd919061399a565b611918565b005b3480156107e057600080fd5b506107fb60048036038101906107f69190613a7b565b611a27565b60405161080891906138db565b60405180910390f35b34801561081d57600080fd5b506108386004803603810190610833919061399a565b611a47565b005b34801561084657600080fd5b5061084f611b0b565b60405161085c91906138db565b60405180910390f35b34801561087157600080fd5b5061088c60048036038101906108879190613b01565b611b1e565b005b34801561089a57600080fd5b506108a3611c43565b6040516108b091906138db565b60405180910390f35b3480156108c557600080fd5b506108e060048036038101906108db919061399a565b611c56565b6040516108ed91906138db565b60405180910390f35b34801561090257600080fd5b5061091d60048036038101906109189190613b01565b611dab565b005b34801561092b57600080fd5b5061094660048036038101906109419190613bf6565b611e82565b604051610953919061397f565b60405180910390f35b34801561096857600080fd5b50610971611f09565b60405161097e919061397f565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a99190613a7b565b611f0f565b6040516109bb91906138db565b60405180910390f35b3480156109d057600080fd5b506109d9611f2f565b6040516109e691906138db565b60405180910390f35b3480156109fb57600080fd5b50610a166004803603810190610a11919061399a565b611fcf565b005b348015610a2457600080fd5b50610a2d612099565b604051610a3a9190613a29565b60405180910390f35b348015610a4f57600080fd5b50610a6a6004803603810190610a659190613a7b565b6120bf565b005b348015610a7857600080fd5b50610a816121b6565b604051610a8e919061397f565b60405180910390f35b606060038054610aa690613c65565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad290613c65565b8015610b1f5780601f10610af457610100808354040283529160200191610b1f565b820191906000526020600020905b815481529060010190602001808311610b0257829003601f168201915b5050505050905090565b6000610b3d610b366121bc565b84846121c4565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610b7d6121bc565b73ffffffffffffffffffffffffffffffffffffffff16610b9b611315565b73ffffffffffffffffffffffffffffffffffffffff1614610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be890613ce2565b60405180910390fd5b670de0b6b3a76400006103e86001610c07610b6b565b610c119190613d31565b610c1b9190613da2565b610c259190613da2565b811015610c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5e90613e1f565b60405180910390fd5b670de0b6b3a764000081610c7b9190613d31565b60088190555050565b6000610c9184848461238d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cdc6121bc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5390613eb1565b60405180910390fd5b610d7085610d686121bc565b8584036121c4565b60019150509392505050565b61dead81565b600f5481565b60006012905090565b6000610e33610d9e6121bc565b848460016000610dac6121bc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e2e9190613ed1565b6121c4565b6001905092915050565b600e5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900460ff1681565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610eda6121bc565b73ffffffffffffffffffffffffffffffffffffffff16610ef8611315565b73ffffffffffffffffffffffffffffffffffffffff1614610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590613ce2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5deb5ef622431f0df5a39b72dd556892f68ba42aa0f3aaf0800e166ce866492860405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110716121bc565b73ffffffffffffffffffffffffffffffffffffffff1661108f611315565b73ffffffffffffffffffffffffffffffffffffffff16146110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc90613ce2565b60405180910390fd5b6110ef6000613004565b565b6110f96121bc565b73ffffffffffffffffffffffffffffffffffffffff16611117611315565b73ffffffffffffffffffffffffffffffffffffffff161461116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116490613ce2565b60405180910390fd5b60288111156111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a890613f51565b60405180910390fd5b80600e8190555050565b60085481565b60006111cb6121bc565b73ffffffffffffffffffffffffffffffffffffffff166111e9611315565b73ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690613ce2565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6112696121bc565b73ffffffffffffffffffffffffffffffffffffffff16611287611315565b73ffffffffffffffffffffffffffffffffffffffff16146112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d490613ce2565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113476121bc565b73ffffffffffffffffffffffffffffffffffffffff16611365611315565b73ffffffffffffffffffffffffffffffffffffffff16146113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b290613ce2565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546113e790613c65565b80601f016020809104026020016040519081016040528092919081815260200182805461141390613c65565b80156114605780601f1061143557610100808354040283529160200191611460565b820191906000526020600020905b81548152906001019060200180831161144357829003601f168201915b5050505050905090565b6114726121bc565b73ffffffffffffffffffffffffffffffffffffffff16611490611315565b73ffffffffffffffffffffffffffffffffffffffff16146114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd90613ce2565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d90613fe3565b60405180910390fd5b61158082826130ca565b5050565b600080600160006115936121bc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790614075565b60405180910390fd5b61166461165b6121bc565b858584036121c4565b600191505092915050565b600061168361167c6121bc565b848461238d565b6001905092915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508051906020012046306040516020016117409594939291906140a4565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e670000000000000000000000000000000000008152508051906020012060006040516020016117cc939291906140f7565b604051602081830303815290604052805190602001209050600082826040516020016117f99291906141a6565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161183694939291906141dd565b6020604051602081039080840390855afa158015611858573d6000803e3d6000fd5b50505060206040510351905061186c611315565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d09061426e565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555050505050505050565b6119206121bc565b73ffffffffffffffffffffffffffffffffffffffff1661193e611315565b73ffffffffffffffffffffffffffffffffffffffff1614611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b90613ce2565b60405180910390fd5b670de0b6b3a76400006103e860056119aa610b6b565b6119b49190613d31565b6119be9190613da2565b6119c89190613da2565b811015611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190614300565b60405180910390fd5b670de0b6b3a764000081611a1e9190613d31565b600a8190555050565b60136020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a886121bc565b73ffffffffffffffffffffffffffffffffffffffff1614611aa857600080fd5b611ab130611021565b8111158015611ac05750600081115b611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af69061436c565b60405180910390fd5b611b088161316b565b50565b600b60019054906101000a900460ff1681565b611b266121bc565b73ffffffffffffffffffffffffffffffffffffffff16611b44611315565b73ffffffffffffffffffffffffffffffffffffffff1614611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190613ce2565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c3791906138db565b60405180910390a25050565b600d60009054906101000a900460ff1681565b6000611c606121bc565b73ffffffffffffffffffffffffffffffffffffffff16611c7e611315565b73ffffffffffffffffffffffffffffffffffffffff1614611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccb90613ce2565b60405180910390fd5b620186a06001611ce2610b6b565b611cec9190613d31565b611cf69190613da2565b821015611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f906143fe565b60405180910390fd5b6103e86005611d45610b6b565b611d4f9190613d31565b611d599190613da2565b821115611d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9290614490565b60405180910390fd5b8160098190555060019050919050565b611db36121bc565b73ffffffffffffffffffffffffffffffffffffffff16611dd1611315565b73ffffffffffffffffffffffffffffffffffffffff1614611e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1e90613ce2565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60126020528060005260406000206000915054906101000a900460ff1681565b6000611f396121bc565b73ffffffffffffffffffffffffffffffffffffffff16611f57611315565b73ffffffffffffffffffffffffffffffffffffffff1614611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa490613ce2565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b611fd76121bc565b73ffffffffffffffffffffffffffffffffffffffff16611ff5611315565b73ffffffffffffffffffffffffffffffffffffffff161461204b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204290613ce2565b60405180910390fd5b602881111561208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690613f51565b60405180910390fd5b80600f8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120c76121bc565b73ffffffffffffffffffffffffffffffffffffffff166120e5611315565b73ffffffffffffffffffffffffffffffffffffffff161461213b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213290613ce2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a190614522565b60405180910390fd5b6121b381613004565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a906145b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229990614646565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612380919061397f565b60405180910390a3505050565b600081036123a6576123a1838360006133a8565b612fff565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240c906146d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b9061476a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612511576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612508906147d6565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561259e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259590614842565b60405180910390fd5b600b60009054906101000a900460ff1615612c63576125bb611315565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561262957506125f9611315565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126625750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561269c575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126b55750600660149054906101000a900460ff16155b15612c6257600b60019054906101000a900460ff166127af57601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061276f5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a5906148ae565b60405180910390fd5b5b600d60009054906101000a900460ff1615612979576127cc611315565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561285357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128ad5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129785743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292a90614966565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a1c5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ac357600854811115612a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5d906149f8565b60405180910390fd5b600a54612a7283611021565b82612a7d9190613ed1565b1115612abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab590614a64565b60405180910390fd5b612c61565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b665750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bb557600854811115612bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba790614af6565b60405180910390fd5b612c60565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c5f57600a54612c1283611021565b82612c1d9190613ed1565b1115612c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5590614a64565b60405180910390fd5b5b5b5b5b5b6000612c6e30611021565b905060006009548210159050808015612c935750600b60029054906101000a900460ff165b8015612cac5750600660149054906101000a900460ff16155b8015612d025750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d585750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dae5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612df2576001600660146101000a81548160ff021916908315150217905550612dd6613627565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ea85750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612eb257600090505b60008115612fef57601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f1557506000600f54115b15612f4957612f426064612f34600f54886136ff90919063ffffffff16565b61371590919063ffffffff16565b9050612fd5565b601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fa457506000600e54115b15612fd457612fd16064612fc3600e54886136ff90919063ffffffff16565b61371590919063ffffffff16565b90505b5b612fe08730836133a8565b8085612fec9190614b16565b94505b612ffa8787876133a8565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff81111561318857613187614b4a565b5b6040519080825280602002602001820160405280156131b65781602001602082028036833780820191505090505b50905030816000815181106131ce576131cd614b79565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132979190614bbd565b816001815181106132ab576132aa614b79565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613310307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846121c4565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613372959493929190614ce3565b600060405180830381600087803b15801561338c57600080fd5b505af11580156133a0573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340e906146d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347d9061476a565b60405180910390fd5b61349183838361372b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350e90614daf565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135aa9190613ed1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161360e919061397f565b60405180910390a3613621848484613730565b50505050565b600061363230611021565b9050600060146009546136459190613d31565b82111561365e57601460095461365b9190613d31565b91505b6136678261316b565b6000479050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516136b290614e00565b60006040518083038185875af1925050503d80600081146136ef576040519150601f19603f3d011682016040523d82523d6000602084013e6136f4565b606091505b505080925050505050565b6000818361370d9190613d31565b905092915050565b600081836137239190613da2565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561376f578082015181840152602081019050613754565b60008484015250505050565b6000601f19601f8301169050919050565b600061379782613735565b6137a18185613740565b93506137b1818560208601613751565b6137ba8161377b565b840191505092915050565b600060208201905081810360008301526137df818461378c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613817826137ec565b9050919050565b6138278161380c565b811461383257600080fd5b50565b6000813590506138448161381e565b92915050565b6000819050919050565b61385d8161384a565b811461386857600080fd5b50565b60008135905061387a81613854565b92915050565b60008060408385031215613897576138966137e7565b5b60006138a585828601613835565b92505060206138b68582860161386b565b9150509250929050565b60008115159050919050565b6138d5816138c0565b82525050565b60006020820190506138f060008301846138cc565b92915050565b6000819050919050565b600061391b613916613911846137ec565b6138f6565b6137ec565b9050919050565b600061392d82613900565b9050919050565b600061393f82613922565b9050919050565b61394f81613934565b82525050565b600060208201905061396a6000830184613946565b92915050565b6139798161384a565b82525050565b60006020820190506139946000830184613970565b92915050565b6000602082840312156139b0576139af6137e7565b5b60006139be8482850161386b565b91505092915050565b6000806000606084860312156139e0576139df6137e7565b5b60006139ee86828701613835565b93505060206139ff86828701613835565b9250506040613a108682870161386b565b9150509250925092565b613a238161380c565b82525050565b6000602082019050613a3e6000830184613a1a565b92915050565b600060ff82169050919050565b613a5a81613a44565b82525050565b6000602082019050613a756000830184613a51565b92915050565b600060208284031215613a9157613a906137e7565b5b6000613a9f84828501613835565b91505092915050565b613ab1816138c0565b8114613abc57600080fd5b50565b600081359050613ace81613aa8565b92915050565b600060208284031215613aea57613ae96137e7565b5b6000613af884828501613abf565b91505092915050565b60008060408385031215613b1857613b176137e7565b5b6000613b2685828601613835565b9250506020613b3785828601613abf565b9150509250929050565b613b4a81613a44565b8114613b5557600080fd5b50565b600081359050613b6781613b41565b92915050565b6000819050919050565b613b8081613b6d565b8114613b8b57600080fd5b50565b600081359050613b9d81613b77565b92915050565b600080600060608486031215613bbc57613bbb6137e7565b5b6000613bca86828701613b58565b9350506020613bdb86828701613b8e565b9250506040613bec86828701613b8e565b9150509250925092565b60008060408385031215613c0d57613c0c6137e7565b5b6000613c1b85828601613835565b9250506020613c2c85828601613835565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c7d57607f821691505b602082108103613c9057613c8f613c36565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ccc602083613740565b9150613cd782613c96565b602082019050919050565b60006020820190508181036000830152613cfb81613cbf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d3c8261384a565b9150613d478361384a565b9250828202613d558161384a565b91508282048414831517613d6c57613d6b613d02565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613dad8261384a565b9150613db88361384a565b925082613dc857613dc7613d73565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3125600082015250565b6000613e09602083613740565b9150613e1482613dd3565b602082019050919050565b60006020820190508181036000830152613e3881613dfc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613e9b602883613740565b9150613ea682613e3f565b604082019050919050565b60006020820190508181036000830152613eca81613e8e565b9050919050565b6000613edc8261384a565b9150613ee78361384a565b9250828201905080821115613eff57613efe613d02565b5b92915050565b7f4d757374206b656570206665657320617420343025206f72206c657373000000600082015250565b6000613f3b601d83613740565b9150613f4682613f05565b602082019050919050565b60006020820190508181036000830152613f6a81613f2e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613fcd603983613740565b9150613fd882613f71565b604082019050919050565b60006020820190508181036000830152613ffc81613fc0565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061405f602583613740565b915061406a82614003565b604082019050919050565b6000602082019050818103600083015261408e81614052565b9050919050565b61409e81613b6d565b82525050565b600060a0820190506140b96000830188614095565b6140c66020830187614095565b6140d36040830186614095565b6140e06060830185613970565b6140ed6080830184613a1a565b9695505050505050565b600060608201905061410c6000830186614095565b6141196020830185614095565b6141266040830184613970565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b600061416f60028361412e565b915061417a82614139565b600282019050919050565b6000819050919050565b6141a061419b82613b6d565b614185565b82525050565b60006141b182614162565b91506141bd828561418f565b6020820191506141cd828461418f565b6020820191508190509392505050565b60006080820190506141f26000830187614095565b6141ff6020830186613a51565b61420c6040830185614095565b6142196060830184614095565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614258601183613740565b915061426382614222565b602082019050919050565b600060208201905081810360008301526142878161424b565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006142ea602483613740565b91506142f58261428e565b604082019050919050565b60006020820190508181036000830152614319816142dd565b9050919050565b7f57726f6e6720616d6f756e740000000000000000000000000000000000000000600082015250565b6000614356600c83613740565b915061436182614320565b602082019050919050565b6000602082019050818103600083015261438581614349565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006143e8603583613740565b91506143f38261438c565b604082019050919050565b60006020820190508181036000830152614417816143db565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061447a603483613740565b91506144858261441e565b604082019050919050565b600060208201905081810360008301526144a98161446d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061450c602683613740565b9150614517826144b0565b604082019050919050565b6000602082019050818103600083015261453b816144ff565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061459e602483613740565b91506145a982614542565b604082019050919050565b600060208201905081810360008301526145cd81614591565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614630602283613740565b915061463b826145d4565b604082019050919050565b6000602082019050818103600083015261465f81614623565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146c2602583613740565b91506146cd82614666565b604082019050919050565b600060208201905081810360008301526146f1816146b5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614754602383613740565b915061475f826146f8565b604082019050919050565b6000602082019050818103600083015261478381614747565b9050919050565b7f5b66726f6d5d20626c61636b206c697374000000000000000000000000000000600082015250565b60006147c0601183613740565b91506147cb8261478a565b602082019050919050565b600060208201905081810360008301526147ef816147b3565b9050919050565b7f5b746f5d20626c61636b206c6973740000000000000000000000000000000000600082015250565b600061482c600f83613740565b9150614837826147f6565b602082019050919050565b6000602082019050818103600083015261485b8161481f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614898601683613740565b91506148a382614862565b602082019050919050565b600060208201905081810360008301526148c78161488b565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614950604983613740565b915061495b826148ce565b606082019050919050565b6000602082019050818103600083015261497f81614943565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b60006149e2602683613740565b91506149ed82614986565b604082019050919050565b60006020820190508181036000830152614a11816149d5565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614a4e601383613740565b9150614a5982614a18565b602082019050919050565b60006020820190508181036000830152614a7d81614a41565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b6000614ae0602783613740565b9150614aeb82614a84565b604082019050919050565b60006020820190508181036000830152614b0f81614ad3565b9050919050565b6000614b218261384a565b9150614b2c8361384a565b9250828203905081811115614b4457614b43613d02565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614bb78161381e565b92915050565b600060208284031215614bd357614bd26137e7565b5b6000614be184828501614ba8565b91505092915050565b6000819050919050565b6000614c0f614c0a614c0584614bea565b6138f6565b61384a565b9050919050565b614c1f81614bf4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c5a8161380c565b82525050565b6000614c6c8383614c51565b60208301905092915050565b6000602082019050919050565b6000614c9082614c25565b614c9a8185614c30565b9350614ca583614c41565b8060005b83811015614cd6578151614cbd8882614c60565b9750614cc883614c78565b925050600181019050614ca9565b5085935050505092915050565b600060a082019050614cf86000830188613970565b614d056020830187614c16565b8181036040830152614d178186614c85565b9050614d266060830185613a1a565b614d336080830184613970565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614d99602683613740565b9150614da482614d3d565b604082019050919050565b60006020820190508181036000830152614dc881614d8c565b9050919050565b600081905092915050565b50565b6000614dea600083614dcf565b9150614df582614dda565b600082019050919050565b6000614e0b82614ddd565b915081905091905056fea26469706673582212208ea2bcc08f49f804a67fb90e55f7bfb02139af359d6837b8fea3982c3cfc441c64736f6c63430008170033

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.