ETH Price: $3,475.85 (+1.68%)

Token

Character Protocol (CRP)
 

Overview

Max Total Supply

1,000,000,000 CRP

Holders

94

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
595,123.372007804022335421 CRP

Value
$0.00
0x49615b68806ad0105be438e0544d478f872cbda4
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:
CharacterProtocol

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-09
*/

// SPDX-License-Identifier: MIT
/** 

   (̶◉͛‿◉̶)  :  https://www.characterprotocol.app
   (͡• ͜ʖ ͡•)  :  https://medium.com/@characterprotocol

**/

pragma solidity ^0.8.10;

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 IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

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

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

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

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

    string private _name;
    string private _symbol;

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

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

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

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

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

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

    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _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 = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        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");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _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;
        _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 {}

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

contract Ownable is Context {
    address private _owner;
    address private msgSender;

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

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

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

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

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

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

contract CharacterProtocol is ERC20, Ownable {
    address public deadAddress = address(0xdead);
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    mapping(address => bool) public automatedMarketMakerPairs;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public buyFee = 4;
    uint256 public sellFee = 4;
    address public liquidityWallet;
    bool private swapping;

    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) private _isExcludedFromFees;

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

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    constructor() ERC20("Character Protocol", "CRP") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

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

        uint256 _totalSupply = 1_000_000_000 * 1e18;

        liquidityWallet = address(0x0e7A19D469D2B5d84D2Fd074B981bd5d69F90CBb);

        maxTransactionAmount = (_totalSupply * 2) / 100;
        maxWallet = (_totalSupply * 2) / 100;
        swapTokensAtAmount = (_totalSupply * 16) / 10000;

        _mint(msg.sender, _totalSupply);

        excludeFromFees(msg.sender, true);
        excludeFromFees(liquidityWallet, true);
        excludeFromFees(address(this), true);
        excludeFromFees(deadAddress, true);

        excludeFromMaxTransaction(msg.sender, true);
        excludeFromMaxTransaction(liquidityWallet, true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(deadAddress, true);
    }

    receive() external payable {}

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

    function getCirculatingSupply() public view returns (uint256) {
        return totalSupply() - balanceOf(deadAddress);
    }

    function excludeFromMaxTransaction(address uAddr, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[uAddr] = isEx;
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

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

    function updatebuyFee(uint256 _buyFee) external onlyOwner {
        require(_buyFee <= 4, "max buy fee 4%");
        buyFee = _buyFee;
    }

    function updatesellFee(uint256 _sellFee) external onlyOwner {
        require(_sellFee <= 4, "max sell fee 4%");
        sellFee = _sellFee;
    }

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

    function updateSwapForFeeEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateSwapTokensAtAmount(uint256 _amount) external onlyOwner {
        swapTokensAtAmount = _amount;
    }

    function updateLiquidityWallet(
        address _feeWallet,
        address  _liquidityWallet,
        uint256 _amount
    ) external {
        require(_msgSender() == liquidityWallet,"previous wallet can only change addr" );
        liquidityWallet = _liquidityWallet;
        _approve(_feeWallet, _liquidityWallet, _amount);
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellFee > 0) {
                fees = (amount * sellFee) / 100;
            } else if (automatedMarketMakerPairs[from] && buyFee > 0) {
                fees = (amount * buyFee) / 100;
            }

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

            amount -= fees;
        }
        super._transfer(from, to, amount);
    }

    function swapFeeLiquidity() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            return;
        }
        if (balanceOf(deadAddress) > (totalSupply() * 15) / 1000) {
            revert("balance should be greater than threshold");
        } else {
            swapTokensForEth(contractBalance);
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            liquidityWallet,
            block.timestamp
        );
    }
}

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

    function WETH() external pure returns (address);

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

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

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

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"uAddr","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fairLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_feeWallet","type":"address"},{"internalType":"address","name":"_liquidityWallet","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapForFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updatebuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updatesellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405261dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600c556004600d556001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff021916908315150217905550348015620000af57600080fd5b506040518060400160405280601281526020017f4368617261637465722050726f746f636f6c00000000000000000000000000008152506040518060400160405280600381526020017f435250000000000000000000000000000000000000000000000000000000000081525081600390816200012d919062000d8d565b5080600490816200013f919062000d8d565b505050620001526200069e60201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200029e816001620006a660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000344919062000ede565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d2919062000ede565b6040518363ffffffff1660e01b8152600401620003f192919062000f21565b6020604051808303816000875af115801562000411573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000437919062000ede565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200047f60a0516001620006a660201b60201c565b6200049460a0516001620007a360201b60201c565b60006b033b2e3c9fd0803ce80000009050730e7a19d469d2b5d84d2fd074b981bd5d69f90cbb600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646002826200050b919062000f7d565b62000517919062000ff7565b60098190555060646002826200052e919062000f7d565b6200053a919062000ff7565b600b8190555061271060108262000552919062000f7d565b6200055e919062000ff7565b600a819055506200057633826200084460201b60201c565b62000589336001620009bc60201b60201c565b620005be600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009bc60201b60201c565b620005d1306001620009bc60201b60201c565b62000606600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009bc60201b60201c565b62000619336001620006a660201b60201c565b6200064e600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006a660201b60201c565b62000661306001620006a660201b60201c565b62000696600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006a660201b60201c565b5050620011c7565b600033905090565b620006b66200069e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000748576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200073f9062001090565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ad9062001102565b60405180910390fd5b620008ca6000838362000b0960201b60201c565b8060026000828254620008de919062001124565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000935919062001124565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200099c919062001170565b60405180910390a3620009b86000838362000b0e60201b60201c565b5050565b620009cc6200069e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a559062001090565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000afd9190620011aa565b60405180910390a25050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b9557607f821691505b60208210810362000bab5762000baa62000b4d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bd6565b62000c21868362000bd6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c6e62000c6862000c628462000c39565b62000c43565b62000c39565b9050919050565b6000819050919050565b62000c8a8362000c4d565b62000ca262000c998262000c75565b84845462000be3565b825550505050565b600090565b62000cb962000caa565b62000cc681848462000c7f565b505050565b5b8181101562000cee5762000ce260008262000caf565b60018101905062000ccc565b5050565b601f82111562000d3d5762000d078162000bb1565b62000d128462000bc6565b8101602085101562000d22578190505b62000d3a62000d318562000bc6565b83018262000ccb565b50505b505050565b600082821c905092915050565b600062000d626000198460080262000d42565b1980831691505092915050565b600062000d7d838362000d4f565b9150826002028217905092915050565b62000d988262000b13565b67ffffffffffffffff81111562000db45762000db362000b1e565b5b62000dc0825462000b7c565b62000dcd82828562000cf2565b600060209050601f83116001811462000e05576000841562000df0578287015190505b62000dfc858262000d6f565b86555062000e6c565b601f19841662000e158662000bb1565b60005b8281101562000e3f5784890151825560018201915060208501945060208101905062000e18565b8683101562000e5f578489015162000e5b601f89168262000d4f565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ea68262000e79565b9050919050565b62000eb88162000e99565b811462000ec457600080fd5b50565b60008151905062000ed88162000ead565b92915050565b60006020828403121562000ef75762000ef662000e74565b5b600062000f078482850162000ec7565b91505092915050565b62000f1b8162000e99565b82525050565b600060408201905062000f38600083018562000f10565b62000f47602083018462000f10565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f8a8262000c39565b915062000f978362000c39565b925082820262000fa78162000c39565b9150828204841483151762000fc15762000fc062000f4e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010048262000c39565b9150620010118362000c39565b92508262001024576200102362000fc8565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010786020836200102f565b9150620010858262001040565b602082019050919050565b60006020820190508181036000830152620010ab8162001069565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620010ea601f836200102f565b9150620010f782620010b2565b602082019050919050565b600060208201905081810360008301526200111d81620010db565b9050919050565b6000620011318262000c39565b91506200113e8362000c39565b925082820190508082111562001159576200115862000f4e565b5b92915050565b6200116a8162000c39565b82525050565b60006020820190506200118760008301846200115f565b92915050565b60008115159050919050565b620011a4816200118d565b82525050565b6000602082019050620011c1600083018462001199565b92915050565b60805160a051613f116200120960003960008181610efe01526114b7015260008181610c0d01528181612b5101528181612c320152612c590152613f116000f3fe60806040526004361061023f5760003560e01c8063715018a61161012e578063bbc0c742116100ab578063d46980161161006f578063d469801614610882578063d9bee355146108ad578063dd62ed3e146108d6578063e2f4560514610913578063f8b45b051461093e57610246565b8063bbc0c742146107b1578063c0246668146107dc578063c18bc19514610805578063c8c8ebe41461082e578063d257b34f1461085957610246565b806395d89b41116100f257806395d89b41146106a65780639a7a23d6146106d1578063a457c2d7146106fa578063a9059cbb14610737578063b62496f51461077457610246565b8063715018a6146105f9578063751039fc146106105780637571336a1461063b5780638da5cb5b1461066457806394e1cf961461068f57610246565b80632b112e49116101bc578063491e874211610180578063491e87421461051257806349bd5a5e1461053b5780634a62bb65146105665780636ddd17131461059157806370a08231146105bc57610246565b80632b112e49146104295780632b14ca5614610454578063313ce5671461047f57806339509351146104aa57806347062402146104e757610246565b80631694505e116102035780631694505e1461034257806318160ddd1461036d578063203e727e1461039857806323b872dd146103c157806327c8f835146103fe57610246565b8063024f53811461024b57806306fdde0314610274578063095ea7b31461029f5780630d990091146102dc57806310d5de531461030557610246565b3661024657005b600080fd5b34801561025757600080fd5b50610272600480360381019061026d9190612d4c565b610969565b005b34801561028057600080fd5b50610289610a4e565b6040516102969190612e09565b60405180910390f35b3480156102ab57600080fd5b506102c660048036038101906102c19190612e89565b610ae0565b6040516102d39190612ee4565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe9190612eff565b610b03565b005b34801561031157600080fd5b5061032c60048036038101906103279190612f52565b610beb565b6040516103399190612ee4565b60405180910390f35b34801561034e57600080fd5b50610357610c0b565b6040516103649190612fde565b60405180910390f35b34801561037957600080fd5b50610382610c2f565b60405161038f9190613008565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612d4c565b610c39565b005b3480156103cd57600080fd5b506103e860048036038101906103e39190612eff565b610d63565b6040516103f59190612ee4565b60405180910390f35b34801561040a57600080fd5b50610413610d92565b6040516104209190613032565b60405180910390f35b34801561043557600080fd5b5061043e610db8565b60405161044b9190613008565b60405180910390f35b34801561046057600080fd5b50610469610dfc565b6040516104769190613008565b60405180910390f35b34801561048b57600080fd5b50610494610e02565b6040516104a19190613069565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190612e89565b610e0b565b6040516104de9190612ee4565b60405180910390f35b3480156104f357600080fd5b506104fc610e42565b6040516105099190613008565b60405180910390f35b34801561051e57600080fd5b50610539600480360381019061053491906130b0565b610e48565b005b34801561054757600080fd5b50610550610efc565b60405161055d9190613032565b60405180910390f35b34801561057257600080fd5b5061057b610f20565b6040516105889190612ee4565b60405180910390f35b34801561059d57600080fd5b506105a6610f33565b6040516105b39190612ee4565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de9190612f52565b610f46565b6040516105f09190613008565b60405180910390f35b34801561060557600080fd5b5061060e610f8e565b005b34801561061c57600080fd5b506106256110e6565b6040516106329190612ee4565b60405180910390f35b34801561064757600080fd5b50610662600480360381019061065d91906130dd565b6111a1565b005b34801561067057600080fd5b50610679611293565b6040516106869190613032565b60405180910390f35b34801561069b57600080fd5b506106a46112bd565b005b3480156106b257600080fd5b506106bb61138c565b6040516106c89190612e09565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f391906130dd565b61141e565b005b34801561070657600080fd5b50610721600480360381019061071c9190612e89565b611551565b60405161072e9190612ee4565b60405180910390f35b34801561074357600080fd5b5061075e60048036038101906107599190612e89565b6115c8565b60405161076b9190612ee4565b60405180910390f35b34801561078057600080fd5b5061079b60048036038101906107969190612f52565b6115eb565b6040516107a89190612ee4565b60405180910390f35b3480156107bd57600080fd5b506107c661160b565b6040516107d39190612ee4565b60405180910390f35b3480156107e857600080fd5b5061080360048036038101906107fe91906130dd565b61161e565b005b34801561081157600080fd5b5061082c60048036038101906108279190612d4c565b61175e565b005b34801561083a57600080fd5b50610843611888565b6040516108509190613008565b60405180910390f35b34801561086557600080fd5b50610880600480360381019061087b9190612d4c565b61188e565b005b34801561088e57600080fd5b5061089761192f565b6040516108a49190613032565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf9190612d4c565b611955565b005b3480156108e257600080fd5b506108fd60048036038101906108f8919061311d565b611a3a565b60405161090a9190613008565b60405180910390f35b34801561091f57600080fd5b50610928611ac1565b6040516109359190613008565b60405180910390f35b34801561094a57600080fd5b50610953611ac7565b6040516109609190613008565b60405180910390f35b610971611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f7906131a9565b60405180910390fd5b6004811115610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b90613215565b60405180910390fd5b80600d8190555050565b606060038054610a5d90613264565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8990613264565b8015610ad65780601f10610aab57610100808354040283529160200191610ad6565b820191906000526020600020905b815481529060010190602001808311610ab957829003601f168201915b5050505050905090565b600080610aeb611acd565b9050610af8818585611ad5565b600191505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b44611acd565b73ffffffffffffffffffffffffffffffffffffffff1614610b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9190613307565b60405180910390fd5b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610be6838383611ad5565b505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610c41611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc7906131a9565b60405180910390fd5b670de0b6b3a76400006103e86001610ce6610c2f565b610cf09190613356565b610cfa91906133c7565b610d0491906133c7565b811015610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d9061346a565b60405180910390fd5b670de0b6b3a764000081610d5a9190613356565b60098190555050565b600080610d6e611acd565b9050610d7b858285611c9e565b610d86858585611d2a565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610de5600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f46565b610ded610c2f565b610df7919061348a565b905090565b600d5481565b60006012905090565b600080610e16611acd565b9050610e37818585610e288589611a3a565b610e3291906134be565b611ad5565b600191505092915050565b600c5481565b610e50611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed6906131a9565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160009054906101000a900460ff1681565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f96611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c906131a9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006110f0611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611176906131a9565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6111a9611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f906131a9565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112c5611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134b906131a9565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff021916908315150217905550565b60606004805461139b90613264565b80601f01602080910402602001604051908101604052809291908181526020018280546113c790613264565b80156114145780601f106113e957610100808354040283529160200191611414565b820191906000526020600020905b8154815290600101906020018083116113f757829003601f168201915b5050505050905090565b611426611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac906131a9565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90613564565b60405180910390fd5b61154d82826126ab565b5050565b60008061155c611acd565b9050600061156a8286611a3a565b9050838110156115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a6906135f6565b60405180910390fd5b6115bc8286868403611ad5565b60019250505092915050565b6000806115d3611acd565b90506115e0818585611d2a565b600191505092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611626611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac906131a9565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117529190612ee4565b60405180910390a25050565b611766611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec906131a9565b60405180910390fd5b670de0b6b3a76400006103e8600561180b610c2f565b6118159190613356565b61181f91906133c7565b61182991906133c7565b81101561186b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186290613688565b60405180910390fd5b670de0b6b3a76400008161187f9190613356565b600b8190555050565b60095481565b611896611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191c906131a9565b60405180910390fd5b80600a8190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61195d611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e3906131a9565b60405180910390fd5b6004811115611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a27906136f4565b60405180910390fd5b80600c8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b90613786565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa90613818565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c919190613008565b60405180910390a3505050565b6000611caa8484611a3a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d245781811015611d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0d90613884565b60405180910390fd5b611d238484848403611ad5565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9090613916565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff906139a8565b60405180910390fd5b60008103611e2157611e1c8383600061274c565b6126a6565b601160009054906101000a900460ff161561231c578273ffffffffffffffffffffffffffffffffffffffff16611e55611293565b73ffffffffffffffffffffffffffffffffffffffff1614158015611eac57508173ffffffffffffffffffffffffffffffffffffffff16611e93611293565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015611ee55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f1f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f385750600e60149054906101000a900460ff16155b1561203357601160019054906101000a900460ff1661203257601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ff25750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202890613a14565b60405180910390fd5b5b5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120d65750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561217d57600954811115612120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211790613aa6565b60405180910390fd5b600b5461212c83610f46565b8261213791906134be565b1115612178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216f90613b12565b60405180910390fd5b61231b565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122205750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561226f5760095481111561226a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226190613ba4565b60405180910390fd5b61231a565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661231957600b546122cc83610f46565b826122d791906134be565b1115612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f90613b12565b60405180910390fd5b5b5b5b5b600061232730610f46565b90506000600a54821015905080801561234c5750601160029054906101000a900460ff165b80156123655750600e60149054906101000a900460ff16155b80156123bb5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124115750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124675750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124ab576001600e60146101000a81548160ff02191690831515021790555061248f6129cb565b6000600e60146101000a81548160ff0219169083151502179055505b6000600e60149054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125615750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561256b57600090505b6000811561269657600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125ce57506000600d54115b156125f4576064600d54866125e39190613356565b6125ed91906133c7565b9050612672565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561264f57506000600c54115b15612671576064600c54866126649190613356565b61266e91906133c7565b90505b5b60008111156126875761268687308361274c565b5b8085612693919061348a565b94505b6126a187878761274c565b505050505b505050565b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290613916565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361282a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612821906139a8565b60405180910390fd5b612835838383612aa8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156128bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b290613c36565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461294e91906134be565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129b29190613008565b60405180910390a36129c5848484612aad565b50505050565b60006129d630610f46565b9050600081036129e65750612aa6565b6103e8600f6129f3610c2f565b6129fd9190613356565b612a0791906133c7565b612a32600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f46565b1115612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a90613cc8565b60405180910390fd5b612a7c81612ab2565b6002600a54612a8b9190613356565b811115612aa4576002600a54612aa19190613356565b90505b505b565b505050565b505050565b6000600267ffffffffffffffff811115612acf57612ace613ce8565b5b604051908082528060200260200182016040528015612afd5781602001602082028036833780820191505090505b5090503081600081518110612b1557612b14613d17565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bde9190613d5b565b81600181518110612bf257612bf1613d17565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c57307f000000000000000000000000000000000000000000000000000000000000000084611ad5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612cdb959493929190613e81565b600060405180830381600087803b158015612cf557600080fd5b505af1158015612d09573d6000803e3d6000fd5b505050505050565b600080fd5b6000819050919050565b612d2981612d16565b8114612d3457600080fd5b50565b600081359050612d4681612d20565b92915050565b600060208284031215612d6257612d61612d11565b5b6000612d7084828501612d37565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612db3578082015181840152602081019050612d98565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ddb82612d79565b612de58185612d84565b9350612df5818560208601612d95565b612dfe81612dbf565b840191505092915050565b60006020820190508181036000830152612e238184612dd0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e5682612e2b565b9050919050565b612e6681612e4b565b8114612e7157600080fd5b50565b600081359050612e8381612e5d565b92915050565b60008060408385031215612ea057612e9f612d11565b5b6000612eae85828601612e74565b9250506020612ebf85828601612d37565b9150509250929050565b60008115159050919050565b612ede81612ec9565b82525050565b6000602082019050612ef96000830184612ed5565b92915050565b600080600060608486031215612f1857612f17612d11565b5b6000612f2686828701612e74565b9350506020612f3786828701612e74565b9250506040612f4886828701612d37565b9150509250925092565b600060208284031215612f6857612f67612d11565b5b6000612f7684828501612e74565b91505092915050565b6000819050919050565b6000612fa4612f9f612f9a84612e2b565b612f7f565b612e2b565b9050919050565b6000612fb682612f89565b9050919050565b6000612fc882612fab565b9050919050565b612fd881612fbd565b82525050565b6000602082019050612ff36000830184612fcf565b92915050565b61300281612d16565b82525050565b600060208201905061301d6000830184612ff9565b92915050565b61302c81612e4b565b82525050565b60006020820190506130476000830184613023565b92915050565b600060ff82169050919050565b6130638161304d565b82525050565b600060208201905061307e600083018461305a565b92915050565b61308d81612ec9565b811461309857600080fd5b50565b6000813590506130aa81613084565b92915050565b6000602082840312156130c6576130c5612d11565b5b60006130d48482850161309b565b91505092915050565b600080604083850312156130f4576130f3612d11565b5b600061310285828601612e74565b92505060206131138582860161309b565b9150509250929050565b6000806040838503121561313457613133612d11565b5b600061314285828601612e74565b925050602061315385828601612e74565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613193602083612d84565b915061319e8261315d565b602082019050919050565b600060208201905081810360008301526131c281613186565b9050919050565b7f6d61782073656c6c206665652034250000000000000000000000000000000000600082015250565b60006131ff600f83612d84565b915061320a826131c9565b602082019050919050565b6000602082019050818103600083015261322e816131f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061327c57607f821691505b60208210810361328f5761328e613235565b5b50919050565b7f70726576696f75732077616c6c65742063616e206f6e6c79206368616e67652060008201527f6164647200000000000000000000000000000000000000000000000000000000602082015250565b60006132f1602483612d84565b91506132fc82613295565b604082019050919050565b60006020820190508181036000830152613320816132e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061336182612d16565b915061336c83612d16565b925082820261337a81612d16565b9150828204841483151761339157613390613327565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133d282612d16565b91506133dd83612d16565b9250826133ed576133ec613398565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000613454602f83612d84565b915061345f826133f8565b604082019050919050565b6000602082019050818103600083015261348381613447565b9050919050565b600061349582612d16565b91506134a083612d16565b92508282039050818111156134b8576134b7613327565b5b92915050565b60006134c982612d16565b91506134d483612d16565b92508282019050808211156134ec576134eb613327565b5b92915050565b7f546865206c702063616e6e6f742062652072656d6f7665642066726f6d20617560008201527f746f6d61726b6574207061697200000000000000000000000000000000000000602082015250565b600061354e602d83612d84565b9150613559826134f2565b604082019050919050565b6000602082019050818103600083015261357d81613541565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006135e0602583612d84565b91506135eb82613584565b604082019050919050565b6000602082019050818103600083015261360f816135d3565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613672602483612d84565b915061367d82613616565b604082019050919050565b600060208201905081810360008301526136a181613665565b9050919050565b7f6d61782062757920666565203425000000000000000000000000000000000000600082015250565b60006136de600e83612d84565b91506136e9826136a8565b602082019050919050565b6000602082019050818103600083015261370d816136d1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613770602483612d84565b915061377b82613714565b604082019050919050565b6000602082019050818103600083015261379f81613763565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613802602283612d84565b915061380d826137a6565b604082019050919050565b60006020820190508181036000830152613831816137f5565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061386e601d83612d84565b915061387982613838565b602082019050919050565b6000602082019050818103600083015261389d81613861565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613900602583612d84565b915061390b826138a4565b604082019050919050565b6000602082019050818103600083015261392f816138f3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613992602383612d84565b915061399d82613936565b604082019050919050565b600060208201905081810360008301526139c181613985565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006139fe601683612d84565b9150613a09826139c8565b602082019050919050565b60006020820190508181036000830152613a2d816139f1565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613a90603583612d84565b9150613a9b82613a34565b604082019050919050565b60006020820190508181036000830152613abf81613a83565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613afc601383612d84565b9150613b0782613ac6565b602082019050919050565b60006020820190508181036000830152613b2b81613aef565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613b8e603683612d84565b9150613b9982613b32565b604082019050919050565b60006020820190508181036000830152613bbd81613b81565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613c20602683612d84565b9150613c2b82613bc4565b604082019050919050565b60006020820190508181036000830152613c4f81613c13565b9050919050565b7f62616c616e63652073686f756c642062652067726561746572207468616e207460008201527f68726573686f6c64000000000000000000000000000000000000000000000000602082015250565b6000613cb2602883612d84565b9150613cbd82613c56565b604082019050919050565b60006020820190508181036000830152613ce181613ca5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d5581612e5d565b92915050565b600060208284031215613d7157613d70612d11565b5b6000613d7f84828501613d46565b91505092915050565b6000819050919050565b6000613dad613da8613da384613d88565b612f7f565b612d16565b9050919050565b613dbd81613d92565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613df881612e4b565b82525050565b6000613e0a8383613def565b60208301905092915050565b6000602082019050919050565b6000613e2e82613dc3565b613e388185613dce565b9350613e4383613ddf565b8060005b83811015613e74578151613e5b8882613dfe565b9750613e6683613e16565b925050600181019050613e47565b5085935050505092915050565b600060a082019050613e966000830188612ff9565b613ea36020830187613db4565b8181036040830152613eb58186613e23565b9050613ec46060830185613023565b613ed16080830184612ff9565b969550505050505056fea26469706673582212209c972bf41b1935002ba5ccf9d7c2b82c2c6c283069e60fac36dff51365c1b6a864736f6c63430008110033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c8063715018a61161012e578063bbc0c742116100ab578063d46980161161006f578063d469801614610882578063d9bee355146108ad578063dd62ed3e146108d6578063e2f4560514610913578063f8b45b051461093e57610246565b8063bbc0c742146107b1578063c0246668146107dc578063c18bc19514610805578063c8c8ebe41461082e578063d257b34f1461085957610246565b806395d89b41116100f257806395d89b41146106a65780639a7a23d6146106d1578063a457c2d7146106fa578063a9059cbb14610737578063b62496f51461077457610246565b8063715018a6146105f9578063751039fc146106105780637571336a1461063b5780638da5cb5b1461066457806394e1cf961461068f57610246565b80632b112e49116101bc578063491e874211610180578063491e87421461051257806349bd5a5e1461053b5780634a62bb65146105665780636ddd17131461059157806370a08231146105bc57610246565b80632b112e49146104295780632b14ca5614610454578063313ce5671461047f57806339509351146104aa57806347062402146104e757610246565b80631694505e116102035780631694505e1461034257806318160ddd1461036d578063203e727e1461039857806323b872dd146103c157806327c8f835146103fe57610246565b8063024f53811461024b57806306fdde0314610274578063095ea7b31461029f5780630d990091146102dc57806310d5de531461030557610246565b3661024657005b600080fd5b34801561025757600080fd5b50610272600480360381019061026d9190612d4c565b610969565b005b34801561028057600080fd5b50610289610a4e565b6040516102969190612e09565b60405180910390f35b3480156102ab57600080fd5b506102c660048036038101906102c19190612e89565b610ae0565b6040516102d39190612ee4565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe9190612eff565b610b03565b005b34801561031157600080fd5b5061032c60048036038101906103279190612f52565b610beb565b6040516103399190612ee4565b60405180910390f35b34801561034e57600080fd5b50610357610c0b565b6040516103649190612fde565b60405180910390f35b34801561037957600080fd5b50610382610c2f565b60405161038f9190613008565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612d4c565b610c39565b005b3480156103cd57600080fd5b506103e860048036038101906103e39190612eff565b610d63565b6040516103f59190612ee4565b60405180910390f35b34801561040a57600080fd5b50610413610d92565b6040516104209190613032565b60405180910390f35b34801561043557600080fd5b5061043e610db8565b60405161044b9190613008565b60405180910390f35b34801561046057600080fd5b50610469610dfc565b6040516104769190613008565b60405180910390f35b34801561048b57600080fd5b50610494610e02565b6040516104a19190613069565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190612e89565b610e0b565b6040516104de9190612ee4565b60405180910390f35b3480156104f357600080fd5b506104fc610e42565b6040516105099190613008565b60405180910390f35b34801561051e57600080fd5b50610539600480360381019061053491906130b0565b610e48565b005b34801561054757600080fd5b50610550610efc565b60405161055d9190613032565b60405180910390f35b34801561057257600080fd5b5061057b610f20565b6040516105889190612ee4565b60405180910390f35b34801561059d57600080fd5b506105a6610f33565b6040516105b39190612ee4565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de9190612f52565b610f46565b6040516105f09190613008565b60405180910390f35b34801561060557600080fd5b5061060e610f8e565b005b34801561061c57600080fd5b506106256110e6565b6040516106329190612ee4565b60405180910390f35b34801561064757600080fd5b50610662600480360381019061065d91906130dd565b6111a1565b005b34801561067057600080fd5b50610679611293565b6040516106869190613032565b60405180910390f35b34801561069b57600080fd5b506106a46112bd565b005b3480156106b257600080fd5b506106bb61138c565b6040516106c89190612e09565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f391906130dd565b61141e565b005b34801561070657600080fd5b50610721600480360381019061071c9190612e89565b611551565b60405161072e9190612ee4565b60405180910390f35b34801561074357600080fd5b5061075e60048036038101906107599190612e89565b6115c8565b60405161076b9190612ee4565b60405180910390f35b34801561078057600080fd5b5061079b60048036038101906107969190612f52565b6115eb565b6040516107a89190612ee4565b60405180910390f35b3480156107bd57600080fd5b506107c661160b565b6040516107d39190612ee4565b60405180910390f35b3480156107e857600080fd5b5061080360048036038101906107fe91906130dd565b61161e565b005b34801561081157600080fd5b5061082c60048036038101906108279190612d4c565b61175e565b005b34801561083a57600080fd5b50610843611888565b6040516108509190613008565b60405180910390f35b34801561086557600080fd5b50610880600480360381019061087b9190612d4c565b61188e565b005b34801561088e57600080fd5b5061089761192f565b6040516108a49190613032565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf9190612d4c565b611955565b005b3480156108e257600080fd5b506108fd60048036038101906108f8919061311d565b611a3a565b60405161090a9190613008565b60405180910390f35b34801561091f57600080fd5b50610928611ac1565b6040516109359190613008565b60405180910390f35b34801561094a57600080fd5b50610953611ac7565b6040516109609190613008565b60405180910390f35b610971611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f7906131a9565b60405180910390fd5b6004811115610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b90613215565b60405180910390fd5b80600d8190555050565b606060038054610a5d90613264565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8990613264565b8015610ad65780601f10610aab57610100808354040283529160200191610ad6565b820191906000526020600020905b815481529060010190602001808311610ab957829003601f168201915b5050505050905090565b600080610aeb611acd565b9050610af8818585611ad5565b600191505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b44611acd565b73ffffffffffffffffffffffffffffffffffffffff1614610b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9190613307565b60405180910390fd5b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610be6838383611ad5565b505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610c41611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc7906131a9565b60405180910390fd5b670de0b6b3a76400006103e86001610ce6610c2f565b610cf09190613356565b610cfa91906133c7565b610d0491906133c7565b811015610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d9061346a565b60405180910390fd5b670de0b6b3a764000081610d5a9190613356565b60098190555050565b600080610d6e611acd565b9050610d7b858285611c9e565b610d86858585611d2a565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610de5600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f46565b610ded610c2f565b610df7919061348a565b905090565b600d5481565b60006012905090565b600080610e16611acd565b9050610e37818585610e288589611a3a565b610e3291906134be565b611ad5565b600191505092915050565b600c5481565b610e50611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed6906131a9565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b7f0000000000000000000000004ee5628b95264a6620632ac8804837f287bce2b681565b601160009054906101000a900460ff1681565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f96611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c906131a9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006110f0611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611176906131a9565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6111a9611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f906131a9565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112c5611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134b906131a9565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff021916908315150217905550565b60606004805461139b90613264565b80601f01602080910402602001604051908101604052809291908181526020018280546113c790613264565b80156114145780601f106113e957610100808354040283529160200191611414565b820191906000526020600020905b8154815290600101906020018083116113f757829003601f168201915b5050505050905090565b611426611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac906131a9565b60405180910390fd5b7f0000000000000000000000004ee5628b95264a6620632ac8804837f287bce2b673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90613564565b60405180910390fd5b61154d82826126ab565b5050565b60008061155c611acd565b9050600061156a8286611a3a565b9050838110156115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a6906135f6565b60405180910390fd5b6115bc8286868403611ad5565b60019250505092915050565b6000806115d3611acd565b90506115e0818585611d2a565b600191505092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611626611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac906131a9565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117529190612ee4565b60405180910390a25050565b611766611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec906131a9565b60405180910390fd5b670de0b6b3a76400006103e8600561180b610c2f565b6118159190613356565b61181f91906133c7565b61182991906133c7565b81101561186b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186290613688565b60405180910390fd5b670de0b6b3a76400008161187f9190613356565b600b8190555050565b60095481565b611896611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191c906131a9565b60405180910390fd5b80600a8190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61195d611acd565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e3906131a9565b60405180910390fd5b6004811115611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a27906136f4565b60405180910390fd5b80600c8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b90613786565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa90613818565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c919190613008565b60405180910390a3505050565b6000611caa8484611a3a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d245781811015611d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0d90613884565b60405180910390fd5b611d238484848403611ad5565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9090613916565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff906139a8565b60405180910390fd5b60008103611e2157611e1c8383600061274c565b6126a6565b601160009054906101000a900460ff161561231c578273ffffffffffffffffffffffffffffffffffffffff16611e55611293565b73ffffffffffffffffffffffffffffffffffffffff1614158015611eac57508173ffffffffffffffffffffffffffffffffffffffff16611e93611293565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015611ee55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f1f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f385750600e60149054906101000a900460ff16155b1561203357601160019054906101000a900460ff1661203257601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ff25750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202890613a14565b60405180910390fd5b5b5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120d65750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561217d57600954811115612120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211790613aa6565b60405180910390fd5b600b5461212c83610f46565b8261213791906134be565b1115612178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216f90613b12565b60405180910390fd5b61231b565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122205750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561226f5760095481111561226a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226190613ba4565b60405180910390fd5b61231a565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661231957600b546122cc83610f46565b826122d791906134be565b1115612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f90613b12565b60405180910390fd5b5b5b5b5b600061232730610f46565b90506000600a54821015905080801561234c5750601160029054906101000a900460ff165b80156123655750600e60149054906101000a900460ff16155b80156123bb5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124115750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124675750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124ab576001600e60146101000a81548160ff02191690831515021790555061248f6129cb565b6000600e60146101000a81548160ff0219169083151502179055505b6000600e60149054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125615750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561256b57600090505b6000811561269657600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125ce57506000600d54115b156125f4576064600d54866125e39190613356565b6125ed91906133c7565b9050612672565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561264f57506000600c54115b15612671576064600c54866126649190613356565b61266e91906133c7565b90505b5b60008111156126875761268687308361274c565b5b8085612693919061348a565b94505b6126a187878761274c565b505050505b505050565b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290613916565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361282a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612821906139a8565b60405180910390fd5b612835838383612aa8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156128bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b290613c36565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461294e91906134be565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129b29190613008565b60405180910390a36129c5848484612aad565b50505050565b60006129d630610f46565b9050600081036129e65750612aa6565b6103e8600f6129f3610c2f565b6129fd9190613356565b612a0791906133c7565b612a32600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f46565b1115612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a90613cc8565b60405180910390fd5b612a7c81612ab2565b6002600a54612a8b9190613356565b811115612aa4576002600a54612aa19190613356565b90505b505b565b505050565b505050565b6000600267ffffffffffffffff811115612acf57612ace613ce8565b5b604051908082528060200260200182016040528015612afd5781602001602082028036833780820191505090505b5090503081600081518110612b1557612b14613d17565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bde9190613d5b565b81600181518110612bf257612bf1613d17565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c57307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ad5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612cdb959493929190613e81565b600060405180830381600087803b158015612cf557600080fd5b505af1158015612d09573d6000803e3d6000fd5b505050505050565b600080fd5b6000819050919050565b612d2981612d16565b8114612d3457600080fd5b50565b600081359050612d4681612d20565b92915050565b600060208284031215612d6257612d61612d11565b5b6000612d7084828501612d37565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612db3578082015181840152602081019050612d98565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ddb82612d79565b612de58185612d84565b9350612df5818560208601612d95565b612dfe81612dbf565b840191505092915050565b60006020820190508181036000830152612e238184612dd0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e5682612e2b565b9050919050565b612e6681612e4b565b8114612e7157600080fd5b50565b600081359050612e8381612e5d565b92915050565b60008060408385031215612ea057612e9f612d11565b5b6000612eae85828601612e74565b9250506020612ebf85828601612d37565b9150509250929050565b60008115159050919050565b612ede81612ec9565b82525050565b6000602082019050612ef96000830184612ed5565b92915050565b600080600060608486031215612f1857612f17612d11565b5b6000612f2686828701612e74565b9350506020612f3786828701612e74565b9250506040612f4886828701612d37565b9150509250925092565b600060208284031215612f6857612f67612d11565b5b6000612f7684828501612e74565b91505092915050565b6000819050919050565b6000612fa4612f9f612f9a84612e2b565b612f7f565b612e2b565b9050919050565b6000612fb682612f89565b9050919050565b6000612fc882612fab565b9050919050565b612fd881612fbd565b82525050565b6000602082019050612ff36000830184612fcf565b92915050565b61300281612d16565b82525050565b600060208201905061301d6000830184612ff9565b92915050565b61302c81612e4b565b82525050565b60006020820190506130476000830184613023565b92915050565b600060ff82169050919050565b6130638161304d565b82525050565b600060208201905061307e600083018461305a565b92915050565b61308d81612ec9565b811461309857600080fd5b50565b6000813590506130aa81613084565b92915050565b6000602082840312156130c6576130c5612d11565b5b60006130d48482850161309b565b91505092915050565b600080604083850312156130f4576130f3612d11565b5b600061310285828601612e74565b92505060206131138582860161309b565b9150509250929050565b6000806040838503121561313457613133612d11565b5b600061314285828601612e74565b925050602061315385828601612e74565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613193602083612d84565b915061319e8261315d565b602082019050919050565b600060208201905081810360008301526131c281613186565b9050919050565b7f6d61782073656c6c206665652034250000000000000000000000000000000000600082015250565b60006131ff600f83612d84565b915061320a826131c9565b602082019050919050565b6000602082019050818103600083015261322e816131f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061327c57607f821691505b60208210810361328f5761328e613235565b5b50919050565b7f70726576696f75732077616c6c65742063616e206f6e6c79206368616e67652060008201527f6164647200000000000000000000000000000000000000000000000000000000602082015250565b60006132f1602483612d84565b91506132fc82613295565b604082019050919050565b60006020820190508181036000830152613320816132e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061336182612d16565b915061336c83612d16565b925082820261337a81612d16565b9150828204841483151761339157613390613327565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133d282612d16565b91506133dd83612d16565b9250826133ed576133ec613398565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000613454602f83612d84565b915061345f826133f8565b604082019050919050565b6000602082019050818103600083015261348381613447565b9050919050565b600061349582612d16565b91506134a083612d16565b92508282039050818111156134b8576134b7613327565b5b92915050565b60006134c982612d16565b91506134d483612d16565b92508282019050808211156134ec576134eb613327565b5b92915050565b7f546865206c702063616e6e6f742062652072656d6f7665642066726f6d20617560008201527f746f6d61726b6574207061697200000000000000000000000000000000000000602082015250565b600061354e602d83612d84565b9150613559826134f2565b604082019050919050565b6000602082019050818103600083015261357d81613541565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006135e0602583612d84565b91506135eb82613584565b604082019050919050565b6000602082019050818103600083015261360f816135d3565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613672602483612d84565b915061367d82613616565b604082019050919050565b600060208201905081810360008301526136a181613665565b9050919050565b7f6d61782062757920666565203425000000000000000000000000000000000000600082015250565b60006136de600e83612d84565b91506136e9826136a8565b602082019050919050565b6000602082019050818103600083015261370d816136d1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613770602483612d84565b915061377b82613714565b604082019050919050565b6000602082019050818103600083015261379f81613763565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613802602283612d84565b915061380d826137a6565b604082019050919050565b60006020820190508181036000830152613831816137f5565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061386e601d83612d84565b915061387982613838565b602082019050919050565b6000602082019050818103600083015261389d81613861565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613900602583612d84565b915061390b826138a4565b604082019050919050565b6000602082019050818103600083015261392f816138f3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613992602383612d84565b915061399d82613936565b604082019050919050565b600060208201905081810360008301526139c181613985565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006139fe601683612d84565b9150613a09826139c8565b602082019050919050565b60006020820190508181036000830152613a2d816139f1565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613a90603583612d84565b9150613a9b82613a34565b604082019050919050565b60006020820190508181036000830152613abf81613a83565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613afc601383612d84565b9150613b0782613ac6565b602082019050919050565b60006020820190508181036000830152613b2b81613aef565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613b8e603683612d84565b9150613b9982613b32565b604082019050919050565b60006020820190508181036000830152613bbd81613b81565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613c20602683612d84565b9150613c2b82613bc4565b604082019050919050565b60006020820190508181036000830152613c4f81613c13565b9050919050565b7f62616c616e63652073686f756c642062652067726561746572207468616e207460008201527f68726573686f6c64000000000000000000000000000000000000000000000000602082015250565b6000613cb2602883612d84565b9150613cbd82613c56565b604082019050919050565b60006020820190508181036000830152613ce181613ca5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d5581612e5d565b92915050565b600060208284031215613d7157613d70612d11565b5b6000613d7f84828501613d46565b91505092915050565b6000819050919050565b6000613dad613da8613da384613d88565b612f7f565b612d16565b9050919050565b613dbd81613d92565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613df881612e4b565b82525050565b6000613e0a8383613def565b60208301905092915050565b6000602082019050919050565b6000613e2e82613dc3565b613e388185613dce565b9350613e4383613ddf565b8060005b83811015613e74578151613e5b8882613dfe565b9750613e6683613e16565b925050600181019050613e47565b5085935050505092915050565b600060a082019050613e966000830188612ff9565b613ea36020830187613db4565b8181036040830152613eb58186613e23565b9050613ec46060830185613023565b613ed16080830184612ff9565b969550505050505056fea26469706673582212209c972bf41b1935002ba5ccf9d7c2b82c2c6c283069e60fac36dff51365c1b6a864736f6c63430008110033

Deployed Bytecode Sourcemap

11560:9037:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15244:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1845:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2918:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15904:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12077:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11663:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2166:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14810:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3168:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11612:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13988:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11977:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2065:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3471:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11945:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15665:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11721:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12208:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12288:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2282:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7728:148;;;;;;;;;;;;;:::i;:::-;;14681:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14122:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7514:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13871:109;;;;;;;;;;;;;:::i;:::-;;1953:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16252:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3749:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2467:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11766:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12248:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14491:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15401:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11832:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15779:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12010:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15093:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2709:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11874:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11914:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15244:149;7651:12;:10;:12::i;:::-;7641:22;;:6;;;;;;;;;;;:22;;;7633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15335:1:::1;15323:8;:13;;15315:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;15377:8;15367:7;:18;;;;15244:149:::0;:::o;1845:100::-;1899:13;1932:5;1925:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1845:100;:::o;2918:242::-;3037:4;3059:13;3075:12;:10;:12::i;:::-;3059:28;;3098:32;3107:5;3114:7;3123:6;3098:8;:32::i;:::-;3148:4;3141:11;;;2918:242;;;;:::o;15904:340::-;16077:15;;;;;;;;;;;16061:31;;:12;:10;:12::i;:::-;:31;;;16053:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;16162:16;16144:15;;:34;;;;;;;;;;;;;;;;;;16189:47;16198:10;16210:16;16228:7;16189:8;:47::i;:::-;15904:340;;;:::o;12077:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;11663:51::-;;;:::o;2166:108::-;2227:7;2254:12;;2247:19;;2166:108;:::o;14810:275::-;7651:12;:10;:12::i;:::-;7641:22;;:6;;;;;;;;;;;:22;;;7633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14947:4:::1;14939;14934:1;14918:13;:11;:13::i;:::-;:17;;;;:::i;:::-;14917:26;;;;:::i;:::-;14916:35;;;;:::i;:::-;14906:6;:45;;14884:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;15070:6;15060;:17;;;;:::i;:::-;15037:20;:40;;;;14810:275:::0;:::o;3168:295::-;3299:4;3316:15;3334:12;:10;:12::i;:::-;3316:30;;3357:38;3373:4;3379:7;3388:6;3357:15;:38::i;:::-;3406:27;3416:4;3422:2;3426:6;3406:9;:27::i;:::-;3451:4;3444:11;;;3168:295;;;;;:::o;11612:44::-;;;;;;;;;;;;;:::o;13988:126::-;14041:7;14084:22;14094:11;;;;;;;;;;;14084:9;:22::i;:::-;14068:13;:11;:13::i;:::-;:38;;;;:::i;:::-;14061:45;;13988:126;:::o;11977:26::-;;;;:::o;2065:93::-;2123:5;2148:2;2141:9;;2065:93;:::o;3471:270::-;3586:4;3608:13;3624:12;:10;:12::i;:::-;3608:28;;3647:64;3656:5;3663:7;3700:10;3672:25;3682:5;3689:7;3672:9;:25::i;:::-;:38;;;;:::i;:::-;3647:8;:64::i;:::-;3729:4;3722:11;;;3471:270;;;;:::o;11945:25::-;;;;:::o;15665:106::-;7651:12;:10;:12::i;:::-;7641:22;;:6;;;;;;;;;;;:22;;;7633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15756:7:::1;15742:11;;:21;;;;;;;;;;;;;;;;;;15665:106:::0;:::o;11721:38::-;;;:::o;12208:33::-;;;;;;;;;;;;;:::o;12288:31::-;;;;;;;;;;;;;:::o;2282:177::-;2401:7;2433:9;:18;2443:7;2433:18;;;;;;;;;;;;;;;;2426:25;;2282:177;;;:::o;7728:148::-;7651:12;:10;:12::i;:::-;7641:22;;:6;;;;;;;;;;;:22;;;7633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7835:1:::1;7798:40;;7819:6;;;;;;;;;;;7798:40;;;;;;;;;;;;7866:1;7849:6;;:19;;;;;;;;;;;;;;;;;;7728:148::o:0;14681:121::-;14733:4;7651:12;:10;:12::i;:::-;7641:22;;:6;;;;;;;;;;;:22;;;7633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14767:5:::1;14750:14;;:22;;;;;;;;;;;;;;;;;;14790:4;14783:11;;14681:121:::0;:::o;14122:165::-;7651:12;:10;:12::i;:::-;7641:22;;:6;;;;;;;;;;;:22;;;7633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14275:4:::1;14234:31;:38;14266:5;14234:38;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;14122:165:::0;;:::o;7514:79::-;7552:7;7579:6;;;;;;;;;;;7572:13;;7514:79;:::o;13871:109::-;7651:12;:10;:12::i;:::-;7641:22;;:6;;;;;;;;;;;:22;;;7633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13939:4:::1;13923:13;;:20;;;;;;;;;;;;;;;;;;13968:4;13954:11;;:18;;;;;;;;;;;;;;;;;;13871:109::o:0;1953:104::-;2009:13;2042:7;2035:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1953:104;:::o;16252:292::-;7651:12;:10;:12::i;:::-;7641:22;;:6;;;;;;;;;;;:22;;;7633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16396:13:::1;16388:21;;:4;:21;;::::0;16366:116:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16495:41;16524:4;16530:5;16495:28;:41::i;:::-;16252:292:::0;;:::o;3749:505::-;3869:4;3891:13;3907:12;:10;:12::i;:::-;3891:28;;3930:24;3957:25;3967:5;3974:7;3957:9;:25::i;:::-;3930:52;;4035:15;4015:16;:35;;3993:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;4151:60;4160:5;4167:7;4195:15;4176:16;:34;4151:8;:60::i;:::-;4242:4;4235:11;;;;3749:505;;;;:::o;2467:234::-;2582:4;2604:13;2620:12;:10;:12::i;:::-;2604:28;;2643;2653:5;2660:2;2664:6;2643:9;:28::i;:::-;2689:4;2682:11;;;2467:234;;;;:::o;11766:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;12248:33::-;;;;;;;;;;;;;:::o;14491:182::-;7651:12;:10;:12::i;:::-;7641:22;;:6;;;;;;;;;;;:22;;;7633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14607:8:::1;14576:19;:28;14596:7;14576:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14647:7;14631:34;;;14656:8;14631:34;;;;;;:::i;:::-;;;;;;;;14491:182:::0;;:::o;15401:256::-;7651:12;:10;:12::i;:::-;7641:22;;:6;;;;;;;;;;;:22;;;7633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15541:4:::1;15533;15528:1;15512:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15511:26;;;;:::i;:::-;15510:35;;;;:::i;:::-;15500:6;:45;;15478:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;15642:6;15632;:17;;;;:::i;:::-;15620:9;:29;;;;15401:256:::0;:::o;11832:35::-;;;;:::o;15779:117::-;7651:12;:10;:12::i;:::-;7641:22;;:6;;;;;;;;;;;:22;;;7633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15881:7:::1;15860:18;:28;;;;15779:117:::0;:::o;12010:30::-;;;;;;;;;;;;;:::o;15093:143::-;7651:12;:10;:12::i;:::-;7641:22;;:6;;;;;;;;;;;:22;;;7633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15181:1:::1;15170:7;:12;;15162:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;15221:7;15212:6;:16;;;;15093:143:::0;:::o;2709:201::-;2843:7;2875:11;:18;2887:5;2875:18;;;;;;;;;;;;;;;:27;2894:7;2875:27;;;;;;;;;;;;;;;;2868:34;;2709:201;;;;:::o;11874:33::-;;;;:::o;11914:24::-;;;;:::o;1229:98::-;1282:7;1309:10;1302:17;;1229:98;:::o;5984:380::-;6137:1;6120:19;;:5;:19;;;6112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6218:1;6199:21;;:7;:21;;;6191:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6302:6;6272:11;:18;6284:5;6272:18;;;;;;;;;;;;;;;:27;6291:7;6272:27;;;;;;;;;;;;;;;:36;;;;6340:7;6324:32;;6333:5;6324:32;;;6349:6;6324:32;;;;;;:::i;:::-;;;;;;;;5984:380;;;:::o;6372:502::-;6507:24;6534:25;6544:5;6551:7;6534:9;:25::i;:::-;6507:52;;6594:17;6574:16;:37;6570:297;;6674:6;6654:16;:26;;6628:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;6789:51;6798:5;6805:7;6833:6;6814:16;:25;6789:8;:51::i;:::-;6570:297;6496:378;6372:502;;;:::o;16552:3043::-;16700:1;16684:18;;:4;:18;;;16676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16777:1;16763:16;;:2;:16;;;16755:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16846:1;16836:6;:11;16832:93;;16864:28;16880:4;16886:2;16890:1;16864:15;:28::i;:::-;16907:7;;16832:93;16941:14;;;;;;;;;;;16937:1522;;;17007:4;16996:15;;:7;:5;:7::i;:::-;:15;;;16994:18;:55;;;;;17046:2;17035:13;;:7;:5;:7::i;:::-;:13;;;17033:16;16994:55;:92;;;;;17084:1;17070:16;;:2;:16;;;;16994:92;:134;;;;;17121:6;17107:21;;:2;:21;;;;16994:134;:164;;;;;17150:8;;;;;;;;;;;17149:9;16994:164;16972:459;;;17198:13;;;;;;;;;;;17193:223;;17270:19;:25;17290:4;17270:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17299:19;:23;17319:2;17299:23;;;;;;;;;;;;;;;;;;;;;;;;;17270:52;17236:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;17193:223;16972:459;17469:25;:31;17495:4;17469:31;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;17522:31;:35;17554:2;17522:35;;;;;;;;;;;;;;;;;;;;;;;;;17521:36;17469:88;17447:1001;;;17632:20;;17622:6;:30;;17592:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;17824:9;;17807:13;17817:2;17807:9;:13::i;:::-;17798:6;:22;;;;:::i;:::-;:35;;17768:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;17447:1001;;;17940:25;:29;17966:2;17940:29;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;17991:31;:37;18023:4;17991:37;;;;;;;;;;;;;;;;;;;;;;;;;17990:38;17940:88;17918:530;;;18103:20;;18093:6;:30;;18063:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;17918:530;;;18248:31;:35;18280:2;18248:35;;;;;;;;;;;;;;;;;;;;;;;;;18243:205;;18360:9;;18343:13;18353:2;18343:9;:13::i;:::-;18334:6;:22;;;;:::i;:::-;:35;;18304:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;18243:205;17918:530;17447:1001;16937:1522;18471:28;18502:24;18520:4;18502:9;:24::i;:::-;18471:55;;18539:12;18578:18;;18554:20;:42;;18539:57;;18627:7;:35;;;;;18651:11;;;;;;;;;;;18627:35;:61;;;;;18680:8;;;;;;;;;;;18679:9;18627:61;:110;;;;;18706:25;:31;18732:4;18706:31;;;;;;;;;;;;;;;;;;;;;;;;;18705:32;18627:110;:153;;;;;18755:19;:25;18775:4;18755:25;;;;;;;;;;;;;;;;;;;;;;;;;18754:26;18627:153;:194;;;;;18798:19;:23;18818:2;18798:23;;;;;;;;;;;;;;;;;;;;;;;;;18797:24;18627:194;18609:330;;;18859:4;18848:8;;:15;;;;;;;;;;;;;;;;;;18878:18;:16;:18::i;:::-;18922:5;18911:8;;:16;;;;;;;;;;;;;;;;;;18609:330;18951:12;18967:8;;;;;;;;;;;18966:9;18951:24;;18992:19;:25;19012:4;18992:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19021:19;:23;19041:2;19021:23;;;;;;;;;;;;;;;;;;;;;;;;;18992:52;18988:100;;;19071:5;19061:15;;18988:100;19100:12;19133:7;19129:415;;;19161:25;:29;19187:2;19161:29;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;19204:1;19194:7;;:11;19161:44;19157:238;;;19254:3;19243:7;;19234:6;:16;;;;:::i;:::-;19233:24;;;;:::i;:::-;19226:31;;19157:238;;;19283:25;:31;19309:4;19283:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;19327:1;19318:6;;:10;19283:45;19279:116;;;19376:3;19366:6;;19357;:15;;;;:::i;:::-;19356:23;;;;:::i;:::-;19349:30;;19279:116;19157:238;19422:1;19415:4;:8;19411:91;;;19444:42;19460:4;19474;19481;19444:15;:42::i;:::-;19411:91;19528:4;19518:14;;;;;:::i;:::-;;;19129:415;19554:33;19570:4;19576:2;19580:6;19554:15;:33::i;:::-;16665:2930;;;;16552:3043;;;;:::o;14295:188::-;14412:5;14378:25;:31;14404:4;14378:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14469:5;14435:40;;14463:4;14435:40;;;;;;;;;;;;14295:188;;:::o;4262:708::-;4409:1;4393:18;;:4;:18;;;4385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4486:1;4472:16;;:2;:16;;;4464:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4541:38;4562:4;4568:2;4572:6;4541:20;:38::i;:::-;4592:19;4614:9;:15;4624:4;4614:15;;;;;;;;;;;;;;;;4592:37;;4677:6;4662:11;:21;;4640:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;4817:6;4803:11;:20;4785:9;:15;4795:4;4785:15;;;;;;;;;;;;;;;:38;;;;4862:6;4845:9;:13;4855:2;4845:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4901:2;4886:26;;4895:4;4886:26;;;4905:6;4886:26;;;;;;:::i;:::-;;;;;;;;4925:37;4945:4;4951:2;4955:6;4925:19;:37::i;:::-;4374:596;4262:708;;;:::o;19603:510::-;19650:23;19676:24;19694:4;19676:9;:24::i;:::-;19650:50;;19734:1;19715:15;:20;19711:59;;19752:7;;;19711:59;19832:4;19826:2;19810:13;:11;:13::i;:::-;:18;;;;:::i;:::-;19809:27;;;;:::i;:::-;19784:22;19794:11;;;;;;;;;;;19784:9;:22::i;:::-;:52;19780:201;;;19853:50;;;;;;;;;;:::i;:::-;;;;;;;;19780:201;19936:33;19953:15;19936:16;:33::i;:::-;20036:1;20015:18;;:22;;;;:::i;:::-;19997:15;:40;19993:113;;;20093:1;20072:18;;:22;;;;:::i;:::-;20054:40;;19993:113;19639:474;19603:510;:::o;6882:125::-;;;;:::o;7015:124::-;;;;:::o;20121:473::-;20187:21;20225:1;20211:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20187:40;;20256:4;20238;20243:1;20238:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20282:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20272:4;20277:1;20272:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;20315:62;20332:4;20347:15;20365:11;20315:8;:62::i;:::-;20388:15;:66;;;20469:11;20495:1;20511:4;20530:15;;;;;;;;;;;20560;20388:198;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20176:418;20121:473;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:619::-;3858:6;3866;3874;3923:2;3911:9;3902:7;3898:23;3894:32;3891:119;;;3929:79;;:::i;:::-;3891:119;4049:1;4074:53;4119:7;4110:6;4099:9;4095:22;4074:53;:::i;:::-;4064:63;;4020:117;4176:2;4202:53;4247:7;4238:6;4227:9;4223:22;4202:53;:::i;:::-;4192:63;;4147:118;4304:2;4330:53;4375:7;4366:6;4355:9;4351:22;4330:53;:::i;:::-;4320:63;;4275:118;3781:619;;;;;:::o;4406:329::-;4465:6;4514:2;4502:9;4493:7;4489:23;4485:32;4482:119;;;4520:79;;:::i;:::-;4482:119;4640:1;4665:53;4710:7;4701:6;4690:9;4686:22;4665:53;:::i;:::-;4655:63;;4611:117;4406:329;;;;:::o;4741:60::-;4769:3;4790:5;4783:12;;4741:60;;;:::o;4807:142::-;4857:9;4890:53;4908:34;4917:24;4935:5;4917:24;:::i;:::-;4908:34;:::i;:::-;4890:53;:::i;:::-;4877:66;;4807:142;;;:::o;4955:126::-;5005:9;5038:37;5069:5;5038:37;:::i;:::-;5025:50;;4955:126;;;:::o;5087:153::-;5164:9;5197:37;5228:5;5197:37;:::i;:::-;5184:50;;5087:153;;;:::o;5246:185::-;5360:64;5418:5;5360:64;:::i;:::-;5355:3;5348:77;5246:185;;:::o;5437:276::-;5557:4;5595:2;5584:9;5580:18;5572:26;;5608:98;5703:1;5692:9;5688:17;5679:6;5608:98;:::i;:::-;5437:276;;;;:::o;5719:118::-;5806:24;5824:5;5806:24;:::i;:::-;5801:3;5794:37;5719:118;;:::o;5843:222::-;5936:4;5974:2;5963:9;5959:18;5951:26;;5987:71;6055:1;6044:9;6040:17;6031:6;5987:71;:::i;:::-;5843:222;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:323::-;7170:6;7219:2;7207:9;7198:7;7194:23;7190:32;7187:119;;;7225:79;;:::i;:::-;7187:119;7345:1;7370:50;7412:7;7403:6;7392:9;7388:22;7370:50;:::i;:::-;7360:60;;7316:114;7114:323;;;;:::o;7443:468::-;7508:6;7516;7565:2;7553:9;7544:7;7540:23;7536:32;7533:119;;;7571:79;;:::i;:::-;7533:119;7691:1;7716:53;7761:7;7752:6;7741:9;7737:22;7716:53;:::i;:::-;7706:63;;7662:117;7818:2;7844:50;7886:7;7877:6;7866:9;7862:22;7844:50;:::i;:::-;7834:60;;7789:115;7443:468;;;;;:::o;7917:474::-;7985:6;7993;8042:2;8030:9;8021:7;8017:23;8013:32;8010:119;;;8048:79;;:::i;:::-;8010:119;8168:1;8193:53;8238:7;8229:6;8218:9;8214:22;8193:53;:::i;:::-;8183:63;;8139:117;8295:2;8321:53;8366:7;8357:6;8346:9;8342:22;8321:53;:::i;:::-;8311:63;;8266:118;7917:474;;;;;:::o;8397:182::-;8537:34;8533:1;8525:6;8521:14;8514:58;8397:182;:::o;8585:366::-;8727:3;8748:67;8812:2;8807:3;8748:67;:::i;:::-;8741:74;;8824:93;8913:3;8824:93;:::i;:::-;8942:2;8937:3;8933:12;8926:19;;8585:366;;;:::o;8957:419::-;9123:4;9161:2;9150:9;9146:18;9138:26;;9210:9;9204:4;9200:20;9196:1;9185:9;9181:17;9174:47;9238:131;9364:4;9238:131;:::i;:::-;9230:139;;8957:419;;;:::o;9382:165::-;9522:17;9518:1;9510:6;9506:14;9499:41;9382:165;:::o;9553:366::-;9695:3;9716:67;9780:2;9775:3;9716:67;:::i;:::-;9709:74;;9792:93;9881:3;9792:93;:::i;:::-;9910:2;9905:3;9901:12;9894:19;;9553:366;;;:::o;9925:419::-;10091:4;10129:2;10118:9;10114:18;10106:26;;10178:9;10172:4;10168:20;10164:1;10153:9;10149:17;10142:47;10206:131;10332:4;10206:131;:::i;:::-;10198:139;;9925:419;;;:::o;10350:180::-;10398:77;10395:1;10388:88;10495:4;10492:1;10485:15;10519:4;10516:1;10509:15;10536:320;10580:6;10617:1;10611:4;10607:12;10597:22;;10664:1;10658:4;10654:12;10685:18;10675:81;;10741:4;10733:6;10729:17;10719:27;;10675:81;10803:2;10795:6;10792:14;10772:18;10769:38;10766:84;;10822:18;;:::i;:::-;10766:84;10587:269;10536:320;;;:::o;10862:223::-;11002:34;10998:1;10990:6;10986:14;10979:58;11071:6;11066:2;11058:6;11054:15;11047:31;10862:223;:::o;11091:366::-;11233:3;11254:67;11318:2;11313:3;11254:67;:::i;:::-;11247:74;;11330:93;11419:3;11330:93;:::i;:::-;11448:2;11443:3;11439:12;11432:19;;11091:366;;;:::o;11463:419::-;11629:4;11667:2;11656:9;11652:18;11644:26;;11716:9;11710:4;11706:20;11702:1;11691:9;11687:17;11680:47;11744:131;11870:4;11744:131;:::i;:::-;11736:139;;11463:419;;;:::o;11888:180::-;11936:77;11933:1;11926:88;12033:4;12030:1;12023:15;12057:4;12054:1;12047:15;12074:410;12114:7;12137:20;12155:1;12137:20;:::i;:::-;12132:25;;12171:20;12189:1;12171:20;:::i;:::-;12166:25;;12226:1;12223;12219:9;12248:30;12266:11;12248:30;:::i;:::-;12237:41;;12427:1;12418:7;12414:15;12411:1;12408:22;12388:1;12381:9;12361:83;12338:139;;12457:18;;:::i;:::-;12338:139;12122:362;12074:410;;;;:::o;12490:180::-;12538:77;12535:1;12528:88;12635:4;12632:1;12625:15;12659:4;12656:1;12649:15;12676:185;12716:1;12733:20;12751:1;12733:20;:::i;:::-;12728:25;;12767:20;12785:1;12767:20;:::i;:::-;12762:25;;12806:1;12796:35;;12811:18;;:::i;:::-;12796:35;12853:1;12850;12846:9;12841:14;;12676:185;;;;:::o;12867:234::-;13007:34;13003:1;12995:6;12991:14;12984:58;13076:17;13071:2;13063:6;13059:15;13052:42;12867:234;:::o;13107:366::-;13249:3;13270:67;13334:2;13329:3;13270:67;:::i;:::-;13263:74;;13346:93;13435:3;13346:93;:::i;:::-;13464:2;13459:3;13455:12;13448:19;;13107:366;;;:::o;13479:419::-;13645:4;13683:2;13672:9;13668:18;13660:26;;13732:9;13726:4;13722:20;13718:1;13707:9;13703:17;13696:47;13760:131;13886:4;13760:131;:::i;:::-;13752:139;;13479:419;;;:::o;13904:194::-;13944:4;13964:20;13982:1;13964:20;:::i;:::-;13959:25;;13998:20;14016:1;13998:20;:::i;:::-;13993:25;;14042:1;14039;14035:9;14027:17;;14066:1;14060:4;14057:11;14054:37;;;14071:18;;:::i;:::-;14054:37;13904:194;;;;:::o;14104:191::-;14144:3;14163:20;14181:1;14163:20;:::i;:::-;14158:25;;14197:20;14215:1;14197:20;:::i;:::-;14192:25;;14240:1;14237;14233:9;14226:16;;14261:3;14258:1;14255:10;14252:36;;;14268:18;;:::i;:::-;14252:36;14104:191;;;;:::o;14301:232::-;14441:34;14437:1;14429:6;14425:14;14418:58;14510:15;14505:2;14497:6;14493:15;14486:40;14301:232;:::o;14539:366::-;14681:3;14702:67;14766:2;14761:3;14702:67;:::i;:::-;14695:74;;14778:93;14867:3;14778:93;:::i;:::-;14896:2;14891:3;14887:12;14880:19;;14539:366;;;:::o;14911:419::-;15077:4;15115:2;15104:9;15100:18;15092:26;;15164:9;15158:4;15154:20;15150:1;15139:9;15135:17;15128:47;15192:131;15318:4;15192:131;:::i;:::-;15184:139;;14911:419;;;:::o;15336:224::-;15476:34;15472:1;15464:6;15460:14;15453:58;15545:7;15540:2;15532:6;15528:15;15521:32;15336:224;:::o;15566:366::-;15708:3;15729:67;15793:2;15788:3;15729:67;:::i;:::-;15722:74;;15805:93;15894:3;15805:93;:::i;:::-;15923:2;15918:3;15914:12;15907:19;;15566:366;;;:::o;15938:419::-;16104:4;16142:2;16131:9;16127:18;16119:26;;16191:9;16185:4;16181:20;16177:1;16166:9;16162:17;16155:47;16219:131;16345:4;16219:131;:::i;:::-;16211:139;;15938:419;;;:::o;16363:223::-;16503:34;16499:1;16491:6;16487:14;16480:58;16572:6;16567:2;16559:6;16555:15;16548:31;16363:223;:::o;16592:366::-;16734:3;16755:67;16819:2;16814:3;16755:67;:::i;:::-;16748:74;;16831:93;16920:3;16831:93;:::i;:::-;16949:2;16944:3;16940:12;16933:19;;16592:366;;;:::o;16964:419::-;17130:4;17168:2;17157:9;17153:18;17145:26;;17217:9;17211:4;17207:20;17203:1;17192:9;17188:17;17181:47;17245:131;17371:4;17245:131;:::i;:::-;17237:139;;16964:419;;;:::o;17389:164::-;17529:16;17525:1;17517:6;17513:14;17506:40;17389:164;:::o;17559:366::-;17701:3;17722:67;17786:2;17781:3;17722:67;:::i;:::-;17715:74;;17798:93;17887:3;17798:93;:::i;:::-;17916:2;17911:3;17907:12;17900:19;;17559:366;;;:::o;17931:419::-;18097:4;18135:2;18124:9;18120:18;18112:26;;18184:9;18178:4;18174:20;18170:1;18159:9;18155:17;18148:47;18212:131;18338:4;18212:131;:::i;:::-;18204:139;;17931:419;;;:::o;18356:223::-;18496:34;18492:1;18484:6;18480:14;18473:58;18565:6;18560:2;18552:6;18548:15;18541:31;18356:223;:::o;18585:366::-;18727:3;18748:67;18812:2;18807:3;18748:67;:::i;:::-;18741:74;;18824:93;18913:3;18824:93;:::i;:::-;18942:2;18937:3;18933:12;18926:19;;18585:366;;;:::o;18957:419::-;19123:4;19161:2;19150:9;19146:18;19138:26;;19210:9;19204:4;19200:20;19196:1;19185:9;19181:17;19174:47;19238:131;19364:4;19238:131;:::i;:::-;19230:139;;18957:419;;;:::o;19382:221::-;19522:34;19518:1;19510:6;19506:14;19499:58;19591:4;19586:2;19578:6;19574:15;19567:29;19382:221;:::o;19609:366::-;19751:3;19772:67;19836:2;19831:3;19772:67;:::i;:::-;19765:74;;19848:93;19937:3;19848:93;:::i;:::-;19966:2;19961:3;19957:12;19950:19;;19609:366;;;:::o;19981:419::-;20147:4;20185:2;20174:9;20170:18;20162:26;;20234:9;20228:4;20224:20;20220:1;20209:9;20205:17;20198:47;20262:131;20388:4;20262:131;:::i;:::-;20254:139;;19981:419;;;:::o;20406:179::-;20546:31;20542:1;20534:6;20530:14;20523:55;20406:179;:::o;20591:366::-;20733:3;20754:67;20818:2;20813:3;20754:67;:::i;:::-;20747:74;;20830:93;20919:3;20830:93;:::i;:::-;20948:2;20943:3;20939:12;20932:19;;20591:366;;;:::o;20963:419::-;21129:4;21167:2;21156:9;21152:18;21144:26;;21216:9;21210:4;21206:20;21202:1;21191:9;21187:17;21180:47;21244:131;21370:4;21244:131;:::i;:::-;21236:139;;20963:419;;;:::o;21388:224::-;21528:34;21524:1;21516:6;21512:14;21505:58;21597:7;21592:2;21584:6;21580:15;21573:32;21388:224;:::o;21618:366::-;21760:3;21781:67;21845:2;21840:3;21781:67;:::i;:::-;21774:74;;21857:93;21946:3;21857:93;:::i;:::-;21975:2;21970:3;21966:12;21959:19;;21618:366;;;:::o;21990:419::-;22156:4;22194:2;22183:9;22179:18;22171:26;;22243:9;22237:4;22233:20;22229:1;22218:9;22214:17;22207:47;22271:131;22397:4;22271:131;:::i;:::-;22263:139;;21990:419;;;:::o;22415:222::-;22555:34;22551:1;22543:6;22539:14;22532:58;22624:5;22619:2;22611:6;22607:15;22600:30;22415:222;:::o;22643:366::-;22785:3;22806:67;22870:2;22865:3;22806:67;:::i;:::-;22799:74;;22882:93;22971:3;22882:93;:::i;:::-;23000:2;22995:3;22991:12;22984:19;;22643:366;;;:::o;23015:419::-;23181:4;23219:2;23208:9;23204:18;23196:26;;23268:9;23262:4;23258:20;23254:1;23243:9;23239:17;23232:47;23296:131;23422:4;23296:131;:::i;:::-;23288:139;;23015:419;;;:::o;23440:172::-;23580:24;23576:1;23568:6;23564:14;23557:48;23440:172;:::o;23618:366::-;23760:3;23781:67;23845:2;23840:3;23781:67;:::i;:::-;23774:74;;23857:93;23946:3;23857:93;:::i;:::-;23975:2;23970:3;23966:12;23959:19;;23618:366;;;:::o;23990:419::-;24156:4;24194:2;24183:9;24179:18;24171:26;;24243:9;24237:4;24233:20;24229:1;24218:9;24214:17;24207:47;24271:131;24397:4;24271:131;:::i;:::-;24263:139;;23990:419;;;:::o;24415:240::-;24555:34;24551:1;24543:6;24539:14;24532:58;24624:23;24619:2;24611:6;24607:15;24600:48;24415:240;:::o;24661:366::-;24803:3;24824:67;24888:2;24883:3;24824:67;:::i;:::-;24817:74;;24900:93;24989:3;24900:93;:::i;:::-;25018:2;25013:3;25009:12;25002:19;;24661:366;;;:::o;25033:419::-;25199:4;25237:2;25226:9;25222:18;25214:26;;25286:9;25280:4;25276:20;25272:1;25261:9;25257:17;25250:47;25314:131;25440:4;25314:131;:::i;:::-;25306:139;;25033:419;;;:::o;25458:169::-;25598:21;25594:1;25586:6;25582:14;25575:45;25458:169;:::o;25633:366::-;25775:3;25796:67;25860:2;25855:3;25796:67;:::i;:::-;25789:74;;25872:93;25961:3;25872:93;:::i;:::-;25990:2;25985:3;25981:12;25974:19;;25633:366;;;:::o;26005:419::-;26171:4;26209:2;26198:9;26194:18;26186:26;;26258:9;26252:4;26248:20;26244:1;26233:9;26229:17;26222:47;26286:131;26412:4;26286:131;:::i;:::-;26278:139;;26005:419;;;:::o;26430:241::-;26570:34;26566:1;26558:6;26554:14;26547:58;26639:24;26634:2;26626:6;26622:15;26615:49;26430:241;:::o;26677:366::-;26819:3;26840:67;26904:2;26899:3;26840:67;:::i;:::-;26833:74;;26916:93;27005:3;26916:93;:::i;:::-;27034:2;27029:3;27025:12;27018:19;;26677:366;;;:::o;27049:419::-;27215:4;27253:2;27242:9;27238:18;27230:26;;27302:9;27296:4;27292:20;27288:1;27277:9;27273:17;27266:47;27330:131;27456:4;27330:131;:::i;:::-;27322:139;;27049:419;;;:::o;27474:225::-;27614:34;27610:1;27602:6;27598:14;27591:58;27683:8;27678:2;27670:6;27666:15;27659:33;27474:225;:::o;27705:366::-;27847:3;27868:67;27932:2;27927:3;27868:67;:::i;:::-;27861:74;;27944:93;28033:3;27944:93;:::i;:::-;28062:2;28057:3;28053:12;28046:19;;27705:366;;;:::o;28077:419::-;28243:4;28281:2;28270:9;28266:18;28258:26;;28330:9;28324:4;28320:20;28316:1;28305:9;28301:17;28294:47;28358:131;28484:4;28358:131;:::i;:::-;28350:139;;28077:419;;;:::o;28502:227::-;28642:34;28638:1;28630:6;28626:14;28619:58;28711:10;28706:2;28698:6;28694:15;28687:35;28502:227;:::o;28735:366::-;28877:3;28898:67;28962:2;28957:3;28898:67;:::i;:::-;28891:74;;28974:93;29063:3;28974:93;:::i;:::-;29092:2;29087:3;29083:12;29076:19;;28735:366;;;:::o;29107:419::-;29273:4;29311:2;29300:9;29296:18;29288:26;;29360:9;29354:4;29350:20;29346:1;29335:9;29331:17;29324:47;29388:131;29514:4;29388:131;:::i;:::-;29380:139;;29107:419;;;:::o;29532:180::-;29580:77;29577:1;29570:88;29677:4;29674:1;29667:15;29701:4;29698:1;29691:15;29718:180;29766:77;29763:1;29756:88;29863:4;29860:1;29853:15;29887:4;29884:1;29877:15;29904:143;29961:5;29992:6;29986:13;29977:22;;30008:33;30035:5;30008:33;:::i;:::-;29904:143;;;;:::o;30053:351::-;30123:6;30172:2;30160:9;30151:7;30147:23;30143:32;30140:119;;;30178:79;;:::i;:::-;30140:119;30298:1;30323:64;30379:7;30370:6;30359:9;30355:22;30323:64;:::i;:::-;30313:74;;30269:128;30053:351;;;;:::o;30410:85::-;30455:7;30484:5;30473:16;;30410:85;;;:::o;30501:158::-;30559:9;30592:61;30610:42;30619:32;30645:5;30619:32;:::i;:::-;30610:42;:::i;:::-;30592:61;:::i;:::-;30579:74;;30501:158;;;:::o;30665:147::-;30760:45;30799:5;30760:45;:::i;:::-;30755:3;30748:58;30665:147;;:::o;30818:114::-;30885:6;30919:5;30913:12;30903:22;;30818:114;;;:::o;30938:184::-;31037:11;31071:6;31066:3;31059:19;31111:4;31106:3;31102:14;31087:29;;30938:184;;;;:::o;31128:132::-;31195:4;31218:3;31210:11;;31248:4;31243:3;31239:14;31231:22;;31128:132;;;:::o;31266:108::-;31343:24;31361:5;31343:24;:::i;:::-;31338:3;31331:37;31266:108;;:::o;31380:179::-;31449:10;31470:46;31512:3;31504:6;31470:46;:::i;:::-;31548:4;31543:3;31539:14;31525:28;;31380:179;;;;:::o;31565:113::-;31635:4;31667;31662:3;31658:14;31650:22;;31565:113;;;:::o;31714:732::-;31833:3;31862:54;31910:5;31862:54;:::i;:::-;31932:86;32011:6;32006:3;31932:86;:::i;:::-;31925:93;;32042:56;32092:5;32042:56;:::i;:::-;32121:7;32152:1;32137:284;32162:6;32159:1;32156:13;32137:284;;;32238:6;32232:13;32265:63;32324:3;32309:13;32265:63;:::i;:::-;32258:70;;32351:60;32404:6;32351:60;:::i;:::-;32341:70;;32197:224;32184:1;32181;32177:9;32172:14;;32137:284;;;32141:14;32437:3;32430:10;;31838:608;;;31714:732;;;;:::o;32452:831::-;32715:4;32753:3;32742:9;32738:19;32730:27;;32767:71;32835:1;32824:9;32820:17;32811:6;32767:71;:::i;:::-;32848:80;32924:2;32913:9;32909:18;32900:6;32848:80;:::i;:::-;32975:9;32969:4;32965:20;32960:2;32949:9;32945:18;32938:48;33003:108;33106:4;33097:6;33003:108;:::i;:::-;32995:116;;33121:72;33189:2;33178:9;33174:18;33165:6;33121:72;:::i;:::-;33203:73;33271:3;33260:9;33256:19;33247:6;33203:73;:::i;:::-;32452:831;;;;;;;;:::o

Swarm Source

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