ETH Price: $2,605.81 (-3.30%)

Token

Saluting Frog (SFROG)
 

Overview

Max Total Supply

9,999,999,999,999 SFROG

Holders

66

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
SFROGContract

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : SFROGContract.sol
/**
 *Submitted for verification at Etherscan.io on 2023-06-01
*/

/**

$SFROG - SALUTING FROG

https://salutingfrog.xyz

https://t.me/SFROGPORTAL

https://twitter.com/salutingfrog


*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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

    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    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, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

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

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

        (bool success, ) = recipient.call{value: amount}("");
        return success;
    }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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 {}
}

contract SFROGContract is ERC20, Ownable {
    using Address for address payable;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public  liquidityFeeOnBuy;
    uint256 public  liquidityFeeOnSell;

    uint256 public  marketingFeeOnBuy;
    uint256 public  marketingFeeOnSell;

    uint256 private _totalFeesOnBuy;
    uint256 private _totalFeesOnSell;

    // addresses
    address public developmentWallet;
    address public marketingWallet;

    uint256 public  swapTokensAtAmount;
    bool    private swapping;

    bool    public swapEnabled;

    uint256 public launchTime;
    bool    public ladderTaxEnabled;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event MarketingWalletChanged(address marketingWallet);
    event UpdateBuyFees(uint256 liquidityFeeOnBuy, uint256 marketingFeeOnBuy);
    event UpdateSellFees(uint256 liquidityFeeOnSell, uint256 marketingFeeOnSell);
    event UpdateWalletToWalletTransferFee(uint256 walletToWalletTransferFee);
    event SwapAndLiquify(uint256 tokensSwapped,uint256 bnbReceived,uint256 tokensIntoLiqudity);
    event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);

    constructor () ERC20("Saluting Frog", "SFROG") 
    {   
        address router;
        if (block.chainid == 56) {
            router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router
        } else if (block.chainid == 97) {
            router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router
        } else if (block.chainid == 1 || block.chainid == 5) {
            router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet
        } else {
            revert();
        }

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        liquidityFeeOnBuy  = 0;
        liquidityFeeOnSell = 0;

        marketingFeeOnBuy  = 3000; // 30%
        marketingFeeOnSell = 3000; // 30%

        _totalFeesOnBuy    = liquidityFeeOnBuy  + marketingFeeOnBuy;
        _totalFeesOnSell   = liquidityFeeOnSell + marketingFeeOnSell;

        marketingWallet = 0xEcD9c2cB26a7D6DC56D41c2129FeBCc26d2E06f2;
        developmentWallet = 0x3265403897b80DB188a240f3D49673b82ae60177;

        maxTransactionLimitEnabled = false;

        _isExcludedFromMaxTxLimit[owner()] = true;
        _isExcludedFromMaxTxLimit[address(this)] = true;
        _isExcludedFromMaxTxLimit[address(0xdead)] = true;
        _isExcludedFromMaxTxLimit[marketingWallet] = true;

        maxWalletLimitEnabled = false;

        _isExcludedFromMaxWalletLimit[owner()] = true;
        _isExcludedFromMaxWalletLimit[address(this)] = true;
        _isExcludedFromMaxWalletLimit[address(0xdead)] = true;
        _isExcludedFromMaxWalletLimit[marketingWallet] = true;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;

        uint256 _totalSupply =  9_999_999_999_999 * (10 ** decimals());
        uint256 devSupply = _totalSupply * 690 / 10000; // 6.9%
        uint256 marketingSupply = _totalSupply * 1000 / 10000; // 10%
        uint256 poolSupply = _totalSupply - (marketingSupply + devSupply); // 83.1%

        _mint(marketingWallet, marketingSupply);
        _mint(developmentWallet, devSupply);
        _mint(msg.sender, poolSupply);

        swapTokensAtAmount = totalSupply() / 5_000;
	
        maxTransactionAmountBuy     = totalSupply() * 30 / 1000; // 3%
        maxTransactionAmountSell    = totalSupply() * 30 / 1000; // 3%
        maxWalletAmount             = totalSupply() * 30 / 1000; // 3%

        tradingEnabled = false;
        swapEnabled = false;
    }

    receive() external payable {

  	}

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim contract's balance of its own tokens");
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

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

    function updateBuyFees(uint256 _liquidityFeeOnBuy, uint256 _marketingFeeOnBuy) external onlyOwner {
        liquidityFeeOnBuy = _liquidityFeeOnBuy;
        marketingFeeOnBuy = _marketingFeeOnBuy;

        _totalFeesOnBuy   = liquidityFeeOnBuy + marketingFeeOnBuy;

        require(_totalFeesOnBuy + _totalFeesOnSell <= 40000, "Total Fees cannot exceed the maximum");

        emit UpdateBuyFees(liquidityFeeOnBuy, marketingFeeOnBuy);
    }

    function updateSellFees(uint256 _liquidityFeeOnSell, uint256 _marketingFeeOnSell) external onlyOwner {
        liquidityFeeOnSell = _liquidityFeeOnSell;
        marketingFeeOnSell = _marketingFeeOnSell;

        _totalFeesOnSell   = liquidityFeeOnSell + marketingFeeOnSell;

        require(_totalFeesOnBuy + _totalFeesOnSell <= 40000, "Total Fees cannot exceed the maximum");

        emit UpdateSellFees(liquidityFeeOnSell, marketingFeeOnSell);
    }

    function serLadderTaxEnabled(bool _enabled) external onlyOwner {
        ladderTaxEnabled = _enabled;
    }

    function changeMarketingWallet(address _marketingWallet) external onlyOwner{
        require(_marketingWallet != marketingWallet,"Marketing wallet is already that address");
        require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address");
        marketingWallet = _marketingWallet;

        emit MarketingWalletChanged(marketingWallet);
    }

    bool public tradingEnabled;

    function enableTrading() external onlyOwner{
        require(!tradingEnabled, "Trading already enabled.");
        tradingEnabled = true;
        swapEnabled = true;
        launchTime = block.timestamp;
        ladderTaxEnabled = true;
    }

    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!");
       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (maxTransactionLimitEnabled) 
        {
            if ((from == uniswapV2Pair || to == uniswapV2Pair) &&
                !_isExcludedFromMaxTxLimit[from] && 
                !_isExcludedFromMaxTxLimit[to]
            ) {
                if (from == uniswapV2Pair) {
                    require(
                        amount <= maxTransactionAmountBuy,  
                        "AntiWhale: Transfer amount exceeds the maxTransactionAmount"
                    );
                } else {
                    require(
                        amount <= maxTransactionAmountSell, 
                        "AntiWhale: Transfer amount exceeds the maxTransactionAmount"
                    );
                }
            }
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            to == uniswapV2Pair &&
            _totalFeesOnBuy + _totalFeesOnSell > 0 &&
            swapEnabled
        ) {
            swapping = true;

            uint256 totalFee = _totalFeesOnBuy + _totalFeesOnSell;
            uint256 liquidityShare = liquidityFeeOnBuy + liquidityFeeOnSell;
            uint256 marketingShare = marketingFeeOnBuy + marketingFeeOnSell;

            if (liquidityShare > 0) {
                uint256 liquidityTokens = contractTokenBalance * liquidityShare / totalFee;
                swapAndLiquify(liquidityTokens);
            }
            
            if (marketingShare > 0) {
                uint256 marketingTokens = contractTokenBalance * marketingShare / totalFee;
                swapAndSendMarketing(marketingTokens);
            }          

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = _totalFeesOnBuy;
        } else if (to == uniswapV2Pair) {
            _totalFees = _totalFeesOnSell;
        } else {
            _totalFees = 0;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 10_000;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        if (maxWalletLimitEnabled) 
        {
            if (!_isExcludedFromMaxWalletLimit[from] && 
                !_isExcludedFromMaxWalletLimit[to] &&
                to != uniswapV2Pair
            ) {
                uint256 balance  = balanceOf(to);
                require(
                    balance + amount <= maxWalletAmount, 
                    "MaxWallet: Recipient exceeds the maxWalletAmount"
                );
            }
        }

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

    function setSwapEnabled(bool _enabled) external onlyOwner{
        require(swapEnabled != _enabled, "swapEnabled already at this state.");
        swapEnabled = _enabled;
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
        require(newAmount > totalSupply() / 1_000_000, "SwapTokensAtAmount must be greater than 0.0001% of total supply");
        swapTokensAtAmount = newAmount;

        emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
    }

    function swapAndLiquify(uint256 tokens) private {
        uint256 half = tokens / 2;
        uint256 otherHalf = tokens - half;

        uint256 initialBalance = address(this).balance;

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            half,
            0,
            path,
            address(this),
            block.timestamp);
        
        uint256 newBalance = address(this).balance - initialBalance;

        uniswapV2Router.addLiquidityETH{value: newBalance}(
            address(this),
            otherHalf,
            0,
            0,
            address(0xdead),
            block.timestamp
        );

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapAndSendMarketing(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);

        uint256 newBalance = address(this).balance - initialBalance;

        payable(marketingWallet).sendValue(newBalance);

        emit SwapAndSendMarketing(tokenAmount, newBalance);
    }

    mapping(address => bool) private _isExcludedFromMaxWalletLimit;
    bool    public maxWalletLimitEnabled;
    uint256 public maxWalletAmount;

    event ExcludedFromMaxWalletLimit(address indexed account, bool isExcluded);
    event MaxWalletLimitStateChanged(bool maxWalletLimit);
    event MaxWalletLimitAmountChanged(uint256 maxWalletAmount);

    function setEnableMaxWalletLimit(bool enable) external onlyOwner {
        require(enable != maxWalletLimitEnabled,"Max wallet limit is already set to that state");
        maxWalletLimitEnabled = enable;

        emit MaxWalletLimitStateChanged(maxWalletLimitEnabled);
    }

    function setMaxWalletAmount(uint256 _maxWalletAmount) external onlyOwner {
        require(_maxWalletAmount >= (totalSupply() / (10 ** decimals())) / 100, "Max wallet percentage cannot be lower than 1%");
        maxWalletAmount = _maxWalletAmount * (10 ** decimals());

        emit MaxWalletLimitAmountChanged(maxWalletAmount);
    }

    function excludeFromMaxWallet(address account, bool exclude) external onlyOwner {
        require( _isExcludedFromMaxWalletLimit[account] != exclude,"Account is already set to that state");
        _isExcludedFromMaxWalletLimit[account] = exclude;

        emit ExcludedFromMaxWalletLimit(account, exclude);
    }

    function isExcludedFromMaxWalletLimit(address account) public view returns(bool) {
        return _isExcludedFromMaxWalletLimit[account];
    }

    mapping(address => bool) private _isExcludedFromMaxTxLimit;
    bool    public  maxTransactionLimitEnabled;
    uint256 public  maxTransactionAmountBuy;
    uint256 public  maxTransactionAmountSell;

    event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded);
    event MaxTransactionLimitStateChanged(bool maxTransactionLimit);
    event MaxTransactionLimitAmountChanged(uint256 maxTransactionAmountBuy, uint256 maxTransactionAmountSell);

    function setEnableMaxTransactionLimit(bool enable) external onlyOwner {
        require(enable != maxTransactionLimitEnabled, "Max transaction limit is already set to that state");
        maxTransactionLimitEnabled = enable;

        emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled);
    }

    function setMaxTransactionAmounts(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell) external onlyOwner {
        require(
            _maxTransactionAmountBuy  >= (totalSupply() / (10 ** decimals())) / 1_000 && 
            _maxTransactionAmountSell >= (totalSupply() / (10 ** decimals())) / 1_000, 
            "Max Transaction limis cannot be lower than 0.1% of total supply"
        ); 
        maxTransactionAmountBuy  = _maxTransactionAmountBuy  * (10 ** decimals());
        maxTransactionAmountSell = _maxTransactionAmountSell * (10 ** decimals());

        emit MaxTransactionLimitAmountChanged(maxTransactionAmountBuy, maxTransactionAmountSell);
    }

    function excludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner {
        require( _isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state");
        require(account != address(this), "Can't set this address.");

        _isExcludedFromMaxTxLimit[account] = exclude;

        emit ExcludedFromMaxTransactionLimit(account, exclude);
    }

    function isExcludedFromMaxTransaction(address account) public view returns(bool) {
        return _isExcludedFromMaxTxLimit[account];
    }
}

Settings
{
  "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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountSell","type":"uint256"}],"name":"MaxTransactionLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxWalletLimit","type":"bool"}],"name":"MaxWalletLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnBuy","type":"uint256"}],"name":"UpdateBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityFeeOnSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"}],"name":"UpdateSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"UpdateWalletToWalletTransferFee","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ladderTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"serLadderTaxEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmountBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionAmountSell","type":"uint256"}],"name":"setMaxTransactionAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","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":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"_liquidityFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnBuy","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnSell","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040518060400160405280600d81526020017f53616c7574696e672046726f67000000000000000000000000000000000000008152506040518060400160405280600581526020017f5346524f4700000000000000000000000000000000000000000000000000000081525081600390816200008f9190620011ba565b508060049081620000a19190620011ba565b5050506000620000b662000ba860201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000603846036200017d577310ed43c718714eb63d5aa57b78b54704e256024e9050620001dd565b60614603620001a35773d99d1c33f9fc3444f8101754abc46c52416550d19050620001dc565b6001461480620001b35750600546145b15620001d657737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001db565b600080fd5b5b5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025691906200130b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e491906200130b565b6040518363ffffffff1660e01b8152600401620003039291906200134e565b6020604051808303816000875af115801562000323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034991906200130b565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000bb060201b60201c565b60006009819055506000600a81905550610bb8600b81905550610bb8600c81905550600b54600954620004569190620013aa565b600d81905550600c54600a546200046e9190620013aa565b600e8190555073ecd9c2cb26a7d6dc56d41c2129febcc26d2e06f2601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733265403897b80db188a240f3d49673b82ae60177600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601960006101000a81548160ff0219169083151502179055506001601860006200054f62000d8160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016018600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601660006101000a81548160ff021916908315150217905550600160156000620006fd62000d8160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860006200089062000d8160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000620009a562000dab60201b60201c565b600a620009b3919062001546565b6509184e729fff620009c6919062001597565b905060006127106102b283620009dd919062001597565b620009e9919062001611565b905060006127106103e88462000a00919062001597565b62000a0c919062001611565b90506000828262000a1e9190620013aa565b8462000a2b919062001649565b905062000a61601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168362000db460201b60201c565b62000a95600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168462000db460201b60201c565b62000aa7338262000db460201b60201c565b61138862000aba62000f2c60201b60201c565b62000ac6919062001611565b6011819055506103e8601e62000ae162000f2c60201b60201c565b62000aed919062001597565b62000af9919062001611565b601a819055506103e8601e62000b1462000f2c60201b60201c565b62000b20919062001597565b62000b2c919062001611565b601b819055506103e8601e62000b4762000f2c60201b60201c565b62000b53919062001597565b62000b5f919062001611565b6017819055506000601460016101000a81548160ff0219169083151502179055506000601260016101000a81548160ff0219169083151502179055505050505050505062001865565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000c22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c19906200170b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000c94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c8b90620017a3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d749190620017d6565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000e26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e1d9062001843565b60405180910390fd5b62000e3a6000838362000f3660201b60201c565b806002600082825462000e4e9190620013aa565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000ea59190620013aa565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000f0c9190620017d6565b60405180910390a362000f286000838362000f3b60201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000fc257607f821691505b60208210810362000fd85762000fd762000f7a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620010427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001003565b6200104e868362001003565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200109b620010956200108f8462001066565b62001070565b62001066565b9050919050565b6000819050919050565b620010b7836200107a565b620010cf620010c682620010a2565b84845462001010565b825550505050565b600090565b620010e6620010d7565b620010f3818484620010ac565b505050565b5b818110156200111b576200110f600082620010dc565b600181019050620010f9565b5050565b601f8211156200116a57620011348162000fde565b6200113f8462000ff3565b810160208510156200114f578190505b620011676200115e8562000ff3565b830182620010f8565b50505b505050565b600082821c905092915050565b60006200118f600019846008026200116f565b1980831691505092915050565b6000620011aa83836200117c565b9150826002028217905092915050565b620011c58262000f40565b67ffffffffffffffff811115620011e157620011e062000f4b565b5b620011ed825462000fa9565b620011fa8282856200111f565b600060209050601f8311600181146200123257600084156200121d578287015190505b6200122985826200119c565b86555062001299565b601f198416620012428662000fde565b60005b828110156200126c5784890151825560018201915060208501945060208101905062001245565b868310156200128c578489015162001288601f8916826200117c565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620012d382620012a6565b9050919050565b620012e581620012c6565b8114620012f157600080fd5b50565b6000815190506200130581620012da565b92915050565b600060208284031215620013245762001323620012a1565b5b60006200133484828501620012f4565b91505092915050565b6200134881620012c6565b82525050565b60006040820190506200136560008301856200133d565b6200137460208301846200133d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620013b78262001066565b9150620013c48362001066565b9250828201905080821115620013df57620013de6200137b565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562001444578086048111156200141c576200141b6200137b565b5b60018516156200142c5780820291505b80810290506200143c85620013e5565b9450620013fc565b94509492505050565b6000826200145f576001905062001532565b816200146f576000905062001532565b81600181146200148857600281146200149357620014c9565b600191505062001532565b60ff841115620014a857620014a76200137b565b5b8360020a915084821115620014c257620014c16200137b565b5b5062001532565b5060208310610133831016604e8410600b8410161715620015035782820a905083811115620014fd57620014fc6200137b565b5b62001532565b620015128484846001620013f2565b925090508184048111156200152c576200152b6200137b565b5b81810290505b9392505050565b600060ff82169050919050565b6000620015538262001066565b9150620015608362001539565b92506200158f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200144d565b905092915050565b6000620015a48262001066565b9150620015b18362001066565b9250828202620015c18162001066565b91508282048414831517620015db57620015da6200137b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200161e8262001066565b91506200162b8362001066565b9250826200163e576200163d620015e2565b5b828204905092915050565b6000620016568262001066565b9150620016638362001066565b92508282039050818111156200167e576200167d6200137b565b5b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620016f360248362001684565b9150620017008262001695565b604082019050919050565b600060208201905081810360008301526200172681620016e4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200178b60228362001684565b915062001798826200172d565b604082019050919050565b60006020820190508181036000830152620017be816200177c565b9050919050565b620017d08162001066565b82525050565b6000602082019050620017ed6000830184620017c5565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200182b601f8362001684565b91506200183882620017f3565b602082019050919050565b600060208201905081810360008301526200185e816200181c565b9050919050565b615c0180620018756000396000f3fe6080604052600436106102cd5760003560e01c806375f0a87411610175578063b6f7f681116100dc578063d2fcc00111610095578063e01af92c1161006f578063e01af92c14610b07578063e2f4560514610b30578063f2fde38b14610b5b578063f9d0831a14610b84576102d4565b8063d2fcc00114610a76578063dc4c7dbc14610a9f578063dd62ed3e14610aca576102d4565b8063b6f7f6811461097c578063bb85c6d1146109a5578063bdc52da8146109ce578063c0246668146109f9578063c04a541414610a22578063d2e335eb14610a4d576102d4565b806395d89b411161012e57806395d89b4114610846578063a457c2d714610871578063a8a69b9d146108ae578063a9059cbb146108eb578063aa4bde2814610928578063afa4f3b214610953576102d4565b806375f0a8741461075a578063790ca413146107855780637b3c83b1146107b0578063880bcbc1146107db5780638a8c523c146108045780638da5cb5b1461081b576102d4565b80632ce86fbf1161023457806356a6cabf116101ed57806366ca9b83116101c757806366ca9b83146106b25780636ddd1713146106db57806370a0823114610706578063715018a614610743576102d4565b806356a6cabf1461063357806359136fa51461065c5780635fc2e59614610687576102d4565b80632ce86fbf1461050d578063313ce56714610538578063395093511461056357806349bd5a5e146105a05780634ada218b146105cb5780634fbee193146105f6576102d4565b806318d9ceae1161028657806318d9ceae146103eb57806321a9d82a1461042857806323b872dd1461045357806327a14fc2146104905780632a6c7dba146104b95780632ba86bf2146104e2576102d4565b80630105d0fd146102d957806302dbd8f81461030457806306fdde031461032d578063095ea7b3146103585780631694505e1461039557806318160ddd146103c0576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610bad565b6040516102fb919061419f565b60405180910390f35b34801561031057600080fd5b5061032b600480360381019061032691906141eb565b610bb3565b005b34801561033957600080fd5b50610342610d03565b60405161034f91906142bb565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a919061433b565b610d95565b60405161038c9190614396565b60405180910390f35b3480156103a157600080fd5b506103aa610db3565b6040516103b79190614410565b60405180910390f35b3480156103cc57600080fd5b506103d5610dd9565b6040516103e2919061419f565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d919061442b565b610de3565b60405161041f9190614396565b60405180910390f35b34801561043457600080fd5b5061043d610e39565b60405161044a9190614396565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190614458565b610e4c565b6040516104879190614396565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b291906144ab565b610f6b565b005b3480156104c557600080fd5b506104e060048036038101906104db9190614504565b6110d7565b005b3480156104ee57600080fd5b506104f7611226565b6040516105049190614396565b60405180910390f35b34801561051957600080fd5b50610522611239565b60405161052f919061419f565b60405180910390f35b34801561054457600080fd5b5061054d61123f565b60405161055a919061454d565b60405180910390f35b34801561056f57600080fd5b5061058a6004803603810190610585919061433b565b611248565b6040516105979190614396565b60405180910390f35b3480156105ac57600080fd5b506105b56112f4565b6040516105c29190614577565b60405180910390f35b3480156105d757600080fd5b506105e061131a565b6040516105ed9190614396565b60405180910390f35b34801561060257600080fd5b5061061d6004803603810190610618919061442b565b61132d565b60405161062a9190614396565b60405180910390f35b34801561063f57600080fd5b5061065a60048036038101906106559190614504565b611383565b005b34801561066857600080fd5b506106716114d2565b60405161067e919061419f565b60405180910390f35b34801561069357600080fd5b5061069c6114d8565b6040516106a9919061419f565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d491906141eb565b6114de565b005b3480156106e757600080fd5b506106f061162e565b6040516106fd9190614396565b60405180910390f35b34801561071257600080fd5b5061072d6004803603810190610728919061442b565b611641565b60405161073a919061419f565b60405180910390f35b34801561074f57600080fd5b50610758611689565b005b34801561076657600080fd5b5061076f6117e1565b60405161077c9190614577565b60405180910390f35b34801561079157600080fd5b5061079a611807565b6040516107a7919061419f565b60405180910390f35b3480156107bc57600080fd5b506107c561180d565b6040516107d2919061419f565b60405180910390f35b3480156107e757600080fd5b5061080260048036038101906107fd9190614592565b611813565b005b34801561081057600080fd5b50610819611a53565b005b34801561082757600080fd5b50610830611b94565b60405161083d9190614577565b60405180910390f35b34801561085257600080fd5b5061085b611bbe565b60405161086891906142bb565b60405180910390f35b34801561087d57600080fd5b506108986004803603810190610893919061433b565b611c50565b6040516108a59190614396565b60405180910390f35b3480156108ba57600080fd5b506108d560048036038101906108d0919061442b565b611d3b565b6040516108e29190614396565b60405180910390f35b3480156108f757600080fd5b50610912600480360381019061090d919061433b565b611d91565b60405161091f9190614396565b60405180910390f35b34801561093457600080fd5b5061093d611daf565b60405161094a919061419f565b60405180910390f35b34801561095f57600080fd5b5061097a600480360381019061097591906144ab565b611db5565b005b34801561098857600080fd5b506109a3600480360381019061099e91906141eb565b611ee6565b005b3480156109b157600080fd5b506109cc60048036038101906109c7919061442b565b6120bb565b005b3480156109da57600080fd5b506109e36122ee565b6040516109f09190614396565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b9190614592565b612301565b005b348015610a2e57600080fd5b50610a376124d3565b604051610a449190614577565b60405180910390f35b348015610a5957600080fd5b50610a746004803603810190610a6f9190614504565b6124f9565b005b348015610a8257600080fd5b50610a9d6004803603810190610a989190614592565b6125ad565b005b348015610aab57600080fd5b50610ab461277f565b604051610ac1919061419f565b60405180910390f35b348015610ad657600080fd5b50610af16004803603810190610aec91906145d2565b612785565b604051610afe919061419f565b60405180910390f35b348015610b1357600080fd5b50610b2e6004803603810190610b299190614504565b61280c565b005b348015610b3c57600080fd5b50610b45612915565b604051610b52919061419f565b60405180910390f35b348015610b6757600080fd5b50610b826004803603810190610b7d919061442b565b61291b565b005b348015610b9057600080fd5b50610bab6004803603810190610ba6919061442b565b612ae1565b005b601a5481565b610bbb612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c419061465e565b60405180910390fd5b81600a8190555080600c81905550600c54600a54610c6891906146ad565b600e81905550619c40600e54600d54610c8191906146ad565b1115610cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb990614753565b60405180910390fd5b7f12dd4f8337f0c236c7994706854cca8cd53921c0032cb0fba8cdb797e73f67c6600a54600c54604051610cf7929190614773565b60405180910390a15050565b606060038054610d12906147cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3e906147cb565b8015610d8b5780601f10610d6057610100808354040283529160200191610d8b565b820191906000526020600020905b815481529060010190602001808311610d6e57829003601f168201915b5050505050905090565b6000610da9610da2612d51565b8484612d59565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601660009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e98612d51565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f545782811015610f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f369061486e565b60405180910390fd5b610f5385610f4b612d51565b858403612d59565b5b610f5f858585612f22565b60019150509392505050565b610f73612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff99061465e565b60405180910390fd5b606461100c61123f565b600a61101891906149c1565b611020610dd9565b61102a9190614a3b565b6110349190614a3b565b811015611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d90614ade565b60405180910390fd5b61107e61123f565b600a61108a91906149c1565b816110959190614afe565b6017819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb59426017546040516110cc919061419f565b60405180910390a150565b6110df612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111659061465e565b60405180910390fd5b601660009054906101000a900460ff161515811515036111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba90614bb2565b60405180910390fd5b80601660006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601660009054906101000a900460ff1660405161121b9190614396565b60405180910390a150565b601960009054906101000a900460ff1681565b600a5481565b60006012905090565b60006112ea611255612d51565b848460016000611263612d51565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112e591906146ad565b612d59565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460019054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61138b612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114119061465e565b60405180910390fd5b601960009054906101000a900460ff1615158115150361146f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146690614c44565b60405180910390fd5b80601960006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601960009054906101000a900460ff166040516114c79190614396565b60405180910390a150565b601b5481565b600b5481565b6114e6612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c9061465e565b60405180910390fd5b8160098190555080600b81905550600b5460095461159391906146ad565b600d81905550619c40600e54600d546115ac91906146ad565b11156115ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e490614753565b60405180910390fd5b7fccd61cb5df2cb048d1a7af40a431d6f247af01b6cf048f7a3f2aa9d313e2bc50600954600b54604051611622929190614773565b60405180910390a15050565b601260019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611691612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117179061465e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60095481565b61181b612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a19061465e565b60405180910390fd5b801515601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361193c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193390614cd6565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a190614d42565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1082604051611a479190614396565b60405180910390a25050565b611a5b612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae19061465e565b60405180910390fd5b601460019054906101000a900460ff1615611b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3190614dae565b60405180910390fd5b6001601460016101000a81548160ff0219169083151502179055506001601260016101000a81548160ff021916908315150217905550426013819055506001601460006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611bcd906147cb565b80601f0160208091040260200160405190810160405280929190818152602001828054611bf9906147cb565b8015611c465780601f10611c1b57610100808354040283529160200191611c46565b820191906000526020600020905b815481529060010190602001808311611c2957829003601f168201915b5050505050905090565b60008060016000611c5f612d51565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1390614e40565b60405180910390fd5b611d30611d27612d51565b85858403612d59565b600191505092915050565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611da5611d9e612d51565b8484612f22565b6001905092915050565b60175481565b611dbd612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e439061465e565b60405180910390fd5b620f4240611e58610dd9565b611e629190614a3b565b8111611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90614ed2565b60405180910390fd5b806011819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145601154604051611edb919061419f565b60405180910390a150565b611eee612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f749061465e565b60405180910390fd5b6103e8611f8861123f565b600a611f9491906149c1565b611f9c610dd9565b611fa69190614a3b565b611fb09190614a3b565b8210158015611ff157506103e8611fc561123f565b600a611fd191906149c1565b611fd9610dd9565b611fe39190614a3b565b611fed9190614a3b565b8110155b612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790614f64565b60405180910390fd5b61203861123f565b600a61204491906149c1565b8261204f9190614afe565b601a8190555061205d61123f565b600a61206991906149c1565b816120749190614afe565b601b819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601a54601b546040516120af929190614773565b60405180910390a15050565b6120c3612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612152576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121499061465e565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d990614ff6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890615088565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516122e39190614577565b60405180910390a150565b601460009054906101000a900460ff1681565b612309612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f9061465e565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361242a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124219061511a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516124c79190614396565b60405180910390a25050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612501612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612590576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125879061465e565b60405180910390fd5b80601460006101000a81548160ff02191690831515021790555050565b6125b5612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263b9061465e565b60405180910390fd5b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036126d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cd90614cd6565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c826040516127739190614396565b60405180910390a25050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612814612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289a9061465e565b60405180910390fd5b801515601260019054906101000a900460ff161515036128f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ef906151ac565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b60115481565b612923612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a99061465e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a189061523e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ae9612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f9061465e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bdd906152d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c4957612c43473373ffffffffffffffffffffffffffffffffffffffff1661385690919063ffffffff16565b50612d4e565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c899190614577565b602060405180830381865afa158015612ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cca9190615305565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612d07929190615332565b6020604051808303816000875af1158015612d26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4a9190615370565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbf9061540f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2e906154a1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f15919061419f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8890615533565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff7906155c5565b60405180910390fd5b601460019054906101000a900460ff16806130645750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130b85750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ee90615631565b60405180910390fd5b600081036131105761310b83836000613911565b613851565b601960009054906101000a900460ff161561336657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806131ce5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156132245750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561327a5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561336557600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361331e57601a54811115613319576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613310906156c3565b60405180910390fd5b613364565b601b54811115613363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335a906156c3565b60405180910390fd5b5b5b5b600061337130611641565b9050600060115482101590508080156133975750601260009054906101000a900460ff16155b80156133f05750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561340b57506000600e54600d5461340991906146ad565b115b80156134235750601260019054906101000a900460ff165b156134fc576001601260006101000a81548160ff0219169083151502179055506000600e54600d5461345591906146ad565b90506000600a5460095461346991906146ad565b90506000600c54600b5461347d91906146ad565b905060008211156134ae5760008383876134979190614afe565b6134a19190614a3b565b90506134ac81613b90565b505b60008111156134dd5760008382876134c69190614afe565b6134d09190614a3b565b90506134db81613eca565b505b6000601260006101000a81548160ff0219169083151502179055505050505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061359f5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806135b65750601260009054906101000a900460ff165b156135c45760009050613689565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361362357600d549050613688565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361368257600e549050613687565b600090505b5b5b60008111156136ca57600061271082866136a39190614afe565b6136ad9190614a3b565b905080856136bb91906156e3565b94506136c8873083613911565b505b601660009054906101000a900460ff161561384257601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137835750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137dd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156138415760006137ed86611641565b905060175485826137fe91906146ad565b111561383f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161383690615789565b60405180910390fd5b505b5b61384d868686613911565b5050505b505050565b60008147101561389b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613892906157f5565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16836040516138c190615846565b60006040518083038185875af1925050503d80600081146138fe576040519150601f19603f3d011682016040523d82523d6000602084013e613903565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397790615533565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139e6906155c5565b60405180910390fd5b6139fa83838361417c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a77906158cd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b1391906146ad565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b77919061419f565b60405180910390a3613b8a848484614181565b50505050565b6000600282613b9f9190614a3b565b905060008183613baf91906156e3565b905060004790506000600267ffffffffffffffff811115613bd357613bd26158ed565b5b604051908082528060200260200182016040528015613c015781602001602082028036833780820191505090505b5090503081600081518110613c1957613c1861591c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce49190615960565b81600181518110613cf857613cf761591c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401613d96959493929190615a86565b600060405180830381600087803b158015613db057600080fd5b505af1158015613dc4573d6000803e3d6000fd5b5050505060008247613dd691906156e3565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308760008061dead426040518863ffffffff1660e01b8152600401613e4196959493929190615ae0565b60606040518083038185885af1158015613e5f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e849190615b41565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858286604051613eba93929190615b94565b60405180910390a1505050505050565b60004790506000600267ffffffffffffffff811115613eec57613eeb6158ed565b5b604051908082528060200260200182016040528015613f1a5781602001602082028036833780820191505090505b5090503081600081518110613f3257613f3161591c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ffd9190615960565b816001815181106140115761401061591c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016140af959493929190615a86565b600060405180830381600087803b1580156140c957600080fd5b505af11580156140dd573d6000803e3d6000fd5b50505050600082476140ef91906156e3565b905061413c81601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661385690919063ffffffff16565b507f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999848260405161416e929190614773565b60405180910390a150505050565b505050565b505050565b6000819050919050565b61419981614186565b82525050565b60006020820190506141b46000830184614190565b92915050565b600080fd5b6141c881614186565b81146141d357600080fd5b50565b6000813590506141e5816141bf565b92915050565b60008060408385031215614202576142016141ba565b5b6000614210858286016141d6565b9250506020614221858286016141d6565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561426557808201518184015260208101905061424a565b60008484015250505050565b6000601f19601f8301169050919050565b600061428d8261422b565b6142978185614236565b93506142a7818560208601614247565b6142b081614271565b840191505092915050565b600060208201905081810360008301526142d58184614282565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614308826142dd565b9050919050565b614318816142fd565b811461432357600080fd5b50565b6000813590506143358161430f565b92915050565b60008060408385031215614352576143516141ba565b5b600061436085828601614326565b9250506020614371858286016141d6565b9150509250929050565b60008115159050919050565b6143908161437b565b82525050565b60006020820190506143ab6000830184614387565b92915050565b6000819050919050565b60006143d66143d16143cc846142dd565b6143b1565b6142dd565b9050919050565b60006143e8826143bb565b9050919050565b60006143fa826143dd565b9050919050565b61440a816143ef565b82525050565b60006020820190506144256000830184614401565b92915050565b600060208284031215614441576144406141ba565b5b600061444f84828501614326565b91505092915050565b600080600060608486031215614471576144706141ba565b5b600061447f86828701614326565b935050602061449086828701614326565b92505060406144a1868287016141d6565b9150509250925092565b6000602082840312156144c1576144c06141ba565b5b60006144cf848285016141d6565b91505092915050565b6144e18161437b565b81146144ec57600080fd5b50565b6000813590506144fe816144d8565b92915050565b60006020828403121561451a576145196141ba565b5b6000614528848285016144ef565b91505092915050565b600060ff82169050919050565b61454781614531565b82525050565b6000602082019050614562600083018461453e565b92915050565b614571816142fd565b82525050565b600060208201905061458c6000830184614568565b92915050565b600080604083850312156145a9576145a86141ba565b5b60006145b785828601614326565b92505060206145c8858286016144ef565b9150509250929050565b600080604083850312156145e9576145e86141ba565b5b60006145f785828601614326565b925050602061460885828601614326565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614648602083614236565b915061465382614612565b602082019050919050565b600060208201905081810360008301526146778161463b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146b882614186565b91506146c383614186565b92508282019050808211156146db576146da61467e565b5b92915050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b600061473d602483614236565b9150614748826146e1565b604082019050919050565b6000602082019050818103600083015261476c81614730565b9050919050565b60006040820190506147886000830185614190565b6147956020830184614190565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806147e357607f821691505b6020821081036147f6576147f561479c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614858602883614236565b9150614863826147fc565b604082019050919050565b600060208201905081810360008301526148878161484b565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156148e5578086048111156148c1576148c061467e565b5b60018516156148d05780820291505b80810290506148de8561488e565b94506148a5565b94509492505050565b6000826148fe57600190506149ba565b8161490c57600090506149ba565b8160018114614922576002811461492c5761495b565b60019150506149ba565b60ff84111561493e5761493d61467e565b5b8360020a9150848211156149555761495461467e565b5b506149ba565b5060208310610133831016604e8410600b84101617156149905782820a90508381111561498b5761498a61467e565b5b6149ba565b61499d848484600161489b565b925090508184048111156149b4576149b361467e565b5b81810290505b9392505050565b60006149cc82614186565b91506149d783614531565b9250614a047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846148ee565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a4682614186565b9150614a5183614186565b925082614a6157614a60614a0c565b5b828204905092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614ac8602d83614236565b9150614ad382614a6c565b604082019050919050565b60006020820190508181036000830152614af781614abb565b9050919050565b6000614b0982614186565b9150614b1483614186565b9250828202614b2281614186565b91508282048414831517614b3957614b3861467e565b5b5092915050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b6000614b9c602d83614236565b9150614ba782614b40565b604082019050919050565b60006020820190508181036000830152614bcb81614b8f565b9050919050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b6000614c2e603283614236565b9150614c3982614bd2565b604082019050919050565b60006020820190508181036000830152614c5d81614c21565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b6000614cc0602483614236565b9150614ccb82614c64565b604082019050919050565b60006020820190508181036000830152614cef81614cb3565b9050919050565b7f43616e277420736574207468697320616464726573732e000000000000000000600082015250565b6000614d2c601783614236565b9150614d3782614cf6565b602082019050919050565b60006020820190508181036000830152614d5b81614d1f565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000614d98601883614236565b9150614da382614d62565b602082019050919050565b60006020820190508181036000830152614dc781614d8b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614e2a602583614236565b9150614e3582614dce565b604082019050919050565b60006020820190508181036000830152614e5981614e1d565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000614ebc603f83614236565b9150614ec782614e60565b604082019050919050565b60006020820190508181036000830152614eeb81614eaf565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000614f4e603f83614236565b9150614f5982614ef2565b604082019050919050565b60006020820190508181036000830152614f7d81614f41565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000614fe0602883614236565b9150614feb82614f84565b604082019050919050565b6000602082019050818103600083015261500f81614fd3565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000615072602b83614236565b915061507d82615016565b604082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000615104602a83614236565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000615196602283614236565b91506151a18261513a565b604082019050919050565b600060208201905081810360008301526151c581615189565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615228602683614236565b9150615233826151cc565b604082019050919050565b600060208201905081810360008301526152578161521b565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b60006152ba603783614236565b91506152c58261525e565b604082019050919050565b600060208201905081810360008301526152e9816152ad565b9050919050565b6000815190506152ff816141bf565b92915050565b60006020828403121561531b5761531a6141ba565b5b6000615329848285016152f0565b91505092915050565b60006040820190506153476000830185614568565b6153546020830184614190565b9392505050565b60008151905061536a816144d8565b92915050565b600060208284031215615386576153856141ba565b5b60006153948482850161535b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006153f9602483614236565b91506154048261539d565b604082019050919050565b60006020820190508181036000830152615428816153ec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061548b602283614236565b91506154968261542f565b604082019050919050565b600060208201905081810360008301526154ba8161547e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061551d602583614236565b9150615528826154c1565b604082019050919050565b6000602082019050818103600083015261554c81615510565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155af602383614236565b91506155ba82615553565b604082019050919050565b600060208201905081810360008301526155de816155a2565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b600061561b601883614236565b9150615626826155e5565b602082019050919050565b6000602082019050818103600083015261564a8161560e565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b60006156ad603b83614236565b91506156b882615651565b604082019050919050565b600060208201905081810360008301526156dc816156a0565b9050919050565b60006156ee82614186565b91506156f983614186565b92508282039050818111156157115761571061467e565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000615773603083614236565b915061577e82615717565b604082019050919050565b600060208201905081810360008301526157a281615766565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006157df601d83614236565b91506157ea826157a9565b602082019050919050565b6000602082019050818103600083015261580e816157d2565b9050919050565b600081905092915050565b50565b6000615830600083615815565b915061583b82615820565b600082019050919050565b600061585182615823565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006158b7602683614236565b91506158c28261585b565b604082019050919050565b600060208201905081810360008301526158e6816158aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061595a8161430f565b92915050565b600060208284031215615976576159756141ba565b5b60006159848482850161594b565b91505092915050565b6000819050919050565b60006159b26159ad6159a88461598d565b6143b1565b614186565b9050919050565b6159c281615997565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159fd816142fd565b82525050565b6000615a0f83836159f4565b60208301905092915050565b6000602082019050919050565b6000615a33826159c8565b615a3d81856159d3565b9350615a48836159e4565b8060005b83811015615a79578151615a608882615a03565b9750615a6b83615a1b565b925050600181019050615a4c565b5085935050505092915050565b600060a082019050615a9b6000830188614190565b615aa860208301876159b9565b8181036040830152615aba8186615a28565b9050615ac96060830185614568565b615ad66080830184614190565b9695505050505050565b600060c082019050615af56000830189614568565b615b026020830188614190565b615b0f60408301876159b9565b615b1c60608301866159b9565b615b296080830185614568565b615b3660a0830184614190565b979650505050505050565b600080600060608486031215615b5a57615b596141ba565b5b6000615b68868287016152f0565b9350506020615b79868287016152f0565b9250506040615b8a868287016152f0565b9150509250925092565b6000606082019050615ba96000830186614190565b615bb66020830185614190565b615bc36040830184614190565b94935050505056fea26469706673582212204fed2ecf22e3264977b3eb7cffe8ea3bec8513d75e9b92bd64cccf59bf2f783264736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c806375f0a87411610175578063b6f7f681116100dc578063d2fcc00111610095578063e01af92c1161006f578063e01af92c14610b07578063e2f4560514610b30578063f2fde38b14610b5b578063f9d0831a14610b84576102d4565b8063d2fcc00114610a76578063dc4c7dbc14610a9f578063dd62ed3e14610aca576102d4565b8063b6f7f6811461097c578063bb85c6d1146109a5578063bdc52da8146109ce578063c0246668146109f9578063c04a541414610a22578063d2e335eb14610a4d576102d4565b806395d89b411161012e57806395d89b4114610846578063a457c2d714610871578063a8a69b9d146108ae578063a9059cbb146108eb578063aa4bde2814610928578063afa4f3b214610953576102d4565b806375f0a8741461075a578063790ca413146107855780637b3c83b1146107b0578063880bcbc1146107db5780638a8c523c146108045780638da5cb5b1461081b576102d4565b80632ce86fbf1161023457806356a6cabf116101ed57806366ca9b83116101c757806366ca9b83146106b25780636ddd1713146106db57806370a0823114610706578063715018a614610743576102d4565b806356a6cabf1461063357806359136fa51461065c5780635fc2e59614610687576102d4565b80632ce86fbf1461050d578063313ce56714610538578063395093511461056357806349bd5a5e146105a05780634ada218b146105cb5780634fbee193146105f6576102d4565b806318d9ceae1161028657806318d9ceae146103eb57806321a9d82a1461042857806323b872dd1461045357806327a14fc2146104905780632a6c7dba146104b95780632ba86bf2146104e2576102d4565b80630105d0fd146102d957806302dbd8f81461030457806306fdde031461032d578063095ea7b3146103585780631694505e1461039557806318160ddd146103c0576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610bad565b6040516102fb919061419f565b60405180910390f35b34801561031057600080fd5b5061032b600480360381019061032691906141eb565b610bb3565b005b34801561033957600080fd5b50610342610d03565b60405161034f91906142bb565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a919061433b565b610d95565b60405161038c9190614396565b60405180910390f35b3480156103a157600080fd5b506103aa610db3565b6040516103b79190614410565b60405180910390f35b3480156103cc57600080fd5b506103d5610dd9565b6040516103e2919061419f565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d919061442b565b610de3565b60405161041f9190614396565b60405180910390f35b34801561043457600080fd5b5061043d610e39565b60405161044a9190614396565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190614458565b610e4c565b6040516104879190614396565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b291906144ab565b610f6b565b005b3480156104c557600080fd5b506104e060048036038101906104db9190614504565b6110d7565b005b3480156104ee57600080fd5b506104f7611226565b6040516105049190614396565b60405180910390f35b34801561051957600080fd5b50610522611239565b60405161052f919061419f565b60405180910390f35b34801561054457600080fd5b5061054d61123f565b60405161055a919061454d565b60405180910390f35b34801561056f57600080fd5b5061058a6004803603810190610585919061433b565b611248565b6040516105979190614396565b60405180910390f35b3480156105ac57600080fd5b506105b56112f4565b6040516105c29190614577565b60405180910390f35b3480156105d757600080fd5b506105e061131a565b6040516105ed9190614396565b60405180910390f35b34801561060257600080fd5b5061061d6004803603810190610618919061442b565b61132d565b60405161062a9190614396565b60405180910390f35b34801561063f57600080fd5b5061065a60048036038101906106559190614504565b611383565b005b34801561066857600080fd5b506106716114d2565b60405161067e919061419f565b60405180910390f35b34801561069357600080fd5b5061069c6114d8565b6040516106a9919061419f565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d491906141eb565b6114de565b005b3480156106e757600080fd5b506106f061162e565b6040516106fd9190614396565b60405180910390f35b34801561071257600080fd5b5061072d6004803603810190610728919061442b565b611641565b60405161073a919061419f565b60405180910390f35b34801561074f57600080fd5b50610758611689565b005b34801561076657600080fd5b5061076f6117e1565b60405161077c9190614577565b60405180910390f35b34801561079157600080fd5b5061079a611807565b6040516107a7919061419f565b60405180910390f35b3480156107bc57600080fd5b506107c561180d565b6040516107d2919061419f565b60405180910390f35b3480156107e757600080fd5b5061080260048036038101906107fd9190614592565b611813565b005b34801561081057600080fd5b50610819611a53565b005b34801561082757600080fd5b50610830611b94565b60405161083d9190614577565b60405180910390f35b34801561085257600080fd5b5061085b611bbe565b60405161086891906142bb565b60405180910390f35b34801561087d57600080fd5b506108986004803603810190610893919061433b565b611c50565b6040516108a59190614396565b60405180910390f35b3480156108ba57600080fd5b506108d560048036038101906108d0919061442b565b611d3b565b6040516108e29190614396565b60405180910390f35b3480156108f757600080fd5b50610912600480360381019061090d919061433b565b611d91565b60405161091f9190614396565b60405180910390f35b34801561093457600080fd5b5061093d611daf565b60405161094a919061419f565b60405180910390f35b34801561095f57600080fd5b5061097a600480360381019061097591906144ab565b611db5565b005b34801561098857600080fd5b506109a3600480360381019061099e91906141eb565b611ee6565b005b3480156109b157600080fd5b506109cc60048036038101906109c7919061442b565b6120bb565b005b3480156109da57600080fd5b506109e36122ee565b6040516109f09190614396565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b9190614592565b612301565b005b348015610a2e57600080fd5b50610a376124d3565b604051610a449190614577565b60405180910390f35b348015610a5957600080fd5b50610a746004803603810190610a6f9190614504565b6124f9565b005b348015610a8257600080fd5b50610a9d6004803603810190610a989190614592565b6125ad565b005b348015610aab57600080fd5b50610ab461277f565b604051610ac1919061419f565b60405180910390f35b348015610ad657600080fd5b50610af16004803603810190610aec91906145d2565b612785565b604051610afe919061419f565b60405180910390f35b348015610b1357600080fd5b50610b2e6004803603810190610b299190614504565b61280c565b005b348015610b3c57600080fd5b50610b45612915565b604051610b52919061419f565b60405180910390f35b348015610b6757600080fd5b50610b826004803603810190610b7d919061442b565b61291b565b005b348015610b9057600080fd5b50610bab6004803603810190610ba6919061442b565b612ae1565b005b601a5481565b610bbb612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c419061465e565b60405180910390fd5b81600a8190555080600c81905550600c54600a54610c6891906146ad565b600e81905550619c40600e54600d54610c8191906146ad565b1115610cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb990614753565b60405180910390fd5b7f12dd4f8337f0c236c7994706854cca8cd53921c0032cb0fba8cdb797e73f67c6600a54600c54604051610cf7929190614773565b60405180910390a15050565b606060038054610d12906147cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3e906147cb565b8015610d8b5780601f10610d6057610100808354040283529160200191610d8b565b820191906000526020600020905b815481529060010190602001808311610d6e57829003601f168201915b5050505050905090565b6000610da9610da2612d51565b8484612d59565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601660009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e98612d51565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f545782811015610f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f369061486e565b60405180910390fd5b610f5385610f4b612d51565b858403612d59565b5b610f5f858585612f22565b60019150509392505050565b610f73612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff99061465e565b60405180910390fd5b606461100c61123f565b600a61101891906149c1565b611020610dd9565b61102a9190614a3b565b6110349190614a3b565b811015611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d90614ade565b60405180910390fd5b61107e61123f565b600a61108a91906149c1565b816110959190614afe565b6017819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb59426017546040516110cc919061419f565b60405180910390a150565b6110df612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111659061465e565b60405180910390fd5b601660009054906101000a900460ff161515811515036111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba90614bb2565b60405180910390fd5b80601660006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601660009054906101000a900460ff1660405161121b9190614396565b60405180910390a150565b601960009054906101000a900460ff1681565b600a5481565b60006012905090565b60006112ea611255612d51565b848460016000611263612d51565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112e591906146ad565b612d59565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460019054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61138b612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114119061465e565b60405180910390fd5b601960009054906101000a900460ff1615158115150361146f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146690614c44565b60405180910390fd5b80601960006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601960009054906101000a900460ff166040516114c79190614396565b60405180910390a150565b601b5481565b600b5481565b6114e6612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c9061465e565b60405180910390fd5b8160098190555080600b81905550600b5460095461159391906146ad565b600d81905550619c40600e54600d546115ac91906146ad565b11156115ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e490614753565b60405180910390fd5b7fccd61cb5df2cb048d1a7af40a431d6f247af01b6cf048f7a3f2aa9d313e2bc50600954600b54604051611622929190614773565b60405180910390a15050565b601260019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611691612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117179061465e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60095481565b61181b612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a19061465e565b60405180910390fd5b801515601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361193c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193390614cd6565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a190614d42565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1082604051611a479190614396565b60405180910390a25050565b611a5b612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae19061465e565b60405180910390fd5b601460019054906101000a900460ff1615611b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3190614dae565b60405180910390fd5b6001601460016101000a81548160ff0219169083151502179055506001601260016101000a81548160ff021916908315150217905550426013819055506001601460006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611bcd906147cb565b80601f0160208091040260200160405190810160405280929190818152602001828054611bf9906147cb565b8015611c465780601f10611c1b57610100808354040283529160200191611c46565b820191906000526020600020905b815481529060010190602001808311611c2957829003601f168201915b5050505050905090565b60008060016000611c5f612d51565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1390614e40565b60405180910390fd5b611d30611d27612d51565b85858403612d59565b600191505092915050565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611da5611d9e612d51565b8484612f22565b6001905092915050565b60175481565b611dbd612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e439061465e565b60405180910390fd5b620f4240611e58610dd9565b611e629190614a3b565b8111611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90614ed2565b60405180910390fd5b806011819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145601154604051611edb919061419f565b60405180910390a150565b611eee612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f749061465e565b60405180910390fd5b6103e8611f8861123f565b600a611f9491906149c1565b611f9c610dd9565b611fa69190614a3b565b611fb09190614a3b565b8210158015611ff157506103e8611fc561123f565b600a611fd191906149c1565b611fd9610dd9565b611fe39190614a3b565b611fed9190614a3b565b8110155b612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790614f64565b60405180910390fd5b61203861123f565b600a61204491906149c1565b8261204f9190614afe565b601a8190555061205d61123f565b600a61206991906149c1565b816120749190614afe565b601b819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601a54601b546040516120af929190614773565b60405180910390a15050565b6120c3612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612152576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121499061465e565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d990614ff6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890615088565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516122e39190614577565b60405180910390a150565b601460009054906101000a900460ff1681565b612309612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f9061465e565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361242a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124219061511a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516124c79190614396565b60405180910390a25050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612501612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612590576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125879061465e565b60405180910390fd5b80601460006101000a81548160ff02191690831515021790555050565b6125b5612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263b9061465e565b60405180910390fd5b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036126d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cd90614cd6565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c826040516127739190614396565b60405180910390a25050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612814612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289a9061465e565b60405180910390fd5b801515601260019054906101000a900460ff161515036128f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ef906151ac565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b60115481565b612923612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a99061465e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a189061523e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ae9612d51565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f9061465e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bdd906152d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c4957612c43473373ffffffffffffffffffffffffffffffffffffffff1661385690919063ffffffff16565b50612d4e565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c899190614577565b602060405180830381865afa158015612ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cca9190615305565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612d07929190615332565b6020604051808303816000875af1158015612d26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4a9190615370565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbf9061540f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2e906154a1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f15919061419f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8890615533565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff7906155c5565b60405180910390fd5b601460019054906101000a900460ff16806130645750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130b85750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ee90615631565b60405180910390fd5b600081036131105761310b83836000613911565b613851565b601960009054906101000a900460ff161561336657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806131ce5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156132245750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561327a5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561336557600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361331e57601a54811115613319576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613310906156c3565b60405180910390fd5b613364565b601b54811115613363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335a906156c3565b60405180910390fd5b5b5b5b600061337130611641565b9050600060115482101590508080156133975750601260009054906101000a900460ff16155b80156133f05750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561340b57506000600e54600d5461340991906146ad565b115b80156134235750601260019054906101000a900460ff165b156134fc576001601260006101000a81548160ff0219169083151502179055506000600e54600d5461345591906146ad565b90506000600a5460095461346991906146ad565b90506000600c54600b5461347d91906146ad565b905060008211156134ae5760008383876134979190614afe565b6134a19190614a3b565b90506134ac81613b90565b505b60008111156134dd5760008382876134c69190614afe565b6134d09190614a3b565b90506134db81613eca565b505b6000601260006101000a81548160ff0219169083151502179055505050505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061359f5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806135b65750601260009054906101000a900460ff165b156135c45760009050613689565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361362357600d549050613688565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361368257600e549050613687565b600090505b5b5b60008111156136ca57600061271082866136a39190614afe565b6136ad9190614a3b565b905080856136bb91906156e3565b94506136c8873083613911565b505b601660009054906101000a900460ff161561384257601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137835750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137dd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156138415760006137ed86611641565b905060175485826137fe91906146ad565b111561383f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161383690615789565b60405180910390fd5b505b5b61384d868686613911565b5050505b505050565b60008147101561389b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613892906157f5565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16836040516138c190615846565b60006040518083038185875af1925050503d80600081146138fe576040519150601f19603f3d011682016040523d82523d6000602084013e613903565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397790615533565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139e6906155c5565b60405180910390fd5b6139fa83838361417c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a77906158cd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b1391906146ad565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b77919061419f565b60405180910390a3613b8a848484614181565b50505050565b6000600282613b9f9190614a3b565b905060008183613baf91906156e3565b905060004790506000600267ffffffffffffffff811115613bd357613bd26158ed565b5b604051908082528060200260200182016040528015613c015781602001602082028036833780820191505090505b5090503081600081518110613c1957613c1861591c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce49190615960565b81600181518110613cf857613cf761591c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401613d96959493929190615a86565b600060405180830381600087803b158015613db057600080fd5b505af1158015613dc4573d6000803e3d6000fd5b5050505060008247613dd691906156e3565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308760008061dead426040518863ffffffff1660e01b8152600401613e4196959493929190615ae0565b60606040518083038185885af1158015613e5f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e849190615b41565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858286604051613eba93929190615b94565b60405180910390a1505050505050565b60004790506000600267ffffffffffffffff811115613eec57613eeb6158ed565b5b604051908082528060200260200182016040528015613f1a5781602001602082028036833780820191505090505b5090503081600081518110613f3257613f3161591c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ffd9190615960565b816001815181106140115761401061591c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016140af959493929190615a86565b600060405180830381600087803b1580156140c957600080fd5b505af11580156140dd573d6000803e3d6000fd5b50505050600082476140ef91906156e3565b905061413c81601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661385690919063ffffffff16565b507f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999848260405161416e929190614773565b60405180910390a150505050565b505050565b505050565b6000819050919050565b61419981614186565b82525050565b60006020820190506141b46000830184614190565b92915050565b600080fd5b6141c881614186565b81146141d357600080fd5b50565b6000813590506141e5816141bf565b92915050565b60008060408385031215614202576142016141ba565b5b6000614210858286016141d6565b9250506020614221858286016141d6565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561426557808201518184015260208101905061424a565b60008484015250505050565b6000601f19601f8301169050919050565b600061428d8261422b565b6142978185614236565b93506142a7818560208601614247565b6142b081614271565b840191505092915050565b600060208201905081810360008301526142d58184614282565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614308826142dd565b9050919050565b614318816142fd565b811461432357600080fd5b50565b6000813590506143358161430f565b92915050565b60008060408385031215614352576143516141ba565b5b600061436085828601614326565b9250506020614371858286016141d6565b9150509250929050565b60008115159050919050565b6143908161437b565b82525050565b60006020820190506143ab6000830184614387565b92915050565b6000819050919050565b60006143d66143d16143cc846142dd565b6143b1565b6142dd565b9050919050565b60006143e8826143bb565b9050919050565b60006143fa826143dd565b9050919050565b61440a816143ef565b82525050565b60006020820190506144256000830184614401565b92915050565b600060208284031215614441576144406141ba565b5b600061444f84828501614326565b91505092915050565b600080600060608486031215614471576144706141ba565b5b600061447f86828701614326565b935050602061449086828701614326565b92505060406144a1868287016141d6565b9150509250925092565b6000602082840312156144c1576144c06141ba565b5b60006144cf848285016141d6565b91505092915050565b6144e18161437b565b81146144ec57600080fd5b50565b6000813590506144fe816144d8565b92915050565b60006020828403121561451a576145196141ba565b5b6000614528848285016144ef565b91505092915050565b600060ff82169050919050565b61454781614531565b82525050565b6000602082019050614562600083018461453e565b92915050565b614571816142fd565b82525050565b600060208201905061458c6000830184614568565b92915050565b600080604083850312156145a9576145a86141ba565b5b60006145b785828601614326565b92505060206145c8858286016144ef565b9150509250929050565b600080604083850312156145e9576145e86141ba565b5b60006145f785828601614326565b925050602061460885828601614326565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614648602083614236565b915061465382614612565b602082019050919050565b600060208201905081810360008301526146778161463b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146b882614186565b91506146c383614186565b92508282019050808211156146db576146da61467e565b5b92915050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b600061473d602483614236565b9150614748826146e1565b604082019050919050565b6000602082019050818103600083015261476c81614730565b9050919050565b60006040820190506147886000830185614190565b6147956020830184614190565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806147e357607f821691505b6020821081036147f6576147f561479c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614858602883614236565b9150614863826147fc565b604082019050919050565b600060208201905081810360008301526148878161484b565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156148e5578086048111156148c1576148c061467e565b5b60018516156148d05780820291505b80810290506148de8561488e565b94506148a5565b94509492505050565b6000826148fe57600190506149ba565b8161490c57600090506149ba565b8160018114614922576002811461492c5761495b565b60019150506149ba565b60ff84111561493e5761493d61467e565b5b8360020a9150848211156149555761495461467e565b5b506149ba565b5060208310610133831016604e8410600b84101617156149905782820a90508381111561498b5761498a61467e565b5b6149ba565b61499d848484600161489b565b925090508184048111156149b4576149b361467e565b5b81810290505b9392505050565b60006149cc82614186565b91506149d783614531565b9250614a047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846148ee565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a4682614186565b9150614a5183614186565b925082614a6157614a60614a0c565b5b828204905092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614ac8602d83614236565b9150614ad382614a6c565b604082019050919050565b60006020820190508181036000830152614af781614abb565b9050919050565b6000614b0982614186565b9150614b1483614186565b9250828202614b2281614186565b91508282048414831517614b3957614b3861467e565b5b5092915050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b6000614b9c602d83614236565b9150614ba782614b40565b604082019050919050565b60006020820190508181036000830152614bcb81614b8f565b9050919050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b6000614c2e603283614236565b9150614c3982614bd2565b604082019050919050565b60006020820190508181036000830152614c5d81614c21565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b6000614cc0602483614236565b9150614ccb82614c64565b604082019050919050565b60006020820190508181036000830152614cef81614cb3565b9050919050565b7f43616e277420736574207468697320616464726573732e000000000000000000600082015250565b6000614d2c601783614236565b9150614d3782614cf6565b602082019050919050565b60006020820190508181036000830152614d5b81614d1f565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000614d98601883614236565b9150614da382614d62565b602082019050919050565b60006020820190508181036000830152614dc781614d8b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614e2a602583614236565b9150614e3582614dce565b604082019050919050565b60006020820190508181036000830152614e5981614e1d565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000614ebc603f83614236565b9150614ec782614e60565b604082019050919050565b60006020820190508181036000830152614eeb81614eaf565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000614f4e603f83614236565b9150614f5982614ef2565b604082019050919050565b60006020820190508181036000830152614f7d81614f41565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000614fe0602883614236565b9150614feb82614f84565b604082019050919050565b6000602082019050818103600083015261500f81614fd3565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000615072602b83614236565b915061507d82615016565b604082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000615104602a83614236565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000615196602283614236565b91506151a18261513a565b604082019050919050565b600060208201905081810360008301526151c581615189565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615228602683614236565b9150615233826151cc565b604082019050919050565b600060208201905081810360008301526152578161521b565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b60006152ba603783614236565b91506152c58261525e565b604082019050919050565b600060208201905081810360008301526152e9816152ad565b9050919050565b6000815190506152ff816141bf565b92915050565b60006020828403121561531b5761531a6141ba565b5b6000615329848285016152f0565b91505092915050565b60006040820190506153476000830185614568565b6153546020830184614190565b9392505050565b60008151905061536a816144d8565b92915050565b600060208284031215615386576153856141ba565b5b60006153948482850161535b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006153f9602483614236565b91506154048261539d565b604082019050919050565b60006020820190508181036000830152615428816153ec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061548b602283614236565b91506154968261542f565b604082019050919050565b600060208201905081810360008301526154ba8161547e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061551d602583614236565b9150615528826154c1565b604082019050919050565b6000602082019050818103600083015261554c81615510565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155af602383614236565b91506155ba82615553565b604082019050919050565b600060208201905081810360008301526155de816155a2565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b600061561b601883614236565b9150615626826155e5565b602082019050919050565b6000602082019050818103600083015261564a8161560e565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b60006156ad603b83614236565b91506156b882615651565b604082019050919050565b600060208201905081810360008301526156dc816156a0565b9050919050565b60006156ee82614186565b91506156f983614186565b92508282039050818111156157115761571061467e565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000615773603083614236565b915061577e82615717565b604082019050919050565b600060208201905081810360008301526157a281615766565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006157df601d83614236565b91506157ea826157a9565b602082019050919050565b6000602082019050818103600083015261580e816157d2565b9050919050565b600081905092915050565b50565b6000615830600083615815565b915061583b82615820565b600082019050919050565b600061585182615823565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006158b7602683614236565b91506158c28261585b565b604082019050919050565b600060208201905081810360008301526158e6816158aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061595a8161430f565b92915050565b600060208284031215615976576159756141ba565b5b60006159848482850161594b565b91505092915050565b6000819050919050565b60006159b26159ad6159a88461598d565b6143b1565b614186565b9050919050565b6159c281615997565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159fd816142fd565b82525050565b6000615a0f83836159f4565b60208301905092915050565b6000602082019050919050565b6000615a33826159c8565b615a3d81856159d3565b9350615a48836159e4565b8060005b83811015615a79578151615a608882615a03565b9750615a6b83615a1b565b925050600181019050615a4c565b5085935050505092915050565b600060a082019050615a9b6000830188614190565b615aa860208301876159b9565b8181036040830152615aba8186615a28565b9050615ac96060830185614568565b615ad66080830184614190565b9695505050505050565b600060c082019050615af56000830189614568565b615b026020830188614190565b615b0f60408301876159b9565b615b1c60608301866159b9565b615b296080830185614568565b615b3660a0830184614190565b979650505050505050565b600080600060608486031215615b5a57615b596141ba565b5b6000615b68868287016152f0565b9350506020615b79868287016152f0565b9250506040615b8a868287016152f0565b9150509250925092565b6000606082019050615ba96000830186614190565b615bb66020830185614190565b615bc36040830184614190565b94935050505056fea26469706673582212204fed2ecf22e3264977b3eb7cffe8ea3bec8513d75e9b92bd64cccf59bf2f783264736f6c63430008110033

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.