ETH Price: $3,432.77 (+7.54%)
Gas: 15 Gwei

Token

Tax Farmer David (DAVID)
 

Overview

Max Total Supply

1,000,000 DAVID

Holders

564

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.672471440173793383 DAVID

Value
$0.00
0xc64f8fa842acf3548600434cfadae2c84028cb43
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:
DAVID

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-30
*/

/**
 *Submitted for verification at Etherscan.io on 2023-08-27
*/

pragma solidity 0.8.19;

/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

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

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*//////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*//////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*//////////////////////////////////////////////////////////////
                            EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*//////////////////////////////////////////////////////////////
                               ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*//////////////////////////////////////////////////////////////
                             EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

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

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

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

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

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

    function initialize(address, address) external;
}

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

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

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

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

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

/**
 * @title David
 * @dev Betting token for David
 */
contract DAVID is Ownable, ERC20 {

    IUniswapV2Router02 public router;
    IUniswapV2Factory public factory;
    IUniswapV2Pair public pair;

    uint private constant INITIAL_SUPPLY = 1_000_000_00 * 10**16;
    //
    // The tax to deduct, in basis points
    //
    uint public buyTaxBps = 500;
    uint public sellTaxBps = 500;
    uint public initialTransferTaxBps = 3000;
    //
    bool isSellingCollectedTaxes;

    event AntiBotEngaged();
    event AntiBotDisengaged();
    event StealthLaunchEngaged();

    bool public isLaunched;

    address public farmerWallet;
    address public revenueWallet;
    address public extractionWallet;
    address[] public marked;

    bool public engagedOnce;
    bool public disengagedOnce;

    constructor() ERC20("Tax Farmer David", "DAVID", 18) {

        require(block.chainid == 1, "expected mainnet");
        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        factory = IUniswapV2Factory(router.factory());
        _mint(msg.sender, INITIAL_SUPPLY);

        // Approve infinite spending by DEX, to sell tokens collected via tax.
        allowance[address(this)][address(router)] = type(uint).max;
        emit Approval(address(this), address(router), type(uint).max);
        pair = IUniswapV2Pair(factory.createPair(address(this), router.WETH()));
        
        isLaunched = false;
    }

    modifier lockTheSwap() {
        isSellingCollectedTaxes = true;
        _;
        isSellingCollectedTaxes = false;
    }

    modifier onlyExtractor() {
        require(extractionWallet == _msgSender(), "Extractor is not correct!");
        _;
    }

    receive() external payable {}

    fallback() external payable {}

    function mark(address[] memory wallets) public onlyOwner{
        for(uint i = 0; i < wallets.length; i++){
            marked.push(wallets[i]);
        }
    }

    function unmark(address wallet) public onlyOwner{
        for(uint i = 0; i < marked.length; i++){
            if(marked[i] == wallet) delete marked[i];
        }
    }



    function burn(uint amount) external {
        _burn(msg.sender, amount);
    }

    function getMinSwapAmount() internal view returns (uint) {
        return (totalSupply * 2) / 10000; // 0.02%
    }

    function enableAntiBotMode() public onlyOwner {
        require(!engagedOnce, "this is a one shot function");
        engagedOnce = true;
        buyTaxBps = 3000;
        sellTaxBps = 3000;
        emit AntiBotEngaged();
    }

    function disableAntiBotMode() public onlyOwner {
        require(!disengagedOnce, "this is a one shot function");
        disengagedOnce = true;
        buyTaxBps = 500;
        sellTaxBps = 500;
        emit AntiBotDisengaged();
    }

    function setFarmer(address wallet) public onlyExtractor {
        require(wallet != address(0), "null address");
        farmerWallet = wallet;
    }

    function setExtractor(address wallet) public onlyOwner {
        require(wallet != address(0), "null address");
        extractionWallet = wallet;
    }

    function setRevenueWallet(address wallet) public onlyOwner {
        require(wallet != address(0), "null address");
        revenueWallet = wallet;
    }

    /**
     * @dev Calculate the amount of tax to apply to a transaction.
     * @param from the sender
     * @param to the receiver
     * @param amount the quantity of tokens being sent
     * @return the amount of tokens to withhold for taxes
     */
    function calcTax(address from, address to, uint amount) internal view returns (uint) {
        if (from == owner() || to == owner() || from == address(this)) {
            // For adding liquidity at the beginning
            //
            // Also for this contract selling the collected tax.
            return 0;
        } else if (from == address(pair)) {
            // Buy from DEX, or adding liquidity.

            for(uint i = 0; i < marked.length; i++){
                if(marked[i] == to) return amount * initialTransferTaxBps / 10_000;
            }

            return amount * buyTaxBps / 10_000;
        } else if (to == address(pair)) {
            // Sell from DEX, or removing liquidity.

            for(uint i = 0; i < marked.length; i++){
                if(marked[i] == from) return amount * initialTransferTaxBps / 10_000;
            }

            return amount * sellTaxBps / 10_000;
        } else {

            if(!disengagedOnce){
                return amount * initialTransferTaxBps / 10_000;
            }

            for(uint i = 0; i < marked.length; i++){
                if(marked[i] == from) return amount * initialTransferTaxBps / 10_000;
            }

            // Sending to other wallets (e.g. OTC) is tax-free.
            return 0;
        }
    }

    /**
     * @dev Sell the balance accumulated from taxes.
     */
    function sellCollectedTaxes() internal lockTheSwap {

        uint tokensToSwap = balanceOf[address(this)];

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokensToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        revenueWallet.call{value: (address(this).balance) * 40 / 100}("");

        farmerWallet.call{value: address(this).balance}("");
    }

    /**
     * @dev Transfer tokens from the caller to another address.
     * @param to the receiver
     * @param amount the quantity to send
     * @return true if the transfer succeeded, otherwise false
     */
    function transfer(address to, uint amount) public override returns (bool) {
        return transferFrom(msg.sender, to, amount);
    }

    /**
     * @dev Transfer tokens from one address to another. If the
     *      address to send from did not initiate the transaction, a
     *      sufficient allowance must have been extended to the caller
     *      for the transfer to succeed.
     * @param from the sender
     * @param to the receiver
     * @param amount the quantity to send
     * @return true if the transfer succeeded, otherwise false
     */
    function transferFrom(
        address from,
        address to,
        uint amount
    ) public override returns (bool) {
        if (from != msg.sender) {
            // This is a typical transferFrom

            uint allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

            if (allowed != type(uint).max) allowance[from][msg.sender] = allowed - amount;
        }



        if(!disengagedOnce){
            if(to != owner() && from != owner() && to != address(router) && to != address(pair)){
                uint256 maxHolding = (totalSupply * 200) / 10000; // 2% in basis points
                require(balanceOf[to] + amount <= maxHolding, "Recipient holding exceeds maximum allowed");
            }
        }

        // Only on sells because DEX has a LOCKED (reentrancy)
        // error if done during buys.
        //
        // isSellingCollectedTaxes prevents an infinite loop.
        if (balanceOf[address(this)] > getMinSwapAmount() && !isSellingCollectedTaxes && from != address(pair) && from != address(this)) {
            sellCollectedTaxes();
        }

        uint tax = calcTax(from, to, amount);
        uint afterTaxAmount = amount - tax;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint value.
        unchecked {
            balanceOf[to] += afterTaxAmount;
        }

        emit Transfer(from, to, afterTaxAmount);

        if (tax > 0) {
            
            unchecked {
                balanceOf[address(this)] += tax;
            }

            // Any transfer to the contract can be viewed as tax
            emit Transfer(from, address(this), tax);
        }

        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"AntiBotDisengaged","type":"event"},{"anonymous":false,"inputs":[],"name":"AntiBotEngaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","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":[],"name":"StealthLaunchEngaged","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableAntiBotMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disengagedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableAntiBotMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"engagedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extractionWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"farmerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialTransferTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"mark","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"marked","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revenueWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setExtractor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setFarmer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setRevenueWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"unmark","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040526101f4600a556101f4600b55610bb8600c553480156200002357600080fd5b506040518060400160405280601081526020017f546178204661726d6572204461766964000000000000000000000000000000008152506040518060400160405280600581526020017f44415649440000000000000000000000000000000000000000000000000000008152506012620000b2620000a66200059660201b60201c565b6200059e60201b60201c565b8260019081620000c3919062000a40565b508160029081620000d5919062000a40565b508060ff1660808160ff16815250504660a08181525050620000fc6200066260201b60201c565b60c08181525050505050600146146200014c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001439062000b88565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000235919062000c14565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002913369d3c21bcecceda1000000620006f260201b60201c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051620003f5919062000c57565b60405180910390a3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d0919062000c14565b6040518363ffffffff1660e01b8152600401620004ef92919062000c85565b6020604051808303816000875af11580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000535919062000c14565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60016101000a81548160ff02191690831515021790555062000e5c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600160405162000696919062000d61565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001620006d795949392919062000d95565b60405160208183030381529060405280519060200120905090565b806003600082825462000706919062000e21565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007ba919062000c57565b60405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200084857607f821691505b6020821081036200085e576200085d62000800565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000889565b620008d4868362000889565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009216200091b6200091584620008ec565b620008f6565b620008ec565b9050919050565b6000819050919050565b6200093d8362000900565b620009556200094c8262000928565b84845462000896565b825550505050565b600090565b6200096c6200095d565b6200097981848462000932565b505050565b5b81811015620009a1576200099560008262000962565b6001810190506200097f565b5050565b601f821115620009f057620009ba8162000864565b620009c58462000879565b81016020851015620009d5578190505b620009ed620009e48562000879565b8301826200097e565b50505b505050565b600082821c905092915050565b600062000a1560001984600802620009f5565b1980831691505092915050565b600062000a30838362000a02565b9150826002028217905092915050565b62000a4b82620007c6565b67ffffffffffffffff81111562000a675762000a66620007d1565b5b62000a7382546200082f565b62000a80828285620009a5565b600060209050601f83116001811462000ab8576000841562000aa3578287015190505b62000aaf858262000a22565b86555062000b1f565b601f19841662000ac88662000864565b60005b8281101562000af25784890151825560018201915060208501945060208101905062000acb565b8683101562000b12578489015162000b0e601f89168262000a02565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f6578706563746564206d61696e6e657400000000000000000000000000000000600082015250565b600062000b7060108362000b27565b915062000b7d8262000b38565b602082019050919050565b6000602082019050818103600083015262000ba38162000b61565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bdc8262000baf565b9050919050565b62000bee8162000bcf565b811462000bfa57600080fd5b50565b60008151905062000c0e8162000be3565b92915050565b60006020828403121562000c2d5762000c2c62000baa565b5b600062000c3d8482850162000bfd565b91505092915050565b62000c5181620008ec565b82525050565b600060208201905062000c6e600083018462000c46565b92915050565b62000c7f8162000bcf565b82525050565b600060408201905062000c9c600083018562000c74565b62000cab602083018462000c74565b9392505050565b600081905092915050565b60008190508160005260206000209050919050565b6000815462000ce1816200082f565b62000ced818662000cb2565b9450600182166000811462000d0b576001811462000d215762000d58565b60ff198316865281151582028601935062000d58565b62000d2c8562000cbd565b60005b8381101562000d505781548189015260018201915060208101905062000d2f565b838801955050505b50505092915050565b600062000d6f828462000cd2565b915081905092915050565b6000819050919050565b62000d8f8162000d7a565b82525050565b600060a08201905062000dac600083018862000d84565b62000dbb602083018762000d84565b62000dca604083018662000d84565b62000dd9606083018562000c46565b62000de8608083018462000c74565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e2e82620008ec565b915062000e3b83620008ec565b925082820190508082111562000e565762000e5562000df2565b5b92915050565b60805160a05160c05161384362000e8c600039600061123401526000611200015260006111b401526138436000f3fe6080604052600436106102135760003560e01c80638da5cb5b11610118578063c473413a116100a0578063e2ed781c1161006f578063e2ed781c1461079d578063f2fde38b146107c6578063f887ea40146107ef578063f98eb6e11461081a578063fb235f34146108315761021a565b8063c473413a146106e1578063cffd129c1461070c578063d505accf14610737578063dd62ed3e146107605761021a565b8063a8aa1b31116100e7578063a8aa1b31146105fa578063a9059cbb14610625578063a944ff8414610662578063bd6e09081461068b578063c45a0155146106b65761021a565b80638da5cb5b1461053e57806392e37a931461056957806395d89b41146105a6578063a5db6198146105d15761021a565b80633312a6841161019b57806356cd8acf1161016a57806356cd8acf1461045757806370a0823114610482578063715018a6146104bf5780637d5ea21b146104d65780637ecebe00146105015761021a565b80633312a684146103ad5780633644e515146103d857806342966c6814610403578063444784251461042c5761021a565b806323b872dd116101e257806323b872dd146102d8578063270fd20a146103155780632ca1b45d14610340578063307aebc914610357578063313ce567146103825761021a565b80630387da3f1461021c57806306fdde0314610245578063095ea7b31461027057806318160ddd146102ad5761021a565b3661021a57005b005b34801561022857600080fd5b50610243600480360381019061023e91906128f1565b61085a565b005b34801561025157600080fd5b5061025a610902565b60405161026791906129b9565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190612a11565b610990565b6040516102a49190612a6c565b60405180910390f35b3480156102b957600080fd5b506102c2610a82565b6040516102cf9190612a96565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190612ab1565b610a88565b60405161030c9190612a6c565b60405180910390f35b34801561032157600080fd5b5061032a6110d9565b6040516103379190612a6c565b60405180910390f35b34801561034c57600080fd5b506103556110ec565b005b34801561036357600080fd5b5061036c61119f565b6040516103799190612a6c565b60405180910390f35b34801561038e57600080fd5b506103976111b2565b6040516103a49190612b20565b60405180910390f35b3480156103b957600080fd5b506103c26111d6565b6040516103cf9190612b4a565b60405180910390f35b3480156103e457600080fd5b506103ed6111fc565b6040516103fa9190612b7e565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190612b99565b611259565b005b34801561043857600080fd5b50610441611266565b60405161044e9190612b4a565b60405180910390f35b34801561046357600080fd5b5061046c61128c565b6040516104799190612a96565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a49190612bc6565b611292565b6040516104b69190612a96565b60405180910390f35b3480156104cb57600080fd5b506104d46112aa565b005b3480156104e257600080fd5b506104eb6112be565b6040516104f89190612a6c565b60405180910390f35b34801561050d57600080fd5b5061052860048036038101906105239190612bc6565b6112d1565b6040516105359190612a96565b60405180910390f35b34801561054a57600080fd5b506105536112e9565b6040516105609190612b4a565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190612b99565b611312565b60405161059d9190612b4a565b60405180910390f35b3480156105b257600080fd5b506105bb611351565b6040516105c891906129b9565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f39190612bc6565b6113df565b005b34801561060657600080fd5b5061060f6114c1565b60405161061c9190612c52565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190612a11565b6114e7565b6040516106599190612a6c565b60405180910390f35b34801561066e57600080fd5b5061068960048036038101906106849190612bc6565b6114fc565b005b34801561069757600080fd5b506106a06115b7565b6040516106ad9190612b4a565b60405180910390f35b3480156106c257600080fd5b506106cb6115dd565b6040516106d89190612c8e565b60405180910390f35b3480156106ed57600080fd5b506106f6611603565b6040516107039190612a96565b60405180910390f35b34801561071857600080fd5b50610721611609565b60405161072e9190612a96565b60405180910390f35b34801561074357600080fd5b5061075e60048036038101906107599190612d01565b61160f565b005b34801561076c57600080fd5b5061078760048036038101906107829190612da3565b611908565b6040516107949190612a96565b60405180910390f35b3480156107a957600080fd5b506107c460048036038101906107bf9190612bc6565b61192d565b005b3480156107d257600080fd5b506107ed60048036038101906107e89190612bc6565b611a77565b005b3480156107fb57600080fd5b50610804611afa565b6040516108119190612e04565b60405180910390f35b34801561082657600080fd5b5061082f611b20565b005b34801561083d57600080fd5b5061085860048036038101906108539190612bc6565b611bd3565b005b610862611c8e565b60005b81518110156108fe57601082828151811061088357610882612e1f565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080806108f690612e7d565b915050610865565b5050565b6001805461090f90612ef4565b80601f016020809104026020016040519081016040528092919081815260200182805461093b90612ef4565b80156109885780601f1061095d57610100808354040283529160200191610988565b820191906000526020600020905b81548152906001019060200180831161096b57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a709190612a96565b60405180910390a36001905092915050565b60035481565b60003373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610bf4576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bf2578281610b719190612f25565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505b601160019054906101000a900460ff16610de757610c106112e9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610c7e5750610c4e6112e9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610cd85750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610d325750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610de657600061271060c8600354610d4b9190612f59565b610d559190612fca565b90508083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610da39190612ffb565b1115610de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddb906130a1565b60405180910390fd5b505b5b610def611d0c565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015610e495750600d60009054906101000a900460ff16155b8015610ea35750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610edb57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610ee957610ee8611d2f565b5b6000610ef68585856120ed565b905060008184610f069190612f25565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f579190612f25565b9250508190555080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110089190612a96565b60405180910390a360008211156110cc5781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110c39190612a96565b60405180910390a35b6001925050509392505050565b601160019054906101000a900460ff1681565b6110f4611c8e565b601160009054906101000a900460ff1615611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b9061310d565b60405180910390fd5b6001601160006101000a81548160ff021916908315150217905550610bb8600a81905550610bb8600b819055507fa1f3078ed9e1e966576844270dda3bb31267ba7d982fc64933d94552630a436860405160405180910390a1565b600d60019054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f000000000000000000000000000000000000000000000000000000000000000046146112325761122d6124fe565b611254565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b611263338261258a565b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60046020528060005260406000206000915090505481565b6112b2611c8e565b6112bc600061265a565b565b601160009054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6010818154811061132257600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002805461135e90612ef4565b80601f016020809104026020016040519081016040528092919081815260200182805461138a90612ef4565b80156113d75780601f106113ac576101008083540402835291602001916113d7565b820191906000526020600020905b8154815290600101906020018083116113ba57829003601f168201915b505050505081565b6113e7611c8e565b60005b6010805490508110156114bd578173ffffffffffffffffffffffffffffffffffffffff166010828154811061142257611421612e1f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114aa576010818154811061147c5761147b612e1f565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b80806114b590612e7d565b9150506113ea565b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114f4338484610a88565b905092915050565b611504611c8e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a90613179565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600b5481565b42841015611652576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611649906131e5565b60405180910390fd5b6000600161165e6111fc565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016116e696959493929190613205565b6040516020818303038152906040528051906020012060405160200161170d9291906132de565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516117439493929190613315565b6020604051602081039080840390855afa158015611765573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156117d957508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f906133a6565b60405180910390fd5b85600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516118f79190612a96565b60405180910390a350505050505050565b6005602052816000526040600020602052806000526040600020600091509150505481565b61193561271e565b73ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bb90613412565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2a90613179565b60405180910390fd5b80600d60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a7f611c8e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae5906134a4565b60405180910390fd5b611af78161265a565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b28611c8e565b601160019054906101000a900460ff1615611b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6f9061310d565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506101f4600a819055506101f4600b819055507fc8c66e37e8b41bcc2deecfa7487ae0d5ed2fd626c0544a58c33ba95d90a47d4a60405160405180910390a1565b611bdb611c8e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4190613179565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c9661271e565b73ffffffffffffffffffffffffffffffffffffffff16611cb46112e9565b73ffffffffffffffffffffffffffffffffffffffff1614611d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0190613510565b60405180910390fd5b565b60006127106002600354611d209190612f59565b611d2a9190612fca565b905090565b6001600d60006101000a81548160ff0219169083151502179055506000600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600267ffffffffffffffff811115611dab57611daa612750565b5b604051908082528060200260200182016040528015611dd95781602001602082028036833780820191505090505b5090503081600081518110611df157611df0612e1f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc9190613545565b81600181518110611ed057611ecf612e1f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f6e95949392919061366b565b600060405180830381600087803b158015611f8857600080fd5b505af1158015611f9c573d6000803e3d6000fd5b50505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166064602847611fe89190612f59565b611ff29190612fca565b604051611ffe906136f6565b60006040518083038185875af1925050503d806000811461203b576040519150601f19603f3d011682016040523d82523d6000602084013e612040565b606091505b505050600d60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612089906136f6565b60006040518083038185875af1925050503d80600081146120c6576040519150601f19603f3d011682016040523d82523d6000602084013e6120cb565b606091505b50505050506000600d60006101000a81548160ff021916908315150217905550565b60006120f76112e9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061216257506121336112e9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061219857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156121a657600090506124f7565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036122d55760005b6010805490508110156122b2578373ffffffffffffffffffffffffffffffffffffffff166010828154811061223657612235612e1f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361229f57612710600c548461228d9190612f59565b6122979190612fca565b9150506124f7565b80806122aa90612e7d565b9150506121fe565b50612710600a54836122c49190612f59565b6122ce9190612fca565b90506124f7565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124045760005b6010805490508110156123e1578473ffffffffffffffffffffffffffffffffffffffff166010828154811061236557612364612e1f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036123ce57612710600c54846123bc9190612f59565b6123c69190612fca565b9150506124f7565b80806123d990612e7d565b91505061232d565b50612710600b54836123f39190612f59565b6123fd9190612fca565b90506124f7565b601160019054906101000a900460ff1661243a57612710600c54836124299190612f59565b6124339190612fca565b90506124f7565b60005b6010805490508110156124f1578473ffffffffffffffffffffffffffffffffffffffff166010828154811061247557612474612e1f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036124de57612710600c54846124cc9190612f59565b6124d69190612fca565b9150506124f7565b80806124e990612e7d565b91505061243d565b50600090505b9392505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600160405161253091906137a3565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6463060405160200161256f9594939291906137ba565b60405160208183030381529060405280519060200120905090565b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125d99190612f25565b9250508190555080600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161264e9190612a96565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127888261273f565b810181811067ffffffffffffffff821117156127a7576127a6612750565b5b80604052505050565b60006127ba612726565b90506127c6828261277f565b919050565b600067ffffffffffffffff8211156127e6576127e5612750565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612827826127fc565b9050919050565b6128378161281c565b811461284257600080fd5b50565b6000813590506128548161282e565b92915050565b600061286d612868846127cb565b6127b0565b905080838252602082019050602084028301858111156128905761288f6127f7565b5b835b818110156128b957806128a58882612845565b845260208401935050602081019050612892565b5050509392505050565b600082601f8301126128d8576128d761273a565b5b81356128e884826020860161285a565b91505092915050565b60006020828403121561290757612906612730565b5b600082013567ffffffffffffffff81111561292557612924612735565b5b612931848285016128c3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612974578082015181840152602081019050612959565b60008484015250505050565b600061298b8261293a565b6129958185612945565b93506129a5818560208601612956565b6129ae8161273f565b840191505092915050565b600060208201905081810360008301526129d38184612980565b905092915050565b6000819050919050565b6129ee816129db565b81146129f957600080fd5b50565b600081359050612a0b816129e5565b92915050565b60008060408385031215612a2857612a27612730565b5b6000612a3685828601612845565b9250506020612a47858286016129fc565b9150509250929050565b60008115159050919050565b612a6681612a51565b82525050565b6000602082019050612a816000830184612a5d565b92915050565b612a90816129db565b82525050565b6000602082019050612aab6000830184612a87565b92915050565b600080600060608486031215612aca57612ac9612730565b5b6000612ad886828701612845565b9350506020612ae986828701612845565b9250506040612afa868287016129fc565b9150509250925092565b600060ff82169050919050565b612b1a81612b04565b82525050565b6000602082019050612b356000830184612b11565b92915050565b612b448161281c565b82525050565b6000602082019050612b5f6000830184612b3b565b92915050565b6000819050919050565b612b7881612b65565b82525050565b6000602082019050612b936000830184612b6f565b92915050565b600060208284031215612baf57612bae612730565b5b6000612bbd848285016129fc565b91505092915050565b600060208284031215612bdc57612bdb612730565b5b6000612bea84828501612845565b91505092915050565b6000819050919050565b6000612c18612c13612c0e846127fc565b612bf3565b6127fc565b9050919050565b6000612c2a82612bfd565b9050919050565b6000612c3c82612c1f565b9050919050565b612c4c81612c31565b82525050565b6000602082019050612c676000830184612c43565b92915050565b6000612c7882612c1f565b9050919050565b612c8881612c6d565b82525050565b6000602082019050612ca36000830184612c7f565b92915050565b612cb281612b04565b8114612cbd57600080fd5b50565b600081359050612ccf81612ca9565b92915050565b612cde81612b65565b8114612ce957600080fd5b50565b600081359050612cfb81612cd5565b92915050565b600080600080600080600060e0888a031215612d2057612d1f612730565b5b6000612d2e8a828b01612845565b9750506020612d3f8a828b01612845565b9650506040612d508a828b016129fc565b9550506060612d618a828b016129fc565b9450506080612d728a828b01612cc0565b93505060a0612d838a828b01612cec565b92505060c0612d948a828b01612cec565b91505092959891949750929550565b60008060408385031215612dba57612db9612730565b5b6000612dc885828601612845565b9250506020612dd985828601612845565b9150509250929050565b6000612dee82612c1f565b9050919050565b612dfe81612de3565b82525050565b6000602082019050612e196000830184612df5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e88826129db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612eba57612eb9612e4e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f0c57607f821691505b602082108103612f1f57612f1e612ec5565b5b50919050565b6000612f30826129db565b9150612f3b836129db565b9250828203905081811115612f5357612f52612e4e565b5b92915050565b6000612f64826129db565b9150612f6f836129db565b9250828202612f7d816129db565b91508282048414831517612f9457612f93612e4e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612fd5826129db565b9150612fe0836129db565b925082612ff057612fef612f9b565b5b828204905092915050565b6000613006826129db565b9150613011836129db565b925082820190508082111561302957613028612e4e565b5b92915050565b7f526563697069656e7420686f6c64696e672065786365656473206d6178696d7560008201527f6d20616c6c6f7765640000000000000000000000000000000000000000000000602082015250565b600061308b602983612945565b91506130968261302f565b604082019050919050565b600060208201905081810360008301526130ba8161307e565b9050919050565b7f746869732069732061206f6e652073686f742066756e6374696f6e0000000000600082015250565b60006130f7601b83612945565b9150613102826130c1565b602082019050919050565b60006020820190508181036000830152613126816130ea565b9050919050565b7f6e756c6c20616464726573730000000000000000000000000000000000000000600082015250565b6000613163600c83612945565b915061316e8261312d565b602082019050919050565b6000602082019050818103600083015261319281613156565b9050919050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b60006131cf601783612945565b91506131da82613199565b602082019050919050565b600060208201905081810360008301526131fe816131c2565b9050919050565b600060c08201905061321a6000830189612b6f565b6132276020830188612b3b565b6132346040830187612b3b565b6132416060830186612a87565b61324e6080830185612a87565b61325b60a0830184612a87565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006132a7600283613266565b91506132b282613271565b600282019050919050565b6000819050919050565b6132d86132d382612b65565b6132bd565b82525050565b60006132e98261329a565b91506132f582856132c7565b60208201915061330582846132c7565b6020820191508190509392505050565b600060808201905061332a6000830187612b6f565b6133376020830186612b11565b6133446040830185612b6f565b6133516060830184612b6f565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b6000613390600e83612945565b915061339b8261335a565b602082019050919050565b600060208201905081810360008301526133bf81613383565b9050919050565b7f457874726163746f72206973206e6f7420636f72726563742100000000000000600082015250565b60006133fc601983612945565b9150613407826133c6565b602082019050919050565b6000602082019050818103600083015261342b816133ef565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061348e602683612945565b915061349982613432565b604082019050919050565b600060208201905081810360008301526134bd81613481565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134fa602083612945565b9150613505826134c4565b602082019050919050565b60006020820190508181036000830152613529816134ed565b9050919050565b60008151905061353f8161282e565b92915050565b60006020828403121561355b5761355a612730565b5b600061356984828501613530565b91505092915050565b6000819050919050565b600061359761359261358d84613572565b612bf3565b6129db565b9050919050565b6135a78161357c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135e28161281c565b82525050565b60006135f483836135d9565b60208301905092915050565b6000602082019050919050565b6000613618826135ad565b61362281856135b8565b935061362d836135c9565b8060005b8381101561365e57815161364588826135e8565b975061365083613600565b925050600181019050613631565b5085935050505092915050565b600060a0820190506136806000830188612a87565b61368d602083018761359e565b818103604083015261369f818661360d565b90506136ae6060830185612b3b565b6136bb6080830184612a87565b9695505050505050565b600081905092915050565b50565b60006136e06000836136c5565b91506136eb826136d0565b600082019050919050565b6000613701826136d3565b9150819050919050565b60008190508160005260206000209050919050565b6000815461372d81612ef4565b61373781866136c5565b9450600182166000811461375257600181146137675761379a565b60ff198316865281151582028601935061379a565b6137708561370b565b60005b8381101561379257815481890152600182019150602081019050613773565b838801955050505b50505092915050565b60006137af8284613720565b915081905092915050565b600060a0820190506137cf6000830188612b6f565b6137dc6020830187612b6f565b6137e96040830186612b6f565b6137f66060830185612a87565b6138036080830184612b3b565b969550505050505056fea26469706673582212209535c84138c165dd49dd41af8b7998824fa102917b30a54f3665061369b58f1f64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102135760003560e01c80638da5cb5b11610118578063c473413a116100a0578063e2ed781c1161006f578063e2ed781c1461079d578063f2fde38b146107c6578063f887ea40146107ef578063f98eb6e11461081a578063fb235f34146108315761021a565b8063c473413a146106e1578063cffd129c1461070c578063d505accf14610737578063dd62ed3e146107605761021a565b8063a8aa1b31116100e7578063a8aa1b31146105fa578063a9059cbb14610625578063a944ff8414610662578063bd6e09081461068b578063c45a0155146106b65761021a565b80638da5cb5b1461053e57806392e37a931461056957806395d89b41146105a6578063a5db6198146105d15761021a565b80633312a6841161019b57806356cd8acf1161016a57806356cd8acf1461045757806370a0823114610482578063715018a6146104bf5780637d5ea21b146104d65780637ecebe00146105015761021a565b80633312a684146103ad5780633644e515146103d857806342966c6814610403578063444784251461042c5761021a565b806323b872dd116101e257806323b872dd146102d8578063270fd20a146103155780632ca1b45d14610340578063307aebc914610357578063313ce567146103825761021a565b80630387da3f1461021c57806306fdde0314610245578063095ea7b31461027057806318160ddd146102ad5761021a565b3661021a57005b005b34801561022857600080fd5b50610243600480360381019061023e91906128f1565b61085a565b005b34801561025157600080fd5b5061025a610902565b60405161026791906129b9565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190612a11565b610990565b6040516102a49190612a6c565b60405180910390f35b3480156102b957600080fd5b506102c2610a82565b6040516102cf9190612a96565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190612ab1565b610a88565b60405161030c9190612a6c565b60405180910390f35b34801561032157600080fd5b5061032a6110d9565b6040516103379190612a6c565b60405180910390f35b34801561034c57600080fd5b506103556110ec565b005b34801561036357600080fd5b5061036c61119f565b6040516103799190612a6c565b60405180910390f35b34801561038e57600080fd5b506103976111b2565b6040516103a49190612b20565b60405180910390f35b3480156103b957600080fd5b506103c26111d6565b6040516103cf9190612b4a565b60405180910390f35b3480156103e457600080fd5b506103ed6111fc565b6040516103fa9190612b7e565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190612b99565b611259565b005b34801561043857600080fd5b50610441611266565b60405161044e9190612b4a565b60405180910390f35b34801561046357600080fd5b5061046c61128c565b6040516104799190612a96565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a49190612bc6565b611292565b6040516104b69190612a96565b60405180910390f35b3480156104cb57600080fd5b506104d46112aa565b005b3480156104e257600080fd5b506104eb6112be565b6040516104f89190612a6c565b60405180910390f35b34801561050d57600080fd5b5061052860048036038101906105239190612bc6565b6112d1565b6040516105359190612a96565b60405180910390f35b34801561054a57600080fd5b506105536112e9565b6040516105609190612b4a565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190612b99565b611312565b60405161059d9190612b4a565b60405180910390f35b3480156105b257600080fd5b506105bb611351565b6040516105c891906129b9565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f39190612bc6565b6113df565b005b34801561060657600080fd5b5061060f6114c1565b60405161061c9190612c52565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190612a11565b6114e7565b6040516106599190612a6c565b60405180910390f35b34801561066e57600080fd5b5061068960048036038101906106849190612bc6565b6114fc565b005b34801561069757600080fd5b506106a06115b7565b6040516106ad9190612b4a565b60405180910390f35b3480156106c257600080fd5b506106cb6115dd565b6040516106d89190612c8e565b60405180910390f35b3480156106ed57600080fd5b506106f6611603565b6040516107039190612a96565b60405180910390f35b34801561071857600080fd5b50610721611609565b60405161072e9190612a96565b60405180910390f35b34801561074357600080fd5b5061075e60048036038101906107599190612d01565b61160f565b005b34801561076c57600080fd5b5061078760048036038101906107829190612da3565b611908565b6040516107949190612a96565b60405180910390f35b3480156107a957600080fd5b506107c460048036038101906107bf9190612bc6565b61192d565b005b3480156107d257600080fd5b506107ed60048036038101906107e89190612bc6565b611a77565b005b3480156107fb57600080fd5b50610804611afa565b6040516108119190612e04565b60405180910390f35b34801561082657600080fd5b5061082f611b20565b005b34801561083d57600080fd5b5061085860048036038101906108539190612bc6565b611bd3565b005b610862611c8e565b60005b81518110156108fe57601082828151811061088357610882612e1f565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080806108f690612e7d565b915050610865565b5050565b6001805461090f90612ef4565b80601f016020809104026020016040519081016040528092919081815260200182805461093b90612ef4565b80156109885780601f1061095d57610100808354040283529160200191610988565b820191906000526020600020905b81548152906001019060200180831161096b57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a709190612a96565b60405180910390a36001905092915050565b60035481565b60003373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610bf4576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bf2578281610b719190612f25565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505b601160019054906101000a900460ff16610de757610c106112e9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610c7e5750610c4e6112e9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610cd85750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610d325750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610de657600061271060c8600354610d4b9190612f59565b610d559190612fca565b90508083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610da39190612ffb565b1115610de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddb906130a1565b60405180910390fd5b505b5b610def611d0c565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015610e495750600d60009054906101000a900460ff16155b8015610ea35750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610edb57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610ee957610ee8611d2f565b5b6000610ef68585856120ed565b905060008184610f069190612f25565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f579190612f25565b9250508190555080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110089190612a96565b60405180910390a360008211156110cc5781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110c39190612a96565b60405180910390a35b6001925050509392505050565b601160019054906101000a900460ff1681565b6110f4611c8e565b601160009054906101000a900460ff1615611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b9061310d565b60405180910390fd5b6001601160006101000a81548160ff021916908315150217905550610bb8600a81905550610bb8600b819055507fa1f3078ed9e1e966576844270dda3bb31267ba7d982fc64933d94552630a436860405160405180910390a1565b600d60019054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000001281565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f000000000000000000000000000000000000000000000000000000000000000146146112325761122d6124fe565b611254565b7f97b6a8c4943d5301273acf9e3ea63026c1ada5f91de3529e5b158a288ff9c8765b905090565b611263338261258a565b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60046020528060005260406000206000915090505481565b6112b2611c8e565b6112bc600061265a565b565b601160009054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6010818154811061132257600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002805461135e90612ef4565b80601f016020809104026020016040519081016040528092919081815260200182805461138a90612ef4565b80156113d75780601f106113ac576101008083540402835291602001916113d7565b820191906000526020600020905b8154815290600101906020018083116113ba57829003601f168201915b505050505081565b6113e7611c8e565b60005b6010805490508110156114bd578173ffffffffffffffffffffffffffffffffffffffff166010828154811061142257611421612e1f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114aa576010818154811061147c5761147b612e1f565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b80806114b590612e7d565b9150506113ea565b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114f4338484610a88565b905092915050565b611504611c8e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a90613179565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600b5481565b42841015611652576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611649906131e5565b60405180910390fd5b6000600161165e6111fc565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016116e696959493929190613205565b6040516020818303038152906040528051906020012060405160200161170d9291906132de565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516117439493929190613315565b6020604051602081039080840390855afa158015611765573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156117d957508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f906133a6565b60405180910390fd5b85600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516118f79190612a96565b60405180910390a350505050505050565b6005602052816000526040600020602052806000526040600020600091509150505481565b61193561271e565b73ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bb90613412565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2a90613179565b60405180910390fd5b80600d60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a7f611c8e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae5906134a4565b60405180910390fd5b611af78161265a565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b28611c8e565b601160019054906101000a900460ff1615611b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6f9061310d565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506101f4600a819055506101f4600b819055507fc8c66e37e8b41bcc2deecfa7487ae0d5ed2fd626c0544a58c33ba95d90a47d4a60405160405180910390a1565b611bdb611c8e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4190613179565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c9661271e565b73ffffffffffffffffffffffffffffffffffffffff16611cb46112e9565b73ffffffffffffffffffffffffffffffffffffffff1614611d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0190613510565b60405180910390fd5b565b60006127106002600354611d209190612f59565b611d2a9190612fca565b905090565b6001600d60006101000a81548160ff0219169083151502179055506000600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600267ffffffffffffffff811115611dab57611daa612750565b5b604051908082528060200260200182016040528015611dd95781602001602082028036833780820191505090505b5090503081600081518110611df157611df0612e1f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc9190613545565b81600181518110611ed057611ecf612e1f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f6e95949392919061366b565b600060405180830381600087803b158015611f8857600080fd5b505af1158015611f9c573d6000803e3d6000fd5b50505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166064602847611fe89190612f59565b611ff29190612fca565b604051611ffe906136f6565b60006040518083038185875af1925050503d806000811461203b576040519150601f19603f3d011682016040523d82523d6000602084013e612040565b606091505b505050600d60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612089906136f6565b60006040518083038185875af1925050503d80600081146120c6576040519150601f19603f3d011682016040523d82523d6000602084013e6120cb565b606091505b50505050506000600d60006101000a81548160ff021916908315150217905550565b60006120f76112e9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061216257506121336112e9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061219857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156121a657600090506124f7565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036122d55760005b6010805490508110156122b2578373ffffffffffffffffffffffffffffffffffffffff166010828154811061223657612235612e1f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361229f57612710600c548461228d9190612f59565b6122979190612fca565b9150506124f7565b80806122aa90612e7d565b9150506121fe565b50612710600a54836122c49190612f59565b6122ce9190612fca565b90506124f7565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124045760005b6010805490508110156123e1578473ffffffffffffffffffffffffffffffffffffffff166010828154811061236557612364612e1f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036123ce57612710600c54846123bc9190612f59565b6123c69190612fca565b9150506124f7565b80806123d990612e7d565b91505061232d565b50612710600b54836123f39190612f59565b6123fd9190612fca565b90506124f7565b601160019054906101000a900460ff1661243a57612710600c54836124299190612f59565b6124339190612fca565b90506124f7565b60005b6010805490508110156124f1578473ffffffffffffffffffffffffffffffffffffffff166010828154811061247557612474612e1f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036124de57612710600c54846124cc9190612f59565b6124d69190612fca565b9150506124f7565b80806124e990612e7d565b91505061243d565b50600090505b9392505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600160405161253091906137a3565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6463060405160200161256f9594939291906137ba565b60405160208183030381529060405280519060200120905090565b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125d99190612f25565b9250508190555080600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161264e9190612a96565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127888261273f565b810181811067ffffffffffffffff821117156127a7576127a6612750565b5b80604052505050565b60006127ba612726565b90506127c6828261277f565b919050565b600067ffffffffffffffff8211156127e6576127e5612750565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612827826127fc565b9050919050565b6128378161281c565b811461284257600080fd5b50565b6000813590506128548161282e565b92915050565b600061286d612868846127cb565b6127b0565b905080838252602082019050602084028301858111156128905761288f6127f7565b5b835b818110156128b957806128a58882612845565b845260208401935050602081019050612892565b5050509392505050565b600082601f8301126128d8576128d761273a565b5b81356128e884826020860161285a565b91505092915050565b60006020828403121561290757612906612730565b5b600082013567ffffffffffffffff81111561292557612924612735565b5b612931848285016128c3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612974578082015181840152602081019050612959565b60008484015250505050565b600061298b8261293a565b6129958185612945565b93506129a5818560208601612956565b6129ae8161273f565b840191505092915050565b600060208201905081810360008301526129d38184612980565b905092915050565b6000819050919050565b6129ee816129db565b81146129f957600080fd5b50565b600081359050612a0b816129e5565b92915050565b60008060408385031215612a2857612a27612730565b5b6000612a3685828601612845565b9250506020612a47858286016129fc565b9150509250929050565b60008115159050919050565b612a6681612a51565b82525050565b6000602082019050612a816000830184612a5d565b92915050565b612a90816129db565b82525050565b6000602082019050612aab6000830184612a87565b92915050565b600080600060608486031215612aca57612ac9612730565b5b6000612ad886828701612845565b9350506020612ae986828701612845565b9250506040612afa868287016129fc565b9150509250925092565b600060ff82169050919050565b612b1a81612b04565b82525050565b6000602082019050612b356000830184612b11565b92915050565b612b448161281c565b82525050565b6000602082019050612b5f6000830184612b3b565b92915050565b6000819050919050565b612b7881612b65565b82525050565b6000602082019050612b936000830184612b6f565b92915050565b600060208284031215612baf57612bae612730565b5b6000612bbd848285016129fc565b91505092915050565b600060208284031215612bdc57612bdb612730565b5b6000612bea84828501612845565b91505092915050565b6000819050919050565b6000612c18612c13612c0e846127fc565b612bf3565b6127fc565b9050919050565b6000612c2a82612bfd565b9050919050565b6000612c3c82612c1f565b9050919050565b612c4c81612c31565b82525050565b6000602082019050612c676000830184612c43565b92915050565b6000612c7882612c1f565b9050919050565b612c8881612c6d565b82525050565b6000602082019050612ca36000830184612c7f565b92915050565b612cb281612b04565b8114612cbd57600080fd5b50565b600081359050612ccf81612ca9565b92915050565b612cde81612b65565b8114612ce957600080fd5b50565b600081359050612cfb81612cd5565b92915050565b600080600080600080600060e0888a031215612d2057612d1f612730565b5b6000612d2e8a828b01612845565b9750506020612d3f8a828b01612845565b9650506040612d508a828b016129fc565b9550506060612d618a828b016129fc565b9450506080612d728a828b01612cc0565b93505060a0612d838a828b01612cec565b92505060c0612d948a828b01612cec565b91505092959891949750929550565b60008060408385031215612dba57612db9612730565b5b6000612dc885828601612845565b9250506020612dd985828601612845565b9150509250929050565b6000612dee82612c1f565b9050919050565b612dfe81612de3565b82525050565b6000602082019050612e196000830184612df5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e88826129db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612eba57612eb9612e4e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f0c57607f821691505b602082108103612f1f57612f1e612ec5565b5b50919050565b6000612f30826129db565b9150612f3b836129db565b9250828203905081811115612f5357612f52612e4e565b5b92915050565b6000612f64826129db565b9150612f6f836129db565b9250828202612f7d816129db565b91508282048414831517612f9457612f93612e4e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612fd5826129db565b9150612fe0836129db565b925082612ff057612fef612f9b565b5b828204905092915050565b6000613006826129db565b9150613011836129db565b925082820190508082111561302957613028612e4e565b5b92915050565b7f526563697069656e7420686f6c64696e672065786365656473206d6178696d7560008201527f6d20616c6c6f7765640000000000000000000000000000000000000000000000602082015250565b600061308b602983612945565b91506130968261302f565b604082019050919050565b600060208201905081810360008301526130ba8161307e565b9050919050565b7f746869732069732061206f6e652073686f742066756e6374696f6e0000000000600082015250565b60006130f7601b83612945565b9150613102826130c1565b602082019050919050565b60006020820190508181036000830152613126816130ea565b9050919050565b7f6e756c6c20616464726573730000000000000000000000000000000000000000600082015250565b6000613163600c83612945565b915061316e8261312d565b602082019050919050565b6000602082019050818103600083015261319281613156565b9050919050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b60006131cf601783612945565b91506131da82613199565b602082019050919050565b600060208201905081810360008301526131fe816131c2565b9050919050565b600060c08201905061321a6000830189612b6f565b6132276020830188612b3b565b6132346040830187612b3b565b6132416060830186612a87565b61324e6080830185612a87565b61325b60a0830184612a87565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006132a7600283613266565b91506132b282613271565b600282019050919050565b6000819050919050565b6132d86132d382612b65565b6132bd565b82525050565b60006132e98261329a565b91506132f582856132c7565b60208201915061330582846132c7565b6020820191508190509392505050565b600060808201905061332a6000830187612b6f565b6133376020830186612b11565b6133446040830185612b6f565b6133516060830184612b6f565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b6000613390600e83612945565b915061339b8261335a565b602082019050919050565b600060208201905081810360008301526133bf81613383565b9050919050565b7f457874726163746f72206973206e6f7420636f72726563742100000000000000600082015250565b60006133fc601983612945565b9150613407826133c6565b602082019050919050565b6000602082019050818103600083015261342b816133ef565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061348e602683612945565b915061349982613432565b604082019050919050565b600060208201905081810360008301526134bd81613481565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134fa602083612945565b9150613505826134c4565b602082019050919050565b60006020820190508181036000830152613529816134ed565b9050919050565b60008151905061353f8161282e565b92915050565b60006020828403121561355b5761355a612730565b5b600061356984828501613530565b91505092915050565b6000819050919050565b600061359761359261358d84613572565b612bf3565b6129db565b9050919050565b6135a78161357c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135e28161281c565b82525050565b60006135f483836135d9565b60208301905092915050565b6000602082019050919050565b6000613618826135ad565b61362281856135b8565b935061362d836135c9565b8060005b8381101561365e57815161364588826135e8565b975061365083613600565b925050600181019050613631565b5085935050505092915050565b600060a0820190506136806000830188612a87565b61368d602083018761359e565b818103604083015261369f818661360d565b90506136ae6060830185612b3b565b6136bb6080830184612a87565b9695505050505050565b600081905092915050565b50565b60006136e06000836136c5565b91506136eb826136d0565b600082019050919050565b6000613701826136d3565b9150819050919050565b60008190508160005260206000209050919050565b6000815461372d81612ef4565b61373781866136c5565b9450600182166000811461375257600181146137675761379a565b60ff198316865281151582028601935061379a565b6137708561370b565b60005b8381101561379257815481890152600182019150602081019050613773565b838801955050505b50505092915050565b60006137af8284613720565b915081905092915050565b600060a0820190506137cf6000830188612b6f565b6137dc6020830187612b6f565b6137e96040830186612b6f565b6137f66060830185612a87565b6138036080830184612b3b565b969550505050505056fea26469706673582212209535c84138c165dd49dd41af8b7998824fa102917b30a54f3665061369b58f1f64736f6c63430008130033

Deployed Bytecode Sourcemap

18494:8202:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20267:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1078:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2555:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1361:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24891:1802;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19234:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20836:233;;;;;;;;;;;;;:::i;:::-;;19034:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1134:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5515:179;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20623:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19099:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18844:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1396:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9654:103;;;;;;;;;;;;;:::i;:::-;;19204:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1822:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9006:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19172:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1105:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20439:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18614:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24311:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21486:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19065:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18575:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18775:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18809:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3980:1527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1449:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21326:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9912:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18536:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21077:241;;;;;;;;;;;;;:::i;:::-;;21649:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20267:164;8892:13;:11;:13::i;:::-;20338:6:::1;20334:90;20354:7;:14;20350:1;:18;20334:90;;;20389:6;20401:7;20409:1;20401:10;;;;;;;;:::i;:::-;;;;;;;;20389:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20370:3;;;;;:::i;:::-;;;;20334:90;;;;20267:164:::0;:::o;1078:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2555:217::-;2629:4;2679:6;2646:9;:21;2656:10;2646:21;;;;;;;;;;;;;;;:30;2668:7;2646:30;;;;;;;;;;;;;;;:39;;;;2724:7;2703:37;;2712:10;2703:37;;;2733:6;2703:37;;;;;;:::i;:::-;;;;;;;;2760:4;2753:11;;2555:217;;;;:::o;1361:26::-;;;;:::o;24891:1802::-;25011:4;25040:10;25032:18;;:4;:18;;;25028:272;;25116:12;25131:9;:15;25141:4;25131:15;;;;;;;;;;;;;;;:27;25147:10;25131:27;;;;;;;;;;;;;;;;25116:42;;25226:14;25215:7;:25;25211:77;;25282:6;25272:7;:16;;;;:::i;:::-;25242:9;:15;25252:4;25242:15;;;;;;;;;;;;;;;:27;25258:10;25242:27;;;;;;;;;;;;;;;:46;;;;25211:77;25052:248;25028:272;25320:14;;;;;;;;;;;25316:343;;25359:7;:5;:7::i;:::-;25353:13;;:2;:13;;;;:32;;;;;25378:7;:5;:7::i;:::-;25370:15;;:4;:15;;;;25353:32;:57;;;;;25403:6;;;;;;;;;;;25389:21;;:2;:21;;;;25353:57;:80;;;;;25428:4;;;;;;;;;;;25414:19;;:2;:19;;;;25353:80;25350:298;;;25453:18;25496:5;25489:3;25475:11;;:17;;;;:::i;:::-;25474:27;;;;:::i;:::-;25453:48;;25576:10;25566:6;25550:9;:13;25560:2;25550:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:36;;25542:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;25434:214;25350:298;25316:343;25880:18;:16;:18::i;:::-;25853:9;:24;25871:4;25853:24;;;;;;;;;;;;;;;;:45;:73;;;;;25903:23;;;;;;;;;;;25902:24;25853:73;:98;;;;;25946:4;;;;;;;;;;;25930:21;;:4;:21;;;;25853:98;:123;;;;;25971:4;25955:21;;:4;:21;;;;25853:123;25849:176;;;25993:20;:18;:20::i;:::-;25849:176;26037:8;26048:25;26056:4;26062:2;26066:6;26048:7;:25::i;:::-;26037:36;;26084:19;26115:3;26106:6;:12;;;;:::i;:::-;26084:34;;26150:6;26131:9;:15;26141:4;26131:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;26321:14;26304:9;:13;26314:2;26304:13;;;;;;;;;;;;;;;;:31;;;;;;;;;;;26379:2;26364:34;;26373:4;26364:34;;;26383:14;26364:34;;;;;;:::i;:::-;;;;;;;;26421:1;26415:3;:7;26411:251;;;26510:3;26482:9;:24;26500:4;26482:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;26639:4;26616:34;;26625:4;26616:34;;;26646:3;26616:34;;;;;;:::i;:::-;;;;;;;;26411:251;26681:4;26674:11;;;;24891:1802;;;;;:::o;19234:26::-;;;;;;;;;;;;;:::o;20836:233::-;8892:13;:11;:13::i;:::-;20902:11:::1;;;;;;;;;;;20901:12;20893:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20970:4;20956:11;;:18;;;;;;;;;;;;;;;;;;20997:4;20985:9;:16;;;;21025:4;21012:10;:17;;;;21045:16;;;;;;;;;;20836:233::o:0;19034:22::-;;;;;;;;;;;;;:::o;1134:31::-;;;:::o;19134:::-;;;;;;;;;;;;;:::o;5515:179::-;5572:7;5616:16;5599:13;:33;:87;;5662:24;:22;:24::i;:::-;5599:87;;;5635:24;5599:87;5592:94;;5515:179;:::o;20623:80::-;20670:25;20676:10;20688:6;20670:5;:25::i;:::-;20623:80;:::o;19099:28::-;;;;;;;;;;;;;:::o;18844:40::-;;;;:::o;1396:44::-;;;;;;;;;;;;;;;;;:::o;9654:103::-;8892:13;:11;:13::i;:::-;9719:30:::1;9746:1;9719:18;:30::i;:::-;9654:103::o:0;19204:23::-;;;;;;;;;;;;;:::o;1822:41::-;;;;;;;;;;;;;;;;;:::o;9006:87::-;9052:7;9079:6;;;;;;;;;;;9072:13;;9006:87;:::o;19172:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1105:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20439:172::-;8892:13;:11;:13::i;:::-;20502:6:::1;20498:106;20518:6;:13;;;;20514:1;:17;20498:106;;;20568:6;20555:19;;:6;20562:1;20555:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:19;;::::0;20552:40:::1;;20583:6;20590:1;20583:9;;;;;;;;:::i;:::-;;;;;;;;;;20576:16;;;;;;;;;;;20552:40;20533:3;;;;;:::i;:::-;;;;20498:106;;;;20439:172:::0;:::o;18614:26::-;;;;;;;;;;;;;:::o;24311:136::-;24379:4;24403:36;24416:10;24428:2;24432:6;24403:12;:36::i;:::-;24396:43;;24311:136;;;;:::o;21486:155::-;8892:13;:11;:13::i;:::-;21578:1:::1;21560:20;;:6;:20;;::::0;21552:45:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21627:6;21608:16;;:25;;;;;;;;;;;;;;;;;;21486:155:::0;:::o;19065:27::-;;;;;;;;;;;;;:::o;18575:32::-;;;;;;;;;;;;;:::o;18775:27::-;;;;:::o;18809:28::-;;;;:::o;3980:1527::-;4208:15;4196:8;:27;;4188:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4421:24;4448:827;4588:18;:16;:18::i;:::-;4718:167;4920:5;4960:7;5002:5;5042:6;:13;5049:5;5042:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;5092:8;4673:458;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4633:525;;;;;;4508:673;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4476:724;;;;;;5219:1;5239;5259;4448:827;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4421:854;;5328:1;5300:30;;:16;:30;;;;:59;;;;;5354:5;5334:25;;:16;:25;;;5300:59;5292:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;5434:5;5395:9;:27;5405:16;5395:27;;;;;;;;;;;;;;;:36;5423:7;5395:36;;;;;;;;;;;;;;;:44;;;;4396:1055;5484:7;5468:31;;5477:5;5468:31;;;5493:5;5468:31;;;;;;:::i;:::-;;;;;;;;3980:1527;;;;;;;:::o;1449:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21326:152::-;20122:12;:10;:12::i;:::-;20102:32;;:16;;;;;;;;;;;:32;;;20094:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21419:1:::1;21401:20;;:6;:20;;::::0;21393:45:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21464:6;21449:12;;:21;;;;;;;;;;;;;;;;;;21326:152:::0;:::o;9912:201::-;8892:13;:11;:13::i;:::-;10021:1:::1;10001:22;;:8;:22;;::::0;9993:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10077:28;10096:8;10077:18;:28::i;:::-;9912:201:::0;:::o;18536:32::-;;;;;;;;;;;;;:::o;21077:241::-;8892:13;:11;:13::i;:::-;21144:14:::1;;;;;;;;;;;21143:15;21135:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;21218:4;21201:14;;:21;;;;;;;;;;;;;;;;;;21245:3;21233:9;:15;;;;21272:3;21259:10;:16;;;;21291:19;;;;;;;;;;21077:241::o:0;21649:156::-;8892:13;:11;:13::i;:::-;21745:1:::1;21727:20;;:6;:20;;::::0;21719:45:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21791:6;21775:13;;:22;;;;;;;;;;;;;;;;;;21649:156:::0;:::o;9171:132::-;9246:12;:10;:12::i;:::-;9235:23;;:7;:5;:7::i;:::-;:23;;;9227:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9171:132::o;20711:117::-;20762:4;20806:5;20801:1;20787:11;;:15;;;;:::i;:::-;20786:25;;;;:::i;:::-;20779:32;;20711:117;:::o;23485:597::-;19984:4;19958:23;;:30;;;;;;;;;;;;;;;;;;23549:17:::1;23569:9;:24;23587:4;23569:24;;;;;;;;;;;;;;;;23549:44;;23623:21;23661:1;23647:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23623:40;;23692:4;23674;23679:1;23674:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;23718:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23708:4;23713:1;23708:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;23744:6;;;;;;;;;;;:57;;;23816:12;23843:1;23859:4;23886;23906:15;23744:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23945:13;;;;;;;;;;;:18;;24002:3;23997:2;23972:21;23971:28;;;;:::i;:::-;:34;;;;:::i;:::-;23945:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24023:12;;;;;;;;;;;:17;;24048:21;24023:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23536:546;;20037:5:::0;20011:23;;:31;;;;;;;;;;;;;;;;;;23485:597::o;22076:1329::-;22155:4;22184:7;:5;:7::i;:::-;22176:15;;:4;:15;;;:32;;;;22201:7;:5;:7::i;:::-;22195:13;;:2;:13;;;22176:32;:57;;;;22228:4;22212:21;;:4;:21;;;22176:57;22172:1226;;;22393:1;22386:8;;;;22172:1226;22432:4;;;;;;;;;;;22416:21;;:4;:21;;;22412:986;;22511:6;22507:140;22527:6;:13;;;;22523:1;:17;22507:140;;;22581:2;22568:15;;:6;22575:1;22568:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:15;;;22565:66;;22625:6;22601:21;;22592:6;:30;;;;:::i;:::-;:39;;;;:::i;:::-;22585:46;;;;;22565:66;22542:3;;;;;:::i;:::-;;;;22507:140;;;;22691:6;22679:9;;22670:6;:18;;;;:::i;:::-;:27;;;;:::i;:::-;22663:34;;;;22412:986;22733:4;;;;;;;;;;;22719:19;;:2;:19;;;22715:683;;22815:6;22811:142;22831:6;:13;;;;22827:1;:17;22811:142;;;22885:4;22872:17;;:6;22879:1;22872:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:17;;;22869:68;;22931:6;22907:21;;22898:6;:30;;;;:::i;:::-;:39;;;;:::i;:::-;22891:46;;;;;22869:68;22846:3;;;;;:::i;:::-;;;;22811:142;;;;22998:6;22985:10;;22976:6;:19;;;;:::i;:::-;:28;;;;:::i;:::-;22969:35;;;;22715:683;23043:14;;;;;;;;;;;23039:100;;23117:6;23093:21;;23084:6;:30;;;;:::i;:::-;:39;;;;:::i;:::-;23077:46;;;;23039:100;23159:6;23155:142;23175:6;:13;;;;23171:1;:17;23155:142;;;23229:4;23216:17;;:6;23223:1;23216:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:17;;;23213:68;;23275:6;23251:21;;23242:6;:30;;;;:::i;:::-;:39;;;;:::i;:::-;23235:46;;;;;23213:68;23190:3;;;;;:::i;:::-;;;;23155:142;;;;23385:1;23378:8;;22076:1329;;;;;;:::o;5702:457::-;5767:7;5868:95;6002:4;5986:22;;;;;;:::i;:::-;;;;;;;;6031:14;6068:13;6112:4;5835:301;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5807:344;;;;;;5787:364;;5702:457;:::o;6702:338::-;6794:6;6775:9;:15;6785:4;6775:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;6963:6;6948:11;;:21;;;;;;;;;;;7021:1;6998:34;;7007:4;6998:34;;;7025:6;6998:34;;;;;;:::i;:::-;;;;;;;;6702:338;;:::o;10273:191::-;10347:16;10366:6;;;;;;;;;;;10347:25;;10392:8;10383:6;;:17;;;;;;;;;;;;;;;;;;10447:8;10416:40;;10437:8;10416:40;;;;;;;;;;;;10336:128;10273:191;:::o;7715:98::-;7768:7;7795:10;7788:17;;7715:98;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:118::-;6375:24;6393:5;6375:24;:::i;:::-;6370:3;6363:37;6288:118;;:::o;6412:222::-;6505:4;6543:2;6532:9;6528:18;6520:26;;6556:71;6624:1;6613:9;6609:17;6600:6;6556:71;:::i;:::-;6412:222;;;;:::o;6640:619::-;6717:6;6725;6733;6782:2;6770:9;6761:7;6757:23;6753:32;6750:119;;;6788:79;;:::i;:::-;6750:119;6908:1;6933:53;6978:7;6969:6;6958:9;6954:22;6933:53;:::i;:::-;6923:63;;6879:117;7035:2;7061:53;7106:7;7097:6;7086:9;7082:22;7061:53;:::i;:::-;7051:63;;7006:118;7163:2;7189:53;7234:7;7225:6;7214:9;7210:22;7189:53;:::i;:::-;7179:63;;7134:118;6640:619;;;;;:::o;7265:86::-;7300:7;7340:4;7333:5;7329:16;7318:27;;7265:86;;;:::o;7357:112::-;7440:22;7456:5;7440:22;:::i;:::-;7435:3;7428:35;7357:112;;:::o;7475:214::-;7564:4;7602:2;7591:9;7587:18;7579:26;;7615:67;7679:1;7668:9;7664:17;7655:6;7615:67;:::i;:::-;7475:214;;;;:::o;7695:118::-;7782:24;7800:5;7782:24;:::i;:::-;7777:3;7770:37;7695:118;;:::o;7819:222::-;7912:4;7950:2;7939:9;7935:18;7927:26;;7963:71;8031:1;8020:9;8016:17;8007:6;7963:71;:::i;:::-;7819:222;;;;:::o;8047:77::-;8084:7;8113:5;8102:16;;8047:77;;;:::o;8130:118::-;8217:24;8235:5;8217:24;:::i;:::-;8212:3;8205:37;8130:118;;:::o;8254:222::-;8347:4;8385:2;8374:9;8370:18;8362:26;;8398:71;8466:1;8455:9;8451:17;8442:6;8398:71;:::i;:::-;8254:222;;;;:::o;8482:329::-;8541:6;8590:2;8578:9;8569:7;8565:23;8561:32;8558:119;;;8596:79;;:::i;:::-;8558:119;8716:1;8741:53;8786:7;8777:6;8766:9;8762:22;8741:53;:::i;:::-;8731:63;;8687:117;8482:329;;;;:::o;8817:::-;8876:6;8925:2;8913:9;8904:7;8900:23;8896:32;8893:119;;;8931:79;;:::i;:::-;8893:119;9051:1;9076:53;9121:7;9112:6;9101:9;9097:22;9076:53;:::i;:::-;9066:63;;9022:117;8817:329;;;;:::o;9152:60::-;9180:3;9201:5;9194:12;;9152:60;;;:::o;9218:142::-;9268:9;9301:53;9319:34;9328:24;9346:5;9328:24;:::i;:::-;9319:34;:::i;:::-;9301:53;:::i;:::-;9288:66;;9218:142;;;:::o;9366:126::-;9416:9;9449:37;9480:5;9449:37;:::i;:::-;9436:50;;9366:126;;;:::o;9498:148::-;9570:9;9603:37;9634:5;9603:37;:::i;:::-;9590:50;;9498:148;;;:::o;9652:175::-;9761:59;9814:5;9761:59;:::i;:::-;9756:3;9749:72;9652:175;;:::o;9833:266::-;9948:4;9986:2;9975:9;9971:18;9963:26;;9999:93;10089:1;10078:9;10074:17;10065:6;9999:93;:::i;:::-;9833:266;;;;:::o;10105:151::-;10180:9;10213:37;10244:5;10213:37;:::i;:::-;10200:50;;10105:151;;;:::o;10262:181::-;10374:62;10430:5;10374:62;:::i;:::-;10369:3;10362:75;10262:181;;:::o;10449:272::-;10567:4;10605:2;10594:9;10590:18;10582:26;;10618:96;10711:1;10700:9;10696:17;10687:6;10618:96;:::i;:::-;10449:272;;;;:::o;10727:118::-;10798:22;10814:5;10798:22;:::i;:::-;10791:5;10788:33;10778:61;;10835:1;10832;10825:12;10778:61;10727:118;:::o;10851:135::-;10895:5;10933:6;10920:20;10911:29;;10949:31;10974:5;10949:31;:::i;:::-;10851:135;;;;:::o;10992:122::-;11065:24;11083:5;11065:24;:::i;:::-;11058:5;11055:35;11045:63;;11104:1;11101;11094:12;11045:63;10992:122;:::o;11120:139::-;11166:5;11204:6;11191:20;11182:29;;11220:33;11247:5;11220:33;:::i;:::-;11120:139;;;;:::o;11265:1199::-;11376:6;11384;11392;11400;11408;11416;11424;11473:3;11461:9;11452:7;11448:23;11444:33;11441:120;;;11480:79;;:::i;:::-;11441:120;11600:1;11625:53;11670:7;11661:6;11650:9;11646:22;11625:53;:::i;:::-;11615:63;;11571:117;11727:2;11753:53;11798:7;11789:6;11778:9;11774:22;11753:53;:::i;:::-;11743:63;;11698:118;11855:2;11881:53;11926:7;11917:6;11906:9;11902:22;11881:53;:::i;:::-;11871:63;;11826:118;11983:2;12009:53;12054:7;12045:6;12034:9;12030:22;12009:53;:::i;:::-;11999:63;;11954:118;12111:3;12138:51;12181:7;12172:6;12161:9;12157:22;12138:51;:::i;:::-;12128:61;;12082:117;12238:3;12265:53;12310:7;12301:6;12290:9;12286:22;12265:53;:::i;:::-;12255:63;;12209:119;12367:3;12394:53;12439:7;12430:6;12419:9;12415:22;12394:53;:::i;:::-;12384:63;;12338:119;11265:1199;;;;;;;;;;:::o;12470:474::-;12538:6;12546;12595:2;12583:9;12574:7;12570:23;12566:32;12563:119;;;12601:79;;:::i;:::-;12563:119;12721:1;12746:53;12791:7;12782:6;12771:9;12767:22;12746:53;:::i;:::-;12736:63;;12692:117;12848:2;12874:53;12919:7;12910:6;12899:9;12895:22;12874:53;:::i;:::-;12864:63;;12819:118;12470:474;;;;;:::o;12950:153::-;13027:9;13060:37;13091:5;13060:37;:::i;:::-;13047:50;;12950:153;;;:::o;13109:185::-;13223:64;13281:5;13223:64;:::i;:::-;13218:3;13211:77;13109:185;;:::o;13300:276::-;13420:4;13458:2;13447:9;13443:18;13435:26;;13471:98;13566:1;13555:9;13551:17;13542:6;13471:98;:::i;:::-;13300:276;;;;:::o;13582:180::-;13630:77;13627:1;13620:88;13727:4;13724:1;13717:15;13751:4;13748:1;13741:15;13768:180;13816:77;13813:1;13806:88;13913:4;13910:1;13903:15;13937:4;13934:1;13927:15;13954:233;13993:3;14016:24;14034:5;14016:24;:::i;:::-;14007:33;;14062:66;14055:5;14052:77;14049:103;;14132:18;;:::i;:::-;14049:103;14179:1;14172:5;14168:13;14161:20;;13954:233;;;:::o;14193:180::-;14241:77;14238:1;14231:88;14338:4;14335:1;14328:15;14362:4;14359:1;14352:15;14379:320;14423:6;14460:1;14454:4;14450:12;14440:22;;14507:1;14501:4;14497:12;14528:18;14518:81;;14584:4;14576:6;14572:17;14562:27;;14518:81;14646:2;14638:6;14635:14;14615:18;14612:38;14609:84;;14665:18;;:::i;:::-;14609:84;14430:269;14379:320;;;:::o;14705:194::-;14745:4;14765:20;14783:1;14765:20;:::i;:::-;14760:25;;14799:20;14817:1;14799:20;:::i;:::-;14794:25;;14843:1;14840;14836:9;14828:17;;14867:1;14861:4;14858:11;14855:37;;;14872:18;;:::i;:::-;14855:37;14705:194;;;;:::o;14905:410::-;14945:7;14968:20;14986:1;14968:20;:::i;:::-;14963:25;;15002:20;15020:1;15002:20;:::i;:::-;14997:25;;15057:1;15054;15050:9;15079:30;15097:11;15079:30;:::i;:::-;15068:41;;15258:1;15249:7;15245:15;15242:1;15239:22;15219:1;15212:9;15192:83;15169:139;;15288:18;;:::i;:::-;15169:139;14953:362;14905:410;;;;:::o;15321:180::-;15369:77;15366:1;15359:88;15466:4;15463:1;15456:15;15490:4;15487:1;15480:15;15507:185;15547:1;15564:20;15582:1;15564:20;:::i;:::-;15559:25;;15598:20;15616:1;15598:20;:::i;:::-;15593:25;;15637:1;15627:35;;15642:18;;:::i;:::-;15627:35;15684:1;15681;15677:9;15672:14;;15507:185;;;;:::o;15698:191::-;15738:3;15757:20;15775:1;15757:20;:::i;:::-;15752:25;;15791:20;15809:1;15791:20;:::i;:::-;15786:25;;15834:1;15831;15827:9;15820:16;;15855:3;15852:1;15849:10;15846:36;;;15862:18;;:::i;:::-;15846:36;15698:191;;;;:::o;15895:228::-;16035:34;16031:1;16023:6;16019:14;16012:58;16104:11;16099:2;16091:6;16087:15;16080:36;15895:228;:::o;16129:366::-;16271:3;16292:67;16356:2;16351:3;16292:67;:::i;:::-;16285:74;;16368:93;16457:3;16368:93;:::i;:::-;16486:2;16481:3;16477:12;16470:19;;16129:366;;;:::o;16501:419::-;16667:4;16705:2;16694:9;16690:18;16682:26;;16754:9;16748:4;16744:20;16740:1;16729:9;16725:17;16718:47;16782:131;16908:4;16782:131;:::i;:::-;16774:139;;16501:419;;;:::o;16926:177::-;17066:29;17062:1;17054:6;17050:14;17043:53;16926:177;:::o;17109:366::-;17251:3;17272:67;17336:2;17331:3;17272:67;:::i;:::-;17265:74;;17348:93;17437:3;17348:93;:::i;:::-;17466:2;17461:3;17457:12;17450:19;;17109:366;;;:::o;17481:419::-;17647:4;17685:2;17674:9;17670:18;17662:26;;17734:9;17728:4;17724:20;17720:1;17709:9;17705:17;17698:47;17762:131;17888:4;17762:131;:::i;:::-;17754:139;;17481:419;;;:::o;17906:162::-;18046:14;18042:1;18034:6;18030:14;18023:38;17906:162;:::o;18074:366::-;18216:3;18237:67;18301:2;18296:3;18237:67;:::i;:::-;18230:74;;18313:93;18402:3;18313:93;:::i;:::-;18431:2;18426:3;18422:12;18415:19;;18074:366;;;:::o;18446:419::-;18612:4;18650:2;18639:9;18635:18;18627:26;;18699:9;18693:4;18689:20;18685:1;18674:9;18670:17;18663:47;18727:131;18853:4;18727:131;:::i;:::-;18719:139;;18446:419;;;:::o;18871:173::-;19011:25;19007:1;18999:6;18995:14;18988:49;18871:173;:::o;19050:366::-;19192:3;19213:67;19277:2;19272:3;19213:67;:::i;:::-;19206:74;;19289:93;19378:3;19289:93;:::i;:::-;19407:2;19402:3;19398:12;19391:19;;19050:366;;;:::o;19422:419::-;19588:4;19626:2;19615:9;19611:18;19603:26;;19675:9;19669:4;19665:20;19661:1;19650:9;19646:17;19639:47;19703:131;19829:4;19703:131;:::i;:::-;19695:139;;19422:419;;;:::o;19847:775::-;20080:4;20118:3;20107:9;20103:19;20095:27;;20132:71;20200:1;20189:9;20185:17;20176:6;20132:71;:::i;:::-;20213:72;20281:2;20270:9;20266:18;20257:6;20213:72;:::i;:::-;20295;20363:2;20352:9;20348:18;20339:6;20295:72;:::i;:::-;20377;20445:2;20434:9;20430:18;20421:6;20377:72;:::i;:::-;20459:73;20527:3;20516:9;20512:19;20503:6;20459:73;:::i;:::-;20542;20610:3;20599:9;20595:19;20586:6;20542:73;:::i;:::-;19847:775;;;;;;;;;:::o;20628:148::-;20730:11;20767:3;20752:18;;20628:148;;;;:::o;20782:214::-;20922:66;20918:1;20910:6;20906:14;20899:90;20782:214;:::o;21002:400::-;21162:3;21183:84;21265:1;21260:3;21183:84;:::i;:::-;21176:91;;21276:93;21365:3;21276:93;:::i;:::-;21394:1;21389:3;21385:11;21378:18;;21002:400;;;:::o;21408:79::-;21447:7;21476:5;21465:16;;21408:79;;;:::o;21493:157::-;21598:45;21618:24;21636:5;21618:24;:::i;:::-;21598:45;:::i;:::-;21593:3;21586:58;21493:157;;:::o;21656:663::-;21897:3;21919:148;22063:3;21919:148;:::i;:::-;21912:155;;22077:75;22148:3;22139:6;22077:75;:::i;:::-;22177:2;22172:3;22168:12;22161:19;;22190:75;22261:3;22252:6;22190:75;:::i;:::-;22290:2;22285:3;22281:12;22274:19;;22310:3;22303:10;;21656:663;;;;;:::o;22325:545::-;22498:4;22536:3;22525:9;22521:19;22513:27;;22550:71;22618:1;22607:9;22603:17;22594:6;22550:71;:::i;:::-;22631:68;22695:2;22684:9;22680:18;22671:6;22631:68;:::i;:::-;22709:72;22777:2;22766:9;22762:18;22753:6;22709:72;:::i;:::-;22791;22859:2;22848:9;22844:18;22835:6;22791:72;:::i;:::-;22325:545;;;;;;;:::o;22876:164::-;23016:16;23012:1;23004:6;23000:14;22993:40;22876:164;:::o;23046:366::-;23188:3;23209:67;23273:2;23268:3;23209:67;:::i;:::-;23202:74;;23285:93;23374:3;23285:93;:::i;:::-;23403:2;23398:3;23394:12;23387:19;;23046:366;;;:::o;23418:419::-;23584:4;23622:2;23611:9;23607:18;23599:26;;23671:9;23665:4;23661:20;23657:1;23646:9;23642:17;23635:47;23699:131;23825:4;23699:131;:::i;:::-;23691:139;;23418:419;;;:::o;23843:175::-;23983:27;23979:1;23971:6;23967:14;23960:51;23843:175;:::o;24024:366::-;24166:3;24187:67;24251:2;24246:3;24187:67;:::i;:::-;24180:74;;24263:93;24352:3;24263:93;:::i;:::-;24381:2;24376:3;24372:12;24365:19;;24024:366;;;:::o;24396:419::-;24562:4;24600:2;24589:9;24585:18;24577:26;;24649:9;24643:4;24639:20;24635:1;24624:9;24620:17;24613:47;24677:131;24803:4;24677:131;:::i;:::-;24669:139;;24396:419;;;:::o;24821:225::-;24961:34;24957:1;24949:6;24945:14;24938:58;25030:8;25025:2;25017:6;25013:15;25006:33;24821:225;:::o;25052:366::-;25194:3;25215:67;25279:2;25274:3;25215:67;:::i;:::-;25208:74;;25291:93;25380:3;25291:93;:::i;:::-;25409:2;25404:3;25400:12;25393:19;;25052:366;;;:::o;25424:419::-;25590:4;25628:2;25617:9;25613:18;25605:26;;25677:9;25671:4;25667:20;25663:1;25652:9;25648:17;25641:47;25705:131;25831:4;25705:131;:::i;:::-;25697:139;;25424:419;;;:::o;25849:182::-;25989:34;25985:1;25977:6;25973:14;25966:58;25849:182;:::o;26037:366::-;26179:3;26200:67;26264:2;26259:3;26200:67;:::i;:::-;26193:74;;26276:93;26365:3;26276:93;:::i;:::-;26394:2;26389:3;26385:12;26378:19;;26037:366;;;:::o;26409:419::-;26575:4;26613:2;26602:9;26598:18;26590:26;;26662:9;26656:4;26652:20;26648:1;26637:9;26633:17;26626:47;26690:131;26816:4;26690:131;:::i;:::-;26682:139;;26409:419;;;:::o;26834:143::-;26891:5;26922:6;26916:13;26907:22;;26938:33;26965:5;26938:33;:::i;:::-;26834:143;;;;:::o;26983:351::-;27053:6;27102:2;27090:9;27081:7;27077:23;27073:32;27070:119;;;27108:79;;:::i;:::-;27070:119;27228:1;27253:64;27309:7;27300:6;27289:9;27285:22;27253:64;:::i;:::-;27243:74;;27199:128;26983:351;;;;:::o;27340:85::-;27385:7;27414:5;27403:16;;27340:85;;;:::o;27431:158::-;27489:9;27522:61;27540:42;27549:32;27575:5;27549:32;:::i;:::-;27540:42;:::i;:::-;27522:61;:::i;:::-;27509:74;;27431:158;;;:::o;27595:147::-;27690:45;27729:5;27690:45;:::i;:::-;27685:3;27678:58;27595:147;;:::o;27748:114::-;27815:6;27849:5;27843:12;27833:22;;27748:114;;;:::o;27868:184::-;27967:11;28001:6;27996:3;27989:19;28041:4;28036:3;28032:14;28017:29;;27868:184;;;;:::o;28058:132::-;28125:4;28148:3;28140:11;;28178:4;28173:3;28169:14;28161:22;;28058:132;;;:::o;28196:108::-;28273:24;28291:5;28273:24;:::i;:::-;28268:3;28261:37;28196:108;;:::o;28310:179::-;28379:10;28400:46;28442:3;28434:6;28400:46;:::i;:::-;28478:4;28473:3;28469:14;28455:28;;28310:179;;;;:::o;28495:113::-;28565:4;28597;28592:3;28588:14;28580:22;;28495:113;;;:::o;28644:732::-;28763:3;28792:54;28840:5;28792:54;:::i;:::-;28862:86;28941:6;28936:3;28862:86;:::i;:::-;28855:93;;28972:56;29022:5;28972:56;:::i;:::-;29051:7;29082:1;29067:284;29092:6;29089:1;29086:13;29067:284;;;29168:6;29162:13;29195:63;29254:3;29239:13;29195:63;:::i;:::-;29188:70;;29281:60;29334:6;29281:60;:::i;:::-;29271:70;;29127:224;29114:1;29111;29107:9;29102:14;;29067:284;;;29071:14;29367:3;29360:10;;28768:608;;;28644:732;;;;:::o;29382:831::-;29645:4;29683:3;29672:9;29668:19;29660:27;;29697:71;29765:1;29754:9;29750:17;29741:6;29697:71;:::i;:::-;29778:80;29854:2;29843:9;29839:18;29830:6;29778:80;:::i;:::-;29905:9;29899:4;29895:20;29890:2;29879:9;29875:18;29868:48;29933:108;30036:4;30027:6;29933:108;:::i;:::-;29925:116;;30051:72;30119:2;30108:9;30104:18;30095:6;30051:72;:::i;:::-;30133:73;30201:3;30190:9;30186:19;30177:6;30133:73;:::i;:::-;29382:831;;;;;;;;:::o;30219:147::-;30320:11;30357:3;30342:18;;30219:147;;;;:::o;30372:114::-;;:::o;30492:398::-;30651:3;30672:83;30753:1;30748:3;30672:83;:::i;:::-;30665:90;;30764:93;30853:3;30764:93;:::i;:::-;30882:1;30877:3;30873:11;30866:18;;30492:398;;;:::o;30896:379::-;31080:3;31102:147;31245:3;31102:147;:::i;:::-;31095:154;;31266:3;31259:10;;30896:379;;;:::o;31281:144::-;31333:4;31356:3;31348:11;;31379:3;31376:1;31369:14;31413:4;31410:1;31400:18;31392:26;;31281:144;;;:::o;31453:878::-;31558:3;31595:5;31589:12;31624:36;31650:9;31624:36;:::i;:::-;31676:88;31757:6;31752:3;31676:88;:::i;:::-;31669:95;;31795:1;31784:9;31780:17;31811:1;31806:166;;;;31986:1;31981:344;;;;31773:552;;31806:166;31890:4;31886:9;31875;31871:25;31866:3;31859:38;31952:6;31945:14;31938:22;31930:6;31926:35;31921:3;31917:45;31910:52;;31806:166;;31981:344;32048:41;32083:5;32048:41;:::i;:::-;32111:1;32125:154;32139:6;32136:1;32133:13;32125:154;;;32213:7;32207:14;32203:1;32198:3;32194:11;32187:35;32263:1;32254:7;32250:15;32239:26;;32161:4;32158:1;32154:12;32149:17;;32125:154;;;32308:6;32303:3;32299:16;32292:23;;31988:337;;31773:552;;31562:769;;31453:878;;;;:::o;32337:273::-;32468:3;32490:94;32580:3;32571:6;32490:94;:::i;:::-;32483:101;;32601:3;32594:10;;32337:273;;;;:::o;32616:664::-;32821:4;32859:3;32848:9;32844:19;32836:27;;32873:71;32941:1;32930:9;32926:17;32917:6;32873:71;:::i;:::-;32954:72;33022:2;33011:9;33007:18;32998:6;32954:72;:::i;:::-;33036;33104:2;33093:9;33089:18;33080:6;33036:72;:::i;:::-;33118;33186:2;33175:9;33171:18;33162:6;33118:72;:::i;:::-;33200:73;33268:3;33257:9;33253:19;33244:6;33200:73;:::i;:::-;32616:664;;;;;;;;:::o

Swarm Source

ipfs://9535c84138c165dd49dd41af8b7998824fa102917b30a54f3665061369b58f1f
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.