ETH Price: $3,467.12 (+6.54%)
Gas: 49 Gwei

Contract

0x619fCE6be15eDeF253BC5D032c63Dae3d645319e
 

Overview

ETH Balance

0.000000000000001821 ETH

Eth Value

Less Than $0.01 (@ $3,467.12/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve184722322023-10-31 19:36:11120 days 10 hrs ago1698780971IN
0x619fCE...d645319e
0 ETH0.0015644533.16411487
Approve184589272023-10-29 22:51:35122 days 7 hrs ago1698619895IN
0x619fCE...d645319e
0 ETH0.0006213.14320324
Approve184587832023-10-29 22:22:11122 days 7 hrs ago1698618131IN
0x619fCE...d645319e
0 ETH0.0007191515.24506139
Approve184583922023-10-29 21:03:11122 days 8 hrs ago1698613391IN
0x619fCE...d645319e
0 ETH0.0007677916.27617407
Approve184581802023-10-29 20:20:23122 days 9 hrs ago1698610823IN
0x619fCE...d645319e
0 ETH0.0006773314.44301613
Approve184575512023-10-29 18:13:11122 days 11 hrs ago1698603191IN
0x619fCE...d645319e
0 ETH0.0004849616.27578128
Approve184574272023-10-29 17:47:59122 days 12 hrs ago1698601679IN
0x619fCE...d645319e
0 ETH0.0009278519.66923515
Approve184572522023-10-29 17:12:59122 days 12 hrs ago1698599579IN
0x619fCE...d645319e
0 ETH0.0025587454.24176657
Approve184571022023-10-29 16:42:47122 days 13 hrs ago1698597767IN
0x619fCE...d645319e
0 ETH0.0009060619.31529488
Approve184570952023-10-29 16:41:23122 days 13 hrs ago1698597683IN
0x619fCE...d645319e
0 ETH0.000845618.02647277
Approve184569382023-10-29 16:09:11122 days 13 hrs ago1698595751IN
0x619fCE...d645319e
0 ETH0.0007009614.85953678
Approve184568972023-10-29 16:00:59122 days 13 hrs ago1698595259IN
0x619fCE...d645319e
0 ETH0.0006981514.79999091
Approve184568592023-10-29 15:53:23122 days 14 hrs ago1698594803IN
0x619fCE...d645319e
0 ETH0.0006649214.16383753
Approve184568512023-10-29 15:51:47122 days 14 hrs ago1698594707IN
0x619fCE...d645319e
0 ETH0.0007235115.33743813
Approve184560982023-10-29 13:20:47122 days 16 hrs ago1698585647IN
0x619fCE...d645319e
0 ETH0.0004915316.48939762
Approve184559302023-10-29 12:46:47122 days 17 hrs ago1698583607IN
0x619fCE...d645319e
0 ETH0.0005883512.54240213
Approve184557332023-10-29 12:06:47122 days 17 hrs ago1698581207IN
0x619fCE...d645319e
0 ETH0.000344211.52834903
Approve184546892023-10-29 8:36:11122 days 21 hrs ago1698568571IN
0x619fCE...d645319e
0 ETH0.001090623.08989493
Approve184542682023-10-29 7:11:47122 days 22 hrs ago1698563507IN
0x619fCE...d645319e
0 ETH0.0009241419.56573086
Approve184536052023-10-29 4:57:11123 days 59 mins ago1698555431IN
0x619fCE...d645319e
0 ETH0.0006634614.04666799
Approve184535972023-10-29 4:55:35123 days 1 hr ago1698555335IN
0x619fCE...d645319e
0 ETH0.0003077110.31453178
Approve184527272023-10-29 2:00:47123 days 3 hrs ago1698544847IN
0x619fCE...d645319e
0 ETH0.000459229.78213986
Approve184527012023-10-29 1:55:35123 days 4 hrs ago1698544535IN
0x619fCE...d645319e
0 ETH0.000458559.72074189
Approve184526872023-10-29 1:52:47123 days 4 hrs ago1698544367IN
0x619fCE...d645319e
0 ETH0.00042259
Approve184511332023-10-28 20:39:59123 days 9 hrs ago1698525599IN
0x619fCE...d645319e
0 ETH0.0006072512.948626
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Txn Hash Block From To Value
184689822023-10-31 8:40:47120 days 21 hrs ago1698741647
0x619fCE...d645319e
0.00176138 ETH
184689822023-10-31 8:40:47120 days 21 hrs ago1698741647
0x619fCE...d645319e
0.00176138 ETH
184689822023-10-31 8:40:47120 days 21 hrs ago1698741647
0x619fCE...d645319e
0.00054236 ETH
184689822023-10-31 8:40:47120 days 21 hrs ago1698741647
0x619fCE...d645319e
0.00054236 ETH
184649552023-10-30 19:07:35121 days 10 hrs ago1698692855
0x619fCE...d645319e
0.00149379 ETH
184649552023-10-30 19:07:35121 days 10 hrs ago1698692855
0x619fCE...d645319e
0.00149379 ETH
184641452023-10-30 16:24:59121 days 13 hrs ago1698683099
0x619fCE...d645319e
0.0007043 ETH
184641452023-10-30 16:24:59121 days 13 hrs ago1698683099
0x619fCE...d645319e
0.0007043 ETH
184622542023-10-30 10:03:11121 days 19 hrs ago1698660191
0x619fCE...d645319e
0.00067135 ETH
184622542023-10-30 10:03:11121 days 19 hrs ago1698660191
0x619fCE...d645319e
0.00067135 ETH
184592402023-10-29 23:54:23122 days 6 hrs ago1698623663
0x619fCE...d645319e
0.00036719 ETH
184592402023-10-29 23:54:23122 days 6 hrs ago1698623663
0x619fCE...d645319e
0.00036719 ETH
184589962023-10-29 23:05:23122 days 6 hrs ago1698620723
0x619fCE...d645319e
0.00213036 ETH
184589962023-10-29 23:05:23122 days 6 hrs ago1698620723
0x619fCE...d645319e
0.00213036 ETH
184589292023-10-29 22:51:59122 days 7 hrs ago1698619919
0x619fCE...d645319e
0.00140052 ETH
184589292023-10-29 22:51:59122 days 7 hrs ago1698619919
0x619fCE...d645319e
0.00140052 ETH
184575532023-10-29 18:13:35122 days 11 hrs ago1698603215
0x619fCE...d645319e
0.00079733 ETH
184575532023-10-29 18:13:35122 days 11 hrs ago1698603215
0x619fCE...d645319e
0.00079733 ETH
184574312023-10-29 17:48:59122 days 12 hrs ago1698601739
0x619fCE...d645319e
0.00123103 ETH
184574312023-10-29 17:48:59122 days 12 hrs ago1698601739
0x619fCE...d645319e
0.00123103 ETH
184573862023-10-29 17:39:47122 days 12 hrs ago1698601187
0x619fCE...d645319e
0.00545246 ETH
184573862023-10-29 17:39:47122 days 12 hrs ago1698601187
0x619fCE...d645319e
0.00545246 ETH
184572552023-10-29 17:13:35122 days 12 hrs ago1698599615
0x619fCE...d645319e
0.0036534 ETH
184572552023-10-29 17:13:35122 days 12 hrs ago1698599615
0x619fCE...d645319e
0.0036534 ETH
184571062023-10-29 16:43:35122 days 13 hrs ago1698597815
0x619fCE...d645319e
0.0018072 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MULTIX

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

/*
https://www.multixerc.com
https://t.me/MultiXERC
https://twitter.com/MultiX_ETH
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
     * while deploying the contract
     *
     * This function can never be called again after deploying contract
     */
    function _tokengeneration(address account, uint256 amount)
        internal
        virtual
    {
        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

    function WETH() external pure returns (address);

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

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

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

    IRouter public router;
    address public pair;

    bool private _interlock = false;
    bool private providingLiquidity = true;
    bool public tradingEnabled = false;

    uint256 private maxThreshold = 10000 * 10**18; // 1%
    uint256 private minThrehold = 100 * 10**18; // 0.01%
    
    uint256 public MaxTxAmount = 30000 * 10**18; // 3%
    uint256 public MaxWalletSize = 30000 * 10**18; // 3%
    
    address public marketingWallet = 0x59d9b884F5A62A2bF4406E08fb662d921B9Fe2fF;
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes private taxes = Taxes(30, 0);
    Taxes private sellTaxes = Taxes(50, 0);

    uint256 public BuyTaxes = taxes.marketing + taxes.liquidity;
    uint256 public SellTaxes = sellTaxes.marketing + sellTaxes.liquidity;

    mapping(address => bool) public exemptFee;
    mapping(address => bool) private isearlybuyer;

    event MaxTxUpdated(uint256 MaxWalletSize, uint256 MaxTxAmount);
    event BuyTaxesUpdated(uint256 marketing,  uint256 liquidity);
    event SellTaxesUpdated(uint256 marketing, uint256 liquidity);
   
    modifier lockTheSwap() {
        if (!_interlock) {
            _interlock = true;
            _;
            _interlock = false;
        }
    }

    constructor() ERC20("MultiX", "MLTX") {
        _tokengeneration(msg.sender, 1000000 * 10**decimals());
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this),_router.WETH());
        router = _router;
        pair = _pair;
        
        exemptFee[msg.sender] = true;
        exemptFee[address(this)] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[deadWallet] = true;
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue,"ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
         require(!isearlybuyer[sender] && !isearlybuyer[recipient],
            "You can't transfer tokens"
        );
      
       if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }
        
        if (sender == pair && recipient != address(router) && !exemptFee[recipient] ) {
                require(amount <= MaxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(recipient) + amount <= MaxWalletSize, "Exceeds the maxWalletSize.");
                
            }
        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        //set fee to zero if fees in contract are handled or exempted
        if (_interlock || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair) {
            feeswap = sellTaxes.liquidity + sellTaxes.marketing;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (recipient != pair) {
            feeswap = taxes.liquidity + taxes.marketing;
            feesum = feeswap;
            currentTaxes = taxes;
        } 

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair)
            Liquify(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }
        }
  }

    function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {
        if (feeswap == 0) {
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= minThrehold) {
            if (contractBalance > maxThreshold) {
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator;
            uint256 initialBalance = address(this).balance;

            swapTokensForETH(contractBalance);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity to pancake
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }
        }
    }

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

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

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

    function updateLiquidityProvide(bool state) external onlyOwner {
        providingLiquidity = state;
    }

   
    function UpdateTreshhold(uint256 max_amount, uint256 min_amount) external onlyOwner {
        require(max_amount <= 10000, "must keep max Threshold at 1% or less" );
        require(min_amount >= 100, "min Threshold must be greater than or equal to 0.01%");
        maxThreshold = max_amount * 10**decimals();
        minThrehold = min_amount * 10**decimals();
    }
    
    function updateBuyFee( uint256 _marketing, uint256 _liquidity) external onlyOwner {
        taxes.marketing = _marketing;
        taxes.liquidity = _liquidity;
     emit BuyTaxesUpdated(_marketing, _liquidity);
    }

    function updateSellFee( uint256 _marketing, uint256 _liquidity) external onlyOwner {
        sellTaxes.marketing = _marketing;
        sellTaxes.liquidity = _liquidity;
    emit SellTaxesUpdated(_marketing, _liquidity);
    }
   
     function setMaxTxLimit(uint256 _maxWallet, uint256 _maxTx) external onlyOwner {
        MaxWalletSize = _maxWallet * 10**decimals(); 
        MaxTxAmount = _maxTx * 10**decimals();
    require (_maxWallet >= 1000, "Cannot set MaxWallet amount lower then 0.1%");
    require (_maxTx >= 1000, "Cannot set MaxTx amount lower then 0.1%");
    emit MaxTxUpdated(_maxWallet, _maxTx);
    }
    
    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
    }
   
    function setMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0), "Fee Address cannot be zero address");
        require(newWallet != address(this), "Fee Address cannot be CA");
        exemptFee[newWallet] = true;
        marketingWallet = newWallet;
    }

      function multiBlockSniper(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            isearlybuyer[accounts[i]] = state;
        }
    }

    function blockSniper(address account, bool state) external onlyOwner {
        isearlybuyer[account] = state;
    }
   
    function excludeFromFee(address _address) external onlyOwner {
        exemptFee[_address] = true;
    }

    function includeInFee(address _address) external onlyOwner {
        exemptFee[_address] = false;
    }

    function rescueEHT() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(owner()).transfer(contractETHBalance);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        require(tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens");
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"BuyTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"MaxWalletSize","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"MaxTxAmount","type":"uint256"}],"name":"MaxTxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SellTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"max_amount","type":"uint256"},{"internalType":"uint256","name":"min_amount","type":"uint256"}],"name":"UpdateTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"blockSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"multiBlockSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueEHT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"uint256","name":"_maxTx","type":"uint256"}],"name":"setMaxTxLimit","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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff02191690831515021790555069021e19e0c9bab240000060085568056bc75e2d6310000060095569065a4da25d3016c00000600a5569065a4da25d3016c00000600b557359d9b884f5a62a2bf4406e08fb662d921b9fe2ff600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280601e81526020016000815250600d600082015181600001556020820151816001015550506040518060400160405280603281526020016000815250600f60008201518160000155602082015181600101555050600d60010154600d60000154620001579190620007ca565b601155600f60010154600f60000154620001729190620007ca565b6012553480156200018257600080fd5b506040518060400160405280600681526020017f4d756c74695800000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d4c545800000000000000000000000000000000000000000000000000000000815250816003908162000200919062000a75565b50806004908162000212919062000a75565b50505062000235620002296200060460201b60201c565b6200060c60201b60201c565b62000274336200024a620006d260201b60201c565b600a62000258919062000cbd565b620f424062000268919062000d0e565b620006db60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000301919062000dc3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f919062000dc3565b6040518363ffffffff1660e01b8152600401620003ae92919062000e06565b6020604051808303816000875af1158015620003ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f4919062000dc3565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016013600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000e61565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000785919062000e44565b60405180910390a35050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007d78262000791565b9150620007e48362000791565b9250828201905080821115620007ff57620007fe6200079b565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200088757607f821691505b6020821081036200089d576200089c6200083f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008c8565b620009138683620008c8565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000956620009506200094a8462000791565b6200092b565b62000791565b9050919050565b6000819050919050565b620009728362000935565b6200098a62000981826200095d565b848454620008d5565b825550505050565b600090565b620009a162000992565b620009ae81848462000967565b505050565b5b81811015620009d657620009ca60008262000997565b600181019050620009b4565b5050565b601f82111562000a2557620009ef81620008a3565b620009fa84620008b8565b8101602085101562000a0a578190505b62000a2262000a1985620008b8565b830182620009b3565b50505b505050565b600082821c905092915050565b600062000a4a6000198460080262000a2a565b1980831691505092915050565b600062000a65838362000a37565b9150826002028217905092915050565b62000a808262000805565b67ffffffffffffffff81111562000a9c5762000a9b62000810565b5b62000aa882546200086e565b62000ab5828285620009da565b600060209050601f83116001811462000aed576000841562000ad8578287015190505b62000ae4858262000a57565b86555062000b54565b601f19841662000afd86620008a3565b60005b8281101562000b275784890151825560018201915060208501945060208101905062000b00565b8683101562000b47578489015162000b43601f89168262000a37565b8355505b6001600288020188555050505b505050505050565b60008160011c9050919050565b6000808291508390505b600185111562000bbb5780860481111562000b935762000b926200079b565b5b600185161562000ba35780820291505b808102905062000bb38562000b5c565b945062000b73565b94509492505050565b60008262000bd6576001905062000ca9565b8162000be6576000905062000ca9565b816001811462000bff576002811462000c0a5762000c40565b600191505062000ca9565b60ff84111562000c1f5762000c1e6200079b565b5b8360020a91508482111562000c395762000c386200079b565b5b5062000ca9565b5060208310610133831016604e8410600b841016171562000c7a5782820a90508381111562000c745762000c736200079b565b5b62000ca9565b62000c89848484600162000b69565b9250905081840481111562000ca35762000ca26200079b565b5b81810290505b9392505050565b600060ff82169050919050565b600062000cca8262000791565b915062000cd78362000cb0565b925062000d067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bc4565b905092915050565b600062000d1b8262000791565b915062000d288362000791565b925082820262000d388162000791565b9150828204841483151762000d525762000d516200079b565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d8b8262000d5e565b9050919050565b62000d9d8162000d7e565b811462000da957600080fd5b50565b60008151905062000dbd8162000d92565b92915050565b60006020828403121562000ddc5762000ddb62000d59565b5b600062000dec8482850162000dac565b91505092915050565b62000e008162000d7e565b82525050565b600060408201905062000e1d600083018562000df5565b62000e2c602083018462000df5565b9392505050565b62000e3e8162000791565b82525050565b600060208201905062000e5b600083018462000e33565b92915050565b6148af8062000e716000396000f3fe60806040526004361061021e5760003560e01c80638a8c523c11610123578063ad3026e4116100ab578063e0eb9cb31161006f578063e0eb9cb3146107ca578063ea2f0b37146107f5578063f2fde38b1461081e578063f887ea4014610847578063fc962edb1461087257610225565b8063ad3026e4146106d3578063beffc7d4146106fc578063c5d32bb214610725578063d256413e14610762578063dd62ed3e1461078d57610225565b8063a1e71b57116100f2578063a1e71b57146105ee578063a40f0ce714610617578063a457c2d71461062e578063a8aa1b311461066b578063a9059cbb1461069657610225565b80638a8c523c146105585780638cd4426d1461056f5780638da5cb5b1461059857806395d89b41146105c357610225565b8063437823ec116101a6578063610e34b911610175578063610e34b91461048557806370a08231146104ae578063715018a6146104eb57806375f0a8741461050257806385141a771461052d57610225565b8063437823ec146103df5780634ada218b146104085780635ae34339146104335780635d098b381461045c57610225565b80631d5dace3116101ed5780631d5dace3146102e657806323b872dd1461030f57806329b8cff31461034c578063313ce5671461037757806339509351146103a257610225565b806306fdde031461022a578063095ea7b3146102555780631340538f1461029257806318160ddd146102bb57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f61089d565b60405161024c9190612fb1565b60405180910390f35b34801561026157600080fd5b5061027c6004803603810190610277919061307b565b61092f565b60405161028991906130d6565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b4919061311d565b61094d565b005b3480156102c757600080fd5b506102d06109e6565b6040516102dd9190613159565b60405180910390f35b3480156102f257600080fd5b5061030d60048036038101906103089190613174565b6109f0565b005b34801561031b57600080fd5b50610336600480360381019061033191906131b4565b610b43565b60405161034391906130d6565b60405180910390f35b34801561035857600080fd5b50610361610c44565b60405161036e9190613159565b60405180910390f35b34801561038357600080fd5b5061038c610c4a565b6040516103999190613223565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c4919061307b565b610c53565b6040516103d691906130d6565b60405180910390f35b3480156103eb57600080fd5b506104066004803603810190610401919061323e565b610cff565b005b34801561041457600080fd5b5061041d610dd6565b60405161042a91906130d6565b60405180910390f35b34801561043f57600080fd5b5061045a6004803603810190610455919061326b565b610de9565b005b34801561046857600080fd5b50610483600480360381019061047e919061323e565b610ec0565b005b34801561049157600080fd5b506104ac60048036038101906104a79190613174565b6110b5565b005b3480156104ba57600080fd5b506104d560048036038101906104d0919061323e565b611182565b6040516104e29190613159565b60405180910390f35b3480156104f757600080fd5b506105006111ca565b005b34801561050e57600080fd5b50610517611252565b60405161052491906132ba565b60405180910390f35b34801561053957600080fd5b50610542611278565b60405161054f91906132ba565b60405180910390f35b34801561056457600080fd5b5061056d61127e565b005b34801561057b57600080fd5b506105966004803603810190610591919061307b565b611367565b005b3480156105a457600080fd5b506105ad6114db565b6040516105ba91906132ba565b60405180910390f35b3480156105cf57600080fd5b506105d8611505565b6040516105e59190612fb1565b60405180910390f35b3480156105fa57600080fd5b506106156004803603810190610610919061341d565b611597565b005b34801561062357600080fd5b5061062c6116a8565b005b34801561063a57600080fd5b506106556004803603810190610650919061307b565b61177a565b60405161066291906130d6565b60405180910390f35b34801561067757600080fd5b5061068061186e565b60405161068d91906132ba565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b8919061307b565b611894565b6040516106ca91906130d6565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f59190613174565b6118ab565b005b34801561070857600080fd5b50610723600480360381019061071e9190613174565b611a38565b005b34801561073157600080fd5b5061074c6004803603810190610747919061323e565b611b05565b60405161075991906130d6565b60405180910390f35b34801561076e57600080fd5b50610777611b25565b6040516107849190613159565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af9190613479565b611b2b565b6040516107c19190613159565b60405180910390f35b3480156107d657600080fd5b506107df611bb2565b6040516107ec9190613159565b60405180910390f35b34801561080157600080fd5b5061081c6004803603810190610817919061323e565b611bb8565b005b34801561082a57600080fd5b506108456004803603810190610840919061323e565b611c8f565b005b34801561085357600080fd5b5061085c611d86565b6040516108699190613518565b60405180910390f35b34801561087e57600080fd5b50610887611dac565b6040516108949190613159565b60405180910390f35b6060600380546108ac90613562565b80601f01602080910402602001604051908101604052809291908181526020018280546108d890613562565b80156109255780601f106108fa57610100808354040283529160200191610925565b820191906000526020600020905b81548152906001019060200180831161090857829003601f168201915b5050505050905090565b600061094361093c611db2565b8484611dba565b6001905092915050565b610955611db2565b73ffffffffffffffffffffffffffffffffffffffff166109736114db565b73ffffffffffffffffffffffffffffffffffffffff16146109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c0906135df565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b6109f8611db2565b73ffffffffffffffffffffffffffffffffffffffff16610a166114db565b73ffffffffffffffffffffffffffffffffffffffff1614610a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a63906135df565b60405180910390fd5b612710821115610ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa890613671565b60405180910390fd5b6064811015610af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aec90613703565b60405180910390fd5b610afd610c4a565b600a610b099190613885565b82610b1491906138d0565b600881905550610b22610c4a565b600a610b2e9190613885565b81610b3991906138d0565b6009819055505050565b6000610b50848484611f83565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b9b611db2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1290613984565b60405180910390fd5b610c3885610c27611db2565b8584610c3391906139a4565b611dba565b60019150509392505050565b600b5481565b60006012905090565b6000610cf5610c60611db2565b848460016000610c6e611db2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf091906139d8565b611dba565b6001905092915050565b610d07611db2565b73ffffffffffffffffffffffffffffffffffffffff16610d256114db565b73ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d72906135df565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600760169054906101000a900460ff1681565b610df1611db2565b73ffffffffffffffffffffffffffffffffffffffff16610e0f6114db565b73ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c906135df565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610ec8611db2565b73ffffffffffffffffffffffffffffffffffffffff16610ee66114db565b73ffffffffffffffffffffffffffffffffffffffff1614610f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f33906135df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa290613a7e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090613aea565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110bd611db2565b73ffffffffffffffffffffffffffffffffffffffff166110db6114db565b73ffffffffffffffffffffffffffffffffffffffff1614611131576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611128906135df565b60405180910390fd5b81600d6000018190555080600d600101819055507fa2b219a42aa557965901397e42601390282bb6828cabbd7675dca50ba6aa62ca8282604051611176929190613b0a565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111d2611db2565b73ffffffffffffffffffffffffffffffffffffffff166111f06114db565b73ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d906135df565b60405180910390fd5b6112506000612636565b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b611286611db2565b73ffffffffffffffffffffffffffffffffffffffff166112a46114db565b73ffffffffffffffffffffffffffffffffffffffff16146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f1906135df565b60405180910390fd5b600760169054906101000a900460ff161561134a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134190613b7f565b60405180910390fd5b6001600760166101000a81548160ff021916908315150217905550565b61136f611db2565b73ffffffffffffffffffffffffffffffffffffffff1661138d6114db565b73ffffffffffffffffffffffffffffffffffffffff16146113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da906135df565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890613c11565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114756114db565b836040518363ffffffff1660e01b8152600401611493929190613c31565b6020604051808303816000875af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190613c6f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461151490613562565b80601f016020809104026020016040519081016040528092919081815260200182805461154090613562565b801561158d5780601f106115625761010080835404028352916020019161158d565b820191906000526020600020905b81548152906001019060200180831161157057829003601f168201915b5050505050905090565b61159f611db2565b73ffffffffffffffffffffffffffffffffffffffff166115bd6114db565b73ffffffffffffffffffffffffffffffffffffffff1614611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160a906135df565b60405180910390fd5b60005b82518110156116a357816014600085848151811061163757611636613c9c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061169b90613ccb565b915050611616565b505050565b6116b0611db2565b73ffffffffffffffffffffffffffffffffffffffff166116ce6114db565b73ffffffffffffffffffffffffffffffffffffffff1614611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b906135df565b60405180910390fd5b60004790506117316114db565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611776573d6000803e3d6000fd5b5050565b60008060016000611789611db2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d90613d85565b60405180910390fd5b611863611851611db2565b85858461185e91906139a4565b611dba565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006118a1338484611f83565b6001905092915050565b6118b3611db2565b73ffffffffffffffffffffffffffffffffffffffff166118d16114db565b73ffffffffffffffffffffffffffffffffffffffff1614611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e906135df565b60405180910390fd5b61192f610c4a565b600a61193b9190613885565b8261194691906138d0565b600b81905550611954610c4a565b600a6119609190613885565b8161196b91906138d0565b600a819055506103e88210156119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90613e17565b60405180910390fd5b6103e88110156119fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f290613ea9565b60405180910390fd5b7f202f4712f0dae21d708451caa16ed4b41cb5c9974ab3d34d1f1dc4dfc5a222db8282604051611a2c929190613b0a565b60405180910390a15050565b611a40611db2565b73ffffffffffffffffffffffffffffffffffffffff16611a5e6114db565b73ffffffffffffffffffffffffffffffffffffffff1614611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab906135df565b60405180910390fd5b81600f6000018190555080600f600101819055507f7873124e0d91bc71776e2961704366640b879893d05157d7bfa606dd9e58227d8282604051611af9929190613b0a565b60405180910390a15050565b60136020528060005260406000206000915054906101000a900460ff1681565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b611bc0611db2565b73ffffffffffffffffffffffffffffffffffffffff16611bde6114db565b73ffffffffffffffffffffffffffffffffffffffff1614611c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2b906135df565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611c97611db2565b73ffffffffffffffffffffffffffffffffffffffff16611cb56114db565b73ffffffffffffffffffffffffffffffffffffffff1614611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d02906135df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7190613f3b565b60405180910390fd5b611d8381612636565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090613fcd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f9061405f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f769190613159565b60405180910390a3505050565b60008111611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd906140f1565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561206a5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a09061415d565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561214d5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121a257600760169054906101000a900460ff166121a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612198906141c9565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561224d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122a35750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561234657600a548111156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e490614235565b60405180910390fd5b600b54816122fa84611182565b61230491906139d8565b1115612345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233c906142a1565b60405180910390fd5b5b6000806000612353612f07565b600760149054906101000a900460ff16806123b75750601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061240b5750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124195760009150612547565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036124b157600f60000154600f6001015461248491906139d8565b9350839250600f604051806040016040529081600082015481526020016001820154815250509050612546565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461254557600d60000154600d6001015461251c91906139d8565b9350839250600d6040518060400160405290816000820154815260200160018201548152505090505b5b5b6064838661255591906138d0565b61255f91906142f0565b9150600760159054906101000a900460ff1680156125cb5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156125db576125da84826126fc565b5b6125f1878784886125ec91906139a4565b61287e565b600082111561262d57600084111561262c5760006064858761261391906138d0565b61261d91906142f0565b905061262a88308361287e565b505b5b50505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff1661287a576001600760146101000a81548160ff021916908315150217905550600082031561285e57600061273f30611182565b9050600954811061285c57600060028461275991906138d0565b905060008184602001518461276e91906138d0565b61277891906142f0565b9050600047905061278884612af0565b6000814761279691906139a4565b905060008660200151856127aa91906139a4565b826127b591906142f0565b905060008760200151826127c991906138d0565b905060008111156127df576127de8582612d33565b5b600088600001516002846127f391906138d0565b6127fd91906138d0565b905060008111156128545761285381600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e1390919063ffffffff16565b5b505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e490614393565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361295c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295390614425565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d9906144b7565b60405180910390fd5b81816129ee91906139a4565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a7e91906139d8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ae29190613159565b60405180910390a350505050565b6000600267ffffffffffffffff811115612b0d57612b0c6132da565b5b604051908082528060200260200182016040528015612b3b5781602001602082028036833780820191505090505b5090503081600081518110612b5357612b52613c9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1e91906144ec565b81600181518110612c3257612c31613c9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c9930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611dba565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cfd959493929190614612565b600060405180830381600087803b158015612d1757600080fd5b505af1158015612d2b573d6000803e3d6000fd5b505050505050565b612d6030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611dba565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612dc99695949392919061466c565b60606040518083038185885af1158015612de7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e0c91906146e2565b5050505050565b80471015612e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4d90614781565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612e7c906147d2565b60006040518083038185875af1925050503d8060008114612eb9576040519150601f19603f3d011682016040523d82523d6000602084013e612ebe565b606091505b5050905080612f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef990614859565b60405180910390fd5b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f5b578082015181840152602081019050612f40565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f8382612f21565b612f8d8185612f2c565b9350612f9d818560208601612f3d565b612fa681612f67565b840191505092915050565b60006020820190508181036000830152612fcb8184612f78565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061301282612fe7565b9050919050565b61302281613007565b811461302d57600080fd5b50565b60008135905061303f81613019565b92915050565b6000819050919050565b61305881613045565b811461306357600080fd5b50565b6000813590506130758161304f565b92915050565b6000806040838503121561309257613091612fdd565b5b60006130a085828601613030565b92505060206130b185828601613066565b9150509250929050565b60008115159050919050565b6130d0816130bb565b82525050565b60006020820190506130eb60008301846130c7565b92915050565b6130fa816130bb565b811461310557600080fd5b50565b600081359050613117816130f1565b92915050565b60006020828403121561313357613132612fdd565b5b600061314184828501613108565b91505092915050565b61315381613045565b82525050565b600060208201905061316e600083018461314a565b92915050565b6000806040838503121561318b5761318a612fdd565b5b600061319985828601613066565b92505060206131aa85828601613066565b9150509250929050565b6000806000606084860312156131cd576131cc612fdd565b5b60006131db86828701613030565b93505060206131ec86828701613030565b92505060406131fd86828701613066565b9150509250925092565b600060ff82169050919050565b61321d81613207565b82525050565b60006020820190506132386000830184613214565b92915050565b60006020828403121561325457613253612fdd565b5b600061326284828501613030565b91505092915050565b6000806040838503121561328257613281612fdd565b5b600061329085828601613030565b92505060206132a185828601613108565b9150509250929050565b6132b481613007565b82525050565b60006020820190506132cf60008301846132ab565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61331282612f67565b810181811067ffffffffffffffff82111715613331576133306132da565b5b80604052505050565b6000613344612fd3565b90506133508282613309565b919050565b600067ffffffffffffffff8211156133705761336f6132da565b5b602082029050602081019050919050565b600080fd5b600061339961339484613355565b61333a565b905080838252602082019050602084028301858111156133bc576133bb613381565b5b835b818110156133e557806133d18882613030565b8452602084019350506020810190506133be565b5050509392505050565b600082601f830112613404576134036132d5565b5b8135613414848260208601613386565b91505092915050565b6000806040838503121561343457613433612fdd565b5b600083013567ffffffffffffffff81111561345257613451612fe2565b5b61345e858286016133ef565b925050602061346f85828601613108565b9150509250929050565b600080604083850312156134905761348f612fdd565b5b600061349e85828601613030565b92505060206134af85828601613030565b9150509250929050565b6000819050919050565b60006134de6134d96134d484612fe7565b6134b9565b612fe7565b9050919050565b60006134f0826134c3565b9050919050565b6000613502826134e5565b9050919050565b613512816134f7565b82525050565b600060208201905061352d6000830184613509565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061357a57607f821691505b60208210810361358d5761358c613533565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135c9602083612f2c565b91506135d482613593565b602082019050919050565b600060208201905081810360008301526135f8816135bc565b9050919050565b7f6d757374206b656570206d6178205468726573686f6c64206174203125206f7260008201527f206c657373000000000000000000000000000000000000000000000000000000602082015250565b600061365b602583612f2c565b9150613666826135ff565b604082019050919050565b6000602082019050818103600083015261368a8161364e565b9050919050565b7f6d696e205468726573686f6c64206d757374206265206772656174657220746860008201527f616e206f7220657175616c20746f20302e303125000000000000000000000000602082015250565b60006136ed603483612f2c565b91506136f882613691565b604082019050919050565b6000602082019050818103600083015261371c816136e0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156137a95780860481111561378557613784613723565b5b60018516156137945780820291505b80810290506137a285613752565b9450613769565b94509492505050565b6000826137c2576001905061387e565b816137d0576000905061387e565b81600181146137e657600281146137f05761381f565b600191505061387e565b60ff84111561380257613801613723565b5b8360020a91508482111561381957613818613723565b5b5061387e565b5060208310610133831016604e8410600b84101617156138545782820a90508381111561384f5761384e613723565b5b61387e565b613861848484600161375f565b9250905081840481111561387857613877613723565b5b81810290505b9392505050565b600061389082613045565b915061389b83613207565b92506138c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137b2565b905092915050565b60006138db82613045565b91506138e683613045565b92508282026138f481613045565b9150828204841483151761390b5761390a613723565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061396e602883612f2c565b915061397982613912565b604082019050919050565b6000602082019050818103600083015261399d81613961565b9050919050565b60006139af82613045565b91506139ba83613045565b92508282039050818111156139d2576139d1613723565b5b92915050565b60006139e382613045565b91506139ee83613045565b9250828201905080821115613a0657613a05613723565b5b92915050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a68602283612f2c565b9150613a7382613a0c565b604082019050919050565b60006020820190508181036000830152613a9781613a5b565b9050919050565b7f46656520416464726573732063616e6e6f742062652043410000000000000000600082015250565b6000613ad4601883612f2c565b9150613adf82613a9e565b602082019050919050565b60006020820190508181036000830152613b0381613ac7565b9050919050565b6000604082019050613b1f600083018561314a565b613b2c602083018461314a565b9392505050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b6000613b69601883612f2c565b9150613b7482613b33565b602082019050919050565b60006020820190508181036000830152613b9881613b5c565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613bfb603683612f2c565b9150613c0682613b9f565b604082019050919050565b60006020820190508181036000830152613c2a81613bee565b9050919050565b6000604082019050613c4660008301856132ab565b613c53602083018461314a565b9392505050565b600081519050613c69816130f1565b92915050565b600060208284031215613c8557613c84612fdd565b5b6000613c9384828501613c5a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613cd682613045565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d0857613d07613723565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613d6f602583612f2c565b9150613d7a82613d13565b604082019050919050565b60006020820190508181036000830152613d9e81613d62565b9050919050565b7f43616e6e6f7420736574204d617857616c6c657420616d6f756e74206c6f776560008201527f72207468656e20302e3125000000000000000000000000000000000000000000602082015250565b6000613e01602b83612f2c565b9150613e0c82613da5565b604082019050919050565b60006020820190508181036000830152613e3081613df4565b9050919050565b7f43616e6e6f7420736574204d6178547820616d6f756e74206c6f77657220746860008201527f656e20302e312500000000000000000000000000000000000000000000000000602082015250565b6000613e93602783612f2c565b9150613e9e82613e37565b604082019050919050565b60006020820190508181036000830152613ec281613e86565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f25602683612f2c565b9150613f3082613ec9565b604082019050919050565b60006020820190508181036000830152613f5481613f18565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613fb7602483612f2c565b9150613fc282613f5b565b604082019050919050565b60006020820190508181036000830152613fe681613faa565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614049602283612f2c565b915061405482613fed565b604082019050919050565b600060208201905081810360008301526140788161403c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006140db602983612f2c565b91506140e68261407f565b604082019050919050565b6000602082019050818103600083015261410a816140ce565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000614147601983612f2c565b915061415282614111565b602082019050919050565b600060208201905081810360008301526141768161413a565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006141b3601383612f2c565b91506141be8261417d565b602082019050919050565b600060208201905081810360008301526141e2816141a6565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b600061421f601983612f2c565b915061422a826141e9565b602082019050919050565b6000602082019050818103600083015261424e81614212565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b600061428b601a83612f2c565b915061429682614255565b602082019050919050565b600060208201905081810360008301526142ba8161427e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006142fb82613045565b915061430683613045565b925082614316576143156142c1565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061437d602583612f2c565b915061438882614321565b604082019050919050565b600060208201905081810360008301526143ac81614370565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061440f602383612f2c565b915061441a826143b3565b604082019050919050565b6000602082019050818103600083015261443e81614402565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144a1602683612f2c565b91506144ac82614445565b604082019050919050565b600060208201905081810360008301526144d081614494565b9050919050565b6000815190506144e681613019565b92915050565b60006020828403121561450257614501612fdd565b5b6000614510848285016144d7565b91505092915050565b6000819050919050565b600061453e61453961453484614519565b6134b9565b613045565b9050919050565b61454e81614523565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61458981613007565b82525050565b600061459b8383614580565b60208301905092915050565b6000602082019050919050565b60006145bf82614554565b6145c9818561455f565b93506145d483614570565b8060005b838110156146055781516145ec888261458f565b97506145f7836145a7565b9250506001810190506145d8565b5085935050505092915050565b600060a082019050614627600083018861314a565b6146346020830187614545565b818103604083015261464681866145b4565b905061465560608301856132ab565b614662608083018461314a565b9695505050505050565b600060c08201905061468160008301896132ab565b61468e602083018861314a565b61469b6040830187614545565b6146a86060830186614545565b6146b560808301856132ab565b6146c260a083018461314a565b979650505050505050565b6000815190506146dc8161304f565b92915050565b6000806000606084860312156146fb576146fa612fdd565b5b6000614709868287016146cd565b935050602061471a868287016146cd565b925050604061472b868287016146cd565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061476b601d83612f2c565b915061477682614735565b602082019050919050565b6000602082019050818103600083015261479a8161475e565b9050919050565b600081905092915050565b50565b60006147bc6000836147a1565b91506147c7826147ac565b600082019050919050565b60006147dd826147af565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614843603a83612f2c565b915061484e826147e7565b604082019050919050565b6000602082019050818103600083015261487281614836565b905091905056fea2646970667358221220cc739c672b866ed7cfb672a5c1d334509ed2425786c0f6446404103b99ca735464736f6c63430008130033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80638a8c523c11610123578063ad3026e4116100ab578063e0eb9cb31161006f578063e0eb9cb3146107ca578063ea2f0b37146107f5578063f2fde38b1461081e578063f887ea4014610847578063fc962edb1461087257610225565b8063ad3026e4146106d3578063beffc7d4146106fc578063c5d32bb214610725578063d256413e14610762578063dd62ed3e1461078d57610225565b8063a1e71b57116100f2578063a1e71b57146105ee578063a40f0ce714610617578063a457c2d71461062e578063a8aa1b311461066b578063a9059cbb1461069657610225565b80638a8c523c146105585780638cd4426d1461056f5780638da5cb5b1461059857806395d89b41146105c357610225565b8063437823ec116101a6578063610e34b911610175578063610e34b91461048557806370a08231146104ae578063715018a6146104eb57806375f0a8741461050257806385141a771461052d57610225565b8063437823ec146103df5780634ada218b146104085780635ae34339146104335780635d098b381461045c57610225565b80631d5dace3116101ed5780631d5dace3146102e657806323b872dd1461030f57806329b8cff31461034c578063313ce5671461037757806339509351146103a257610225565b806306fdde031461022a578063095ea7b3146102555780631340538f1461029257806318160ddd146102bb57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f61089d565b60405161024c9190612fb1565b60405180910390f35b34801561026157600080fd5b5061027c6004803603810190610277919061307b565b61092f565b60405161028991906130d6565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b4919061311d565b61094d565b005b3480156102c757600080fd5b506102d06109e6565b6040516102dd9190613159565b60405180910390f35b3480156102f257600080fd5b5061030d60048036038101906103089190613174565b6109f0565b005b34801561031b57600080fd5b50610336600480360381019061033191906131b4565b610b43565b60405161034391906130d6565b60405180910390f35b34801561035857600080fd5b50610361610c44565b60405161036e9190613159565b60405180910390f35b34801561038357600080fd5b5061038c610c4a565b6040516103999190613223565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c4919061307b565b610c53565b6040516103d691906130d6565b60405180910390f35b3480156103eb57600080fd5b506104066004803603810190610401919061323e565b610cff565b005b34801561041457600080fd5b5061041d610dd6565b60405161042a91906130d6565b60405180910390f35b34801561043f57600080fd5b5061045a6004803603810190610455919061326b565b610de9565b005b34801561046857600080fd5b50610483600480360381019061047e919061323e565b610ec0565b005b34801561049157600080fd5b506104ac60048036038101906104a79190613174565b6110b5565b005b3480156104ba57600080fd5b506104d560048036038101906104d0919061323e565b611182565b6040516104e29190613159565b60405180910390f35b3480156104f757600080fd5b506105006111ca565b005b34801561050e57600080fd5b50610517611252565b60405161052491906132ba565b60405180910390f35b34801561053957600080fd5b50610542611278565b60405161054f91906132ba565b60405180910390f35b34801561056457600080fd5b5061056d61127e565b005b34801561057b57600080fd5b506105966004803603810190610591919061307b565b611367565b005b3480156105a457600080fd5b506105ad6114db565b6040516105ba91906132ba565b60405180910390f35b3480156105cf57600080fd5b506105d8611505565b6040516105e59190612fb1565b60405180910390f35b3480156105fa57600080fd5b506106156004803603810190610610919061341d565b611597565b005b34801561062357600080fd5b5061062c6116a8565b005b34801561063a57600080fd5b506106556004803603810190610650919061307b565b61177a565b60405161066291906130d6565b60405180910390f35b34801561067757600080fd5b5061068061186e565b60405161068d91906132ba565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b8919061307b565b611894565b6040516106ca91906130d6565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f59190613174565b6118ab565b005b34801561070857600080fd5b50610723600480360381019061071e9190613174565b611a38565b005b34801561073157600080fd5b5061074c6004803603810190610747919061323e565b611b05565b60405161075991906130d6565b60405180910390f35b34801561076e57600080fd5b50610777611b25565b6040516107849190613159565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af9190613479565b611b2b565b6040516107c19190613159565b60405180910390f35b3480156107d657600080fd5b506107df611bb2565b6040516107ec9190613159565b60405180910390f35b34801561080157600080fd5b5061081c6004803603810190610817919061323e565b611bb8565b005b34801561082a57600080fd5b506108456004803603810190610840919061323e565b611c8f565b005b34801561085357600080fd5b5061085c611d86565b6040516108699190613518565b60405180910390f35b34801561087e57600080fd5b50610887611dac565b6040516108949190613159565b60405180910390f35b6060600380546108ac90613562565b80601f01602080910402602001604051908101604052809291908181526020018280546108d890613562565b80156109255780601f106108fa57610100808354040283529160200191610925565b820191906000526020600020905b81548152906001019060200180831161090857829003601f168201915b5050505050905090565b600061094361093c611db2565b8484611dba565b6001905092915050565b610955611db2565b73ffffffffffffffffffffffffffffffffffffffff166109736114db565b73ffffffffffffffffffffffffffffffffffffffff16146109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c0906135df565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b6109f8611db2565b73ffffffffffffffffffffffffffffffffffffffff16610a166114db565b73ffffffffffffffffffffffffffffffffffffffff1614610a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a63906135df565b60405180910390fd5b612710821115610ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa890613671565b60405180910390fd5b6064811015610af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aec90613703565b60405180910390fd5b610afd610c4a565b600a610b099190613885565b82610b1491906138d0565b600881905550610b22610c4a565b600a610b2e9190613885565b81610b3991906138d0565b6009819055505050565b6000610b50848484611f83565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b9b611db2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1290613984565b60405180910390fd5b610c3885610c27611db2565b8584610c3391906139a4565b611dba565b60019150509392505050565b600b5481565b60006012905090565b6000610cf5610c60611db2565b848460016000610c6e611db2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf091906139d8565b611dba565b6001905092915050565b610d07611db2565b73ffffffffffffffffffffffffffffffffffffffff16610d256114db565b73ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d72906135df565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600760169054906101000a900460ff1681565b610df1611db2565b73ffffffffffffffffffffffffffffffffffffffff16610e0f6114db565b73ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c906135df565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610ec8611db2565b73ffffffffffffffffffffffffffffffffffffffff16610ee66114db565b73ffffffffffffffffffffffffffffffffffffffff1614610f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f33906135df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa290613a7e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090613aea565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110bd611db2565b73ffffffffffffffffffffffffffffffffffffffff166110db6114db565b73ffffffffffffffffffffffffffffffffffffffff1614611131576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611128906135df565b60405180910390fd5b81600d6000018190555080600d600101819055507fa2b219a42aa557965901397e42601390282bb6828cabbd7675dca50ba6aa62ca8282604051611176929190613b0a565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111d2611db2565b73ffffffffffffffffffffffffffffffffffffffff166111f06114db565b73ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d906135df565b60405180910390fd5b6112506000612636565b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b611286611db2565b73ffffffffffffffffffffffffffffffffffffffff166112a46114db565b73ffffffffffffffffffffffffffffffffffffffff16146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f1906135df565b60405180910390fd5b600760169054906101000a900460ff161561134a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134190613b7f565b60405180910390fd5b6001600760166101000a81548160ff021916908315150217905550565b61136f611db2565b73ffffffffffffffffffffffffffffffffffffffff1661138d6114db565b73ffffffffffffffffffffffffffffffffffffffff16146113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da906135df565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890613c11565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114756114db565b836040518363ffffffff1660e01b8152600401611493929190613c31565b6020604051808303816000875af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190613c6f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461151490613562565b80601f016020809104026020016040519081016040528092919081815260200182805461154090613562565b801561158d5780601f106115625761010080835404028352916020019161158d565b820191906000526020600020905b81548152906001019060200180831161157057829003601f168201915b5050505050905090565b61159f611db2565b73ffffffffffffffffffffffffffffffffffffffff166115bd6114db565b73ffffffffffffffffffffffffffffffffffffffff1614611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160a906135df565b60405180910390fd5b60005b82518110156116a357816014600085848151811061163757611636613c9c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061169b90613ccb565b915050611616565b505050565b6116b0611db2565b73ffffffffffffffffffffffffffffffffffffffff166116ce6114db565b73ffffffffffffffffffffffffffffffffffffffff1614611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b906135df565b60405180910390fd5b60004790506117316114db565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611776573d6000803e3d6000fd5b5050565b60008060016000611789611db2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d90613d85565b60405180910390fd5b611863611851611db2565b85858461185e91906139a4565b611dba565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006118a1338484611f83565b6001905092915050565b6118b3611db2565b73ffffffffffffffffffffffffffffffffffffffff166118d16114db565b73ffffffffffffffffffffffffffffffffffffffff1614611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e906135df565b60405180910390fd5b61192f610c4a565b600a61193b9190613885565b8261194691906138d0565b600b81905550611954610c4a565b600a6119609190613885565b8161196b91906138d0565b600a819055506103e88210156119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90613e17565b60405180910390fd5b6103e88110156119fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f290613ea9565b60405180910390fd5b7f202f4712f0dae21d708451caa16ed4b41cb5c9974ab3d34d1f1dc4dfc5a222db8282604051611a2c929190613b0a565b60405180910390a15050565b611a40611db2565b73ffffffffffffffffffffffffffffffffffffffff16611a5e6114db565b73ffffffffffffffffffffffffffffffffffffffff1614611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab906135df565b60405180910390fd5b81600f6000018190555080600f600101819055507f7873124e0d91bc71776e2961704366640b879893d05157d7bfa606dd9e58227d8282604051611af9929190613b0a565b60405180910390a15050565b60136020528060005260406000206000915054906101000a900460ff1681565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b611bc0611db2565b73ffffffffffffffffffffffffffffffffffffffff16611bde6114db565b73ffffffffffffffffffffffffffffffffffffffff1614611c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2b906135df565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611c97611db2565b73ffffffffffffffffffffffffffffffffffffffff16611cb56114db565b73ffffffffffffffffffffffffffffffffffffffff1614611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d02906135df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7190613f3b565b60405180910390fd5b611d8381612636565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090613fcd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f9061405f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f769190613159565b60405180910390a3505050565b60008111611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd906140f1565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561206a5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a09061415d565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561214d5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121a257600760169054906101000a900460ff166121a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612198906141c9565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561224d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122a35750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561234657600a548111156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e490614235565b60405180910390fd5b600b54816122fa84611182565b61230491906139d8565b1115612345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233c906142a1565b60405180910390fd5b5b6000806000612353612f07565b600760149054906101000a900460ff16806123b75750601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061240b5750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124195760009150612547565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036124b157600f60000154600f6001015461248491906139d8565b9350839250600f604051806040016040529081600082015481526020016001820154815250509050612546565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461254557600d60000154600d6001015461251c91906139d8565b9350839250600d6040518060400160405290816000820154815260200160018201548152505090505b5b5b6064838661255591906138d0565b61255f91906142f0565b9150600760159054906101000a900460ff1680156125cb5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156125db576125da84826126fc565b5b6125f1878784886125ec91906139a4565b61287e565b600082111561262d57600084111561262c5760006064858761261391906138d0565b61261d91906142f0565b905061262a88308361287e565b505b5b50505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff1661287a576001600760146101000a81548160ff021916908315150217905550600082031561285e57600061273f30611182565b9050600954811061285c57600060028461275991906138d0565b905060008184602001518461276e91906138d0565b61277891906142f0565b9050600047905061278884612af0565b6000814761279691906139a4565b905060008660200151856127aa91906139a4565b826127b591906142f0565b905060008760200151826127c991906138d0565b905060008111156127df576127de8582612d33565b5b600088600001516002846127f391906138d0565b6127fd91906138d0565b905060008111156128545761285381600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e1390919063ffffffff16565b5b505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e490614393565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361295c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295390614425565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d9906144b7565b60405180910390fd5b81816129ee91906139a4565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a7e91906139d8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ae29190613159565b60405180910390a350505050565b6000600267ffffffffffffffff811115612b0d57612b0c6132da565b5b604051908082528060200260200182016040528015612b3b5781602001602082028036833780820191505090505b5090503081600081518110612b5357612b52613c9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1e91906144ec565b81600181518110612c3257612c31613c9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c9930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611dba565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cfd959493929190614612565b600060405180830381600087803b158015612d1757600080fd5b505af1158015612d2b573d6000803e3d6000fd5b505050505050565b612d6030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611dba565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612dc99695949392919061466c565b60606040518083038185885af1158015612de7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e0c91906146e2565b5050505050565b80471015612e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4d90614781565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612e7c906147d2565b60006040518083038185875af1925050503d8060008114612eb9576040519150601f19603f3d011682016040523d82523d6000602084013e612ebe565b606091505b5050905080612f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef990614859565b60405180910390fd5b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f5b578082015181840152602081019050612f40565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f8382612f21565b612f8d8185612f2c565b9350612f9d818560208601612f3d565b612fa681612f67565b840191505092915050565b60006020820190508181036000830152612fcb8184612f78565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061301282612fe7565b9050919050565b61302281613007565b811461302d57600080fd5b50565b60008135905061303f81613019565b92915050565b6000819050919050565b61305881613045565b811461306357600080fd5b50565b6000813590506130758161304f565b92915050565b6000806040838503121561309257613091612fdd565b5b60006130a085828601613030565b92505060206130b185828601613066565b9150509250929050565b60008115159050919050565b6130d0816130bb565b82525050565b60006020820190506130eb60008301846130c7565b92915050565b6130fa816130bb565b811461310557600080fd5b50565b600081359050613117816130f1565b92915050565b60006020828403121561313357613132612fdd565b5b600061314184828501613108565b91505092915050565b61315381613045565b82525050565b600060208201905061316e600083018461314a565b92915050565b6000806040838503121561318b5761318a612fdd565b5b600061319985828601613066565b92505060206131aa85828601613066565b9150509250929050565b6000806000606084860312156131cd576131cc612fdd565b5b60006131db86828701613030565b93505060206131ec86828701613030565b92505060406131fd86828701613066565b9150509250925092565b600060ff82169050919050565b61321d81613207565b82525050565b60006020820190506132386000830184613214565b92915050565b60006020828403121561325457613253612fdd565b5b600061326284828501613030565b91505092915050565b6000806040838503121561328257613281612fdd565b5b600061329085828601613030565b92505060206132a185828601613108565b9150509250929050565b6132b481613007565b82525050565b60006020820190506132cf60008301846132ab565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61331282612f67565b810181811067ffffffffffffffff82111715613331576133306132da565b5b80604052505050565b6000613344612fd3565b90506133508282613309565b919050565b600067ffffffffffffffff8211156133705761336f6132da565b5b602082029050602081019050919050565b600080fd5b600061339961339484613355565b61333a565b905080838252602082019050602084028301858111156133bc576133bb613381565b5b835b818110156133e557806133d18882613030565b8452602084019350506020810190506133be565b5050509392505050565b600082601f830112613404576134036132d5565b5b8135613414848260208601613386565b91505092915050565b6000806040838503121561343457613433612fdd565b5b600083013567ffffffffffffffff81111561345257613451612fe2565b5b61345e858286016133ef565b925050602061346f85828601613108565b9150509250929050565b600080604083850312156134905761348f612fdd565b5b600061349e85828601613030565b92505060206134af85828601613030565b9150509250929050565b6000819050919050565b60006134de6134d96134d484612fe7565b6134b9565b612fe7565b9050919050565b60006134f0826134c3565b9050919050565b6000613502826134e5565b9050919050565b613512816134f7565b82525050565b600060208201905061352d6000830184613509565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061357a57607f821691505b60208210810361358d5761358c613533565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135c9602083612f2c565b91506135d482613593565b602082019050919050565b600060208201905081810360008301526135f8816135bc565b9050919050565b7f6d757374206b656570206d6178205468726573686f6c64206174203125206f7260008201527f206c657373000000000000000000000000000000000000000000000000000000602082015250565b600061365b602583612f2c565b9150613666826135ff565b604082019050919050565b6000602082019050818103600083015261368a8161364e565b9050919050565b7f6d696e205468726573686f6c64206d757374206265206772656174657220746860008201527f616e206f7220657175616c20746f20302e303125000000000000000000000000602082015250565b60006136ed603483612f2c565b91506136f882613691565b604082019050919050565b6000602082019050818103600083015261371c816136e0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156137a95780860481111561378557613784613723565b5b60018516156137945780820291505b80810290506137a285613752565b9450613769565b94509492505050565b6000826137c2576001905061387e565b816137d0576000905061387e565b81600181146137e657600281146137f05761381f565b600191505061387e565b60ff84111561380257613801613723565b5b8360020a91508482111561381957613818613723565b5b5061387e565b5060208310610133831016604e8410600b84101617156138545782820a90508381111561384f5761384e613723565b5b61387e565b613861848484600161375f565b9250905081840481111561387857613877613723565b5b81810290505b9392505050565b600061389082613045565b915061389b83613207565b92506138c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137b2565b905092915050565b60006138db82613045565b91506138e683613045565b92508282026138f481613045565b9150828204841483151761390b5761390a613723565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061396e602883612f2c565b915061397982613912565b604082019050919050565b6000602082019050818103600083015261399d81613961565b9050919050565b60006139af82613045565b91506139ba83613045565b92508282039050818111156139d2576139d1613723565b5b92915050565b60006139e382613045565b91506139ee83613045565b9250828201905080821115613a0657613a05613723565b5b92915050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a68602283612f2c565b9150613a7382613a0c565b604082019050919050565b60006020820190508181036000830152613a9781613a5b565b9050919050565b7f46656520416464726573732063616e6e6f742062652043410000000000000000600082015250565b6000613ad4601883612f2c565b9150613adf82613a9e565b602082019050919050565b60006020820190508181036000830152613b0381613ac7565b9050919050565b6000604082019050613b1f600083018561314a565b613b2c602083018461314a565b9392505050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b6000613b69601883612f2c565b9150613b7482613b33565b602082019050919050565b60006020820190508181036000830152613b9881613b5c565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613bfb603683612f2c565b9150613c0682613b9f565b604082019050919050565b60006020820190508181036000830152613c2a81613bee565b9050919050565b6000604082019050613c4660008301856132ab565b613c53602083018461314a565b9392505050565b600081519050613c69816130f1565b92915050565b600060208284031215613c8557613c84612fdd565b5b6000613c9384828501613c5a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613cd682613045565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d0857613d07613723565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613d6f602583612f2c565b9150613d7a82613d13565b604082019050919050565b60006020820190508181036000830152613d9e81613d62565b9050919050565b7f43616e6e6f7420736574204d617857616c6c657420616d6f756e74206c6f776560008201527f72207468656e20302e3125000000000000000000000000000000000000000000602082015250565b6000613e01602b83612f2c565b9150613e0c82613da5565b604082019050919050565b60006020820190508181036000830152613e3081613df4565b9050919050565b7f43616e6e6f7420736574204d6178547820616d6f756e74206c6f77657220746860008201527f656e20302e312500000000000000000000000000000000000000000000000000602082015250565b6000613e93602783612f2c565b9150613e9e82613e37565b604082019050919050565b60006020820190508181036000830152613ec281613e86565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f25602683612f2c565b9150613f3082613ec9565b604082019050919050565b60006020820190508181036000830152613f5481613f18565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613fb7602483612f2c565b9150613fc282613f5b565b604082019050919050565b60006020820190508181036000830152613fe681613faa565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614049602283612f2c565b915061405482613fed565b604082019050919050565b600060208201905081810360008301526140788161403c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006140db602983612f2c565b91506140e68261407f565b604082019050919050565b6000602082019050818103600083015261410a816140ce565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000614147601983612f2c565b915061415282614111565b602082019050919050565b600060208201905081810360008301526141768161413a565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006141b3601383612f2c565b91506141be8261417d565b602082019050919050565b600060208201905081810360008301526141e2816141a6565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b600061421f601983612f2c565b915061422a826141e9565b602082019050919050565b6000602082019050818103600083015261424e81614212565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b600061428b601a83612f2c565b915061429682614255565b602082019050919050565b600060208201905081810360008301526142ba8161427e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006142fb82613045565b915061430683613045565b925082614316576143156142c1565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061437d602583612f2c565b915061438882614321565b604082019050919050565b600060208201905081810360008301526143ac81614370565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061440f602383612f2c565b915061441a826143b3565b604082019050919050565b6000602082019050818103600083015261443e81614402565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144a1602683612f2c565b91506144ac82614445565b604082019050919050565b600060208201905081810360008301526144d081614494565b9050919050565b6000815190506144e681613019565b92915050565b60006020828403121561450257614501612fdd565b5b6000614510848285016144d7565b91505092915050565b6000819050919050565b600061453e61453961453484614519565b6134b9565b613045565b9050919050565b61454e81614523565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61458981613007565b82525050565b600061459b8383614580565b60208301905092915050565b6000602082019050919050565b60006145bf82614554565b6145c9818561455f565b93506145d483614570565b8060005b838110156146055781516145ec888261458f565b97506145f7836145a7565b9250506001810190506145d8565b5085935050505092915050565b600060a082019050614627600083018861314a565b6146346020830187614545565b818103604083015261464681866145b4565b905061465560608301856132ab565b614662608083018461314a565b9695505050505050565b600060c08201905061468160008301896132ab565b61468e602083018861314a565b61469b6040830187614545565b6146a86060830186614545565b6146b560808301856132ab565b6146c260a083018461314a565b979650505050505050565b6000815190506146dc8161304f565b92915050565b6000806000606084860312156146fb576146fa612fdd565b5b6000614709868287016146cd565b935050602061471a868287016146cd565b925050604061472b868287016146cd565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061476b601d83612f2c565b915061477682614735565b602082019050919050565b6000602082019050818103600083015261479a8161475e565b9050919050565b600081905092915050565b50565b60006147bc6000836147a1565b91506147c7826147ac565b600082019050919050565b60006147dd826147af565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614843603a83612f2c565b915061484e826147e7565b604082019050919050565b6000602082019050818103600083015261487281614836565b905091905056fea2646970667358221220cc739c672b866ed7cfb672a5c1d334509ed2425786c0f6446404103b99ca735464736f6c63430008130033

Deployed Bytecode Sourcemap

12346:10667:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2545:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14326:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20126:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3665;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20247:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14527:485;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12789:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3507:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15020:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22317:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12568:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22189:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21658:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20630:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3836:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10953:94;;;;;;;;;;;;;:::i;:::-;;12853:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12935:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21500:147;;;;;;;;;;;;;:::i;:::-;;22717:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10730:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2764:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21973:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22544:165;;;;;;;;;;;;;:::i;:::-;;15326:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12457:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15743:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21099:389;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20858:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13339:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12733:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4505:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13196:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22431:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11055:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12429:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13262:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2545:100;2599:13;2632:5;2625:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2545:100;:::o;14326:193::-;14428:4;14450:39;14459:12;:10;:12::i;:::-;14473:7;14482:6;14450:8;:39::i;:::-;14507:4;14500:11;;14326:193;;;;:::o;20126:108::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20221:5:::1;20200:18;;:26;;;;;;;;;;;;;;;;;;20126:108:::0;:::o;3665:::-;3726:7;3753:12;;3746:19;;3665:108;:::o;20247:371::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20364:5:::1;20350:10;:19;;20342:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20445:3;20431:10;:17;;20423:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;20548:10;:8;:10::i;:::-;20544:2;:14;;;;:::i;:::-;20531:10;:27;;;;:::i;:::-;20516:12;:42;;;;20600:10;:8;:10::i;:::-;20596:2;:14;;;;:::i;:::-;20583:10;:27;;;;:::i;:::-;20569:11;:41;;;;20247:371:::0;;:::o;14527:485::-;14659:4;14676:36;14686:6;14694:9;14705:6;14676:9;:36::i;:::-;14725:24;14752:11;:19;14764:6;14752:19;;;;;;;;;;;;;;;:33;14772:12;:10;:12::i;:::-;14752:33;;;;;;;;;;;;;;;;14725:60;;14838:6;14818:16;:26;;14796:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;14923:57;14932:6;14940:12;:10;:12::i;:::-;14973:6;14954:16;:25;;;;:::i;:::-;14923:8;:57::i;:::-;15000:4;14993:11;;;14527:485;;;;;:::o;12789:45::-;;;;:::o;3507:93::-;3565:5;3590:2;3583:9;;3507:93;:::o;15020:298::-;15136:4;15158:130;15181:12;:10;:12::i;:::-;15208:7;15267:10;15230:11;:25;15242:12;:10;:12::i;:::-;15230:25;;;;;;;;;;;;;;;:34;15256:7;15230:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;15158:8;:130::i;:::-;15306:4;15299:11;;15020:298;;;;:::o;22317:106::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22411:4:::1;22389:9;:19;22399:8;22389:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;22317:106:::0;:::o;12568:34::-;;;;;;;;;;;;;:::o;22189:117::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22293:5:::1;22269:12;:21;22282:7;22269:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;22189:117:::0;;:::o;21658:305::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21764:1:::1;21743:23;;:9;:23;;::::0;21735:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21845:4;21824:26;;:9;:26;;::::0;21816:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21913:4;21890:9;:20;21900:9;21890:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21946:9;21928:15;;:27;;;;;;;;;;;;;;;;;;21658:305:::0;:::o;20630:220::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20741:10:::1;20723:5;:15;;:28;;;;20780:10;20762:5;:15;;:28;;;;20803:39;20819:10;20831;20803:39;;;;;;;:::i;:::-;;;;;;;;20630:220:::0;;:::o;3836:177::-;3955:7;3987:9;:18;3997:7;3987:18;;;;;;;;;;;;;;;;3980:25;;3836:177;;;:::o;10953:94::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11018:21:::1;11036:1;11018:9;:21::i;:::-;10953:94::o:0;12853:75::-;;;;;;;;;;;;;:::o;12935:79::-;12972:42;12935:79;:::o;21500:147::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21564:14:::1;;;;;;;;;;;21563:15;21555:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;21635:4;21618:14;;:21;;;;;;;;;;;;;;;;;;21500:147::o:0;22717:238::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22830:4:::1;22810:25;;:8;:25;;::::0;22802:92:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22912:8;22905:25;;;22931:7;:5;:7::i;:::-;22940:6;22905:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22717:238:::0;;:::o;10730:87::-;10776:7;10803:6;;;;;;;;;;;10796:13;;10730:87;:::o;2764:104::-;2820:13;2853:7;2846:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2764:104;:::o;21973:208::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22073:9:::1;22068:106;22092:8;:15;22088:1;:19;22068:106;;;22157:5;22129:12;:25;22142:8;22151:1;22142:11;;;;;;;;:::i;:::-;;;;;;;;22129:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22109:3;;;;;:::i;:::-;;;;22068:106;;;;21973:208:::0;;:::o;22544:165::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22595:26:::1;22624:21;22595:50;;22664:7;:5;:7::i;:::-;22656:25;;:45;22682:18;22656:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22584:125;22544:165::o:0;15326:409::-;15447:4;15469:24;15496:11;:25;15508:12;:10;:12::i;:::-;15496:25;;;;;;;;;;;;;;;:34;15522:7;15496:34;;;;;;;;;;;;;;;;15469:61;;15569:15;15549:16;:35;;15541:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;15636:67;15645:12;:10;:12::i;:::-;15659:7;15687:15;15668:16;:34;;;;:::i;:::-;15636:8;:67::i;:::-;15723:4;15716:11;;;15326:409;;;;:::o;12457:19::-;;;;;;;;;;;;;:::o;15743:197::-;15848:4;15870:40;15880:10;15892:9;15903:6;15870:9;:40::i;:::-;15928:4;15921:11;;15743:197;;;;:::o;21099:389::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21221:10:::1;:8;:10::i;:::-;21217:2;:14;;;;:::i;:::-;21204:10;:27;;;;:::i;:::-;21188:13;:43;;;;21270:10;:8;:10::i;:::-;21266:2;:14;;;;:::i;:::-;21257:6;:23;;;;:::i;:::-;21243:11;:37;;;;21310:4;21296:10;:18;;21287:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21388:4;21378:6;:14;;21369:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21448:32;21461:10;21473:6;21448:32;;;;;;;:::i;:::-;;;;;;;;21099:389:::0;;:::o;20858:229::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20974:10:::1;20952:9;:19;;:32;;;;21017:10;20995:9;:19;;:32;;;;21039:40;21056:10;21068;21039:40;;;;;;;:::i;:::-;;;;;;;;20858:229:::0;;:::o;13339:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;12733:43::-;;;;:::o;4505:201::-;4639:7;4671:11;:18;4683:5;4671:18;;;;;;;;;;;;;;;:27;4690:7;4671:27;;;;;;;;;;;;;;;;4664:34;;4505:201;;;;:::o;13196:59::-;;;;:::o;22431:105::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22523:5:::1;22501:9;:19;22511:8;22501:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22431:105:::0;:::o;11055:229::-;10876:12;:10;:12::i;:::-;10865:23;;:7;:5;:7::i;:::-;:23;;;10857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11178:1:::1;11158:22;;:8;:22;;::::0;11136:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11257:19;11267:8;11257:9;:19::i;:::-;11055:229:::0;:::o;12429:21::-;;;;;;;;;;;;;:::o;13262:68::-;;;;:::o;188:98::-;241:7;268:10;261:17;;188:98;:::o;9666:380::-;9819:1;9802:19;;:5;:19;;;9794:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9900:1;9881:21;;:7;:21;;;9873:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9984:6;9954:11;:18;9966:5;9954:18;;;;;;;;;;;;;;;:27;9973:7;9954:27;;;;;;;;;;;;;;;:36;;;;10022:7;10006:32;;10015:5;10006:32;;;10031:6;10006:32;;;;;;:::i;:::-;;;;;;;;9666:380;;;:::o;15948:1985::-;16064:1;16055:6;:10;16047:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16132:12;:20;16145:6;16132:20;;;;;;;;;;;;;;;;;;;;;;;;;16131:21;:49;;;;;16157:12;:23;16170:9;16157:23;;;;;;;;;;;;;;;;;;;;;;;;;16156:24;16131:49;16123:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;16256:9;:17;16266:6;16256:17;;;;;;;;;;;;;;;;;;;;;;;;;16255:18;:43;;;;;16278:9;:20;16288:9;16278:20;;;;;;;;;;;;;;;;;;;;;;;;;16277:21;16255:43;16251:122;;;16323:14;;;;;;;;;;;16315:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16251:122;16407:4;;;;;;;;;;;16397:14;;:6;:14;;;:46;;;;;16436:6;;;;;;;;;;;16415:28;;:9;:28;;;;16397:46;:71;;;;;16448:9;:20;16458:9;16448:20;;;;;;;;;;;;;;;;;;;;;;;;;16447:21;16397:71;16393:294;;;16508:11;;16498:6;:21;;16490:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16609:13;;16599:6;16576:20;16586:9;16576;:20::i;:::-;:29;;;;:::i;:::-;:46;;16568:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;16393:294;16697:15;16723:14;16748:11;16770:25;;:::i;:::-;16883:10;;;;;;;;;;;:31;;;;16897:9;:17;16907:6;16897:17;;;;;;;;;;;;;;;;;;;;;;;;;16883:31;:55;;;;16918:9;:20;16928:9;16918:20;;;;;;;;;;;;;;;;;;;;;;;;;16883:55;16879:464;;;16959:1;16953:7;;16879:464;;;17024:4;;;;;;;;;;;17011:17;;:9;:17;;;17007:336;;17077:9;:19;;;17055:9;:19;;;:41;;;;:::i;:::-;17045:51;;17120:7;17111:16;;17157:9;17142:24;;;;;;;;;;;;;;;;;;;;;;;;;;;17007:336;;;17201:4;;;;;;;;;;;17188:17;;:9;:17;;;17184:159;;17250:5;:15;;;17232:5;:15;;;:33;;;;:::i;:::-;17222:43;;17289:7;17280:16;;17326:5;17311:20;;;;;;;;;;;;;;;;;;;;;;;;;;;17184:159;17007:336;16879:464;17382:3;17372:6;17363;:15;;;;:::i;:::-;17362:23;;;;:::i;:::-;17356:29;;17499:18;;;;;;;;;;;:36;;;;;17531:4;;;;;;;;;;;17521:14;;:6;:14;;;;17499:36;17495:85;;;17550:30;17558:7;17567:12;17550:7;:30::i;:::-;17495:85;17622:48;17638:6;17646:9;17666:3;17657:6;:12;;;;:::i;:::-;17622:15;:48::i;:::-;17691:1;17685:3;:7;17681:247;;;17767:1;17757:7;:11;17753:164;;;17789:17;17830:3;17819:7;17810:6;:16;;;;:::i;:::-;17809:24;;;;:::i;:::-;17789:44;;17852:49;17868:6;17884:4;17891:9;17852:15;:49::i;:::-;17770:147;17753:164;17681:247;16036:1897;;;;15948:1985;;;:::o;11292:173::-;11348:16;11367:6;;;;;;;;;;;11348:25;;11393:8;11384:6;;:17;;;;;;;;;;;;;;;;;;11448:8;11417:40;;11438:8;11417:40;;;;;;;;;;;;11337:128;11292:173;:::o;17941:1282::-;13688:10;;;;;;;;;;;13683:110;;13728:4;13715:10;;:17;;;;;;;;;;;;;;;;;;18045:1:::1;18034:7;:12:::0;18030:51;18063:7:::1;18030:51;18093:23;18119:24;18137:4;18119:9;:24::i;:::-;18093:50;;18177:11;;18158:15;:30;18154:1062;;18328:19;18360:1;18350:7;:11;;;;:::i;:::-;18328:33;;18376:32;18453:11;18430:9;:19;;;18412:15;:37;;;;:::i;:::-;18411:53;;;;:::i;:::-;18376:88;;18479:22;18504:21;18479:46;;18542:33;18559:15;18542:16;:33::i;:::-;18592:20;18639:14;18615:21;:38;;;;:::i;:::-;18592:61;;18668:19;18720:9;:19;;;18706:11;:33;;;;:::i;:::-;18690:12;:50;;;;:::i;:::-;18668:72;;18755:29;18801:9;:19;;;18787:11;:33;;;;:::i;:::-;18755:65;;18865:1;18841:21;:25;18837:172;;;18932:61;18945:24;18971:21;18932:12;:61::i;:::-;18837:172;19025:20;19066:9;:19;;;19062:1;19048:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;19025:60;;19119:1;19104:12;:16;19100:105;;;19141:48;19176:12;19149:15;;;;;;;;;;;19141:34;;;;:48;;;;:::i;:::-;19100:105;18190:1026;;;;;;;18154:1062;18019:1204;13747:1;13776:5:::0;13763:10;;:18;;;;;;;;;;;;;;;;;;13683:110;17941:1282;;:::o;8183:615::-;8341:1;8323:20;;:6;:20;;;8315:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8425:1;8404:23;;:9;:23;;;8396:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8480:21;8504:9;:17;8514:6;8504:17;;;;;;;;;;;;;;;;8480:41;;8571:6;8554:13;:23;;8532:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8690:6;8674:13;:22;;;;:::i;:::-;8654:9;:17;8664:6;8654:17;;;;;;;;;;;;;;;:42;;;;8731:6;8707:9;:20;8717:9;8707:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8772:9;8755:35;;8764:6;8755:35;;;8783:6;8755:35;;;;;;:::i;:::-;;;;;;;;8304:494;8183:615;;;:::o;19231:448::-;19297:21;19335:1;19321:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19297:40;;19366:4;19348;19353:1;19348:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19392:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19382:4;19387:1;19382:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19418:53;19435:4;19450:6;;;;;;;;;;;19459:11;19418:8;:53::i;:::-;19484:6;;;;;;;;;;;:57;;;19556:11;19582:1;19598:4;19625;19645:15;19484:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19286:393;19231:448;:::o;19687:431::-;19768:53;19785:4;19800:6;;;;;;;;;;;19809:11;19768:8;:53::i;:::-;19864:6;;;;;;;;;;;:22;;;19894:9;19927:4;19947:11;19973:1;20016;12972:42;20084:15;19864:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19687:431;;:::o;10076:391::-;10205:6;10180:21;:31;;10158:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10282:12;10300:9;:14;;10322:6;10300:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10281:52;;;10366:7;10344:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;10147:320;10076:391;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:474::-;4456:6;4464;4513:2;4501:9;4492:7;4488:23;4484:32;4481:119;;;4519:79;;:::i;:::-;4481:119;4639:1;4664:53;4709:7;4700:6;4689:9;4685:22;4664:53;:::i;:::-;4654:63;;4610:117;4766:2;4792:53;4837:7;4828:6;4817:9;4813:22;4792:53;:::i;:::-;4782:63;;4737:118;4388:474;;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:468::-;6323:6;6331;6380:2;6368:9;6359:7;6355:23;6351:32;6348:119;;;6386:79;;:::i;:::-;6348:119;6506:1;6531:53;6576:7;6567:6;6556:9;6552:22;6531:53;:::i;:::-;6521:63;;6477:117;6633:2;6659:50;6701:7;6692:6;6681:9;6677:22;6659:50;:::i;:::-;6649:60;;6604:115;6258:468;;;;;:::o;6732:118::-;6819:24;6837:5;6819:24;:::i;:::-;6814:3;6807:37;6732:118;;:::o;6856:222::-;6949:4;6987:2;6976:9;6972:18;6964:26;;7000:71;7068:1;7057:9;7053:17;7044:6;7000:71;:::i;:::-;6856:222;;;;:::o;7084:117::-;7193:1;7190;7183:12;7207:180;7255:77;7252:1;7245:88;7352:4;7349:1;7342:15;7376:4;7373:1;7366:15;7393:281;7476:27;7498:4;7476:27;:::i;:::-;7468:6;7464:40;7606:6;7594:10;7591:22;7570:18;7558:10;7555:34;7552:62;7549:88;;;7617:18;;:::i;:::-;7549:88;7657:10;7653:2;7646:22;7436:238;7393:281;;:::o;7680:129::-;7714:6;7741:20;;:::i;:::-;7731:30;;7770:33;7798:4;7790:6;7770:33;:::i;:::-;7680:129;;;:::o;7815:311::-;7892:4;7982:18;7974:6;7971:30;7968:56;;;8004:18;;:::i;:::-;7968:56;8054:4;8046:6;8042:17;8034:25;;8114:4;8108;8104:15;8096:23;;7815:311;;;:::o;8132:117::-;8241:1;8238;8231:12;8272:710;8368:5;8393:81;8409:64;8466:6;8409:64;:::i;:::-;8393:81;:::i;:::-;8384:90;;8494:5;8523:6;8516:5;8509:21;8557:4;8550:5;8546:16;8539:23;;8610:4;8602:6;8598:17;8590:6;8586:30;8639:3;8631:6;8628:15;8625:122;;;8658:79;;:::i;:::-;8625:122;8773:6;8756:220;8790:6;8785:3;8782:15;8756:220;;;8865:3;8894:37;8927:3;8915:10;8894:37;:::i;:::-;8889:3;8882:50;8961:4;8956:3;8952:14;8945:21;;8832:144;8816:4;8811:3;8807:14;8800:21;;8756:220;;;8760:21;8374:608;;8272:710;;;;;:::o;9005:370::-;9076:5;9125:3;9118:4;9110:6;9106:17;9102:27;9092:122;;9133:79;;:::i;:::-;9092:122;9250:6;9237:20;9275:94;9365:3;9357:6;9350:4;9342:6;9338:17;9275:94;:::i;:::-;9266:103;;9082:293;9005:370;;;;:::o;9381:678::-;9471:6;9479;9528:2;9516:9;9507:7;9503:23;9499:32;9496:119;;;9534:79;;:::i;:::-;9496:119;9682:1;9671:9;9667:17;9654:31;9712:18;9704:6;9701:30;9698:117;;;9734:79;;:::i;:::-;9698:117;9839:78;9909:7;9900:6;9889:9;9885:22;9839:78;:::i;:::-;9829:88;;9625:302;9966:2;9992:50;10034:7;10025:6;10014:9;10010:22;9992:50;:::i;:::-;9982:60;;9937:115;9381:678;;;;;:::o;10065:474::-;10133:6;10141;10190:2;10178:9;10169:7;10165:23;10161:32;10158:119;;;10196:79;;:::i;:::-;10158:119;10316:1;10341:53;10386:7;10377:6;10366:9;10362:22;10341:53;:::i;:::-;10331:63;;10287:117;10443:2;10469:53;10514:7;10505:6;10494:9;10490:22;10469:53;:::i;:::-;10459:63;;10414:118;10065:474;;;;;:::o;10545:60::-;10573:3;10594:5;10587:12;;10545:60;;;:::o;10611:142::-;10661:9;10694:53;10712:34;10721:24;10739:5;10721:24;:::i;:::-;10712:34;:::i;:::-;10694:53;:::i;:::-;10681:66;;10611:142;;;:::o;10759:126::-;10809:9;10842:37;10873:5;10842:37;:::i;:::-;10829:50;;10759:126;;;:::o;10891:141::-;10956:9;10989:37;11020:5;10989:37;:::i;:::-;10976:50;;10891:141;;;:::o;11038:161::-;11140:52;11186:5;11140:52;:::i;:::-;11135:3;11128:65;11038:161;;:::o;11205:252::-;11313:4;11351:2;11340:9;11336:18;11328:26;;11364:86;11447:1;11436:9;11432:17;11423:6;11364:86;:::i;:::-;11205:252;;;;:::o;11463:180::-;11511:77;11508:1;11501:88;11608:4;11605:1;11598:15;11632:4;11629:1;11622:15;11649:320;11693:6;11730:1;11724:4;11720:12;11710:22;;11777:1;11771:4;11767:12;11798:18;11788:81;;11854:4;11846:6;11842:17;11832:27;;11788:81;11916:2;11908:6;11905:14;11885:18;11882:38;11879:84;;11935:18;;:::i;:::-;11879:84;11700:269;11649:320;;;:::o;11975:182::-;12115:34;12111:1;12103:6;12099:14;12092:58;11975:182;:::o;12163:366::-;12305:3;12326:67;12390:2;12385:3;12326:67;:::i;:::-;12319:74;;12402:93;12491:3;12402:93;:::i;:::-;12520:2;12515:3;12511:12;12504:19;;12163:366;;;:::o;12535:419::-;12701:4;12739:2;12728:9;12724:18;12716:26;;12788:9;12782:4;12778:20;12774:1;12763:9;12759:17;12752:47;12816:131;12942:4;12816:131;:::i;:::-;12808:139;;12535:419;;;:::o;12960:224::-;13100:34;13096:1;13088:6;13084:14;13077:58;13169:7;13164:2;13156:6;13152:15;13145:32;12960:224;:::o;13190:366::-;13332:3;13353:67;13417:2;13412:3;13353:67;:::i;:::-;13346:74;;13429:93;13518:3;13429:93;:::i;:::-;13547:2;13542:3;13538:12;13531:19;;13190:366;;;:::o;13562:419::-;13728:4;13766:2;13755:9;13751:18;13743:26;;13815:9;13809:4;13805:20;13801:1;13790:9;13786:17;13779:47;13843:131;13969:4;13843:131;:::i;:::-;13835:139;;13562:419;;;:::o;13987:239::-;14127:34;14123:1;14115:6;14111:14;14104:58;14196:22;14191:2;14183:6;14179:15;14172:47;13987:239;:::o;14232:366::-;14374:3;14395:67;14459:2;14454:3;14395:67;:::i;:::-;14388:74;;14471:93;14560:3;14471:93;:::i;:::-;14589:2;14584:3;14580:12;14573:19;;14232:366;;;:::o;14604:419::-;14770:4;14808:2;14797:9;14793:18;14785:26;;14857:9;14851:4;14847:20;14843:1;14832:9;14828:17;14821:47;14885:131;15011:4;14885:131;:::i;:::-;14877:139;;14604:419;;;:::o;15029:180::-;15077:77;15074:1;15067:88;15174:4;15171:1;15164:15;15198:4;15195:1;15188:15;15215:102;15257:8;15304:5;15301:1;15297:13;15276:34;;15215:102;;;:::o;15323:848::-;15384:5;15391:4;15415:6;15406:15;;15439:5;15430:14;;15453:712;15474:1;15464:8;15461:15;15453:712;;;15569:4;15564:3;15560:14;15554:4;15551:24;15548:50;;;15578:18;;:::i;:::-;15548:50;15628:1;15618:8;15614:16;15611:451;;;16043:4;16036:5;16032:16;16023:25;;15611:451;16093:4;16087;16083:15;16075:23;;16123:32;16146:8;16123:32;:::i;:::-;16111:44;;15453:712;;;15323:848;;;;;;;:::o;16177:1073::-;16231:5;16422:8;16412:40;;16443:1;16434:10;;16445:5;;16412:40;16471:4;16461:36;;16488:1;16479:10;;16490:5;;16461:36;16557:4;16605:1;16600:27;;;;16641:1;16636:191;;;;16550:277;;16600:27;16618:1;16609:10;;16620:5;;;16636:191;16681:3;16671:8;16668:17;16665:43;;;16688:18;;:::i;:::-;16665:43;16737:8;16734:1;16730:16;16721:25;;16772:3;16765:5;16762:14;16759:40;;;16779:18;;:::i;:::-;16759:40;16812:5;;;16550:277;;16936:2;16926:8;16923:16;16917:3;16911:4;16908:13;16904:36;16886:2;16876:8;16873:16;16868:2;16862:4;16859:12;16855:35;16839:111;16836:246;;;16992:8;16986:4;16982:19;16973:28;;17027:3;17020:5;17017:14;17014:40;;;17034:18;;:::i;:::-;17014:40;17067:5;;16836:246;17107:42;17145:3;17135:8;17129:4;17126:1;17107:42;:::i;:::-;17092:57;;;;17181:4;17176:3;17172:14;17165:5;17162:25;17159:51;;;17190:18;;:::i;:::-;17159:51;17239:4;17232:5;17228:16;17219:25;;16177:1073;;;;;;:::o;17256:281::-;17314:5;17338:23;17356:4;17338:23;:::i;:::-;17330:31;;17382:25;17398:8;17382:25;:::i;:::-;17370:37;;17426:104;17463:66;17453:8;17447:4;17426:104;:::i;:::-;17417:113;;17256:281;;;;:::o;17543:410::-;17583:7;17606:20;17624:1;17606:20;:::i;:::-;17601:25;;17640:20;17658:1;17640:20;:::i;:::-;17635:25;;17695:1;17692;17688:9;17717:30;17735:11;17717:30;:::i;:::-;17706:41;;17896:1;17887:7;17883:15;17880:1;17877:22;17857:1;17850:9;17830:83;17807:139;;17926:18;;:::i;:::-;17807:139;17591:362;17543:410;;;;:::o;17959:227::-;18099:34;18095:1;18087:6;18083:14;18076:58;18168:10;18163:2;18155:6;18151:15;18144:35;17959:227;:::o;18192:366::-;18334:3;18355:67;18419:2;18414:3;18355:67;:::i;:::-;18348:74;;18431:93;18520:3;18431:93;:::i;:::-;18549:2;18544:3;18540:12;18533:19;;18192:366;;;:::o;18564:419::-;18730:4;18768:2;18757:9;18753:18;18745:26;;18817:9;18811:4;18807:20;18803:1;18792:9;18788:17;18781:47;18845:131;18971:4;18845:131;:::i;:::-;18837:139;;18564:419;;;:::o;18989:194::-;19029:4;19049:20;19067:1;19049:20;:::i;:::-;19044:25;;19083:20;19101:1;19083:20;:::i;:::-;19078:25;;19127:1;19124;19120:9;19112:17;;19151:1;19145:4;19142:11;19139:37;;;19156:18;;:::i;:::-;19139:37;18989:194;;;;:::o;19189:191::-;19229:3;19248:20;19266:1;19248:20;:::i;:::-;19243:25;;19282:20;19300:1;19282:20;:::i;:::-;19277:25;;19325:1;19322;19318:9;19311:16;;19346:3;19343:1;19340:10;19337:36;;;19353:18;;:::i;:::-;19337:36;19189:191;;;;:::o;19386:221::-;19526:34;19522:1;19514:6;19510:14;19503:58;19595:4;19590:2;19582:6;19578:15;19571:29;19386:221;:::o;19613:366::-;19755:3;19776:67;19840:2;19835:3;19776:67;:::i;:::-;19769:74;;19852:93;19941:3;19852:93;:::i;:::-;19970:2;19965:3;19961:12;19954:19;;19613:366;;;:::o;19985:419::-;20151:4;20189:2;20178:9;20174:18;20166:26;;20238:9;20232:4;20228:20;20224:1;20213:9;20209:17;20202:47;20266:131;20392:4;20266:131;:::i;:::-;20258:139;;19985:419;;;:::o;20410:174::-;20550:26;20546:1;20538:6;20534:14;20527:50;20410:174;:::o;20590:366::-;20732:3;20753:67;20817:2;20812:3;20753:67;:::i;:::-;20746:74;;20829:93;20918:3;20829:93;:::i;:::-;20947:2;20942:3;20938:12;20931:19;;20590:366;;;:::o;20962:419::-;21128:4;21166:2;21155:9;21151:18;21143:26;;21215:9;21209:4;21205:20;21201:1;21190:9;21186:17;21179:47;21243:131;21369:4;21243:131;:::i;:::-;21235:139;;20962:419;;;:::o;21387:332::-;21508:4;21546:2;21535:9;21531:18;21523:26;;21559:71;21627:1;21616:9;21612:17;21603:6;21559:71;:::i;:::-;21640:72;21708:2;21697:9;21693:18;21684:6;21640:72;:::i;:::-;21387:332;;;;;:::o;21725:174::-;21865:26;21861:1;21853:6;21849:14;21842:50;21725:174;:::o;21905:366::-;22047:3;22068:67;22132:2;22127:3;22068:67;:::i;:::-;22061:74;;22144:93;22233:3;22144:93;:::i;:::-;22262:2;22257:3;22253:12;22246:19;;21905:366;;;:::o;22277:419::-;22443:4;22481:2;22470:9;22466:18;22458:26;;22530:9;22524:4;22520:20;22516:1;22505:9;22501:17;22494:47;22558:131;22684:4;22558:131;:::i;:::-;22550:139;;22277:419;;;:::o;22702:241::-;22842:34;22838:1;22830:6;22826:14;22819:58;22911:24;22906:2;22898:6;22894:15;22887:49;22702:241;:::o;22949:366::-;23091:3;23112:67;23176:2;23171:3;23112:67;:::i;:::-;23105:74;;23188:93;23277:3;23188:93;:::i;:::-;23306:2;23301:3;23297:12;23290:19;;22949:366;;;:::o;23321:419::-;23487:4;23525:2;23514:9;23510:18;23502:26;;23574:9;23568:4;23564:20;23560:1;23549:9;23545:17;23538:47;23602:131;23728:4;23602:131;:::i;:::-;23594:139;;23321:419;;;:::o;23746:332::-;23867:4;23905:2;23894:9;23890:18;23882:26;;23918:71;23986:1;23975:9;23971:17;23962:6;23918:71;:::i;:::-;23999:72;24067:2;24056:9;24052:18;24043:6;23999:72;:::i;:::-;23746:332;;;;;:::o;24084:137::-;24138:5;24169:6;24163:13;24154:22;;24185:30;24209:5;24185:30;:::i;:::-;24084:137;;;;:::o;24227:345::-;24294:6;24343:2;24331:9;24322:7;24318:23;24314:32;24311:119;;;24349:79;;:::i;:::-;24311:119;24469:1;24494:61;24547:7;24538:6;24527:9;24523:22;24494:61;:::i;:::-;24484:71;;24440:125;24227:345;;;;:::o;24578:180::-;24626:77;24623:1;24616:88;24723:4;24720:1;24713:15;24747:4;24744:1;24737:15;24764:233;24803:3;24826:24;24844:5;24826:24;:::i;:::-;24817:33;;24872:66;24865:5;24862:77;24859:103;;24942:18;;:::i;:::-;24859:103;24989:1;24982:5;24978:13;24971:20;;24764:233;;;:::o;25003:224::-;25143:34;25139:1;25131:6;25127:14;25120:58;25212:7;25207:2;25199:6;25195:15;25188:32;25003:224;:::o;25233:366::-;25375:3;25396:67;25460:2;25455:3;25396:67;:::i;:::-;25389:74;;25472:93;25561:3;25472:93;:::i;:::-;25590:2;25585:3;25581:12;25574:19;;25233:366;;;:::o;25605:419::-;25771:4;25809:2;25798:9;25794:18;25786:26;;25858:9;25852:4;25848:20;25844:1;25833:9;25829:17;25822:47;25886:131;26012:4;25886:131;:::i;:::-;25878:139;;25605:419;;;:::o;26030:230::-;26170:34;26166:1;26158:6;26154:14;26147:58;26239:13;26234:2;26226:6;26222:15;26215:38;26030:230;:::o;26266:366::-;26408:3;26429:67;26493:2;26488:3;26429:67;:::i;:::-;26422:74;;26505:93;26594:3;26505:93;:::i;:::-;26623:2;26618:3;26614:12;26607:19;;26266:366;;;:::o;26638:419::-;26804:4;26842:2;26831:9;26827:18;26819:26;;26891:9;26885:4;26881:20;26877:1;26866:9;26862:17;26855:47;26919:131;27045:4;26919:131;:::i;:::-;26911:139;;26638:419;;;:::o;27063:226::-;27203:34;27199:1;27191:6;27187:14;27180:58;27272:9;27267:2;27259:6;27255:15;27248:34;27063:226;:::o;27295:366::-;27437:3;27458:67;27522:2;27517:3;27458:67;:::i;:::-;27451:74;;27534:93;27623:3;27534:93;:::i;:::-;27652:2;27647:3;27643:12;27636:19;;27295:366;;;:::o;27667:419::-;27833:4;27871:2;27860:9;27856:18;27848:26;;27920:9;27914:4;27910:20;27906:1;27895:9;27891:17;27884:47;27948:131;28074:4;27948:131;:::i;:::-;27940:139;;27667:419;;;:::o;28092:225::-;28232:34;28228:1;28220:6;28216:14;28209:58;28301:8;28296:2;28288:6;28284:15;28277:33;28092:225;:::o;28323:366::-;28465:3;28486:67;28550:2;28545:3;28486:67;:::i;:::-;28479:74;;28562:93;28651:3;28562:93;:::i;:::-;28680:2;28675:3;28671:12;28664:19;;28323:366;;;:::o;28695:419::-;28861:4;28899:2;28888:9;28884:18;28876:26;;28948:9;28942:4;28938:20;28934:1;28923:9;28919:17;28912:47;28976:131;29102:4;28976:131;:::i;:::-;28968:139;;28695:419;;;:::o;29120:223::-;29260:34;29256:1;29248:6;29244:14;29237:58;29329:6;29324:2;29316:6;29312:15;29305:31;29120:223;:::o;29349:366::-;29491:3;29512:67;29576:2;29571:3;29512:67;:::i;:::-;29505:74;;29588:93;29677:3;29588:93;:::i;:::-;29706:2;29701:3;29697:12;29690:19;;29349:366;;;:::o;29721:419::-;29887:4;29925:2;29914:9;29910:18;29902:26;;29974:9;29968:4;29964:20;29960:1;29949:9;29945:17;29938:47;30002:131;30128:4;30002:131;:::i;:::-;29994:139;;29721:419;;;:::o;30146:221::-;30286:34;30282:1;30274:6;30270:14;30263:58;30355:4;30350:2;30342:6;30338:15;30331:29;30146:221;:::o;30373:366::-;30515:3;30536:67;30600:2;30595:3;30536:67;:::i;:::-;30529:74;;30612:93;30701:3;30612:93;:::i;:::-;30730:2;30725:3;30721:12;30714:19;;30373:366;;;:::o;30745:419::-;30911:4;30949:2;30938:9;30934:18;30926:26;;30998:9;30992:4;30988:20;30984:1;30973:9;30969:17;30962:47;31026:131;31152:4;31026:131;:::i;:::-;31018:139;;30745:419;;;:::o;31170:228::-;31310:34;31306:1;31298:6;31294:14;31287:58;31379:11;31374:2;31366:6;31362:15;31355:36;31170:228;:::o;31404:366::-;31546:3;31567:67;31631:2;31626:3;31567:67;:::i;:::-;31560:74;;31643:93;31732:3;31643:93;:::i;:::-;31761:2;31756:3;31752:12;31745:19;;31404:366;;;:::o;31776:419::-;31942:4;31980:2;31969:9;31965:18;31957:26;;32029:9;32023:4;32019:20;32015:1;32004:9;32000:17;31993:47;32057:131;32183:4;32057:131;:::i;:::-;32049:139;;31776:419;;;:::o;32201:175::-;32341:27;32337:1;32329:6;32325:14;32318:51;32201:175;:::o;32382:366::-;32524:3;32545:67;32609:2;32604:3;32545:67;:::i;:::-;32538:74;;32621:93;32710:3;32621:93;:::i;:::-;32739:2;32734:3;32730:12;32723:19;;32382:366;;;:::o;32754:419::-;32920:4;32958:2;32947:9;32943:18;32935:26;;33007:9;33001:4;32997:20;32993:1;32982:9;32978:17;32971:47;33035:131;33161:4;33035:131;:::i;:::-;33027:139;;32754:419;;;:::o;33179:169::-;33319:21;33315:1;33307:6;33303:14;33296:45;33179:169;:::o;33354:366::-;33496:3;33517:67;33581:2;33576:3;33517:67;:::i;:::-;33510:74;;33593:93;33682:3;33593:93;:::i;:::-;33711:2;33706:3;33702:12;33695:19;;33354:366;;;:::o;33726:419::-;33892:4;33930:2;33919:9;33915:18;33907:26;;33979:9;33973:4;33969:20;33965:1;33954:9;33950:17;33943:47;34007:131;34133:4;34007:131;:::i;:::-;33999:139;;33726:419;;;:::o;34151:175::-;34291:27;34287:1;34279:6;34275:14;34268:51;34151:175;:::o;34332:366::-;34474:3;34495:67;34559:2;34554:3;34495:67;:::i;:::-;34488:74;;34571:93;34660:3;34571:93;:::i;:::-;34689:2;34684:3;34680:12;34673:19;;34332:366;;;:::o;34704:419::-;34870:4;34908:2;34897:9;34893:18;34885:26;;34957:9;34951:4;34947:20;34943:1;34932:9;34928:17;34921:47;34985:131;35111:4;34985:131;:::i;:::-;34977:139;;34704:419;;;:::o;35129:176::-;35269:28;35265:1;35257:6;35253:14;35246:52;35129:176;:::o;35311:366::-;35453:3;35474:67;35538:2;35533:3;35474:67;:::i;:::-;35467:74;;35550:93;35639:3;35550:93;:::i;:::-;35668:2;35663:3;35659:12;35652:19;;35311:366;;;:::o;35683:419::-;35849:4;35887:2;35876:9;35872:18;35864:26;;35936:9;35930:4;35926:20;35922:1;35911:9;35907:17;35900:47;35964:131;36090:4;35964:131;:::i;:::-;35956:139;;35683:419;;;:::o;36108:180::-;36156:77;36153:1;36146:88;36253:4;36250:1;36243:15;36277:4;36274:1;36267:15;36294:185;36334:1;36351:20;36369:1;36351:20;:::i;:::-;36346:25;;36385:20;36403:1;36385:20;:::i;:::-;36380:25;;36424:1;36414:35;;36429:18;;:::i;:::-;36414:35;36471:1;36468;36464:9;36459:14;;36294:185;;;;:::o;36485:224::-;36625:34;36621:1;36613:6;36609:14;36602:58;36694:7;36689:2;36681:6;36677:15;36670:32;36485:224;:::o;36715:366::-;36857:3;36878:67;36942:2;36937:3;36878:67;:::i;:::-;36871:74;;36954:93;37043:3;36954:93;:::i;:::-;37072:2;37067:3;37063:12;37056:19;;36715:366;;;:::o;37087:419::-;37253:4;37291:2;37280:9;37276:18;37268:26;;37340:9;37334:4;37330:20;37326:1;37315:9;37311:17;37304:47;37368:131;37494:4;37368:131;:::i;:::-;37360:139;;37087:419;;;:::o;37512:222::-;37652:34;37648:1;37640:6;37636:14;37629:58;37721:5;37716:2;37708:6;37704:15;37697:30;37512:222;:::o;37740:366::-;37882:3;37903:67;37967:2;37962:3;37903:67;:::i;:::-;37896:74;;37979:93;38068:3;37979:93;:::i;:::-;38097:2;38092:3;38088:12;38081:19;;37740:366;;;:::o;38112:419::-;38278:4;38316:2;38305:9;38301:18;38293:26;;38365:9;38359:4;38355:20;38351:1;38340:9;38336:17;38329:47;38393:131;38519:4;38393:131;:::i;:::-;38385:139;;38112:419;;;:::o;38537:225::-;38677:34;38673:1;38665:6;38661:14;38654:58;38746:8;38741:2;38733:6;38729:15;38722:33;38537:225;:::o;38768:366::-;38910:3;38931:67;38995:2;38990:3;38931:67;:::i;:::-;38924:74;;39007:93;39096:3;39007:93;:::i;:::-;39125:2;39120:3;39116:12;39109:19;;38768:366;;;:::o;39140:419::-;39306:4;39344:2;39333:9;39329:18;39321:26;;39393:9;39387:4;39383:20;39379:1;39368:9;39364:17;39357:47;39421:131;39547:4;39421:131;:::i;:::-;39413:139;;39140:419;;;:::o;39565:143::-;39622:5;39653:6;39647:13;39638:22;;39669:33;39696:5;39669:33;:::i;:::-;39565:143;;;;:::o;39714:351::-;39784:6;39833:2;39821:9;39812:7;39808:23;39804:32;39801:119;;;39839:79;;:::i;:::-;39801:119;39959:1;39984:64;40040:7;40031:6;40020:9;40016:22;39984:64;:::i;:::-;39974:74;;39930:128;39714:351;;;;:::o;40071:85::-;40116:7;40145:5;40134:16;;40071:85;;;:::o;40162:158::-;40220:9;40253:61;40271:42;40280:32;40306:5;40280:32;:::i;:::-;40271:42;:::i;:::-;40253:61;:::i;:::-;40240:74;;40162:158;;;:::o;40326:147::-;40421:45;40460:5;40421:45;:::i;:::-;40416:3;40409:58;40326:147;;:::o;40479:114::-;40546:6;40580:5;40574:12;40564:22;;40479:114;;;:::o;40599:184::-;40698:11;40732:6;40727:3;40720:19;40772:4;40767:3;40763:14;40748:29;;40599:184;;;;:::o;40789:132::-;40856:4;40879:3;40871:11;;40909:4;40904:3;40900:14;40892:22;;40789:132;;;:::o;40927:108::-;41004:24;41022:5;41004:24;:::i;:::-;40999:3;40992:37;40927:108;;:::o;41041:179::-;41110:10;41131:46;41173:3;41165:6;41131:46;:::i;:::-;41209:4;41204:3;41200:14;41186:28;;41041:179;;;;:::o;41226:113::-;41296:4;41328;41323:3;41319:14;41311:22;;41226:113;;;:::o;41375:732::-;41494:3;41523:54;41571:5;41523:54;:::i;:::-;41593:86;41672:6;41667:3;41593:86;:::i;:::-;41586:93;;41703:56;41753:5;41703:56;:::i;:::-;41782:7;41813:1;41798:284;41823:6;41820:1;41817:13;41798:284;;;41899:6;41893:13;41926:63;41985:3;41970:13;41926:63;:::i;:::-;41919:70;;42012:60;42065:6;42012:60;:::i;:::-;42002:70;;41858:224;41845:1;41842;41838:9;41833:14;;41798:284;;;41802:14;42098:3;42091:10;;41499:608;;;41375:732;;;;:::o;42113:831::-;42376:4;42414:3;42403:9;42399:19;42391:27;;42428:71;42496:1;42485:9;42481:17;42472:6;42428:71;:::i;:::-;42509:80;42585:2;42574:9;42570:18;42561:6;42509:80;:::i;:::-;42636:9;42630:4;42626:20;42621:2;42610:9;42606:18;42599:48;42664:108;42767:4;42758:6;42664:108;:::i;:::-;42656:116;;42782:72;42850:2;42839:9;42835:18;42826:6;42782:72;:::i;:::-;42864:73;42932:3;42921:9;42917:19;42908:6;42864:73;:::i;:::-;42113:831;;;;;;;;:::o;42950:807::-;43199:4;43237:3;43226:9;43222:19;43214:27;;43251:71;43319:1;43308:9;43304:17;43295:6;43251:71;:::i;:::-;43332:72;43400:2;43389:9;43385:18;43376:6;43332:72;:::i;:::-;43414:80;43490:2;43479:9;43475:18;43466:6;43414:80;:::i;:::-;43504;43580:2;43569:9;43565:18;43556:6;43504:80;:::i;:::-;43594:73;43662:3;43651:9;43647:19;43638:6;43594:73;:::i;:::-;43677;43745:3;43734:9;43730:19;43721:6;43677:73;:::i;:::-;42950:807;;;;;;;;;:::o;43763:143::-;43820:5;43851:6;43845:13;43836:22;;43867:33;43894:5;43867:33;:::i;:::-;43763:143;;;;:::o;43912:663::-;44000:6;44008;44016;44065:2;44053:9;44044:7;44040:23;44036:32;44033:119;;;44071:79;;:::i;:::-;44033:119;44191:1;44216:64;44272:7;44263:6;44252:9;44248:22;44216:64;:::i;:::-;44206:74;;44162:128;44329:2;44355:64;44411:7;44402:6;44391:9;44387:22;44355:64;:::i;:::-;44345:74;;44300:129;44468:2;44494:64;44550:7;44541:6;44530:9;44526:22;44494:64;:::i;:::-;44484:74;;44439:129;43912:663;;;;;:::o;44581:179::-;44721:31;44717:1;44709:6;44705:14;44698:55;44581:179;:::o;44766:366::-;44908:3;44929:67;44993:2;44988:3;44929:67;:::i;:::-;44922:74;;45005:93;45094:3;45005:93;:::i;:::-;45123:2;45118:3;45114:12;45107:19;;44766:366;;;:::o;45138:419::-;45304:4;45342:2;45331:9;45327:18;45319:26;;45391:9;45385:4;45381:20;45377:1;45366:9;45362:17;45355:47;45419:131;45545:4;45419:131;:::i;:::-;45411:139;;45138:419;;;:::o;45563:147::-;45664:11;45701:3;45686:18;;45563:147;;;;:::o;45716:114::-;;:::o;45836:398::-;45995:3;46016:83;46097:1;46092:3;46016:83;:::i;:::-;46009:90;;46108:93;46197:3;46108:93;:::i;:::-;46226:1;46221:3;46217:11;46210:18;;45836:398;;;:::o;46240:379::-;46424:3;46446:147;46589:3;46446:147;:::i;:::-;46439:154;;46610:3;46603:10;;46240:379;;;:::o;46625:245::-;46765:34;46761:1;46753:6;46749:14;46742:58;46834:28;46829:2;46821:6;46817:15;46810:53;46625:245;:::o;46876:366::-;47018:3;47039:67;47103:2;47098:3;47039:67;:::i;:::-;47032:74;;47115:93;47204:3;47115:93;:::i;:::-;47233:2;47228:3;47224:12;47217:19;;46876:366;;;:::o;47248:419::-;47414:4;47452:2;47441:9;47437:18;47429:26;;47501:9;47495:4;47491:20;47487:1;47476:9;47472:17;47465:47;47529:131;47655:4;47529:131;:::i;:::-;47521:139;;47248:419;;;:::o

Swarm Source

ipfs://cc739c672b866ed7cfb672a5c1d334509ed2425786c0f6446404103b99ca7354

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.