ETH Price: $2,433.07 (-2.24%)

Contract

0xa452E3760e90D3d80966298d3B0529fad1c3936F
 

Overview

ETH Balance

0.000181793170621685 ETH

Eth Value

$0.44 (@ $2,433.07/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Enable Trading164068052023-01-14 18:21:47632 days ago1673720507IN
0xa452E376...ad1c3936F
0 ETH0.0005220217.97979523
Approve164067912023-01-14 18:18:59632 days ago1673720339IN
0xa452E376...ad1c3936F
0 ETH0.0009556220.22006681
Transfer164067822023-01-14 18:17:11632 days ago1673720231IN
0xa452E376...ad1c3936F
0 ETH0.0054844119.33591249
Set Tx Limit164066842023-01-14 17:57:35632 days ago1673719055IN
0xa452E376...ad1c3936F
0 ETH0.0005626319.41865363
Set Max Wallet L...164066752023-01-14 17:55:47632 days ago1673718947IN
0xa452E376...ad1c3936F
0 ETH0.0005500418.97045432
Approve164064952023-01-14 17:19:47632 days ago1673716787IN
0xa452E376...ad1c3936F
0 ETH0.0012400826.23916429
Approve164063642023-01-14 16:53:35632 days ago1673715215IN
0xa452E376...ad1c3936F
0 ETH0.000843617.85
Approve164063642023-01-14 16:53:35632 days ago1673715215IN
0xa452E376...ad1c3936F
0 ETH0.0008534718.05869248
Approve164063082023-01-14 16:42:23632 days ago1673714543IN
0xa452E376...ad1c3936F
0 ETH0.0009032220.86793193
Approve164063072023-01-14 16:42:11632 days ago1673714531IN
0xa452E376...ad1c3936F
0 ETH0.0008965318.96990621
Approve164063012023-01-14 16:40:59632 days ago1673714459IN
0xa452E376...ad1c3936F
0 ETH0.0010318821.83366783
Approve164062902023-01-14 16:38:47632 days ago1673714327IN
0xa452E376...ad1c3936F
0 ETH0.0005497820.09367436
Approve164062902023-01-14 16:38:47632 days ago1673714327IN
0xa452E376...ad1c3936F
0 ETH0.0005497820.09367436
Approve164062902023-01-14 16:38:47632 days ago1673714327IN
0xa452E376...ad1c3936F
0 ETH0.0009496420.09367436
Approve164062802023-01-14 16:36:47632 days ago1673714207IN
0xa452E376...ad1c3936F
0 ETH0.001028221.75578813
Approve164062792023-01-14 16:36:35632 days ago1673714195IN
0xa452E376...ad1c3936F
0 ETH0.0010265421.72069946
Approve164062792023-01-14 16:36:35632 days ago1673714195IN
0xa452E376...ad1c3936F
0 ETH0.0010265421.72069946
Approve164062782023-01-14 16:36:23632 days ago1673714183IN
0xa452E376...ad1c3936F
0 ETH0.0010430822.07080754
Approve164062782023-01-14 16:36:23632 days ago1673714183IN
0xa452E376...ad1c3936F
0 ETH0.0010430822.07080754
Approve164062762023-01-14 16:35:59632 days ago1673714159IN
0xa452E376...ad1c3936F
0 ETH0.0010249921.68794068
Approve164062762023-01-14 16:35:59632 days ago1673714159IN
0xa452E376...ad1c3936F
0 ETH0.0010249921.68794068
Approve164062752023-01-14 16:35:47632 days ago1673714147IN
0xa452E376...ad1c3936F
0 ETH0.0009269119.61271371
Approve164062752023-01-14 16:35:47632 days ago1673714147IN
0xa452E376...ad1c3936F
0 ETH0.0009269119.61271371
Approve164062752023-01-14 16:35:47632 days ago1673714147IN
0xa452E376...ad1c3936F
0 ETH0.0009269119.61271371
Approve164062732023-01-14 16:35:23632 days ago1673714123IN
0xa452E376...ad1c3936F
0 ETH0.0010531922.28460408
View all transactions

Latest 8 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
164067822023-01-14 18:17:11632 days ago1673720231
0xa452E376...ad1c3936F
0.00000921 ETH
164067822023-01-14 18:17:11632 days ago1673720231
0xa452E376...ad1c3936F
0.00065239 ETH
164067822023-01-14 18:17:11632 days ago1673720231
0xa452E376...ad1c3936F
0.00521917 ETH
164067822023-01-14 18:17:11632 days ago1673720231
0xa452E376...ad1c3936F
0.00587157 ETH
164063102023-01-14 16:42:47632 days ago1673714567
0xa452E376...ad1c3936F
0.00017257 ETH
164063102023-01-14 16:42:47632 days ago1673714567
0xa452E376...ad1c3936F
0.00309781 ETH
164063102023-01-14 16:42:47632 days ago1673714567
0xa452E376...ad1c3936F
0.02478254 ETH
164063102023-01-14 16:42:47632 days ago1673714567
0xa452E376...ad1c3936F
0.02788035 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HamsToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

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

}

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 isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    function renouncedOwnership() 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 createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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

contract HamsToken is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Hams";
    string private _symbol = "$HAMS";
    uint8 private _decimals = 6;

    address public marketingWallet = 0x75882Abb205ec3cEb0314E5e3891C0fA29009699;
    address public liquidityReciever;

    address public constant deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public constant zeroAddress = 0x0000000000000000000000000000000000000000;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 _buyLiquidityFee = 10;
    uint256 _buyMarketingFee = 40;
    
    uint256 _sellLiquidityFee = 10;
    uint256 _sellMarketingFee = 40;

    uint256 totalBuy;
    uint256 totalSell;

    uint256 constant denominator = 1000;

    uint256 private _totalSupply = 100_000 * 10 ** _decimals;   

    uint256 public minimumTokensBeforeSwap = 1000 * 10 ** _decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(10).div(denominator);     //1%
    uint256 public _walletMax = _totalSupply.mul(20).div(denominator);    //2%

    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;
    bool public ActiveTrade = false;

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

    event SwapAndLiquifyEnabledUpdated(bool enabled);

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

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

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

        liquidityReciever = developerWallet;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[developerWallet] = true;

        isWalletLimitExempt[developerWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[developerWallet] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        totalBuy = _buyLiquidityFee.add(_buyMarketingFee);
        totalSell = _sellLiquidityFee.add(_sellMarketingFee);

        transferOwnership(developerWallet);

        _balances[developerWallet] = _totalSupply;
        emit Transfer(address(0), developerWallet, _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 getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

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

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

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

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

        require(sender != address(0), "ERC20:from zero");
        require(recipient != address(0), "ERC20:to zero");
        require(amount > 0, "Invalid Amount");

        if(!ActiveTrade){
            require(isExcludedFromFee[sender] || isExcludedFromFee[recipient],"Trading is Paused!");
        }

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {  
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount,"Max Tx");
            } 

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

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

            uint256 finalAmount = shouldTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

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

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

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

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

    function swapAndLiquify() private lockTheSwap {
        
        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) return;

        uint256 _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        // uint256 _MarketingShare = _buyMarketingFee.add(_sellMarketingFee);

        uint totalShares = totalBuy.add(totalSell);
        if(totalShares == 0) return;

        uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2);
        uint256 tokensForSwap = contractBalance.sub(tokensForLP);

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

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

        uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity);

        if(amountETHMarketing > 0) 
            transferToAddressETH(marketingWallet,amountETHMarketing);

        if(amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);

    }

    function transferToAddressETH(address recipient, uint256 amount) private {
        payable(recipient).transfer(amount);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

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

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

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;
        
        unchecked {

            if(isMarketPair[sender]) {

                feeAmount = amount.mul(totalBuy).div(denominator);
            
            }
            else if(isMarketPair[recipient]) {
                
                feeAmount = amount.mul(totalSell).div(denominator);
                
            }     

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    //To Rescue Stucked Balance
    function rescueFunds() external onlyOwner { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    //To Rescue Stucked Tokens
    function rescueTokens(IERC20 adr,address recipient,uint amount) external onlyOwner {
        adr.transfer(recipient,amount);
    }

    function enableTrading(bool _status) external onlyOwner {
        ActiveTrade = _status;
    }

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

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

    function setBuyFee(uint _newLP , uint _newMarket) external onlyOwner {     
        _buyLiquidityFee = _newLP;
        _buyMarketingFee = _newMarket;
        totalBuy = _buyLiquidityFee.add(_buyMarketingFee);
    }

    function setSellFee(uint _newLP , uint _newMarket) external onlyOwner {        
        _sellLiquidityFee = _newLP;
        _sellMarketingFee = _newMarket;
        totalSell = _sellLiquidityFee.add(_sellMarketingFee);
    }

    function setMarketingWallets(address _newWallet) external onlyOwner {
        marketingWallet = _newWallet;
    }

    function setLiquidityWallets(address _newWallet) external onlyOwner {
        liquidityReciever = _newWallet;
    }    

    function setExcludeFromFee(address _adr,bool _status) external onlyOwner {
        require(isExcludedFromFee[_adr] != _status,"Not Changed!!");
        isExcludedFromFee[_adr] = _status;
    }

    function ExcludeWalletLimit(address _adr,bool _status) external onlyOwner {
        require(isWalletLimitExempt[_adr] != _status,"Not Changed!!");
        isWalletLimitExempt[_adr] = _status;
    }

    function ExcludeTxLimit(address _adr,bool _status) external onlyOwner {
        require(isTxLimitExempt[_adr] != _status,"Not Changed!!");
        isTxLimitExempt[_adr] = _status;
    }

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

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

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setMarketPair(address _pair, bool _status) external onlyOwner {
        isMarketPair[_pair] = _status;
        if(_status) {
            isWalletLimitExempt[address(_pair)] = true;
        }
    }

    function changeRouterVersion(address newRouterAddress) external onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

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

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

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

        isMarketPair[address(uniswapPair)] = true;
        isWalletLimitExempt[address(uniswapPair)] = 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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"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":"ActiveTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","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":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","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":"renouncedOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setLiquidityWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setMarketingWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"}],"name":"setSellFee","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":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600481526020017f48616d7300000000000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000de2565b506040518060400160405280600581526020017f2448414d53000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000de2565b506006600360006101000a81548160ff021916908360ff1602179055507375882abb205ec3ceb0314e5e3891c0fa29009699600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a600b556028600c55600a600d556028600e55600360009054906101000a900460ff16600a620001439190620011dc565b620186a062000153919062001319565b601155600360009054906101000a900460ff16600a620001749190620011dc565b6103e862000183919062001319565b601255620001be6103e8620001aa600a60115462000a6960201b62002bd01790919060201c565b62000aed60201b62002c4b1790919060201c565b601355620001f96103e8620001e5601460115462000a6960201b62002bd01790919060201c565b62000aed60201b62002c4b1790919060201c565b6014556001601560006101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506000601560026101000a81548160ff0219169083151502179055506001601660156101000a81548160ff0219169083151502179055503480156200027557600080fd5b5060006200028862000b3f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073ba425c88e6a42a32d863642e967faf7301fbaa2d90506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039f57600080fd5b505afa158015620003b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003da919062000ea9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000ea9565b6040518363ffffffff1660e01b81526004016200049792919062000fda565b602060405180830381600087803b158015620004b257600080fd5b505af1158015620004c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ed919062000ea9565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000976600c54600b5462000b4760201b62002c951790919060201c565b600f819055506200099a600e54600d5462000b4760201b62002c951790919060201c565b601081905550620009b18262000baa60201b60201c565b601154600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60115460405162000a599190620010b3565b60405180910390a35050620015eb565b60008083141562000a7e576000905062000ae7565b6000828462000a8e919062001319565b905082848262000a9f919062001149565b1462000ae2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad9906200106f565b60405180910390fd5b809150505b92915050565b600062000b3783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000d7a60201b60201c565b905092915050565b600033905090565b600080828462000b589190620010ec565b90508381101562000ba0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b97906200104d565b60405180910390fd5b8091505092915050565b62000bba62000b3f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000c4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c419062001091565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000cbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cb4906200102b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808311829062000dc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000dbb919062001007565b60405180910390fd5b506000838562000dd5919062001149565b9050809150509392505050565b82805462000df090620013fb565b90600052602060002090601f01602090048101928262000e14576000855562000e60565b82601f1062000e2f57805160ff191683800117855562000e60565b8280016001018555821562000e60579182015b8281111562000e5f57825182559160200191906001019062000e42565b5b50905062000e6f919062000e73565b5090565b5b8082111562000e8e57600081600090555060010162000e74565b5090565b60008151905062000ea381620015d1565b92915050565b60006020828403121562000ec25762000ec1620014be565b5b600062000ed28482850162000e92565b91505092915050565b62000ee6816200137a565b82525050565b600062000ef982620010d0565b62000f058185620010db565b935062000f17818560208601620013c5565b62000f2281620014c3565b840191505092915050565b600062000f3c602683620010db565b915062000f4982620014e1565b604082019050919050565b600062000f63601b83620010db565b915062000f708262001530565b602082019050919050565b600062000f8a602183620010db565b915062000f978262001559565b604082019050919050565b600062000fb1602083620010db565b915062000fbe82620015a8565b602082019050919050565b62000fd481620013ae565b82525050565b600060408201905062000ff1600083018562000edb565b62001000602083018462000edb565b9392505050565b6000602082019050818103600083015262001023818462000eec565b905092915050565b60006020820190508181036000830152620010468162000f2d565b9050919050565b60006020820190508181036000830152620010688162000f54565b9050919050565b600060208201905081810360008301526200108a8162000f7b565b9050919050565b60006020820190508181036000830152620010ac8162000fa2565b9050919050565b6000602082019050620010ca600083018462000fc9565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620010f982620013ae565b91506200110683620013ae565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200113e576200113d62001431565b5b828201905092915050565b60006200115682620013ae565b91506200116383620013ae565b92508262001176576200117562001460565b5b828204905092915050565b6000808291508390505b6001851115620011d357808604811115620011ab57620011aa62001431565b5b6001851615620011bb5780820291505b8081029050620011cb85620014d4565b94506200118b565b94509492505050565b6000620011e982620013ae565b9150620011f683620013b8565b9250620012257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200122d565b905092915050565b6000826200123f576001905062001312565b816200124f576000905062001312565b81600181146200126857600281146200127357620012a9565b600191505062001312565b60ff84111562001288576200128762001431565b5b8360020a915084821115620012a257620012a162001431565b5b5062001312565b5060208310610133831016604e8410600b8410161715620012e35782820a905083811115620012dd57620012dc62001431565b5b62001312565b620012f2848484600162001181565b925090508184048111156200130c576200130b62001431565b5b81810290505b9392505050565b60006200132682620013ae565b91506200133383620013ae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200136f576200136e62001431565b5b828202905092915050565b600062001387826200138e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620013e5578082015181840152602081019050620013c8565b83811115620013f5576000848401525b50505050565b600060028204905060018216806200141457607f821691505b602082108114156200142b576200142a6200148f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b620015dc816200137a565b8114620015e857600080fd5b50565b61535780620015fb6000396000f3fe6080604052600436106102e85760003560e01c806375f0a87411610190578063c49b9a80116100dc578063e6b2603b11610095578063f2fde38b1161006f578063f2fde38b14610b6d578063f872858a14610b96578063fb0ecfa414610bc1578063ffc0a03114610bea576102ef565b8063e6b2603b14610b04578063ee828db314610b1b578063f275f64b14610b44576102ef565b8063c49b9a80146109e2578063c816841b14610a0b578063c867d60b14610a36578063cea9d26f14610a73578063d2d7ad8314610a9c578063dd62ed3e14610ac7576102ef565b806395d89b4111610149578063a9059cbb11610123578063a9059cbb1461092a578063af9549e014610967578063c0b4d19914610990578063c16dd4a4146109b9576102ef565b806395d89b411461089757806398e944c8146108c2578063a457c2d7146108ed576102ef565b806375f0a874146107835780637d1db4a5146107ae578063807c2d9c146107d95780638b42507f146108045780638da5cb5b146108415780638f32d59b1461086c576102ef565b806338ec0b111161024f5780635342acb4116102085780635e42358c116101e25780635e42358c146106c95780636ac9a870146106f457806370a082311461071d578063728d41c91461075a576102ef565b80635342acb4146106265780635881f3ef146106635780635c85974f146106a0576102ef565b806338ec0b1114610506578063395093511461052f5780633b97084a1461056c5780633ecad271146105955780634974d88f146105d25780634a74bb02146105fb576102ef565b806320365d5f116102a157806320365d5f1461040657806323b872dd1461041d57806327c8f8351461045a5780632b112e4914610485578063313ce567146104b05780633187c304146104db576102ef565b806306fdde03146102f45780630930907b1461031f578063095ea7b31461034a57806313ea1d89146103875780631694505e146103b057806318160ddd146103db576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c13565b6040516103169190614973565b60405180910390f35b34801561032b57600080fd5b50610334610ca5565b604051610341919061486f565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c9190614388565b610caa565b60405161037e919061493d565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190614348565b610cc8565b005b3480156103bc57600080fd5b506103c5610e4b565b6040516103d29190614958565b60405180910390f35b3480156103e757600080fd5b506103f0610e71565b6040516103fd9190614b55565b60405180910390f35b34801561041257600080fd5b5061041b610e7b565b005b34801561042957600080fd5b50610444600480360381019061043f91906142f5565b610fd0565b604051610451919061493d565b60405180910390f35b34801561046657600080fd5b5061046f6110aa565b60405161047c919061486f565b60405180910390f35b34801561049157600080fd5b5061049a6110b0565b6040516104a79190614b55565b60405180910390f35b3480156104bc57600080fd5b506104c56110f1565b6040516104d29190614bfa565b60405180910390f35b3480156104e757600080fd5b506104f0611108565b6040516104fd919061493d565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190614348565b61111b565b005b34801561053b57600080fd5b5061055660048036038101906105519190614388565b61129e565b604051610563919061493d565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190614475565b611351565b005b3480156105a157600080fd5b506105bc60048036038101906105b7919061425b565b6113f0565b6040516105c9919061493d565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f491906143c8565b611410565b005b34801561060757600080fd5b506106106114c2565b60405161061d919061493d565b60405180910390f35b34801561063257600080fd5b5061064d6004803603810190610648919061425b565b6114d5565b60405161065a919061493d565b60405180910390f35b34801561066f57600080fd5b5061068a6004803603810190610685919061425b565b6114f5565b604051610697919061486f565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c29190614475565b611a53565b005b3480156106d557600080fd5b506106de611af2565b6040516106eb919061493d565b60405180910390f35b34801561070057600080fd5b5061071b600480360381019061071691906144a2565b611b05565b005b34801561072957600080fd5b50610744600480360381019061073f919061425b565b611bc9565b6040516107519190614b55565b60405180910390f35b34801561076657600080fd5b50610781600480360381019061077c9190614475565b611c12565b005b34801561078f57600080fd5b50610798611cb1565b6040516107a5919061486f565b60405180910390f35b3480156107ba57600080fd5b506107c3611cd7565b6040516107d09190614b55565b60405180910390f35b3480156107e557600080fd5b506107ee611cdd565b6040516107fb9190614b55565b60405180910390f35b34801561081057600080fd5b5061082b6004803603810190610826919061425b565b611ce3565b604051610838919061493d565b60405180910390f35b34801561084d57600080fd5b50610856611d03565b604051610863919061486f565b60405180910390f35b34801561087857600080fd5b50610881611d2c565b60405161088e919061493d565b60405180910390f35b3480156108a357600080fd5b506108ac611d83565b6040516108b99190614973565b60405180910390f35b3480156108ce57600080fd5b506108d7611e15565b6040516108e4919061486f565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f9190614388565b611e3b565b604051610921919061493d565b60405180910390f35b34801561093657600080fd5b50610951600480360381019061094c9190614388565b611f08565b60405161095e919061493d565b60405180910390f35b34801561097357600080fd5b5061098e60048036038101906109899190614348565b611f27565b005b34801561099c57600080fd5b506109b760048036038101906109b2919061425b565b6120aa565b005b3480156109c557600080fd5b506109e060048036038101906109db9190614348565b612183565b005b3480156109ee57600080fd5b50610a096004803603810190610a0491906143c8565b6122d2565b005b348015610a1757600080fd5b50610a206123bb565b604051610a2d919061486f565b60405180910390f35b348015610a4257600080fd5b50610a5d6004803603810190610a58919061425b565b6123e1565b604051610a6a919061493d565b60405180910390f35b348015610a7f57600080fd5b50610a9a6004803603810190610a959190614422565b612401565b005b348015610aa857600080fd5b50610ab1612529565b604051610abe9190614b55565b60405180910390f35b348015610ad357600080fd5b50610aee6004803603810190610ae991906142b5565b61252f565b604051610afb9190614b55565b60405180910390f35b348015610b1057600080fd5b50610b196125b6565b005b348015610b2757600080fd5b50610b426004803603810190610b3d91906143c8565b6126fa565b005b348015610b5057600080fd5b50610b6b6004803603810190610b6691906143c8565b6127ac565b005b348015610b7957600080fd5b50610b946004803603810190610b8f919061425b565b61285e565b005b348015610ba257600080fd5b50610bab612a20565b604051610bb8919061493d565b60405180910390f35b348015610bcd57600080fd5b50610be86004803603810190610be391906144a2565b612a33565b005b348015610bf657600080fd5b50610c116004803603810190610c0c919061425b565b612af7565b005b606060018054610c2290614e6c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4e90614e6c565b8015610c9b5780601f10610c7057610100808354040283529160200191610c9b565b820191906000526020600020905b815481529060010190602001808311610c7e57829003601f168201915b5050505050905090565b600081565b6000610cbe610cb7612cf3565b8484612cfb565b6001905092915050565b610cd0612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5490614ab5565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de790614a35565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601154905090565b610e83612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790614ab5565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610fdd848484612ec6565b5061109f84610fea612cf3565b61109a856040518060600160405280602881526020016152d560289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611050612cf3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357e9092919063ffffffff16565b612cfb565b600190509392505050565b61dead81565b60006110ec6110bf6000611bc9565b6110de6110cd61dead611bc9565b6011546135e290919063ffffffff16565b6135e290919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b601560029054906101000a900460ff1681565b611123612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a790614ab5565b60405180910390fd5b801515600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123a90614a35565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006113476112ab612cf3565b8461134285600660006112bc612cf3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9590919063ffffffff16565b612cfb565b6001905092915050565b611359612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90614ab5565b60405180910390fd5b8060128190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b611418612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90614ab5565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b601660159054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60006114ff612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158390614ab5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d757600080fd5b505afa1580156115eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160f9190614288565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561167157600080fd5b505afa158015611685573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a99190614288565b6040518363ffffffff1660e01b81526004016116c692919061488a565b60206040518083038186803b1580156116de57600080fd5b505afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117169190614288565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118d7578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561179357600080fd5b505afa1580156117a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cb9190614288565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561182d57600080fd5b505afa158015611841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118659190614288565b6040518363ffffffff1660e01b815260040161188292919061488a565b602060405180830381600087803b15801561189c57600080fd5b505af11580156118b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d49190614288565b91505b81601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611a5b612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf90614ab5565b60405180910390fd5b8060138190555050565b601560009054906101000a900460ff1681565b611b0d612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190614ab5565b60405180910390fd5b81600d8190555080600e81905550611bbf600e54600d54612c9590919063ffffffff16565b6010819055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611c1a612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e90614ab5565b60405180910390fd5b8060148190555050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60145481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060028054611d9290614e6c565b80601f0160208091040260200160405190810160405280929190818152602001828054611dbe90614e6c565b8015611e0b5780601f10611de057610100808354040283529160200191611e0b565b820191906000526020600020905b815481529060010190602001808311611dee57829003601f168201915b5050505050905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611efe611e48612cf3565b84611ef9856040518060600160405280602581526020016152fd6025913960066000611e72612cf3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357e9092919063ffffffff16565b612cfb565b6001905092915050565b6000611f1c611f15612cf3565b8484612ec6565b506001905092915050565b611f2f612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb390614ab5565b60405180910390fd5b801515600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561204f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204690614a35565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6120b2612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461213f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213690614ab5565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61218b612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90614ab5565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156122ce576001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b6122da612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235e90614ab5565b60405180910390fd5b80601660156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516123b0919061493d565b60405180910390a150565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b612409612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248d90614ab5565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016124d19291906148b3565b602060405180830381600087803b1580156124eb57600080fd5b505af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252391906143f5565b50505050565b60125481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6125be612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264290614ab5565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516126719061485a565b60006040518083038185875af1925050503d80600081146126ae576040519150601f19603f3d011682016040523d82523d6000602084013e6126b3565b606091505b50509050806126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee90614b35565b60405180910390fd5b50565b612702612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461278f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278690614ab5565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6127b4612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283890614ab5565b60405180910390fd5b80601560026101000a81548160ff02191690831515021790555050565b612866612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ea90614ab5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295a906149b5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560019054906101000a900460ff1681565b612a3b612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abf90614ab5565b60405180910390fd5b81600b8190555080600c81905550612aed600c54600b54612c9590919063ffffffff16565b600f819055505050565b612aff612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8390614ab5565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831415612be35760009050612c45565b60008284612bf19190614cfc565b9050828482612c009190614ccb565b14612c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3790614a75565b60405180910390fd5b809150505b92915050565b6000612c8d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061362c565b905092915050565b6000808284612ca49190614c75565b905083811015612ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce0906149f5565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6290614b15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd2906149d5565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612eb99190614b55565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2e90614a55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9e90614af5565b60405180910390fd5b60008211612fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe190614a15565b60405180910390fd5b601560029054906101000a900460ff166130df57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061309f5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d590614995565b60405180910390fd5b5b601660149054906101000a900460ff1615613106576130ff84848461368f565b9050613577565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131aa5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131c25750601560009054906101000a900460ff165b1561320d5760135482111561320c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320390614ad5565b60405180910390fd5b5b600061321830611bc9565b90506000601254821015905080801561323e5750601660149054906101000a900460ff16155b80156132945750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132ac5750601660159054906101000a900460ff165b156132ba576132b9613862565b5b613343846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357e9092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006133928787613a53565b6133a6576133a1878787613bbe565b6133a8565b845b9050601560019054906101000a900460ff1680156134105750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613475576014546134338261342589611bc9565b612c9590919063ffffffff16565b1115613474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346b90614a95565b60405180910390fd5b5b6134c781600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135679190614b55565b60405180910390a3600193505050505b9392505050565b60008383111582906135c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135bd9190614973565b60405180910390fd5b50600083856135d59190614d56565b9050809150509392505050565b600061362483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061357e565b905092915050565b60008083118290613673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366a9190614973565b60405180910390fd5b50600083856136829190614ccb565b9050809150509392505050565b600061371a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357e9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137af82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161384f9190614b55565b60405180910390a3600190509392505050565b6001601660146101000a81548160ff021916908315150217905550600061388830611bc9565b905060008114156138995750613a36565b60006138b2600d54600b54612c9590919063ffffffff16565b905060006138cd601054600f54612c9590919063ffffffff16565b905060008114156138e057505050613a36565b600061391a600261390c846138fe8789612bd090919063ffffffff16565b612c4b90919063ffffffff16565b612c4b90919063ffffffff16565b9050600061393182866135e290919063ffffffff16565b9050600047905061394182613de3565b600061395682476135e290919063ffffffff16565b90506000613980613971600289612c4b90919063ffffffff16565b876135e290919063ffffffff16565b905060006139bc60026139ae846139a08c88612bd090919063ffffffff16565b612c4b90919063ffffffff16565b612c4b90919063ffffffff16565b905060006139d382856135e290919063ffffffff16565b90506000811115613a0b57613a0a600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261406e565b5b600082118015613a1b5750600087115b15613a2b57613a2a87836140b9565b5b505050505050505050505b6000601660146101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613af65750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b045760019050613bb8565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613ba55750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613bb35760009050613bb8565b600090505b92915050565b600080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c4357613c3c6103e8613c2e600f5486612bd090919063ffffffff16565b612c4b90919063ffffffff16565b9050613cc2565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613cc157613cbe6103e8613cb060105486612bd090919063ffffffff16565b612c4b90919063ffffffff16565b90505b5b6000811115613dc657613d1d81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613dbd9190614b55565b60405180910390a35b613dd981846135e290919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115613e0057613dff614f5a565b5b604051908082528060200260200182016040528015613e2e5781602001602082028036833780820191505090505b5090503081600081518110613e4657613e45614f2b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ee857600080fd5b505afa158015613efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f209190614288565b81600181518110613f3457613f33614f2b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f9b30601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cfb565b601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fff959493929190614ba0565b600060405180830381600087803b15801561401957600080fd5b505af115801561402d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614062929190614b70565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156140b4573d6000803e3d6000fd5b505050565b6140e630601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cfb565b601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161416f969594939291906148dc565b6060604051808303818588803b15801561418857600080fd5b505af115801561419c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141c191906144e2565b5050505050565b6000813590506141d781615278565b92915050565b6000815190506141ec81615278565b92915050565b6000813590506142018161528f565b92915050565b6000815190506142168161528f565b92915050565b60008135905061422b816152a6565b92915050565b600081359050614240816152bd565b92915050565b600081519050614255816152bd565b92915050565b60006020828403121561427157614270614f89565b5b600061427f848285016141c8565b91505092915050565b60006020828403121561429e5761429d614f89565b5b60006142ac848285016141dd565b91505092915050565b600080604083850312156142cc576142cb614f89565b5b60006142da858286016141c8565b92505060206142eb858286016141c8565b9150509250929050565b60008060006060848603121561430e5761430d614f89565b5b600061431c868287016141c8565b935050602061432d868287016141c8565b925050604061433e86828701614231565b9150509250925092565b6000806040838503121561435f5761435e614f89565b5b600061436d858286016141c8565b925050602061437e858286016141f2565b9150509250929050565b6000806040838503121561439f5761439e614f89565b5b60006143ad858286016141c8565b92505060206143be85828601614231565b9150509250929050565b6000602082840312156143de576143dd614f89565b5b60006143ec848285016141f2565b91505092915050565b60006020828403121561440b5761440a614f89565b5b600061441984828501614207565b91505092915050565b60008060006060848603121561443b5761443a614f89565b5b60006144498682870161421c565b935050602061445a868287016141c8565b925050604061446b86828701614231565b9150509250925092565b60006020828403121561448b5761448a614f89565b5b600061449984828501614231565b91505092915050565b600080604083850312156144b9576144b8614f89565b5b60006144c785828601614231565b92505060206144d885828601614231565b9150509250929050565b6000806000606084860312156144fb576144fa614f89565b5b600061450986828701614246565b935050602061451a86828701614246565b925050604061452b86828701614246565b9150509250925092565b6000614541838361454d565b60208301905092915050565b61455681614d8a565b82525050565b61456581614d8a565b82525050565b600061457682614c25565b6145808185614c48565b935061458b83614c15565b8060005b838110156145bc5781516145a38882614535565b97506145ae83614c3b565b92505060018101905061458f565b5085935050505092915050565b6145d281614d9c565b82525050565b6145e181614df1565b82525050565b6145f081614e03565b82525050565b600061460182614c30565b61460b8185614c64565b935061461b818560208601614e39565b61462481614f8e565b840191505092915050565b600061463c601283614c64565b915061464782614f9f565b602082019050919050565b600061465f602683614c64565b915061466a82614fc8565b604082019050919050565b6000614682602283614c64565b915061468d82615017565b604082019050919050565b60006146a5601b83614c64565b91506146b082615066565b602082019050919050565b60006146c8600e83614c64565b91506146d38261508f565b602082019050919050565b60006146eb600d83614c64565b91506146f6826150b8565b602082019050919050565b600061470e600f83614c64565b9150614719826150e1565b602082019050919050565b6000614731602183614c64565b915061473c8261510a565b604082019050919050565b6000614754600a83614c64565b915061475f82615159565b602082019050919050565b6000614777602083614c64565b915061478282615182565b602082019050919050565b600061479a600683614c64565b91506147a5826151ab565b602082019050919050565b60006147bd600d83614c64565b91506147c8826151d4565b602082019050919050565b60006147e0600083614c59565b91506147eb826151fd565b600082019050919050565b6000614803602483614c64565b915061480e82615200565b604082019050919050565b6000614826601483614c64565b91506148318261524f565b602082019050919050565b61484581614dda565b82525050565b61485481614de4565b82525050565b6000614865826147d3565b9150819050919050565b6000602082019050614884600083018461455c565b92915050565b600060408201905061489f600083018561455c565b6148ac602083018461455c565b9392505050565b60006040820190506148c8600083018561455c565b6148d5602083018461483c565b9392505050565b600060c0820190506148f1600083018961455c565b6148fe602083018861483c565b61490b60408301876145e7565b61491860608301866145e7565b614925608083018561455c565b61493260a083018461483c565b979650505050505050565b600060208201905061495260008301846145c9565b92915050565b600060208201905061496d60008301846145d8565b92915050565b6000602082019050818103600083015261498d81846145f6565b905092915050565b600060208201905081810360008301526149ae8161462f565b9050919050565b600060208201905081810360008301526149ce81614652565b9050919050565b600060208201905081810360008301526149ee81614675565b9050919050565b60006020820190508181036000830152614a0e81614698565b9050919050565b60006020820190508181036000830152614a2e816146bb565b9050919050565b60006020820190508181036000830152614a4e816146de565b9050919050565b60006020820190508181036000830152614a6e81614701565b9050919050565b60006020820190508181036000830152614a8e81614724565b9050919050565b60006020820190508181036000830152614aae81614747565b9050919050565b60006020820190508181036000830152614ace8161476a565b9050919050565b60006020820190508181036000830152614aee8161478d565b9050919050565b60006020820190508181036000830152614b0e816147b0565b9050919050565b60006020820190508181036000830152614b2e816147f6565b9050919050565b60006020820190508181036000830152614b4e81614819565b9050919050565b6000602082019050614b6a600083018461483c565b92915050565b6000604082019050614b85600083018561483c565b8181036020830152614b97818461456b565b90509392505050565b600060a082019050614bb5600083018861483c565b614bc260208301876145e7565b8181036040830152614bd4818661456b565b9050614be3606083018561455c565b614bf0608083018461483c565b9695505050505050565b6000602082019050614c0f600083018461484b565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614c8082614dda565b9150614c8b83614dda565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614cc057614cbf614e9e565b5b828201905092915050565b6000614cd682614dda565b9150614ce183614dda565b925082614cf157614cf0614ecd565b5b828204905092915050565b6000614d0782614dda565b9150614d1283614dda565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d4b57614d4a614e9e565b5b828202905092915050565b6000614d6182614dda565b9150614d6c83614dda565b925082821015614d7f57614d7e614e9e565b5b828203905092915050565b6000614d9582614dba565b9050919050565b60008115159050919050565b6000614db382614d8a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614dfc82614e15565b9050919050565b6000614e0e82614dda565b9050919050565b6000614e2082614e27565b9050919050565b6000614e3282614dba565b9050919050565b60005b83811015614e57578082015181840152602081019050614e3c565b83811115614e66576000848401525b50505050565b60006002820490506001821680614e8457607f821691505b60208210811415614e9857614e97614efc565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f54726164696e6720697320506175736564210000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b7f45524332303a66726f6d207a65726f0000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782057616c6c657400000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d61782054780000000000000000000000000000000000000000000000000000600082015250565b7f45524332303a746f207a65726f00000000000000000000000000000000000000600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b61528181614d8a565b811461528c57600080fd5b50565b61529881614d9c565b81146152a357600080fd5b50565b6152af81614da8565b81146152ba57600080fd5b50565b6152c681614dda565b81146152d157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209db670a70a51317acfb3e660f979519f31fdeb224c6d61cef97deac1910f40c464736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c806375f0a87411610190578063c49b9a80116100dc578063e6b2603b11610095578063f2fde38b1161006f578063f2fde38b14610b6d578063f872858a14610b96578063fb0ecfa414610bc1578063ffc0a03114610bea576102ef565b8063e6b2603b14610b04578063ee828db314610b1b578063f275f64b14610b44576102ef565b8063c49b9a80146109e2578063c816841b14610a0b578063c867d60b14610a36578063cea9d26f14610a73578063d2d7ad8314610a9c578063dd62ed3e14610ac7576102ef565b806395d89b4111610149578063a9059cbb11610123578063a9059cbb1461092a578063af9549e014610967578063c0b4d19914610990578063c16dd4a4146109b9576102ef565b806395d89b411461089757806398e944c8146108c2578063a457c2d7146108ed576102ef565b806375f0a874146107835780637d1db4a5146107ae578063807c2d9c146107d95780638b42507f146108045780638da5cb5b146108415780638f32d59b1461086c576102ef565b806338ec0b111161024f5780635342acb4116102085780635e42358c116101e25780635e42358c146106c95780636ac9a870146106f457806370a082311461071d578063728d41c91461075a576102ef565b80635342acb4146106265780635881f3ef146106635780635c85974f146106a0576102ef565b806338ec0b1114610506578063395093511461052f5780633b97084a1461056c5780633ecad271146105955780634974d88f146105d25780634a74bb02146105fb576102ef565b806320365d5f116102a157806320365d5f1461040657806323b872dd1461041d57806327c8f8351461045a5780632b112e4914610485578063313ce567146104b05780633187c304146104db576102ef565b806306fdde03146102f45780630930907b1461031f578063095ea7b31461034a57806313ea1d89146103875780631694505e146103b057806318160ddd146103db576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c13565b6040516103169190614973565b60405180910390f35b34801561032b57600080fd5b50610334610ca5565b604051610341919061486f565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c9190614388565b610caa565b60405161037e919061493d565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190614348565b610cc8565b005b3480156103bc57600080fd5b506103c5610e4b565b6040516103d29190614958565b60405180910390f35b3480156103e757600080fd5b506103f0610e71565b6040516103fd9190614b55565b60405180910390f35b34801561041257600080fd5b5061041b610e7b565b005b34801561042957600080fd5b50610444600480360381019061043f91906142f5565b610fd0565b604051610451919061493d565b60405180910390f35b34801561046657600080fd5b5061046f6110aa565b60405161047c919061486f565b60405180910390f35b34801561049157600080fd5b5061049a6110b0565b6040516104a79190614b55565b60405180910390f35b3480156104bc57600080fd5b506104c56110f1565b6040516104d29190614bfa565b60405180910390f35b3480156104e757600080fd5b506104f0611108565b6040516104fd919061493d565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190614348565b61111b565b005b34801561053b57600080fd5b5061055660048036038101906105519190614388565b61129e565b604051610563919061493d565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190614475565b611351565b005b3480156105a157600080fd5b506105bc60048036038101906105b7919061425b565b6113f0565b6040516105c9919061493d565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f491906143c8565b611410565b005b34801561060757600080fd5b506106106114c2565b60405161061d919061493d565b60405180910390f35b34801561063257600080fd5b5061064d6004803603810190610648919061425b565b6114d5565b60405161065a919061493d565b60405180910390f35b34801561066f57600080fd5b5061068a6004803603810190610685919061425b565b6114f5565b604051610697919061486f565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c29190614475565b611a53565b005b3480156106d557600080fd5b506106de611af2565b6040516106eb919061493d565b60405180910390f35b34801561070057600080fd5b5061071b600480360381019061071691906144a2565b611b05565b005b34801561072957600080fd5b50610744600480360381019061073f919061425b565b611bc9565b6040516107519190614b55565b60405180910390f35b34801561076657600080fd5b50610781600480360381019061077c9190614475565b611c12565b005b34801561078f57600080fd5b50610798611cb1565b6040516107a5919061486f565b60405180910390f35b3480156107ba57600080fd5b506107c3611cd7565b6040516107d09190614b55565b60405180910390f35b3480156107e557600080fd5b506107ee611cdd565b6040516107fb9190614b55565b60405180910390f35b34801561081057600080fd5b5061082b6004803603810190610826919061425b565b611ce3565b604051610838919061493d565b60405180910390f35b34801561084d57600080fd5b50610856611d03565b604051610863919061486f565b60405180910390f35b34801561087857600080fd5b50610881611d2c565b60405161088e919061493d565b60405180910390f35b3480156108a357600080fd5b506108ac611d83565b6040516108b99190614973565b60405180910390f35b3480156108ce57600080fd5b506108d7611e15565b6040516108e4919061486f565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f9190614388565b611e3b565b604051610921919061493d565b60405180910390f35b34801561093657600080fd5b50610951600480360381019061094c9190614388565b611f08565b60405161095e919061493d565b60405180910390f35b34801561097357600080fd5b5061098e60048036038101906109899190614348565b611f27565b005b34801561099c57600080fd5b506109b760048036038101906109b2919061425b565b6120aa565b005b3480156109c557600080fd5b506109e060048036038101906109db9190614348565b612183565b005b3480156109ee57600080fd5b50610a096004803603810190610a0491906143c8565b6122d2565b005b348015610a1757600080fd5b50610a206123bb565b604051610a2d919061486f565b60405180910390f35b348015610a4257600080fd5b50610a5d6004803603810190610a58919061425b565b6123e1565b604051610a6a919061493d565b60405180910390f35b348015610a7f57600080fd5b50610a9a6004803603810190610a959190614422565b612401565b005b348015610aa857600080fd5b50610ab1612529565b604051610abe9190614b55565b60405180910390f35b348015610ad357600080fd5b50610aee6004803603810190610ae991906142b5565b61252f565b604051610afb9190614b55565b60405180910390f35b348015610b1057600080fd5b50610b196125b6565b005b348015610b2757600080fd5b50610b426004803603810190610b3d91906143c8565b6126fa565b005b348015610b5057600080fd5b50610b6b6004803603810190610b6691906143c8565b6127ac565b005b348015610b7957600080fd5b50610b946004803603810190610b8f919061425b565b61285e565b005b348015610ba257600080fd5b50610bab612a20565b604051610bb8919061493d565b60405180910390f35b348015610bcd57600080fd5b50610be86004803603810190610be391906144a2565b612a33565b005b348015610bf657600080fd5b50610c116004803603810190610c0c919061425b565b612af7565b005b606060018054610c2290614e6c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4e90614e6c565b8015610c9b5780601f10610c7057610100808354040283529160200191610c9b565b820191906000526020600020905b815481529060010190602001808311610c7e57829003601f168201915b5050505050905090565b600081565b6000610cbe610cb7612cf3565b8484612cfb565b6001905092915050565b610cd0612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5490614ab5565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de790614a35565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601154905090565b610e83612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790614ab5565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610fdd848484612ec6565b5061109f84610fea612cf3565b61109a856040518060600160405280602881526020016152d560289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611050612cf3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357e9092919063ffffffff16565b612cfb565b600190509392505050565b61dead81565b60006110ec6110bf6000611bc9565b6110de6110cd61dead611bc9565b6011546135e290919063ffffffff16565b6135e290919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b601560029054906101000a900460ff1681565b611123612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a790614ab5565b60405180910390fd5b801515600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123a90614a35565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006113476112ab612cf3565b8461134285600660006112bc612cf3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9590919063ffffffff16565b612cfb565b6001905092915050565b611359612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90614ab5565b60405180910390fd5b8060128190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b611418612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90614ab5565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b601660159054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60006114ff612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158390614ab5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d757600080fd5b505afa1580156115eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160f9190614288565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561167157600080fd5b505afa158015611685573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a99190614288565b6040518363ffffffff1660e01b81526004016116c692919061488a565b60206040518083038186803b1580156116de57600080fd5b505afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117169190614288565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118d7578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561179357600080fd5b505afa1580156117a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cb9190614288565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561182d57600080fd5b505afa158015611841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118659190614288565b6040518363ffffffff1660e01b815260040161188292919061488a565b602060405180830381600087803b15801561189c57600080fd5b505af11580156118b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d49190614288565b91505b81601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611a5b612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf90614ab5565b60405180910390fd5b8060138190555050565b601560009054906101000a900460ff1681565b611b0d612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190614ab5565b60405180910390fd5b81600d8190555080600e81905550611bbf600e54600d54612c9590919063ffffffff16565b6010819055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611c1a612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e90614ab5565b60405180910390fd5b8060148190555050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60145481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060028054611d9290614e6c565b80601f0160208091040260200160405190810160405280929190818152602001828054611dbe90614e6c565b8015611e0b5780601f10611de057610100808354040283529160200191611e0b565b820191906000526020600020905b815481529060010190602001808311611dee57829003601f168201915b5050505050905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611efe611e48612cf3565b84611ef9856040518060600160405280602581526020016152fd6025913960066000611e72612cf3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357e9092919063ffffffff16565b612cfb565b6001905092915050565b6000611f1c611f15612cf3565b8484612ec6565b506001905092915050565b611f2f612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb390614ab5565b60405180910390fd5b801515600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561204f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204690614a35565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6120b2612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461213f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213690614ab5565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61218b612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90614ab5565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156122ce576001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b6122da612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235e90614ab5565b60405180910390fd5b80601660156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516123b0919061493d565b60405180910390a150565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b612409612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248d90614ab5565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016124d19291906148b3565b602060405180830381600087803b1580156124eb57600080fd5b505af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252391906143f5565b50505050565b60125481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6125be612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264290614ab5565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516126719061485a565b60006040518083038185875af1925050503d80600081146126ae576040519150601f19603f3d011682016040523d82523d6000602084013e6126b3565b606091505b50509050806126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee90614b35565b60405180910390fd5b50565b612702612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461278f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278690614ab5565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6127b4612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283890614ab5565b60405180910390fd5b80601560026101000a81548160ff02191690831515021790555050565b612866612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ea90614ab5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295a906149b5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560019054906101000a900460ff1681565b612a3b612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abf90614ab5565b60405180910390fd5b81600b8190555080600c81905550612aed600c54600b54612c9590919063ffffffff16565b600f819055505050565b612aff612cf3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8390614ab5565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831415612be35760009050612c45565b60008284612bf19190614cfc565b9050828482612c009190614ccb565b14612c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3790614a75565b60405180910390fd5b809150505b92915050565b6000612c8d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061362c565b905092915050565b6000808284612ca49190614c75565b905083811015612ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce0906149f5565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6290614b15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd2906149d5565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612eb99190614b55565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2e90614a55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9e90614af5565b60405180910390fd5b60008211612fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe190614a15565b60405180910390fd5b601560029054906101000a900460ff166130df57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061309f5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d590614995565b60405180910390fd5b5b601660149054906101000a900460ff1615613106576130ff84848461368f565b9050613577565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131aa5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131c25750601560009054906101000a900460ff165b1561320d5760135482111561320c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320390614ad5565b60405180910390fd5b5b600061321830611bc9565b90506000601254821015905080801561323e5750601660149054906101000a900460ff16155b80156132945750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132ac5750601660159054906101000a900460ff165b156132ba576132b9613862565b5b613343846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357e9092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006133928787613a53565b6133a6576133a1878787613bbe565b6133a8565b845b9050601560019054906101000a900460ff1680156134105750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613475576014546134338261342589611bc9565b612c9590919063ffffffff16565b1115613474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346b90614a95565b60405180910390fd5b5b6134c781600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135679190614b55565b60405180910390a3600193505050505b9392505050565b60008383111582906135c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135bd9190614973565b60405180910390fd5b50600083856135d59190614d56565b9050809150509392505050565b600061362483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061357e565b905092915050565b60008083118290613673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366a9190614973565b60405180910390fd5b50600083856136829190614ccb565b9050809150509392505050565b600061371a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357e9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137af82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161384f9190614b55565b60405180910390a3600190509392505050565b6001601660146101000a81548160ff021916908315150217905550600061388830611bc9565b905060008114156138995750613a36565b60006138b2600d54600b54612c9590919063ffffffff16565b905060006138cd601054600f54612c9590919063ffffffff16565b905060008114156138e057505050613a36565b600061391a600261390c846138fe8789612bd090919063ffffffff16565b612c4b90919063ffffffff16565b612c4b90919063ffffffff16565b9050600061393182866135e290919063ffffffff16565b9050600047905061394182613de3565b600061395682476135e290919063ffffffff16565b90506000613980613971600289612c4b90919063ffffffff16565b876135e290919063ffffffff16565b905060006139bc60026139ae846139a08c88612bd090919063ffffffff16565b612c4b90919063ffffffff16565b612c4b90919063ffffffff16565b905060006139d382856135e290919063ffffffff16565b90506000811115613a0b57613a0a600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261406e565b5b600082118015613a1b5750600087115b15613a2b57613a2a87836140b9565b5b505050505050505050505b6000601660146101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613af65750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b045760019050613bb8565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613ba55750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613bb35760009050613bb8565b600090505b92915050565b600080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c4357613c3c6103e8613c2e600f5486612bd090919063ffffffff16565b612c4b90919063ffffffff16565b9050613cc2565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613cc157613cbe6103e8613cb060105486612bd090919063ffffffff16565b612c4b90919063ffffffff16565b90505b5b6000811115613dc657613d1d81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613dbd9190614b55565b60405180910390a35b613dd981846135e290919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115613e0057613dff614f5a565b5b604051908082528060200260200182016040528015613e2e5781602001602082028036833780820191505090505b5090503081600081518110613e4657613e45614f2b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ee857600080fd5b505afa158015613efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f209190614288565b81600181518110613f3457613f33614f2b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f9b30601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cfb565b601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fff959493929190614ba0565b600060405180830381600087803b15801561401957600080fd5b505af115801561402d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614062929190614b70565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156140b4573d6000803e3d6000fd5b505050565b6140e630601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cfb565b601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161416f969594939291906148dc565b6060604051808303818588803b15801561418857600080fd5b505af115801561419c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141c191906144e2565b5050505050565b6000813590506141d781615278565b92915050565b6000815190506141ec81615278565b92915050565b6000813590506142018161528f565b92915050565b6000815190506142168161528f565b92915050565b60008135905061422b816152a6565b92915050565b600081359050614240816152bd565b92915050565b600081519050614255816152bd565b92915050565b60006020828403121561427157614270614f89565b5b600061427f848285016141c8565b91505092915050565b60006020828403121561429e5761429d614f89565b5b60006142ac848285016141dd565b91505092915050565b600080604083850312156142cc576142cb614f89565b5b60006142da858286016141c8565b92505060206142eb858286016141c8565b9150509250929050565b60008060006060848603121561430e5761430d614f89565b5b600061431c868287016141c8565b935050602061432d868287016141c8565b925050604061433e86828701614231565b9150509250925092565b6000806040838503121561435f5761435e614f89565b5b600061436d858286016141c8565b925050602061437e858286016141f2565b9150509250929050565b6000806040838503121561439f5761439e614f89565b5b60006143ad858286016141c8565b92505060206143be85828601614231565b9150509250929050565b6000602082840312156143de576143dd614f89565b5b60006143ec848285016141f2565b91505092915050565b60006020828403121561440b5761440a614f89565b5b600061441984828501614207565b91505092915050565b60008060006060848603121561443b5761443a614f89565b5b60006144498682870161421c565b935050602061445a868287016141c8565b925050604061446b86828701614231565b9150509250925092565b60006020828403121561448b5761448a614f89565b5b600061449984828501614231565b91505092915050565b600080604083850312156144b9576144b8614f89565b5b60006144c785828601614231565b92505060206144d885828601614231565b9150509250929050565b6000806000606084860312156144fb576144fa614f89565b5b600061450986828701614246565b935050602061451a86828701614246565b925050604061452b86828701614246565b9150509250925092565b6000614541838361454d565b60208301905092915050565b61455681614d8a565b82525050565b61456581614d8a565b82525050565b600061457682614c25565b6145808185614c48565b935061458b83614c15565b8060005b838110156145bc5781516145a38882614535565b97506145ae83614c3b565b92505060018101905061458f565b5085935050505092915050565b6145d281614d9c565b82525050565b6145e181614df1565b82525050565b6145f081614e03565b82525050565b600061460182614c30565b61460b8185614c64565b935061461b818560208601614e39565b61462481614f8e565b840191505092915050565b600061463c601283614c64565b915061464782614f9f565b602082019050919050565b600061465f602683614c64565b915061466a82614fc8565b604082019050919050565b6000614682602283614c64565b915061468d82615017565b604082019050919050565b60006146a5601b83614c64565b91506146b082615066565b602082019050919050565b60006146c8600e83614c64565b91506146d38261508f565b602082019050919050565b60006146eb600d83614c64565b91506146f6826150b8565b602082019050919050565b600061470e600f83614c64565b9150614719826150e1565b602082019050919050565b6000614731602183614c64565b915061473c8261510a565b604082019050919050565b6000614754600a83614c64565b915061475f82615159565b602082019050919050565b6000614777602083614c64565b915061478282615182565b602082019050919050565b600061479a600683614c64565b91506147a5826151ab565b602082019050919050565b60006147bd600d83614c64565b91506147c8826151d4565b602082019050919050565b60006147e0600083614c59565b91506147eb826151fd565b600082019050919050565b6000614803602483614c64565b915061480e82615200565b604082019050919050565b6000614826601483614c64565b91506148318261524f565b602082019050919050565b61484581614dda565b82525050565b61485481614de4565b82525050565b6000614865826147d3565b9150819050919050565b6000602082019050614884600083018461455c565b92915050565b600060408201905061489f600083018561455c565b6148ac602083018461455c565b9392505050565b60006040820190506148c8600083018561455c565b6148d5602083018461483c565b9392505050565b600060c0820190506148f1600083018961455c565b6148fe602083018861483c565b61490b60408301876145e7565b61491860608301866145e7565b614925608083018561455c565b61493260a083018461483c565b979650505050505050565b600060208201905061495260008301846145c9565b92915050565b600060208201905061496d60008301846145d8565b92915050565b6000602082019050818103600083015261498d81846145f6565b905092915050565b600060208201905081810360008301526149ae8161462f565b9050919050565b600060208201905081810360008301526149ce81614652565b9050919050565b600060208201905081810360008301526149ee81614675565b9050919050565b60006020820190508181036000830152614a0e81614698565b9050919050565b60006020820190508181036000830152614a2e816146bb565b9050919050565b60006020820190508181036000830152614a4e816146de565b9050919050565b60006020820190508181036000830152614a6e81614701565b9050919050565b60006020820190508181036000830152614a8e81614724565b9050919050565b60006020820190508181036000830152614aae81614747565b9050919050565b60006020820190508181036000830152614ace8161476a565b9050919050565b60006020820190508181036000830152614aee8161478d565b9050919050565b60006020820190508181036000830152614b0e816147b0565b9050919050565b60006020820190508181036000830152614b2e816147f6565b9050919050565b60006020820190508181036000830152614b4e81614819565b9050919050565b6000602082019050614b6a600083018461483c565b92915050565b6000604082019050614b85600083018561483c565b8181036020830152614b97818461456b565b90509392505050565b600060a082019050614bb5600083018861483c565b614bc260208301876145e7565b8181036040830152614bd4818661456b565b9050614be3606083018561455c565b614bf0608083018461483c565b9695505050505050565b6000602082019050614c0f600083018461484b565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614c8082614dda565b9150614c8b83614dda565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614cc057614cbf614e9e565b5b828201905092915050565b6000614cd682614dda565b9150614ce183614dda565b925082614cf157614cf0614ecd565b5b828204905092915050565b6000614d0782614dda565b9150614d1283614dda565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d4b57614d4a614e9e565b5b828202905092915050565b6000614d6182614dda565b9150614d6c83614dda565b925082821015614d7f57614d7e614e9e565b5b828203905092915050565b6000614d9582614dba565b9050919050565b60008115159050919050565b6000614db382614d8a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614dfc82614e15565b9050919050565b6000614e0e82614dda565b9050919050565b6000614e2082614e27565b9050919050565b6000614e3282614dba565b9050919050565b60005b83811015614e57578082015181840152602081019050614e3c565b83811115614e66576000848401525b50505050565b60006002820490506001821680614e8457607f821691505b60208210811415614e9857614e97614efc565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f54726164696e6720697320506175736564210000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b7f45524332303a66726f6d207a65726f0000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782057616c6c657400000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d61782054780000000000000000000000000000000000000000000000000000600082015250565b7f45524332303a746f207a65726f00000000000000000000000000000000000000600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b61528181614d8a565b811461528c57600080fd5b50565b61529881614d9c565b81146152a357600080fd5b50565b6152af81614da8565b81146152ba57600080fd5b50565b6152c681614dda565b81146152d157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209db670a70a51317acfb3e660f979519f31fdeb224c6d61cef97deac1910f40c464736f6c63430008070033

Deployed Bytecode Sourcemap

4408:15156:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7804:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4828:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8974:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17800:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5947:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8081:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2911:231;;;;;;;;;;;;;:::i;:::-;;9925:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4741:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9492:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7990:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5907:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17592:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8471:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17996:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5105:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16563:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6062:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5048:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18750:809;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18242:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5826:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16902:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8189:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18128:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4618:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5660:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5744:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5216:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2586:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2811:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7895:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4700:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8697:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9750:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17389:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17137:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18532:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18351:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5995:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5157:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16213:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5588:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8320:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15995:178;;;;;;;;;;;;;:::i;:::-;;16457:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16353:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3150:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5865:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16676:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17260:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7804:83;7841:13;7874:5;7867:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7804:83;:::o;4828:80::-;4866:42;4828:80;:::o;8974:161::-;9049:4;9066:39;9075:12;:10;:12::i;:::-;9089:7;9098:6;9066:8;:39::i;:::-;9123:4;9116:11;;8974:161;;;;:::o;17800:188::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17914:7:::1;17889:32;;:15;:21;17905:4;17889:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;17881:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;17973:7;17949:15;:21;17965:4;17949:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;17800:188:::0;;:::o;5947:41::-;;;;;;;;;;;;;:::o;8081:100::-;8134:7;8161:12;;8154:19;;8081:100;:::o;2911:231::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3019:42:::1;2982:81;;3003:6;::::0;::::1;;;;;;;;2982:81;;;;;;;;;;;;3091:42;3074:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;2911:231::o:0;9925:313::-;10023:4;10040:36;10050:6;10058:9;10069:6;10040:9;:36::i;:::-;;10087:121;10096:6;10104:12;:10;:12::i;:::-;10118:89;10156:6;10118:89;;;;;;;;;;;;;;;;;:11;:19;10130:6;10118:19;;;;;;;;;;;;;;;:33;10138:12;:10;:12::i;:::-;10118:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10087:8;:121::i;:::-;10226:4;10219:11;;9925:313;;;;;:::o;4741:80::-;4779:42;4741:80;:::o;9492:156::-;9545:7;9572:68;9617:22;4866:42;9617:9;:22::i;:::-;9572:40;9589:22;4779:42;9589:9;:22::i;:::-;9572:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;9565:75;;9492:156;:::o;7990:83::-;8031:5;8056:9;;;;;;;;;;;8049:16;;7990:83;:::o;5907:31::-;;;;;;;;;;;;;:::o;17592:200::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17714:7:::1;17685:36;;:19;:25;17705:4;17685:25;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;17677:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17777:7;17749:19;:25;17769:4;17749:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;17592:200:::0;;:::o;8471:218::-;8559:4;8576:83;8585:12;:10;:12::i;:::-;8599:7;8608:50;8647:10;8608:11;:25;8620:12;:10;:12::i;:::-;8608:25;;;;;;;;;;;;;;;:34;8634:7;8608:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8576:8;:83::i;:::-;8677:4;8670:11;;8471:218;;;;:::o;17996:124::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18104:8:::1;18078:23;:34;;;;17996:124:::0;:::o;5105:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;16563:105::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16653:7:::1;16634:16;;:26;;;;;;;;;;;;;;;;;;16563:105:::0;:::o;6062:40::-;;;;;;;;;;;;;:::o;5048:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;18750:809::-;18832:22;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18869:35:::1;18926:16;18869:74;;18992:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18974:53;;;19036:4;19043:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18974:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18957:110;;19109:1;19083:28;;:14;:28;;;19080:225;;;19197:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19179:74;;;19262:4;19269:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19179:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19162:131;;19080:225;19331:14;19317:11;;:28;;;;;;;;;;;;;;;;;;19397:16;19379:15;;:34;;;;;;;;;;;;;;;;;;19488:4;19451:12;:34;19472:11;;;;;;;;;;;19451:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;19547:4;19503:19;:41;19531:11;;;;;;;;;;;19503:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;18856:703;18750:809:::0;;;:::o;18242:101::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18327:8:::1;18312:12;:23;;;;18242:101:::0;:::o;5826:32::-;;;;;;;;;;;;;:::o;16902:227::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17011:6:::1;16991:17;:26;;;;17048:10;17028:17;:30;;;;17081:40;17103:17;;17081;;:21;;:40;;;;:::i;:::-;17069:9;:52;;;;16902:227:::0;;:::o;8189:123::-;8255:7;8281:9;:18;8291:7;8281:18;;;;;;;;;;;;;;;;8274:25;;8189:123;;;:::o;18128:106::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18218:8:::1;18205:10;:21;;;;18128:106:::0;:::o;4618:75::-;;;;;;;;;;;;;:::o;5660:68::-;;;;:::o;5744:65::-;;;;:::o;5216:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2586:79::-;2624:7;2651:6;;;;;;;;;;;2644:13;;2586:79;:::o;2811:92::-;2851:4;2889:6;;;;;;;;;;;2875:20;;:10;:20;;;2868:27;;2811:92;:::o;7895:87::-;7934:13;7967:7;7960:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7895:87;:::o;4700:32::-;;;;;;;;;;;;;:::o;8697:269::-;8790:4;8807:129;8816:12;:10;:12::i;:::-;8830:7;8839:96;8878:15;8839:96;;;;;;;;;;;;;;;;;:11;:25;8851:12;:10;:12::i;:::-;8839:25;;;;;;;;;;;;;;;:34;8865:7;8839:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8807:8;:129::i;:::-;8954:4;8947:11;;8697:269;;;;:::o;9750:167::-;9828:4;9845:42;9855:12;:10;:12::i;:::-;9869:9;9880:6;9845:9;:42::i;:::-;;9905:4;9898:11;;9750:167;;;;:::o;17389:195::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17508:7:::1;17481:34;;:17;:23;17499:4;17481:23;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;17473:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;17569:7;17543:17;:23;17561:4;17543:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17389:195:::0;;:::o;17137:115::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17234:10:::1;17216:15;;:28;;;;;;;;;;;;;;;;;;17137:115:::0;:::o;18532:210::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18636:7:::1;18614:12;:19;18627:5;18614:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18657:7;18654:81;;;18719:4;18681:19;:35;18709:5;18681:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18654:81;18532:210:::0;;:::o;18351:173::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18454:8:::1;18430:21;;:32;;;;;;;;;;;;;;;;;;18478:38;18507:8;18478:38;;;;;;:::i;:::-;;;;;;;;18351:173:::0;:::o;5995:26::-;;;;;;;;;;;;;:::o;5157:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16213:132::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16307:3:::1;:12;;;16320:9;16330:6;16307:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16213:132:::0;;;:::o;5588:63::-;;;;:::o;8320:143::-;8401:7;8428:11;:18;8440:5;8428:18;;;;;;;;;;;;;;;:27;8447:7;8428:27;;;;;;;;;;;;;;;;8421:34;;8320:143;;;;:::o;15995:178::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16050:7:::1;16070:10;16062:24;;16094:21;16062:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16049:71;;;16139:2;16131:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;16037:136;15995:178::o:0;16457:98::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16540:7:::1;16524:13;;:23;;;;;;;;;;;;;;;;;;16457:98:::0;:::o;16353:96::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16434:7:::1;16420:11;;:21;;;;;;;;;;;;;;;;;;16353:96:::0;:::o;3150:244::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3259:1:::1;3239:22;;:8;:22;;;;3231:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3349:8;3320:38;;3341:6;::::0;::::1;;;;;;;;3320:38;;;;;;;;;;;;3378:8;3369:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3150:244:::0;:::o;5865:35::-;;;;;;;;;;;;;:::o;16676:218::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16780:6:::1;16761:16;:25;;;;16816:10;16797:16;:29;;;;16848:38;16869:16;;16848;;:20;;:38;;;;:::i;:::-;16837:8;:49;;;;16676:218:::0;;:::o;17260:117::-;2730:12;:10;:12::i;:::-;2720:22;;:6;;;;;;;;;;:22;;;2712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17359:10:::1;17339:17;;:30;;;;;;;;;;;;;;;;;;17260:117:::0;:::o;1579:250::-;1637:7;1666:1;1661;:6;1657:47;;;1691:1;1684:8;;;;1657:47;1716:9;1732:1;1728;:5;;;;:::i;:::-;1716:17;;1761:1;1756;1752;:5;;;;:::i;:::-;:10;1744:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1820:1;1813:8;;;1579:250;;;;;:::o;1837:132::-;1895:7;1922:39;1926:1;1929;1922:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1915:46;;1837:132;;;;:::o;1046:181::-;1104:7;1124:9;1140:1;1136;:5;;;;:::i;:::-;1124:17;;1165:1;1160;:6;;1152:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1218:1;1211:8;;;1046:181;;;;:::o;97:115::-;150:15;193:10;178:26;;97:115;:::o;9143:337::-;9253:1;9236:19;;:5;:19;;;;9228:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9334:1;9315:21;;:7;:21;;;;9307:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9418:6;9388:11;:18;9400:5;9388:18;;;;;;;;;;;;;;;:27;9407:7;9388:27;;;;;;;;;;;;;;;:36;;;;9456:7;9440:32;;9449:5;9440:32;;;9465:6;9440:32;;;;;;:::i;:::-;;;;;;;;9143:337;;;:::o;10246:1645::-;10333:4;10378:1;10360:20;;:6;:20;;;;10352:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10440:1;10419:23;;:9;:23;;;;10411:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10488:1;10479:6;:10;10471:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;10525:11;;;;;;;;;;;10521:130;;10560:17;:25;10578:6;10560:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;10589:17;:28;10607:9;10589:28;;;;;;;;;;;;;;;;;;;;;;;;;10560:57;10552:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10521:130;10666:16;;;;;;;;;;;10663:1221;;;10716:41;10731:6;10739:9;10750:6;10716:14;:41::i;:::-;10709:48;;;;10663:1221;10815:15;:23;10831:6;10815:23;;;;;;;;;;;;;;;;;;;;;;;;;10814:24;:55;;;;;10843:15;:26;10859:9;10843:26;;;;;;;;;;;;;;;;;;;;;;;;;10842:27;10814:55;:72;;;;;10873:13;;;;;;;;;;;10814:72;10811:152;;;10925:12;;10915:6;:22;;10907:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10811:152;10980:28;11011:24;11029:4;11011:9;:24::i;:::-;10980:55;;11050:28;11105:23;;11081:20;:47;;11050:78;;11161:23;:44;;;;;11189:16;;;;;;;;;;;11188:17;11161:44;:69;;;;;11210:12;:20;11223:6;11210:20;;;;;;;;;;;;;;;;;;;;;;;;;11209:21;11161:69;:94;;;;;11234:21;;;;;;;;;;;11161:94;11157:165;;;11290:16;:14;:16::i;:::-;11157:165;11358:53;11380:6;11358:53;;;;;;;;;;;;;;;;;:9;:17;11368:6;11358:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11338:9;:17;11348:6;11338:17;;;;;;;;;;;;;;;:73;;;;11428:19;11450:31;11464:6;11471:9;11450:13;:31::i;:::-;:77;;11493:34;11501:6;11509:9;11520:6;11493:7;:34::i;:::-;11450:77;;;11484:6;11450:77;11428:99;;11547:16;;;;;;;;;;;:51;;;;;11568:19;:30;11588:9;11568:30;;;;;;;;;;;;;;;;;;;;;;;;;11567:31;11547:51;11544:164;;;11668:10;;11627:37;11652:11;11627:20;11637:9;11627;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;11619:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11544:164;11747:37;11772:11;11747:9;:20;11757:9;11747:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;11724:9;:20;11734:9;11724:20;;;;;;;;;;;;;;;:60;;;;11823:9;11806:40;;11815:6;11806:40;;;11834:11;11806:40;;;;;;:::i;:::-;;;;;;;;11868:4;11861:11;;;;;10246:1645;;;;;;:::o;1379:192::-;1465:7;1498:1;1493;:6;;1501:12;1485:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1525:9;1541:1;1537;:5;;;;:::i;:::-;1525:17;;1562:1;1555:8;;;1379:192;;;;;:::o;1235:136::-;1293:7;1320:43;1324:1;1327;1320:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1313:50;;1235:136;;;;:::o;1977:278::-;2063:7;2095:1;2091;:5;2098:12;2083:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2122:9;2138:1;2134;:5;;;;:::i;:::-;2122:17;;2246:1;2239:8;;;1977:278;;;;;:::o;11899:330::-;11992:4;12029:53;12051:6;12029:53;;;;;;;;;;;;;;;;;:9;:17;12039:6;12029:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;12009:9;:17;12019:6;12009:17;;;;;;;;;;;;;;;:73;;;;12116:32;12141:6;12116:9;:20;12126:9;12116:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12093:9;:20;12103:9;12093:20;;;;;;;;;;;;;;;:55;;;;12181:9;12164:35;;12173:6;12164:35;;;12192:6;12164:35;;;;;;:::i;:::-;;;;;;;;12217:4;12210:11;;11899:330;;;;;:::o;12237:1241::-;6452:4;6433:16;;:23;;;;;;;;;;;;;;;;;;12304::::1;12330:24;12348:4;12330:9;:24::i;:::-;12304:50;;12389:1;12370:15;:20;12367:32;;;12392:7;;;12367:32;12411:23;12437:39;12458:17;;12437:16;;:20;;:39;;;;:::i;:::-;12411:65;;12568:16;12587:23;12600:9;;12587:8;;:12;;:23;;;;:::i;:::-;12568:42;;12639:1;12624:11;:16;12621:28;;;12642:7;;;;;12621:28;12661:19;12683:60;12741:1;12683:53;12724:11;12683:36;12703:15;12683;:19;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;12661:82;;12754:21;12778:32;12798:11;12778:15;:19;;:32;;;;:::i;:::-;12754:56;;12823:22;12848:21;12823:46;;12880:31;12897:13;12880:16;:31::i;:::-;12922:22;12947:41;12973:14;12947:21;:25;;:41;;;;:::i;:::-;12922:66;;13001:19;13023:39;13039:22;13059:1;13039:15;:19;;:22;;;;:::i;:::-;13023:11;:15;;:39;;;;:::i;:::-;13001:61;;13075:26;13104:59;13161:1;13104:52;13144:11;13104:35;13123:15;13104:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;13075:88;;13174:26;13203:38;13222:18;13203:14;:18;;:38;;;;:::i;:::-;13174:67;;13278:1;13257:18;:22;13254:97;;;13295:56;13316:15;;;;;;;;;;;13332:18;13295:20;:56::i;:::-;13254:97;13388:1;13367:18;:22;:41;;;;;13407:1;13393:11;:15;13367:41;13364:104;;;13423:45;13436:11;13449:18;13423:12;:45::i;:::-;13364:104;12283:1195;;;;;;;;;;6467:1;6498:5:::0;6479:16;;:24;;;;;;;;;;;;;;;;;;12237:1241::o;14830:366::-;14911:4;14931:17;:25;14949:6;14931:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;14960:17;:28;14978:9;14960:28;;;;;;;;;;;;;;;;;;;;;;;;;14931:57;14928:261;;;15012:4;15005:11;;;;14928:261;15047:12;:20;15060:6;15047:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;15071:12;:23;15084:9;15071:23;;;;;;;;;;;;;;;;;;;;;;;;;15047:47;15043:146;;;15118:5;15111:12;;;;15043:146;15172:5;15165:12;;14830:366;;;;;:::o;15204:750::-;15290:7;15320:14;15385:12;:20;15398:6;15385:20;;;;;;;;;;;;;;;;;;;;;;;;;15382:293;;;15440:37;5507:4;15440:20;15451:8;;15440:6;:10;;:20;;;;:::i;:::-;:24;;:37;;;;:::i;:::-;15428:49;;15382:293;;;15529:12;:23;15542:9;15529:23;;;;;;;;;;;;;;;;;;;;;;;;;15526:149;;;15603:38;5507:4;15603:21;15614:9;;15603:6;:10;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;15591:50;;15526:149;15382:293;15711:1;15699:9;:13;15696:185;;;15760:39;15789:9;15760;:24;15778:4;15760:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15733:9;:24;15751:4;15733:24;;;;;;;;;;;;;;;:66;;;;15848:4;15823:42;;15832:6;15823:42;;;15855:9;15823:42;;;;;;:::i;:::-;;;;;;;;15696:185;15904:21;15915:9;15904:6;:10;;:21;;;;:::i;:::-;15897:28;;;15204:750;;;;;:::o;13625:666::-;13751:21;13789:1;13775:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13751:40;;13820:4;13802;13807:1;13802:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13846:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13836:4;13841:1;13836:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;13881:62;13898:4;13913:15;;;;;;;;;;;13931:11;13881:8;:62::i;:::-;13982:15;;;;;;;;;;;:66;;;14063:11;14089:1;14133:4;14160;14196:15;13982:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14248:35;14265:11;14278:4;14248:35;;;;;;;:::i;:::-;;;;;;;;13680:611;13625:666;:::o;13486:127::-;13578:9;13570:27;;:35;13598:6;13570:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13486:127;;:::o;14299:523::-;14447:62;14464:4;14479:15;;;;;;;;;;;14497:11;14447:8;:62::i;:::-;14552:15;;;;;;;;;;;:31;;;14591:9;14624:4;14644:11;14670:1;14713;14756:17;;;;;;;;;;;14788:15;14552:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14299:523;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;440:137;;;;:::o;583:165::-;642:5;680:6;667:20;658:29;;696:46;736:5;696:46;:::i;:::-;583:165;;;;:::o;754:139::-;800:5;838:6;825:20;816:29;;854:33;881:5;854:33;:::i;:::-;754:139;;;;:::o;899:143::-;956:5;987:6;981:13;972:22;;1003:33;1030:5;1003:33;:::i;:::-;899:143;;;;:::o;1048:329::-;1107:6;1156:2;1144:9;1135:7;1131:23;1127:32;1124:119;;;1162:79;;:::i;:::-;1124:119;1282:1;1307:53;1352:7;1343:6;1332:9;1328:22;1307:53;:::i;:::-;1297:63;;1253:117;1048:329;;;;:::o;1383:351::-;1453:6;1502:2;1490:9;1481:7;1477:23;1473:32;1470:119;;;1508:79;;:::i;:::-;1470:119;1628:1;1653:64;1709:7;1700:6;1689:9;1685:22;1653:64;:::i;:::-;1643:74;;1599:128;1383:351;;;;:::o;1740:474::-;1808:6;1816;1865:2;1853:9;1844:7;1840:23;1836:32;1833:119;;;1871:79;;:::i;:::-;1833:119;1991:1;2016:53;2061:7;2052:6;2041:9;2037:22;2016:53;:::i;:::-;2006:63;;1962:117;2118:2;2144:53;2189:7;2180:6;2169:9;2165:22;2144:53;:::i;:::-;2134:63;;2089:118;1740:474;;;;;:::o;2220:619::-;2297:6;2305;2313;2362:2;2350:9;2341:7;2337:23;2333:32;2330:119;;;2368:79;;:::i;:::-;2330:119;2488:1;2513:53;2558:7;2549:6;2538:9;2534:22;2513:53;:::i;:::-;2503:63;;2459:117;2615:2;2641:53;2686:7;2677:6;2666:9;2662:22;2641:53;:::i;:::-;2631:63;;2586:118;2743:2;2769:53;2814:7;2805:6;2794:9;2790:22;2769:53;:::i;:::-;2759:63;;2714:118;2220:619;;;;;:::o;2845:468::-;2910:6;2918;2967:2;2955:9;2946:7;2942:23;2938:32;2935:119;;;2973:79;;:::i;:::-;2935:119;3093:1;3118:53;3163:7;3154:6;3143:9;3139:22;3118:53;:::i;:::-;3108:63;;3064:117;3220:2;3246:50;3288:7;3279:6;3268:9;3264:22;3246:50;:::i;:::-;3236:60;;3191:115;2845:468;;;;;:::o;3319:474::-;3387:6;3395;3444:2;3432:9;3423:7;3419:23;3415:32;3412:119;;;3450:79;;:::i;:::-;3412:119;3570:1;3595:53;3640:7;3631:6;3620:9;3616:22;3595:53;:::i;:::-;3585:63;;3541:117;3697:2;3723:53;3768:7;3759:6;3748:9;3744:22;3723:53;:::i;:::-;3713:63;;3668:118;3319:474;;;;;:::o;3799:323::-;3855:6;3904:2;3892:9;3883:7;3879:23;3875:32;3872:119;;;3910:79;;:::i;:::-;3872:119;4030:1;4055:50;4097:7;4088:6;4077:9;4073:22;4055:50;:::i;:::-;4045:60;;4001:114;3799:323;;;;:::o;4128:345::-;4195:6;4244:2;4232:9;4223:7;4219:23;4215:32;4212:119;;;4250:79;;:::i;:::-;4212:119;4370:1;4395:61;4448:7;4439:6;4428:9;4424:22;4395:61;:::i;:::-;4385:71;;4341:125;4128:345;;;;:::o;4479:645::-;4569:6;4577;4585;4634:2;4622:9;4613:7;4609:23;4605:32;4602:119;;;4640:79;;:::i;:::-;4602:119;4760:1;4785:66;4843:7;4834:6;4823:9;4819:22;4785:66;:::i;:::-;4775:76;;4731:130;4900:2;4926:53;4971:7;4962:6;4951:9;4947:22;4926:53;:::i;:::-;4916:63;;4871:118;5028:2;5054:53;5099:7;5090:6;5079:9;5075:22;5054:53;:::i;:::-;5044:63;;4999:118;4479:645;;;;;:::o;5130:329::-;5189:6;5238:2;5226:9;5217:7;5213:23;5209:32;5206:119;;;5244:79;;:::i;:::-;5206:119;5364:1;5389:53;5434:7;5425:6;5414:9;5410:22;5389:53;:::i;:::-;5379:63;;5335:117;5130:329;;;;:::o;5465:474::-;5533:6;5541;5590:2;5578:9;5569:7;5565:23;5561:32;5558:119;;;5596:79;;:::i;:::-;5558:119;5716:1;5741:53;5786:7;5777:6;5766:9;5762:22;5741:53;:::i;:::-;5731:63;;5687:117;5843:2;5869:53;5914:7;5905:6;5894:9;5890:22;5869:53;:::i;:::-;5859:63;;5814:118;5465:474;;;;;:::o;5945:663::-;6033:6;6041;6049;6098:2;6086:9;6077:7;6073:23;6069:32;6066:119;;;6104:79;;:::i;:::-;6066:119;6224:1;6249:64;6305:7;6296:6;6285:9;6281:22;6249:64;:::i;:::-;6239:74;;6195:128;6362:2;6388:64;6444:7;6435:6;6424:9;6420:22;6388:64;:::i;:::-;6378:74;;6333:129;6501:2;6527:64;6583:7;6574:6;6563:9;6559:22;6527:64;:::i;:::-;6517:74;;6472:129;5945:663;;;;;:::o;6614:179::-;6683:10;6704:46;6746:3;6738:6;6704:46;:::i;:::-;6782:4;6777:3;6773:14;6759:28;;6614:179;;;;:::o;6799:108::-;6876:24;6894:5;6876:24;:::i;:::-;6871:3;6864:37;6799:108;;:::o;6913:118::-;7000:24;7018:5;7000:24;:::i;:::-;6995:3;6988:37;6913:118;;:::o;7067:732::-;7186:3;7215:54;7263:5;7215:54;:::i;:::-;7285:86;7364:6;7359:3;7285:86;:::i;:::-;7278:93;;7395:56;7445:5;7395:56;:::i;:::-;7474:7;7505:1;7490:284;7515:6;7512:1;7509:13;7490:284;;;7591:6;7585:13;7618:63;7677:3;7662:13;7618:63;:::i;:::-;7611:70;;7704:60;7757:6;7704:60;:::i;:::-;7694:70;;7550:224;7537:1;7534;7530:9;7525:14;;7490:284;;;7494:14;7790:3;7783:10;;7191:608;;;7067:732;;;;:::o;7805:109::-;7886:21;7901:5;7886:21;:::i;:::-;7881:3;7874:34;7805:109;;:::o;7920:183::-;8033:63;8090:5;8033:63;:::i;:::-;8028:3;8021:76;7920:183;;:::o;8109:147::-;8204:45;8243:5;8204:45;:::i;:::-;8199:3;8192:58;8109:147;;:::o;8262:364::-;8350:3;8378:39;8411:5;8378:39;:::i;:::-;8433:71;8497:6;8492:3;8433:71;:::i;:::-;8426:78;;8513:52;8558:6;8553:3;8546:4;8539:5;8535:16;8513:52;:::i;:::-;8590:29;8612:6;8590:29;:::i;:::-;8585:3;8581:39;8574:46;;8354:272;8262:364;;;;:::o;8632:366::-;8774:3;8795:67;8859:2;8854:3;8795:67;:::i;:::-;8788:74;;8871:93;8960:3;8871:93;:::i;:::-;8989:2;8984:3;8980:12;8973:19;;8632:366;;;:::o;9004:::-;9146:3;9167:67;9231:2;9226:3;9167:67;:::i;:::-;9160:74;;9243:93;9332:3;9243:93;:::i;:::-;9361:2;9356:3;9352:12;9345:19;;9004:366;;;:::o;9376:::-;9518:3;9539:67;9603:2;9598:3;9539:67;:::i;:::-;9532:74;;9615:93;9704:3;9615:93;:::i;:::-;9733:2;9728:3;9724:12;9717:19;;9376:366;;;:::o;9748:::-;9890:3;9911:67;9975:2;9970:3;9911:67;:::i;:::-;9904:74;;9987:93;10076:3;9987:93;:::i;:::-;10105:2;10100:3;10096:12;10089:19;;9748:366;;;:::o;10120:::-;10262:3;10283:67;10347:2;10342:3;10283:67;:::i;:::-;10276:74;;10359:93;10448:3;10359:93;:::i;:::-;10477:2;10472:3;10468:12;10461:19;;10120:366;;;:::o;10492:::-;10634:3;10655:67;10719:2;10714:3;10655:67;:::i;:::-;10648:74;;10731:93;10820:3;10731:93;:::i;:::-;10849:2;10844:3;10840:12;10833:19;;10492:366;;;:::o;10864:::-;11006:3;11027:67;11091:2;11086:3;11027:67;:::i;:::-;11020:74;;11103:93;11192:3;11103:93;:::i;:::-;11221:2;11216:3;11212:12;11205:19;;10864:366;;;:::o;11236:::-;11378:3;11399:67;11463:2;11458:3;11399:67;:::i;:::-;11392:74;;11475:93;11564:3;11475:93;:::i;:::-;11593:2;11588:3;11584:12;11577:19;;11236:366;;;:::o;11608:::-;11750:3;11771:67;11835:2;11830:3;11771:67;:::i;:::-;11764:74;;11847:93;11936:3;11847:93;:::i;:::-;11965:2;11960:3;11956:12;11949:19;;11608:366;;;:::o;11980:::-;12122:3;12143:67;12207:2;12202:3;12143:67;:::i;:::-;12136:74;;12219:93;12308:3;12219:93;:::i;:::-;12337:2;12332:3;12328:12;12321:19;;11980:366;;;:::o;12352:365::-;12494:3;12515:66;12579:1;12574:3;12515:66;:::i;:::-;12508:73;;12590:93;12679:3;12590:93;:::i;:::-;12708:2;12703:3;12699:12;12692:19;;12352:365;;;:::o;12723:366::-;12865:3;12886:67;12950:2;12945:3;12886:67;:::i;:::-;12879:74;;12962:93;13051:3;12962:93;:::i;:::-;13080:2;13075:3;13071:12;13064:19;;12723:366;;;:::o;13095:398::-;13254:3;13275:83;13356:1;13351:3;13275:83;:::i;:::-;13268:90;;13367:93;13456:3;13367:93;:::i;:::-;13485:1;13480:3;13476:11;13469:18;;13095:398;;;:::o;13499:366::-;13641:3;13662:67;13726:2;13721:3;13662:67;:::i;:::-;13655:74;;13738:93;13827:3;13738:93;:::i;:::-;13856:2;13851:3;13847:12;13840:19;;13499:366;;;:::o;13871:::-;14013:3;14034:67;14098:2;14093:3;14034:67;:::i;:::-;14027:74;;14110:93;14199:3;14110:93;:::i;:::-;14228:2;14223:3;14219:12;14212:19;;13871:366;;;:::o;14243:118::-;14330:24;14348:5;14330:24;:::i;:::-;14325:3;14318:37;14243:118;;:::o;14367:112::-;14450:22;14466:5;14450:22;:::i;:::-;14445:3;14438:35;14367:112;;:::o;14485:379::-;14669:3;14691:147;14834:3;14691:147;:::i;:::-;14684:154;;14855:3;14848:10;;14485:379;;;:::o;14870:222::-;14963:4;15001:2;14990:9;14986:18;14978:26;;15014:71;15082:1;15071:9;15067:17;15058:6;15014:71;:::i;:::-;14870:222;;;;:::o;15098:332::-;15219:4;15257:2;15246:9;15242:18;15234:26;;15270:71;15338:1;15327:9;15323:17;15314:6;15270:71;:::i;:::-;15351:72;15419:2;15408:9;15404:18;15395:6;15351:72;:::i;:::-;15098:332;;;;;:::o;15436:::-;15557:4;15595:2;15584:9;15580:18;15572:26;;15608:71;15676:1;15665:9;15661:17;15652:6;15608:71;:::i;:::-;15689:72;15757:2;15746:9;15742:18;15733:6;15689:72;:::i;:::-;15436:332;;;;;:::o;15774:807::-;16023:4;16061:3;16050:9;16046:19;16038:27;;16075:71;16143:1;16132:9;16128:17;16119:6;16075:71;:::i;:::-;16156:72;16224:2;16213:9;16209:18;16200:6;16156:72;:::i;:::-;16238:80;16314:2;16303:9;16299:18;16290:6;16238:80;:::i;:::-;16328;16404:2;16393:9;16389:18;16380:6;16328:80;:::i;:::-;16418:73;16486:3;16475:9;16471:19;16462:6;16418:73;:::i;:::-;16501;16569:3;16558:9;16554:19;16545:6;16501:73;:::i;:::-;15774:807;;;;;;;;;:::o;16587:210::-;16674:4;16712:2;16701:9;16697:18;16689:26;;16725:65;16787:1;16776:9;16772:17;16763:6;16725:65;:::i;:::-;16587:210;;;;:::o;16803:274::-;16922:4;16960:2;16949:9;16945:18;16937:26;;16973:97;17067:1;17056:9;17052:17;17043:6;16973:97;:::i;:::-;16803:274;;;;:::o;17083:313::-;17196:4;17234:2;17223:9;17219:18;17211:26;;17283:9;17277:4;17273:20;17269:1;17258:9;17254:17;17247:47;17311:78;17384:4;17375:6;17311:78;:::i;:::-;17303:86;;17083:313;;;;:::o;17402:419::-;17568:4;17606:2;17595:9;17591:18;17583:26;;17655:9;17649:4;17645:20;17641:1;17630:9;17626:17;17619:47;17683:131;17809:4;17683:131;:::i;:::-;17675:139;;17402:419;;;:::o;17827:::-;17993:4;18031:2;18020:9;18016:18;18008:26;;18080:9;18074:4;18070:20;18066:1;18055:9;18051:17;18044:47;18108:131;18234:4;18108:131;:::i;:::-;18100:139;;17827:419;;;:::o;18252:::-;18418:4;18456:2;18445:9;18441:18;18433:26;;18505:9;18499:4;18495:20;18491:1;18480:9;18476:17;18469:47;18533:131;18659:4;18533:131;:::i;:::-;18525:139;;18252:419;;;:::o;18677:::-;18843:4;18881:2;18870:9;18866:18;18858:26;;18930:9;18924:4;18920:20;18916:1;18905:9;18901:17;18894:47;18958:131;19084:4;18958:131;:::i;:::-;18950:139;;18677:419;;;:::o;19102:::-;19268:4;19306:2;19295:9;19291:18;19283:26;;19355:9;19349:4;19345:20;19341:1;19330:9;19326:17;19319:47;19383:131;19509:4;19383:131;:::i;:::-;19375:139;;19102:419;;;:::o;19527:::-;19693:4;19731:2;19720:9;19716:18;19708:26;;19780:9;19774:4;19770:20;19766:1;19755:9;19751:17;19744:47;19808:131;19934:4;19808:131;:::i;:::-;19800:139;;19527:419;;;:::o;19952:::-;20118:4;20156:2;20145:9;20141:18;20133:26;;20205:9;20199:4;20195:20;20191:1;20180:9;20176:17;20169:47;20233:131;20359:4;20233:131;:::i;:::-;20225:139;;19952:419;;;:::o;20377:::-;20543:4;20581:2;20570:9;20566:18;20558:26;;20630:9;20624:4;20620:20;20616:1;20605:9;20601:17;20594:47;20658:131;20784:4;20658:131;:::i;:::-;20650:139;;20377:419;;;:::o;20802:::-;20968:4;21006:2;20995:9;20991:18;20983:26;;21055:9;21049:4;21045:20;21041:1;21030:9;21026:17;21019:47;21083:131;21209:4;21083:131;:::i;:::-;21075:139;;20802:419;;;:::o;21227:::-;21393:4;21431:2;21420:9;21416:18;21408:26;;21480:9;21474:4;21470:20;21466:1;21455:9;21451:17;21444:47;21508:131;21634:4;21508:131;:::i;:::-;21500:139;;21227:419;;;:::o;21652:::-;21818:4;21856:2;21845:9;21841:18;21833:26;;21905:9;21899:4;21895:20;21891:1;21880:9;21876:17;21869:47;21933:131;22059:4;21933:131;:::i;:::-;21925:139;;21652:419;;;:::o;22077:::-;22243:4;22281:2;22270:9;22266:18;22258:26;;22330:9;22324:4;22320:20;22316:1;22305:9;22301:17;22294:47;22358:131;22484:4;22358:131;:::i;:::-;22350:139;;22077:419;;;:::o;22502:::-;22668:4;22706:2;22695:9;22691:18;22683:26;;22755:9;22749:4;22745:20;22741:1;22730:9;22726:17;22719:47;22783:131;22909:4;22783:131;:::i;:::-;22775:139;;22502:419;;;:::o;22927:::-;23093:4;23131:2;23120:9;23116:18;23108:26;;23180:9;23174:4;23170:20;23166:1;23155:9;23151:17;23144:47;23208:131;23334:4;23208:131;:::i;:::-;23200:139;;22927:419;;;:::o;23352:222::-;23445:4;23483:2;23472:9;23468:18;23460:26;;23496:71;23564:1;23553:9;23549:17;23540:6;23496:71;:::i;:::-;23352:222;;;;:::o;23580:483::-;23751:4;23789:2;23778:9;23774:18;23766:26;;23802:71;23870:1;23859:9;23855:17;23846:6;23802:71;:::i;:::-;23920:9;23914:4;23910:20;23905:2;23894:9;23890:18;23883:48;23948:108;24051:4;24042:6;23948:108;:::i;:::-;23940:116;;23580:483;;;;;:::o;24069:831::-;24332:4;24370:3;24359:9;24355:19;24347:27;;24384:71;24452:1;24441:9;24437:17;24428:6;24384:71;:::i;:::-;24465:80;24541:2;24530:9;24526:18;24517:6;24465:80;:::i;:::-;24592:9;24586:4;24582:20;24577:2;24566:9;24562:18;24555:48;24620:108;24723:4;24714:6;24620:108;:::i;:::-;24612:116;;24738:72;24806:2;24795:9;24791:18;24782:6;24738:72;:::i;:::-;24820:73;24888:3;24877:9;24873:19;24864:6;24820:73;:::i;:::-;24069:831;;;;;;;;:::o;24906:214::-;24995:4;25033:2;25022:9;25018:18;25010:26;;25046:67;25110:1;25099:9;25095:17;25086:6;25046:67;:::i;:::-;24906:214;;;;:::o;25207:132::-;25274:4;25297:3;25289:11;;25327:4;25322:3;25318:14;25310:22;;25207:132;;;:::o;25345:114::-;25412:6;25446:5;25440:12;25430:22;;25345:114;;;:::o;25465:99::-;25517:6;25551:5;25545:12;25535:22;;25465:99;;;:::o;25570:113::-;25640:4;25672;25667:3;25663:14;25655:22;;25570:113;;;:::o;25689:184::-;25788:11;25822:6;25817:3;25810:19;25862:4;25857:3;25853:14;25838:29;;25689:184;;;;:::o;25879:147::-;25980:11;26017:3;26002:18;;25879:147;;;;:::o;26032:169::-;26116:11;26150:6;26145:3;26138:19;26190:4;26185:3;26181:14;26166:29;;26032:169;;;;:::o;26207:305::-;26247:3;26266:20;26284:1;26266:20;:::i;:::-;26261:25;;26300:20;26318:1;26300:20;:::i;:::-;26295:25;;26454:1;26386:66;26382:74;26379:1;26376:81;26373:107;;;26460:18;;:::i;:::-;26373:107;26504:1;26501;26497:9;26490:16;;26207:305;;;;:::o;26518:185::-;26558:1;26575:20;26593:1;26575:20;:::i;:::-;26570:25;;26609:20;26627:1;26609:20;:::i;:::-;26604:25;;26648:1;26638:35;;26653:18;;:::i;:::-;26638:35;26695:1;26692;26688:9;26683:14;;26518:185;;;;:::o;26709:348::-;26749:7;26772:20;26790:1;26772:20;:::i;:::-;26767:25;;26806:20;26824:1;26806:20;:::i;:::-;26801:25;;26994:1;26926:66;26922:74;26919:1;26916:81;26911:1;26904:9;26897:17;26893:105;26890:131;;;27001:18;;:::i;:::-;26890:131;27049:1;27046;27042:9;27031:20;;26709:348;;;;:::o;27063:191::-;27103:4;27123:20;27141:1;27123:20;:::i;:::-;27118:25;;27157:20;27175:1;27157:20;:::i;:::-;27152:25;;27196:1;27193;27190:8;27187:34;;;27201:18;;:::i;:::-;27187:34;27246:1;27243;27239:9;27231:17;;27063:191;;;;:::o;27260:96::-;27297:7;27326:24;27344:5;27326:24;:::i;:::-;27315:35;;27260:96;;;:::o;27362:90::-;27396:7;27439:5;27432:13;27425:21;27414:32;;27362:90;;;:::o;27458:109::-;27508:7;27537:24;27555:5;27537:24;:::i;:::-;27526:35;;27458:109;;;:::o;27573:126::-;27610:7;27650:42;27643:5;27639:54;27628:65;;27573:126;;;:::o;27705:77::-;27742:7;27771:5;27760:16;;27705:77;;;:::o;27788:86::-;27823:7;27863:4;27856:5;27852:16;27841:27;;27788:86;;;:::o;27880:152::-;27956:9;27989:37;28020:5;27989:37;:::i;:::-;27976:50;;27880:152;;;:::o;28038:121::-;28096:9;28129:24;28147:5;28129:24;:::i;:::-;28116:37;;28038:121;;;:::o;28165:126::-;28215:9;28248:37;28279:5;28248:37;:::i;:::-;28235:50;;28165:126;;;:::o;28297:113::-;28347:9;28380:24;28398:5;28380:24;:::i;:::-;28367:37;;28297:113;;;:::o;28416:307::-;28484:1;28494:113;28508:6;28505:1;28502:13;28494:113;;;28593:1;28588:3;28584:11;28578:18;28574:1;28569:3;28565:11;28558:39;28530:2;28527:1;28523:10;28518:15;;28494:113;;;28625:6;28622:1;28619:13;28616:101;;;28705:1;28696:6;28691:3;28687:16;28680:27;28616:101;28465:258;28416:307;;;:::o;28729:320::-;28773:6;28810:1;28804:4;28800:12;28790:22;;28857:1;28851:4;28847:12;28878:18;28868:81;;28934:4;28926:6;28922:17;28912:27;;28868:81;28996:2;28988:6;28985:14;28965:18;28962:38;28959:84;;;29015:18;;:::i;:::-;28959:84;28780:269;28729:320;;;:::o;29055:180::-;29103:77;29100:1;29093:88;29200:4;29197:1;29190:15;29224:4;29221:1;29214:15;29241:180;29289:77;29286:1;29279:88;29386:4;29383:1;29376:15;29410:4;29407:1;29400:15;29427:180;29475:77;29472:1;29465:88;29572:4;29569:1;29562:15;29596:4;29593:1;29586:15;29613:180;29661:77;29658:1;29651:88;29758:4;29755:1;29748:15;29782:4;29779:1;29772:15;29799:180;29847:77;29844:1;29837:88;29944:4;29941:1;29934:15;29968:4;29965:1;29958:15;30108:117;30217:1;30214;30207:12;30231:102;30272:6;30323:2;30319:7;30314:2;30307:5;30303:14;30299:28;30289:38;;30231:102;;;:::o;30339:168::-;30479:20;30475:1;30467:6;30463:14;30456:44;30339:168;:::o;30513:225::-;30653:34;30649:1;30641:6;30637:14;30630:58;30722:8;30717:2;30709:6;30705:15;30698:33;30513:225;:::o;30744:221::-;30884:34;30880:1;30872:6;30868:14;30861:58;30953:4;30948:2;30940:6;30936:15;30929:29;30744:221;:::o;30971:177::-;31111:29;31107:1;31099:6;31095:14;31088:53;30971:177;:::o;31154:164::-;31294:16;31290:1;31282:6;31278:14;31271:40;31154:164;:::o;31324:163::-;31464:15;31460:1;31452:6;31448:14;31441:39;31324:163;:::o;31493:165::-;31633:17;31629:1;31621:6;31617:14;31610:41;31493:165;:::o;31664:220::-;31804:34;31800:1;31792:6;31788:14;31781:58;31873:3;31868:2;31860:6;31856:15;31849:28;31664:220;:::o;31890:160::-;32030:12;32026:1;32018:6;32014:14;32007:36;31890:160;:::o;32056:182::-;32196:34;32192:1;32184:6;32180:14;32173:58;32056:182;:::o;32244:156::-;32384:8;32380:1;32372:6;32368:14;32361:32;32244:156;:::o;32406:163::-;32546:15;32542:1;32534:6;32530:14;32523:39;32406:163;:::o;32575:114::-;;:::o;32695:223::-;32835:34;32831:1;32823:6;32819:14;32812:58;32904:6;32899:2;32891:6;32887:15;32880:31;32695:223;:::o;32924:170::-;33064:22;33060:1;33052:6;33048:14;33041:46;32924:170;:::o;33100:122::-;33173:24;33191:5;33173:24;:::i;:::-;33166:5;33163:35;33153:63;;33212:1;33209;33202:12;33153:63;33100:122;:::o;33228:116::-;33298:21;33313:5;33298:21;:::i;:::-;33291:5;33288:32;33278:60;;33334:1;33331;33324:12;33278:60;33228:116;:::o;33350:148::-;33436:37;33467:5;33436:37;:::i;:::-;33429:5;33426:48;33416:76;;33488:1;33485;33478:12;33416:76;33350:148;:::o;33504:122::-;33577:24;33595:5;33577:24;:::i;:::-;33570:5;33567:35;33557:63;;33616:1;33613;33606:12;33557:63;33504:122;:::o

Swarm Source

ipfs://9db670a70a51317acfb3e660f979519f31fdeb224c6d61cef97deac1910f40c4

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.