ETH Price: $3,142.83 (+6.03%)

Token

MOONBOY INU ($MOONBOY)
 

Overview

Max Total Supply

1,000,000,000 $MOONBOY

Holders

16

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10,654,416.043956166 $MOONBOY

Value
$0.00
0xa50441e429b339e3083f6e9c0f4881ff8f075c8f
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:
MOONBOYINU

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-26
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.3;

abstract contract Context {

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by 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;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

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

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

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

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

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

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

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

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

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

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

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

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

    function initialize(address, address) external;
}

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

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

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

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

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



contract MOONBOYINU is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "MOONBOY INU";
    string private _symbol = "$MOONBOY";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 100 * 10**7 * 10**9;

    uint256 public autoliquidity = 1;
    uint256 public marketingtax = 3;
    uint256 public giveaway = 3;   
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public zerotaxwallet;
    mapping (address => bool) public zerolimit;
    mapping (address => bool) public zerobot;

    address payable public marketingwallet = payable(0xf170CAB9BaD8e2CFA29934E4027d87fd394a4De3); 
    address payable public giveawaywallet = payable(0xf170CAB9BaD8e2CFA29934E4027d87fd394a4De3); 
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 public maxbuy = 4 * 10**7 * 10**9;              
    uint256 public maxwallet = 4 * 10**7 * 10**9;           
    uint256 private minimumTokensBeforeSwap = 10000 * 10**9; 
    uint256 public burn = 0;  
    uint256 public totaltax = 0;
    uint256 public cooldown = 0;
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        zerotaxwallet[owner()] = true;
        zerotaxwallet[address(this)] = true;
        
        totaltax = autoliquidity.add(marketingtax).add(giveaway);
        cooldown = totaltax.add(burn);

        zerolimit[owner()] = true;
        zerolimit[address(uniswapV2Pair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

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

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        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);
    }

    function blacklistbot(address account, bool newValue) public onlyOwner {
        zerobot[account] = newValue;
    }

    function setzerotaxwallet(address account, bool newValue) public onlyOwner {
        zerotaxwallet[account] = newValue;
    }

    function settax(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newRewardsTax, uint256 newdevFee) external onlyOwner() {
        autoliquidity = newLiquidityTax;
        marketingtax = newMarketingTax;
        giveaway = newRewardsTax;
        burn = newdevFee;

        totaltax = autoliquidity.add(marketingtax).add(giveaway);
        cooldown = totaltax.add(burn);
    }

    function amountbeforeswap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function changemarketingwallet(address newAddress) external onlyOwner() {
        marketingwallet = payable(newAddress);
    }

    function changegiveawaywallet(address newAddress) external onlyOwner() {
        giveawaywallet = payable(newAddress);
    }

    function opentrade(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapV2Pair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!zerobot[sender] && !zerobot[recipient], "To/from address is blacklisted!");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(sender != owner() && recipient != owner()) {
                require(amount <= maxbuy, "Transfer amount exceeds the maxTxAmount.");
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && sender != uniswapV2Pair && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (zerotaxwallet[sender] || zerotaxwallet[recipient]) ? 
                                         amount : getfee(sender, recipient, amount);

            if(checkWalletLimit && !zerolimit[recipient])
                require(balanceOf(recipient).add(finalAmount) <= maxwallet);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
       
        uint256 tokensForLP = tAmount.div(totaltax).mul(autoliquidity).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalETHFee = totaltax.sub(autoliquidity.div(2));
        
        uint256 amountLiquidity = amountReceived.mul(autoliquidity).div(totalETHFee).div(2);
        uint256 amountDev = amountReceived.mul(giveaway).div(totalETHFee);
        uint256 amountMarketing = amountReceived.sub(amountLiquidity).sub(amountDev);

        transferToAddressETH(marketingwallet, amountMarketing);
        transferToAddressETH(giveawaywallet, amountDev);
        addLiquidity(tokensForLP, amountLiquidity);
    }
    
    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), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    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
            owner(),
            block.timestamp
        );
    }

    function getfee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = recipient == uniswapV2Pair ? amount.mul(cooldown).div(100) 
                                : amount.mul(totaltax).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }
    

    function maxtransaction(uint256 maxTxAmount) external onlyOwner() {
        maxbuy = maxTxAmount;
    }


    function openwalletlimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }


    function nolimitwallet(address holder, bool exempt) external onlyOwner {
        zerolimit[holder] = exempt;
    }


    function walletlimit(uint256 newLimit) external onlyOwner {
        maxwallet  = newLimit;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"amountbeforeswap","outputs":[],"stateMutability":"nonpayable","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":[],"name":"autoliquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"bool","name":"newValue","type":"bool"}],"name":"blacklistbot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"changegiveawaywallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"changemarketingwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldown","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":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giveaway","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giveawaywallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingtax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingwallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxbuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxtransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxwallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"nolimitwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"opentrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"openwalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newRewardsTax","type":"uint256"},{"internalType":"uint256","name":"newdevFee","type":"uint256"}],"name":"settax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setzerotaxwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totaltax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"walletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"zerobot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"zerolimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"zerotaxwallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600b81526020017f4d4f4f4e424f5920494e55000000000000000000000000000000000000000000815250600390805190602001906200005192919062000937565b506040518060400160405280600881526020017f244d4f4f4e424f59000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000937565b506009600560006101000a81548160ff021916908360ff160217905550670de0b6b3a764000060065560016007556003600855600360095573f170cab9bad8e2cfa29934e4027d87fd394a4de3600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f170cab9bad8e2cfa29934e4027d87fd394a4de3601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250668e1bc9bf040000601155668e1bc9bf0400006012556509184e72a0006013556000601455600060155560006016556001601860156101000a81548160ff0219169083151502179055506000601860166101000a81548160ff0219169083151502179055506001601860176101000a81548160ff0219169083151502179055503480156200024657600080fd5b50600062000259620008a360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035757600080fd5b505afa1580156200036c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003929190620009fe565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f557600080fd5b505afa1580156200040a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004309190620009fe565b6040518363ffffffff1660e01b81526004016200044f92919062000a73565b602060405180830381600087803b1580156200046a57600080fd5b505af11580156200047f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a59190620009fe565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c6000620005e1620008ab60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006c3600954620006af600854600754620008d460201b620027d21790919060201c565b620008d460201b620027d21790919060201c565b601581905550620006e7601454601554620008d460201b620027d21790919060201c565b6016819055506001600d600062000703620008ab60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600654600a6000620007e5620008a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000833620008a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405162000894919062000ac2565b60405180910390a35062000c62565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808284620008e5919062000af0565b9050838110156200092d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009249062000aa0565b60405180910390fd5b8091505092915050565b828054620009459062000b8b565b90600052602060002090601f016020900481019282620009695760008555620009b5565b82601f106200098457805160ff1916838001178555620009b5565b82800160010185558215620009b5579182015b82811115620009b457825182559160200191906001019062000997565b5b509050620009c49190620009c8565b5090565b5b80821115620009e3576000816000905550600101620009c9565b5090565b600081519050620009f88162000c48565b92915050565b60006020828403121562000a1157600080fd5b600062000a2184828501620009e7565b91505092915050565b62000a358162000b4d565b82525050565b600062000a4a601b8362000adf565b915062000a578262000c1f565b602082019050919050565b62000a6d8162000b81565b82525050565b600060408201905062000a8a600083018562000a2a565b62000a99602083018462000a2a565b9392505050565b6000602082019050818103600083015262000abb8162000a3b565b9050919050565b600060208201905062000ad9600083018462000a62565b92915050565b600082825260208201905092915050565b600062000afd8262000b81565b915062000b0a8362000b81565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b425762000b4162000bc1565b5b828201905092915050565b600062000b5a8262000b61565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000ba457607f821691505b6020821081141562000bbb5762000bba62000bf0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b62000c538162000b4d565b811462000c5f57600080fd5b50565b60805160601c614cbc62000c8860003960008181610f0e0152610f3a0152614cbc6000f3fe6080604052600436106103035760003560e01c8063715018a611610190578063b00ec853116100dc578063dd62ed3e11610095578063e59cf95c1161006f578063e59cf95c14610ba5578063f2fde38b14610bce578063f872858a14610bf7578063f9850b7214610c225761030a565b8063dd62ed3e14610b02578063e47b3c1514610b3f578063e52d648714610b685761030a565b8063b00ec85314610a06578063b741628114610a2f578063d9038b3414610a5a578063da00097d14610a83578063db4a133714610aae578063dd46706414610ad95761030a565b806399f582d811610149578063a5d69d1f11610123578063a5d69d1f14610960578063a69df4b514610989578063a79d6ff8146109a0578063a9059cbb146109c95761030a565b806399f582d8146108bb578063a073d37f146108f8578063a457c2d7146109235761030a565b8063715018a6146107cf578063787a08a6146107e65780637dfa0349146108115780638bbd458c1461083a5780638da5cb5b1461086557806395d89b41146108905761030a565b8063313ce5671161024f57806349bd5a5e116102085780635881f3ef116101e25780635881f3ef14610701578063602bc62b1461073e5780636a77c1d51461076957806370a08231146107925761030a565b806349bd5a5e146106805780634a74bb02146106ab578063557ed1ba146106d65761030a565b8063313ce56714610570578063340fe40d1461059b578063367341cb146105c657806339509351146105ef578063431cb2801461062c57806344df8e70146106555761030a565b80631c1d9747116102bc57806327c8f8351161029657806327c8f835146104c65780632b112e49146104f15780632e0b896f1461051c5780633128cdac146105455761030a565b80631c1d97471461043557806323b872dd1461045e57806324b32aeb1461049b5761030a565b80630666e4131461030f57806306fdde031461033a578063095ea7b314610365578063128e72c1146103a25780631694505e146103df57806318160ddd1461040a5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b60405161033191906144bf565b60405180910390f35b34801561034657600080fd5b5061034f610c53565b60405161035c91906142fd565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190613dd9565b610ce5565b60405161039991906142c7565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613cc0565b610d03565b6040516103d691906142c7565b60405180910390f35b3480156103eb57600080fd5b506103f4610d23565b60405161040191906142e2565b60405180910390f35b34801561041657600080fd5b5061041f610d49565b60405161042c91906144bf565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190613cc0565b610d53565b005b34801561046a57600080fd5b5061048560048036038101906104809190613d4e565b610e2c565b60405161049291906142c7565b60405180910390f35b3480156104a757600080fd5b506104b0610f06565b6040516104bd91906144bf565b60405180910390f35b3480156104d257600080fd5b506104db610f0c565b6040516104e89190614207565b60405180910390f35b3480156104fd57600080fd5b50610506610f30565b60405161051391906144bf565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190613cc0565b610f74565b005b34801561055157600080fd5b5061055a61104d565b60405161056791906144bf565b60405180910390f35b34801561057c57600080fd5b50610585611053565b6040516105929190614564565b60405180910390f35b3480156105a757600080fd5b506105b061106a565b6040516105bd9190614222565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190613d9d565b611090565b005b3480156105fb57600080fd5b5061061660048036038101906106119190613dd9565b611180565b60405161062391906142c7565b60405180910390f35b34801561063857600080fd5b50610653600480360381019061064e9190613e3e565b611233565b005b34801561066157600080fd5b5061066a6112d2565b60405161067791906144bf565b60405180910390f35b34801561068c57600080fd5b506106956112d8565b6040516106a29190614207565b60405180910390f35b3480156106b757600080fd5b506106c06112fe565b6040516106cd91906142c7565b60405180910390f35b3480156106e257600080fd5b506106eb611311565b6040516106f891906144bf565b60405180910390f35b34801561070d57600080fd5b5061072860048036038101906107239190613cc0565b611319565b6040516107359190614207565b60405180910390f35b34801561074a57600080fd5b50610753611783565b60405161076091906144bf565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190613e3e565b61178d565b005b34801561079e57600080fd5b506107b960048036038101906107b49190613cc0565b61182c565b6040516107c691906144bf565b60405180910390f35b3480156107db57600080fd5b506107e4611875565b005b3480156107f257600080fd5b506107fb6119c8565b60405161080891906144bf565b60405180910390f35b34801561081d57600080fd5b5061083860048036038101906108339190613eb6565b6119ce565b005b34801561084657600080fd5b5061084f611ad3565b60405161085c9190614222565b60405180910390f35b34801561087157600080fd5b5061087a611af9565b6040516108879190614207565b60405180910390f35b34801561089c57600080fd5b506108a5611b22565b6040516108b291906142fd565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190613cc0565b611bb4565b6040516108ef91906142c7565b60405180910390f35b34801561090457600080fd5b5061090d611bd4565b60405161091a91906144bf565b60405180910390f35b34801561092f57600080fd5b5061094a60048036038101906109459190613dd9565b611bde565b60405161095791906142c7565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190613e15565b611cab565b005b34801561099557600080fd5b5061099e611d5d565b005b3480156109ac57600080fd5b506109c760048036038101906109c29190613e3e565b611f31565b005b3480156109d557600080fd5b506109f060048036038101906109eb9190613dd9565b611fd0565b6040516109fd91906142c7565b60405180910390f35b348015610a1257600080fd5b50610a2d6004803603810190610a289190613d9d565b611fef565b005b348015610a3b57600080fd5b50610a446120df565b604051610a5191906144bf565b60405180910390f35b348015610a6657600080fd5b50610a816004803603810190610a7c9190613e15565b6120e5565b005b348015610a8f57600080fd5b50610a98612197565b604051610aa591906142c7565b60405180910390f35b348015610aba57600080fd5b50610ac36121aa565b604051610ad091906144bf565b60405180910390f35b348015610ae557600080fd5b50610b006004803603810190610afb9190613e3e565b6121b0565b005b348015610b0e57600080fd5b50610b296004803603810190610b249190613d12565b612377565b604051610b3691906144bf565b60405180910390f35b348015610b4b57600080fd5b50610b666004803603810190610b619190613e15565b6123fe565b005b348015610b7457600080fd5b50610b8f6004803603810190610b8a9190613cc0565b6124e7565b604051610b9c91906142c7565b60405180910390f35b348015610bb157600080fd5b50610bcc6004803603810190610bc79190613d9d565b612507565b005b348015610bda57600080fd5b50610bf56004803603810190610bf09190613cc0565b6125f7565b005b348015610c0357600080fd5b50610c0c6127b9565b604051610c1991906142c7565b60405180910390f35b348015610c2e57600080fd5b50610c376127cc565b604051610c4491906144bf565b60405180910390f35b60125481565b606060038054610c62906147b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8e906147b9565b8015610cdb5780601f10610cb057610100808354040283529160200191610cdb565b820191906000526020600020905b815481529060010190602001808311610cbe57829003601f168201915b5050505050905090565b6000610cf9610cf2612830565b8484612838565b6001905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600654905090565b610d5b612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf906143ff565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610e39848484612a03565b50610efb84610e46612830565b610ef685604051806060016040528060288152602001614c3a60289139600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610eac612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b600190509392505050565b60085481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f6f610f5e7f000000000000000000000000000000000000000000000000000000000000000061182c565b60065461314890919063ffffffff16565b905090565b610f7c612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611000906143ff565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b6000600560009054906101000a900460ff16905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611098612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c906143ff565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061122961118d612830565b8461122485600b600061119e612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b612838565b6001905092915050565b61123b612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf906143ff565b60405180910390fd5b8060138190555050565b60145481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b600042905090565b6000611323612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a7906143ff565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113fb57600080fd5b505afa15801561140f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114339190613ce9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561149557600080fd5b505afa1580156114a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114cd9190613ce9565b6040518363ffffffff1660e01b81526004016114ea92919061423d565b60206040518083038186803b15801561150257600080fd5b505afa158015611516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153a9190613ce9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116fb578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b757600080fd5b505afa1580156115cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ef9190613ce9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561165157600080fd5b505afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613ce9565b6040518363ffffffff1660e01b81526004016116a692919061423d565b602060405180830381600087803b1580156116c057600080fd5b505af11580156116d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f89190613ce9565b91505b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b6000600254905090565b611795612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611822576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611819906143ff565b60405180910390fd5b8060128190555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61187d612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611901906143ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6119d6612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5a906143ff565b60405180910390fd5b83600781905550826008819055508160098190555080601481905550611aaa600954611a9c6008546007546127d290919063ffffffff16565b6127d290919063ffffffff16565b601581905550611ac76014546015546127d290919063ffffffff16565b60168190555050505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b31906147b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611b5d906147b9565b8015611baa5780601f10611b7f57610100808354040283529160200191611baa565b820191906000526020600020905b815481529060010190602001808311611b8d57829003601f168201915b5050505050905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601354905090565b6000611ca1611beb612830565b84611c9c85604051806060016040528060258152602001614c6260259139600b6000611c15612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b6001905092915050565b611cb3612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d37906143ff565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de49061449f565b60405180910390fd5b6002544211611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e289061447f565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611f39612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd906143ff565b60405180910390fd5b8060118190555050565b6000611fe4611fdd612830565b8484612a03565b506001905092915050565b611ff7612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207b906143ff565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60075481565b6120ed612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461217a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612171906143ff565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b601860169054906101000a900460ff1681565b60155481565b6121b8612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c906143ff565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426122f391906145d4565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612406612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a906143ff565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516124dc91906142c7565b60405180910390a150565b600c6020528060005260406000206000915054906101000a900460ff1681565b61250f612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461259c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612593906143ff565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6125ff612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461268c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612683906143ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f39061433f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860179054906101000a900460ff1681565b60095481565b60008082846127e191906145d4565b905083811015612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d9061437f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f9061445f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290f9061435f565b60405180910390fd5b80600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f691906144bf565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b9061443f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb9061431f565b60405180910390fd5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b885750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbe9061439f565b60405180910390fd5b60008211612c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c019061441f565b60405180910390fd5b601860149054906101000a900460ff1615612c3157612c2a848484613192565b90506130dd565b612c39611af9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612ca75750612c77611af9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612cf257601154821115612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce8906143bf565b60405180910390fd5b5b6000612cfd3061182c565b905060006013548210159050808015612d235750601860149054906101000a900460ff16155b8015612d7d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d955750601860159054906101000a900460ff165b15612dbf57601860169054906101000a900460ff1615612db55760135491505b612dbe82613365565b5b612e48846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f2e5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4257612f3d87878761352c565b612f44565b845b9050601860179054906101000a900460ff168015612fac5750600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fdb57601254612fcf82612fc18961182c565b6127d290919063ffffffff16565b1115612fda57600080fd5b5b61302d81600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130cd91906144bf565b60405180910390a3600193505050505b9392505050565b600083831115829061312c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312391906142fd565b60405180910390fd5b506000838561313b91906146b5565b9050809150509392505050565b600061318a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130e4565b905092915050565b600061321d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b282600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161335291906144bf565b60405180910390a3600190509392505050565b6001601860146101000a81548160ff02191690831515021790555060006133be60026133b06007546133a2601554876136f390919063ffffffff16565b61373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006133d5828461314890919063ffffffff16565b90506133e0816137b8565b6000479050600061341161340060026007546136f390919063ffffffff16565b60155461314890919063ffffffff16565b9050600061344f6002613441846134336007548861373d90919063ffffffff16565b6136f390919063ffffffff16565b6136f390919063ffffffff16565b9050600061347a8361346c6009548761373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006134a382613495858861314890919063ffffffff16565b61314890919063ffffffff16565b90506134d1600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613ab5565b6134fd601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613ab5565b6135078784613b00565b505050505050506000601860146101000a81548160ff02191690831515021790555050565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135b1576135ac606461359e6015548661373d90919063ffffffff16565b6136f390919063ffffffff16565b6135da565b6135d960646135cb6016548661373d90919063ffffffff16565b6136f390919063ffffffff16565b5b905061362e81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ce91906144bf565b60405180910390a36136e9818461314890919063ffffffff16565b9150509392505050565b600061373583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bf4565b905092915050565b60008083141561375057600090506137b2565b6000828461375e919061465b565b905082848261376d919061462a565b146137ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a4906143df565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156137fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156138295781602001602082028036833780820191505090505b5090503081600081518110613867577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561390957600080fd5b505afa15801561391d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139419190613ce9565b8160018151811061397b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139e230601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613a4695949392919061450a565b600060405180830381600087803b158015613a6057600080fd5b505af1158015613a74573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613aa99291906144da565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613afb573d6000803e3d6000fd5b505050565b613b2d30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b79611af9565b426040518863ffffffff1660e01b8152600401613b9b96959493929190614266565b6060604051808303818588803b158015613bb457600080fd5b505af1158015613bc8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613bed9190613e67565b5050505050565b60008083118290613c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3291906142fd565b60405180910390fd5b5060008385613c4a919061462a565b9050809150509392505050565b600081359050613c6681614bf4565b92915050565b600081519050613c7b81614bf4565b92915050565b600081359050613c9081614c0b565b92915050565b600081359050613ca581614c22565b92915050565b600081519050613cba81614c22565b92915050565b600060208284031215613cd257600080fd5b6000613ce084828501613c57565b91505092915050565b600060208284031215613cfb57600080fd5b6000613d0984828501613c6c565b91505092915050565b60008060408385031215613d2557600080fd5b6000613d3385828601613c57565b9250506020613d4485828601613c57565b9150509250929050565b600080600060608486031215613d6357600080fd5b6000613d7186828701613c57565b9350506020613d8286828701613c57565b9250506040613d9386828701613c96565b9150509250925092565b60008060408385031215613db057600080fd5b6000613dbe85828601613c57565b9250506020613dcf85828601613c81565b9150509250929050565b60008060408385031215613dec57600080fd5b6000613dfa85828601613c57565b9250506020613e0b85828601613c96565b9150509250929050565b600060208284031215613e2757600080fd5b6000613e3584828501613c81565b91505092915050565b600060208284031215613e5057600080fd5b6000613e5e84828501613c96565b91505092915050565b600080600060608486031215613e7c57600080fd5b6000613e8a86828701613cab565b9350506020613e9b86828701613cab565b9250506040613eac86828701613cab565b9150509250925092565b60008060008060808587031215613ecc57600080fd5b6000613eda87828801613c96565b9450506020613eeb87828801613c96565b9350506040613efc87828801613c96565b9250506060613f0d87828801613c96565b91505092959194509250565b6000613f258383613f40565b60208301905092915050565b613f3a816146fb565b82525050565b613f49816146e9565b82525050565b613f58816146e9565b82525050565b6000613f698261458f565b613f7381856145b2565b9350613f7e8361457f565b8060005b83811015613faf578151613f968882613f19565b9750613fa1836145a5565b925050600181019050613f82565b5085935050505092915050565b613fc58161470d565b82525050565b613fd481614750565b82525050565b613fe381614774565b82525050565b6000613ff48261459a565b613ffe81856145c3565b935061400e818560208601614786565b61401781614878565b840191505092915050565b600061402f6023836145c3565b915061403a82614889565b604082019050919050565b60006140526026836145c3565b915061405d826148d8565b604082019050919050565b60006140756022836145c3565b915061408082614927565b604082019050919050565b6000614098601b836145c3565b91506140a382614976565b602082019050919050565b60006140bb601f836145c3565b91506140c68261499f565b602082019050919050565b60006140de6028836145c3565b91506140e9826149c8565b604082019050919050565b60006141016021836145c3565b915061410c82614a17565b604082019050919050565b60006141246020836145c3565b915061412f82614a66565b602082019050919050565b60006141476029836145c3565b915061415282614a8f565b604082019050919050565b600061416a6025836145c3565b915061417582614ade565b604082019050919050565b600061418d6024836145c3565b915061419882614b2d565b604082019050919050565b60006141b0601f836145c3565b91506141bb82614b7c565b602082019050919050565b60006141d36023836145c3565b91506141de82614ba5565b604082019050919050565b6141f281614739565b82525050565b61420181614743565b82525050565b600060208201905061421c6000830184613f4f565b92915050565b60006020820190506142376000830184613f31565b92915050565b60006040820190506142526000830185613f4f565b61425f6020830184613f4f565b9392505050565b600060c08201905061427b6000830189613f4f565b61428860208301886141e9565b6142956040830187613fda565b6142a26060830186613fda565b6142af6080830185613f4f565b6142bc60a08301846141e9565b979650505050505050565b60006020820190506142dc6000830184613fbc565b92915050565b60006020820190506142f76000830184613fcb565b92915050565b600060208201905081810360008301526143178184613fe9565b905092915050565b6000602082019050818103600083015261433881614022565b9050919050565b6000602082019050818103600083015261435881614045565b9050919050565b6000602082019050818103600083015261437881614068565b9050919050565b600060208201905081810360008301526143988161408b565b9050919050565b600060208201905081810360008301526143b8816140ae565b9050919050565b600060208201905081810360008301526143d8816140d1565b9050919050565b600060208201905081810360008301526143f8816140f4565b9050919050565b6000602082019050818103600083015261441881614117565b9050919050565b600060208201905081810360008301526144388161413a565b9050919050565b600060208201905081810360008301526144588161415d565b9050919050565b6000602082019050818103600083015261447881614180565b9050919050565b60006020820190508181036000830152614498816141a3565b9050919050565b600060208201905081810360008301526144b8816141c6565b9050919050565b60006020820190506144d460008301846141e9565b92915050565b60006040820190506144ef60008301856141e9565b81810360208301526145018184613f5e565b90509392505050565b600060a08201905061451f60008301886141e9565b61452c6020830187613fda565b818103604083015261453e8186613f5e565b905061454d6060830185613f4f565b61455a60808301846141e9565b9695505050505050565b600060208201905061457960008301846141f8565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006145df82614739565b91506145ea83614739565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561461f5761461e6147eb565b5b828201905092915050565b600061463582614739565b915061464083614739565b9250826146505761464f61481a565b5b828204905092915050565b600061466682614739565b915061467183614739565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146aa576146a96147eb565b5b828202905092915050565b60006146c082614739565b91506146cb83614739565b9250828210156146de576146dd6147eb565b5b828203905092915050565b60006146f482614719565b9050919050565b600061470682614719565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061475b82614762565b9050919050565b600061476d82614719565b9050919050565b600061477f82614739565b9050919050565b60005b838110156147a4578082015181840152602081019050614789565b838111156147b3576000848401525b50505050565b600060028204905060018216806147d157607f821691505b602082108114156147e5576147e4614849565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b614bfd816146e9565b8114614c0857600080fd5b50565b614c148161470d565b8114614c1f57600080fd5b50565b614c2b81614739565b8114614c3657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200faf144ef0e0321d2ca111c419b6790cec820f86f67ad199249d48df710f8b7b64736f6c63430008030033

Deployed Bytecode

0x6080604052600436106103035760003560e01c8063715018a611610190578063b00ec853116100dc578063dd62ed3e11610095578063e59cf95c1161006f578063e59cf95c14610ba5578063f2fde38b14610bce578063f872858a14610bf7578063f9850b7214610c225761030a565b8063dd62ed3e14610b02578063e47b3c1514610b3f578063e52d648714610b685761030a565b8063b00ec85314610a06578063b741628114610a2f578063d9038b3414610a5a578063da00097d14610a83578063db4a133714610aae578063dd46706414610ad95761030a565b806399f582d811610149578063a5d69d1f11610123578063a5d69d1f14610960578063a69df4b514610989578063a79d6ff8146109a0578063a9059cbb146109c95761030a565b806399f582d8146108bb578063a073d37f146108f8578063a457c2d7146109235761030a565b8063715018a6146107cf578063787a08a6146107e65780637dfa0349146108115780638bbd458c1461083a5780638da5cb5b1461086557806395d89b41146108905761030a565b8063313ce5671161024f57806349bd5a5e116102085780635881f3ef116101e25780635881f3ef14610701578063602bc62b1461073e5780636a77c1d51461076957806370a08231146107925761030a565b806349bd5a5e146106805780634a74bb02146106ab578063557ed1ba146106d65761030a565b8063313ce56714610570578063340fe40d1461059b578063367341cb146105c657806339509351146105ef578063431cb2801461062c57806344df8e70146106555761030a565b80631c1d9747116102bc57806327c8f8351161029657806327c8f835146104c65780632b112e49146104f15780632e0b896f1461051c5780633128cdac146105455761030a565b80631c1d97471461043557806323b872dd1461045e57806324b32aeb1461049b5761030a565b80630666e4131461030f57806306fdde031461033a578063095ea7b314610365578063128e72c1146103a25780631694505e146103df57806318160ddd1461040a5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b60405161033191906144bf565b60405180910390f35b34801561034657600080fd5b5061034f610c53565b60405161035c91906142fd565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190613dd9565b610ce5565b60405161039991906142c7565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613cc0565b610d03565b6040516103d691906142c7565b60405180910390f35b3480156103eb57600080fd5b506103f4610d23565b60405161040191906142e2565b60405180910390f35b34801561041657600080fd5b5061041f610d49565b60405161042c91906144bf565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190613cc0565b610d53565b005b34801561046a57600080fd5b5061048560048036038101906104809190613d4e565b610e2c565b60405161049291906142c7565b60405180910390f35b3480156104a757600080fd5b506104b0610f06565b6040516104bd91906144bf565b60405180910390f35b3480156104d257600080fd5b506104db610f0c565b6040516104e89190614207565b60405180910390f35b3480156104fd57600080fd5b50610506610f30565b60405161051391906144bf565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190613cc0565b610f74565b005b34801561055157600080fd5b5061055a61104d565b60405161056791906144bf565b60405180910390f35b34801561057c57600080fd5b50610585611053565b6040516105929190614564565b60405180910390f35b3480156105a757600080fd5b506105b061106a565b6040516105bd9190614222565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190613d9d565b611090565b005b3480156105fb57600080fd5b5061061660048036038101906106119190613dd9565b611180565b60405161062391906142c7565b60405180910390f35b34801561063857600080fd5b50610653600480360381019061064e9190613e3e565b611233565b005b34801561066157600080fd5b5061066a6112d2565b60405161067791906144bf565b60405180910390f35b34801561068c57600080fd5b506106956112d8565b6040516106a29190614207565b60405180910390f35b3480156106b757600080fd5b506106c06112fe565b6040516106cd91906142c7565b60405180910390f35b3480156106e257600080fd5b506106eb611311565b6040516106f891906144bf565b60405180910390f35b34801561070d57600080fd5b5061072860048036038101906107239190613cc0565b611319565b6040516107359190614207565b60405180910390f35b34801561074a57600080fd5b50610753611783565b60405161076091906144bf565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190613e3e565b61178d565b005b34801561079e57600080fd5b506107b960048036038101906107b49190613cc0565b61182c565b6040516107c691906144bf565b60405180910390f35b3480156107db57600080fd5b506107e4611875565b005b3480156107f257600080fd5b506107fb6119c8565b60405161080891906144bf565b60405180910390f35b34801561081d57600080fd5b5061083860048036038101906108339190613eb6565b6119ce565b005b34801561084657600080fd5b5061084f611ad3565b60405161085c9190614222565b60405180910390f35b34801561087157600080fd5b5061087a611af9565b6040516108879190614207565b60405180910390f35b34801561089c57600080fd5b506108a5611b22565b6040516108b291906142fd565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190613cc0565b611bb4565b6040516108ef91906142c7565b60405180910390f35b34801561090457600080fd5b5061090d611bd4565b60405161091a91906144bf565b60405180910390f35b34801561092f57600080fd5b5061094a60048036038101906109459190613dd9565b611bde565b60405161095791906142c7565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190613e15565b611cab565b005b34801561099557600080fd5b5061099e611d5d565b005b3480156109ac57600080fd5b506109c760048036038101906109c29190613e3e565b611f31565b005b3480156109d557600080fd5b506109f060048036038101906109eb9190613dd9565b611fd0565b6040516109fd91906142c7565b60405180910390f35b348015610a1257600080fd5b50610a2d6004803603810190610a289190613d9d565b611fef565b005b348015610a3b57600080fd5b50610a446120df565b604051610a5191906144bf565b60405180910390f35b348015610a6657600080fd5b50610a816004803603810190610a7c9190613e15565b6120e5565b005b348015610a8f57600080fd5b50610a98612197565b604051610aa591906142c7565b60405180910390f35b348015610aba57600080fd5b50610ac36121aa565b604051610ad091906144bf565b60405180910390f35b348015610ae557600080fd5b50610b006004803603810190610afb9190613e3e565b6121b0565b005b348015610b0e57600080fd5b50610b296004803603810190610b249190613d12565b612377565b604051610b3691906144bf565b60405180910390f35b348015610b4b57600080fd5b50610b666004803603810190610b619190613e15565b6123fe565b005b348015610b7457600080fd5b50610b8f6004803603810190610b8a9190613cc0565b6124e7565b604051610b9c91906142c7565b60405180910390f35b348015610bb157600080fd5b50610bcc6004803603810190610bc79190613d9d565b612507565b005b348015610bda57600080fd5b50610bf56004803603810190610bf09190613cc0565b6125f7565b005b348015610c0357600080fd5b50610c0c6127b9565b604051610c1991906142c7565b60405180910390f35b348015610c2e57600080fd5b50610c376127cc565b604051610c4491906144bf565b60405180910390f35b60125481565b606060038054610c62906147b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8e906147b9565b8015610cdb5780601f10610cb057610100808354040283529160200191610cdb565b820191906000526020600020905b815481529060010190602001808311610cbe57829003601f168201915b5050505050905090565b6000610cf9610cf2612830565b8484612838565b6001905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600654905090565b610d5b612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf906143ff565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610e39848484612a03565b50610efb84610e46612830565b610ef685604051806060016040528060288152602001614c3a60289139600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610eac612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b600190509392505050565b60085481565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000610f6f610f5e7f000000000000000000000000000000000000000000000000000000000000dead61182c565b60065461314890919063ffffffff16565b905090565b610f7c612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611000906143ff565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b6000600560009054906101000a900460ff16905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611098612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c906143ff565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061122961118d612830565b8461122485600b600061119e612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b612838565b6001905092915050565b61123b612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf906143ff565b60405180910390fd5b8060138190555050565b60145481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b600042905090565b6000611323612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a7906143ff565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113fb57600080fd5b505afa15801561140f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114339190613ce9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561149557600080fd5b505afa1580156114a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114cd9190613ce9565b6040518363ffffffff1660e01b81526004016114ea92919061423d565b60206040518083038186803b15801561150257600080fd5b505afa158015611516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153a9190613ce9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116fb578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b757600080fd5b505afa1580156115cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ef9190613ce9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561165157600080fd5b505afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613ce9565b6040518363ffffffff1660e01b81526004016116a692919061423d565b602060405180830381600087803b1580156116c057600080fd5b505af11580156116d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f89190613ce9565b91505b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b6000600254905090565b611795612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611822576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611819906143ff565b60405180910390fd5b8060128190555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61187d612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611901906143ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6119d6612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5a906143ff565b60405180910390fd5b83600781905550826008819055508160098190555080601481905550611aaa600954611a9c6008546007546127d290919063ffffffff16565b6127d290919063ffffffff16565b601581905550611ac76014546015546127d290919063ffffffff16565b60168190555050505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b31906147b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611b5d906147b9565b8015611baa5780601f10611b7f57610100808354040283529160200191611baa565b820191906000526020600020905b815481529060010190602001808311611b8d57829003601f168201915b5050505050905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601354905090565b6000611ca1611beb612830565b84611c9c85604051806060016040528060258152602001614c6260259139600b6000611c15612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b6001905092915050565b611cb3612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d37906143ff565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de49061449f565b60405180910390fd5b6002544211611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e289061447f565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611f39612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd906143ff565b60405180910390fd5b8060118190555050565b6000611fe4611fdd612830565b8484612a03565b506001905092915050565b611ff7612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207b906143ff565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60075481565b6120ed612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461217a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612171906143ff565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b601860169054906101000a900460ff1681565b60155481565b6121b8612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c906143ff565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426122f391906145d4565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612406612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a906143ff565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516124dc91906142c7565b60405180910390a150565b600c6020528060005260406000206000915054906101000a900460ff1681565b61250f612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461259c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612593906143ff565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6125ff612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461268c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612683906143ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f39061433f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860179054906101000a900460ff1681565b60095481565b60008082846127e191906145d4565b905083811015612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d9061437f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f9061445f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290f9061435f565b60405180910390fd5b80600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f691906144bf565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b9061443f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb9061431f565b60405180910390fd5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b885750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbe9061439f565b60405180910390fd5b60008211612c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c019061441f565b60405180910390fd5b601860149054906101000a900460ff1615612c3157612c2a848484613192565b90506130dd565b612c39611af9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612ca75750612c77611af9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612cf257601154821115612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce8906143bf565b60405180910390fd5b5b6000612cfd3061182c565b905060006013548210159050808015612d235750601860149054906101000a900460ff16155b8015612d7d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d955750601860159054906101000a900460ff165b15612dbf57601860169054906101000a900460ff1615612db55760135491505b612dbe82613365565b5b612e48846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f2e5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4257612f3d87878761352c565b612f44565b845b9050601860179054906101000a900460ff168015612fac5750600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fdb57601254612fcf82612fc18961182c565b6127d290919063ffffffff16565b1115612fda57600080fd5b5b61302d81600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130cd91906144bf565b60405180910390a3600193505050505b9392505050565b600083831115829061312c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312391906142fd565b60405180910390fd5b506000838561313b91906146b5565b9050809150509392505050565b600061318a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130e4565b905092915050565b600061321d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b282600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161335291906144bf565b60405180910390a3600190509392505050565b6001601860146101000a81548160ff02191690831515021790555060006133be60026133b06007546133a2601554876136f390919063ffffffff16565b61373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006133d5828461314890919063ffffffff16565b90506133e0816137b8565b6000479050600061341161340060026007546136f390919063ffffffff16565b60155461314890919063ffffffff16565b9050600061344f6002613441846134336007548861373d90919063ffffffff16565b6136f390919063ffffffff16565b6136f390919063ffffffff16565b9050600061347a8361346c6009548761373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006134a382613495858861314890919063ffffffff16565b61314890919063ffffffff16565b90506134d1600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613ab5565b6134fd601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613ab5565b6135078784613b00565b505050505050506000601860146101000a81548160ff02191690831515021790555050565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135b1576135ac606461359e6015548661373d90919063ffffffff16565b6136f390919063ffffffff16565b6135da565b6135d960646135cb6016548661373d90919063ffffffff16565b6136f390919063ffffffff16565b5b905061362e81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ce91906144bf565b60405180910390a36136e9818461314890919063ffffffff16565b9150509392505050565b600061373583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bf4565b905092915050565b60008083141561375057600090506137b2565b6000828461375e919061465b565b905082848261376d919061462a565b146137ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a4906143df565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156137fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156138295781602001602082028036833780820191505090505b5090503081600081518110613867577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561390957600080fd5b505afa15801561391d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139419190613ce9565b8160018151811061397b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139e230601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613a4695949392919061450a565b600060405180830381600087803b158015613a6057600080fd5b505af1158015613a74573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613aa99291906144da565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613afb573d6000803e3d6000fd5b505050565b613b2d30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b79611af9565b426040518863ffffffff1660e01b8152600401613b9b96959493929190614266565b6060604051808303818588803b158015613bb457600080fd5b505af1158015613bc8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613bed9190613e67565b5050505050565b60008083118290613c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3291906142fd565b60405180910390fd5b5060008385613c4a919061462a565b9050809150509392505050565b600081359050613c6681614bf4565b92915050565b600081519050613c7b81614bf4565b92915050565b600081359050613c9081614c0b565b92915050565b600081359050613ca581614c22565b92915050565b600081519050613cba81614c22565b92915050565b600060208284031215613cd257600080fd5b6000613ce084828501613c57565b91505092915050565b600060208284031215613cfb57600080fd5b6000613d0984828501613c6c565b91505092915050565b60008060408385031215613d2557600080fd5b6000613d3385828601613c57565b9250506020613d4485828601613c57565b9150509250929050565b600080600060608486031215613d6357600080fd5b6000613d7186828701613c57565b9350506020613d8286828701613c57565b9250506040613d9386828701613c96565b9150509250925092565b60008060408385031215613db057600080fd5b6000613dbe85828601613c57565b9250506020613dcf85828601613c81565b9150509250929050565b60008060408385031215613dec57600080fd5b6000613dfa85828601613c57565b9250506020613e0b85828601613c96565b9150509250929050565b600060208284031215613e2757600080fd5b6000613e3584828501613c81565b91505092915050565b600060208284031215613e5057600080fd5b6000613e5e84828501613c96565b91505092915050565b600080600060608486031215613e7c57600080fd5b6000613e8a86828701613cab565b9350506020613e9b86828701613cab565b9250506040613eac86828701613cab565b9150509250925092565b60008060008060808587031215613ecc57600080fd5b6000613eda87828801613c96565b9450506020613eeb87828801613c96565b9350506040613efc87828801613c96565b9250506060613f0d87828801613c96565b91505092959194509250565b6000613f258383613f40565b60208301905092915050565b613f3a816146fb565b82525050565b613f49816146e9565b82525050565b613f58816146e9565b82525050565b6000613f698261458f565b613f7381856145b2565b9350613f7e8361457f565b8060005b83811015613faf578151613f968882613f19565b9750613fa1836145a5565b925050600181019050613f82565b5085935050505092915050565b613fc58161470d565b82525050565b613fd481614750565b82525050565b613fe381614774565b82525050565b6000613ff48261459a565b613ffe81856145c3565b935061400e818560208601614786565b61401781614878565b840191505092915050565b600061402f6023836145c3565b915061403a82614889565b604082019050919050565b60006140526026836145c3565b915061405d826148d8565b604082019050919050565b60006140756022836145c3565b915061408082614927565b604082019050919050565b6000614098601b836145c3565b91506140a382614976565b602082019050919050565b60006140bb601f836145c3565b91506140c68261499f565b602082019050919050565b60006140de6028836145c3565b91506140e9826149c8565b604082019050919050565b60006141016021836145c3565b915061410c82614a17565b604082019050919050565b60006141246020836145c3565b915061412f82614a66565b602082019050919050565b60006141476029836145c3565b915061415282614a8f565b604082019050919050565b600061416a6025836145c3565b915061417582614ade565b604082019050919050565b600061418d6024836145c3565b915061419882614b2d565b604082019050919050565b60006141b0601f836145c3565b91506141bb82614b7c565b602082019050919050565b60006141d36023836145c3565b91506141de82614ba5565b604082019050919050565b6141f281614739565b82525050565b61420181614743565b82525050565b600060208201905061421c6000830184613f4f565b92915050565b60006020820190506142376000830184613f31565b92915050565b60006040820190506142526000830185613f4f565b61425f6020830184613f4f565b9392505050565b600060c08201905061427b6000830189613f4f565b61428860208301886141e9565b6142956040830187613fda565b6142a26060830186613fda565b6142af6080830185613f4f565b6142bc60a08301846141e9565b979650505050505050565b60006020820190506142dc6000830184613fbc565b92915050565b60006020820190506142f76000830184613fcb565b92915050565b600060208201905081810360008301526143178184613fe9565b905092915050565b6000602082019050818103600083015261433881614022565b9050919050565b6000602082019050818103600083015261435881614045565b9050919050565b6000602082019050818103600083015261437881614068565b9050919050565b600060208201905081810360008301526143988161408b565b9050919050565b600060208201905081810360008301526143b8816140ae565b9050919050565b600060208201905081810360008301526143d8816140d1565b9050919050565b600060208201905081810360008301526143f8816140f4565b9050919050565b6000602082019050818103600083015261441881614117565b9050919050565b600060208201905081810360008301526144388161413a565b9050919050565b600060208201905081810360008301526144588161415d565b9050919050565b6000602082019050818103600083015261447881614180565b9050919050565b60006020820190508181036000830152614498816141a3565b9050919050565b600060208201905081810360008301526144b8816141c6565b9050919050565b60006020820190506144d460008301846141e9565b92915050565b60006040820190506144ef60008301856141e9565b81810360208301526145018184613f5e565b90509392505050565b600060a08201905061451f60008301886141e9565b61452c6020830187613fda565b818103604083015261453e8186613f5e565b905061454d6060830185613f4f565b61455a60808301846141e9565b9695505050505050565b600060208201905061457960008301846141f8565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006145df82614739565b91506145ea83614739565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561461f5761461e6147eb565b5b828201905092915050565b600061463582614739565b915061464083614739565b9250826146505761464f61481a565b5b828204905092915050565b600061466682614739565b915061467183614739565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146aa576146a96147eb565b5b828202905092915050565b60006146c082614739565b91506146cb83614739565b9250828210156146de576146dd6147eb565b5b828203905092915050565b60006146f482614719565b9050919050565b600061470682614719565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061475b82614762565b9050919050565b600061476d82614719565b9050919050565b600061477f82614739565b9050919050565b60005b838110156147a4578082015181840152602081019050614789565b838111156147b3576000848401525b50505050565b600060028204905060018216806147d157607f821691505b602082108114156147e5576147e4614849565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b614bfd816146e9565b8114614c0857600080fd5b50565b614c148161470d565b8114614c1f57600080fd5b50565b614c2b81614739565b8114614c3657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200faf144ef0e0321d2ca111c419b6790cec820f86f67ad199249d48df710f8b7b64736f6c63430008030033

Deployed Bytecode Sourcemap

15033:12752:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16078:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17899:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19199:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15631:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16309:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18176:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20498:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22316:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15382:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15928:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21069:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20634:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16016:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18085:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15729:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19713:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18568:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20372:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16203:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16357:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16426:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6537:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21343:696;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6435:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27682:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18284:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6027:148;;;;;;;;;;;;;:::i;:::-;;16269:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19973:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15829:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5802:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17990:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15680:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19071:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18794:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20932:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6873:305;;;;;;;;;;;;;:::i;:::-;;27327:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22141:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27556:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15343:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27442:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16473:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16235:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6635:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18417:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20768:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15578:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19838:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6183:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16525:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15420:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16078:44;;;;:::o;17899:83::-;17936:13;17969:5;17962:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17899:83;:::o;19199:161::-;19274:4;19291:39;19300:12;:10;:12::i;:::-;19314:7;19323:6;19291:8;:39::i;:::-;19348:4;19341:11;;19199:161;;;;:::o;15631:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;16309:41::-;;;;;;;;;;;;;:::o;18176:100::-;18229:7;18256:12;;18249:19;;18176:100;:::o;20498:128::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20607:10:::1;20581:15;;:37;;;;;;;;;;;;;;;;;;20498:128:::0;:::o;22316:313::-;22414:4;22431:36;22441:6;22449:9;22460:6;22431:9;:36::i;:::-;;22478:121;22487:6;22495:12;:10;:12::i;:::-;22509:89;22547:6;22509:89;;;;;;;;;;;;;;;;;:11;:19;22521:6;22509:19;;;;;;;;;;;;;;;:33;22529:12;:10;:12::i;:::-;22509:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22478:8;:121::i;:::-;22617:4;22610:11;;22316:313;;;;;:::o;15382:31::-;;;;:::o;15928:81::-;;;:::o;21069:128::-;21122:7;21149:40;21166:22;21176:11;21166:9;:22::i;:::-;21149:12;;:16;;:40;;;;:::i;:::-;21142:47;;21069:128;:::o;20634:126::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20741:10:::1;20716:14;;:36;;;;;;;;;;;;;;;;;;20634:126:::0;:::o;16016:41::-;;;;:::o;18085:83::-;18126:5;18151:9;;;;;;;;;;;18144:16;;18085:83;:::o;15729:92::-;;;;;;;;;;;;;:::o;19713:117::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19814:8:::1;19795:7;:16;19803:7;19795:16;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;19713:117:::0;;:::o;18568:218::-;18656:4;18673:83;18682:12;:10;:12::i;:::-;18696:7;18705:50;18744:10;18705:11;:25;18717:12;:10;:12::i;:::-;18705:25;;;;;;;;;;;;;;;:34;18731:7;18705:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18673:8;:83::i;:::-;18774:4;18767:11;;18568:218;;;;:::o;20372:118::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20474:8:::1;20448:23;:34;;;;20372:118:::0;:::o;16203:23::-;;;;:::o;16357:28::-;;;;;;;;;;;;;:::o;16426:40::-;;;;;;;;;;;;;:::o;6537:90::-;6577:7;6604:15;6597:22;;6537:90;:::o;21343:696::-;21423:22;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21460:35:::1;21517:16;21460:74;;21583:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21565:53;;;21627:4;21634:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21565:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21548:110;;21700:1;21674:28;;:14;:28;;;21671:225;;;21788:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21770:74;;;21853:4;21860:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21770:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21753:131;;21671:225;21924:14;21908:13;;:30;;;;;;;;;;;;;;;;;;21990:16;21972:15;;:34;;;;;;;;;;;;;;;;;;6006:1;21343:696:::0;;;:::o;6435:90::-;6481:7;6508:9;;6501:16;;6435:90;:::o;27682:98::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27764:8:::1;27751:9;:21;;;;27682:98:::0;:::o;18284:119::-;18350:7;18377:9;:18;18387:7;18377:18;;;;;;;;;;;;;;;;18370:25;;18284:119;;;:::o;6027:148::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6134:1:::1;6097:40;;6118:6;::::0;::::1;;;;;;;;6097:40;;;;;;;;;;;;6165:1;6148:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6027:148::o:0;16269:27::-;;;;:::o;19973:391::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20129:15:::1;20113:13;:31;;;;20170:15;20155:12;:30;;;;20207:13;20196:8;:24;;;;20238:9;20231:4;:16;;;;20271:45;20307:8;;20271:31;20289:12;;20271:13;;:17;;:31;;;;:::i;:::-;:35;;:45;;;;:::i;:::-;20260:8;:56;;;;20338:18;20351:4;;20338:8;;:12;;:18;;;;:::i;:::-;20327:8;:29;;;;19973:391:::0;;;;:::o;15829:91::-;;;;;;;;;;;;;:::o;5802:79::-;5840:7;5867:6;;;;;;;;;;;5860:13;;5802:79;:::o;17990:87::-;18029:13;18062:7;18055:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17990:87;:::o;15680:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;19071:120::-;19133:7;19160:23;;19153:30;;19071:120;:::o;18794:269::-;18887:4;18904:129;18913:12;:10;:12::i;:::-;18927:7;18936:96;18975:15;18936:96;;;;;;;;;;;;;;;;;:11;:25;18948:12;:10;:12::i;:::-;18936:25;;;;;;;;;;;;;;;:34;18962:7;18936:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18904:8;:129::i;:::-;19051:4;19044:11;;18794:269;;;;:::o;20932:125::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21041:8:::1;21013:25;;:36;;;;;;;;;;;;;;;;;;20932:125:::0;:::o;6873:305::-;6943:10;6925:28;;:14;;;;;;;;;;;:28;;;6917:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7030:9;;7012:15;:27;7004:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7121:14;;;;;;;;;;;7092:44;;7113:6;;;;;;;;;;7092:44;;;;;;;;;;;;7156:14;;;;;;;;;;;7147:6;;:23;;;;;;;;;;;;;;;;;;6873:305::o;27327:105::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27413:11:::1;27404:6;:20;;;;27327:105:::0;:::o;22141:167::-;22219:4;22236:42;22246:12;:10;:12::i;:::-;22260:9;22271:6;22236:9;:42::i;:::-;;22296:4;22289:11;;22141:167;;;;:::o;27556:116::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27658:6:::1;27638:9;:17;27648:6;27638:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;27556:116:::0;;:::o;15343:32::-;;;;:::o;27442:104::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27530:8:::1;27511:16;;:27;;;;;;;;;;;;;;;;;;27442:104:::0;:::o;16473:45::-;;;;;;;;;;;;;:::o;16235:27::-;;;;:::o;6635:226::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6716:6:::1;::::0;::::1;;;;;;;;6699:14;;:23;;;;;;;;;;;;;;;;;;6750:1;6733:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6793:4;6775:15;:22;;;;:::i;:::-;6763:9;:34;;;;6850:1;6813:40;;6834:6;::::0;::::1;;;;;;;;6813:40;;;;;;;;;;;;6635:226:::0;:::o;18417:143::-;18498:7;18525:11;:18;18537:5;18525:18;;;;;;;;;;;;;;;:27;18544:7;18525:27;;;;;;;;;;;;;;;;18518:34;;18417:143;;;;:::o;20768:156::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20854:8:::1;20830:21;;:32;;;;;;;;;;;;;;;;;;20878:38;20907:8;20878:38;;;;;;:::i;:::-;;;;;;;;20768:156:::0;:::o;15578:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;19838:127::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19949:8:::1;19924:13;:22;19938:7;19924:22;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19838:127:::0;;:::o;6183:244::-;5946:12;:10;:12::i;:::-;5936:22;;:6;;;;;;;;;;:22;;;5928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6292:1:::1;6272:22;;:8;:22;;;;6264:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6382:8;6353:38;;6374:6;::::0;::::1;;;;;;;;6353:38;;;;;;;;;;;;6411:8;6402:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6183:244:::0;:::o;16525:35::-;;;;;;;;;;;;;:::o;15420:27::-;;;;:::o;1172:181::-;1230:7;1250:9;1266:1;1262;:5;;;;:::i;:::-;1250:17;;1291:1;1286;:6;;1278:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1344:1;1337:8;;;1172:181;;;;:::o;104:115::-;157:15;200:10;185:26;;104:115;:::o;19368:337::-;19478:1;19461:19;;:5;:19;;;;19453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19559:1;19540:21;;:7;:21;;;;19532:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19643:6;19613:11;:18;19625:5;19613:18;;;;;;;;;;;;;;;:27;19632:7;19613:27;;;;;;;;;;;;;;;:36;;;;19681:7;19665:32;;19674:5;19665:32;;;19690:6;19665:32;;;;;;:::i;:::-;;;;;;;;19368:337;;;:::o;22637:1846::-;22724:4;22769:1;22751:20;;:6;:20;;;;22743:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22853:1;22832:23;;:9;:23;;;;22824:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22915:7;:15;22923:6;22915:15;;;;;;;;;;;;;;;;;;;;;;;;;22914:16;:39;;;;;22935:7;:18;22943:9;22935:18;;;;;;;;;;;;;;;;;;;;;;;;;22934:19;22914:39;22906:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;23017:1;23008:6;:10;23000:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23088:16;;;;;;;;;;;23085:1391;;;23138:41;23153:6;23161:9;23172:6;23138:14;:41::i;:::-;23131:48;;;;23085:1391;23244:7;:5;:7::i;:::-;23234:17;;:6;:17;;;;:41;;;;;23268:7;:5;:7::i;:::-;23255:20;;:9;:20;;;;23234:41;23231:150;;;23314:6;;23304;:16;;23296:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23231:150;23409:28;23440:24;23458:4;23440:9;:24::i;:::-;23409:55;;23479:28;23534:23;;23510:20;:47;;23479:78;;23590:23;:44;;;;;23618:16;;;;;;;;;;;23617:17;23590:44;:71;;;;;23648:13;;;;;;;;;;;23638:23;;:6;:23;;;;23590:71;:96;;;;;23665:21;;;;;;;;;;;23590:96;23586:307;;;23724:25;;;;;;;;;;;23721:97;;;23795:23;;23772:46;;23721:97;23837:36;23852:20;23837:14;:36::i;:::-;23586:307;23929:53;23951:6;23929:53;;;;;;;;;;;;;;;;;:9;:17;23939:6;23929:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23909:9;:17;23919:6;23909:17;;;;;;;;;;;;;;;:73;;;;23999:19;24022:13;:21;24036:6;24022:21;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;24047:13;:24;24061:9;24047:24;;;;;;;;;;;;;;;;;;;;;;;;;24022:49;24021:139;;24127:33;24134:6;24142:9;24153:6;24127;:33::i;:::-;24021:139;;;24118:6;24021:139;23999:161;;24180:16;;;;;;;;;;;:41;;;;;24201:9;:20;24211:9;24201:20;;;;;;;;;;;;;;;;;;;;;;;;;24200:21;24180:41;24177:122;;;24289:9;;24248:37;24273:11;24248:20;24258:9;24248;:20::i;:::-;:24;;:37;;;;:::i;:::-;:50;;24240:59;;;;;;24177:122;24339:37;24364:11;24339:9;:20;24349:9;24339:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;24316:9;:20;24326:9;24316:20;;;;;;;;;;;;;;;:60;;;;24415:9;24398:40;;24407:6;24398:40;;;24426:11;24398:40;;;;;;:::i;:::-;;;;;;;;24460:4;24453:11;;;;;22637:1846;;;;;;:::o;1505:192::-;1591:7;1624:1;1619;:6;;1627:12;1611:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1651:9;1667:1;1663;:5;;;;:::i;:::-;1651:17;;1688:1;1681:8;;;1505:192;;;;;:::o;1361:136::-;1419:7;1446:43;1450:1;1453;1446:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1439:50;;1361:136;;;;:::o;24491:330::-;24584:4;24621:53;24643:6;24621:53;;;;;;;;;;;;;;;;;:9;:17;24631:6;24621:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24601:9;:17;24611:6;24601:17;;;;;;;;;;;;;;;:73;;;;24708:32;24733:6;24708:9;:20;24718:9;24708:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24685:9;:20;24695:9;24685:20;;;;;;;;;;;;;;;:55;;;;24773:9;24756:35;;24765:6;24756:35;;;24784:6;24756:35;;;;;;:::i;:::-;;;;;;;;24809:4;24802:11;;24491:330;;;;;:::o;24829:832::-;17002:4;16983:16;;:23;;;;;;;;;;;;;;;;;;24910:19:::1;24932:47;24977:1;24932:40;24958:13;;24932:21;24944:8;;24932:7;:11;;:21;;;;:::i;:::-;:25;;:40;;;;:::i;:::-;:44;;:47;;;;:::i;:::-;24910:69;;24990:21;25014:24;25026:11;25014:7;:11;;:24;;;;:::i;:::-;24990:48;;25051:31;25068:13;25051:16;:31::i;:::-;25093:22;25118:21;25093:46;;25152:19;25174:34;25187:20;25205:1;25187:13;;:17;;:20;;;;:::i;:::-;25174:8;;:12;;:34;;;;:::i;:::-;25152:56;;25229:23;25255:57;25310:1;25255:50;25293:11;25255:33;25274:13;;25255:14;:18;;:33;;;;:::i;:::-;:37;;:50;;;;:::i;:::-;:54;;:57;;;;:::i;:::-;25229:83;;25323:17;25343:45;25376:11;25343:28;25362:8;;25343:14;:18;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;25323:65;;25399:23;25425:50;25465:9;25425:35;25444:15;25425:14;:18;;:35;;;;:::i;:::-;:39;;:50;;;;:::i;:::-;25399:76;;25488:54;25509:15;;;;;;;;;;;25526;25488:20;:54::i;:::-;25553:47;25574:14;;;;;;;;;;;25590:9;25553:20;:47::i;:::-;25611:42;25624:11;25637:15;25611:12;:42::i;:::-;17017:1;;;;;;;17048:5:::0;17029:16;;:24;;;;;;;;;;;;;;;;;;24829:832;:::o;26868:445::-;26953:7;26983:17;27016:13;;;;;;;;;;;27003:26;;:9;:26;;;:124;;27098:29;27123:3;27098:20;27109:8;;27098:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;27003:124;;;27032:29;27057:3;27032:20;27043:8;;27032:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;27003:124;26983:144;;27167:39;27196:9;27167;:24;27185:4;27167:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27140:9;:24;27158:4;27140:24;;;;;;;;;;;;;;;:66;;;;27247:4;27222:42;;27231:6;27222:42;;;27254:9;27222:42;;;;;;:::i;:::-;;;;;;;;27284:21;27295:9;27284:6;:10;;:21;;;;:::i;:::-;27277:28;;;26868:445;;;;;:::o;1963:132::-;2021:7;2048:39;2052:1;2055;2048:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2041:46;;1963:132;;;;:::o;1705:250::-;1763:7;1792:1;1787;:6;1783:47;;;1817:1;1810:8;;;;1783:47;1842:9;1858:1;1854;:5;;;;:::i;:::-;1842:17;;1887:1;1882;1878;:5;;;;:::i;:::-;:10;1870:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1946:1;1939:8;;;1705:250;;;;;:::o;25673:666::-;25799:21;25837:1;25823:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25799:40;;25868:4;25850;25855:1;25850:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;25894:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25884:4;25889:1;25884:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;25929:62;25946:4;25961:15;;;;;;;;;;;25979:11;25929:8;:62::i;:::-;26030:15;;;;;;;;;;;:66;;;26111:11;26137:1;26181:4;26208;26244:15;26030:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26296:35;26313:11;26326:4;26296:35;;;;;;;:::i;:::-;;;;;;;;25673:666;;:::o;21205:126::-;21297:9;:18;;:26;21316:6;21297:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21205:126;;:::o;26347:513::-;26495:62;26512:4;26527:15;;;;;;;;;;;26545:11;26495:8;:62::i;:::-;26600:15;;;;;;;;;;;:31;;;26639:9;26672:4;26692:11;26718:1;26761;26804:7;:5;:7::i;:::-;26826:15;26600:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26347:513;;:::o;2103:278::-;2189:7;2221:1;2217;:5;2224:12;2209:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2248:9;2264:1;2260;:5;;;;:::i;:::-;2248:17;;2372:1;2365:8;;;2103:278;;;;;:::o;7:139:1:-;;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;301:133::-;;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;;;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;;;;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;;;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;;;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:596::-;;;;3766:2;3754:9;3745:7;3741:23;3737:32;3734:2;;;3782:1;3779;3772:12;3734:2;3825:1;3850:64;3906:7;3897:6;3886:9;3882:22;3850:64;:::i;:::-;3840:74;;3796:128;3963:2;3989:64;4045:7;4036:6;4025:9;4021:22;3989:64;:::i;:::-;3979:74;;3934:129;4102:2;4128:64;4184:7;4175:6;4164:9;4160:22;4128:64;:::i;:::-;4118:74;;4073:129;3724:485;;;;;:::o;4215:698::-;;;;;4374:3;4362:9;4353:7;4349:23;4345:33;4342:2;;;4391:1;4388;4381:12;4342:2;4434:1;4459:53;4504:7;4495:6;4484:9;4480:22;4459:53;:::i;:::-;4449:63;;4405:117;4561:2;4587:53;4632:7;4623:6;4612:9;4608:22;4587:53;:::i;:::-;4577:63;;4532:118;4689:2;4715:53;4760:7;4751:6;4740:9;4736:22;4715:53;:::i;:::-;4705:63;;4660:118;4817:2;4843:53;4888:7;4879:6;4868:9;4864:22;4843:53;:::i;:::-;4833:63;;4788:118;4332:581;;;;;;;:::o;4919:179::-;;5009:46;5051:3;5043:6;5009:46;:::i;:::-;5087:4;5082:3;5078:14;5064:28;;4999:99;;;;:::o;5104:142::-;5207:32;5233:5;5207:32;:::i;:::-;5202:3;5195:45;5185:61;;:::o;5252:108::-;5329:24;5347:5;5329:24;:::i;:::-;5324:3;5317:37;5307:53;;:::o;5366:118::-;5453:24;5471:5;5453:24;:::i;:::-;5448:3;5441:37;5431:53;;:::o;5520:732::-;;5668:54;5716:5;5668:54;:::i;:::-;5738:86;5817:6;5812:3;5738:86;:::i;:::-;5731:93;;5848:56;5898:5;5848:56;:::i;:::-;5927:7;5958:1;5943:284;5968:6;5965:1;5962:13;5943:284;;;6044:6;6038:13;6071:63;6130:3;6115:13;6071:63;:::i;:::-;6064:70;;6157:60;6210:6;6157:60;:::i;:::-;6147:70;;6003:224;5990:1;5987;5983:9;5978:14;;5943:284;;;5947:14;6243:3;6236:10;;5644:608;;;;;;;:::o;6258:109::-;6339:21;6354:5;6339:21;:::i;:::-;6334:3;6327:34;6317:50;;:::o;6373:185::-;6487:64;6545:5;6487:64;:::i;:::-;6482:3;6475:77;6465:93;;:::o;6564:147::-;6659:45;6698:5;6659:45;:::i;:::-;6654:3;6647:58;6637:74;;:::o;6717:364::-;;6833:39;6866:5;6833:39;:::i;:::-;6888:71;6952:6;6947:3;6888:71;:::i;:::-;6881:78;;6968:52;7013:6;7008:3;7001:4;6994:5;6990:16;6968:52;:::i;:::-;7045:29;7067:6;7045:29;:::i;:::-;7040:3;7036:39;7029:46;;6809:272;;;;;:::o;7087:366::-;;7250:67;7314:2;7309:3;7250:67;:::i;:::-;7243:74;;7326:93;7415:3;7326:93;:::i;:::-;7444:2;7439:3;7435:12;7428:19;;7233:220;;;:::o;7459:366::-;;7622:67;7686:2;7681:3;7622:67;:::i;:::-;7615:74;;7698:93;7787:3;7698:93;:::i;:::-;7816:2;7811:3;7807:12;7800:19;;7605:220;;;:::o;7831:366::-;;7994:67;8058:2;8053:3;7994:67;:::i;:::-;7987:74;;8070:93;8159:3;8070:93;:::i;:::-;8188:2;8183:3;8179:12;8172:19;;7977:220;;;:::o;8203:366::-;;8366:67;8430:2;8425:3;8366:67;:::i;:::-;8359:74;;8442:93;8531:3;8442:93;:::i;:::-;8560:2;8555:3;8551:12;8544:19;;8349:220;;;:::o;8575:366::-;;8738:67;8802:2;8797:3;8738:67;:::i;:::-;8731:74;;8814:93;8903:3;8814:93;:::i;:::-;8932:2;8927:3;8923:12;8916:19;;8721:220;;;:::o;8947:366::-;;9110:67;9174:2;9169:3;9110:67;:::i;:::-;9103:74;;9186:93;9275:3;9186:93;:::i;:::-;9304:2;9299:3;9295:12;9288:19;;9093:220;;;:::o;9319:366::-;;9482:67;9546:2;9541:3;9482:67;:::i;:::-;9475:74;;9558:93;9647:3;9558:93;:::i;:::-;9676:2;9671:3;9667:12;9660:19;;9465:220;;;:::o;9691:366::-;;9854:67;9918:2;9913:3;9854:67;:::i;:::-;9847:74;;9930:93;10019:3;9930:93;:::i;:::-;10048:2;10043:3;10039:12;10032:19;;9837:220;;;:::o;10063:366::-;;10226:67;10290:2;10285:3;10226:67;:::i;:::-;10219:74;;10302:93;10391:3;10302:93;:::i;:::-;10420:2;10415:3;10411:12;10404:19;;10209:220;;;:::o;10435:366::-;;10598:67;10662:2;10657:3;10598:67;:::i;:::-;10591:74;;10674:93;10763:3;10674:93;:::i;:::-;10792:2;10787:3;10783:12;10776:19;;10581:220;;;:::o;10807:366::-;;10970:67;11034:2;11029:3;10970:67;:::i;:::-;10963:74;;11046:93;11135:3;11046:93;:::i;:::-;11164:2;11159:3;11155:12;11148:19;;10953:220;;;:::o;11179:366::-;;11342:67;11406:2;11401:3;11342:67;:::i;:::-;11335:74;;11418:93;11507:3;11418:93;:::i;:::-;11536:2;11531:3;11527:12;11520:19;;11325:220;;;:::o;11551:366::-;;11714:67;11778:2;11773:3;11714:67;:::i;:::-;11707:74;;11790:93;11879:3;11790:93;:::i;:::-;11908:2;11903:3;11899:12;11892:19;;11697:220;;;:::o;11923:118::-;12010:24;12028:5;12010:24;:::i;:::-;12005:3;11998:37;11988:53;;:::o;12047:112::-;12130:22;12146:5;12130:22;:::i;:::-;12125:3;12118:35;12108:51;;:::o;12165:222::-;;12296:2;12285:9;12281:18;12273:26;;12309:71;12377:1;12366:9;12362:17;12353:6;12309:71;:::i;:::-;12263:124;;;;:::o;12393:254::-;;12540:2;12529:9;12525:18;12517:26;;12553:87;12637:1;12626:9;12622:17;12613:6;12553:87;:::i;:::-;12507:140;;;;:::o;12653:332::-;;12812:2;12801:9;12797:18;12789:26;;12825:71;12893:1;12882:9;12878:17;12869:6;12825:71;:::i;:::-;12906:72;12974:2;12963:9;12959:18;12950:6;12906:72;:::i;:::-;12779:206;;;;;:::o;12991:807::-;;13278:3;13267:9;13263:19;13255:27;;13292:71;13360:1;13349:9;13345:17;13336:6;13292:71;:::i;:::-;13373:72;13441:2;13430:9;13426:18;13417:6;13373:72;:::i;:::-;13455:80;13531:2;13520:9;13516:18;13507:6;13455:80;:::i;:::-;13545;13621:2;13610:9;13606:18;13597:6;13545:80;:::i;:::-;13635:73;13703:3;13692:9;13688:19;13679:6;13635:73;:::i;:::-;13718;13786:3;13775:9;13771:19;13762:6;13718:73;:::i;:::-;13245:553;;;;;;;;;:::o;13804:210::-;;13929:2;13918:9;13914:18;13906:26;;13942:65;14004:1;13993:9;13989:17;13980:6;13942:65;:::i;:::-;13896:118;;;;:::o;14020:276::-;;14178:2;14167:9;14163:18;14155:26;;14191:98;14286:1;14275:9;14271:17;14262:6;14191:98;:::i;:::-;14145:151;;;;:::o;14302:313::-;;14453:2;14442:9;14438:18;14430:26;;14502:9;14496:4;14492:20;14488:1;14477:9;14473:17;14466:47;14530:78;14603:4;14594:6;14530:78;:::i;:::-;14522:86;;14420:195;;;;:::o;14621:419::-;;14825:2;14814:9;14810:18;14802:26;;14874:9;14868:4;14864:20;14860:1;14849:9;14845:17;14838:47;14902:131;15028:4;14902:131;:::i;:::-;14894:139;;14792:248;;;:::o;15046:419::-;;15250:2;15239:9;15235:18;15227:26;;15299:9;15293:4;15289:20;15285:1;15274:9;15270:17;15263:47;15327:131;15453:4;15327:131;:::i;:::-;15319:139;;15217:248;;;:::o;15471:419::-;;15675:2;15664:9;15660:18;15652:26;;15724:9;15718:4;15714:20;15710:1;15699:9;15695:17;15688:47;15752:131;15878:4;15752:131;:::i;:::-;15744:139;;15642:248;;;:::o;15896:419::-;;16100:2;16089:9;16085:18;16077:26;;16149:9;16143:4;16139:20;16135:1;16124:9;16120:17;16113:47;16177:131;16303:4;16177:131;:::i;:::-;16169:139;;16067:248;;;:::o;16321:419::-;;16525:2;16514:9;16510:18;16502:26;;16574:9;16568:4;16564:20;16560:1;16549:9;16545:17;16538:47;16602:131;16728:4;16602:131;:::i;:::-;16594:139;;16492:248;;;:::o;16746:419::-;;16950:2;16939:9;16935:18;16927:26;;16999:9;16993:4;16989:20;16985:1;16974:9;16970:17;16963:47;17027:131;17153:4;17027:131;:::i;:::-;17019:139;;16917:248;;;:::o;17171:419::-;;17375:2;17364:9;17360:18;17352:26;;17424:9;17418:4;17414:20;17410:1;17399:9;17395:17;17388:47;17452:131;17578:4;17452:131;:::i;:::-;17444:139;;17342:248;;;:::o;17596:419::-;;17800:2;17789:9;17785:18;17777:26;;17849:9;17843:4;17839:20;17835:1;17824:9;17820:17;17813:47;17877:131;18003:4;17877:131;:::i;:::-;17869:139;;17767:248;;;:::o;18021:419::-;;18225:2;18214:9;18210:18;18202:26;;18274:9;18268:4;18264:20;18260:1;18249:9;18245:17;18238:47;18302:131;18428:4;18302:131;:::i;:::-;18294:139;;18192:248;;;:::o;18446:419::-;;18650:2;18639:9;18635:18;18627:26;;18699:9;18693:4;18689:20;18685:1;18674:9;18670:17;18663:47;18727:131;18853:4;18727:131;:::i;:::-;18719:139;;18617:248;;;:::o;18871:419::-;;19075:2;19064:9;19060:18;19052:26;;19124:9;19118:4;19114:20;19110:1;19099:9;19095:17;19088:47;19152:131;19278:4;19152:131;:::i;:::-;19144:139;;19042:248;;;:::o;19296:419::-;;19500:2;19489:9;19485:18;19477:26;;19549:9;19543:4;19539:20;19535:1;19524:9;19520:17;19513:47;19577:131;19703:4;19577:131;:::i;:::-;19569:139;;19467:248;;;:::o;19721:419::-;;19925:2;19914:9;19910:18;19902:26;;19974:9;19968:4;19964:20;19960:1;19949:9;19945:17;19938:47;20002:131;20128:4;20002:131;:::i;:::-;19994:139;;19892:248;;;:::o;20146:222::-;;20277:2;20266:9;20262:18;20254:26;;20290:71;20358:1;20347:9;20343:17;20334:6;20290:71;:::i;:::-;20244:124;;;;:::o;20374:483::-;;20583:2;20572:9;20568:18;20560:26;;20596:71;20664:1;20653:9;20649:17;20640:6;20596:71;:::i;:::-;20714:9;20708:4;20704:20;20699:2;20688:9;20684:18;20677:48;20742:108;20845:4;20836:6;20742:108;:::i;:::-;20734:116;;20550:307;;;;;:::o;20863:831::-;;21164:3;21153:9;21149:19;21141:27;;21178:71;21246:1;21235:9;21231:17;21222:6;21178:71;:::i;:::-;21259:80;21335:2;21324:9;21320:18;21311:6;21259:80;:::i;:::-;21386:9;21380:4;21376:20;21371:2;21360:9;21356:18;21349:48;21414:108;21517:4;21508:6;21414:108;:::i;:::-;21406:116;;21532:72;21600:2;21589:9;21585:18;21576:6;21532:72;:::i;:::-;21614:73;21682:3;21671:9;21667:19;21658:6;21614:73;:::i;:::-;21131:563;;;;;;;;:::o;21700:214::-;;21827:2;21816:9;21812:18;21804:26;;21840:67;21904:1;21893:9;21889:17;21880:6;21840:67;:::i;:::-;21794:120;;;;:::o;21920:132::-;;22010:3;22002:11;;22040:4;22035:3;22031:14;22023:22;;21992:60;;;:::o;22058:114::-;;22159:5;22153:12;22143:22;;22132:40;;;:::o;22178:99::-;;22264:5;22258:12;22248:22;;22237:40;;;:::o;22283:113::-;;22385:4;22380:3;22376:14;22368:22;;22358:38;;;:::o;22402:184::-;;22535:6;22530:3;22523:19;22575:4;22570:3;22566:14;22551:29;;22513:73;;;;:::o;22592:169::-;;22710:6;22705:3;22698:19;22750:4;22745:3;22741:14;22726:29;;22688:73;;;;:::o;22767:305::-;;22826:20;22844:1;22826:20;:::i;:::-;22821:25;;22860:20;22878:1;22860:20;:::i;:::-;22855:25;;23014:1;22946:66;22942:74;22939:1;22936:81;22933:2;;;23020:18;;:::i;:::-;22933:2;23064:1;23061;23057:9;23050:16;;22811:261;;;;:::o;23078:185::-;;23135:20;23153:1;23135:20;:::i;:::-;23130:25;;23169:20;23187:1;23169:20;:::i;:::-;23164:25;;23208:1;23198:2;;23213:18;;:::i;:::-;23198:2;23255:1;23252;23248:9;23243:14;;23120:143;;;;:::o;23269:348::-;;23332:20;23350:1;23332:20;:::i;:::-;23327:25;;23366:20;23384:1;23366:20;:::i;:::-;23361:25;;23554:1;23486:66;23482:74;23479:1;23476:81;23471:1;23464:9;23457:17;23453:105;23450:2;;;23561:18;;:::i;:::-;23450:2;23609:1;23606;23602:9;23591:20;;23317:300;;;;:::o;23623:191::-;;23683:20;23701:1;23683:20;:::i;:::-;23678:25;;23717:20;23735:1;23717:20;:::i;:::-;23712:25;;23756:1;23753;23750:8;23747:2;;;23761:18;;:::i;:::-;23747:2;23806:1;23803;23799:9;23791:17;;23668:146;;;;:::o;23820:96::-;;23886:24;23904:5;23886:24;:::i;:::-;23875:35;;23865:51;;;:::o;23922:104::-;;23996:24;24014:5;23996:24;:::i;:::-;23985:35;;23975:51;;;:::o;24032:90::-;;24109:5;24102:13;24095:21;24084:32;;24074:48;;;:::o;24128:126::-;;24205:42;24198:5;24194:54;24183:65;;24173:81;;;:::o;24260:77::-;;24326:5;24315:16;;24305:32;;;:::o;24343:86::-;;24418:4;24411:5;24407:16;24396:27;;24386:43;;;:::o;24435:180::-;;24545:64;24603:5;24545:64;:::i;:::-;24532:77;;24522:93;;;:::o;24621:140::-;;24731:24;24749:5;24731:24;:::i;:::-;24718:37;;24708:53;;;:::o;24767:121::-;;24858:24;24876:5;24858:24;:::i;:::-;24845:37;;24835:53;;;:::o;24894:307::-;24962:1;24972:113;24986:6;24983:1;24980:13;24972:113;;;25071:1;25066:3;25062:11;25056:18;25052:1;25047:3;25043:11;25036:39;25008:2;25005:1;25001:10;24996:15;;24972:113;;;25103:6;25100:1;25097:13;25094:2;;;25183:1;25174:6;25169:3;25165:16;25158:27;25094:2;24943:258;;;;:::o;25207:320::-;;25288:1;25282:4;25278:12;25268:22;;25335:1;25329:4;25325:12;25356:18;25346:2;;25412:4;25404:6;25400:17;25390:27;;25346:2;25474;25466:6;25463:14;25443:18;25440:38;25437:2;;;25493:18;;:::i;:::-;25437:2;25258:269;;;;:::o;25533:180::-;25581:77;25578:1;25571:88;25678:4;25675:1;25668:15;25702:4;25699:1;25692:15;25719:180;25767:77;25764:1;25757:88;25864:4;25861:1;25854:15;25888:4;25885:1;25878:15;25905:180;25953:77;25950:1;25943:88;26050:4;26047:1;26040:15;26074:4;26071:1;26064:15;26091:102;;26183:2;26179:7;26174:2;26167:5;26163:14;26159:28;26149:38;;26139:54;;;:::o;26199:222::-;26339:34;26335:1;26327:6;26323:14;26316:58;26408:5;26403:2;26395:6;26391:15;26384:30;26305:116;:::o;26427:225::-;26567:34;26563:1;26555:6;26551:14;26544:58;26636:8;26631:2;26623:6;26619:15;26612:33;26533:119;:::o;26658:221::-;26798:34;26794:1;26786:6;26782:14;26775:58;26867:4;26862:2;26854:6;26850:15;26843:29;26764:115;:::o;26885:177::-;27025:29;27021:1;27013:6;27009:14;27002:53;26991:71;:::o;27068:181::-;27208:33;27204:1;27196:6;27192:14;27185:57;27174:75;:::o;27255:227::-;27395:34;27391:1;27383:6;27379:14;27372:58;27464:10;27459:2;27451:6;27447:15;27440:35;27361:121;:::o;27488:220::-;27628:34;27624:1;27616:6;27612:14;27605:58;27697:3;27692:2;27684:6;27680:15;27673:28;27594:114;:::o;27714:182::-;27854:34;27850:1;27842:6;27838:14;27831:58;27820:76;:::o;27902:228::-;28042:34;28038:1;28030:6;28026:14;28019:58;28111:11;28106:2;28098:6;28094:15;28087:36;28008:122;:::o;28136:224::-;28276:34;28272:1;28264:6;28260:14;28253:58;28345:7;28340:2;28332:6;28328:15;28321:32;28242:118;:::o;28366:223::-;28506:34;28502:1;28494:6;28490:14;28483:58;28575:6;28570:2;28562:6;28558:15;28551:31;28472:117;:::o;28595:181::-;28735:33;28731:1;28723:6;28719:14;28712:57;28701:75;:::o;28782:222::-;28922:34;28918:1;28910:6;28906:14;28899:58;28991:5;28986:2;28978:6;28974:15;28967:30;28888:116;:::o;29010:122::-;29083:24;29101:5;29083:24;:::i;:::-;29076:5;29073:35;29063:2;;29122:1;29119;29112:12;29063:2;29053:79;:::o;29138:116::-;29208:21;29223:5;29208:21;:::i;:::-;29201:5;29198:32;29188:2;;29244:1;29241;29234:12;29188:2;29178:76;:::o;29260:122::-;29333:24;29351:5;29333:24;:::i;:::-;29326:5;29323:35;29313:2;;29372:1;29369;29362:12;29313:2;29303:79;:::o

Swarm Source

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