ETH Price: $2,367.07 (-4.22%)
Gas: 9.36 Gwei

Contract

0xaA37aBa29aC04a0453Af7022CF19d56c46B0366B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

Transaction Hash
Method
Block
From
To
Approve203684672024-07-23 9:54:5971 days ago1721728499IN
0xaA37aBa2...c46B0366B
0 ETH0.000235025.01161127
Approve163789242023-01-10 20:53:35631 days ago1673384015IN
0xaA37aBa2...c46B0366B
0 ETH0.0007718230.93617852
Approve163729582023-01-10 0:56:11631 days ago1673312171IN
0xaA37aBa2...c46B0366B
0 ETH0.000871718.45546322
Approve163721752023-01-09 22:18:23631 days ago1673302703IN
0xaA37aBa2...c46B0366B
0 ETH0.002549253.97076155
Approve163709012023-01-09 18:00:47632 days ago1673287247IN
0xaA37aBa2...c46B0366B
0 ETH0.0017830137.74931519
Approve163708552023-01-09 17:51:35632 days ago1673286695IN
0xaA37aBa2...c46B0366B
0 ETH0.001503231.82531884
Approve163708432023-01-09 17:49:11632 days ago1673286551IN
0xaA37aBa2...c46B0366B
0 ETH0.001461530.9424451
Approve163708222023-01-09 17:44:59632 days ago1673286299IN
0xaA37aBa2...c46B0366B
0 ETH0.0015549532.92094325
Approve163706992023-01-09 17:20:23632 days ago1673284823IN
0xaA37aBa2...c46B0366B
0 ETH0.0018519139.20811326
Approve163706972023-01-09 17:19:59632 days ago1673284799IN
0xaA37aBa2...c46B0366B
0 ETH0.0017759437.59974047
Approve163706972023-01-09 17:19:59632 days ago1673284799IN
0xaA37aBa2...c46B0366B
0 ETH0.0017759437.59974047
Approve163706962023-01-09 17:19:47632 days ago1673284787IN
0xaA37aBa2...c46B0366B
0 ETH0.0018204238.54128266
Approve163706932023-01-09 17:19:11632 days ago1673284751IN
0xaA37aBa2...c46B0366B
0 ETH0.0019002440.23139189
Approve163706902023-01-09 17:18:35632 days ago1673284715IN
0xaA37aBa2...c46B0366B
0 ETH0.0020114442.58561299
Transfer163706542023-01-09 17:11:23632 days ago1673284283IN
0xaA37aBa2...c46B0366B
0 ETH0.0036526945.2979801
Approve163706382023-01-09 17:08:11632 days ago1673284091IN
0xaA37aBa2...c46B0366B
0 ETH0.002235747.33347357
Approve163702552023-01-09 15:51:35632 days ago1673279495IN
0xaA37aBa2...c46B0366B
0 ETH0.0013957829.55102005
Approve163700032023-01-09 15:00:59632 days ago1673276459IN
0xaA37aBa2...c46B0366B
0 ETH0.0012779227.05583735
Approve163691322023-01-09 12:05:35632 days ago1673265935IN
0xaA37aBa2...c46B0366B
0 ETH0.0007670516.23991589
Approve163690852023-01-09 11:56:11632 days ago1673265371IN
0xaA37aBa2...c46B0366B
0 ETH0.0007203215.25040566
Approve163686982023-01-09 10:38:47632 days ago1673260727IN
0xaA37aBa2...c46B0366B
0 ETH0.0007723516.35193634
Approve163685322023-01-09 10:05:35632 days ago1673258735IN
0xaA37aBa2...c46B0366B
0 ETH0.0007973316.88087458
Approve163684022023-01-09 9:39:35632 days ago1673257175IN
0xaA37aBa2...c46B0366B
0 ETH0.0007789416.49155215
Approve163683882023-01-09 9:36:47632 days ago1673257007IN
0xaA37aBa2...c46B0366B
0 ETH0.0017747237.57388146
Approve163683562023-01-09 9:30:11632 days ago1673256611IN
0xaA37aBa2...c46B0366B
0 ETH0.0006861714.52741146
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
nosleepape

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-09
*/

/*

/*
no Sleep APE
ape if you cant sleep.


https://t.me/NosleepApeETH

Tax will be 0/0


*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
      
        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;
    }
}

contract Ownable is Context {
    address private _owner;

    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(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

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

}

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

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

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

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

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

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

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

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

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

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event 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 nosleepape is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "No Sleep Ape";
    string private _symbol = "NSA";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0x736a0220Ecb54dE7df7AE3CA30983778086E20F9);
    address payable public DeveloperWallet = payable(0x4697E35c0f79Fd9C1Dbd24e381e5edbF38979347);
    address public liquidityReciever;
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public blacklist;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 0;
    uint256 public _buyDeveloperFee = 0;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 0;
    uint256 public _sellDeveloperFee = 0;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 1000000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100);   //0.001%

    uint256 public _maxTxAmount =  _totalSupply.mul(2).div(100);  //2%
    uint256 public _walletMax =   _totalSupply.mul(2).div(100);   //2%

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = 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); 
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[DeveloperWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingWallet] = true;
        isWalletLimitExempt[DeveloperWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[DeveloperWallet] = true;
        isTxLimitExempt[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        isMarketPair[address(uniswapPair)] = true;
        liquidityReciever = address(msg.sender);

        _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 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 setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

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

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

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

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

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

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWallet = payable(newAddress);
    }

    function setLiquidityWalletAddress(address newAddress) external onlyOwner() {
        liquidityReciever = payable(newAddress);
    }

    function setDeveloperWalletAddress(address newAddress) external onlyOwner() {
        DeveloperWallet = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(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)).sub(balanceOf(zeroAddress));
    }

    function setBlacklist(address _adr, bool _status) external onlyOwner {
        blacklist[_adr] = _status;
    }

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

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

     //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(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

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

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!");
            }

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

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

    function rescueStuckedToken(address _token, uint _amount) external onlyOwner {
        IERC20(_token).transfer(msg.sender,_amount);
    }

    function rescueFunds() external onlyOwner {
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os);
    }

    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 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);

        uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
        
        uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
        uint256 tokenForSwap = tAmount.sub(tokenForLp);

        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tokenForSwap);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee);
        uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) {
            payable(marketingWallet).transfer(amountETHMarketing);
        }

        if(amountETHDeveloper > 0) {
            payable(DeveloperWallet).transfer(amountETHDeveloper);
        }         

        if(amountETHLiquidity > 0 && tokenForLp > 0) {
            addLiquidity(tokenForLp, amountETHLiquidity);
        }
    }
    
    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
            liquidityReciever,
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    /* AirDrop Function*/

    function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner {
        address account = msg.sender;
        require(_address.length == _tokens.length,"Error: Mismatch Length");
        uint tokenCount;
        for(uint i = 0; i < _tokens.length; i++) {
            tokenCount += _tokens[i];
        }
        require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!");
        _balances[account] = _balances[account].sub(tokenCount); 
        for(uint j = 0; j < _address.length; j++) {
            _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]);
            emit Transfer(account, _address[j], _tokens[j]);
        }

    }

    
}

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":[],"name":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setLiquidityWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","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":[{"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":"uniswapPair","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":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600c81526020017f4e6f20536c656570204170650000000000000000000000000000000000000000815250600190816200004a919062001278565b506040518060400160405280600381526020017f4e534100000000000000000000000000000000000000000000000000000000008152506002908162000091919062001278565b506012600360006101000a81548160ff021916908360ff16021790555073736a0220ecb54de7df7ae3ca30983778086e20f9600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734697e35c0f79fd9c1dbd24e381e5edbf38979347600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152506000600d556000600e556000600f55600060105560006011556000601255600360009054906101000a900460ff16600a620001fd9190620014ef565b620f42406200020d919062001540565b60155562000247606462000233600160155462000e2d60201b620031f51790919060201c565b62000eb060201b6200326f1790919060201c565b6016556200028160646200026d600260155462000e2d60201b620031f51790919060201c565b62000eb060201b6200326f1790919060201c565b601755620002bb6064620002a7600260155462000e2d60201b620031f51790919060201c565b62000eb060201b6200326f1790919060201c565b6018556001601a60156101000a81548160ff0219169083151502179055506000601a60166101000a81548160ff0219169083151502179055506001601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff0219169083151502179055503480156200033757600080fd5b5060006200034a62000f0260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200044d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004739190620015f5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005019190620015f5565b6040518363ffffffff1660e01b81526004016200052092919062001638565b6020604051808303816000875af115801562000540573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005669190620015f5565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160086000620006a262000f0a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200085562000f0a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600062000a8262000f0a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c58600f5462000c44600e54600d5462000f3360201b620032b91790919060201c565b62000f3360201b620032b91790919060201c565b60138190555062000c9760125462000c8360115460105462000f3360201b620032b91790919060201c565b62000f3360201b620032b91790919060201c565b601481905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506015546006600062000d6f62000f0260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000dbd62000f0260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60155460405162000e1e919062001676565b60405180910390a350620018f2565b600080830362000e41576000905062000eaa565b6000828462000e51919062001540565b905082848262000e629190620016c2565b1462000ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e9c9062001781565b60405180910390fd5b809150505b92915050565b600062000efa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000f9660201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f449190620017a3565b90508381101562000f8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f83906200182e565b60405180910390fd5b8091505092915050565b6000808311829062000fe0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fd79190620018ce565b60405180910390fd5b506000838562000ff19190620016c2565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200108057607f821691505b60208210810362001096576200109562001038565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620011007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620010c1565b6200110c8683620010c1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062001159620011536200114d8462001124565b6200112e565b62001124565b9050919050565b6000819050919050565b620011758362001138565b6200118d620011848262001160565b848454620010ce565b825550505050565b600090565b620011a462001195565b620011b18184846200116a565b505050565b5b81811015620011d957620011cd6000826200119a565b600181019050620011b7565b5050565b601f8211156200122857620011f2816200109c565b620011fd84620010b1565b810160208510156200120d578190505b620012256200121c85620010b1565b830182620011b6565b50505b505050565b600082821c905092915050565b60006200124d600019846008026200122d565b1980831691505092915050565b60006200126883836200123a565b9150826002028217905092915050565b620012838262000ffe565b67ffffffffffffffff8111156200129f576200129e62001009565b5b620012ab825462001067565b620012b8828285620011dd565b600060209050601f831160018114620012f05760008415620012db578287015190505b620012e785826200125a565b86555062001357565b601f19841662001300866200109c565b60005b828110156200132a5784890151825560018201915060208501945060208101905062001303565b868310156200134a578489015162001346601f8916826200123a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620013ed57808604811115620013c557620013c46200135f565b5b6001851615620013d55780820291505b8081029050620013e5856200138e565b9450620013a5565b94509492505050565b600082620014085760019050620014db565b81620014185760009050620014db565b81600181146200143157600281146200143c5762001472565b6001915050620014db565b60ff8411156200145157620014506200135f565b5b8360020a9150848211156200146b576200146a6200135f565b5b50620014db565b5060208310610133831016604e8410600b8410161715620014ac5782820a905083811115620014a657620014a56200135f565b5b620014db565b620014bb84848460016200139b565b92509050818404811115620014d557620014d46200135f565b5b81810290505b9392505050565b600060ff82169050919050565b6000620014fc8262001124565b91506200150983620014e2565b9250620015387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013f6565b905092915050565b60006200154d8262001124565b91506200155a8362001124565b92508282026200156a8162001124565b915082820484148315176200158457620015836200135f565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620015bd8262001590565b9050919050565b620015cf81620015b0565b8114620015db57600080fd5b50565b600081519050620015ef81620015c4565b92915050565b6000602082840312156200160e576200160d6200158b565b5b60006200161e84828501620015de565b91505092915050565b6200163281620015b0565b82525050565b60006040820190506200164f600083018562001627565b6200165e602083018462001627565b9392505050565b620016708162001124565b82525050565b60006020820190506200168d600083018462001665565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620016cf8262001124565b9150620016dc8362001124565b925082620016ef57620016ee62001693565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062001769602183620016fa565b915062001776826200170b565b604082019050919050565b600060208201905081810360008301526200179c816200175a565b9050919050565b6000620017b08262001124565b9150620017bd8362001124565b9250828201905080821115620017d857620017d76200135f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001816601b83620016fa565b91506200182382620017de565b602082019050919050565b60006020820190508181036000830152620018498162001807565b9050919050565b60005b838110156200187057808201518184015260208101905062001853565b60008484015250505050565b6000601f19601f8301169050919050565b60006200189a8262000ffe565b620018a68185620016fa565b9350620018b881856020860162001850565b620018c3816200187c565b840191505092915050565b60006020820190508181036000830152620018ea81846200188d565b905092915050565b60805160a051615a40620019266000396000818161106b015261155b01526000818161152f01526115870152615a406000f3fe6080604052600436106103bc5760003560e01c806385261485116101f2578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610e3b578063f8f6329014610e66578063f9f92be414610e91578063fb4b8e6c14610ece576103c3565b8063f1d5f51714610d97578063f2fde38b14610dc0578063f455444614610de9578063f84ba65d14610e12576103c3565b8063ec28438a116100dc578063ec28438a14610cf1578063ee828db314610d1a578063ef422a1814610d43578063f0cd1dac14610d6c576103c3565b8063da00097d14610c47578063dc44b6a014610c72578063dd62ed3e14610c9d578063e6b2603b14610cda576103c3565b8063a9059cbb11610185578063c860795211610154578063c860795214610b8b578063c867d60b14610bb6578063c9c9afc514610bf3578063d2d7ad8314610c1c576103c3565b8063a9059cbb14610acf578063c49b9a8014610b0c578063c5d2418914610b35578063c816841b14610b60576103c3565b806395d89b41116101c157806395d89b4114610a1357806398e944c814610a3e578063a457c2d714610a69578063a5d69d1f14610aa6576103c3565b8063852614851461095557806388790a68146109805780638b42507f146109ab5780638da5cb5b146109e8576103c3565b806339509351116102e257806367243482116102755780637d1db4a5116102445780637d1db4a5146108ab578063807c2d9c146108d657806382eefb4314610901578063844d591c1461092c576103c3565b8063672434821461080357806370a082311461082c578063715018a61461086957806375f0a87414610880576103c3565b80634cb80fd5116102b15780634cb80fd5146107355780635194f9bf1461075e5780635342acb4146107895780635881f3ef146107c6576103c3565b806339509351146106675780633b97084a146106a45780633ecad271146106cd5780634a74bb021461070a576103c3565b80631870517a1161035a5780632563ae83116103295780632563ae83146105bd57806327c8f835146105e65780632b112e4914610611578063313ce5671461063c576103c3565b80631870517a146105035780632198cf6c1461052c57806323555d571461055557806323b872dd14610580576103c3565b8063095ea7b311610396578063095ea7b314610447578063153b0d1e146104845780631694505e146104ad57806318160ddd146104d8576103c3565b806306fdde03146103c857806308733214146103f35780630930907b1461041c576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ef7565b6040516103ea91906147de565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614840565b610f89565b005b34801561042857600080fd5b50610431611069565b60405161043e91906148d4565b60405180910390f35b34801561045357600080fd5b5061046e6004803603810190610469919061491b565b61108d565b60405161047b9190614976565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906149bd565b6110ab565b005b3480156104b957600080fd5b506104c261119b565b6040516104cf9190614a5c565b60405180910390f35b3480156104e457600080fd5b506104ed6111c1565b6040516104fa9190614a86565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190614840565b6111cb565b005b34801561053857600080fd5b50610553600480360381019061054e91906149bd565b6112ab565b005b34801561056157600080fd5b5061056a61139b565b6040516105779190614a86565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a29190614aa1565b6113a1565b6040516105b49190614976565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190614af4565b61147b565b005b3480156105f257600080fd5b506105fb61152d565b60405161060891906148d4565b60405180910390f35b34801561061d57600080fd5b50610626611551565b6040516106339190614a86565b60405180910390f35b34801561064857600080fd5b506106516115cf565b60405161065e9190614b3d565b60405180910390f35b34801561067357600080fd5b5061068e6004803603810190610689919061491b565b6115e6565b60405161069b9190614976565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190614b58565b611699565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190614b85565b611738565b6040516107019190614976565b60405180910390f35b34801561071657600080fd5b5061071f611758565b60405161072c9190614976565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190614b85565b61176b565b005b34801561076a57600080fd5b50610773611844565b6040516107809190614a86565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190614b85565b61184a565b6040516107bd9190614976565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190614b85565b61186a565b6040516107fa91906148d4565b60405180910390f35b34801561080f57600080fd5b5061082a60048036038101906108259190614c6d565b611cf3565b005b34801561083857600080fd5b50610853600480360381019061084e9190614b85565b6120ce565b6040516108609190614a86565b60405180910390f35b34801561087557600080fd5b5061087e612117565b005b34801561088c57600080fd5b5061089561226c565b6040516108a29190614d0f565b60405180910390f35b3480156108b757600080fd5b506108c0612292565b6040516108cd9190614a86565b60405180910390f35b3480156108e257600080fd5b506108eb612298565b6040516108f89190614a86565b60405180910390f35b34801561090d57600080fd5b5061091661229e565b6040516109239190614a86565b60405180910390f35b34801561093857600080fd5b50610953600480360381019061094e91906149bd565b6122a4565b005b34801561096157600080fd5b5061096a612394565b6040516109779190614976565b60405180910390f35b34801561098c57600080fd5b506109956123a7565b6040516109a29190614a86565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd9190614b85565b6123ad565b6040516109df9190614976565b60405180910390f35b3480156109f457600080fd5b506109fd6123cd565b604051610a0a91906148d4565b60405180910390f35b348015610a1f57600080fd5b50610a286123f6565b604051610a3591906147de565b60405180910390f35b348015610a4a57600080fd5b50610a53612488565b604051610a6091906148d4565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b919061491b565b6124ae565b604051610a9d9190614976565b60405180910390f35b348015610ab257600080fd5b50610acd6004803603810190610ac89190614af4565b61257b565b005b348015610adb57600080fd5b50610af66004803603810190610af1919061491b565b61262d565b604051610b039190614976565b60405180910390f35b348015610b1857600080fd5b50610b336004803603810190610b2e9190614af4565b61264c565b005b348015610b4157600080fd5b50610b4a612735565b604051610b579190614a86565b60405180910390f35b348015610b6c57600080fd5b50610b7561273b565b604051610b8291906148d4565b60405180910390f35b348015610b9757600080fd5b50610ba0612761565b604051610bad9190614a86565b60405180910390f35b348015610bc257600080fd5b50610bdd6004803603810190610bd89190614b85565b612767565b604051610bea9190614976565b60405180910390f35b348015610bff57600080fd5b50610c1a6004803603810190610c159190614b85565b612787565b005b348015610c2857600080fd5b50610c31612860565b604051610c3e9190614a86565b60405180910390f35b348015610c5357600080fd5b50610c5c612866565b604051610c699190614976565b60405180910390f35b348015610c7e57600080fd5b50610c87612879565b604051610c949190614a86565b60405180910390f35b348015610ca957600080fd5b50610cc46004803603810190610cbf9190614d2a565b61287f565b604051610cd19190614a86565b60405180910390f35b348015610ce657600080fd5b50610cef612906565b005b348015610cfd57600080fd5b50610d186004803603810190610d139190614b58565b612a14565b005b348015610d2657600080fd5b50610d416004803603810190610d3c9190614af4565b612ab3565b005b348015610d4f57600080fd5b50610d6a6004803603810190610d6591906149bd565b612b65565b005b348015610d7857600080fd5b50610d81612c55565b604051610d8e9190614a86565b60405180910390f35b348015610da357600080fd5b50610dbe6004803603810190610db99190614b58565b612c5b565b005b348015610dcc57600080fd5b50610de76004803603810190610de29190614b85565b612cfa565b005b348015610df557600080fd5b50610e106004803603810190610e0b919061491b565b612ebb565b005b348015610e1e57600080fd5b50610e396004803603810190610e3491906149bd565b612fd3565b005b348015610e4757600080fd5b50610e506130c3565b604051610e5d9190614976565b60405180910390f35b348015610e7257600080fd5b50610e7b6130d6565b604051610e889190614d0f565b60405180910390f35b348015610e9d57600080fd5b50610eb86004803603810190610eb39190614b85565b6130fc565b604051610ec59190614976565b60405180910390f35b348015610eda57600080fd5b50610ef56004803603810190610ef09190614b85565b61311c565b005b606060018054610f0690614d99565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3290614d99565b8015610f7f5780601f10610f5457610100808354040283529160200191610f7f565b820191906000526020600020905b815481529060010190602001808311610f6257829003601f168201915b5050505050905090565b610f91613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101590614e16565b60405180910390fd5b82601081905550816011819055508060128190555061105e6012546110506011546010546132b990919063ffffffff16565b6132b990919063ffffffff16565b601481905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110a161109a613317565b848461331f565b6001905092915050565b6110b3613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113790614e16565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b6111d3613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790614e16565b60405180910390fd5b82600d8190555081600e8190555080600f819055506112a0600f54611292600e54600d546132b990919063ffffffff16565b6132b990919063ffffffff16565b601381905550505050565b6112b3613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133790614e16565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60006113ae8484846134e8565b50611470846113bb613317565b61146b856040518060600160405280602881526020016159be60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611421613317565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfc9092919063ffffffff16565b61331f565b600190509392505050565b611483613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790614e16565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115ca61157f7f00000000000000000000000000000000000000000000000000000000000000006120ce565b6115bc6115ab7f00000000000000000000000000000000000000000000000000000000000000006120ce565b601554613c6090919063ffffffff16565b613c6090919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061168f6115f3613317565b8461168a8560076000611604613317565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132b990919063ffffffff16565b61331f565b6001905092915050565b6116a1613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590614e16565b60405180910390fd5b8060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b601a60159054906101000a900460ff1681565b611773613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f790614e16565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611874613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890614e16565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119759190614e4b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a009190614e4b565b6040518363ffffffff1660e01b8152600401611a1d929190614e78565b602060405180830381865afa158015611a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5e9190614e4b565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf1578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b039190614e4b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8e9190614e4b565b6040518363ffffffff1660e01b8152600401611bab929190614e78565b6020604051808303816000875af1158015611bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bee9190614e4b565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cfb613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7f90614e16565b60405180910390fd5b6000339050828290508585905014611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc90614eed565b60405180910390fd5b600080600090505b84849050811015611e2257848482818110611dfb57611dfa614f0d565b5b9050602002013582611e0d9190614f6b565b91508080611e1a90614f9f565b915050611ddd565b5080611e2d836120ce565b1015611e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6590615033565b60405180910390fd5b611ec081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156120c557611fa3858583818110611f2757611f26614f0d565b5b90506020020135600660008a8a86818110611f4557611f44614f0d565b5b9050602002016020810190611f5a9190614b85565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132b990919063ffffffff16565b60066000898985818110611fba57611fb9614f0d565b5b9050602002016020810190611fcf9190614b85565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508686828181106120205761201f614f0d565b5b90506020020160208101906120359190614b85565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061209657612095614f0d565b5b905060200201356040516120aa9190614a86565b60405180910390a380806120bd90614f9f565b915050611f06565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61211f613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a390614e16565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60185481565b60145481565b6122ac613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233090614e16565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461240590614d99565b80601f016020809104026020016040519081016040528092919081815260200182805461243190614d99565b801561247e5780601f106124535761010080835404028352916020019161247e565b820191906000526020600020905b81548152906001019060200180831161246157829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006125716124bb613317565b8461256c856040518060600160405280602581526020016159e660259139600760006124e5613317565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfc9092919063ffffffff16565b61331f565b6001905092915050565b612583613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260790614e16565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b600061264161263a613317565b84846134e8565b506001905092915050565b612654613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d890614e16565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161272a9190614976565b60405180910390a150565b600e5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b61278f613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461281c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281390614e16565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61290e613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290614e16565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516129c190615084565b60006040518083038185875af1925050503d80600081146129fe576040519150601f19603f3d011682016040523d82523d6000602084013e612a03565b606091505b5050905080612a1157600080fd5b50565b612a1c613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa090614e16565b60405180910390fd5b8060178190555050565b612abb613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3f90614e16565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612b6d613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf190614e16565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612c63613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce790614e16565b60405180910390fd5b8060188190555050565b612d02613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8690614e16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df59061510b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ec3613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4790614e16565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612f8b92919061512b565b6020604051808303816000875af1158015612faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fce9190615169565b505050565b612fdb613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305f90614e16565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b613124613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a890614e16565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083036132075760009050613269565b600082846132159190615196565b90508284826132249190615207565b14613264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325b906152aa565b60405180910390fd5b809150505b92915050565b60006132b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613caa565b905092915050565b60008082846132c89190614f6b565b90508381101561330d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330490615316565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361338e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613385906153a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133f49061543a565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516134db9190614a86565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354f906154cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be9061555e565b60405180910390fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561366b5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6136aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a1906155ca565b60405180910390fd5b601a60149054906101000a900460ff16156136d1576136ca848484613d0d565b9050613bf5565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137755750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561378d5750601a60189054906101000a900460ff165b156137d8576017548211156137d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ce9061565c565b60405180910390fd5b5b60006137e3306120ce565b9050600060165482101590508080156138095750601a60149054906101000a900460ff16155b801561385f5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138775750601a60159054906101000a900460ff165b156138a157601a60169054906101000a900460ff16156138975760165491505b6138a082613ee0565b5b61392a846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfc9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a105750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a2457613a1f8787876141ab565b613a26565b845b9050601a60179054906101000a900460ff168015613a8e5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613af357601854613ab182613aa3896120ce565b6132b990919063ffffffff16565b1115613af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae9906156ee565b60405180910390fd5b5b613b4581600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132b990919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613be59190614a86565b60405180910390a3600193505050505b9392505050565b6000838311158290613c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3b91906147de565b60405180910390fd5b5060008385613c53919061570e565b9050809150509392505050565b6000613ca283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613bfc565b905092915050565b60008083118290613cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ce891906147de565b60405180910390fd5b5060008385613d009190615207565b9050809150509392505050565b6000613d98826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfc9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e2d82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132b990919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ecd9190614a86565b60405180910390a3600190509392505050565b6001601a60146101000a81548160ff0219169083151502179055506000613f146014546013546132b990919063ffffffff16565b90506000613f2f601054600d546132b990919063ffffffff16565b90506000613f4a601154600e546132b990919063ffffffff16565b90506000613f866002613f7886613f6a878a6131f590919063ffffffff16565b61326f90919063ffffffff16565b61326f90919063ffffffff16565b90506000613f9d8287613c6090919063ffffffff16565b90506000479050613fad826143d2565b6000613fc28247613c6090919063ffffffff16565b90506000613fec613fdd60028961326f90919063ffffffff16565b89613c6090919063ffffffff16565b90506000614028600261401a8461400c8c886131f590919063ffffffff16565b61326f90919063ffffffff16565b61326f90919063ffffffff16565b90506000614051836140438a876131f590919063ffffffff16565b61326f90919063ffffffff16565b9050600061407a8261406c8588613c6090919063ffffffff16565b613c6090919063ffffffff16565b905060008211156140ef57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156140ed573d6000803e3d6000fd5b505b600081111561416257600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614160573d6000803e3d6000fd5b505b6000831180156141725750600088115b1561418257614181888461464e565b5b50505050505050505050506000601a60146101000a81548160ff02191690831515021790555050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142335761422c606461421e601354866131f590919063ffffffff16565b61326f90919063ffffffff16565b90506142b1565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142b0576142ad606461429f601454866131f590919063ffffffff16565b61326f90919063ffffffff16565b90505b5b60008111156143b55761430c81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132b990919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143ac9190614a86565b60405180910390a35b6143c88184613c6090919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156143ef576143ee615742565b5b60405190808252806020026020018201604052801561441d5781602001602082028036833780820191505090505b509050308160008151811061443557614434614f0d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145009190614e4b565b8160018151811061451457614513614f0d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061457b30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461331f565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016145df95949392919061586a565b600060405180830381600087803b1580156145f957600080fd5b505af115801561460d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146429291906158c4565b60405180910390a15050565b61467b30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461331f565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401614704969594939291906158f4565b60606040518083038185885af1158015614722573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614747919061596a565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561478857808201518184015260208101905061476d565b60008484015250505050565b6000601f19601f8301169050919050565b60006147b08261474e565b6147ba8185614759565b93506147ca81856020860161476a565b6147d381614794565b840191505092915050565b600060208201905081810360008301526147f881846147a5565b905092915050565b600080fd5b600080fd5b6000819050919050565b61481d8161480a565b811461482857600080fd5b50565b60008135905061483a81614814565b92915050565b60008060006060848603121561485957614858614800565b5b60006148678682870161482b565b93505060206148788682870161482b565b92505060406148898682870161482b565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006148be82614893565b9050919050565b6148ce816148b3565b82525050565b60006020820190506148e960008301846148c5565b92915050565b6148f8816148b3565b811461490357600080fd5b50565b600081359050614915816148ef565b92915050565b6000806040838503121561493257614931614800565b5b600061494085828601614906565b92505060206149518582860161482b565b9150509250929050565b60008115159050919050565b6149708161495b565b82525050565b600060208201905061498b6000830184614967565b92915050565b61499a8161495b565b81146149a557600080fd5b50565b6000813590506149b781614991565b92915050565b600080604083850312156149d4576149d3614800565b5b60006149e285828601614906565b92505060206149f3858286016149a8565b9150509250929050565b6000819050919050565b6000614a22614a1d614a1884614893565b6149fd565b614893565b9050919050565b6000614a3482614a07565b9050919050565b6000614a4682614a29565b9050919050565b614a5681614a3b565b82525050565b6000602082019050614a716000830184614a4d565b92915050565b614a808161480a565b82525050565b6000602082019050614a9b6000830184614a77565b92915050565b600080600060608486031215614aba57614ab9614800565b5b6000614ac886828701614906565b9350506020614ad986828701614906565b9250506040614aea8682870161482b565b9150509250925092565b600060208284031215614b0a57614b09614800565b5b6000614b18848285016149a8565b91505092915050565b600060ff82169050919050565b614b3781614b21565b82525050565b6000602082019050614b526000830184614b2e565b92915050565b600060208284031215614b6e57614b6d614800565b5b6000614b7c8482850161482b565b91505092915050565b600060208284031215614b9b57614b9a614800565b5b6000614ba984828501614906565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614bd757614bd6614bb2565b5b8235905067ffffffffffffffff811115614bf457614bf3614bb7565b5b602083019150836020820283011115614c1057614c0f614bbc565b5b9250929050565b60008083601f840112614c2d57614c2c614bb2565b5b8235905067ffffffffffffffff811115614c4a57614c49614bb7565b5b602083019150836020820283011115614c6657614c65614bbc565b5b9250929050565b60008060008060408587031215614c8757614c86614800565b5b600085013567ffffffffffffffff811115614ca557614ca4614805565b5b614cb187828801614bc1565b9450945050602085013567ffffffffffffffff811115614cd457614cd3614805565b5b614ce087828801614c17565b925092505092959194509250565b6000614cf982614893565b9050919050565b614d0981614cee565b82525050565b6000602082019050614d246000830184614d00565b92915050565b60008060408385031215614d4157614d40614800565b5b6000614d4f85828601614906565b9250506020614d6085828601614906565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614db157607f821691505b602082108103614dc457614dc3614d6a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614e00602083614759565b9150614e0b82614dca565b602082019050919050565b60006020820190508181036000830152614e2f81614df3565b9050919050565b600081519050614e45816148ef565b92915050565b600060208284031215614e6157614e60614800565b5b6000614e6f84828501614e36565b91505092915050565b6000604082019050614e8d60008301856148c5565b614e9a60208301846148c5565b9392505050565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b6000614ed7601683614759565b9150614ee282614ea1565b602082019050919050565b60006020820190508181036000830152614f0681614eca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614f768261480a565b9150614f818361480a565b9250828201905080821115614f9957614f98614f3c565b5b92915050565b6000614faa8261480a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614fdc57614fdb614f3c565b5b600182019050919050565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b600061501d601b83614759565b915061502882614fe7565b602082019050919050565b6000602082019050818103600083015261504c81615010565b9050919050565b600081905092915050565b50565b600061506e600083615053565b91506150798261505e565b600082019050919050565b600061508f82615061565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006150f5602683614759565b915061510082615099565b604082019050919050565b60006020820190508181036000830152615124816150e8565b9050919050565b600060408201905061514060008301856148c5565b61514d6020830184614a77565b9392505050565b60008151905061516381614991565b92915050565b60006020828403121561517f5761517e614800565b5b600061518d84828501615154565b91505092915050565b60006151a18261480a565b91506151ac8361480a565b92508282026151ba8161480a565b915082820484148315176151d1576151d0614f3c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006152128261480a565b915061521d8361480a565b92508261522d5761522c6151d8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615294602183614759565b915061529f82615238565b604082019050919050565b600060208201905081810360008301526152c381615287565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615300601b83614759565b915061530b826152ca565b602082019050919050565b6000602082019050818103600083015261532f816152f3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615392602483614759565b915061539d82615336565b604082019050919050565b600060208201905081810360008301526153c181615385565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615424602283614759565b915061542f826153c8565b604082019050919050565b6000602082019050818103600083015261545381615417565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006154b6602583614759565b91506154c18261545a565b604082019050919050565b600060208201905081810360008301526154e5816154a9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615548602383614759565b9150615553826154ec565b604082019050919050565b600060208201905081810360008301526155778161553b565b9050919050565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b60006155b4601d83614759565b91506155bf8261557e565b602082019050919050565b600060208201905081810360008301526155e3816155a7565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000615646602883614759565b9150615651826155ea565b604082019050919050565b6000602082019050818103600083015261567581615639565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006156d8602583614759565b91506156e38261567c565b604082019050919050565b60006020820190508181036000830152615707816156cb565b9050919050565b60006157198261480a565b91506157248361480a565b925082820390508181111561573c5761573b614f3c565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061579661579161578c84615771565b6149fd565b61480a565b9050919050565b6157a68161577b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157e1816148b3565b82525050565b60006157f383836157d8565b60208301905092915050565b6000602082019050919050565b6000615817826157ac565b61582181856157b7565b935061582c836157c8565b8060005b8381101561585d57815161584488826157e7565b975061584f836157ff565b925050600181019050615830565b5085935050505092915050565b600060a08201905061587f6000830188614a77565b61588c602083018761579d565b818103604083015261589e818661580c565b90506158ad60608301856148c5565b6158ba6080830184614a77565b9695505050505050565b60006040820190506158d96000830185614a77565b81810360208301526158eb818461580c565b90509392505050565b600060c08201905061590960008301896148c5565b6159166020830188614a77565b615923604083018761579d565b615930606083018661579d565b61593d60808301856148c5565b61594a60a0830184614a77565b979650505050505050565b60008151905061596481614814565b92915050565b60008060006060848603121561598357615982614800565b5b600061599186828701615955565b93505060206159a286828701615955565b92505060406159b386828701615955565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201d1d7d31e7d333eef42c70d7c75de32844a02dc99be96224b4b3dcfef52904bc64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c806385261485116101f2578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610e3b578063f8f6329014610e66578063f9f92be414610e91578063fb4b8e6c14610ece576103c3565b8063f1d5f51714610d97578063f2fde38b14610dc0578063f455444614610de9578063f84ba65d14610e12576103c3565b8063ec28438a116100dc578063ec28438a14610cf1578063ee828db314610d1a578063ef422a1814610d43578063f0cd1dac14610d6c576103c3565b8063da00097d14610c47578063dc44b6a014610c72578063dd62ed3e14610c9d578063e6b2603b14610cda576103c3565b8063a9059cbb11610185578063c860795211610154578063c860795214610b8b578063c867d60b14610bb6578063c9c9afc514610bf3578063d2d7ad8314610c1c576103c3565b8063a9059cbb14610acf578063c49b9a8014610b0c578063c5d2418914610b35578063c816841b14610b60576103c3565b806395d89b41116101c157806395d89b4114610a1357806398e944c814610a3e578063a457c2d714610a69578063a5d69d1f14610aa6576103c3565b8063852614851461095557806388790a68146109805780638b42507f146109ab5780638da5cb5b146109e8576103c3565b806339509351116102e257806367243482116102755780637d1db4a5116102445780637d1db4a5146108ab578063807c2d9c146108d657806382eefb4314610901578063844d591c1461092c576103c3565b8063672434821461080357806370a082311461082c578063715018a61461086957806375f0a87414610880576103c3565b80634cb80fd5116102b15780634cb80fd5146107355780635194f9bf1461075e5780635342acb4146107895780635881f3ef146107c6576103c3565b806339509351146106675780633b97084a146106a45780633ecad271146106cd5780634a74bb021461070a576103c3565b80631870517a1161035a5780632563ae83116103295780632563ae83146105bd57806327c8f835146105e65780632b112e4914610611578063313ce5671461063c576103c3565b80631870517a146105035780632198cf6c1461052c57806323555d571461055557806323b872dd14610580576103c3565b8063095ea7b311610396578063095ea7b314610447578063153b0d1e146104845780631694505e146104ad57806318160ddd146104d8576103c3565b806306fdde03146103c857806308733214146103f35780630930907b1461041c576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ef7565b6040516103ea91906147de565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614840565b610f89565b005b34801561042857600080fd5b50610431611069565b60405161043e91906148d4565b60405180910390f35b34801561045357600080fd5b5061046e6004803603810190610469919061491b565b61108d565b60405161047b9190614976565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906149bd565b6110ab565b005b3480156104b957600080fd5b506104c261119b565b6040516104cf9190614a5c565b60405180910390f35b3480156104e457600080fd5b506104ed6111c1565b6040516104fa9190614a86565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190614840565b6111cb565b005b34801561053857600080fd5b50610553600480360381019061054e91906149bd565b6112ab565b005b34801561056157600080fd5b5061056a61139b565b6040516105779190614a86565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a29190614aa1565b6113a1565b6040516105b49190614976565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190614af4565b61147b565b005b3480156105f257600080fd5b506105fb61152d565b60405161060891906148d4565b60405180910390f35b34801561061d57600080fd5b50610626611551565b6040516106339190614a86565b60405180910390f35b34801561064857600080fd5b506106516115cf565b60405161065e9190614b3d565b60405180910390f35b34801561067357600080fd5b5061068e6004803603810190610689919061491b565b6115e6565b60405161069b9190614976565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190614b58565b611699565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190614b85565b611738565b6040516107019190614976565b60405180910390f35b34801561071657600080fd5b5061071f611758565b60405161072c9190614976565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190614b85565b61176b565b005b34801561076a57600080fd5b50610773611844565b6040516107809190614a86565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190614b85565b61184a565b6040516107bd9190614976565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190614b85565b61186a565b6040516107fa91906148d4565b60405180910390f35b34801561080f57600080fd5b5061082a60048036038101906108259190614c6d565b611cf3565b005b34801561083857600080fd5b50610853600480360381019061084e9190614b85565b6120ce565b6040516108609190614a86565b60405180910390f35b34801561087557600080fd5b5061087e612117565b005b34801561088c57600080fd5b5061089561226c565b6040516108a29190614d0f565b60405180910390f35b3480156108b757600080fd5b506108c0612292565b6040516108cd9190614a86565b60405180910390f35b3480156108e257600080fd5b506108eb612298565b6040516108f89190614a86565b60405180910390f35b34801561090d57600080fd5b5061091661229e565b6040516109239190614a86565b60405180910390f35b34801561093857600080fd5b50610953600480360381019061094e91906149bd565b6122a4565b005b34801561096157600080fd5b5061096a612394565b6040516109779190614976565b60405180910390f35b34801561098c57600080fd5b506109956123a7565b6040516109a29190614a86565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd9190614b85565b6123ad565b6040516109df9190614976565b60405180910390f35b3480156109f457600080fd5b506109fd6123cd565b604051610a0a91906148d4565b60405180910390f35b348015610a1f57600080fd5b50610a286123f6565b604051610a3591906147de565b60405180910390f35b348015610a4a57600080fd5b50610a53612488565b604051610a6091906148d4565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b919061491b565b6124ae565b604051610a9d9190614976565b60405180910390f35b348015610ab257600080fd5b50610acd6004803603810190610ac89190614af4565b61257b565b005b348015610adb57600080fd5b50610af66004803603810190610af1919061491b565b61262d565b604051610b039190614976565b60405180910390f35b348015610b1857600080fd5b50610b336004803603810190610b2e9190614af4565b61264c565b005b348015610b4157600080fd5b50610b4a612735565b604051610b579190614a86565b60405180910390f35b348015610b6c57600080fd5b50610b7561273b565b604051610b8291906148d4565b60405180910390f35b348015610b9757600080fd5b50610ba0612761565b604051610bad9190614a86565b60405180910390f35b348015610bc257600080fd5b50610bdd6004803603810190610bd89190614b85565b612767565b604051610bea9190614976565b60405180910390f35b348015610bff57600080fd5b50610c1a6004803603810190610c159190614b85565b612787565b005b348015610c2857600080fd5b50610c31612860565b604051610c3e9190614a86565b60405180910390f35b348015610c5357600080fd5b50610c5c612866565b604051610c699190614976565b60405180910390f35b348015610c7e57600080fd5b50610c87612879565b604051610c949190614a86565b60405180910390f35b348015610ca957600080fd5b50610cc46004803603810190610cbf9190614d2a565b61287f565b604051610cd19190614a86565b60405180910390f35b348015610ce657600080fd5b50610cef612906565b005b348015610cfd57600080fd5b50610d186004803603810190610d139190614b58565b612a14565b005b348015610d2657600080fd5b50610d416004803603810190610d3c9190614af4565b612ab3565b005b348015610d4f57600080fd5b50610d6a6004803603810190610d6591906149bd565b612b65565b005b348015610d7857600080fd5b50610d81612c55565b604051610d8e9190614a86565b60405180910390f35b348015610da357600080fd5b50610dbe6004803603810190610db99190614b58565b612c5b565b005b348015610dcc57600080fd5b50610de76004803603810190610de29190614b85565b612cfa565b005b348015610df557600080fd5b50610e106004803603810190610e0b919061491b565b612ebb565b005b348015610e1e57600080fd5b50610e396004803603810190610e3491906149bd565b612fd3565b005b348015610e4757600080fd5b50610e506130c3565b604051610e5d9190614976565b60405180910390f35b348015610e7257600080fd5b50610e7b6130d6565b604051610e889190614d0f565b60405180910390f35b348015610e9d57600080fd5b50610eb86004803603810190610eb39190614b85565b6130fc565b604051610ec59190614976565b60405180910390f35b348015610eda57600080fd5b50610ef56004803603810190610ef09190614b85565b61311c565b005b606060018054610f0690614d99565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3290614d99565b8015610f7f5780601f10610f5457610100808354040283529160200191610f7f565b820191906000526020600020905b815481529060010190602001808311610f6257829003601f168201915b5050505050905090565b610f91613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101590614e16565b60405180910390fd5b82601081905550816011819055508060128190555061105e6012546110506011546010546132b990919063ffffffff16565b6132b990919063ffffffff16565b601481905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110a161109a613317565b848461331f565b6001905092915050565b6110b3613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113790614e16565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b6111d3613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790614e16565b60405180910390fd5b82600d8190555081600e8190555080600f819055506112a0600f54611292600e54600d546132b990919063ffffffff16565b6132b990919063ffffffff16565b601381905550505050565b6112b3613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133790614e16565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60006113ae8484846134e8565b50611470846113bb613317565b61146b856040518060600160405280602881526020016159be60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611421613317565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfc9092919063ffffffff16565b61331f565b600190509392505050565b611483613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790614e16565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115ca61157f7f00000000000000000000000000000000000000000000000000000000000000006120ce565b6115bc6115ab7f000000000000000000000000000000000000000000000000000000000000dead6120ce565b601554613c6090919063ffffffff16565b613c6090919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061168f6115f3613317565b8461168a8560076000611604613317565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132b990919063ffffffff16565b61331f565b6001905092915050565b6116a1613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590614e16565b60405180910390fd5b8060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b601a60159054906101000a900460ff1681565b611773613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f790614e16565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611874613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890614e16565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119759190614e4b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a009190614e4b565b6040518363ffffffff1660e01b8152600401611a1d929190614e78565b602060405180830381865afa158015611a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5e9190614e4b565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf1578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b039190614e4b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8e9190614e4b565b6040518363ffffffff1660e01b8152600401611bab929190614e78565b6020604051808303816000875af1158015611bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bee9190614e4b565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cfb613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7f90614e16565b60405180910390fd5b6000339050828290508585905014611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc90614eed565b60405180910390fd5b600080600090505b84849050811015611e2257848482818110611dfb57611dfa614f0d565b5b9050602002013582611e0d9190614f6b565b91508080611e1a90614f9f565b915050611ddd565b5080611e2d836120ce565b1015611e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6590615033565b60405180910390fd5b611ec081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156120c557611fa3858583818110611f2757611f26614f0d565b5b90506020020135600660008a8a86818110611f4557611f44614f0d565b5b9050602002016020810190611f5a9190614b85565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132b990919063ffffffff16565b60066000898985818110611fba57611fb9614f0d565b5b9050602002016020810190611fcf9190614b85565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508686828181106120205761201f614f0d565b5b90506020020160208101906120359190614b85565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061209657612095614f0d565b5b905060200201356040516120aa9190614a86565b60405180910390a380806120bd90614f9f565b915050611f06565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61211f613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a390614e16565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60185481565b60145481565b6122ac613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233090614e16565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461240590614d99565b80601f016020809104026020016040519081016040528092919081815260200182805461243190614d99565b801561247e5780601f106124535761010080835404028352916020019161247e565b820191906000526020600020905b81548152906001019060200180831161246157829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006125716124bb613317565b8461256c856040518060600160405280602581526020016159e660259139600760006124e5613317565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfc9092919063ffffffff16565b61331f565b6001905092915050565b612583613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260790614e16565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b600061264161263a613317565b84846134e8565b506001905092915050565b612654613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d890614e16565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161272a9190614976565b60405180910390a150565b600e5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b61278f613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461281c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281390614e16565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61290e613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290614e16565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516129c190615084565b60006040518083038185875af1925050503d80600081146129fe576040519150601f19603f3d011682016040523d82523d6000602084013e612a03565b606091505b5050905080612a1157600080fd5b50565b612a1c613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa090614e16565b60405180910390fd5b8060178190555050565b612abb613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3f90614e16565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612b6d613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf190614e16565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612c63613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce790614e16565b60405180910390fd5b8060188190555050565b612d02613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8690614e16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df59061510b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ec3613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4790614e16565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612f8b92919061512b565b6020604051808303816000875af1158015612faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fce9190615169565b505050565b612fdb613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305f90614e16565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b613124613317565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a890614e16565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083036132075760009050613269565b600082846132159190615196565b90508284826132249190615207565b14613264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325b906152aa565b60405180910390fd5b809150505b92915050565b60006132b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613caa565b905092915050565b60008082846132c89190614f6b565b90508381101561330d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330490615316565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361338e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613385906153a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133f49061543a565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516134db9190614a86565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354f906154cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be9061555e565b60405180910390fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561366b5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6136aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a1906155ca565b60405180910390fd5b601a60149054906101000a900460ff16156136d1576136ca848484613d0d565b9050613bf5565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137755750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561378d5750601a60189054906101000a900460ff165b156137d8576017548211156137d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ce9061565c565b60405180910390fd5b5b60006137e3306120ce565b9050600060165482101590508080156138095750601a60149054906101000a900460ff16155b801561385f5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138775750601a60159054906101000a900460ff165b156138a157601a60169054906101000a900460ff16156138975760165491505b6138a082613ee0565b5b61392a846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfc9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a105750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a2457613a1f8787876141ab565b613a26565b845b9050601a60179054906101000a900460ff168015613a8e5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613af357601854613ab182613aa3896120ce565b6132b990919063ffffffff16565b1115613af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae9906156ee565b60405180910390fd5b5b613b4581600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132b990919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613be59190614a86565b60405180910390a3600193505050505b9392505050565b6000838311158290613c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3b91906147de565b60405180910390fd5b5060008385613c53919061570e565b9050809150509392505050565b6000613ca283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613bfc565b905092915050565b60008083118290613cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ce891906147de565b60405180910390fd5b5060008385613d009190615207565b9050809150509392505050565b6000613d98826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bfc9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e2d82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132b990919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ecd9190614a86565b60405180910390a3600190509392505050565b6001601a60146101000a81548160ff0219169083151502179055506000613f146014546013546132b990919063ffffffff16565b90506000613f2f601054600d546132b990919063ffffffff16565b90506000613f4a601154600e546132b990919063ffffffff16565b90506000613f866002613f7886613f6a878a6131f590919063ffffffff16565b61326f90919063ffffffff16565b61326f90919063ffffffff16565b90506000613f9d8287613c6090919063ffffffff16565b90506000479050613fad826143d2565b6000613fc28247613c6090919063ffffffff16565b90506000613fec613fdd60028961326f90919063ffffffff16565b89613c6090919063ffffffff16565b90506000614028600261401a8461400c8c886131f590919063ffffffff16565b61326f90919063ffffffff16565b61326f90919063ffffffff16565b90506000614051836140438a876131f590919063ffffffff16565b61326f90919063ffffffff16565b9050600061407a8261406c8588613c6090919063ffffffff16565b613c6090919063ffffffff16565b905060008211156140ef57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156140ed573d6000803e3d6000fd5b505b600081111561416257600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614160573d6000803e3d6000fd5b505b6000831180156141725750600088115b1561418257614181888461464e565b5b50505050505050505050506000601a60146101000a81548160ff02191690831515021790555050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142335761422c606461421e601354866131f590919063ffffffff16565b61326f90919063ffffffff16565b90506142b1565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142b0576142ad606461429f601454866131f590919063ffffffff16565b61326f90919063ffffffff16565b90505b5b60008111156143b55761430c81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132b990919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143ac9190614a86565b60405180910390a35b6143c88184613c6090919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156143ef576143ee615742565b5b60405190808252806020026020018201604052801561441d5781602001602082028036833780820191505090505b509050308160008151811061443557614434614f0d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145009190614e4b565b8160018151811061451457614513614f0d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061457b30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461331f565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016145df95949392919061586a565b600060405180830381600087803b1580156145f957600080fd5b505af115801561460d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146429291906158c4565b60405180910390a15050565b61467b30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461331f565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401614704969594939291906158f4565b60606040518083038185885af1158015614722573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614747919061596a565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561478857808201518184015260208101905061476d565b60008484015250505050565b6000601f19601f8301169050919050565b60006147b08261474e565b6147ba8185614759565b93506147ca81856020860161476a565b6147d381614794565b840191505092915050565b600060208201905081810360008301526147f881846147a5565b905092915050565b600080fd5b600080fd5b6000819050919050565b61481d8161480a565b811461482857600080fd5b50565b60008135905061483a81614814565b92915050565b60008060006060848603121561485957614858614800565b5b60006148678682870161482b565b93505060206148788682870161482b565b92505060406148898682870161482b565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006148be82614893565b9050919050565b6148ce816148b3565b82525050565b60006020820190506148e960008301846148c5565b92915050565b6148f8816148b3565b811461490357600080fd5b50565b600081359050614915816148ef565b92915050565b6000806040838503121561493257614931614800565b5b600061494085828601614906565b92505060206149518582860161482b565b9150509250929050565b60008115159050919050565b6149708161495b565b82525050565b600060208201905061498b6000830184614967565b92915050565b61499a8161495b565b81146149a557600080fd5b50565b6000813590506149b781614991565b92915050565b600080604083850312156149d4576149d3614800565b5b60006149e285828601614906565b92505060206149f3858286016149a8565b9150509250929050565b6000819050919050565b6000614a22614a1d614a1884614893565b6149fd565b614893565b9050919050565b6000614a3482614a07565b9050919050565b6000614a4682614a29565b9050919050565b614a5681614a3b565b82525050565b6000602082019050614a716000830184614a4d565b92915050565b614a808161480a565b82525050565b6000602082019050614a9b6000830184614a77565b92915050565b600080600060608486031215614aba57614ab9614800565b5b6000614ac886828701614906565b9350506020614ad986828701614906565b9250506040614aea8682870161482b565b9150509250925092565b600060208284031215614b0a57614b09614800565b5b6000614b18848285016149a8565b91505092915050565b600060ff82169050919050565b614b3781614b21565b82525050565b6000602082019050614b526000830184614b2e565b92915050565b600060208284031215614b6e57614b6d614800565b5b6000614b7c8482850161482b565b91505092915050565b600060208284031215614b9b57614b9a614800565b5b6000614ba984828501614906565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614bd757614bd6614bb2565b5b8235905067ffffffffffffffff811115614bf457614bf3614bb7565b5b602083019150836020820283011115614c1057614c0f614bbc565b5b9250929050565b60008083601f840112614c2d57614c2c614bb2565b5b8235905067ffffffffffffffff811115614c4a57614c49614bb7565b5b602083019150836020820283011115614c6657614c65614bbc565b5b9250929050565b60008060008060408587031215614c8757614c86614800565b5b600085013567ffffffffffffffff811115614ca557614ca4614805565b5b614cb187828801614bc1565b9450945050602085013567ffffffffffffffff811115614cd457614cd3614805565b5b614ce087828801614c17565b925092505092959194509250565b6000614cf982614893565b9050919050565b614d0981614cee565b82525050565b6000602082019050614d246000830184614d00565b92915050565b60008060408385031215614d4157614d40614800565b5b6000614d4f85828601614906565b9250506020614d6085828601614906565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614db157607f821691505b602082108103614dc457614dc3614d6a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614e00602083614759565b9150614e0b82614dca565b602082019050919050565b60006020820190508181036000830152614e2f81614df3565b9050919050565b600081519050614e45816148ef565b92915050565b600060208284031215614e6157614e60614800565b5b6000614e6f84828501614e36565b91505092915050565b6000604082019050614e8d60008301856148c5565b614e9a60208301846148c5565b9392505050565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b6000614ed7601683614759565b9150614ee282614ea1565b602082019050919050565b60006020820190508181036000830152614f0681614eca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614f768261480a565b9150614f818361480a565b9250828201905080821115614f9957614f98614f3c565b5b92915050565b6000614faa8261480a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614fdc57614fdb614f3c565b5b600182019050919050565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b600061501d601b83614759565b915061502882614fe7565b602082019050919050565b6000602082019050818103600083015261504c81615010565b9050919050565b600081905092915050565b50565b600061506e600083615053565b91506150798261505e565b600082019050919050565b600061508f82615061565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006150f5602683614759565b915061510082615099565b604082019050919050565b60006020820190508181036000830152615124816150e8565b9050919050565b600060408201905061514060008301856148c5565b61514d6020830184614a77565b9392505050565b60008151905061516381614991565b92915050565b60006020828403121561517f5761517e614800565b5b600061518d84828501615154565b91505092915050565b60006151a18261480a565b91506151ac8361480a565b92508282026151ba8161480a565b915082820484148315176151d1576151d0614f3c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006152128261480a565b915061521d8361480a565b92508261522d5761522c6151d8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615294602183614759565b915061529f82615238565b604082019050919050565b600060208201905081810360008301526152c381615287565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615300601b83614759565b915061530b826152ca565b602082019050919050565b6000602082019050818103600083015261532f816152f3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615392602483614759565b915061539d82615336565b604082019050919050565b600060208201905081810360008301526153c181615385565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615424602283614759565b915061542f826153c8565b604082019050919050565b6000602082019050818103600083015261545381615417565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006154b6602583614759565b91506154c18261545a565b604082019050919050565b600060208201905081810360008301526154e5816154a9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615548602383614759565b9150615553826154ec565b604082019050919050565b600060208201905081810360008301526155778161553b565b9050919050565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b60006155b4601d83614759565b91506155bf8261557e565b602082019050919050565b600060208201905081810360008301526155e3816155a7565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000615646602883614759565b9150615651826155ea565b604082019050919050565b6000602082019050818103600083015261567581615639565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006156d8602583614759565b91506156e38261567c565b604082019050919050565b60006020820190508181036000830152615707816156cb565b9050919050565b60006157198261480a565b91506157248361480a565b925082820390508181111561573c5761573b614f3c565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061579661579161578c84615771565b6149fd565b61480a565b9050919050565b6157a68161577b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157e1816148b3565b82525050565b60006157f383836157d8565b60208301905092915050565b6000602082019050919050565b6000615817826157ac565b61582181856157b7565b935061582c836157c8565b8060005b8381101561585d57815161584488826157e7565b975061584f836157ff565b925050600181019050615830565b5085935050505092915050565b600060a08201905061587f6000830188614a77565b61588c602083018761579d565b818103604083015261589e818661580c565b90506158ad60608301856148c5565b6158ba6080830184614a77565b9695505050505050565b60006040820190506158d96000830185614a77565b81810360208301526158eb818461580c565b90509392505050565b600060c08201905061590960008301896148c5565b6159166020830188614a77565b615923604083018761579d565b615930606083018661579d565b61593d60808301856148c5565b61594a60a0830184614a77565b979650505050505050565b60008151905061596481614814565b92915050565b60008060006060848603121561598357615982614800565b5b600061599186828701615955565b93505060206159a286828701615955565b92505060406159b386828701615955565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201d1d7d31e7d333eef42c70d7c75de32844a02dc99be96224b4b3dcfef52904bc64736f6c63430008110033

Deployed Bytecode Sourcemap

11544:16572:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15554:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20627:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12093:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16720:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19295:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13226:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15831:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20310:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17653:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12668:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21221:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18030:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12005:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19131:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15740:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16217:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18261:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12367:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13341:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18393:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12802:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12310:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19554:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27408:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15939:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3221:230;;;;;;;;;;;;;:::i;:::-;;11762:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13080:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13152:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12886:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17234:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13484:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12716:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12527:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2996:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15645:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11960:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16443:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18994:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21046:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18815:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12626:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13274:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12759:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12468:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18533:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12991:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13388:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12584:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16066:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23583:154;;;;;;;;;;;;;:::i;:::-;;17911:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17796:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17371:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12847:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18151:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3459:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23436:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17514:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13442:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11861:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12419:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18675:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15554:83;15591:13;15624:5;15617:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15554:83;:::o;20627:317::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20749:10:::1;20729:17;:30;;;;20790:10;20770:17;:30;;;;20831:10;20811:17;:30;;;;20873:63;20918:17;;20873:40;20895:17;;20873;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;20852:18;:84;;;;20627:317:::0;;;:::o;12093:81::-;;;:::o;16720:161::-;16795:4;16812:39;16821:12;:10;:12::i;:::-;16835:7;16844:6;16812:8;:39::i;:::-;16869:4;16862:11;;16720:161;;;;:::o;19295:113::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19393:7:::1;19375:9;:15;19385:4;19375:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;19295:113:::0;;:::o;13226:41::-;;;;;;;;;;;;;:::o;15831:100::-;15884:7;15911:12;;15904:19;;15831:100;:::o;20310:309::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20430:10:::1;20411:16;:29;;;;20470:10;20451:16;:29;;;;20510:10;20491:16;:29;;;;20551:60;20594:16;;20551:38;20572:16;;20551;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;20531:17;:80;;;;20310:309:::0;;;:::o;17653:135::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17774:6:::1;17744:19;:27;17764:6;17744:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17653:135:::0;;:::o;12668:35::-;;;;:::o;21221:313::-;21319:4;21336:36;21346:6;21354:9;21365:6;21336:9;:36::i;:::-;;21383:121;21392:6;21400:12;:10;:12::i;:::-;21414:89;21452:6;21414:89;;;;;;;;;;;;;;;;;:11;:19;21426:6;21414:19;;;;;;;;;;;;;;;:33;21434:12;:10;:12::i;:::-;21414:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21383:8;:121::i;:::-;21522:4;21515:11;;21221:313;;;;;:::o;18030:113::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18127:8:::1;18108:16;;:27;;;;;;;;;;;;;;;;;;18030:113:::0;:::o;12005:81::-;;;:::o;19131:156::-;19184:7;19211:68;19256:22;19266:11;19256:9;:22::i;:::-;19211:40;19228:22;19238:11;19228:9;:22::i;:::-;19211:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19204:75;;19131:156;:::o;15740:83::-;15781:5;15806:9;;;;;;;;;;;15799:16;;15740:83;:::o;16217:218::-;16305:4;16322:83;16331:12;:10;:12::i;:::-;16345:7;16354:50;16393:10;16354:11;:25;16366:12;:10;:12::i;:::-;16354:25;;;;;;;;;;;;;;;:34;16380:7;16354:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16322:8;:83::i;:::-;16423:4;16416:11;;16217:218;;;;:::o;18261:124::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18369:8:::1;18343:23;:34;;;;18261:124:::0;:::o;12367:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13341:40::-;;;;;;;;;;;;;:::o;18393:132::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18506:10:::1;18480:15;;:37;;;;;;;;;;;;;;;;;;18393:132:::0;:::o;12802:36::-;;;;:::o;12310:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;19554:748::-;19634:22;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19671:35:::1;19728:16;19671:74;;19794:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19776:53;;;19838:4;19845:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19776:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19759:110;;19911:1;19885:28;;:14;:28;;::::0;19882:225:::1;;19999:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19981:74;;;20064:4;20071:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19981:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19964:131;;19882:225;20133:14;20119:11;;:28;;;;;;;;;;;;;;;;;;20199:16;20181:15;;:34;;;;;;;;;;;;;;;;;;20290:4;20253:12;:34;20274:11;;;;;;;;;;;20253:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;19658:644;19554:748:::0;;;:::o;27408:697::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27508:15:::1;27526:10;27508:28;;27574:7;;:14;;27555:8;;:15;;:33;27547:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27625:15;27655:6:::0;27664:1:::1;27655:10;;27651:92;27671:7;;:14;;27667:1;:18;27651:92;;;27721:7;;27729:1;27721:10;;;;;;;:::i;:::-;;;;;;;;27707:24;;;;;:::i;:::-;;;27687:3;;;;;:::i;:::-;;;;27651:92;;;;27783:10;27761:18;27771:7;27761:9;:18::i;:::-;:32;;27753:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27856:34;27879:10;27856:9;:18;27866:7;27856:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;27835:9;:18;27845:7;27835:18;;;;;;;;;;;;;;;:55;;;;27906:6;27902:194;27922:8;;:15;;27918:1;:19;27902:194;;;27984:38;28011:7;;28019:1;28011:10;;;;;;;:::i;:::-;;;;;;;;27984:9;:22;27994:8;;28003:1;27994:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27984:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;27959:9;:22;27969:8;;27978:1;27969:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27959:22;;;;;;;;;;;;;;;:63;;;;28060:8;;28069:1;28060:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28042:42;;28051:7;28042:42;;;28073:7;;28081:1;28073:10;;;;;;;:::i;:::-;;;;;;;;28042:42;;;;;;:::i;:::-;;;;;;;;27939:3;;;;;:::i;:::-;;;;27902:194;;;;27497:608;;27408:697:::0;;;;:::o;15939:119::-;16005:7;16032:9;:18;16042:7;16032:18;;;;;;;;;;;;;;;;16025:25;;15939:119;;;:::o;3221:230::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3328:42:::1;3291:81;;3312:6;::::0;::::1;;;;;;;;3291:81;;;;;;;;;;;;3400:42;3383:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3221:230::o:0;11762:92::-;;;;;;;;;;;;;:::o;13080:59::-;;;;:::o;13152:58::-;;;;:::o;12886:33::-;;;;:::o;17234:129::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17347:8:::1;17323:12;:21;17336:7;17323:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17234:129:::0;;:::o;13484:41::-;;;;;;;;;;;;;:::o;12716:36::-;;;;:::o;12527:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2996:79::-;3034:7;3061:6;;;;;;;;;;;3054:13;;2996:79;:::o;15645:87::-;15684:13;15717:7;15710:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15645:87;:::o;11960:32::-;;;;;;;;;;;;;:::o;16443:269::-;16536:4;16553:129;16562:12;:10;:12::i;:::-;16576:7;16585:96;16624:15;16585:96;;;;;;;;;;;;;;;;;:11;:25;16597:12;:10;:12::i;:::-;16585:25;;;;;;;;;;;;;;;:34;16611:7;16585:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16553:8;:129::i;:::-;16700:4;16693:11;;16443:269;;;;:::o;18994:125::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19103:8:::1;19075:25;;:36;;;;;;;;;;;;;;;;;;18994:125:::0;:::o;21046:167::-;21124:4;21141:42;21151:12;:10;:12::i;:::-;21165:9;21176:6;21141:9;:42::i;:::-;;21201:4;21194:11;;21046:167;;;;:::o;18815:171::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18916:8:::1;18892:21;;:32;;;;;;;;;;;;;;;;;;18940:38;18969:8;18940:38;;;;;;:::i;:::-;;;;;;;;18815:171:::0;:::o;12626:35::-;;;;:::o;13274:26::-;;;;;;;;;;;;;:::o;12759:36::-;;;;:::o;12468:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;18533:134::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18648:10:::1;18620:17;;:39;;;;;;;;;;;;;;;;;;18533:134:::0;:::o;12991:69::-;;;;:::o;13388:45::-;;;;;;;;;;;;;:::o;12584:35::-;;;;:::o;16066:143::-;16147:7;16174:11;:18;16186:5;16174:18;;;;;;;;;;;;;;;:27;16193:7;16174:27;;;;;;;;;;;;;;;;16167:34;;16066:143;;;;:::o;23583:154::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23637:7:::1;23657:10;23649:24;;23681:21;23649:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23636:71;;;23726:2;23718:11;;;::::0;::::1;;23625:112;23583:154::o:0;17911:111::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18003:11:::1;17988:12;:26;;;;17911:111:::0;:::o;17796:107::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17888:7:::1;17863:22;;:32;;;;;;;;;;;;;;;;;;17796:107:::0;:::o;17371:135::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17490:8:::1;17461:17;:26;17479:7;17461:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17371:135:::0;;:::o;12847:32::-;;;;:::o;18151:102::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18237:8:::1;18223:10;:22;;;;18151:102:::0;:::o;3459:244::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3568:1:::1;3548:22;;:8;:22;;::::0;3540:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3658:8;3629:38;;3650:6;::::0;::::1;;;;;;;;3629:38;;;;;;;;;;;;3687:8;3678:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3459:244:::0;:::o;23436:139::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23531:6:::1;23524:23;;;23548:10;23559:7;23524:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23436:139:::0;;:::o;17514:127::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17627:6:::1;17601:15;:23;17617:6;17601:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17514:127:::0;;:::o;13442:35::-;;;;;;;;;;;;;:::o;11861:92::-;;;;;;;;;;;;;:::o;12419:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;18675:132::-;3140:12;:10;:12::i;:::-;3130:22;;:6;;;;;;;;;;:22;;;3122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18788:10:::1;18762:15;;:37;;;;;;;;;;;;;;;;;;18675:132:::0;:::o;1681:250::-;1739:7;1768:1;1763;:6;1759:47;;1793:1;1786:8;;;;1759:47;1818:9;1834:1;1830;:5;;;;:::i;:::-;1818:17;;1863:1;1858;1854;:5;;;;:::i;:::-;:10;1846:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1922:1;1915:8;;;1681:250;;;;;:::o;1939:132::-;1997:7;2024:39;2028:1;2031;2024:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2017:46;;1939:132;;;;:::o;1148:181::-;1206:7;1226:9;1242:1;1238;:5;;;;:::i;:::-;1226:17;;1267:1;1262;:6;;1254:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1320:1;1313:8;;;1148:181;;;;:::o;206:115::-;259:15;302:10;287:26;;206:115;:::o;16889:337::-;16999:1;16982:19;;:5;:19;;;16974:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17080:1;17061:21;;:7;:21;;;17053:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17164:6;17134:11;:18;17146:5;17134:18;;;;;;;;;;;;;;;:27;17153:7;17134:27;;;;;;;;;;;;;;;:36;;;;17202:7;17186:32;;17195:5;17186:32;;;17211:6;17186:32;;;;;;:::i;:::-;;;;;;;;16889:337;;;:::o;21542:1886::-;21629:4;21674:1;21656:20;;:6;:20;;;21648:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21758:1;21737:23;;:9;:23;;;21729:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21820:9;:17;21830:6;21820:17;;;;;;;;;;;;;;;;;;;;;;;;;21819:18;:43;;;;;21842:9;:20;21852:9;21842:20;;;;;;;;;;;;;;;;;;;;;;;;;21841:21;21819:43;21811:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21912:16;;;;;;;;;;;21909:1502;;;21962:41;21977:6;21985:9;21996:6;21962:14;:41::i;:::-;21955:48;;;;21909:1502;22061:15;:23;22077:6;22061:23;;;;;;;;;;;;;;;;;;;;;;;;;22060:24;:55;;;;;22089:15;:26;22105:9;22089:26;;;;;;;;;;;;;;;;;;;;;;;;;22088:27;22060:55;:81;;;;;22119:22;;;;;;;;;;;22060:81;22057:196;;;22180:12;;22170:6;:22;;22162:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22057:196;22269:28;22300:24;22318:4;22300:9;:24::i;:::-;22269:55;;22339:28;22394:23;;22370:20;:47;;22339:78;;22450:23;:44;;;;;22478:16;;;;;;;;;;;22477:17;22450:44;:69;;;;;22499:12;:20;22512:6;22499:20;;;;;;;;;;;;;;;;;;;;;;;;;22498:21;22450:69;:94;;;;;22523:21;;;;;;;;;;;22450:94;22446:305;;;22582:25;;;;;;;;;;;22579:97;;;22653:23;;22630:46;;22579:97;22695:36;22710:20;22695:14;:36::i;:::-;22446:305;22787:53;22809:6;22787:53;;;;;;;;;;;;;;;;;:9;:17;22797:6;22787:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22767:9;:17;22777:6;22767:17;;;;;;;;;;;;;;;:73;;;;22857:19;22880:17;:25;22898:6;22880:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22909:17;:28;22927:9;22909:28;;;;;;;;;;;;;;;;;;;;;;;;;22880:57;22879:148;;22993:34;23001:6;23009:9;23020:6;22993:7;:34::i;:::-;22879:148;;;22984:6;22879:148;22857:170;;23047:16;;;;;;;;;;;:51;;;;;23068:19;:30;23088:9;23068:30;;;;;;;;;;;;;;;;;;;;;;;;;23067:31;23047:51;23044:191;;;23168:10;;23127:37;23152:11;23127:20;23137:9;23127;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;23119:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23044:191;23274:37;23299:11;23274:9;:20;23284:9;23274:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23251:9;:20;23261:9;23251:20;;;;;;;;;;;;;;;:60;;;;23350:9;23333:40;;23342:6;23333:40;;;23361:11;23333:40;;;;;;:::i;:::-;;;;;;;;23395:4;23388:11;;;;;21542:1886;;;;;;:::o;1481:192::-;1567:7;1600:1;1595;:6;;1603:12;1587:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1627:9;1643:1;1639;:5;;;;:::i;:::-;1627:17;;1664:1;1657:8;;;1481:192;;;;;:::o;1337:136::-;1395:7;1422:43;1426:1;1429;1422:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1415:50;;1337:136;;;;:::o;2079:278::-;2165:7;2197:1;2193;:5;2200:12;2185:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2224:9;2240:1;2236;:5;;;;:::i;:::-;2224:17;;2348:1;2341:8;;;2079:278;;;;;:::o;23745:330::-;23838:4;23875:53;23897:6;23875:53;;;;;;;;;;;;;;;;;:9;:17;23885:6;23875:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23855:9;:17;23865:6;23855:17;;;;;;;;;;;;;;;:73;;;;23962:32;23987:6;23962:9;:20;23972:9;23962:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23939:9;:20;23949:9;23939:20;;;;;;;;;;;;;;;:55;;;;24027:9;24010:35;;24019:6;24010:35;;;24038:6;24010:35;;;;;;:::i;:::-;;;;;;;;24063:4;24056:11;;23745:330;;;;;:::o;24083:1449::-;13969:4;13950:16;;:23;;;;;;;;;;;;;;;;;;24157:19:::1;24179:41;24201:18;;24179:17;;:21;;:41;;;;:::i;:::-;24157:63;;24233:22;24258:39;24279:17;;24258:16;;:20;;:39;;;;:::i;:::-;24233:64;;24308:22;24333:39;24354:17;;24333:16;;:20;;:39;;;;:::i;:::-;24308:64;;24471:18;24492:51;24541:1;24492:44;24524:11;24492:27;24504:14;24492:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;24471:72;;24554:20;24577:23;24589:10;24577:7;:11;;:23;;;;:::i;:::-;24554:46;;24613:22;24639:21;24613:47;;24671:30;24688:12;24671:16;:30::i;:::-;24712:23;24739:41;24765:14;24739:21;:25;;:41;;;;:::i;:::-;24712:68;;24793:19;24815:38;24831:21;24850:1;24831:14;:18;;:21;;;;:::i;:::-;24815:11;:15;;:38;;;;:::i;:::-;24793:60;;24866:26;24895:59;24952:1;24895:52;24935:11;24895:35;24915:14;24895:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;24866:88;;24965:26;24994:52;25034:11;24994:35;25014:14;24994:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;24965:81;;25057:26;25086:63;25130:18;25086:39;25106:18;25086:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;25057:92;;25186:1;25165:18;:22;25162:107;;;25212:15;;;;;;;;;;;25204:33;;:53;25238:18;25204:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25162:107;25305:1;25284:18;:22;25281:107;;;25331:15;;;;;;;;;;;25323:33;;:53;25357:18;25323:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25281:107;25433:1;25412:18;:22;:40;;;;;25451:1;25438:10;:14;25412:40;25409:116;;;25469:44;25482:10;25494:18;25469:12;:44::i;:::-;25409:116;24144:1388;;;;;;;;;;;14015:5:::0;13996:16;;:24;;;;;;;;;;;;;;;;;;24083:1449;:::o;26749:622::-;26835:7;26865:17;26885:1;26865:21;;26910:12;:20;26923:6;26910:20;;;;;;;;;;;;;;;;;;;;;;;;;26907:223;;;26959:38;26993:3;26959:29;26970:17;;26959:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;26947:50;;26907:223;;;27027:12;:23;27040:9;27027:23;;;;;;;;;;;;;;;;;;;;;;;;;27024:106;;;27079:39;27114:3;27079:30;27090:18;;27079:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;27067:51;;27024:106;26907:223;27165:1;27153:9;:13;27150:173;;;27210:39;27239:9;27210;:24;27228:4;27210:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27183:9;:24;27201:4;27183:24;;;;;;;;;;;;;;;:66;;;;27294:4;27269:42;;27278:6;27269:42;;;27301:9;27269:42;;;;;;:::i;:::-;;;;;;;;27150:173;27342:21;27353:9;27342:6;:10;;:21;;;;:::i;:::-;27335:28;;;26749:622;;;;;:::o;25544:666::-;25670:21;25708:1;25694:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25670:40;;25739:4;25721;25726:1;25721:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25765:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25755:4;25760:1;25755:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25800:62;25817:4;25832:15;;;;;;;;;;;25850:11;25800:8;:62::i;:::-;25901:15;;;;;;;;;;;:66;;;25982:11;26008:1;26052:4;26079;26115:15;25901:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26167:35;26184:11;26197:4;26167:35;;;;;;;:::i;:::-;;;;;;;;25599:611;25544:666;:::o;26218:523::-;26366:62;26383:4;26398:15;;;;;;;;;;;26416:11;26366:8;:62::i;:::-;26471:15;;;;;;;;;;;:31;;;26510:9;26543:4;26563:11;26589:1;26632;26675:17;;;;;;;;;;;26707:15;26471:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26218:523;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:619::-;2109:6;2117;2125;2174:2;2162:9;2153:7;2149:23;2145:32;2142:119;;;2180:79;;:::i;:::-;2142:119;2300:1;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2271:117;2427:2;2453:53;2498:7;2489:6;2478:9;2474:22;2453:53;:::i;:::-;2443:63;;2398:118;2555:2;2581:53;2626:7;2617:6;2606:9;2602:22;2581:53;:::i;:::-;2571:63;;2526:118;2032:619;;;;;:::o;2657:126::-;2694:7;2734:42;2727:5;2723:54;2712:65;;2657:126;;;:::o;2789:96::-;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:118::-;2978:24;2996:5;2978:24;:::i;:::-;2973:3;2966:37;2891:118;;:::o;3015:222::-;3108:4;3146:2;3135:9;3131:18;3123:26;;3159:71;3227:1;3216:9;3212:17;3203:6;3159:71;:::i;:::-;3015:222;;;;:::o;3243:122::-;3316:24;3334:5;3316:24;:::i;:::-;3309:5;3306:35;3296:63;;3355:1;3352;3345:12;3296:63;3243:122;:::o;3371:139::-;3417:5;3455:6;3442:20;3433:29;;3471:33;3498:5;3471:33;:::i;:::-;3371:139;;;;:::o;3516:474::-;3584:6;3592;3641:2;3629:9;3620:7;3616:23;3612:32;3609:119;;;3647:79;;:::i;:::-;3609:119;3767:1;3792:53;3837:7;3828:6;3817:9;3813:22;3792:53;:::i;:::-;3782:63;;3738:117;3894:2;3920:53;3965:7;3956:6;3945:9;3941:22;3920:53;:::i;:::-;3910:63;;3865:118;3516:474;;;;;:::o;3996:90::-;4030:7;4073:5;4066:13;4059:21;4048:32;;3996:90;;;:::o;4092:109::-;4173:21;4188:5;4173:21;:::i;:::-;4168:3;4161:34;4092:109;;:::o;4207:210::-;4294:4;4332:2;4321:9;4317:18;4309:26;;4345:65;4407:1;4396:9;4392:17;4383:6;4345:65;:::i;:::-;4207:210;;;;:::o;4423:116::-;4493:21;4508:5;4493:21;:::i;:::-;4486:5;4483:32;4473:60;;4529:1;4526;4519:12;4473:60;4423:116;:::o;4545:133::-;4588:5;4626:6;4613:20;4604:29;;4642:30;4666:5;4642:30;:::i;:::-;4545:133;;;;:::o;4684:468::-;4749:6;4757;4806:2;4794:9;4785:7;4781:23;4777:32;4774:119;;;4812:79;;:::i;:::-;4774:119;4932:1;4957:53;5002:7;4993:6;4982:9;4978:22;4957:53;:::i;:::-;4947:63;;4903:117;5059:2;5085:50;5127:7;5118:6;5107:9;5103:22;5085:50;:::i;:::-;5075:60;;5030:115;4684:468;;;;;:::o;5158:60::-;5186:3;5207:5;5200:12;;5158:60;;;:::o;5224:142::-;5274:9;5307:53;5325:34;5334:24;5352:5;5334:24;:::i;:::-;5325:34;:::i;:::-;5307:53;:::i;:::-;5294:66;;5224:142;;;:::o;5372:126::-;5422:9;5455:37;5486:5;5455:37;:::i;:::-;5442:50;;5372:126;;;:::o;5504:153::-;5581:9;5614:37;5645:5;5614:37;:::i;:::-;5601:50;;5504:153;;;:::o;5663:185::-;5777:64;5835:5;5777:64;:::i;:::-;5772:3;5765:77;5663:185;;:::o;5854:276::-;5974:4;6012:2;6001:9;5997:18;5989:26;;6025:98;6120:1;6109:9;6105:17;6096:6;6025:98;:::i;:::-;5854:276;;;;:::o;6136:118::-;6223:24;6241:5;6223:24;:::i;:::-;6218:3;6211:37;6136:118;;:::o;6260:222::-;6353:4;6391:2;6380:9;6376:18;6368:26;;6404:71;6472:1;6461:9;6457:17;6448:6;6404:71;:::i;:::-;6260:222;;;;:::o;6488:619::-;6565:6;6573;6581;6630:2;6618:9;6609:7;6605:23;6601:32;6598:119;;;6636:79;;:::i;:::-;6598:119;6756:1;6781:53;6826:7;6817:6;6806:9;6802:22;6781:53;:::i;:::-;6771:63;;6727:117;6883:2;6909:53;6954:7;6945:6;6934:9;6930:22;6909:53;:::i;:::-;6899:63;;6854:118;7011:2;7037:53;7082:7;7073:6;7062:9;7058:22;7037:53;:::i;:::-;7027:63;;6982:118;6488:619;;;;;:::o;7113:323::-;7169:6;7218:2;7206:9;7197:7;7193:23;7189:32;7186:119;;;7224:79;;:::i;:::-;7186:119;7344:1;7369:50;7411:7;7402:6;7391:9;7387:22;7369:50;:::i;:::-;7359:60;;7315:114;7113:323;;;;:::o;7442:86::-;7477:7;7517:4;7510:5;7506:16;7495:27;;7442:86;;;:::o;7534:112::-;7617:22;7633:5;7617:22;:::i;:::-;7612:3;7605:35;7534:112;;:::o;7652:214::-;7741:4;7779:2;7768:9;7764:18;7756:26;;7792:67;7856:1;7845:9;7841:17;7832:6;7792:67;:::i;:::-;7652:214;;;;:::o;7872:329::-;7931:6;7980:2;7968:9;7959:7;7955:23;7951:32;7948:119;;;7986:79;;:::i;:::-;7948:119;8106:1;8131:53;8176:7;8167:6;8156:9;8152:22;8131:53;:::i;:::-;8121:63;;8077:117;7872:329;;;;:::o;8207:::-;8266:6;8315:2;8303:9;8294:7;8290:23;8286:32;8283:119;;;8321:79;;:::i;:::-;8283:119;8441:1;8466:53;8511:7;8502:6;8491:9;8487:22;8466:53;:::i;:::-;8456:63;;8412:117;8207:329;;;;:::o;8542:117::-;8651:1;8648;8641:12;8665:117;8774:1;8771;8764:12;8788:117;8897:1;8894;8887:12;8928:568;9001:8;9011:6;9061:3;9054:4;9046:6;9042:17;9038:27;9028:122;;9069:79;;:::i;:::-;9028:122;9182:6;9169:20;9159:30;;9212:18;9204:6;9201:30;9198:117;;;9234:79;;:::i;:::-;9198:117;9348:4;9340:6;9336:17;9324:29;;9402:3;9394:4;9386:6;9382:17;9372:8;9368:32;9365:41;9362:128;;;9409:79;;:::i;:::-;9362:128;8928:568;;;;;:::o;9519:::-;9592:8;9602:6;9652:3;9645:4;9637:6;9633:17;9629:27;9619:122;;9660:79;;:::i;:::-;9619:122;9773:6;9760:20;9750:30;;9803:18;9795:6;9792:30;9789:117;;;9825:79;;:::i;:::-;9789:117;9939:4;9931:6;9927:17;9915:29;;9993:3;9985:4;9977:6;9973:17;9963:8;9959:32;9956:41;9953:128;;;10000:79;;:::i;:::-;9953:128;9519:568;;;;;:::o;10093:934::-;10215:6;10223;10231;10239;10288:2;10276:9;10267:7;10263:23;10259:32;10256:119;;;10294:79;;:::i;:::-;10256:119;10442:1;10431:9;10427:17;10414:31;10472:18;10464:6;10461:30;10458:117;;;10494:79;;:::i;:::-;10458:117;10607:80;10679:7;10670:6;10659:9;10655:22;10607:80;:::i;:::-;10589:98;;;;10385:312;10764:2;10753:9;10749:18;10736:32;10795:18;10787:6;10784:30;10781:117;;;10817:79;;:::i;:::-;10781:117;10930:80;11002:7;10993:6;10982:9;10978:22;10930:80;:::i;:::-;10912:98;;;;10707:313;10093:934;;;;;;;:::o;11033:104::-;11078:7;11107:24;11125:5;11107:24;:::i;:::-;11096:35;;11033:104;;;:::o;11143:142::-;11246:32;11272:5;11246:32;:::i;:::-;11241:3;11234:45;11143:142;;:::o;11291:254::-;11400:4;11438:2;11427:9;11423:18;11415:26;;11451:87;11535:1;11524:9;11520:17;11511:6;11451:87;:::i;:::-;11291:254;;;;:::o;11551:474::-;11619:6;11627;11676:2;11664:9;11655:7;11651:23;11647:32;11644:119;;;11682:79;;:::i;:::-;11644:119;11802:1;11827:53;11872:7;11863:6;11852:9;11848:22;11827:53;:::i;:::-;11817:63;;11773:117;11929:2;11955:53;12000:7;11991:6;11980:9;11976:22;11955:53;:::i;:::-;11945:63;;11900:118;11551:474;;;;;:::o;12031:180::-;12079:77;12076:1;12069:88;12176:4;12173:1;12166:15;12200:4;12197:1;12190:15;12217:320;12261:6;12298:1;12292:4;12288:12;12278:22;;12345:1;12339:4;12335:12;12366:18;12356:81;;12422:4;12414:6;12410:17;12400:27;;12356:81;12484:2;12476:6;12473:14;12453:18;12450:38;12447:84;;12503:18;;:::i;:::-;12447:84;12268:269;12217:320;;;:::o;12543:182::-;12683:34;12679:1;12671:6;12667:14;12660:58;12543:182;:::o;12731:366::-;12873:3;12894:67;12958:2;12953:3;12894:67;:::i;:::-;12887:74;;12970:93;13059:3;12970:93;:::i;:::-;13088:2;13083:3;13079:12;13072:19;;12731:366;;;:::o;13103:419::-;13269:4;13307:2;13296:9;13292:18;13284:26;;13356:9;13350:4;13346:20;13342:1;13331:9;13327:17;13320:47;13384:131;13510:4;13384:131;:::i;:::-;13376:139;;13103:419;;;:::o;13528:143::-;13585:5;13616:6;13610:13;13601:22;;13632:33;13659:5;13632:33;:::i;:::-;13528:143;;;;:::o;13677:351::-;13747:6;13796:2;13784:9;13775:7;13771:23;13767:32;13764:119;;;13802:79;;:::i;:::-;13764:119;13922:1;13947:64;14003:7;13994:6;13983:9;13979:22;13947:64;:::i;:::-;13937:74;;13893:128;13677:351;;;;:::o;14034:332::-;14155:4;14193:2;14182:9;14178:18;14170:26;;14206:71;14274:1;14263:9;14259:17;14250:6;14206:71;:::i;:::-;14287:72;14355:2;14344:9;14340:18;14331:6;14287:72;:::i;:::-;14034:332;;;;;:::o;14372:172::-;14512:24;14508:1;14500:6;14496:14;14489:48;14372:172;:::o;14550:366::-;14692:3;14713:67;14777:2;14772:3;14713:67;:::i;:::-;14706:74;;14789:93;14878:3;14789:93;:::i;:::-;14907:2;14902:3;14898:12;14891:19;;14550:366;;;:::o;14922:419::-;15088:4;15126:2;15115:9;15111:18;15103:26;;15175:9;15169:4;15165:20;15161:1;15150:9;15146:17;15139:47;15203:131;15329:4;15203:131;:::i;:::-;15195:139;;14922:419;;;:::o;15347:180::-;15395:77;15392:1;15385:88;15492:4;15489:1;15482:15;15516:4;15513:1;15506:15;15533:180;15581:77;15578:1;15571:88;15678:4;15675:1;15668:15;15702:4;15699:1;15692:15;15719:191;15759:3;15778:20;15796:1;15778:20;:::i;:::-;15773:25;;15812:20;15830:1;15812:20;:::i;:::-;15807:25;;15855:1;15852;15848:9;15841:16;;15876:3;15873:1;15870:10;15867:36;;;15883:18;;:::i;:::-;15867:36;15719:191;;;;:::o;15916:233::-;15955:3;15978:24;15996:5;15978:24;:::i;:::-;15969:33;;16024:66;16017:5;16014:77;16011:103;;16094:18;;:::i;:::-;16011:103;16141:1;16134:5;16130:13;16123:20;;15916:233;;;:::o;16155:177::-;16295:29;16291:1;16283:6;16279:14;16272:53;16155:177;:::o;16338:366::-;16480:3;16501:67;16565:2;16560:3;16501:67;:::i;:::-;16494:74;;16577:93;16666:3;16577:93;:::i;:::-;16695:2;16690:3;16686:12;16679:19;;16338:366;;;:::o;16710:419::-;16876:4;16914:2;16903:9;16899:18;16891:26;;16963:9;16957:4;16953:20;16949:1;16938:9;16934:17;16927:47;16991:131;17117:4;16991:131;:::i;:::-;16983:139;;16710:419;;;:::o;17135:147::-;17236:11;17273:3;17258:18;;17135:147;;;;:::o;17288:114::-;;:::o;17408:398::-;17567:3;17588:83;17669:1;17664:3;17588:83;:::i;:::-;17581:90;;17680:93;17769:3;17680:93;:::i;:::-;17798:1;17793:3;17789:11;17782:18;;17408:398;;;:::o;17812:379::-;17996:3;18018:147;18161:3;18018:147;:::i;:::-;18011:154;;18182:3;18175:10;;17812:379;;;:::o;18197:225::-;18337:34;18333:1;18325:6;18321:14;18314:58;18406:8;18401:2;18393:6;18389:15;18382:33;18197:225;:::o;18428:366::-;18570:3;18591:67;18655:2;18650:3;18591:67;:::i;:::-;18584:74;;18667:93;18756:3;18667:93;:::i;:::-;18785:2;18780:3;18776:12;18769:19;;18428:366;;;:::o;18800:419::-;18966:4;19004:2;18993:9;18989:18;18981:26;;19053:9;19047:4;19043:20;19039:1;19028:9;19024:17;19017:47;19081:131;19207:4;19081:131;:::i;:::-;19073:139;;18800:419;;;:::o;19225:332::-;19346:4;19384:2;19373:9;19369:18;19361:26;;19397:71;19465:1;19454:9;19450:17;19441:6;19397:71;:::i;:::-;19478:72;19546:2;19535:9;19531:18;19522:6;19478:72;:::i;:::-;19225:332;;;;;:::o;19563:137::-;19617:5;19648:6;19642:13;19633:22;;19664:30;19688:5;19664:30;:::i;:::-;19563:137;;;;:::o;19706:345::-;19773:6;19822:2;19810:9;19801:7;19797:23;19793:32;19790:119;;;19828:79;;:::i;:::-;19790:119;19948:1;19973:61;20026:7;20017:6;20006:9;20002:22;19973:61;:::i;:::-;19963:71;;19919:125;19706:345;;;;:::o;20057:410::-;20097:7;20120:20;20138:1;20120:20;:::i;:::-;20115:25;;20154:20;20172:1;20154:20;:::i;:::-;20149:25;;20209:1;20206;20202:9;20231:30;20249:11;20231:30;:::i;:::-;20220:41;;20410:1;20401:7;20397:15;20394:1;20391:22;20371:1;20364:9;20344:83;20321:139;;20440:18;;:::i;:::-;20321:139;20105:362;20057:410;;;;:::o;20473:180::-;20521:77;20518:1;20511:88;20618:4;20615:1;20608:15;20642:4;20639:1;20632:15;20659:185;20699:1;20716:20;20734:1;20716:20;:::i;:::-;20711:25;;20750:20;20768:1;20750:20;:::i;:::-;20745:25;;20789:1;20779:35;;20794:18;;:::i;:::-;20779:35;20836:1;20833;20829:9;20824:14;;20659:185;;;;:::o;20850:220::-;20990:34;20986:1;20978:6;20974:14;20967:58;21059:3;21054:2;21046:6;21042:15;21035:28;20850:220;:::o;21076:366::-;21218:3;21239:67;21303:2;21298:3;21239:67;:::i;:::-;21232:74;;21315:93;21404:3;21315:93;:::i;:::-;21433:2;21428:3;21424:12;21417:19;;21076:366;;;:::o;21448:419::-;21614:4;21652:2;21641:9;21637:18;21629:26;;21701:9;21695:4;21691:20;21687:1;21676:9;21672:17;21665:47;21729:131;21855:4;21729:131;:::i;:::-;21721:139;;21448:419;;;:::o;21873:177::-;22013:29;22009:1;22001:6;21997:14;21990:53;21873:177;:::o;22056:366::-;22198:3;22219:67;22283:2;22278:3;22219:67;:::i;:::-;22212:74;;22295:93;22384:3;22295:93;:::i;:::-;22413:2;22408:3;22404:12;22397:19;;22056:366;;;:::o;22428:419::-;22594:4;22632:2;22621:9;22617:18;22609:26;;22681:9;22675:4;22671:20;22667:1;22656:9;22652:17;22645:47;22709:131;22835:4;22709:131;:::i;:::-;22701:139;;22428:419;;;:::o;22853:223::-;22993:34;22989:1;22981:6;22977:14;22970:58;23062:6;23057:2;23049:6;23045:15;23038:31;22853:223;:::o;23082:366::-;23224:3;23245:67;23309:2;23304:3;23245:67;:::i;:::-;23238:74;;23321:93;23410:3;23321:93;:::i;:::-;23439:2;23434:3;23430:12;23423:19;;23082:366;;;:::o;23454:419::-;23620:4;23658:2;23647:9;23643:18;23635:26;;23707:9;23701:4;23697:20;23693:1;23682:9;23678:17;23671:47;23735:131;23861:4;23735:131;:::i;:::-;23727:139;;23454:419;;;:::o;23879:221::-;24019:34;24015:1;24007:6;24003:14;23996:58;24088:4;24083:2;24075:6;24071:15;24064:29;23879:221;:::o;24106:366::-;24248:3;24269:67;24333:2;24328:3;24269:67;:::i;:::-;24262:74;;24345:93;24434:3;24345:93;:::i;:::-;24463:2;24458:3;24454:12;24447:19;;24106:366;;;:::o;24478:419::-;24644:4;24682:2;24671:9;24667:18;24659:26;;24731:9;24725:4;24721:20;24717:1;24706:9;24702:17;24695:47;24759:131;24885:4;24759:131;:::i;:::-;24751:139;;24478:419;;;:::o;24903:224::-;25043:34;25039:1;25031:6;25027:14;25020:58;25112:7;25107:2;25099:6;25095:15;25088:32;24903:224;:::o;25133:366::-;25275:3;25296:67;25360:2;25355:3;25296:67;:::i;:::-;25289:74;;25372:93;25461:3;25372:93;:::i;:::-;25490:2;25485:3;25481:12;25474:19;;25133:366;;;:::o;25505:419::-;25671:4;25709:2;25698:9;25694:18;25686:26;;25758:9;25752:4;25748:20;25744:1;25733:9;25729:17;25722:47;25786:131;25912:4;25786:131;:::i;:::-;25778:139;;25505:419;;;:::o;25930:222::-;26070:34;26066:1;26058:6;26054:14;26047:58;26139:5;26134:2;26126:6;26122:15;26115:30;25930:222;:::o;26158:366::-;26300:3;26321:67;26385:2;26380:3;26321:67;:::i;:::-;26314:74;;26397:93;26486:3;26397:93;:::i;:::-;26515:2;26510:3;26506:12;26499:19;;26158:366;;;:::o;26530:419::-;26696:4;26734:2;26723:9;26719:18;26711:26;;26783:9;26777:4;26773:20;26769:1;26758:9;26754:17;26747:47;26811:131;26937:4;26811:131;:::i;:::-;26803:139;;26530:419;;;:::o;26955:179::-;27095:31;27091:1;27083:6;27079:14;27072:55;26955:179;:::o;27140:366::-;27282:3;27303:67;27367:2;27362:3;27303:67;:::i;:::-;27296:74;;27379:93;27468:3;27379:93;:::i;:::-;27497:2;27492:3;27488:12;27481:19;;27140:366;;;:::o;27512:419::-;27678:4;27716:2;27705:9;27701:18;27693:26;;27765:9;27759:4;27755:20;27751:1;27740:9;27736:17;27729:47;27793:131;27919:4;27793:131;:::i;:::-;27785:139;;27512:419;;;:::o;27937:227::-;28077:34;28073:1;28065:6;28061:14;28054:58;28146:10;28141:2;28133:6;28129:15;28122:35;27937:227;:::o;28170:366::-;28312:3;28333:67;28397:2;28392:3;28333:67;:::i;:::-;28326:74;;28409:93;28498:3;28409:93;:::i;:::-;28527:2;28522:3;28518:12;28511:19;;28170:366;;;:::o;28542:419::-;28708:4;28746:2;28735:9;28731:18;28723:26;;28795:9;28789:4;28785:20;28781:1;28770:9;28766:17;28759:47;28823:131;28949:4;28823:131;:::i;:::-;28815:139;;28542:419;;;:::o;28967:224::-;29107:34;29103:1;29095:6;29091:14;29084:58;29176:7;29171:2;29163:6;29159:15;29152:32;28967:224;:::o;29197:366::-;29339:3;29360:67;29424:2;29419:3;29360:67;:::i;:::-;29353:74;;29436:93;29525:3;29436:93;:::i;:::-;29554:2;29549:3;29545:12;29538:19;;29197:366;;;:::o;29569:419::-;29735:4;29773:2;29762:9;29758:18;29750:26;;29822:9;29816:4;29812:20;29808:1;29797:9;29793:17;29786:47;29850:131;29976:4;29850:131;:::i;:::-;29842:139;;29569:419;;;:::o;29994:194::-;30034:4;30054:20;30072:1;30054:20;:::i;:::-;30049:25;;30088:20;30106:1;30088:20;:::i;:::-;30083:25;;30132:1;30129;30125:9;30117:17;;30156:1;30150:4;30147:11;30144:37;;;30161:18;;:::i;:::-;30144:37;29994:194;;;;:::o;30194:180::-;30242:77;30239:1;30232:88;30339:4;30336:1;30329:15;30363:4;30360:1;30353:15;30380:85;30425:7;30454:5;30443:16;;30380:85;;;:::o;30471:158::-;30529:9;30562:61;30580:42;30589:32;30615:5;30589:32;:::i;:::-;30580:42;:::i;:::-;30562:61;:::i;:::-;30549:74;;30471:158;;;:::o;30635:147::-;30730:45;30769:5;30730:45;:::i;:::-;30725:3;30718:58;30635:147;;:::o;30788:114::-;30855:6;30889:5;30883:12;30873:22;;30788:114;;;:::o;30908:184::-;31007:11;31041:6;31036:3;31029:19;31081:4;31076:3;31072:14;31057:29;;30908:184;;;;:::o;31098:132::-;31165:4;31188:3;31180:11;;31218:4;31213:3;31209:14;31201:22;;31098:132;;;:::o;31236:108::-;31313:24;31331:5;31313:24;:::i;:::-;31308:3;31301:37;31236:108;;:::o;31350:179::-;31419:10;31440:46;31482:3;31474:6;31440:46;:::i;:::-;31518:4;31513:3;31509:14;31495:28;;31350:179;;;;:::o;31535:113::-;31605:4;31637;31632:3;31628:14;31620:22;;31535:113;;;:::o;31684:732::-;31803:3;31832:54;31880:5;31832:54;:::i;:::-;31902:86;31981:6;31976:3;31902:86;:::i;:::-;31895:93;;32012:56;32062:5;32012:56;:::i;:::-;32091:7;32122:1;32107:284;32132:6;32129:1;32126:13;32107:284;;;32208:6;32202:13;32235:63;32294:3;32279:13;32235:63;:::i;:::-;32228:70;;32321:60;32374:6;32321:60;:::i;:::-;32311:70;;32167:224;32154:1;32151;32147:9;32142:14;;32107:284;;;32111:14;32407:3;32400:10;;31808:608;;;31684:732;;;;:::o;32422:831::-;32685:4;32723:3;32712:9;32708:19;32700:27;;32737:71;32805:1;32794:9;32790:17;32781:6;32737:71;:::i;:::-;32818:80;32894:2;32883:9;32879:18;32870:6;32818:80;:::i;:::-;32945:9;32939:4;32935:20;32930:2;32919:9;32915:18;32908:48;32973:108;33076:4;33067:6;32973:108;:::i;:::-;32965:116;;33091:72;33159:2;33148:9;33144:18;33135:6;33091:72;:::i;:::-;33173:73;33241:3;33230:9;33226:19;33217:6;33173:73;:::i;:::-;32422:831;;;;;;;;:::o;33259:483::-;33430:4;33468:2;33457:9;33453:18;33445:26;;33481:71;33549:1;33538:9;33534:17;33525:6;33481:71;:::i;:::-;33599:9;33593:4;33589:20;33584:2;33573:9;33569:18;33562:48;33627:108;33730:4;33721:6;33627:108;:::i;:::-;33619:116;;33259:483;;;;;:::o;33748:807::-;33997:4;34035:3;34024:9;34020:19;34012:27;;34049:71;34117:1;34106:9;34102:17;34093:6;34049:71;:::i;:::-;34130:72;34198:2;34187:9;34183:18;34174:6;34130:72;:::i;:::-;34212:80;34288:2;34277:9;34273:18;34264:6;34212:80;:::i;:::-;34302;34378:2;34367:9;34363:18;34354:6;34302:80;:::i;:::-;34392:73;34460:3;34449:9;34445:19;34436:6;34392:73;:::i;:::-;34475;34543:3;34532:9;34528:19;34519:6;34475:73;:::i;:::-;33748:807;;;;;;;;;:::o;34561:143::-;34618:5;34649:6;34643:13;34634:22;;34665:33;34692:5;34665:33;:::i;:::-;34561:143;;;;:::o;34710:663::-;34798:6;34806;34814;34863:2;34851:9;34842:7;34838:23;34834:32;34831:119;;;34869:79;;:::i;:::-;34831:119;34989:1;35014:64;35070:7;35061:6;35050:9;35046:22;35014:64;:::i;:::-;35004:74;;34960:128;35127:2;35153:64;35209:7;35200:6;35189:9;35185:22;35153:64;:::i;:::-;35143:74;;35098:129;35266:2;35292:64;35348:7;35339:6;35328:9;35324:22;35292:64;:::i;:::-;35282:74;;35237:129;34710:663;;;;;:::o

Swarm Source

ipfs://1d1d7d31e7d333eef42c70d7c75de32844a02dc99be96224b4b3dcfef52904bc

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

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