ETH Price: $3,337.64 (-1.10%)

Token

Raider Inu - The AI Raid Leader (RAID)
 

Overview

Max Total Supply

10,000,000 RAID

Holders

228

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,382.449900598353428932 RAID

Value
$0.00
0x2022760acde82079cbeda17d3afc67dc1f3d97c9
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:
RaiderInu

Compiler Version
v0.8.12+commit.f00d7308

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-29
*/

//SPDX-License-Identifier: MIT

pragma solidity 0.8.12;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    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");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

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

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract RaiderInu is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;
    bool public notBotsEnabled = true;

    uint256 public genesis_block;
    
    uint256 public swapThreshold = 10_000 * 10e18;
    uint256 public maxTxAmount = 200_000 * 10**18;
    uint256 public maxWalletAmount = 200_000 * 10**18;
    
    address public marketingWallet = 0x22222cd4C5Bb148F6F5E5F57191ec98A5265579C;
    address public developmentWallet = 0x3333367EE31bBf49E8efF6196BC253F67EFEE122;
    address public lpReceiver = 0x111110dDC64a79fF2571368A7780489C1E5D6a71;

    address public nullAddr = 0x000000000000000000000000000000000000dEaD;
    
    struct Taxes {
        uint256 marketing; 
        uint256 development;
        uint256 liquidity;
    }
    
    Taxes public buyTaxes = Taxes(9,6,3);
    Taxes public sellTaxes = Taxes(30,20,10);
    uint256 public totalBuyTax = 18;
    uint256 public totalSellTax = 60;
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) public isBot;
    mapping (address => bool) public notBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("Raider Inu - The AI Raid Leader", "RAID") {
        _mint(msg.sender, 1e7 * 10**decimals());
        excludedFromFees[msg.sender] = true;
        notBot[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[developmentWallet] = true;
        excludedFromFees[lpReceiver] = true;
        excludedFromFees[nullAddr] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");

        if (notBotsEnabled) {
            require(
                notBot[sender] || notBot[recipient],
                "Not in allowed list: Either sender or recipient address is not in the allowed list"
            );
        }
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            if(genesis_block > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        
        //set fee to zero if fees in contract are handled or exempted
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
        //calculate fee
        else{
            if(recipient == pair) fee = amount * totalSellTax / 100;
            else fee = amount * totalBuyTax / 100;
        }
        
        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

            // Split the contract balance into halves
            uint256 denominator = totalSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 developmentAmt = unitBalance * 2 * sellTaxes.development;
            if(developmentAmt > 0){
                payable(developmentWallet).sendValue(developmentAmt);
            }
        }
    }


    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);

    }

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

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

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function letsTrade() external onlyOwner {
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
    }

    function setBuyTaxes(uint256 _marketing, uint256 _development, uint256 _liquidity) external onlyOwner{
        buyTaxes = Taxes(_marketing, _development, _liquidity);
        totalBuyTax = _marketing + _development + _liquidity;
    }

    function setSellTaxes(uint256 _marketing, uint256 _development, uint256 _liquidity) external onlyOwner{
        sellTaxes = Taxes(_marketing, _development, _liquidity);
        totalSellTax = _marketing + _development + _liquidity;
    }
    
    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDevelopmentWallet(address newWallet) external onlyOwner{
        developmentWallet = newWallet;
    }

    function updateLpReceiver(address newWallet) external onlyOwner {
        lpReceiver = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }

    function addBots(address[] memory isBot_) external onlyOwner {
        for (uint i = 0; i < isBot_.length; i++) {
            isBot[isBot_[i]] = true;
        }
    }

    function delBots(address[] memory isBot_) external {
        require (msg.sender == developmentWallet);
        for (uint i = 0; i < isBot_.length; i++) {
            isBot[isBot_[i]] = false;
        }
    }

    function updateExcludedFromFees(address _address, bool state) external onlyOwner{
        excludedFromFees[_address] = state;
    }
    
    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10**18;
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmount = amount * 10**18;
    }

    function rescueERC20(address tokenAddress, uint256 amount) external {
        require (msg.sender == developmentWallet);
        IERC20(tokenAddress).transfer(developmentWallet, amount);
    }

    function burnERC20(address tokenAddress, uint256 amount) external {
        require (msg.sender == developmentWallet);
        IERC20(tokenAddress).transfer(nullAddr, amount);
    }

    function rescueETH(uint256 weiAmount) external {
        require (msg.sender == developmentWallet);
        payable(developmentWallet).sendValue(weiAmount);
    }

    function manualSwap(uint256 amount, uint256 developmentPercentage, uint256 marketingPercentage) external {
        require (msg.sender == developmentWallet);
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (developmentPercentage + marketingPercentage));
        if(developmentPercentage > 0) payable(developmentWallet).sendValue(newBalance * developmentPercentage / (developmentPercentage + marketingPercentage));
    }

    function removeLimits() external onlyOwner returns (bool) {
        maxTxAmount = totalSupply();
        maxWalletAmount = totalSupply();
        return true;
    }

    function imNotABot() public {
        require(tradingEnabled, "Trading not active yet");
        require(!notBot[msg.sender], "Already not bot");
        notBot[msg.sender] = true;
    }

    function addNotBots(address[] memory isNotBot_) external onlyOwner {
        for (uint i = 0; i < isNotBot_.length; i++) {
            notBot[isNotBot_[i]] = true;
        }
    }

    function delNotBots(address[] memory isNotBot_) external onlyOwner {
        for (uint i = 0; i < isNotBot_.length; i++) {
            notBot[isNotBot_[i]] = false;
        }
    }

    // disable allowed list, cannot be re-enabled
    function freeForAll() external onlyOwner returns (bool) {
        notBotsEnabled = false;
        return true;
    }

    // fallbacks
    receive() external payable {}
    
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"isNotBot_","type":"address[]"}],"name":"addNotBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"isNotBot_","type":"address[]"}],"name":"delNotBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freeForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"imNotABot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"letsTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"developmentPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"notBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notBotsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nullAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","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":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","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":"totalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateLpReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600760176101000a81548160ff02191690831515021790555069152d02c7e14af6800000600955692a5a058fc295ed000000600a55692a5a058fc295ed000000600b557322222cd4c5bb148f6f5e5f57191ec98a5265579c600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733333367ee31bbf49e8eff6196bc253f67efee122600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073111110ddc64a79ff2571368a7780489c1e5d6a71600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060098152602001600681526020016003815250601060008201518160000155602082015181600101556040820151816002015550506040518060600160405280601e815260200160148152602001600a815250601360008201518160000155602082015181600101556040820151816002015550506012601655603c6017553480156200022257600080fd5b506040518060400160405280601f81526020017f52616964657220496e75202d205468652041492052616964204c6561646572008152506040518060400160405280600481526020017f52414944000000000000000000000000000000000000000000000000000000008152508160039080519060200190620002a792919062000a5f565b508060049080519060200190620002c092919062000a5f565b505050620002e3620002d76200081e60201b60201c565b6200082660201b60201c565b6200032233620002f8620008ec60201b60201c565b600a62000306919062000ca9565b6298968062000316919062000cfa565b620008f560201b60201c565b6001601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000439573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045f919062000dc5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ed919062000dc5565b6040518363ffffffff1660e01b81526004016200050c92919062000e08565b6020604051808303816000875af11580156200052c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000552919062000dc5565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000fa8565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000968576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200095f9062000e96565b60405180910390fd5b6200097c6000838362000a5a60201b60201c565b806002600082825462000990919062000eb8565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009e7919062000eb8565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a4e919062000f26565b60405180910390a35050565b505050565b82805462000a6d9062000f72565b90600052602060002090601f01602090048101928262000a91576000855562000add565b82601f1062000aac57805160ff191683800117855562000add565b8280016001018555821562000add579182015b8281111562000adc57825182559160200191906001019062000abf565b5b50905062000aec919062000af0565b5090565b5b8082111562000b0b57600081600090555060010162000af1565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b9d5780860481111562000b755762000b7462000b0f565b5b600185161562000b855780820291505b808102905062000b958562000b3e565b945062000b55565b94509492505050565b60008262000bb8576001905062000c8b565b8162000bc8576000905062000c8b565b816001811462000be1576002811462000bec5762000c22565b600191505062000c8b565b60ff84111562000c015762000c0062000b0f565b5b8360020a91508482111562000c1b5762000c1a62000b0f565b5b5062000c8b565b5060208310610133831016604e8410600b841016171562000c5c5782820a90508381111562000c565762000c5562000b0f565b5b62000c8b565b62000c6b848484600162000b4b565b9250905081840481111562000c855762000c8462000b0f565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000cb68262000c92565b915062000cc38362000c9c565b925062000cf27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ba6565b905092915050565b600062000d078262000c92565b915062000d148362000c92565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d505762000d4f62000b0f565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d8d8262000d60565b9050919050565b62000d9f8162000d80565b811462000dab57600080fd5b50565b60008151905062000dbf8162000d94565b92915050565b60006020828403121562000dde5762000ddd62000d5b565b5b600062000dee8482850162000dae565b91505092915050565b62000e028162000d80565b82525050565b600060408201905062000e1f600083018562000df7565b62000e2e602083018462000df7565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e7e601f8362000e35565b915062000e8b8262000e46565b602082019050919050565b6000602082019050818103600083015262000eb18162000e6f565b9050919050565b600062000ec58262000c92565b915062000ed28362000c92565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f0a5762000f0962000b0f565b5b828201905092915050565b62000f208162000c92565b82525050565b600060208201905062000f3d600083018462000f15565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f8b57607f821691505b6020821081141562000fa25762000fa162000f43565b5b50919050565b61532d8062000fb86000396000f3fe60806040526004361061037a5760003560e01c8063715018a6116101d1578063a9059cbb11610102578063dbe66ca0116100a0578063f023f5731161006f578063f023f57314610cc3578063f2fde38b14610cec578063f66895a314610d15578063f887ea4014610d4257610381565b8063dbe66ca014610bf7578063dd62ed3e14610c34578063e01af92c14610c71578063e545fd6d14610c9a57610381565b8063b7507a9c116100dc578063b7507a9c14610b4f578063c04a541414610b7a578063c18bc19514610ba5578063d34628cc14610bce57610381565b8063a9059cbb14610abe578063aa4bde2814610afb578063aacebbe314610b2657610381565b80638cd4426d1161016f5780639d0014b1116101495780639d0014b114610a045780639e252f0014610a2d578063a457c2d714610a56578063a8aa1b3114610a9357610381565b80638cd4426d146109855780638da5cb5b146109ae57806395d89b41146109d957610381565b806384240180116101ab57806384240180146108db57806386426e5b14610904578063864701a51461092d5780638c0b5e221461095a57610381565b8063715018a61461086e578063751039fc1461088557806375f0a874146108b057610381565b8063313ce567116102ab5780634a9d3ce1116102495780636256d181116102235780636256d181146107b457806365431974146107dd5780636ddd17131461080657806370a082311461083157610381565b80634a9d3ce1146107215780634ada218b1461075e5780634ebfd6e81461078957610381565b80633bbac579116102855780633bbac5791461067957806340b28c2f146106b657806343cf7d4e146106df57806346469afb146106f657610381565b8063313ce567146105e857806331c2d84714610613578063395093511461063c57610381565b80631870517a116103185780631f0c57fc116102f25780631f0c57fc1461052c57806323b872dd1461055757806326b5d32f14610594578063274a533c146105bd57610381565b80631870517a146104af5780631bff7898146104d85780631eeece061461050357610381565b8063095ea7b311610354578063095ea7b314610405578063130b1696146104425780631405f6951461046d57806318160ddd1461048457610381565b80630445b6671461038657806306fdde03146103b157806308733214146103dc57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610d6d565b6040516103a89190613cc6565b60405180910390f35b3480156103bd57600080fd5b506103c6610d73565b6040516103d39190613d7a565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190613ddc565b610e05565b005b34801561041157600080fd5b5061042c60048036038101906104279190613e8d565b610ee1565b6040516104399190613ee8565b60405180910390f35b34801561044e57600080fd5b50610457610eff565b6040516104649190613f12565b60405180910390f35b34801561047957600080fd5b50610482610f25565b005b34801561049057600080fd5b5061049961105b565b6040516104a69190613cc6565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190613ddc565b611065565b005b3480156104e457600080fd5b506104ed611141565b6040516104fa9190613cc6565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190613e8d565b611147565b005b34801561053857600080fd5b50610541611246565b60405161054e9190613f12565b60405180910390f35b34801561056357600080fd5b5061057e60048036038101906105799190613f2d565b61126c565b60405161058b9190613ee8565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b69190613ddc565b61136d565b005b3480156105c957600080fd5b506105d26114d8565b6040516105df9190613cc6565b60405180910390f35b3480156105f457600080fd5b506105fd6114de565b60405161060a9190613f9c565b60405180910390f35b34801561061f57600080fd5b5061063a600480360381019061063591906140ff565b6114e7565b005b34801561064857600080fd5b50610663600480360381019061065e9190613e8d565b6115d6565b6040516106709190613ee8565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b9190614148565b611682565b6040516106ad9190613ee8565b60405180910390f35b3480156106c257600080fd5b506106dd60048036038101906106d891906141b3565b6116a2565b005b3480156106eb57600080fd5b506106f46117a4565b005b34801561070257600080fd5b5061070b6118af565b6040516107189190613cc6565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190614148565b6118b5565b6040516107559190613ee8565b60405180910390f35b34801561076a57600080fd5b506107736118d5565b6040516107809190613ee8565b60405180910390f35b34801561079557600080fd5b5061079e6118e8565b6040516107ab9190613ee8565b60405180910390f35b3480156107c057600080fd5b506107db60048036038101906107d691906141f3565b611988565b005b3480156107e957600080fd5b5061080460048036038101906107ff9190614148565b611a21565b005b34801561081257600080fd5b5061081b611ae1565b6040516108289190613ee8565b60405180910390f35b34801561083d57600080fd5b5061085860048036038101906108539190614148565b611af4565b6040516108659190613cc6565b60405180910390f35b34801561087a57600080fd5b50610883611b3c565b005b34801561089157600080fd5b5061089a611bc4565b6040516108a79190613ee8565b60405180910390f35b3480156108bc57600080fd5b506108c5611c65565b6040516108d29190613f12565b60405180910390f35b3480156108e757600080fd5b5061090260048036038101906108fd91906140ff565b611c8b565b005b34801561091057600080fd5b5061092b600480360381019061092691906140ff565b611d9c565b005b34801561093957600080fd5b50610942611ead565b60405161095193929190614220565b60405180910390f35b34801561096657600080fd5b5061096f611ec5565b60405161097c9190613cc6565b60405180910390f35b34801561099157600080fd5b506109ac60048036038101906109a79190613e8d565b611ecb565b005b3480156109ba57600080fd5b506109c3611fca565b6040516109d09190613f12565b60405180910390f35b3480156109e557600080fd5b506109ee611ff4565b6040516109fb9190613d7a565b60405180910390f35b348015610a1057600080fd5b50610a2b6004803603810190610a2691906141f3565b612086565b005b348015610a3957600080fd5b50610a546004803603810190610a4f91906141f3565b61210c565b005b348015610a6257600080fd5b50610a7d6004803603810190610a789190613e8d565b6121b4565b604051610a8a9190613ee8565b60405180910390f35b348015610a9f57600080fd5b50610aa86122a8565b604051610ab59190613f12565b60405180910390f35b348015610aca57600080fd5b50610ae56004803603810190610ae09190613e8d565b6122ce565b604051610af29190613ee8565b60405180910390f35b348015610b0757600080fd5b50610b106122ec565b604051610b1d9190613cc6565b60405180910390f35b348015610b3257600080fd5b50610b4d6004803603810190610b489190614148565b6122f2565b005b348015610b5b57600080fd5b50610b646123b2565b604051610b719190613ee8565b60405180910390f35b348015610b8657600080fd5b50610b8f6123c5565b604051610b9c9190613f12565b60405180910390f35b348015610bb157600080fd5b50610bcc6004803603810190610bc791906141f3565b6123eb565b005b348015610bda57600080fd5b50610bf56004803603810190610bf091906140ff565b612484565b005b348015610c0357600080fd5b50610c1e6004803603810190610c199190614148565b612595565b604051610c2b9190613ee8565b60405180910390f35b348015610c4057600080fd5b50610c5b6004803603810190610c569190614257565b6125b5565b604051610c689190613cc6565b60405180910390f35b348015610c7d57600080fd5b50610c986004803603810190610c9391906142c3565b61263c565b005b348015610ca657600080fd5b50610cc16004803603810190610cbc91906142f0565b6126d5565b005b348015610ccf57600080fd5b50610cea6004803603810190610ce59190614148565b6127ac565b005b348015610cf857600080fd5b50610d136004803603810190610d0e9190614148565b61286c565b005b348015610d2157600080fd5b50610d2a612964565b604051610d3993929190614220565b60405180910390f35b348015610d4e57600080fd5b50610d5761297c565b604051610d64919061438f565b60405180910390f35b60095481565b606060038054610d82906143d9565b80601f0160208091040260200160405190810160405280929190818152602001828054610dae906143d9565b8015610dfb5780601f10610dd057610100808354040283529160200191610dfb565b820191906000526020600020905b815481529060010190602001808311610dde57829003601f168201915b5050505050905090565b610e0d6129a2565b73ffffffffffffffffffffffffffffffffffffffff16610e2b611fca565b73ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7890614457565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506013600082015181600001556020820151816001015560408201518160020155905050808284610ecc91906144a6565b610ed691906144a6565b601781905550505050565b6000610ef5610eee6129a2565b84846129aa565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760169054906101000a900460ff16610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90614548565b60405180910390fd5b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff8906145b4565b60405180910390fd5b6001601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b6000600254905090565b61106d6129a2565b73ffffffffffffffffffffffffffffffffffffffff1661108b611fca565b73ffffffffffffffffffffffffffffffffffffffff16146110e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d890614457565b60405180910390fd5b604051806060016040528084815260200183815260200182815250601060008201518160000155602082015181600101556040820151816002015590505080828461112c91906144a6565b61113691906144a6565b601681905550505050565b60175481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111a157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016111fe9291906145d4565b6020604051808303816000875af115801561121d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112419190614612565b505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611279848484612b75565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112c46129a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133b906146b1565b60405180910390fd5b611361856113506129a2565b858461135c91906146d1565b6129aa565b60019150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c757600080fd5b60004790506113d584613328565b600081476113e391906146d1565b9050600083111561145b5761145a83856113fd91906144a6565b84836114099190614705565b611413919061478e565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661356b90919063ffffffff16565b5b60008411156114d1576114d0838561147391906144a6565b858361147f9190614705565b611489919061478e565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661356b90919063ffffffff16565b5b5050505050565b60085481565b60006012905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461154157600080fd5b60005b81518110156115d257600060196000848481518110611566576115656147bf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115ca906147ee565b915050611544565b5050565b60006116786115e36129a2565b8484600160006115f16129a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461167391906144a6565b6129aa565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b6116aa6129a2565b73ffffffffffffffffffffffffffffffffffffffff166116c8611fca565b73ffffffffffffffffffffffffffffffffffffffff161461171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590614457565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6117ac6129a2565b73ffffffffffffffffffffffffffffffffffffffff166117ca611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181790614457565b60405180910390fd5b600760169054906101000a900460ff1615611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186790614883565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600881905550565b60165481565b601a6020528060005260406000206000915054906101000a900460ff1681565b600760169054906101000a900460ff1681565b60006118f26129a2565b73ffffffffffffffffffffffffffffffffffffffff16611910611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d90614457565b60405180910390fd5b6000600760176101000a81548160ff0219169083151502179055506001905090565b6119906129a2565b73ffffffffffffffffffffffffffffffffffffffff166119ae611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb90614457565b60405180910390fd5b670de0b6b3a764000081611a189190614705565b600a8190555050565b611a296129a2565b73ffffffffffffffffffffffffffffffffffffffff16611a47611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9490614457565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b446129a2565b73ffffffffffffffffffffffffffffffffffffffff16611b62611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90614457565b60405180910390fd5b611bc2600061365f565b565b6000611bce6129a2565b73ffffffffffffffffffffffffffffffffffffffff16611bec611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3990614457565b60405180910390fd5b611c4a61105b565b600a81905550611c5861105b565b600b819055506001905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c936129a2565b73ffffffffffffffffffffffffffffffffffffffff16611cb1611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe90614457565b60405180910390fd5b60005b8151811015611d98576000601a6000848481518110611d2c57611d2b6147bf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611d90906147ee565b915050611d0a565b5050565b611da46129a2565b73ffffffffffffffffffffffffffffffffffffffff16611dc2611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0f90614457565b60405180910390fd5b60005b8151811015611ea9576001601a6000848481518110611e3d57611e3c6147bf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ea1906147ee565b915050611e1b565b5050565b60108060000154908060010154908060020154905083565b600a5481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f2557600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611f829291906145d4565b6020604051808303816000875af1158015611fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc59190614612565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054612003906143d9565b80601f016020809104026020016040519081016040528092919081815260200182805461202f906143d9565b801561207c5780601f106120515761010080835404028352916020019161207c565b820191906000526020600020905b81548152906001019060200180831161205f57829003601f168201915b5050505050905090565b61208e6129a2565b73ffffffffffffffffffffffffffffffffffffffff166120ac611fca565b73ffffffffffffffffffffffffffffffffffffffff1614612102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f990614457565b60405180910390fd5b8060098190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461216657600080fd5b6121b181600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661356b90919063ffffffff16565b50565b600080600160006121c36129a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227790614915565b60405180910390fd5b61229d61228b6129a2565b85858461229891906146d1565b6129aa565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006122e26122db6129a2565b8484612b75565b6001905092915050565b600b5481565b6122fa6129a2565b73ffffffffffffffffffffffffffffffffffffffff16612318611fca565b73ffffffffffffffffffffffffffffffffffffffff161461236e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236590614457565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760179054906101000a900460ff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123f36129a2565b73ffffffffffffffffffffffffffffffffffffffff16612411611fca565b73ffffffffffffffffffffffffffffffffffffffff1614612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e90614457565b60405180910390fd5b670de0b6b3a76400008161247b9190614705565b600b8190555050565b61248c6129a2565b73ffffffffffffffffffffffffffffffffffffffff166124aa611fca565b73ffffffffffffffffffffffffffffffffffffffff1614612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f790614457565b60405180910390fd5b60005b815181101561259157600160196000848481518110612525576125246147bf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080612589906147ee565b915050612503565b5050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126446129a2565b73ffffffffffffffffffffffffffffffffffffffff16612662611fca565b73ffffffffffffffffffffffffffffffffffffffff16146126b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126af90614457565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6126dd6129a2565b73ffffffffffffffffffffffffffffffffffffffff166126fb611fca565b73ffffffffffffffffffffffffffffffffffffffff1614612751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274890614457565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6127b46129a2565b73ffffffffffffffffffffffffffffffffffffffff166127d2611fca565b73ffffffffffffffffffffffffffffffffffffffff1614612828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281f90614457565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6128746129a2565b73ffffffffffffffffffffffffffffffffffffffff16612892611fca565b73ffffffffffffffffffffffffffffffffffffffff16146128e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128df90614457565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294f906149a7565b60405180910390fd5b6129618161365f565b50565b60138060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1190614a39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8190614acb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b689190613cc6565b60405180910390a3505050565b60008111612bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612baf90614b5d565b60405180910390fd5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c5c5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9290614bc9565b60405180910390fd5b600760179054906101000a900460ff1615612d9157601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d515750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8790614c81565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e355750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e4e5750600760149054906101000a900460ff16155b156130fd57600760169054906101000a900460ff16612ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9990614548565b60405180910390fd5b43600854111561300957600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612f5a576001601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613008576001601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600a5481111561304e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304590614ced565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146130fc57600b54816130b084611af4565b6130ba91906144a6565b11156130fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f290614d7f565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806131635750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806131b75750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131c5576000905061325a565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561323c5760646017548361322b9190614705565b613235919061478e565b9050613259565b60646016548361324c9190614705565b613256919061478e565b90505b5b600760159054906101000a900460ff1680156132835750600760149054906101000a900460ff16155b80156132dd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156132e95750600081115b156132f7576132f6613725565b5b61330d8484838561330891906146d1565b613929565b600081111561332257613321843083613929565b5b50505050565b6000600267ffffffffffffffff81111561334557613344613fbc565b5b6040519080825280602002602001820160405280156133735781602001602082028036833780820191505090505b509050308160008151811061338b5761338a6147bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613432573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134569190614db4565b8160018151811061346a576134696147bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506134d130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846129aa565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613535959493929190614eda565b600060405180830381600087803b15801561354f57600080fd5b505af1158015613563573d6000803e3d6000fd5b505050505050565b804710156135ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a590614f80565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516135d490614fd1565b60006040518083038185875af1925050503d8060008114613611576040519150601f19603f3d011682016040523d82523d6000602084013e613616565b606091505b505090508061365a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365190615058565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16613927576001600760146101000a81548160ff021916908315150217905550600061375f30611af4565b9050600954811061390a576000600260175461377b9190614705565b9050600081601360020154846137919190614705565b61379b919061478e565b9050600081846137ab91906146d1565b905060004790506137bb82613328565b600081476137c991906146d1565b90506000601360020154866137de91906146d1565b826137e9919061478e565b90506000601360020154826137fe9190614705565b90506000811115613814576138138682613ba8565b5b60006013600001546002846138299190614705565b6138339190614705565b9050600081111561388a5761388981600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661356b90919063ffffffff16565b5b600060136001015460028561389f9190614705565b6138a99190614705565b90506000811115613900576138ff81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661356b90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613999576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613990906150ea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a009061517c565b60405180910390fd5b613a14838383613ca8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a919061520e565b60405180910390fd5b8181613aa691906146d1565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b3691906144a6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b9a9190613cc6565b60405180910390a350505050565b613bd530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846129aa565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613c5e9695949392919061522e565b60606040518083038185885af1158015613c7c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613ca191906152a4565b5050505050565b505050565b6000819050919050565b613cc081613cad565b82525050565b6000602082019050613cdb6000830184613cb7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d1b578082015181840152602081019050613d00565b83811115613d2a576000848401525b50505050565b6000601f19601f8301169050919050565b6000613d4c82613ce1565b613d568185613cec565b9350613d66818560208601613cfd565b613d6f81613d30565b840191505092915050565b60006020820190508181036000830152613d948184613d41565b905092915050565b6000604051905090565b600080fd5b600080fd5b613db981613cad565b8114613dc457600080fd5b50565b600081359050613dd681613db0565b92915050565b600080600060608486031215613df557613df4613da6565b5b6000613e0386828701613dc7565b9350506020613e1486828701613dc7565b9250506040613e2586828701613dc7565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e5a82613e2f565b9050919050565b613e6a81613e4f565b8114613e7557600080fd5b50565b600081359050613e8781613e61565b92915050565b60008060408385031215613ea457613ea3613da6565b5b6000613eb285828601613e78565b9250506020613ec385828601613dc7565b9150509250929050565b60008115159050919050565b613ee281613ecd565b82525050565b6000602082019050613efd6000830184613ed9565b92915050565b613f0c81613e4f565b82525050565b6000602082019050613f276000830184613f03565b92915050565b600080600060608486031215613f4657613f45613da6565b5b6000613f5486828701613e78565b9350506020613f6586828701613e78565b9250506040613f7686828701613dc7565b9150509250925092565b600060ff82169050919050565b613f9681613f80565b82525050565b6000602082019050613fb16000830184613f8d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ff482613d30565b810181811067ffffffffffffffff8211171561401357614012613fbc565b5b80604052505050565b6000614026613d9c565b90506140328282613feb565b919050565b600067ffffffffffffffff82111561405257614051613fbc565b5b602082029050602081019050919050565b600080fd5b600061407b61407684614037565b61401c565b9050808382526020820190506020840283018581111561409e5761409d614063565b5b835b818110156140c757806140b38882613e78565b8452602084019350506020810190506140a0565b5050509392505050565b600082601f8301126140e6576140e5613fb7565b5b81356140f6848260208601614068565b91505092915050565b60006020828403121561411557614114613da6565b5b600082013567ffffffffffffffff81111561413357614132613dab565b5b61413f848285016140d1565b91505092915050565b60006020828403121561415e5761415d613da6565b5b600061416c84828501613e78565b91505092915050565b600061418082613e4f565b9050919050565b61419081614175565b811461419b57600080fd5b50565b6000813590506141ad81614187565b92915050565b600080604083850312156141ca576141c9613da6565b5b60006141d88582860161419e565b92505060206141e985828601613e78565b9150509250929050565b60006020828403121561420957614208613da6565b5b600061421784828501613dc7565b91505092915050565b60006060820190506142356000830186613cb7565b6142426020830185613cb7565b61424f6040830184613cb7565b949350505050565b6000806040838503121561426e5761426d613da6565b5b600061427c85828601613e78565b925050602061428d85828601613e78565b9150509250929050565b6142a081613ecd565b81146142ab57600080fd5b50565b6000813590506142bd81614297565b92915050565b6000602082840312156142d9576142d8613da6565b5b60006142e7848285016142ae565b91505092915050565b6000806040838503121561430757614306613da6565b5b600061431585828601613e78565b9250506020614326858286016142ae565b9150509250929050565b6000819050919050565b600061435561435061434b84613e2f565b614330565b613e2f565b9050919050565b60006143678261433a565b9050919050565b60006143798261435c565b9050919050565b6143898161436e565b82525050565b60006020820190506143a46000830184614380565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806143f157607f821691505b60208210811415614405576144046143aa565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614441602083613cec565b915061444c8261440b565b602082019050919050565b6000602082019050818103600083015261447081614434565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006144b182613cad565b91506144bc83613cad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144f1576144f0614477565b5b828201905092915050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000614532601683613cec565b915061453d826144fc565b602082019050919050565b6000602082019050818103600083015261456181614525565b9050919050565b7f416c7265616479206e6f7420626f740000000000000000000000000000000000600082015250565b600061459e600f83613cec565b91506145a982614568565b602082019050919050565b600060208201905081810360008301526145cd81614591565b9050919050565b60006040820190506145e96000830185613f03565b6145f66020830184613cb7565b9392505050565b60008151905061460c81614297565b92915050565b60006020828403121561462857614627613da6565b5b6000614636848285016145fd565b91505092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061469b602883613cec565b91506146a68261463f565b604082019050919050565b600060208201905081810360008301526146ca8161468e565b9050919050565b60006146dc82613cad565b91506146e783613cad565b9250828210156146fa576146f9614477565b5b828203905092915050565b600061471082613cad565b915061471b83613cad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561475457614753614477565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061479982613cad565b91506147a483613cad565b9250826147b4576147b361475f565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006147f982613cad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561482c5761482b614477565b5b600182019050919050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b600061486d601683613cec565b915061487882614837565b602082019050919050565b6000602082019050818103600083015261489c81614860565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006148ff602583613cec565b915061490a826148a3565b604082019050919050565b6000602082019050818103600083015261492e816148f2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614991602683613cec565b915061499c82614935565b604082019050919050565b600060208201905081810360008301526149c081614984565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614a23602483613cec565b9150614a2e826149c7565b604082019050919050565b60006020820190508181036000830152614a5281614a16565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ab5602283613cec565b9150614ac082614a59565b604082019050919050565b60006020820190508181036000830152614ae481614aa8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614b47602983613cec565b9150614b5282614aeb565b604082019050919050565b60006020820190508181036000830152614b7681614b3a565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000614bb3601983613cec565b9150614bbe82614b7d565b602082019050919050565b60006020820190508181036000830152614be281614ba6565b9050919050565b7f4e6f7420696e20616c6c6f776564206c6973743a204569746865722073656e6460008201527f6572206f7220726563697069656e742061646472657373206973206e6f74206960208201527f6e2074686520616c6c6f776564206c6973740000000000000000000000000000604082015250565b6000614c6b605283613cec565b9150614c7682614be9565b606082019050919050565b60006020820190508181036000830152614c9a81614c5e565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000614cd7601d83613cec565b9150614ce282614ca1565b602082019050919050565b60006020820190508181036000830152614d0681614cca565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d69602183613cec565b9150614d7482614d0d565b604082019050919050565b60006020820190508181036000830152614d9881614d5c565b9050919050565b600081519050614dae81613e61565b92915050565b600060208284031215614dca57614dc9613da6565b5b6000614dd884828501614d9f565b91505092915050565b6000819050919050565b6000614e06614e01614dfc84614de1565b614330565b613cad565b9050919050565b614e1681614deb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e5181613e4f565b82525050565b6000614e638383614e48565b60208301905092915050565b6000602082019050919050565b6000614e8782614e1c565b614e918185614e27565b9350614e9c83614e38565b8060005b83811015614ecd578151614eb48882614e57565b9750614ebf83614e6f565b925050600181019050614ea0565b5085935050505092915050565b600060a082019050614eef6000830188613cb7565b614efc6020830187614e0d565b8181036040830152614f0e8186614e7c565b9050614f1d6060830185613f03565b614f2a6080830184613cb7565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614f6a601d83613cec565b9150614f7582614f34565b602082019050919050565b60006020820190508181036000830152614f9981614f5d565b9050919050565b600081905092915050565b50565b6000614fbb600083614fa0565b9150614fc682614fab565b600082019050919050565b6000614fdc82614fae565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000615042603a83613cec565b915061504d82614fe6565b604082019050919050565b6000602082019050818103600083015261507181615035565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150d4602583613cec565b91506150df82615078565b604082019050919050565b60006020820190508181036000830152615103816150c7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615166602383613cec565b91506151718261510a565b604082019050919050565b6000602082019050818103600083015261519581615159565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006151f8602683613cec565b91506152038261519c565b604082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b600060c0820190506152436000830189613f03565b6152506020830188613cb7565b61525d6040830187614e0d565b61526a6060830186614e0d565b6152776080830185613f03565b61528460a0830184613cb7565b979650505050505050565b60008151905061529e81613db0565b92915050565b6000806000606084860312156152bd576152bc613da6565b5b60006152cb8682870161528f565b93505060206152dc8682870161528f565b92505060406152ed8682870161528f565b915050925092509256fea264697066735822122072cfb727d0d38780a1d180e3c4578eec14f0a405f3f52f0ef3398d287e081b7864736f6c634300080c0033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c8063715018a6116101d1578063a9059cbb11610102578063dbe66ca0116100a0578063f023f5731161006f578063f023f57314610cc3578063f2fde38b14610cec578063f66895a314610d15578063f887ea4014610d4257610381565b8063dbe66ca014610bf7578063dd62ed3e14610c34578063e01af92c14610c71578063e545fd6d14610c9a57610381565b8063b7507a9c116100dc578063b7507a9c14610b4f578063c04a541414610b7a578063c18bc19514610ba5578063d34628cc14610bce57610381565b8063a9059cbb14610abe578063aa4bde2814610afb578063aacebbe314610b2657610381565b80638cd4426d1161016f5780639d0014b1116101495780639d0014b114610a045780639e252f0014610a2d578063a457c2d714610a56578063a8aa1b3114610a9357610381565b80638cd4426d146109855780638da5cb5b146109ae57806395d89b41146109d957610381565b806384240180116101ab57806384240180146108db57806386426e5b14610904578063864701a51461092d5780638c0b5e221461095a57610381565b8063715018a61461086e578063751039fc1461088557806375f0a874146108b057610381565b8063313ce567116102ab5780634a9d3ce1116102495780636256d181116102235780636256d181146107b457806365431974146107dd5780636ddd17131461080657806370a082311461083157610381565b80634a9d3ce1146107215780634ada218b1461075e5780634ebfd6e81461078957610381565b80633bbac579116102855780633bbac5791461067957806340b28c2f146106b657806343cf7d4e146106df57806346469afb146106f657610381565b8063313ce567146105e857806331c2d84714610613578063395093511461063c57610381565b80631870517a116103185780631f0c57fc116102f25780631f0c57fc1461052c57806323b872dd1461055757806326b5d32f14610594578063274a533c146105bd57610381565b80631870517a146104af5780631bff7898146104d85780631eeece061461050357610381565b8063095ea7b311610354578063095ea7b314610405578063130b1696146104425780631405f6951461046d57806318160ddd1461048457610381565b80630445b6671461038657806306fdde03146103b157806308733214146103dc57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610d6d565b6040516103a89190613cc6565b60405180910390f35b3480156103bd57600080fd5b506103c6610d73565b6040516103d39190613d7a565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190613ddc565b610e05565b005b34801561041157600080fd5b5061042c60048036038101906104279190613e8d565b610ee1565b6040516104399190613ee8565b60405180910390f35b34801561044e57600080fd5b50610457610eff565b6040516104649190613f12565b60405180910390f35b34801561047957600080fd5b50610482610f25565b005b34801561049057600080fd5b5061049961105b565b6040516104a69190613cc6565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190613ddc565b611065565b005b3480156104e457600080fd5b506104ed611141565b6040516104fa9190613cc6565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190613e8d565b611147565b005b34801561053857600080fd5b50610541611246565b60405161054e9190613f12565b60405180910390f35b34801561056357600080fd5b5061057e60048036038101906105799190613f2d565b61126c565b60405161058b9190613ee8565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b69190613ddc565b61136d565b005b3480156105c957600080fd5b506105d26114d8565b6040516105df9190613cc6565b60405180910390f35b3480156105f457600080fd5b506105fd6114de565b60405161060a9190613f9c565b60405180910390f35b34801561061f57600080fd5b5061063a600480360381019061063591906140ff565b6114e7565b005b34801561064857600080fd5b50610663600480360381019061065e9190613e8d565b6115d6565b6040516106709190613ee8565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b9190614148565b611682565b6040516106ad9190613ee8565b60405180910390f35b3480156106c257600080fd5b506106dd60048036038101906106d891906141b3565b6116a2565b005b3480156106eb57600080fd5b506106f46117a4565b005b34801561070257600080fd5b5061070b6118af565b6040516107189190613cc6565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190614148565b6118b5565b6040516107559190613ee8565b60405180910390f35b34801561076a57600080fd5b506107736118d5565b6040516107809190613ee8565b60405180910390f35b34801561079557600080fd5b5061079e6118e8565b6040516107ab9190613ee8565b60405180910390f35b3480156107c057600080fd5b506107db60048036038101906107d691906141f3565b611988565b005b3480156107e957600080fd5b5061080460048036038101906107ff9190614148565b611a21565b005b34801561081257600080fd5b5061081b611ae1565b6040516108289190613ee8565b60405180910390f35b34801561083d57600080fd5b5061085860048036038101906108539190614148565b611af4565b6040516108659190613cc6565b60405180910390f35b34801561087a57600080fd5b50610883611b3c565b005b34801561089157600080fd5b5061089a611bc4565b6040516108a79190613ee8565b60405180910390f35b3480156108bc57600080fd5b506108c5611c65565b6040516108d29190613f12565b60405180910390f35b3480156108e757600080fd5b5061090260048036038101906108fd91906140ff565b611c8b565b005b34801561091057600080fd5b5061092b600480360381019061092691906140ff565b611d9c565b005b34801561093957600080fd5b50610942611ead565b60405161095193929190614220565b60405180910390f35b34801561096657600080fd5b5061096f611ec5565b60405161097c9190613cc6565b60405180910390f35b34801561099157600080fd5b506109ac60048036038101906109a79190613e8d565b611ecb565b005b3480156109ba57600080fd5b506109c3611fca565b6040516109d09190613f12565b60405180910390f35b3480156109e557600080fd5b506109ee611ff4565b6040516109fb9190613d7a565b60405180910390f35b348015610a1057600080fd5b50610a2b6004803603810190610a2691906141f3565b612086565b005b348015610a3957600080fd5b50610a546004803603810190610a4f91906141f3565b61210c565b005b348015610a6257600080fd5b50610a7d6004803603810190610a789190613e8d565b6121b4565b604051610a8a9190613ee8565b60405180910390f35b348015610a9f57600080fd5b50610aa86122a8565b604051610ab59190613f12565b60405180910390f35b348015610aca57600080fd5b50610ae56004803603810190610ae09190613e8d565b6122ce565b604051610af29190613ee8565b60405180910390f35b348015610b0757600080fd5b50610b106122ec565b604051610b1d9190613cc6565b60405180910390f35b348015610b3257600080fd5b50610b4d6004803603810190610b489190614148565b6122f2565b005b348015610b5b57600080fd5b50610b646123b2565b604051610b719190613ee8565b60405180910390f35b348015610b8657600080fd5b50610b8f6123c5565b604051610b9c9190613f12565b60405180910390f35b348015610bb157600080fd5b50610bcc6004803603810190610bc791906141f3565b6123eb565b005b348015610bda57600080fd5b50610bf56004803603810190610bf091906140ff565b612484565b005b348015610c0357600080fd5b50610c1e6004803603810190610c199190614148565b612595565b604051610c2b9190613ee8565b60405180910390f35b348015610c4057600080fd5b50610c5b6004803603810190610c569190614257565b6125b5565b604051610c689190613cc6565b60405180910390f35b348015610c7d57600080fd5b50610c986004803603810190610c9391906142c3565b61263c565b005b348015610ca657600080fd5b50610cc16004803603810190610cbc91906142f0565b6126d5565b005b348015610ccf57600080fd5b50610cea6004803603810190610ce59190614148565b6127ac565b005b348015610cf857600080fd5b50610d136004803603810190610d0e9190614148565b61286c565b005b348015610d2157600080fd5b50610d2a612964565b604051610d3993929190614220565b60405180910390f35b348015610d4e57600080fd5b50610d5761297c565b604051610d64919061438f565b60405180910390f35b60095481565b606060038054610d82906143d9565b80601f0160208091040260200160405190810160405280929190818152602001828054610dae906143d9565b8015610dfb5780601f10610dd057610100808354040283529160200191610dfb565b820191906000526020600020905b815481529060010190602001808311610dde57829003601f168201915b5050505050905090565b610e0d6129a2565b73ffffffffffffffffffffffffffffffffffffffff16610e2b611fca565b73ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7890614457565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506013600082015181600001556020820151816001015560408201518160020155905050808284610ecc91906144a6565b610ed691906144a6565b601781905550505050565b6000610ef5610eee6129a2565b84846129aa565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760169054906101000a900460ff16610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90614548565b60405180910390fd5b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff8906145b4565b60405180910390fd5b6001601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b6000600254905090565b61106d6129a2565b73ffffffffffffffffffffffffffffffffffffffff1661108b611fca565b73ffffffffffffffffffffffffffffffffffffffff16146110e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d890614457565b60405180910390fd5b604051806060016040528084815260200183815260200182815250601060008201518160000155602082015181600101556040820151816002015590505080828461112c91906144a6565b61113691906144a6565b601681905550505050565b60175481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111a157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016111fe9291906145d4565b6020604051808303816000875af115801561121d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112419190614612565b505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611279848484612b75565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112c46129a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133b906146b1565b60405180910390fd5b611361856113506129a2565b858461135c91906146d1565b6129aa565b60019150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c757600080fd5b60004790506113d584613328565b600081476113e391906146d1565b9050600083111561145b5761145a83856113fd91906144a6565b84836114099190614705565b611413919061478e565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661356b90919063ffffffff16565b5b60008411156114d1576114d0838561147391906144a6565b858361147f9190614705565b611489919061478e565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661356b90919063ffffffff16565b5b5050505050565b60085481565b60006012905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461154157600080fd5b60005b81518110156115d257600060196000848481518110611566576115656147bf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115ca906147ee565b915050611544565b5050565b60006116786115e36129a2565b8484600160006115f16129a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461167391906144a6565b6129aa565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b6116aa6129a2565b73ffffffffffffffffffffffffffffffffffffffff166116c8611fca565b73ffffffffffffffffffffffffffffffffffffffff161461171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590614457565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6117ac6129a2565b73ffffffffffffffffffffffffffffffffffffffff166117ca611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181790614457565b60405180910390fd5b600760169054906101000a900460ff1615611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186790614883565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600881905550565b60165481565b601a6020528060005260406000206000915054906101000a900460ff1681565b600760169054906101000a900460ff1681565b60006118f26129a2565b73ffffffffffffffffffffffffffffffffffffffff16611910611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d90614457565b60405180910390fd5b6000600760176101000a81548160ff0219169083151502179055506001905090565b6119906129a2565b73ffffffffffffffffffffffffffffffffffffffff166119ae611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb90614457565b60405180910390fd5b670de0b6b3a764000081611a189190614705565b600a8190555050565b611a296129a2565b73ffffffffffffffffffffffffffffffffffffffff16611a47611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9490614457565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b446129a2565b73ffffffffffffffffffffffffffffffffffffffff16611b62611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90614457565b60405180910390fd5b611bc2600061365f565b565b6000611bce6129a2565b73ffffffffffffffffffffffffffffffffffffffff16611bec611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3990614457565b60405180910390fd5b611c4a61105b565b600a81905550611c5861105b565b600b819055506001905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c936129a2565b73ffffffffffffffffffffffffffffffffffffffff16611cb1611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe90614457565b60405180910390fd5b60005b8151811015611d98576000601a6000848481518110611d2c57611d2b6147bf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611d90906147ee565b915050611d0a565b5050565b611da46129a2565b73ffffffffffffffffffffffffffffffffffffffff16611dc2611fca565b73ffffffffffffffffffffffffffffffffffffffff1614611e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0f90614457565b60405180910390fd5b60005b8151811015611ea9576001601a6000848481518110611e3d57611e3c6147bf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ea1906147ee565b915050611e1b565b5050565b60108060000154908060010154908060020154905083565b600a5481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f2557600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611f829291906145d4565b6020604051808303816000875af1158015611fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc59190614612565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054612003906143d9565b80601f016020809104026020016040519081016040528092919081815260200182805461202f906143d9565b801561207c5780601f106120515761010080835404028352916020019161207c565b820191906000526020600020905b81548152906001019060200180831161205f57829003601f168201915b5050505050905090565b61208e6129a2565b73ffffffffffffffffffffffffffffffffffffffff166120ac611fca565b73ffffffffffffffffffffffffffffffffffffffff1614612102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f990614457565b60405180910390fd5b8060098190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461216657600080fd5b6121b181600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661356b90919063ffffffff16565b50565b600080600160006121c36129a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227790614915565b60405180910390fd5b61229d61228b6129a2565b85858461229891906146d1565b6129aa565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006122e26122db6129a2565b8484612b75565b6001905092915050565b600b5481565b6122fa6129a2565b73ffffffffffffffffffffffffffffffffffffffff16612318611fca565b73ffffffffffffffffffffffffffffffffffffffff161461236e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236590614457565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760179054906101000a900460ff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123f36129a2565b73ffffffffffffffffffffffffffffffffffffffff16612411611fca565b73ffffffffffffffffffffffffffffffffffffffff1614612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e90614457565b60405180910390fd5b670de0b6b3a76400008161247b9190614705565b600b8190555050565b61248c6129a2565b73ffffffffffffffffffffffffffffffffffffffff166124aa611fca565b73ffffffffffffffffffffffffffffffffffffffff1614612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f790614457565b60405180910390fd5b60005b815181101561259157600160196000848481518110612525576125246147bf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080612589906147ee565b915050612503565b5050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126446129a2565b73ffffffffffffffffffffffffffffffffffffffff16612662611fca565b73ffffffffffffffffffffffffffffffffffffffff16146126b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126af90614457565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6126dd6129a2565b73ffffffffffffffffffffffffffffffffffffffff166126fb611fca565b73ffffffffffffffffffffffffffffffffffffffff1614612751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274890614457565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6127b46129a2565b73ffffffffffffffffffffffffffffffffffffffff166127d2611fca565b73ffffffffffffffffffffffffffffffffffffffff1614612828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281f90614457565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6128746129a2565b73ffffffffffffffffffffffffffffffffffffffff16612892611fca565b73ffffffffffffffffffffffffffffffffffffffff16146128e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128df90614457565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294f906149a7565b60405180910390fd5b6129618161365f565b50565b60138060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1190614a39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8190614acb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b689190613cc6565b60405180910390a3505050565b60008111612bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612baf90614b5d565b60405180910390fd5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c5c5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9290614bc9565b60405180910390fd5b600760179054906101000a900460ff1615612d9157601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d515750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8790614c81565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e355750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e4e5750600760149054906101000a900460ff16155b156130fd57600760169054906101000a900460ff16612ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9990614548565b60405180910390fd5b43600854111561300957600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612f5a576001601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613008576001601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600a5481111561304e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304590614ced565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146130fc57600b54816130b084611af4565b6130ba91906144a6565b11156130fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f290614d7f565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806131635750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806131b75750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131c5576000905061325a565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561323c5760646017548361322b9190614705565b613235919061478e565b9050613259565b60646016548361324c9190614705565b613256919061478e565b90505b5b600760159054906101000a900460ff1680156132835750600760149054906101000a900460ff16155b80156132dd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156132e95750600081115b156132f7576132f6613725565b5b61330d8484838561330891906146d1565b613929565b600081111561332257613321843083613929565b5b50505050565b6000600267ffffffffffffffff81111561334557613344613fbc565b5b6040519080825280602002602001820160405280156133735781602001602082028036833780820191505090505b509050308160008151811061338b5761338a6147bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613432573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134569190614db4565b8160018151811061346a576134696147bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506134d130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846129aa565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613535959493929190614eda565b600060405180830381600087803b15801561354f57600080fd5b505af1158015613563573d6000803e3d6000fd5b505050505050565b804710156135ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a590614f80565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516135d490614fd1565b60006040518083038185875af1925050503d8060008114613611576040519150601f19603f3d011682016040523d82523d6000602084013e613616565b606091505b505090508061365a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365190615058565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16613927576001600760146101000a81548160ff021916908315150217905550600061375f30611af4565b9050600954811061390a576000600260175461377b9190614705565b9050600081601360020154846137919190614705565b61379b919061478e565b9050600081846137ab91906146d1565b905060004790506137bb82613328565b600081476137c991906146d1565b90506000601360020154866137de91906146d1565b826137e9919061478e565b90506000601360020154826137fe9190614705565b90506000811115613814576138138682613ba8565b5b60006013600001546002846138299190614705565b6138339190614705565b9050600081111561388a5761388981600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661356b90919063ffffffff16565b5b600060136001015460028561389f9190614705565b6138a99190614705565b90506000811115613900576138ff81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661356b90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613999576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613990906150ea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a009061517c565b60405180910390fd5b613a14838383613ca8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a919061520e565b60405180910390fd5b8181613aa691906146d1565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b3691906144a6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b9a9190613cc6565b60405180910390a350505050565b613bd530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846129aa565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613c5e9695949392919061522e565b60606040518083038185885af1158015613c7c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613ca191906152a4565b5050505050565b505050565b6000819050919050565b613cc081613cad565b82525050565b6000602082019050613cdb6000830184613cb7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d1b578082015181840152602081019050613d00565b83811115613d2a576000848401525b50505050565b6000601f19601f8301169050919050565b6000613d4c82613ce1565b613d568185613cec565b9350613d66818560208601613cfd565b613d6f81613d30565b840191505092915050565b60006020820190508181036000830152613d948184613d41565b905092915050565b6000604051905090565b600080fd5b600080fd5b613db981613cad565b8114613dc457600080fd5b50565b600081359050613dd681613db0565b92915050565b600080600060608486031215613df557613df4613da6565b5b6000613e0386828701613dc7565b9350506020613e1486828701613dc7565b9250506040613e2586828701613dc7565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e5a82613e2f565b9050919050565b613e6a81613e4f565b8114613e7557600080fd5b50565b600081359050613e8781613e61565b92915050565b60008060408385031215613ea457613ea3613da6565b5b6000613eb285828601613e78565b9250506020613ec385828601613dc7565b9150509250929050565b60008115159050919050565b613ee281613ecd565b82525050565b6000602082019050613efd6000830184613ed9565b92915050565b613f0c81613e4f565b82525050565b6000602082019050613f276000830184613f03565b92915050565b600080600060608486031215613f4657613f45613da6565b5b6000613f5486828701613e78565b9350506020613f6586828701613e78565b9250506040613f7686828701613dc7565b9150509250925092565b600060ff82169050919050565b613f9681613f80565b82525050565b6000602082019050613fb16000830184613f8d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ff482613d30565b810181811067ffffffffffffffff8211171561401357614012613fbc565b5b80604052505050565b6000614026613d9c565b90506140328282613feb565b919050565b600067ffffffffffffffff82111561405257614051613fbc565b5b602082029050602081019050919050565b600080fd5b600061407b61407684614037565b61401c565b9050808382526020820190506020840283018581111561409e5761409d614063565b5b835b818110156140c757806140b38882613e78565b8452602084019350506020810190506140a0565b5050509392505050565b600082601f8301126140e6576140e5613fb7565b5b81356140f6848260208601614068565b91505092915050565b60006020828403121561411557614114613da6565b5b600082013567ffffffffffffffff81111561413357614132613dab565b5b61413f848285016140d1565b91505092915050565b60006020828403121561415e5761415d613da6565b5b600061416c84828501613e78565b91505092915050565b600061418082613e4f565b9050919050565b61419081614175565b811461419b57600080fd5b50565b6000813590506141ad81614187565b92915050565b600080604083850312156141ca576141c9613da6565b5b60006141d88582860161419e565b92505060206141e985828601613e78565b9150509250929050565b60006020828403121561420957614208613da6565b5b600061421784828501613dc7565b91505092915050565b60006060820190506142356000830186613cb7565b6142426020830185613cb7565b61424f6040830184613cb7565b949350505050565b6000806040838503121561426e5761426d613da6565b5b600061427c85828601613e78565b925050602061428d85828601613e78565b9150509250929050565b6142a081613ecd565b81146142ab57600080fd5b50565b6000813590506142bd81614297565b92915050565b6000602082840312156142d9576142d8613da6565b5b60006142e7848285016142ae565b91505092915050565b6000806040838503121561430757614306613da6565b5b600061431585828601613e78565b9250506020614326858286016142ae565b9150509250929050565b6000819050919050565b600061435561435061434b84613e2f565b614330565b613e2f565b9050919050565b60006143678261433a565b9050919050565b60006143798261435c565b9050919050565b6143898161436e565b82525050565b60006020820190506143a46000830184614380565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806143f157607f821691505b60208210811415614405576144046143aa565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614441602083613cec565b915061444c8261440b565b602082019050919050565b6000602082019050818103600083015261447081614434565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006144b182613cad565b91506144bc83613cad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144f1576144f0614477565b5b828201905092915050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000614532601683613cec565b915061453d826144fc565b602082019050919050565b6000602082019050818103600083015261456181614525565b9050919050565b7f416c7265616479206e6f7420626f740000000000000000000000000000000000600082015250565b600061459e600f83613cec565b91506145a982614568565b602082019050919050565b600060208201905081810360008301526145cd81614591565b9050919050565b60006040820190506145e96000830185613f03565b6145f66020830184613cb7565b9392505050565b60008151905061460c81614297565b92915050565b60006020828403121561462857614627613da6565b5b6000614636848285016145fd565b91505092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061469b602883613cec565b91506146a68261463f565b604082019050919050565b600060208201905081810360008301526146ca8161468e565b9050919050565b60006146dc82613cad565b91506146e783613cad565b9250828210156146fa576146f9614477565b5b828203905092915050565b600061471082613cad565b915061471b83613cad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561475457614753614477565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061479982613cad565b91506147a483613cad565b9250826147b4576147b361475f565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006147f982613cad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561482c5761482b614477565b5b600182019050919050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b600061486d601683613cec565b915061487882614837565b602082019050919050565b6000602082019050818103600083015261489c81614860565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006148ff602583613cec565b915061490a826148a3565b604082019050919050565b6000602082019050818103600083015261492e816148f2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614991602683613cec565b915061499c82614935565b604082019050919050565b600060208201905081810360008301526149c081614984565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614a23602483613cec565b9150614a2e826149c7565b604082019050919050565b60006020820190508181036000830152614a5281614a16565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ab5602283613cec565b9150614ac082614a59565b604082019050919050565b60006020820190508181036000830152614ae481614aa8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614b47602983613cec565b9150614b5282614aeb565b604082019050919050565b60006020820190508181036000830152614b7681614b3a565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000614bb3601983613cec565b9150614bbe82614b7d565b602082019050919050565b60006020820190508181036000830152614be281614ba6565b9050919050565b7f4e6f7420696e20616c6c6f776564206c6973743a204569746865722073656e6460008201527f6572206f7220726563697069656e742061646472657373206973206e6f74206960208201527f6e2074686520616c6c6f776564206c6973740000000000000000000000000000604082015250565b6000614c6b605283613cec565b9150614c7682614be9565b606082019050919050565b60006020820190508181036000830152614c9a81614c5e565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000614cd7601d83613cec565b9150614ce282614ca1565b602082019050919050565b60006020820190508181036000830152614d0681614cca565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d69602183613cec565b9150614d7482614d0d565b604082019050919050565b60006020820190508181036000830152614d9881614d5c565b9050919050565b600081519050614dae81613e61565b92915050565b600060208284031215614dca57614dc9613da6565b5b6000614dd884828501614d9f565b91505092915050565b6000819050919050565b6000614e06614e01614dfc84614de1565b614330565b613cad565b9050919050565b614e1681614deb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e5181613e4f565b82525050565b6000614e638383614e48565b60208301905092915050565b6000602082019050919050565b6000614e8782614e1c565b614e918185614e27565b9350614e9c83614e38565b8060005b83811015614ecd578151614eb48882614e57565b9750614ebf83614e6f565b925050600181019050614ea0565b5085935050505092915050565b600060a082019050614eef6000830188613cb7565b614efc6020830187614e0d565b8181036040830152614f0e8186614e7c565b9050614f1d6060830185613f03565b614f2a6080830184613cb7565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614f6a601d83613cec565b9150614f7582614f34565b602082019050919050565b60006020820190508181036000830152614f9981614f5d565b9050919050565b600081905092915050565b50565b6000614fbb600083614fa0565b9150614fc682614fab565b600082019050919050565b6000614fdc82614fae565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000615042603a83613cec565b915061504d82614fe6565b604082019050919050565b6000602082019050818103600083015261507181615035565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150d4602583613cec565b91506150df82615078565b604082019050919050565b60006020820190508181036000830152615103816150c7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615166602383613cec565b91506151718261510a565b604082019050919050565b6000602082019050818103600083015261519581615159565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006151f8602683613cec565b91506152038261519c565b604082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b600060c0820190506152436000830189613f03565b6152506020830188613cb7565b61525d6040830187614e0d565b61526a6060830186614e0d565b6152776080830185613f03565b61528460a0830184613cb7565b979650505050505050565b60008151905061529e81613db0565b92915050565b6000806000606084860312156152bd576152bc613da6565b5b60006152cb8682870161528f565b93505060206152dc8682870161528f565b92505060406152ed8682870161528f565b915050925092509256fea264697066735822122072cfb727d0d38780a1d180e3c4578eec14f0a405f3f52f0ef3398d287e081b7864736f6c634300080c0033

Deployed Bytecode Sourcemap

13172:10709:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13495:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2378:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20125:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4545:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13906:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23066:190;;;;;;;;;;;;;:::i;:::-;;3498:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19880:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14235:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21880:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13827:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5196:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22245:637;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13454:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3340:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21065:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6027:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14336:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20742:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19663:209;;;;;;;;;;;;;:::i;:::-;;14197:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14381:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13379:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23698:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21431:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20629:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13349:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3669:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11949:94;;;;;;;;;;;;;:::i;:::-;;22890:168;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13661:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23455:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23264:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14107:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13547:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21677:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11726:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2597:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19545:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22072:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6745:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13289:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4009:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13599:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20377:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13412:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13743:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21552:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20887:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14280:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4247:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19444:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21286:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20503:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12051:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14150:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13261:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13495:45;;;;:::o;2378:100::-;2432:13;2465:5;2458:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:100;:::o;20125:240::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20250:43:::1;;;;;;;;20256:10;20250:43;;;;20268:12;20250:43;;;;20282:10;20250:43;;::::0;20238:9:::1;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;20347:10;20332:12;20319:10;:25;;;;:::i;:::-;:38;;;;:::i;:::-;20304:12;:53;;;;20125:240:::0;;;:::o;4545:169::-;4628:4;4645:39;4654:12;:10;:12::i;:::-;4668:7;4677:6;4645:8;:39::i;:::-;4702:4;4695:11;;4545:169;;;;:::o;13906:68::-;;;;;;;;;;;;;:::o;23066:190::-;23113:14;;;;;;;;;;;23105:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23174:6;:18;23181:10;23174:18;;;;;;;;;;;;;;;;;;;;;;;;;23173:19;23165:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;23244:4;23223:6;:18;23230:10;23223:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;23066:190::o;3498:108::-;3559:7;3586:12;;3579:19;;3498:108;:::o;19880:237::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20003:43:::1;;;;;;;;20009:10;20003:43;;;;20021:12;20003:43;;;;20035:10;20003:43;;::::0;19992:8:::1;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;20099:10;20084:12;20071:10;:25;;;;:::i;:::-;:38;;;;:::i;:::-;20057:11;:52;;;;19880:237:::0;;;:::o;14235:32::-;;;;:::o;21880:184::-;21980:17;;;;;;;;;;;21966:31;;:10;:31;;;21957:41;;;;;;22016:12;22009:29;;;22039:8;;;;;;;;;;;22049:6;22009:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21880:184;;:::o;13827:70::-;;;;;;;;;;;;;:::o;5196:422::-;5302:4;5319:36;5329:6;5337:9;5348:6;5319:9;:36::i;:::-;5368:24;5395:11;:19;5407:6;5395:19;;;;;;;;;;;;;;;:33;5415:12;:10;:12::i;:::-;5395:33;;;;;;;;;;;;;;;;5368:60;;5467:6;5447:16;:26;;5439:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5529:57;5538:6;5546:12;:10;:12::i;:::-;5579:6;5560:16;:25;;;;:::i;:::-;5529:8;:57::i;:::-;5606:4;5599:11;;;5196:422;;;;;:::o;22245:637::-;22384:17;;;;;;;;;;;22370:31;;:10;:31;;;22361:41;;;;;;22413:19;22435:21;22413:43;;22467:24;22484:6;22467:16;:24::i;:::-;22502:18;22547:11;22523:21;:35;;;;:::i;:::-;22502:56;;22594:1;22572:19;:23;22569:144;;;22597:116;22692:19;22668:21;:43;;;;:::i;:::-;22645:19;22632:10;:32;;;;:::i;:::-;:80;;;;:::i;:::-;22605:15;;;;;;;;;;;22597:34;;;;:116;;;;:::i;:::-;22569:144;22751:1;22727:21;:25;22724:150;;;22754:120;22853:19;22829:21;:43;;;;:::i;:::-;22804:21;22791:10;:34;;;;:::i;:::-;:82;;;;:::i;:::-;22762:17;;;;;;;;;;;22754:36;;;;:120;;;;:::i;:::-;22724:150;22350:532;;22245:637;;;:::o;13454:28::-;;;;:::o;3340:93::-;3398:5;3423:2;3416:9;;3340:93;:::o;21065:213::-;21150:17;;;;;;;;;;;21136:31;;:10;:31;;;21127:41;;;;;;21184:6;21179:92;21200:6;:13;21196:1;:17;21179:92;;;21254:5;21235;:16;21241:6;21248:1;21241:9;;;;;;;;:::i;:::-;;;;;;;;21235:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;21215:3;;;;;:::i;:::-;;;;21179:92;;;;21065:213;:::o;6027:215::-;6115:4;6132:80;6141:12;:10;:12::i;:::-;6155:7;6201:10;6164:11;:25;6176:12;:10;:12::i;:::-;6164:25;;;;;;;;;;;;;;;:34;6190:7;6164:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6132:8;:80::i;:::-;6230:4;6223:11;;6027:215;;;;:::o;14336:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;20742:137::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20841:7:::1;20832:6;;:16;;;;;;;;;;;;;;;;;;20866:5;20859:4;;:12;;;;;;;;;;;;;;;;;;20742:137:::0;;:::o;19663:209::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19723:14:::1;;;;;;;;;;;19722:15;19714:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;19792:4;19775:14;;:21;;;;;;;;;;;;;;;;;;19821:4;19807:11;;:18;;;;;;;;;;;;;;;;;;19852:12;19836:13;:28;;;;19663:209::o:0;14197:31::-;;;;:::o;14381:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;13379:26::-;;;;;;;;;;;;;:::o;23698:119::-;23748:4;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23782:5:::1;23765:14;;:22;;;;;;;;;;;;;;;;;;23805:4;23798:11;;23698:119:::0;:::o;21431:109::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21526:6:::1;21517;:15;;;;:::i;:::-;21503:11;:29;;;;21431:109:::0;:::o;20629:105::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20717:9:::1;20704:10;;:22;;;;;;;;;;;;;;;;;;20629:105:::0;:::o;13349:23::-;;;;;;;;;;;;;:::o;3669:127::-;3743:7;3770:9;:18;3780:7;3770:18;;;;;;;;;;;;;;;;3763:25;;3669:127;;;:::o;11949:94::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12014:21:::1;12032:1;12014:9;:21::i;:::-;11949:94::o:0;22890:168::-;22942:4;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22973:13:::1;:11;:13::i;:::-;22959:11;:27;;;;23015:13;:11;:13::i;:::-;22997:15;:31;;;;23046:4;23039:11;;22890:168:::0;:::o;13661:75::-;;;;;;;;;;;;;:::o;23455:184::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23538:6:::1;23533:99;23554:9;:16;23550:1;:20;23533:99;;;23615:5;23592:6;:20;23599:9;23609:1;23599:12;;;;;;;;:::i;:::-;;;;;;;;23592:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23572:3;;;;;:::i;:::-;;;;23533:99;;;;23455:184:::0;:::o;23264:183::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23347:6:::1;23342:98;23363:9;:16;23359:1;:20;23342:98;;;23424:4;23401:6;:20;23408:9;23418:1;23408:12;;;;;;;;:::i;:::-;;;;;;;;23401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;23381:3;;;;;:::i;:::-;;;;23342:98;;;;23264:183:::0;:::o;14107:36::-;;;;;;;;;;;;;;;;;;;:::o;13547:45::-;;;;:::o;21677:195::-;21779:17;;;;;;;;;;;21765:31;;:10;:31;;;21756:41;;;;;;21815:12;21808:29;;;21838:17;;;;;;;;;;;21857:6;21808:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21677:195;;:::o;11726:87::-;11772:7;11799:6;;;;;;;;;;;11792:13;;11726:87;:::o;2597:104::-;2653:13;2686:7;2679:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2597:104;:::o;19545:110::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19637:10:::1;19621:13;:26;;;;19545:110:::0;:::o;22072:165::-;22153:17;;;;;;;;;;;22139:31;;:10;:31;;;22130:41;;;;;;22182:47;22219:9;22190:17;;;;;;;;;;;22182:36;;;;:47;;;;:::i;:::-;22072:165;:::o;6745:377::-;6838:4;6855:24;6882:11;:25;6894:12;:10;:12::i;:::-;6882:25;;;;;;;;;;;;;;;:34;6908:7;6882:34;;;;;;;;;;;;;;;;6855:61;;6955:15;6935:16;:35;;6927:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7023:67;7032:12;:10;:12::i;:::-;7046:7;7074:15;7055:16;:34;;;;:::i;:::-;7023:8;:67::i;:::-;7110:4;7103:11;;;6745:377;;;;:::o;13289:19::-;;;;;;;;;;;;;:::o;4009:175::-;4095:4;4112:42;4122:12;:10;:12::i;:::-;4136:9;4147:6;4112:9;:42::i;:::-;4172:4;4165:11;;4009:175;;;;:::o;13599:49::-;;;;:::o;20377:114::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20474:9:::1;20456:15;;:27;;;;;;;;;;;;;;;;;;20377:114:::0;:::o;13412:33::-;;;;;;;;;;;;;:::o;13743:77::-;;;;;;;;;;;;;:::o;21552:117::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21655:6:::1;21646;:15;;;;:::i;:::-;21628;:33;;;;21552:117:::0;:::o;20887:170::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20964:6:::1;20959:91;20980:6;:13;20976:1;:17;20959:91;;;21034:4;21015:5;:16;21021:6;21028:1;21021:9;;;;;;;;:::i;:::-;;;;;;;;21015:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;20995:3;;;;;:::i;:::-;;;;20959:91;;;;20887:170:::0;:::o;14280:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;4247:151::-;4336:7;4363:11;:18;4375:5;4363:18;;;;;;;;;;;;;;;:27;4382:7;4363:27;;;;;;;;;;;;;;;;4356:34;;4247:151;;;;:::o;19444:93::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19524:5:::1;19510:11;;:19;;;;;;;;;;;;;;;;;;19444:93:::0;:::o;21286:133::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21406:5:::1;21377:16;:26;21394:8;21377:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;21286:133:::0;;:::o;20503:118::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20604:9:::1;20584:17;;:29;;;;;;;;;;;;;;;;;;20503:118:::0;:::o;12051:192::-;11872:12;:10;:12::i;:::-;11861:23;;:7;:5;:7::i;:::-;:23;;;11853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12160:1:::1;12140:22;;:8;:22;;;;12132:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12216:19;12226:8;12216:9;:19::i;:::-;12051:192:::0;:::o;14150:40::-;;;;;;;;;;;;;;;;;;;:::o;13261:21::-;;;;;;;;;;;;;:::o;94:98::-;147:7;174:10;167:17;;94:98;:::o;10101:346::-;10220:1;10203:19;;:5;:19;;;;10195:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10301:1;10282:21;;:7;:21;;;;10274:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10385:6;10355:11;:18;10367:5;10355:18;;;;;;;;;;;;;;;:27;10374:7;10355:27;;;;;;;;;;;;;;;:36;;;;10423:7;10407:32;;10416:5;10407:32;;;10432:6;10407:32;;;;;;:::i;:::-;;;;;;;;10101:346;;;:::o;15291:1805::-;15407:1;15398:6;:10;15390:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15474:5;:13;15480:6;15474:13;;;;;;;;;;;;;;;;;;;;;;;;;15473:14;:35;;;;;15492:5;:16;15498:9;15492:16;;;;;;;;;;;;;;;;;;;;;;;;;15491:17;15473:35;15465:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15555:14;;;;;;;;;;;15551:226;;;15612:6;:14;15619:6;15612:14;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;15630:6;:17;15637:9;15630:17;;;;;;;;;;;;;;;;;;;;;;;;;15612:35;15586:179;;;;;;;;;;;;:::i;:::-;;;;;;;;;15551:226;15819:16;:24;15836:6;15819:24;;;;;;;;;;;;;;;;;;;;;;;;;15818:25;:57;;;;;15848:16;:27;15865:9;15848:27;;;;;;;;;;;;;;;;;;;;;;;;;15847:28;15818:57;:70;;;;;15880:8;;;;;;;;;;;15879:9;15818:70;15815:576;;;15912:14;;;;;;;;;;;15904:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;15987:12;15971:13;;:28;15968:170;;;16035:4;;;;;;;;;;;16022:17;;:9;:17;;;16019:45;;16060:4;16041:5;:16;16047:9;16041:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;16019:45;16096:4;;;;;;;;;;;16086:14;;:6;:14;;;16083:39;;16118:4;16102:5;:13;16108:6;16102:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16083:39;15968:170;16170:11;;16160:6;:21;;16152:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;16246:4;;;;;;;;;;;16233:17;;:9;:17;;;16230:150;;16311:15;;16301:6;16278:20;16288:9;16278;:20::i;:::-;:29;;;;:::i;:::-;:48;;16270:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;16230:150;15815:576;16403:11;16510:8;;;;;;;;;;;:36;;;;16522:16;:24;16539:6;16522:24;;;;;;;;;;;;;;;;;;;;;;;;;16510:36;:67;;;;16550:16;:27;16567:9;16550:27;;;;;;;;;;;;;;;;;;;;;;;;;16510:67;16506:264;;;16585:1;16579:7;;16506:264;;;16667:4;;;;;;;;;;;16654:17;;:9;:17;;;16651:107;;;16703:3;16688:12;;16679:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;16673:33;;16651:107;;;16755:3;16741:11;;16732:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;16726:32;;16651:107;16506:264;16891:11;;;;;;;;;;;:24;;;;;16907:8;;;;;;;;;;;16906:9;16891:24;:42;;;;;16929:4;;;;;;;;;;;16919:14;;:6;:14;;;;16891:42;:53;;;;;16943:1;16937:3;:7;16891:53;16887:72;;;16946:13;:11;:13::i;:::-;16887:72;16972:48;16988:6;16996:9;17016:3;17007:6;:12;;;;:::i;:::-;16972:15;:48::i;:::-;17040:1;17034:3;:7;17031:55;;;17043:43;17059:6;17075:4;17082:3;17043:15;:43::i;:::-;17031:55;15379:1717;15291:1805;;;:::o;18530:400::-;18596:21;18634:1;18620:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18596:40;;18665:4;18647;18652:1;18647:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18691:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18681:4;18686:1;18681:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18717:53;18734:4;18749:6;;;;;;;;;;;18758:11;18717:8;:53::i;:::-;18809:6;;;;;;;;;;;:57;;;18867:11;18880:1;18883:4;18897;18904:15;18809:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18585:345;18530:400;:::o;11171:317::-;11286:6;11261:21;:31;;11253:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11340:12;11358:9;:14;;11380:6;11358:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11339:52;;;11410:7;11402:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11242:246;11171:317;;:::o;12251:173::-;12307:16;12326:6;;;;;;;;;;;12307:25;;12352:8;12343:6;;:17;;;;;;;;;;;;;;;;;;12407:8;12376:40;;12397:8;12376:40;;;;;;;;;;;;12296:128;12251:173;:::o;17104:1416::-;14467:8;;;;;;;;;;;14462:104;;14503:4;14492:8;;:15;;;;;;;;;;;;;;;;;;17153:23:::1;17179:24;17197:4;17179:9;:24::i;:::-;17153:50;;17237:13;;17218:15;:32;17214:1299;;17324:19;17361:1;17346:12;;:16;;;;:::i;:::-;17324:38;;17377:32;17452:11;17430:9;:19;;;17412:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;17377:86;;17478:14;17513:24;17495:15;:42;;;;:::i;:::-;17478:59;;17558:22;17583:21;17558:46;;17625:24;17642:6;17625:16;:24::i;:::-;17670:20;17717:14;17693:21;:38;;;;:::i;:::-;17670:61;;17746:19;17797:9;:19;;;17783:11;:33;;;;:::i;:::-;17767:12;:50;;;;:::i;:::-;17746:71;;17832:29;17878:9;:19;;;17864:11;:33;;;;:::i;:::-;17832:65;;17945:1;17921:21;:25;17918:170;;;18011:61;18024:24;18050:21;18011:12;:61::i;:::-;17918:170;18108:20;18149:9;:19;;;18145:1;18131:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;18108:60;;18201:1;18186:12;:16;18183:103;;;18222:48;18257:12;18230:15;;;;;;;;;;;18222:34;;;;:48;;;;:::i;:::-;18183:103;18314:22;18357:9;:21;;;18353:1;18339:11;:15;;;;:::i;:::-;:39;;;;:::i;:::-;18314:64;;18413:1;18396:14;:18;18393:109;;;18434:52;18471:14;18442:17;;;;;;;;;;;18434:36;;;;:52;;;;:::i;:::-;18393:109;17252:1261;;;;;;;;;17214:1299;17142:1378;14549:5:::0;14538:8;;:16;;;;;;;;;;;;;;;;;;14462:104;17104:1416::o;7612:604::-;7736:1;7718:20;;:6;:20;;;;7710:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7820:1;7799:23;;:9;:23;;;;7791:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7875:47;7896:6;7904:9;7915:6;7875:20;:47::i;:::-;7935:21;7959:9;:17;7969:6;7959:17;;;;;;;;;;;;;;;;7935:41;;8012:6;7995:13;:23;;7987:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8108:6;8092:13;:22;;;;:::i;:::-;8072:9;:17;8082:6;8072:17;;;;;;;;;;;;;;;:42;;;;8149:6;8125:9;:20;8135:9;8125:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8190:9;8173:35;;8182:6;8173:35;;;8201:6;8173:35;;;;;;:::i;:::-;;;;;;;;7699:517;7612:604;;;:::o;18938:498::-;19086:53;19103:4;19118:6;;;;;;;;;;;19127:11;19086:8;:53::i;:::-;19182:6;;;;;;;;;;;:22;;;19212:9;19245:4;19265:11;19291:1;19334;19377:10;;;;;;;;;;;19402:15;19182:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18938:498;;:::o;11050:92::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:122;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:619::-;2509:6;2517;2525;2574:2;2562:9;2553:7;2549:23;2545:32;2542:119;;;2580:79;;:::i;:::-;2542:119;2700:1;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;:::i;:::-;2715:63;;2671:117;2827:2;2853:53;2898:7;2889:6;2878:9;2874:22;2853:53;:::i;:::-;2843:63;;2798:118;2955:2;2981:53;3026:7;3017:6;3006:9;3002:22;2981:53;:::i;:::-;2971:63;;2926:118;2432:619;;;;;:::o;3057:126::-;3094:7;3134:42;3127:5;3123:54;3112:65;;3057:126;;;:::o;3189:96::-;3226:7;3255:24;3273:5;3255:24;:::i;:::-;3244:35;;3189:96;;;:::o;3291:122::-;3364:24;3382:5;3364:24;:::i;:::-;3357:5;3354:35;3344:63;;3403:1;3400;3393:12;3344:63;3291:122;:::o;3419:139::-;3465:5;3503:6;3490:20;3481:29;;3519:33;3546:5;3519:33;:::i;:::-;3419:139;;;;:::o;3564:474::-;3632:6;3640;3689:2;3677:9;3668:7;3664:23;3660:32;3657:119;;;3695:79;;:::i;:::-;3657:119;3815:1;3840:53;3885:7;3876:6;3865:9;3861:22;3840:53;:::i;:::-;3830:63;;3786:117;3942:2;3968:53;4013:7;4004:6;3993:9;3989:22;3968:53;:::i;:::-;3958:63;;3913:118;3564:474;;;;;:::o;4044:90::-;4078:7;4121:5;4114:13;4107:21;4096:32;;4044:90;;;:::o;4140:109::-;4221:21;4236:5;4221:21;:::i;:::-;4216:3;4209:34;4140:109;;:::o;4255:210::-;4342:4;4380:2;4369:9;4365:18;4357:26;;4393:65;4455:1;4444:9;4440:17;4431:6;4393:65;:::i;:::-;4255:210;;;;:::o;4471:118::-;4558:24;4576:5;4558:24;:::i;:::-;4553:3;4546:37;4471:118;;:::o;4595:222::-;4688:4;4726:2;4715:9;4711:18;4703:26;;4739:71;4807:1;4796:9;4792:17;4783:6;4739:71;:::i;:::-;4595:222;;;;:::o;4823:619::-;4900:6;4908;4916;4965:2;4953:9;4944:7;4940:23;4936:32;4933:119;;;4971:79;;:::i;:::-;4933:119;5091:1;5116:53;5161:7;5152:6;5141:9;5137:22;5116:53;:::i;:::-;5106:63;;5062:117;5218:2;5244:53;5289:7;5280:6;5269:9;5265:22;5244:53;:::i;:::-;5234:63;;5189:118;5346:2;5372:53;5417:7;5408:6;5397:9;5393:22;5372:53;:::i;:::-;5362:63;;5317:118;4823:619;;;;;:::o;5448:86::-;5483:7;5523:4;5516:5;5512:16;5501:27;;5448:86;;;:::o;5540:112::-;5623:22;5639:5;5623:22;:::i;:::-;5618:3;5611:35;5540:112;;:::o;5658:214::-;5747:4;5785:2;5774:9;5770:18;5762:26;;5798:67;5862:1;5851:9;5847:17;5838:6;5798:67;:::i;:::-;5658:214;;;;:::o;5878:117::-;5987:1;5984;5977:12;6001:180;6049:77;6046:1;6039:88;6146:4;6143:1;6136:15;6170:4;6167:1;6160:15;6187:281;6270:27;6292:4;6270:27;:::i;:::-;6262:6;6258:40;6400:6;6388:10;6385:22;6364:18;6352:10;6349:34;6346:62;6343:88;;;6411:18;;:::i;:::-;6343:88;6451:10;6447:2;6440:22;6230:238;6187:281;;:::o;6474:129::-;6508:6;6535:20;;:::i;:::-;6525:30;;6564:33;6592:4;6584:6;6564:33;:::i;:::-;6474:129;;;:::o;6609:311::-;6686:4;6776:18;6768:6;6765:30;6762:56;;;6798:18;;:::i;:::-;6762:56;6848:4;6840:6;6836:17;6828:25;;6908:4;6902;6898:15;6890:23;;6609:311;;;:::o;6926:117::-;7035:1;7032;7025:12;7066:710;7162:5;7187:81;7203:64;7260:6;7203:64;:::i;:::-;7187:81;:::i;:::-;7178:90;;7288:5;7317:6;7310:5;7303:21;7351:4;7344:5;7340:16;7333:23;;7404:4;7396:6;7392:17;7384:6;7380:30;7433:3;7425:6;7422:15;7419:122;;;7452:79;;:::i;:::-;7419:122;7567:6;7550:220;7584:6;7579:3;7576:15;7550:220;;;7659:3;7688:37;7721:3;7709:10;7688:37;:::i;:::-;7683:3;7676:50;7755:4;7750:3;7746:14;7739:21;;7626:144;7610:4;7605:3;7601:14;7594:21;;7550:220;;;7554:21;7168:608;;7066:710;;;;;:::o;7799:370::-;7870:5;7919:3;7912:4;7904:6;7900:17;7896:27;7886:122;;7927:79;;:::i;:::-;7886:122;8044:6;8031:20;8069:94;8159:3;8151:6;8144:4;8136:6;8132:17;8069:94;:::i;:::-;8060:103;;7876:293;7799:370;;;;:::o;8175:539::-;8259:6;8308:2;8296:9;8287:7;8283:23;8279:32;8276:119;;;8314:79;;:::i;:::-;8276:119;8462:1;8451:9;8447:17;8434:31;8492:18;8484:6;8481:30;8478:117;;;8514:79;;:::i;:::-;8478:117;8619:78;8689:7;8680:6;8669:9;8665:22;8619:78;:::i;:::-;8609:88;;8405:302;8175:539;;;;:::o;8720:329::-;8779:6;8828:2;8816:9;8807:7;8803:23;8799:32;8796:119;;;8834:79;;:::i;:::-;8796:119;8954:1;8979:53;9024:7;9015:6;9004:9;9000:22;8979:53;:::i;:::-;8969:63;;8925:117;8720:329;;;;:::o;9055:111::-;9107:7;9136:24;9154:5;9136:24;:::i;:::-;9125:35;;9055:111;;;:::o;9172:152::-;9260:39;9293:5;9260:39;:::i;:::-;9253:5;9250:50;9240:78;;9314:1;9311;9304:12;9240:78;9172:152;:::o;9330:169::-;9391:5;9429:6;9416:20;9407:29;;9445:48;9487:5;9445:48;:::i;:::-;9330:169;;;;:::o;9505:504::-;9588:6;9596;9645:2;9633:9;9624:7;9620:23;9616:32;9613:119;;;9651:79;;:::i;:::-;9613:119;9771:1;9796:68;9856:7;9847:6;9836:9;9832:22;9796:68;:::i;:::-;9786:78;;9742:132;9913:2;9939:53;9984:7;9975:6;9964:9;9960:22;9939:53;:::i;:::-;9929:63;;9884:118;9505:504;;;;;:::o;10015:329::-;10074:6;10123:2;10111:9;10102:7;10098:23;10094:32;10091:119;;;10129:79;;:::i;:::-;10091:119;10249:1;10274:53;10319:7;10310:6;10299:9;10295:22;10274:53;:::i;:::-;10264:63;;10220:117;10015:329;;;;:::o;10350:442::-;10499:4;10537:2;10526:9;10522:18;10514:26;;10550:71;10618:1;10607:9;10603:17;10594:6;10550:71;:::i;:::-;10631:72;10699:2;10688:9;10684:18;10675:6;10631:72;:::i;:::-;10713;10781:2;10770:9;10766:18;10757:6;10713:72;:::i;:::-;10350:442;;;;;;:::o;10798:474::-;10866:6;10874;10923:2;10911:9;10902:7;10898:23;10894:32;10891:119;;;10929:79;;:::i;:::-;10891:119;11049:1;11074:53;11119:7;11110:6;11099:9;11095:22;11074:53;:::i;:::-;11064:63;;11020:117;11176:2;11202:53;11247:7;11238:6;11227:9;11223:22;11202:53;:::i;:::-;11192:63;;11147:118;10798:474;;;;;:::o;11278:116::-;11348:21;11363:5;11348:21;:::i;:::-;11341:5;11338:32;11328:60;;11384:1;11381;11374:12;11328:60;11278:116;:::o;11400:133::-;11443:5;11481:6;11468:20;11459:29;;11497:30;11521:5;11497:30;:::i;:::-;11400:133;;;;:::o;11539:323::-;11595:6;11644:2;11632:9;11623:7;11619:23;11615:32;11612:119;;;11650:79;;:::i;:::-;11612:119;11770:1;11795:50;11837:7;11828:6;11817:9;11813:22;11795:50;:::i;:::-;11785:60;;11741:114;11539:323;;;;:::o;11868:468::-;11933:6;11941;11990:2;11978:9;11969:7;11965:23;11961:32;11958:119;;;11996:79;;:::i;:::-;11958:119;12116:1;12141:53;12186:7;12177:6;12166:9;12162:22;12141:53;:::i;:::-;12131:63;;12087:117;12243:2;12269:50;12311:7;12302:6;12291:9;12287:22;12269:50;:::i;:::-;12259:60;;12214:115;11868:468;;;;;:::o;12342:60::-;12370:3;12391:5;12384:12;;12342:60;;;:::o;12408:142::-;12458:9;12491:53;12509:34;12518:24;12536:5;12518:24;:::i;:::-;12509:34;:::i;:::-;12491:53;:::i;:::-;12478:66;;12408:142;;;:::o;12556:126::-;12606:9;12639:37;12670:5;12639:37;:::i;:::-;12626:50;;12556:126;;;:::o;12688:141::-;12753:9;12786:37;12817:5;12786:37;:::i;:::-;12773:50;;12688:141;;;:::o;12835:161::-;12937:52;12983:5;12937:52;:::i;:::-;12932:3;12925:65;12835:161;;:::o;13002:252::-;13110:4;13148:2;13137:9;13133:18;13125:26;;13161:86;13244:1;13233:9;13229:17;13220:6;13161:86;:::i;:::-;13002:252;;;;:::o;13260:180::-;13308:77;13305:1;13298:88;13405:4;13402:1;13395:15;13429:4;13426:1;13419:15;13446:320;13490:6;13527:1;13521:4;13517:12;13507:22;;13574:1;13568:4;13564:12;13595:18;13585:81;;13651:4;13643:6;13639:17;13629:27;;13585:81;13713:2;13705:6;13702:14;13682:18;13679:38;13676:84;;;13732:18;;:::i;:::-;13676:84;13497:269;13446:320;;;:::o;13772:182::-;13912:34;13908:1;13900:6;13896:14;13889:58;13772:182;:::o;13960:366::-;14102:3;14123:67;14187:2;14182:3;14123:67;:::i;:::-;14116:74;;14199:93;14288:3;14199:93;:::i;:::-;14317:2;14312:3;14308:12;14301:19;;13960:366;;;:::o;14332:419::-;14498:4;14536:2;14525:9;14521:18;14513:26;;14585:9;14579:4;14575:20;14571:1;14560:9;14556:17;14549:47;14613:131;14739:4;14613:131;:::i;:::-;14605:139;;14332:419;;;:::o;14757:180::-;14805:77;14802:1;14795:88;14902:4;14899:1;14892:15;14926:4;14923:1;14916:15;14943:305;14983:3;15002:20;15020:1;15002:20;:::i;:::-;14997:25;;15036:20;15054:1;15036:20;:::i;:::-;15031:25;;15190:1;15122:66;15118:74;15115:1;15112:81;15109:107;;;15196:18;;:::i;:::-;15109:107;15240:1;15237;15233:9;15226:16;;14943:305;;;;:::o;15254:172::-;15394:24;15390:1;15382:6;15378:14;15371:48;15254:172;:::o;15432:366::-;15574:3;15595:67;15659:2;15654:3;15595:67;:::i;:::-;15588:74;;15671:93;15760:3;15671:93;:::i;:::-;15789:2;15784:3;15780:12;15773:19;;15432:366;;;:::o;15804:419::-;15970:4;16008:2;15997:9;15993:18;15985:26;;16057:9;16051:4;16047:20;16043:1;16032:9;16028:17;16021:47;16085:131;16211:4;16085:131;:::i;:::-;16077:139;;15804:419;;;:::o;16229:165::-;16369:17;16365:1;16357:6;16353:14;16346:41;16229:165;:::o;16400:366::-;16542:3;16563:67;16627:2;16622:3;16563:67;:::i;:::-;16556:74;;16639:93;16728:3;16639:93;:::i;:::-;16757:2;16752:3;16748:12;16741:19;;16400:366;;;:::o;16772:419::-;16938:4;16976:2;16965:9;16961:18;16953:26;;17025:9;17019:4;17015:20;17011:1;17000:9;16996:17;16989:47;17053:131;17179:4;17053:131;:::i;:::-;17045:139;;16772:419;;;:::o;17197:332::-;17318:4;17356:2;17345:9;17341:18;17333:26;;17369:71;17437:1;17426:9;17422:17;17413:6;17369:71;:::i;:::-;17450:72;17518:2;17507:9;17503:18;17494:6;17450:72;:::i;:::-;17197:332;;;;;:::o;17535:137::-;17589:5;17620:6;17614:13;17605:22;;17636:30;17660:5;17636:30;:::i;:::-;17535:137;;;;:::o;17678:345::-;17745:6;17794:2;17782:9;17773:7;17769:23;17765:32;17762:119;;;17800:79;;:::i;:::-;17762:119;17920:1;17945:61;17998:7;17989:6;17978:9;17974:22;17945:61;:::i;:::-;17935:71;;17891:125;17678:345;;;;:::o;18029:227::-;18169:34;18165:1;18157:6;18153:14;18146:58;18238:10;18233:2;18225:6;18221:15;18214:35;18029:227;:::o;18262:366::-;18404:3;18425:67;18489:2;18484:3;18425:67;:::i;:::-;18418:74;;18501:93;18590:3;18501:93;:::i;:::-;18619:2;18614:3;18610:12;18603:19;;18262:366;;;:::o;18634:419::-;18800:4;18838:2;18827:9;18823:18;18815:26;;18887:9;18881:4;18877:20;18873:1;18862:9;18858:17;18851:47;18915:131;19041:4;18915:131;:::i;:::-;18907:139;;18634:419;;;:::o;19059:191::-;19099:4;19119:20;19137:1;19119:20;:::i;:::-;19114:25;;19153:20;19171:1;19153:20;:::i;:::-;19148:25;;19192:1;19189;19186:8;19183:34;;;19197:18;;:::i;:::-;19183:34;19242:1;19239;19235:9;19227:17;;19059:191;;;;:::o;19256:348::-;19296:7;19319:20;19337:1;19319:20;:::i;:::-;19314:25;;19353:20;19371:1;19353:20;:::i;:::-;19348:25;;19541:1;19473:66;19469:74;19466:1;19463:81;19458:1;19451:9;19444:17;19440:105;19437:131;;;19548:18;;:::i;:::-;19437:131;19596:1;19593;19589:9;19578:20;;19256:348;;;;:::o;19610:180::-;19658:77;19655:1;19648:88;19755:4;19752:1;19745:15;19779:4;19776:1;19769:15;19796:185;19836:1;19853:20;19871:1;19853:20;:::i;:::-;19848:25;;19887:20;19905:1;19887:20;:::i;:::-;19882:25;;19926:1;19916:35;;19931:18;;:::i;:::-;19916:35;19973:1;19970;19966:9;19961:14;;19796:185;;;;:::o;19987:180::-;20035:77;20032:1;20025:88;20132:4;20129:1;20122:15;20156:4;20153:1;20146:15;20173:233;20212:3;20235:24;20253:5;20235:24;:::i;:::-;20226:33;;20281:66;20274:5;20271:77;20268:103;;;20351:18;;:::i;:::-;20268:103;20398:1;20391:5;20387:13;20380:20;;20173:233;;;:::o;20412:172::-;20552:24;20548:1;20540:6;20536:14;20529:48;20412:172;:::o;20590:366::-;20732:3;20753:67;20817:2;20812:3;20753:67;:::i;:::-;20746:74;;20829:93;20918:3;20829:93;:::i;:::-;20947:2;20942:3;20938:12;20931:19;;20590:366;;;:::o;20962:419::-;21128:4;21166:2;21155:9;21151:18;21143:26;;21215:9;21209:4;21205:20;21201:1;21190:9;21186:17;21179:47;21243:131;21369:4;21243:131;:::i;:::-;21235:139;;20962:419;;;:::o;21387:224::-;21527:34;21523:1;21515:6;21511:14;21504:58;21596:7;21591:2;21583:6;21579:15;21572:32;21387:224;:::o;21617:366::-;21759:3;21780:67;21844:2;21839:3;21780:67;:::i;:::-;21773:74;;21856:93;21945:3;21856:93;:::i;:::-;21974:2;21969:3;21965:12;21958:19;;21617:366;;;:::o;21989:419::-;22155:4;22193:2;22182:9;22178:18;22170:26;;22242:9;22236:4;22232:20;22228:1;22217:9;22213:17;22206:47;22270:131;22396:4;22270:131;:::i;:::-;22262:139;;21989:419;;;:::o;22414:225::-;22554:34;22550:1;22542:6;22538:14;22531:58;22623:8;22618:2;22610:6;22606:15;22599:33;22414:225;:::o;22645:366::-;22787:3;22808:67;22872:2;22867:3;22808:67;:::i;:::-;22801:74;;22884:93;22973:3;22884:93;:::i;:::-;23002:2;22997:3;22993:12;22986:19;;22645:366;;;:::o;23017:419::-;23183:4;23221:2;23210:9;23206:18;23198:26;;23270:9;23264:4;23260:20;23256:1;23245:9;23241:17;23234:47;23298:131;23424:4;23298:131;:::i;:::-;23290:139;;23017:419;;;:::o;23442:223::-;23582:34;23578:1;23570:6;23566:14;23559:58;23651:6;23646:2;23638:6;23634:15;23627:31;23442:223;:::o;23671:366::-;23813:3;23834:67;23898:2;23893:3;23834:67;:::i;:::-;23827:74;;23910:93;23999:3;23910:93;:::i;:::-;24028:2;24023:3;24019:12;24012:19;;23671:366;;;:::o;24043:419::-;24209:4;24247:2;24236:9;24232:18;24224:26;;24296:9;24290:4;24286:20;24282:1;24271:9;24267:17;24260:47;24324:131;24450:4;24324:131;:::i;:::-;24316:139;;24043:419;;;:::o;24468:221::-;24608:34;24604:1;24596:6;24592:14;24585:58;24677:4;24672:2;24664:6;24660:15;24653:29;24468:221;:::o;24695:366::-;24837:3;24858:67;24922:2;24917:3;24858:67;:::i;:::-;24851:74;;24934:93;25023:3;24934:93;:::i;:::-;25052:2;25047:3;25043:12;25036:19;;24695:366;;;:::o;25067:419::-;25233:4;25271:2;25260:9;25256:18;25248:26;;25320:9;25314:4;25310:20;25306:1;25295:9;25291:17;25284:47;25348:131;25474:4;25348:131;:::i;:::-;25340:139;;25067:419;;;:::o;25492:228::-;25632:34;25628:1;25620:6;25616:14;25609:58;25701:11;25696:2;25688:6;25684:15;25677:36;25492:228;:::o;25726:366::-;25868:3;25889:67;25953:2;25948:3;25889:67;:::i;:::-;25882:74;;25965:93;26054:3;25965:93;:::i;:::-;26083:2;26078:3;26074:12;26067:19;;25726:366;;;:::o;26098:419::-;26264:4;26302:2;26291:9;26287:18;26279:26;;26351:9;26345:4;26341:20;26337:1;26326:9;26322:17;26315:47;26379:131;26505:4;26379:131;:::i;:::-;26371:139;;26098:419;;;:::o;26523:175::-;26663:27;26659:1;26651:6;26647:14;26640:51;26523:175;:::o;26704:366::-;26846:3;26867:67;26931:2;26926:3;26867:67;:::i;:::-;26860:74;;26943:93;27032:3;26943:93;:::i;:::-;27061:2;27056:3;27052:12;27045:19;;26704:366;;;:::o;27076:419::-;27242:4;27280:2;27269:9;27265:18;27257:26;;27329:9;27323:4;27319:20;27315:1;27304:9;27300:17;27293:47;27357:131;27483:4;27357:131;:::i;:::-;27349:139;;27076:419;;;:::o;27501:306::-;27641:34;27637:1;27629:6;27625:14;27618:58;27710:34;27705:2;27697:6;27693:15;27686:59;27779:20;27774:2;27766:6;27762:15;27755:45;27501:306;:::o;27813:366::-;27955:3;27976:67;28040:2;28035:3;27976:67;:::i;:::-;27969:74;;28052:93;28141:3;28052:93;:::i;:::-;28170:2;28165:3;28161:12;28154:19;;27813:366;;;:::o;28185:419::-;28351:4;28389:2;28378:9;28374:18;28366:26;;28438:9;28432:4;28428:20;28424:1;28413:9;28409:17;28402:47;28466:131;28592:4;28466:131;:::i;:::-;28458:139;;28185:419;;;:::o;28610:179::-;28750:31;28746:1;28738:6;28734:14;28727:55;28610:179;:::o;28795:366::-;28937:3;28958:67;29022:2;29017:3;28958:67;:::i;:::-;28951:74;;29034:93;29123:3;29034:93;:::i;:::-;29152:2;29147:3;29143:12;29136:19;;28795:366;;;:::o;29167:419::-;29333:4;29371:2;29360:9;29356:18;29348:26;;29420:9;29414:4;29410:20;29406:1;29395:9;29391:17;29384:47;29448:131;29574:4;29448:131;:::i;:::-;29440:139;;29167:419;;;:::o;29592:220::-;29732:34;29728:1;29720:6;29716:14;29709:58;29801:3;29796:2;29788:6;29784:15;29777:28;29592:220;:::o;29818:366::-;29960:3;29981:67;30045:2;30040:3;29981:67;:::i;:::-;29974:74;;30057:93;30146:3;30057:93;:::i;:::-;30175:2;30170:3;30166:12;30159:19;;29818:366;;;:::o;30190:419::-;30356:4;30394:2;30383:9;30379:18;30371:26;;30443:9;30437:4;30433:20;30429:1;30418:9;30414:17;30407:47;30471:131;30597:4;30471:131;:::i;:::-;30463:139;;30190:419;;;:::o;30615:143::-;30672:5;30703:6;30697:13;30688:22;;30719:33;30746:5;30719:33;:::i;:::-;30615:143;;;;:::o;30764:351::-;30834:6;30883:2;30871:9;30862:7;30858:23;30854:32;30851:119;;;30889:79;;:::i;:::-;30851:119;31009:1;31034:64;31090:7;31081:6;31070:9;31066:22;31034:64;:::i;:::-;31024:74;;30980:128;30764:351;;;;:::o;31121:85::-;31166:7;31195:5;31184:16;;31121:85;;;:::o;31212:158::-;31270:9;31303:61;31321:42;31330:32;31356:5;31330:32;:::i;:::-;31321:42;:::i;:::-;31303:61;:::i;:::-;31290:74;;31212:158;;;:::o;31376:147::-;31471:45;31510:5;31471:45;:::i;:::-;31466:3;31459:58;31376:147;;:::o;31529:114::-;31596:6;31630:5;31624:12;31614:22;;31529:114;;;:::o;31649:184::-;31748:11;31782:6;31777:3;31770:19;31822:4;31817:3;31813:14;31798:29;;31649:184;;;;:::o;31839:132::-;31906:4;31929:3;31921:11;;31959:4;31954:3;31950:14;31942:22;;31839:132;;;:::o;31977:108::-;32054:24;32072:5;32054:24;:::i;:::-;32049:3;32042:37;31977:108;;:::o;32091:179::-;32160:10;32181:46;32223:3;32215:6;32181:46;:::i;:::-;32259:4;32254:3;32250:14;32236:28;;32091:179;;;;:::o;32276:113::-;32346:4;32378;32373:3;32369:14;32361:22;;32276:113;;;:::o;32425:732::-;32544:3;32573:54;32621:5;32573:54;:::i;:::-;32643:86;32722:6;32717:3;32643:86;:::i;:::-;32636:93;;32753:56;32803:5;32753:56;:::i;:::-;32832:7;32863:1;32848:284;32873:6;32870:1;32867:13;32848:284;;;32949:6;32943:13;32976:63;33035:3;33020:13;32976:63;:::i;:::-;32969:70;;33062:60;33115:6;33062:60;:::i;:::-;33052:70;;32908:224;32895:1;32892;32888:9;32883:14;;32848:284;;;32852:14;33148:3;33141:10;;32549:608;;;32425:732;;;;:::o;33163:831::-;33426:4;33464:3;33453:9;33449:19;33441:27;;33478:71;33546:1;33535:9;33531:17;33522:6;33478:71;:::i;:::-;33559:80;33635:2;33624:9;33620:18;33611:6;33559:80;:::i;:::-;33686:9;33680:4;33676:20;33671:2;33660:9;33656:18;33649:48;33714:108;33817:4;33808:6;33714:108;:::i;:::-;33706:116;;33832:72;33900:2;33889:9;33885:18;33876:6;33832:72;:::i;:::-;33914:73;33982:3;33971:9;33967:19;33958:6;33914:73;:::i;:::-;33163:831;;;;;;;;:::o;34000:179::-;34140:31;34136:1;34128:6;34124:14;34117:55;34000:179;:::o;34185:366::-;34327:3;34348:67;34412:2;34407:3;34348:67;:::i;:::-;34341:74;;34424:93;34513:3;34424:93;:::i;:::-;34542:2;34537:3;34533:12;34526:19;;34185:366;;;:::o;34557:419::-;34723:4;34761:2;34750:9;34746:18;34738:26;;34810:9;34804:4;34800:20;34796:1;34785:9;34781:17;34774:47;34838:131;34964:4;34838:131;:::i;:::-;34830:139;;34557:419;;;:::o;34982:147::-;35083:11;35120:3;35105:18;;34982:147;;;;:::o;35135:114::-;;:::o;35255:398::-;35414:3;35435:83;35516:1;35511:3;35435:83;:::i;:::-;35428:90;;35527:93;35616:3;35527:93;:::i;:::-;35645:1;35640:3;35636:11;35629:18;;35255:398;;;:::o;35659:379::-;35843:3;35865:147;36008:3;35865:147;:::i;:::-;35858:154;;36029:3;36022:10;;35659:379;;;:::o;36044:245::-;36184:34;36180:1;36172:6;36168:14;36161:58;36253:28;36248:2;36240:6;36236:15;36229:53;36044:245;:::o;36295:366::-;36437:3;36458:67;36522:2;36517:3;36458:67;:::i;:::-;36451:74;;36534:93;36623:3;36534:93;:::i;:::-;36652:2;36647:3;36643:12;36636:19;;36295:366;;;:::o;36667:419::-;36833:4;36871:2;36860:9;36856:18;36848:26;;36920:9;36914:4;36910:20;36906:1;36895:9;36891:17;36884:47;36948:131;37074:4;36948:131;:::i;:::-;36940:139;;36667:419;;;:::o;37092:224::-;37232:34;37228:1;37220:6;37216:14;37209:58;37301:7;37296:2;37288:6;37284:15;37277:32;37092:224;:::o;37322:366::-;37464:3;37485:67;37549:2;37544:3;37485:67;:::i;:::-;37478:74;;37561:93;37650:3;37561:93;:::i;:::-;37679:2;37674:3;37670:12;37663:19;;37322:366;;;:::o;37694:419::-;37860:4;37898:2;37887:9;37883:18;37875:26;;37947:9;37941:4;37937:20;37933:1;37922:9;37918:17;37911:47;37975:131;38101:4;37975:131;:::i;:::-;37967:139;;37694:419;;;:::o;38119:222::-;38259:34;38255:1;38247:6;38243:14;38236:58;38328:5;38323:2;38315:6;38311:15;38304:30;38119:222;:::o;38347:366::-;38489:3;38510:67;38574:2;38569:3;38510:67;:::i;:::-;38503:74;;38586:93;38675:3;38586:93;:::i;:::-;38704:2;38699:3;38695:12;38688:19;;38347:366;;;:::o;38719:419::-;38885:4;38923:2;38912:9;38908:18;38900:26;;38972:9;38966:4;38962:20;38958:1;38947:9;38943:17;38936:47;39000:131;39126:4;39000:131;:::i;:::-;38992:139;;38719:419;;;:::o;39144:225::-;39284:34;39280:1;39272:6;39268:14;39261:58;39353:8;39348:2;39340:6;39336:15;39329:33;39144:225;:::o;39375:366::-;39517:3;39538:67;39602:2;39597:3;39538:67;:::i;:::-;39531:74;;39614:93;39703:3;39614:93;:::i;:::-;39732:2;39727:3;39723:12;39716:19;;39375:366;;;:::o;39747:419::-;39913:4;39951:2;39940:9;39936:18;39928:26;;40000:9;39994:4;39990:20;39986:1;39975:9;39971:17;39964:47;40028:131;40154:4;40028:131;:::i;:::-;40020:139;;39747:419;;;:::o;40172:807::-;40421:4;40459:3;40448:9;40444:19;40436:27;;40473:71;40541:1;40530:9;40526:17;40517:6;40473:71;:::i;:::-;40554:72;40622:2;40611:9;40607:18;40598:6;40554:72;:::i;:::-;40636:80;40712:2;40701:9;40697:18;40688:6;40636:80;:::i;:::-;40726;40802:2;40791:9;40787:18;40778:6;40726:80;:::i;:::-;40816:73;40884:3;40873:9;40869:19;40860:6;40816:73;:::i;:::-;40899;40967:3;40956:9;40952:19;40943:6;40899:73;:::i;:::-;40172:807;;;;;;;;;:::o;40985:143::-;41042:5;41073:6;41067:13;41058:22;;41089:33;41116:5;41089:33;:::i;:::-;40985:143;;;;:::o;41134:663::-;41222:6;41230;41238;41287:2;41275:9;41266:7;41262:23;41258:32;41255:119;;;41293:79;;:::i;:::-;41255:119;41413:1;41438:64;41494:7;41485:6;41474:9;41470:22;41438:64;:::i;:::-;41428:74;;41384:128;41551:2;41577:64;41633:7;41624:6;41613:9;41609:22;41577:64;:::i;:::-;41567:74;;41522:129;41690:2;41716:64;41772:7;41763:6;41752:9;41748:22;41716:64;:::i;:::-;41706:74;;41661:129;41134:663;;;;;:::o

Swarm Source

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