ETH Price: $3,384.99 (-2.76%)
Gas: 1 Gwei

Contract

0x2bb2A7EA643C31A34024515D6Dd6295A5F241c1d
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve201041532024-06-16 11:47:5912 days ago1718538479IN
0x2bb2A7EA...A5F241c1d
0 ETH0.000154893.31223398
Approve196777792024-04-17 21:09:2372 days ago1713388163IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0003407313.73719058
Approve184023622023-10-22 0:48:35251 days ago1697935715IN
0x2bb2A7EA...A5F241c1d
0 ETH0.000335667.13758514
Approve174112482023-06-05 2:02:47389 days ago1685930567IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0004920519.8376301
Approve170697812023-04-17 23:35:59438 days ago1681774559IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0007934532.06639051
Approve170696652023-04-17 23:12:23438 days ago1681773143IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0014359230.53331654
Approve170102012023-04-09 10:37:59446 days ago1681036679IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0005178920.87968718
Approve169628712023-04-02 17:25:35453 days ago1680456335IN
0x2bb2A7EA...A5F241c1d
0 ETH0.000453118.26734396
Approve169246792023-03-28 8:33:59458 days ago1679992439IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0011849825.1974253
Clear Stuck Eth163643532023-01-08 20:07:23537 days ago1673208443IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0014518244.54530239
Approve163593482023-01-08 3:20:47537 days ago1673148047IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0007482715.89105256
Transfer163481732023-01-06 13:54:47539 days ago1673013287IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0005709415.68216753
Approve163366942023-01-04 23:24:47541 days ago1672874687IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0009856720.93269947
Approve163308992023-01-04 4:01:35541 days ago1672804895IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0004213916.98880732
Approve163308892023-01-04 3:59:35541 days ago1672804775IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0004503518.15654363
Approve163308662023-01-04 3:54:35541 days ago1672804475IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0008018917.02976539
Approve163308402023-01-04 3:49:23541 days ago1672804163IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0007803716.57265611
Approve163307712023-01-04 3:35:35541 days ago1672803335IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0009665320.52614975
Approve163226672023-01-03 0:27:11543 days ago1672705631IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0004414817.79876592
Approve163226652023-01-03 0:26:47543 days ago1672705607IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0004486518.08815293
Approve163223892023-01-02 23:31:23543 days ago1672702283IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0007029914.9293196
Approve163222662023-01-02 23:06:47543 days ago1672700807IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0012515726.57947045
Approve163201572023-01-02 16:02:35543 days ago1672675355IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0008660418.39199367
Approve163198952023-01-02 15:10:11543 days ago1672672211IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0009470220.11185776
Approve163188832023-01-02 11:46:59543 days ago1672660019IN
0x2bb2A7EA...A5F241c1d
0 ETH0.0006080612.91346475
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
163643532023-01-08 20:07:23537 days ago1673208443
0x2bb2A7EA...A5F241c1d
0.01028209 ETH
160074742022-11-19 23:54:23587 days ago1668902063
0x2bb2A7EA...A5F241c1d
0.00018694 ETH
160074742022-11-19 23:54:23587 days ago1668902063
0x2bb2A7EA...A5F241c1d
0.00037389 ETH
160074742022-11-19 23:54:23587 days ago1668902063
0x2bb2A7EA...A5F241c1d
0.00037389 ETH
160074742022-11-19 23:54:23587 days ago1668902063
0x2bb2A7EA...A5F241c1d
0.01121682 ETH
159132822022-11-06 20:11:23600 days ago1667765483
0x2bb2A7EA...A5F241c1d
0.20537126 ETH
158686162022-10-31 14:23:59606 days ago1667226239
0x2bb2A7EA...A5F241c1d
0.00345118 ETH
158686162022-10-31 14:23:59606 days ago1667226239
0x2bb2A7EA...A5F241c1d
0.00367127 ETH
158686162022-10-31 14:23:59606 days ago1667226239
0x2bb2A7EA...A5F241c1d
0.00734254 ETH
158686162022-10-31 14:23:59606 days ago1667226239
0x2bb2A7EA...A5F241c1d
0.00734254 ETH
158686162022-10-31 14:23:59606 days ago1667226239
0x2bb2A7EA...A5F241c1d
0.01301327 ETH
158616932022-10-30 15:11:47607 days ago1667142707
0x2bb2A7EA...A5F241c1d
0.00343595 ETH
158616932022-10-30 15:11:47607 days ago1667142707
0x2bb2A7EA...A5F241c1d
0.00370594 ETH
158616932022-10-30 15:11:47607 days ago1667142707
0x2bb2A7EA...A5F241c1d
0.00741189 ETH
158616932022-10-30 15:11:47607 days ago1667142707
0x2bb2A7EA...A5F241c1d
0.00741189 ETH
158616932022-10-30 15:11:47607 days ago1667142707
0x2bb2A7EA...A5F241c1d
0.01597184 ETH
158597452022-10-30 8:41:11607 days ago1667119271
0x2bb2A7EA...A5F241c1d
0.00339748 ETH
158597452022-10-30 8:41:11607 days ago1667119271
0x2bb2A7EA...A5F241c1d
0.00369068 ETH
158597452022-10-30 8:41:11607 days ago1667119271
0x2bb2A7EA...A5F241c1d
0.00738136 ETH
158597452022-10-30 8:41:11607 days ago1667119271
0x2bb2A7EA...A5F241c1d
0.00738136 ETH
158597452022-10-30 8:41:11607 days ago1667119271
0x2bb2A7EA...A5F241c1d
0.01734646 ETH
158462042022-10-28 11:17:11609 days ago1666955831
0x2bb2A7EA...A5F241c1d
0.00339826 ETH
158462042022-10-28 11:17:11609 days ago1666955831
0x2bb2A7EA...A5F241c1d
0.00364902 ETH
158462042022-10-28 11:17:11609 days ago1666955831
0x2bb2A7EA...A5F241c1d
0.00729804 ETH
158462042022-10-28 11:17:11609 days ago1666955831
0x2bb2A7EA...A5F241c1d
0.00729804 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HAVOCV2

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-20
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.13;

/**CRY 'HAVOC!', AND LET SLIP THE DOGS OF WAR!
   No fancy test pictures here, just straight up legit info in order to join the Havoc Movement and Anarchy Ecosystem
   OFFICIAL TELEGRAM: https://t.me/HAVOCERC_PORTAL
   OFFICIAL WEBSITE: www.havocv2.com
   OFFICIAL TWITTER: https://twitter.com/havoc_erc
   OFFICIAL MEDIUM: https://medium.com/@havocerc
*/

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

abstract contract Auth {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!Owner"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

interface DogsOfWar {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
    function cryHavoc(address shareholder) external;
    function changeReflection(address newReflection, string calldata newTicker) external;
}


contract LifeOnTheStreet is DogsOfWar {

    address _token;
    address public CHEWY;
    string public reflectionTicker;

    IDEXRouter router;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 0 * (10 ** 9);

    uint256 public currentIndex;
    bool initialized;

    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor () {
        _token = msg.sender;
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        CHEWY = 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984;
	reflectionTicker = "UNI";
    }
    
    receive() external payable {
        deposit();
    }

    function changeReflection(address newReflection, string calldata newTicker) external override onlyToken {
        CHEWY = newReflection;
	reflectionTicker = newTicker;
    }   

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    } 

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares - (shares[shareholder].amount) + amount;
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() public payable override {

        uint256 balanceBefore = IERC20(CHEWY).balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(CHEWY);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = IERC20(CHEWY).balanceOf(address(this)) - balanceBefore;
        totalDividends = totalDividends + amount;
        dividendsPerShare = dividendsPerShare + (dividendsPerShareAccuracyFactor * amount / totalShares);
    }
    
    function process(uint256 gas) external override {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) public view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed + amount;
            IERC20(CHEWY).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised + amount;
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function cryHavoc(address shareholder) external override onlyToken {
        distributeDividend(shareholder);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends - shareholderTotalExcluded;
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share * dividendsPerShare / dividendsPerShareAccuracyFactor;
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }

}

contract HAVOCV2 is IERC20, Auth {

    address private WETH;
    address public CHEWY = 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984;
    string public reflectionTicker = "UNI";

    string private constant _name = "HAVOCV2";
    string private constant _symbol = "$HAVOCV2";
    uint8 private constant _decimals = 18;
    
    uint256 _totalSupply = 100 * 10**6 * (10 ** _decimals);
    uint256 public maxTx = 1 * 10**6 * (10 ** _decimals);
    uint256 public maxWallet = 2 * 10**6 * (10 ** _decimals);

    uint256 public swapThreshold = 1 * 10**5 * (10 ** _decimals);

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

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    bool public antiBot = true;

    mapping (address => bool) private bots; 
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;
    mapping (address => bool) public isWltExempt;

    uint256 public launchedAt;
    address private lpWallet = DEAD;

/**
 * PRE-LAUNCH taxes to tax snipers from deployment and LP pairing.
 */
    uint256 public buyFee = 10;
    uint256 public sellFee = 10;

    uint256 public toReflections = 20;
    uint256 public toLiquidity = 20;
    uint256 public toMarketing = 20;

    IDEXRouter public router;
    address public pair;
    address public factory;
    address private tokenOwner;
    address public campaignWallet = payable(0xBaC6A3636eC33FE1b3d380965386f190Bc957Ce4);
    address private whoLetTheDogsOut = payable(0x7Efa686efd1d689E7C6EEe6043569D9f5f5C570F);

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    
    LifeOnTheStreet public lifeOnTheStreet;

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor (
        address _owner        
    ) Auth(_owner) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            
        WETH = router.WETH();
        
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        lifeOnTheStreet = new LifeOnTheStreet();
        
        isFeeExempt[_owner] = true;
        isFeeExempt[campaignWallet] = true;
        isFeeExempt[whoLetTheDogsOut] = true;             

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[whoLetTheDogsOut] = true;
        isDividendExempt[campaignWallet] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;
        isTxLimitExempt[campaignWallet] = true;
        isTxLimitExempt[whoLetTheDogsOut] = true;    

	    isWltExempt[_owner] = true;
    	isWltExempt[DEAD] = true;
    	isWltExempt[ZERO] = true;
    	isWltExempt[campaignWallet] = true;
    	isWltExempt[whoLetTheDogsOut] = true;

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

    receive() external payable { }


    function setBots(address[] memory bots_) external onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function changeReflection(address newReflection, string calldata newTicker) external onlyOwner {
        lifeOnTheStreet.changeReflection(newReflection, newTicker);
        CHEWY = newReflection;
        reflectionTicker = newTicker;
    }

    //once enabled, cannot be reversed
    function openTrading() external onlyOwner {
        launchedAt = block.number;
        tradingOpen = true;
    }      

    function changeTotalFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {

        buyFee = newBuyFee;
        sellFee = newSellFee;

        require(buyFee <= 10, "too high");
        require(sellFee <= 10, "too high");
    } 
    
    function changeFeeAllocation(uint256 newRewardFee, uint256 newLpFee, uint256 newMarketingFee) external onlyOwner {
        toReflections = newRewardFee;
        toLiquidity = newLpFee;
        toMarketing = newMarketingFee;
    }

    function changeTxLimit(uint256 newLimit) external onlyOwner {
        maxTx = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        maxWallet  = newLimit;
    }
    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }
    
    function changeIsWltExempt(address holder, bool exempt) external onlyOwner {
        isWltExempt[holder] = exempt;
    }

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

    function setCampaignWallet(address payable newCampaignWallet) external onlyOwner {
        campaignWallet = payable(newCampaignWallet);
    }

    function setLpWallet(address newLpWallet) external onlyOwner {
        lpWallet = newLpWallet;
    }    

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }     

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external onlyOwner {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner {
        lifeOnTheStreet.setDistributionCriteria(newMinPeriod, newMinDistribution);        
    }

    function delBot(address notbot) external onlyOwner {
        bots[notbot] = false;
    }

    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            lifeOnTheStreet.setShare(holder, 0);
        }else{
            lifeOnTheStreet.setShare(holder, _balances[holder]);
        }
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        _setIsDividendExempt(holder, exempt);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (sender!= owner && recipient!= owner) require(tradingOpen, "Trading not active");
        require(!bots[sender] && !bots[recipient]);

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

        require(amount <= maxTx || isTxLimitExempt[sender], "tx");

        if(!isTxLimitExempt[recipient] && antiBot)
        {
            require(_balances[recipient] + amount <= maxWallet || isWltExempt[sender], "wallet");
        }



        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        _balances[sender] = _balances[sender] - amount;
        
        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient] + finalAmount;

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try lifeOnTheStreet.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try lifeOnTheStreet.setShare(recipient, _balances[recipient]) {} catch {} 
        }

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }  
    
    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? sellFee : buyFee;
        uint256 feeAmount = amount * feeApplicable / 100;

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

        return amount - feeAmount;
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        approve(address(this), tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpWallet,
            block.timestamp
        );
    }

    function swapBack() internal lockTheSwap {
    
        uint256 tokenBalance = _balances[address(this)]; 
        uint256 tokensForLiquidity = tokenBalance * toLiquidity / 60 / 2;     
        uint256 amountToSwap = tokenBalance - tokensForLiquidity;

        swapTokensForEth(amountToSwap);

        uint256 totalEthBalance = address(this).balance;
        uint256 ethForCHEWY = totalEthBalance * toReflections / 60;
        uint256 ethForCampaignWallet = totalEthBalance * toMarketing / 60;
        uint256 ethForLiquidity = totalEthBalance * toLiquidity / 60 / 2;
      
        if (totalEthBalance > 0){
            payable(campaignWallet).transfer(ethForCampaignWallet);
        }
        
        try lifeOnTheStreet.deposit{value: ethForCHEWY}() {} catch {}
        
        if (tokensForLiquidity > 0){
            addLiquidity(tokensForLiquidity, ethForLiquidity);
        }
    }

    function manualSwapBack() external onlyOwner {
        swapBack();
    }

    function clearStuckEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0){          
            payable(campaignWallet).transfer(contractETHBalance);
        }
    }

    function manualProcessGas(uint256 manualGas) external onlyOwner {
        lifeOnTheStreet.process(manualGas);
    }

    function checkPendingReflections(address shareholder) external view returns (uint256) {
        return lifeOnTheStreet.getUnpaidEarnings(shareholder);
    }

    function milkbone() external {
        lifeOnTheStreet.cryHavoc(msg.sender);
    }
}
/**Covah's story:

   Covah was a simple, loyal pet in a happy home. Cared for and loved by
   his retiree owner, fed well and free to roam. Life was good... until 
   it wasn't.

   His owner was a hardworking, good-hearted human who believed in the 
   order and safety offered by centralization, believed that the wolves 
   that run the system had the people's best interest at heart. He 
   invested in company stocks, saved years' worth of income set aside in 
   a 401k for his golden years. When he retired, he was certain he had 
   enough to live out his remaining years in peace and relative ease.

   ... wrong.


   The shady criminals on Wall Street saw how easy it was to buy 
   influence from politicians, so they hatched a devious scheme to steal 
   common peoples money out of the stock market. Through multiple 
   "strategies", they corrupted and perverted the concept of a fair 
   market. They geared everything towards taking as much money from the 
   poors as possible, destroying companies by synthetically shorting the 
   prices into oblivion all while gleefully stealing the money of honest, 
   gullible, people like Covah's owner.

   Covah's owner watched his investments die, and any hopes of a 
   peaceful, happy retirement die with them. He slowly stopped smiling. 
   Stopped smiling. Every day became a struggle just to feed himself, 
   though he never let Covah go hungry.


   Covah saw the change in his owner-friend and grew sad.. seeing that 
   Covah never went unfed, but his spirit was crushed.


   One day while looking through Reddit, Covah found the truth. He read 
   countless examples of how the vile bastards in control were stealing 
   everyone's money and blowing it on yachts, cocaine, hookers, private 
   jets, and trips to the Caymans. He was LIVID.

   It was on. It was time to break these crooks and their thieving 
   system. Flipping the script, he went from being a passive, happy-go-
   lucky pooch to match his new outlook and name: Havoc. He vowed to burn 
   it all down. He helped his master move what little funds he had left 
   to somewhere the bastards couldn't mess with, into the cryptoverse.

   Havoc had to navigate the huge amount of complete scum that permeated 
   the decentralized blockchain, the scammers, thieves, rug-artists, and 
   dishonest devs had already begun to plague the space as well. Covah 
   believes the biggest movers are probably from Wall Street or 
   governments who are trying to cause as much loss for believers as 
   possible so they can enforce centralized control on the blockchain.

   Havoc made his token with one goal in mind: BREAK THE SYSTEM

   "Cry Havoc, and let slip the dogs of war!"

   Because make no mistake, this is a war. A war for the right to control 
   our own finances and future. To not have the greedy, self-serving, 
   evil pricks take everything from us. Expose the lies. Expose the 
   enemies.
*/

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","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":"CHEWY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"campaignWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newLpFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"changeFeeAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsWltExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newReflection","type":"address"},{"internalType":"string","name":"newTicker","type":"string"}],"name":"changeReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"changeTotalFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"checkPendingReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"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":"isWltExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lifeOnTheStreet","outputs":[{"internalType":"contract LifeOnTheStreet","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcessGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"milkbone","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionTicker","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newCampaignWallet","type":"address"}],"name":"setCampaignWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLpWallet","type":"address"}],"name":"setLpWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052731f9840a85d5af5bf1d1762f925bdaddc4201f984600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600381526020017f554e49000000000000000000000000000000000000000000000000000000000081525060039080519060200190620000a69291906200112c565b506012600a620000b7919062001384565b6305f5e100620000c89190620013d5565b6004556012600a620000db919062001384565b620f4240620000eb9190620013d5565b6005556012600a620000fe919062001384565b621e84806200010e9190620013d5565b6006556012600a62000121919062001384565b620186a0620001319190620013d5565b60075561dead600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60146101000a81548160ff021916908315150217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a601455600a60155560146016556014601755601460185573bac6a3636ec33fe1b3d380965386f190bc957ce4601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737efa686efd1d689e7c6eee6043569d9f5f5c570f601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601e60156101000a81548160ff0219169083151502179055506000601e60166101000a81548160ff0219169083151502179055503480156200033d57600080fd5b5060405162007fad38038062007fad8339818101604052810190620003639190620014a0565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000468573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048e9190620014a0565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200053c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005629190620014a0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620005c0929190620014e3565b6020604051808303816000875af1158015620005e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006069190620014a0565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506040516200071790620011bd565b604051809103906000f08015801562000734573d6000803e3d6000fd5b50601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200111d919062001521565b60405180910390a350620015a2565b8280546200113a906200156d565b90600052602060002090601f0160209004810192826200115e5760008555620011aa565b82601f106200117957805160ff1916838001178555620011aa565b82800160010185558215620011aa579182015b82811115620011a95782518255916020019190600101906200118c565b5b509050620011b99190620011cb565b5090565b6121988062005e1583390190565b5b80821115620011e6576000816000905550600101620011cc565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620012785780860481111562001250576200124f620011ea565b5b6001851615620012605780820291505b8081029050620012708562001219565b945062001230565b94509492505050565b60008262001293576001905062001366565b81620012a3576000905062001366565b8160018114620012bc5760028114620012c757620012fd565b600191505062001366565b60ff841115620012dc57620012db620011ea565b5b8360020a915084821115620012f657620012f5620011ea565b5b5062001366565b5060208310610133831016604e8410600b8410161715620013375782820a905083811115620013315762001330620011ea565b5b62001366565b62001346848484600162001226565b9250905081840481111562001360576200135f620011ea565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062001391826200136d565b91506200139e8362001377565b9250620013cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001281565b905092915050565b6000620013e2826200136d565b9150620013ef836200136d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200142b576200142a620011ea565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001468826200143b565b9050919050565b6200147a816200145b565b81146200148657600080fd5b50565b6000815190506200149a816200146f565b92915050565b600060208284031215620014b957620014b862001436565b5b6000620014c98482850162001489565b91505092915050565b620014dd816200145b565b82525050565b6000604082019050620014fa6000830185620014d2565b620015096020830184620014d2565b9392505050565b6200151b816200136d565b82525050565b600060208201905062001538600083018462001510565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200158657607f821691505b6020821081036200159c576200159b6200153e565b5b50919050565b61486380620015b26000396000f3fe6080604052600436106103905760003560e01c80637db1342c116101dc578063c45a015511610102578063e2c6fb92116100a0578063f8b45b051161006f578063f8b45b0514610d41578063fabe628314610d6c578063fd5edb6f14610d95578063ffb54a9914610dbe57610397565b8063e2c6fb9214610c87578063f2fde38b14610cc4578063f708a64f14610ced578063f887ea4014610d1657610397565b8063caa5581b116100dc578063caa5581b14610bcd578063d920334e14610bf8578063dd62ed3e14610c21578063e01da9d114610c5e57610397565b8063c45a015514610b60578063c8d1293d14610b8b578063c9567bf914610bb657610397565b806395d89b411161017a578063b515566a11610149578063b515566a14610ab8578063bb542ef014610ae1578063bf56b37114610b0a578063c30fcd6514610b3557610397565b806395d89b41146109fc578063a3a2e89e14610a27578063a8aa1b3114610a50578063a9059cbb14610a7b57610397565b8063838aaeab116101b6578063838aaeab1461095257806389291a8f1461097d578063893d20e8146109945780638b42507f146109bf57610397565b80637db1342c146108d55780637dfcbe34146108fe578063819340311461092957610397565b806330ca34ee116102c15780634a74bb021161025f5780637150f5291161022e5780637150f529146108175780637437681e1461084257806375df13051461086d57806377359aa71461089857610397565b80634a74bb021461075b578063571ac8b01461078657806366eb3785146107c357806370a08231146107da57610397565b80633f4218e01161029b5780633f4218e01461068d5780634355855a146106ca578063468c7ee214610707578063470624021461073057610397565b806330ca34ee14610610578063313ce567146106395780633dab52691461066457610397565b806323b872dd1161032e5780632b14ca56116103085780632b14ca56146105565780632d48e896146105815780632dbea2e1146105aa5780632f54bf6e146105d357610397565b806323b872dd146104c5578063273123b7146105025780632b112e491461052b57610397565b8063095ea7b31161036a578063095ea7b31461041b5780630b3beab4146104585780630d3b571a1461048357806318160ddd1461049a57610397565b80630445b6671461039c57806306fdde03146103c757806308934d9f146103f257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610de9565b6040516103be9190613821565b60405180910390f35b3480156103d357600080fd5b506103dc610def565b6040516103e991906138d5565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906139ce565b610e2c565b005b34801561042757600080fd5b50610442600480360381019061043d9190613a5a565b610f5d565b60405161044f9190613ab5565b60405180910390f35b34801561046457600080fd5b5061046d61104f565b60405161047a9190613b2f565b60405180910390f35b34801561048f57600080fd5b50610498611075565b005b3480156104a657600080fd5b506104af611104565b6040516104bc9190613821565b60405180910390f35b3480156104d157600080fd5b506104ec60048036038101906104e79190613b4a565b61110e565b6040516104f99190613ab5565b60405180910390f35b34801561050e57600080fd5b5061052960048036038101906105249190613b9d565b6112d0565b005b34801561053757600080fd5b50610540611373565b60405161054d9190613821565b60405180910390f35b34801561056257600080fd5b5061056b6113e7565b6040516105789190613821565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a39190613bca565b6113ed565b005b3480156105b657600080fd5b506105d160048036038101906105cc9190613c0a565b6114c8565b005b3480156105df57600080fd5b506105fa60048036038101906105f59190613b9d565b61152a565b6040516106079190613ab5565b60405180910390f35b34801561061c57600080fd5b5061063760048036038101906106329190613bca565b611583565b005b34801561064557600080fd5b5061064e611669565b60405161065b9190613c79565b60405180910390f35b34801561067057600080fd5b5061068b60048036038101906106869190613cc0565b611672565b005b34801561069957600080fd5b506106b460048036038101906106af9190613b9d565b6116df565b6040516106c19190613ab5565b60405180910390f35b3480156106d657600080fd5b506106f160048036038101906106ec9190613b9d565b6116ff565b6040516106fe9190613ab5565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190613b9d565b61171f565b005b34801561073c57600080fd5b506107456117ab565b6040516107529190613821565b60405180910390f35b34801561076757600080fd5b506107706117b1565b60405161077d9190613ab5565b60405180910390f35b34801561079257600080fd5b506107ad60048036038101906107a89190613b9d565b6117c4565b6040516107ba9190613ab5565b60405180910390f35b3480156107cf57600080fd5b506107d86117f7565b005b3480156107e657600080fd5b5061080160048036038101906107fc9190613b9d565b611849565b60405161080e9190613821565b60405180910390f35b34801561082357600080fd5b5061082c611892565b6040516108399190613d0f565b60405180910390f35b34801561084e57600080fd5b506108576118b8565b6040516108649190613821565b60405180910390f35b34801561087957600080fd5b506108826118be565b60405161088f9190613821565b60405180910390f35b3480156108a457600080fd5b506108bf60048036038101906108ba9190613b9d565b6118c4565b6040516108cc9190613821565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f79190613d2a565b611969565b005b34801561090a57600080fd5b506109136119bb565b6040516109209190613ab5565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b9190613d2a565b6119ce565b005b34801561095e57600080fd5b50610967611aa6565b6040516109749190613d0f565b60405180910390f35b34801561098957600080fd5b50610992611acc565b005b3480156109a057600080fd5b506109a9611b8f565b6040516109b69190613d0f565b60405180910390f35b3480156109cb57600080fd5b506109e660048036038101906109e19190613b9d565b611bb8565b6040516109f39190613ab5565b60405180910390f35b348015610a0857600080fd5b50610a11611bd8565b604051610a1e91906138d5565b60405180910390f35b348015610a3357600080fd5b50610a4e6004803603810190610a499190613d57565b611c15565b005b348015610a5c57600080fd5b50610a65611cb8565b604051610a729190613d0f565b60405180910390f35b348015610a8757600080fd5b50610aa26004803603810190610a9d9190613a5a565b611cde565b604051610aaf9190613ab5565b60405180910390f35b348015610ac457600080fd5b50610adf6004803603810190610ada9190613ed5565b611cf3565b005b348015610aed57600080fd5b50610b086004803603810190610b039190613f5c565b611dd0565b005b348015610b1657600080fd5b50610b1f611e5c565b604051610b2c9190613821565b60405180910390f35b348015610b4157600080fd5b50610b4a611e62565b604051610b5791906138d5565b60405180910390f35b348015610b6c57600080fd5b50610b75611ef0565b604051610b829190613d0f565b60405180910390f35b348015610b9757600080fd5b50610ba0611f16565b604051610bad9190613821565b60405180910390f35b348015610bc257600080fd5b50610bcb611f1c565b005b348015610bd957600080fd5b50610be2611f88565b604051610bef9190613821565b60405180910390f35b348015610c0457600080fd5b50610c1f6004803603810190610c1a9190613d2a565b611f8e565b005b348015610c2d57600080fd5b50610c486004803603810190610c439190613f89565b611fe0565b604051610c559190613821565b60405180910390f35b348015610c6a57600080fd5b50610c856004803603810190610c809190613f5c565b612067565b005b348015610c9357600080fd5b50610cae6004803603810190610ca99190613b9d565b6120f3565b604051610cbb9190613ab5565b60405180910390f35b348015610cd057600080fd5b50610ceb6004803603810190610ce69190613f5c565b612113565b005b348015610cf957600080fd5b50610d146004803603810190610d0f9190613d57565b6121d5565b005b348015610d2257600080fd5b50610d2b61222b565b604051610d389190613ffc565b60405180910390f35b348015610d4d57600080fd5b50610d56612251565b604051610d639190613821565b60405180910390f35b348015610d7857600080fd5b50610d936004803603810190610d8e9190613d57565b612257565b005b348015610da157600080fd5b50610dbc6004803603810190610db79190613d57565b6122fa565b005b348015610dca57600080fd5b50610dd361239d565b604051610de09190613ab5565b60405180910390f35b60075481565b60606040518060400160405280600781526020017f4841564f43563200000000000000000000000000000000000000000000000000815250905090565b610e353361152a565b610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b90614063565b60405180910390fd5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166308934d9f8484846040518463ffffffff1660e01b8152600401610ed3939291906140bf565b600060405180830381600087803b158015610eed57600080fd5b505af1158015610f01573d6000803e3d6000fd5b5050505082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818160039190610f57929190613765565b50505050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161103d9190613821565b60405180910390a36001905092915050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d7dbc06336040518263ffffffff1660e01b81526004016110d09190613d0f565b600060405180830381600087803b1580156110ea57600080fd5b505af11580156110fe573d6000803e3d6000fd5b50505050565b6000600454905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112bc5781600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461123b9190614120565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112c78484846123b0565b90509392505050565b6112d93361152a565b611318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130f90614063565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006113a0600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611849565b6113cb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611849565b6004546113d89190614120565b6113e29190614120565b905090565b60155481565b6113f63361152a565b611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142c90614063565b60405180910390fd5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611492929190614154565b600060405180830381600087803b1580156114ac57600080fd5b505af11580156114c0573d6000803e3d6000fd5b505050505050565b6114d13361152a565b611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790614063565b60405180910390fd5b826016819055508160178190555080601881905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61158c3361152a565b6115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290614063565b60405180910390fd5b8160148190555080601581905550600a601454111561161f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611616906141c9565b60405180910390fd5b600a6015541115611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c906141c9565b60405180910390fd5b5050565b60006012905090565b61167b3361152a565b6116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190614063565b60405180910390fd5b81601e60156101000a81548160ff021916908315150217905550806007819055505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b6117283361152a565b611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e90614063565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b601e60159054906101000a900460ff1681565b60006117f0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f5d565b9050919050565b6118003361152a565b61183f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183690614063565b60405180910390fd5b611847612cca565b565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60185481565b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b81526004016119219190613d0f565b602060405180830381865afa15801561193e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196291906141fe565b9050919050565b6119723361152a565b6119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a890614063565b60405180910390fd5b8060068190555050565b600c60149054906101000a900460ff1681565b6119d73361152a565b611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90614063565b60405180910390fd5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611a719190613821565b600060405180830381600087803b158015611a8b57600080fd5b505af1158015611a9f573d6000803e3d6000fd5b5050505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ad53361152a565b611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0b90614063565b60405180910390fd5b60004790506000811115611b8c57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b8a573d6000803e3d6000fd5b505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600881526020017f244841564f435632000000000000000000000000000000000000000000000000815250905090565b611c1e3361152a565b611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5490614063565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611ceb3384846123b0565b905092915050565b611cfc3361152a565b611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3290614063565b60405180910390fd5b60005b8151811015611dcc576001600d6000848481518110611d6057611d5f61422b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611dc49061425a565b915050611d3e565b5050565b611dd93361152a565b611e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0f90614063565b60405180910390fd5b80601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60038054611e6f906142d1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e9b906142d1565b8015611ee85780601f10611ebd57610100808354040283529160200191611ee8565b820191906000526020600020905b815481529060010190602001808311611ecb57829003601f168201915b505050505081565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b611f253361152a565b611f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5b90614063565b60405180910390fd5b436012819055506001601e60166101000a81548160ff021916908315150217905550565b60165481565b611f973361152a565b611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd90614063565b60405180910390fd5b8060058190555050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120703361152a565b6120af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a690614063565b60405180910390fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60116020528060005260406000206000915054906101000a900460ff1681565b61211c3361152a565b61215b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215290614063565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121ca9190614323565b60405180910390a150565b6121de3361152a565b61221d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221490614063565b60405180910390fd5b6122278282612eff565b5050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b6122603361152a565b61229f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229690614063565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6123033361152a565b612342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233990614063565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60169054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561245b575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124b057601e60169054906101000a900460ff166124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a69061438a565b60405180910390fd5b5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125545750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61255d57600080fd5b601e60149054906101000a900460ff16156125845761257d848484613157565b9050612cc3565b600554821115806125de5750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61261d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612614906143f6565b60405180910390fd5b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126835750600c60149054906101000a900460ff165b1561276c5760065482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d69190614416565b11158061272c5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61276b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612762906144b8565b60405180910390fd5b5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156127d75750601e60149054906101000a900460ff16155b80156127ef5750601e60159054906101000a900460ff165b801561283c5750600754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561284a57612849612cca565b5b81600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128959190614120565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561297e5750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6129885782612994565b6129938585856132e5565b5b905080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129e19190614416565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b3e57601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612b119291906144d8565b600060405180830381600087803b158015612b2b57600080fd5b505af1925050508015612b3c575060015b505b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c5857601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612c2b9291906144d8565b600060405180830381600087803b158015612c4557600080fd5b505af1925050508015612c56575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb59190613821565b60405180910390a360019150505b9392505050565b6001601e60146101000a81548160ff0219169083151502179055506000600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006002603c60175484612d3d9190614501565b612d47919061458a565b612d51919061458a565b905060008183612d619190614120565b9050612d6c81613471565b60004790506000603c60165483612d839190614501565b612d8d919061458a565b90506000603c60185484612da19190614501565b612dab919061458a565b905060006002603c60175486612dc19190614501565b612dcb919061458a565b612dd5919061458a565b90506000841115612e4a57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612e48573d6000803e3d6000fd5b505b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015612eb457600080fd5b505af193505050508015612ec6575060015b506000861115612edb57612eda8682613692565b5b505050505050506000601e60146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f895750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612f9257600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561308457601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161304d9291906145f6565b600060405180830381600087803b15801561306757600080fd5b505af115801561307b573d6000803e3d6000fd5b50505050613153565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016131209291906144d8565b600060405180830381600087803b15801561313a57600080fd5b505af115801561314e573d6000803e3d6000fd5b505050505b5050565b600081600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131a49190614120565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132329190614416565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132d29190613821565b60405180910390a3600190509392505050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461334557601454613349565b6015545b905060006064828561335b9190614501565b613365919061458a565b905080600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b29190614416565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134529190613821565b60405180910390a380846134669190614120565b925050509392505050565b6000600267ffffffffffffffff81111561348e5761348d613d97565b5b6040519080825280602002602001820160405280156134bc5781602001602082028036833780820191505090505b50905030816000815181106134d4576134d361422b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561357b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359f9190614634565b816001815181106135b3576135b261422b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135f73083610f5d565b50601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161365c95949392919061471f565b600060405180830381600087803b15801561367657600080fd5b505af115801561368a573d6000803e3d6000fd5b505050505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161371b96959493929190614779565b60606040518083038185885af1158015613739573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061375e91906147da565b5050505050565b828054613771906142d1565b90600052602060002090601f01602090048101928261379357600085556137da565b82601f106137ac57803560ff19168380011785556137da565b828001600101855582156137da579182015b828111156137d95782358255916020019190600101906137be565b5b5090506137e791906137eb565b5090565b5b808211156138045760008160009055506001016137ec565b5090565b6000819050919050565b61381b81613808565b82525050565b60006020820190506138366000830184613812565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561387657808201518184015260208101905061385b565b83811115613885576000848401525b50505050565b6000601f19601f8301169050919050565b60006138a78261383c565b6138b18185613847565b93506138c1818560208601613858565b6138ca8161388b565b840191505092915050565b600060208201905081810360008301526138ef818461389c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139368261390b565b9050919050565b6139468161392b565b811461395157600080fd5b50565b6000813590506139638161393d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261398e5761398d613969565b5b8235905067ffffffffffffffff8111156139ab576139aa61396e565b5b6020830191508360018202830111156139c7576139c6613973565b5b9250929050565b6000806000604084860312156139e7576139e6613901565b5b60006139f586828701613954565b935050602084013567ffffffffffffffff811115613a1657613a15613906565b5b613a2286828701613978565b92509250509250925092565b613a3781613808565b8114613a4257600080fd5b50565b600081359050613a5481613a2e565b92915050565b60008060408385031215613a7157613a70613901565b5b6000613a7f85828601613954565b9250506020613a9085828601613a45565b9150509250929050565b60008115159050919050565b613aaf81613a9a565b82525050565b6000602082019050613aca6000830184613aa6565b92915050565b6000819050919050565b6000613af5613af0613aeb8461390b565b613ad0565b61390b565b9050919050565b6000613b0782613ada565b9050919050565b6000613b1982613afc565b9050919050565b613b2981613b0e565b82525050565b6000602082019050613b446000830184613b20565b92915050565b600080600060608486031215613b6357613b62613901565b5b6000613b7186828701613954565b9350506020613b8286828701613954565b9250506040613b9386828701613a45565b9150509250925092565b600060208284031215613bb357613bb2613901565b5b6000613bc184828501613954565b91505092915050565b60008060408385031215613be157613be0613901565b5b6000613bef85828601613a45565b9250506020613c0085828601613a45565b9150509250929050565b600080600060608486031215613c2357613c22613901565b5b6000613c3186828701613a45565b9350506020613c4286828701613a45565b9250506040613c5386828701613a45565b9150509250925092565b600060ff82169050919050565b613c7381613c5d565b82525050565b6000602082019050613c8e6000830184613c6a565b92915050565b613c9d81613a9a565b8114613ca857600080fd5b50565b600081359050613cba81613c94565b92915050565b60008060408385031215613cd757613cd6613901565b5b6000613ce585828601613cab565b9250506020613cf685828601613a45565b9150509250929050565b613d098161392b565b82525050565b6000602082019050613d246000830184613d00565b92915050565b600060208284031215613d4057613d3f613901565b5b6000613d4e84828501613a45565b91505092915050565b60008060408385031215613d6e57613d6d613901565b5b6000613d7c85828601613954565b9250506020613d8d85828601613cab565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613dcf8261388b565b810181811067ffffffffffffffff82111715613dee57613ded613d97565b5b80604052505050565b6000613e016138f7565b9050613e0d8282613dc6565b919050565b600067ffffffffffffffff821115613e2d57613e2c613d97565b5b602082029050602081019050919050565b6000613e51613e4c84613e12565b613df7565b90508083825260208201905060208402830185811115613e7457613e73613973565b5b835b81811015613e9d5780613e898882613954565b845260208401935050602081019050613e76565b5050509392505050565b600082601f830112613ebc57613ebb613969565b5b8135613ecc848260208601613e3e565b91505092915050565b600060208284031215613eeb57613eea613901565b5b600082013567ffffffffffffffff811115613f0957613f08613906565b5b613f1584828501613ea7565b91505092915050565b6000613f298261390b565b9050919050565b613f3981613f1e565b8114613f4457600080fd5b50565b600081359050613f5681613f30565b92915050565b600060208284031215613f7257613f71613901565b5b6000613f8084828501613f47565b91505092915050565b60008060408385031215613fa057613f9f613901565b5b6000613fae85828601613954565b9250506020613fbf85828601613954565b9150509250929050565b6000613fd482613ada565b9050919050565b6000613fe682613fc9565b9050919050565b613ff681613fdb565b82525050565b60006020820190506140116000830184613fed565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b600061404d600683613847565b915061405882614017565b602082019050919050565b6000602082019050818103600083015261407c81614040565b9050919050565b82818337600083830152505050565b600061409e8385613847565b93506140ab838584614083565b6140b48361388b565b840190509392505050565b60006040820190506140d46000830186613d00565b81810360208301526140e7818486614092565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061412b82613808565b915061413683613808565b925082821015614149576141486140f1565b5b828203905092915050565b60006040820190506141696000830185613812565b6141766020830184613812565b9392505050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b60006141b3600883613847565b91506141be8261417d565b602082019050919050565b600060208201905081810360008301526141e2816141a6565b9050919050565b6000815190506141f881613a2e565b92915050565b60006020828403121561421457614213613901565b5b6000614222848285016141e9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061426582613808565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614297576142966140f1565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806142e957607f821691505b6020821081036142fc576142fb6142a2565b5b50919050565b600061430d82613fc9565b9050919050565b61431d81614302565b82525050565b60006020820190506143386000830184614314565b92915050565b7f54726164696e67206e6f74206163746976650000000000000000000000000000600082015250565b6000614374601283613847565b915061437f8261433e565b602082019050919050565b600060208201905081810360008301526143a381614367565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006143e0600283613847565b91506143eb826143aa565b602082019050919050565b6000602082019050818103600083015261440f816143d3565b9050919050565b600061442182613808565b915061442c83613808565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614461576144606140f1565b5b828201905092915050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b60006144a2600683613847565b91506144ad8261446c565b602082019050919050565b600060208201905081810360008301526144d181614495565b9050919050565b60006040820190506144ed6000830185613d00565b6144fa6020830184613812565b9392505050565b600061450c82613808565b915061451783613808565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145505761454f6140f1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061459582613808565b91506145a083613808565b9250826145b0576145af61455b565b5b828204905092915050565b6000819050919050565b60006145e06145db6145d6846145bb565b613ad0565b613808565b9050919050565b6145f0816145c5565b82525050565b600060408201905061460b6000830185613d00565b61461860208301846145e7565b9392505050565b60008151905061462e8161393d565b92915050565b60006020828403121561464a57614649613901565b5b60006146588482850161461f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6146968161392b565b82525050565b60006146a8838361468d565b60208301905092915050565b6000602082019050919050565b60006146cc82614661565b6146d6818561466c565b93506146e18361467d565b8060005b838110156147125781516146f9888261469c565b9750614704836146b4565b9250506001810190506146e5565b5085935050505092915050565b600060a0820190506147346000830188613812565b61474160208301876145e7565b818103604083015261475381866146c1565b90506147626060830185613d00565b61476f6080830184613812565b9695505050505050565b600060c08201905061478e6000830189613d00565b61479b6020830188613812565b6147a860408301876145e7565b6147b560608301866145e7565b6147c26080830185613d00565b6147cf60a0830184613812565b979650505050505050565b6000806000606084860312156147f3576147f2613901565b5b6000614801868287016141e9565b9350506020614812868287016141e9565b9250506040614823868287016141e9565b915050925092509256fea2646970667358221220744b428ec9a7b65487a9fbfa2ac62e736010d4993c3940697754e19d561afc0b64736f6c634300080d003360806040526ec097ce7bc90715b34b9f1000000000600c55610708600d556000600e553480156200002f57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731f9840a85d5af5bf1d1762f925bdaddc4201f984600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600381526020017f554e49000000000000000000000000000000000000000000000000000000000081525060029080519060200190620001679291906200016e565b5062000282565b8280546200017c906200024d565b90600052602060002090601f016020900481019282620001a05760008555620001ec565b82601f10620001bb57805160ff1916838001178555620001ec565b82800160010185558215620001ec579182015b82811115620001eb578251825591602001919060010190620001ce565b5b509050620001fb9190620001ff565b5090565b5b808211156200021a57600081600090555060010162000200565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200026657607f821691505b6020821081036200027c576200027b6200021e565b5b50919050565b611f0680620002926000396000f3fe6080604052600436106101185760003560e01c80638c21cd52116100a0578063d0e30db011610064578063d0e30db0146103b6578063e2d2e219146103c0578063efca2eed146103eb578063ffb2c47914610416578063ffd49c841461043f57610127565b80638c21cd52146102bb5780638d7dbc06146102f8578063997664d714610321578063c30fcd651461034c578063ce7c2ac21461037757610127565b806328fd3198116100e757806328fd3198146101d45780632d48e896146102115780633a98ef391461023a5780634fab0ae8146102655780637150f5291461029057610127565b806308934d9f1461012c57806311ce023d1461015557806314b6ca961461018057806326987b60146101a957610127565b366101275761012561046a565b005b600080fd5b34801561013857600080fd5b50610153600480360381019061014e91906116e7565b61082f565b005b34801561016157600080fd5b5061016a6108df565b6040516101779190611760565b60405180910390f35b34801561018c57600080fd5b506101a760048036038101906101a291906117a7565b6108e5565b005b3480156101b557600080fd5b506101be610b96565b6040516101cb9190611760565b60405180910390f35b3480156101e057600080fd5b506101fb60048036038101906101f691906117e7565b610b9c565b6040516102089190611760565b60405180910390f35b34801561021d57600080fd5b5061023860048036038101906102339190611814565b610cae565b005b34801561024657600080fd5b5061024f610d18565b60405161025c9190611760565b60405180910390f35b34801561027157600080fd5b5061027a610d1e565b6040516102879190611760565b60405180910390f35b34801561029c57600080fd5b506102a5610d24565b6040516102b29190611863565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd91906117e7565b610d4a565b6040516102ef9190611899565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a91906117e7565b610db7565b005b34801561032d57600080fd5b50610336610e1b565b6040516103439190611760565b60405180910390f35b34801561035857600080fd5b50610361610e21565b60405161036e919061194d565b60405180910390f35b34801561038357600080fd5b5061039e600480360381019061039991906117e7565b610eaf565b6040516103ad9392919061196f565b60405180910390f35b6103be61046a565b005b3480156103cc57600080fd5b506103d5610ed9565b6040516103e29190611760565b60405180910390f35b3480156103f757600080fd5b50610400610edf565b60405161040d9190611760565b60405180910390f35b34801561042257600080fd5b5061043d600480360381019061043891906119a6565b610ee5565b005b34801561044b57600080fd5b50610454611012565b6040516104619190611760565b60405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104c79190611863565b602060405180830381865afa1580156104e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050891906119e8565b90506000600267ffffffffffffffff81111561052757610526611a15565b5b6040519080825280602002602001820160405280156105555781602001602082028036833780820191505090505b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e99190611a59565b816000815181106105fd576105fc611a86565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061066e5761066d611a86565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040161070b9493929190611bb8565b6000604051808303818588803b15801561072457600080fd5b505af1158015610738573d6000803e3d6000fd5b5050505050600082600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161079b9190611863565b602060405180830381865afa1580156107b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107dc91906119e8565b6107e69190611c33565b9050806009546107f69190611c67565b60098190555060085481600c5461080d9190611cbd565b6108179190611d46565b600b546108249190611c67565b600b81905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088757600080fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600291906108d9929190611577565b50505050565b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093d57600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156109925761099182611018565b5b6000811180156109e457506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156109f7576109f28261129d565b610a59565b600081148015610a4957506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b15610a5857610a578261134c565b5b5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600854610aaa9190611c33565b610ab49190611c67565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610b4c600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611553565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600f5481565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403610bf05760009050610ca9565b6000610c3d600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611553565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610c9857600092505050610ca9565b8082610ca49190611c33565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d0657600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d9a9190611c67565b108015610db05750600e54610dae83610b9c565b115b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0f57600080fd5b610e1881611018565b50565b60095481565b60028054610e2e90611da6565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5a90611da6565b8015610ea75780601f10610e7c57610100808354040283529160200191610ea7565b820191906000526020600020905b815481529060010190602001808311610e8a57829003601f168201915b505050505081565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b600b5481565b600a5481565b6000600480549050905060008103610efd575061100f565b60008060005a90505b8482108015610f1457508383105b1561100a5783600f5410610f2b576000600f819055505b610f746004600f5481548110610f4457610f43611a86565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d4a565b15610fc357610fc26004600f5481548110610f9257610f91611a86565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611018565b5b5a81610fcf9190611c33565b82610fda9190611c67565b91505a9050600f6000815480929190610ff290611dd7565b9190505550828061100290611dd7565b935050610f06565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154031561129a57600061106e82610b9c565b905060008111156112985780600a546110879190611c67565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016110ea929190611e1f565b6020604051808303816000875af1158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611e74565b5042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546111c09190611c67565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611251600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611553565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460016004805490506113609190611c33565b8154811061137157611370611a86565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106113ef576113ee611a86565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560006004600160048054905061148f9190611c33565b815481106114a05761149f611a86565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061151b5761151a611ea1565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000600c54600b54836115669190611cbd565b6115709190611d46565b9050919050565b82805461158390611da6565b90600052602060002090601f0160209004810192826115a557600085556115ec565b82601f106115be57803560ff19168380011785556115ec565b828001600101855582156115ec579182015b828111156115eb5782358255916020019190600101906115d0565b5b5090506115f991906115fd565b5090565b5b808211156116165760008160009055506001016115fe565b5090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061164f82611624565b9050919050565b61165f81611644565b811461166a57600080fd5b50565b60008135905061167c81611656565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126116a7576116a6611682565b5b8235905067ffffffffffffffff8111156116c4576116c3611687565b5b6020830191508360018202830111156116e0576116df61168c565b5b9250929050565b600080600060408486031215611700576116ff61161a565b5b600061170e8682870161166d565b935050602084013567ffffffffffffffff81111561172f5761172e61161f565b5b61173b86828701611691565b92509250509250925092565b6000819050919050565b61175a81611747565b82525050565b60006020820190506117756000830184611751565b92915050565b61178481611747565b811461178f57600080fd5b50565b6000813590506117a18161177b565b92915050565b600080604083850312156117be576117bd61161a565b5b60006117cc8582860161166d565b92505060206117dd85828601611792565b9150509250929050565b6000602082840312156117fd576117fc61161a565b5b600061180b8482850161166d565b91505092915050565b6000806040838503121561182b5761182a61161a565b5b600061183985828601611792565b925050602061184a85828601611792565b9150509250929050565b61185d81611644565b82525050565b60006020820190506118786000830184611854565b92915050565b60008115159050919050565b6118938161187e565b82525050565b60006020820190506118ae600083018461188a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156118ee5780820151818401526020810190506118d3565b838111156118fd576000848401525b50505050565b6000601f19601f8301169050919050565b600061191f826118b4565b61192981856118bf565b93506119398185602086016118d0565b61194281611903565b840191505092915050565b600060208201905081810360008301526119678184611914565b905092915050565b60006060820190506119846000830186611751565b6119916020830185611751565b61199e6040830184611751565b949350505050565b6000602082840312156119bc576119bb61161a565b5b60006119ca84828501611792565b91505092915050565b6000815190506119e28161177b565b92915050565b6000602082840312156119fe576119fd61161a565b5b6000611a0c848285016119d3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050611a5381611656565b92915050565b600060208284031215611a6f57611a6e61161a565b5b6000611a7d84828501611a44565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b6000611ae4611adf611ada84611ab5565b611abf565b611747565b9050919050565b611af481611ac9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611b2f81611644565b82525050565b6000611b418383611b26565b60208301905092915050565b6000602082019050919050565b6000611b6582611afa565b611b6f8185611b05565b9350611b7a83611b16565b8060005b83811015611bab578151611b928882611b35565b9750611b9d83611b4d565b925050600181019050611b7e565b5085935050505092915050565b6000608082019050611bcd6000830187611aeb565b8181036020830152611bdf8186611b5a565b9050611bee6040830185611854565b611bfb6060830184611751565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c3e82611747565b9150611c4983611747565b925082821015611c5c57611c5b611c04565b5b828203905092915050565b6000611c7282611747565b9150611c7d83611747565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611cb257611cb1611c04565b5b828201905092915050565b6000611cc882611747565b9150611cd383611747565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d0c57611d0b611c04565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611d5182611747565b9150611d5c83611747565b925082611d6c57611d6b611d17565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611dbe57607f821691505b602082108103611dd157611dd0611d77565b5b50919050565b6000611de282611747565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e1457611e13611c04565b5b600182019050919050565b6000604082019050611e346000830185611854565b611e416020830184611751565b9392505050565b611e518161187e565b8114611e5c57600080fd5b50565b600081519050611e6e81611e48565b92915050565b600060208284031215611e8a57611e8961161a565b5b6000611e9884828501611e5f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220aca69ce77bdd9153ea4df015cd6dfe8a2b568f8a32d365601c92de6da352d14164736f6c634300080d00330000000000000000000000007efa686efd1d689e7c6eee6043569d9f5f5c570f

Deployed Bytecode

0x6080604052600436106103905760003560e01c80637db1342c116101dc578063c45a015511610102578063e2c6fb92116100a0578063f8b45b051161006f578063f8b45b0514610d41578063fabe628314610d6c578063fd5edb6f14610d95578063ffb54a9914610dbe57610397565b8063e2c6fb9214610c87578063f2fde38b14610cc4578063f708a64f14610ced578063f887ea4014610d1657610397565b8063caa5581b116100dc578063caa5581b14610bcd578063d920334e14610bf8578063dd62ed3e14610c21578063e01da9d114610c5e57610397565b8063c45a015514610b60578063c8d1293d14610b8b578063c9567bf914610bb657610397565b806395d89b411161017a578063b515566a11610149578063b515566a14610ab8578063bb542ef014610ae1578063bf56b37114610b0a578063c30fcd6514610b3557610397565b806395d89b41146109fc578063a3a2e89e14610a27578063a8aa1b3114610a50578063a9059cbb14610a7b57610397565b8063838aaeab116101b6578063838aaeab1461095257806389291a8f1461097d578063893d20e8146109945780638b42507f146109bf57610397565b80637db1342c146108d55780637dfcbe34146108fe578063819340311461092957610397565b806330ca34ee116102c15780634a74bb021161025f5780637150f5291161022e5780637150f529146108175780637437681e1461084257806375df13051461086d57806377359aa71461089857610397565b80634a74bb021461075b578063571ac8b01461078657806366eb3785146107c357806370a08231146107da57610397565b80633f4218e01161029b5780633f4218e01461068d5780634355855a146106ca578063468c7ee214610707578063470624021461073057610397565b806330ca34ee14610610578063313ce567146106395780633dab52691461066457610397565b806323b872dd1161032e5780632b14ca56116103085780632b14ca56146105565780632d48e896146105815780632dbea2e1146105aa5780632f54bf6e146105d357610397565b806323b872dd146104c5578063273123b7146105025780632b112e491461052b57610397565b8063095ea7b31161036a578063095ea7b31461041b5780630b3beab4146104585780630d3b571a1461048357806318160ddd1461049a57610397565b80630445b6671461039c57806306fdde03146103c757806308934d9f146103f257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610de9565b6040516103be9190613821565b60405180910390f35b3480156103d357600080fd5b506103dc610def565b6040516103e991906138d5565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906139ce565b610e2c565b005b34801561042757600080fd5b50610442600480360381019061043d9190613a5a565b610f5d565b60405161044f9190613ab5565b60405180910390f35b34801561046457600080fd5b5061046d61104f565b60405161047a9190613b2f565b60405180910390f35b34801561048f57600080fd5b50610498611075565b005b3480156104a657600080fd5b506104af611104565b6040516104bc9190613821565b60405180910390f35b3480156104d157600080fd5b506104ec60048036038101906104e79190613b4a565b61110e565b6040516104f99190613ab5565b60405180910390f35b34801561050e57600080fd5b5061052960048036038101906105249190613b9d565b6112d0565b005b34801561053757600080fd5b50610540611373565b60405161054d9190613821565b60405180910390f35b34801561056257600080fd5b5061056b6113e7565b6040516105789190613821565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a39190613bca565b6113ed565b005b3480156105b657600080fd5b506105d160048036038101906105cc9190613c0a565b6114c8565b005b3480156105df57600080fd5b506105fa60048036038101906105f59190613b9d565b61152a565b6040516106079190613ab5565b60405180910390f35b34801561061c57600080fd5b5061063760048036038101906106329190613bca565b611583565b005b34801561064557600080fd5b5061064e611669565b60405161065b9190613c79565b60405180910390f35b34801561067057600080fd5b5061068b60048036038101906106869190613cc0565b611672565b005b34801561069957600080fd5b506106b460048036038101906106af9190613b9d565b6116df565b6040516106c19190613ab5565b60405180910390f35b3480156106d657600080fd5b506106f160048036038101906106ec9190613b9d565b6116ff565b6040516106fe9190613ab5565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190613b9d565b61171f565b005b34801561073c57600080fd5b506107456117ab565b6040516107529190613821565b60405180910390f35b34801561076757600080fd5b506107706117b1565b60405161077d9190613ab5565b60405180910390f35b34801561079257600080fd5b506107ad60048036038101906107a89190613b9d565b6117c4565b6040516107ba9190613ab5565b60405180910390f35b3480156107cf57600080fd5b506107d86117f7565b005b3480156107e657600080fd5b5061080160048036038101906107fc9190613b9d565b611849565b60405161080e9190613821565b60405180910390f35b34801561082357600080fd5b5061082c611892565b6040516108399190613d0f565b60405180910390f35b34801561084e57600080fd5b506108576118b8565b6040516108649190613821565b60405180910390f35b34801561087957600080fd5b506108826118be565b60405161088f9190613821565b60405180910390f35b3480156108a457600080fd5b506108bf60048036038101906108ba9190613b9d565b6118c4565b6040516108cc9190613821565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f79190613d2a565b611969565b005b34801561090a57600080fd5b506109136119bb565b6040516109209190613ab5565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b9190613d2a565b6119ce565b005b34801561095e57600080fd5b50610967611aa6565b6040516109749190613d0f565b60405180910390f35b34801561098957600080fd5b50610992611acc565b005b3480156109a057600080fd5b506109a9611b8f565b6040516109b69190613d0f565b60405180910390f35b3480156109cb57600080fd5b506109e660048036038101906109e19190613b9d565b611bb8565b6040516109f39190613ab5565b60405180910390f35b348015610a0857600080fd5b50610a11611bd8565b604051610a1e91906138d5565b60405180910390f35b348015610a3357600080fd5b50610a4e6004803603810190610a499190613d57565b611c15565b005b348015610a5c57600080fd5b50610a65611cb8565b604051610a729190613d0f565b60405180910390f35b348015610a8757600080fd5b50610aa26004803603810190610a9d9190613a5a565b611cde565b604051610aaf9190613ab5565b60405180910390f35b348015610ac457600080fd5b50610adf6004803603810190610ada9190613ed5565b611cf3565b005b348015610aed57600080fd5b50610b086004803603810190610b039190613f5c565b611dd0565b005b348015610b1657600080fd5b50610b1f611e5c565b604051610b2c9190613821565b60405180910390f35b348015610b4157600080fd5b50610b4a611e62565b604051610b5791906138d5565b60405180910390f35b348015610b6c57600080fd5b50610b75611ef0565b604051610b829190613d0f565b60405180910390f35b348015610b9757600080fd5b50610ba0611f16565b604051610bad9190613821565b60405180910390f35b348015610bc257600080fd5b50610bcb611f1c565b005b348015610bd957600080fd5b50610be2611f88565b604051610bef9190613821565b60405180910390f35b348015610c0457600080fd5b50610c1f6004803603810190610c1a9190613d2a565b611f8e565b005b348015610c2d57600080fd5b50610c486004803603810190610c439190613f89565b611fe0565b604051610c559190613821565b60405180910390f35b348015610c6a57600080fd5b50610c856004803603810190610c809190613f5c565b612067565b005b348015610c9357600080fd5b50610cae6004803603810190610ca99190613b9d565b6120f3565b604051610cbb9190613ab5565b60405180910390f35b348015610cd057600080fd5b50610ceb6004803603810190610ce69190613f5c565b612113565b005b348015610cf957600080fd5b50610d146004803603810190610d0f9190613d57565b6121d5565b005b348015610d2257600080fd5b50610d2b61222b565b604051610d389190613ffc565b60405180910390f35b348015610d4d57600080fd5b50610d56612251565b604051610d639190613821565b60405180910390f35b348015610d7857600080fd5b50610d936004803603810190610d8e9190613d57565b612257565b005b348015610da157600080fd5b50610dbc6004803603810190610db79190613d57565b6122fa565b005b348015610dca57600080fd5b50610dd361239d565b604051610de09190613ab5565b60405180910390f35b60075481565b60606040518060400160405280600781526020017f4841564f43563200000000000000000000000000000000000000000000000000815250905090565b610e353361152a565b610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b90614063565b60405180910390fd5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166308934d9f8484846040518463ffffffff1660e01b8152600401610ed3939291906140bf565b600060405180830381600087803b158015610eed57600080fd5b505af1158015610f01573d6000803e3d6000fd5b5050505082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818160039190610f57929190613765565b50505050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161103d9190613821565b60405180910390a36001905092915050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d7dbc06336040518263ffffffff1660e01b81526004016110d09190613d0f565b600060405180830381600087803b1580156110ea57600080fd5b505af11580156110fe573d6000803e3d6000fd5b50505050565b6000600454905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112bc5781600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461123b9190614120565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112c78484846123b0565b90509392505050565b6112d93361152a565b611318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130f90614063565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006113a0600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611849565b6113cb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611849565b6004546113d89190614120565b6113e29190614120565b905090565b60155481565b6113f63361152a565b611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142c90614063565b60405180910390fd5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611492929190614154565b600060405180830381600087803b1580156114ac57600080fd5b505af11580156114c0573d6000803e3d6000fd5b505050505050565b6114d13361152a565b611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790614063565b60405180910390fd5b826016819055508160178190555080601881905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61158c3361152a565b6115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290614063565b60405180910390fd5b8160148190555080601581905550600a601454111561161f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611616906141c9565b60405180910390fd5b600a6015541115611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c906141c9565b60405180910390fd5b5050565b60006012905090565b61167b3361152a565b6116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190614063565b60405180910390fd5b81601e60156101000a81548160ff021916908315150217905550806007819055505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b6117283361152a565b611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e90614063565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b601e60159054906101000a900460ff1681565b60006117f0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f5d565b9050919050565b6118003361152a565b61183f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183690614063565b60405180910390fd5b611847612cca565b565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60185481565b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b81526004016119219190613d0f565b602060405180830381865afa15801561193e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196291906141fe565b9050919050565b6119723361152a565b6119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a890614063565b60405180910390fd5b8060068190555050565b600c60149054906101000a900460ff1681565b6119d73361152a565b611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90614063565b60405180910390fd5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611a719190613821565b600060405180830381600087803b158015611a8b57600080fd5b505af1158015611a9f573d6000803e3d6000fd5b5050505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ad53361152a565b611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0b90614063565b60405180910390fd5b60004790506000811115611b8c57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b8a573d6000803e3d6000fd5b505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600881526020017f244841564f435632000000000000000000000000000000000000000000000000815250905090565b611c1e3361152a565b611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5490614063565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611ceb3384846123b0565b905092915050565b611cfc3361152a565b611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3290614063565b60405180910390fd5b60005b8151811015611dcc576001600d6000848481518110611d6057611d5f61422b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611dc49061425a565b915050611d3e565b5050565b611dd93361152a565b611e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0f90614063565b60405180910390fd5b80601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60038054611e6f906142d1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e9b906142d1565b8015611ee85780601f10611ebd57610100808354040283529160200191611ee8565b820191906000526020600020905b815481529060010190602001808311611ecb57829003601f168201915b505050505081565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b611f253361152a565b611f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5b90614063565b60405180910390fd5b436012819055506001601e60166101000a81548160ff021916908315150217905550565b60165481565b611f973361152a565b611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd90614063565b60405180910390fd5b8060058190555050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120703361152a565b6120af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a690614063565b60405180910390fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60116020528060005260406000206000915054906101000a900460ff1681565b61211c3361152a565b61215b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215290614063565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121ca9190614323565b60405180910390a150565b6121de3361152a565b61221d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221490614063565b60405180910390fd5b6122278282612eff565b5050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b6122603361152a565b61229f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229690614063565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6123033361152a565b612342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233990614063565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60169054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561245b575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124b057601e60169054906101000a900460ff166124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a69061438a565b60405180910390fd5b5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125545750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61255d57600080fd5b601e60149054906101000a900460ff16156125845761257d848484613157565b9050612cc3565b600554821115806125de5750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61261d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612614906143f6565b60405180910390fd5b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126835750600c60149054906101000a900460ff165b1561276c5760065482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d69190614416565b11158061272c5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61276b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612762906144b8565b60405180910390fd5b5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156127d75750601e60149054906101000a900460ff16155b80156127ef5750601e60159054906101000a900460ff165b801561283c5750600754600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561284a57612849612cca565b5b81600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128959190614120565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561297e5750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6129885782612994565b6129938585856132e5565b5b905080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129e19190614416565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b3e57601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612b119291906144d8565b600060405180830381600087803b158015612b2b57600080fd5b505af1925050508015612b3c575060015b505b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c5857601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612c2b9291906144d8565b600060405180830381600087803b158015612c4557600080fd5b505af1925050508015612c56575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb59190613821565b60405180910390a360019150505b9392505050565b6001601e60146101000a81548160ff0219169083151502179055506000600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006002603c60175484612d3d9190614501565b612d47919061458a565b612d51919061458a565b905060008183612d619190614120565b9050612d6c81613471565b60004790506000603c60165483612d839190614501565b612d8d919061458a565b90506000603c60185484612da19190614501565b612dab919061458a565b905060006002603c60175486612dc19190614501565b612dcb919061458a565b612dd5919061458a565b90506000841115612e4a57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612e48573d6000803e3d6000fd5b505b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015612eb457600080fd5b505af193505050508015612ec6575060015b506000861115612edb57612eda8682613692565b5b505050505050506000601e60146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f895750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612f9257600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561308457601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161304d9291906145f6565b600060405180830381600087803b15801561306757600080fd5b505af115801561307b573d6000803e3d6000fd5b50505050613153565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016131209291906144d8565b600060405180830381600087803b15801561313a57600080fd5b505af115801561314e573d6000803e3d6000fd5b505050505b5050565b600081600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131a49190614120565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132329190614416565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132d29190613821565b60405180910390a3600190509392505050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461334557601454613349565b6015545b905060006064828561335b9190614501565b613365919061458a565b905080600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b29190614416565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134529190613821565b60405180910390a380846134669190614120565b925050509392505050565b6000600267ffffffffffffffff81111561348e5761348d613d97565b5b6040519080825280602002602001820160405280156134bc5781602001602082028036833780820191505090505b50905030816000815181106134d4576134d361422b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561357b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359f9190614634565b816001815181106135b3576135b261422b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135f73083610f5d565b50601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161365c95949392919061471f565b600060405180830381600087803b15801561367657600080fd5b505af115801561368a573d6000803e3d6000fd5b505050505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161371b96959493929190614779565b60606040518083038185885af1158015613739573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061375e91906147da565b5050505050565b828054613771906142d1565b90600052602060002090601f01602090048101928261379357600085556137da565b82601f106137ac57803560ff19168380011785556137da565b828001600101855582156137da579182015b828111156137d95782358255916020019190600101906137be565b5b5090506137e791906137eb565b5090565b5b808211156138045760008160009055506001016137ec565b5090565b6000819050919050565b61381b81613808565b82525050565b60006020820190506138366000830184613812565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561387657808201518184015260208101905061385b565b83811115613885576000848401525b50505050565b6000601f19601f8301169050919050565b60006138a78261383c565b6138b18185613847565b93506138c1818560208601613858565b6138ca8161388b565b840191505092915050565b600060208201905081810360008301526138ef818461389c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139368261390b565b9050919050565b6139468161392b565b811461395157600080fd5b50565b6000813590506139638161393d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261398e5761398d613969565b5b8235905067ffffffffffffffff8111156139ab576139aa61396e565b5b6020830191508360018202830111156139c7576139c6613973565b5b9250929050565b6000806000604084860312156139e7576139e6613901565b5b60006139f586828701613954565b935050602084013567ffffffffffffffff811115613a1657613a15613906565b5b613a2286828701613978565b92509250509250925092565b613a3781613808565b8114613a4257600080fd5b50565b600081359050613a5481613a2e565b92915050565b60008060408385031215613a7157613a70613901565b5b6000613a7f85828601613954565b9250506020613a9085828601613a45565b9150509250929050565b60008115159050919050565b613aaf81613a9a565b82525050565b6000602082019050613aca6000830184613aa6565b92915050565b6000819050919050565b6000613af5613af0613aeb8461390b565b613ad0565b61390b565b9050919050565b6000613b0782613ada565b9050919050565b6000613b1982613afc565b9050919050565b613b2981613b0e565b82525050565b6000602082019050613b446000830184613b20565b92915050565b600080600060608486031215613b6357613b62613901565b5b6000613b7186828701613954565b9350506020613b8286828701613954565b9250506040613b9386828701613a45565b9150509250925092565b600060208284031215613bb357613bb2613901565b5b6000613bc184828501613954565b91505092915050565b60008060408385031215613be157613be0613901565b5b6000613bef85828601613a45565b9250506020613c0085828601613a45565b9150509250929050565b600080600060608486031215613c2357613c22613901565b5b6000613c3186828701613a45565b9350506020613c4286828701613a45565b9250506040613c5386828701613a45565b9150509250925092565b600060ff82169050919050565b613c7381613c5d565b82525050565b6000602082019050613c8e6000830184613c6a565b92915050565b613c9d81613a9a565b8114613ca857600080fd5b50565b600081359050613cba81613c94565b92915050565b60008060408385031215613cd757613cd6613901565b5b6000613ce585828601613cab565b9250506020613cf685828601613a45565b9150509250929050565b613d098161392b565b82525050565b6000602082019050613d246000830184613d00565b92915050565b600060208284031215613d4057613d3f613901565b5b6000613d4e84828501613a45565b91505092915050565b60008060408385031215613d6e57613d6d613901565b5b6000613d7c85828601613954565b9250506020613d8d85828601613cab565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613dcf8261388b565b810181811067ffffffffffffffff82111715613dee57613ded613d97565b5b80604052505050565b6000613e016138f7565b9050613e0d8282613dc6565b919050565b600067ffffffffffffffff821115613e2d57613e2c613d97565b5b602082029050602081019050919050565b6000613e51613e4c84613e12565b613df7565b90508083825260208201905060208402830185811115613e7457613e73613973565b5b835b81811015613e9d5780613e898882613954565b845260208401935050602081019050613e76565b5050509392505050565b600082601f830112613ebc57613ebb613969565b5b8135613ecc848260208601613e3e565b91505092915050565b600060208284031215613eeb57613eea613901565b5b600082013567ffffffffffffffff811115613f0957613f08613906565b5b613f1584828501613ea7565b91505092915050565b6000613f298261390b565b9050919050565b613f3981613f1e565b8114613f4457600080fd5b50565b600081359050613f5681613f30565b92915050565b600060208284031215613f7257613f71613901565b5b6000613f8084828501613f47565b91505092915050565b60008060408385031215613fa057613f9f613901565b5b6000613fae85828601613954565b9250506020613fbf85828601613954565b9150509250929050565b6000613fd482613ada565b9050919050565b6000613fe682613fc9565b9050919050565b613ff681613fdb565b82525050565b60006020820190506140116000830184613fed565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b600061404d600683613847565b915061405882614017565b602082019050919050565b6000602082019050818103600083015261407c81614040565b9050919050565b82818337600083830152505050565b600061409e8385613847565b93506140ab838584614083565b6140b48361388b565b840190509392505050565b60006040820190506140d46000830186613d00565b81810360208301526140e7818486614092565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061412b82613808565b915061413683613808565b925082821015614149576141486140f1565b5b828203905092915050565b60006040820190506141696000830185613812565b6141766020830184613812565b9392505050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b60006141b3600883613847565b91506141be8261417d565b602082019050919050565b600060208201905081810360008301526141e2816141a6565b9050919050565b6000815190506141f881613a2e565b92915050565b60006020828403121561421457614213613901565b5b6000614222848285016141e9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061426582613808565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614297576142966140f1565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806142e957607f821691505b6020821081036142fc576142fb6142a2565b5b50919050565b600061430d82613fc9565b9050919050565b61431d81614302565b82525050565b60006020820190506143386000830184614314565b92915050565b7f54726164696e67206e6f74206163746976650000000000000000000000000000600082015250565b6000614374601283613847565b915061437f8261433e565b602082019050919050565b600060208201905081810360008301526143a381614367565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006143e0600283613847565b91506143eb826143aa565b602082019050919050565b6000602082019050818103600083015261440f816143d3565b9050919050565b600061442182613808565b915061442c83613808565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614461576144606140f1565b5b828201905092915050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b60006144a2600683613847565b91506144ad8261446c565b602082019050919050565b600060208201905081810360008301526144d181614495565b9050919050565b60006040820190506144ed6000830185613d00565b6144fa6020830184613812565b9392505050565b600061450c82613808565b915061451783613808565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145505761454f6140f1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061459582613808565b91506145a083613808565b9250826145b0576145af61455b565b5b828204905092915050565b6000819050919050565b60006145e06145db6145d6846145bb565b613ad0565b613808565b9050919050565b6145f0816145c5565b82525050565b600060408201905061460b6000830185613d00565b61461860208301846145e7565b9392505050565b60008151905061462e8161393d565b92915050565b60006020828403121561464a57614649613901565b5b60006146588482850161461f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6146968161392b565b82525050565b60006146a8838361468d565b60208301905092915050565b6000602082019050919050565b60006146cc82614661565b6146d6818561466c565b93506146e18361467d565b8060005b838110156147125781516146f9888261469c565b9750614704836146b4565b9250506001810190506146e5565b5085935050505092915050565b600060a0820190506147346000830188613812565b61474160208301876145e7565b818103604083015261475381866146c1565b90506147626060830185613d00565b61476f6080830184613812565b9695505050505050565b600060c08201905061478e6000830189613d00565b61479b6020830188613812565b6147a860408301876145e7565b6147b560608301866145e7565b6147c26080830185613d00565b6147cf60a0830184613812565b979650505050505050565b6000806000606084860312156147f3576147f2613901565b5b6000614801868287016141e9565b9350506020614812868287016141e9565b9250506040614823868287016141e9565b915050925092509256fea2646970667358221220744b428ec9a7b65487a9fbfa2ac62e736010d4993c3940697754e19d561afc0b64736f6c634300080d0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007efa686efd1d689e7c6eee6043569d9f5f5c570f

-----Decoded View---------------
Arg [0] : _owner (address): 0x7Efa686efd1d689E7C6EEe6043569D9f5f5C570F

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007efa686efd1d689e7c6eee6043569d9f5f5c570f


Deployed Bytecode Sourcemap

9681:12898:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10203:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16786:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13426:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17212:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11637:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22492:84;;;;;;;;;;;;;:::i;:::-;;16516:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17726:337;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15781:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16372:136;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11060:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15571:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14103:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1601:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13846:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16610:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15364:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10662:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10768:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15116:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11027:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11546:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17436:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21873:74;;;;;;;;;;;;;:::i;:::-;;16956:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9750:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10079:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11174:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22326:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14447:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10581:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22201:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11333:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21955:238;;;;;;;;;;;;;:::i;:::-;;16872:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10713:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16696:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14557:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11245:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17566:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13252:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15230:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10877:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9822:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11271:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11136:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13717:115;;;;;;;;;;;;;:::i;:::-;;11096:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14344:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17067:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14965:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10824:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1712:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16232:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11214:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10138:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14821:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14691:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11593:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10203:60;;;;:::o;16786:80::-;16834:13;16858:5;;;;;;;;;;;;;;;;;16851:12;;16786:80;:::o;13426:243::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13532:15:::1;;;;;;;;;;;:32;;;13565:13;13580:9;;13532:58;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13609:13;13601:5;;:21;;;;;;;;;;;;;;;;;;13652:9;;13633:16;:28;;;;;;;:::i;:::-;;13426:243:::0;;;:::o;17212:216::-;17287:4;17339:6;17304:11;:23;17316:10;17304:23;;;;;;;;;;;;;;;:32;17328:7;17304:32;;;;;;;;;;;;;;;:41;;;;17382:7;17361:37;;17370:10;17361:37;;;17391:6;17361:37;;;;;;:::i;:::-;;;;;;;;17416:4;17409:11;;17212:216;;;;:::o;11637:38::-;;;;;;;;;;;;;:::o;22492:84::-;22532:15;;;;;;;;;;;:24;;;22557:10;22532:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22492:84::o;16516:88::-;16571:7;16589:12;;16582:19;;16516:88;:::o;17726:337::-;17826:4;17881:17;17846:11;:19;17858:6;17846:19;;;;;;;;;;;;;;;:31;17866:10;17846:31;;;;;;;;;;;;;;;;:52;17843:157;;17982:6;17948:11;:19;17960:6;17948:19;;;;;;;;;;;;;;;:31;17968:10;17948:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;17914:11;:19;17926:6;17914:19;;;;;;;;;;;;;;;:31;17934:10;17914:31;;;;;;;;;;;;;;;:74;;;;17843:157;18019:36;18029:6;18037:9;18048:6;18019:9;:36::i;:::-;18012:43;;17726:337;;;;;:::o;15781:90::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15858:5:::1;15843:4;:12;15848:6;15843:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15781:90:::0;:::o;16372:136::-;16425:7;16485:15;16495:4;;;;;;;;;;;16485:9;:15::i;:::-;16467;16477:4;;;;;;;;;;;16467:9;:15::i;:::-;16452:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;16445:55;;16372:136;:::o;11060:27::-;;;;:::o;15571:202::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15684:15:::1;;;;;;;;;;;:39;;;15724:12;15738:18;15684:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15571:202:::0;;:::o;14103:233::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14243:12:::1;14227:13;:28;;;;14280:8;14266:11;:22;;;;14313:15;14299:11;:29;;;;14103:233:::0;;;:::o;1601:103::-;1656:4;1691:5;;;;;;;;;;;1680:16;;:7;:16;;;1673:23;;1601:103;;;:::o;13846:244::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13951:9:::1;13942:6;:18;;;;13981:10;13971:7;:20;;;;14022:2;14012:6;;:12;;14004:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;14067:2;14056:7;;:13;;14048:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;13846:244:::0;;:::o;16610:80::-;16662:5;10003:2;16671:16;;16610:80;:::o;15364:199::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15498:14:::1;15473:21;;:39;;;;;;;;;;;;;;;;;;15539:16;15523:13;:32;;;;15364:199:::0;;:::o;10662:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;10768:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;15116:102::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15199:11:::1;15188:8;;:22;;;;;;;;;;;;;;;;;;15116:102:::0;:::o;11027:26::-;;;;:::o;11546:40::-;;;;;;;;;;;;;:::o;17436:122::-;17491:4;17515:35;17523:7;17532:17;17515:7;:35::i;:::-;17508:42;;17436:122;;;:::o;21873:74::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21929:10:::1;:8;:10::i;:::-;21873:74::o:0;16956:105::-;17022:7;17040:9;:18;17050:7;17040:18;;;;;;;;;;;;;;;;17033:25;;16956:105;;;:::o;9750:65::-;;;;;;;;;;;;;:::o;10079:52::-;;;;:::o;11174:31::-;;;;:::o;22326:158::-;22403:7;22430:15;;;;;;;;;;;:33;;;22464:11;22430:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22423:53;;22326:158;;;:::o;14447:104::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14535:8:::1;14522:9;:21;;;;14447:104:::0;:::o;10581:26::-;;;;;;;;;;;;;:::o;22201:117::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22276:15:::1;;;;;;;;;;;:23;;;22300:9;22276:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22201:117:::0;:::o;11333:83::-;;;;;;;;;;;;;:::o;21955:238::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22010:26:::1;22039:21;22010:50;;22095:1;22074:18;:22;22071:115;;;22130:14;;;;;;;;;;;22122:32;;:52;22155:18;22122:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22071:115;21999:194;21955:238::o:0;16872:78::-;16924:7;16942:5;;;;;;;;;;;16935:12;;16872:78;:::o;10713:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;16696:84::-;16746:13;16770:7;;;;;;;;;;;;;;;;;16763:14;;16696:84;:::o;14557:122::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14665:6:::1;14643:11;:19;14655:6;14643:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14557:122:::0;;:::o;11245:19::-;;;;;;;;;;;;;:::o;17566:152::-;17646:4;17670:40;17680:10;17692:9;17703:6;17670:9;:40::i;:::-;17663:47;;17566:152;;;;:::o;13252:166::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13328:6:::1;13323:88;13344:5;:12;13340:1;:16;13323:88;;;13395:4;13378;:14;13383:5;13389:1;13383:8;;;;;;;;:::i;:::-;;;;;;;;13378:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13358:3;;;;;:::i;:::-;;;;13323:88;;;;13252:166:::0;:::o;15230:121::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15329:14:::1;15316:10;;:27;;;;;;;;;;;;;;;;;;15230:121:::0;:::o;10877:25::-;;;;:::o;9822:38::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11271:22::-;;;;;;;;;;;;;:::o;11136:31::-;;;;:::o;13717:115::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13783:12:::1;13770:10;:25;;;;13820:4;13806:11;;:18;;;;;;;;;;;;;;;;;;13717:115::o:0;11096:33::-;;;;:::o;14344:95::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14423:8:::1;14415:5;:16;;;;14344:95:::0;:::o;17067:133::-;17151:7;17169:11;:19;17181:6;17169:19;;;;;;;;;;;;;;;:28;17189:7;17169:28;;;;;;;;;;;;;;;;17162:35;;17067:133;;;;:::o;14965:143::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15082:17:::1;15057:14;;:43;;;;;;;;;;;;;;;;;;14965:143:::0;:::o;10824:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;1712:136::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1796:3:::1;1788:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;1815:25;1836:3;1815:25;;;;;;:::i;:::-;;;;;;;;1712:136:::0;:::o;16232:132::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16320:36:::1;16341:6;16349;16320:20;:36::i;:::-;16232:132:::0;;:::o;11214:24::-;;;;;;;;;;;;;:::o;10138:56::-;;;;:::o;14821:136::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14943:6:::1;14917:15;:23;14933:6;14917:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14821:136:::0;;:::o;14691:122::-;1552:19;1560:10;1552:7;:19::i;:::-;1544:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14799:6:::1;14777:11;:19;14789:6;14777:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14691:122:::0;;:::o;11593:31::-;;;;;;;;;;;;;:::o;18071:1375::-;18159:4;18189:5;;;;;;;;;;;18180:14;;:6;:14;;;;:35;;;;;18210:5;;;;;;;;;;18198:17;;:9;:17;;;;18180:35;18176:83;;;18225:11;;;;;;;;;;;18217:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;18176:83;18279:4;:12;18284:6;18279:12;;;;;;;;;;;;;;;;;;;;;;;;;18278:13;:33;;;;;18296:4;:15;18301:9;18296:15;;;;;;;;;;;;;;;;;;;;;;;;;18295:16;18278:33;18270:42;;;;;;18328:16;;;;;;;;;;;18325:73;;;18354:41;18369:6;18377:9;18388:6;18354:14;:41::i;:::-;18347:48;;;;18325:73;18428:5;;18418:6;:15;;:42;;;;18437:15;:23;18453:6;18437:23;;;;;;;;;;;;;;;;;;;;;;;;;18418:42;18410:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;18484:15;:26;18500:9;18484:26;;;;;;;;;;;;;;;;;;;;;;;;;18483:27;:38;;;;;18514:7;;;;;;;;;;;18483:38;18480:163;;;18588:9;;18578:6;18555:9;:20;18565:9;18555:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:42;;:65;;;;18601:11;:19;18613:6;18601:19;;;;;;;;;;;;;;;;;;;;;;;;;18555:65;18547:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;18480:163;18676:4;;;;;;;;;;;18662:18;;:10;:18;;;;:39;;;;;18685:16;;;;;;;;;;;18684:17;18662:39;:64;;;;;18705:21;;;;;;;;;;;18662:64;:109;;;;;18758:13;;18730:9;:24;18748:4;18730:24;;;;;;;;;;;;;;;;:41;;18662:109;18659:128;;;18774:10;:8;:10::i;:::-;18659:128;18839:6;18819:9;:17;18829:6;18819:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;18799:9;:17;18809:6;18799:17;;;;;;;;;;;;;;;:46;;;;18866:19;18889:11;:19;18901:6;18889:19;;;;;;;;;;;;;;;;;;;;;;;;;18888:20;:47;;;;;18913:11;:22;18925:9;18913:22;;;;;;;;;;;;;;;;;;;;;;;;;18912:23;18888:47;:93;;18975:6;18888:93;;;18938:34;18946:6;18954:9;18965:6;18938:7;:34::i;:::-;18888:93;18866:115;;19038:11;19015:9;:20;19025:9;19015:20;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;18992:9;:20;19002:9;18992:20;;;;;;;;;;;;;;;:57;;;;19095:16;:24;19112:6;19095:24;;;;;;;;;;;;;;;;;;;;;;;;;19091:123;;19140:15;;;;;;;;;;;:24;;;19165:6;19173:9;:17;19183:6;19173:17;;;;;;;;;;;;;;;;19140:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19136:67;19091:123;19230:16;:27;19247:9;19230:27;;;;;;;;;;;;;;;;;;;;;;;;;19226:133;;19278:15;;;;;;;;;;;:24;;;19303:9;19314;:20;19324:9;19314:20;;;;;;;;;;;;;;;;19278:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19274:73;19226:133;19393:9;19376:40;;19385:6;19376:40;;;19404:11;19376:40;;;;;;:::i;:::-;;;;;;;;19434:4;19427:11;;;18071:1375;;;;;;:::o;20954:911::-;11735:4;11716:16;;:23;;;;;;;;;;;;;;;;;;21012:20:::1;21035:9;:24;21053:4;21035:24;;;;;;;;;;;;;;;;21012:47;;21071:26;21134:1;21129:2;21115:11;;21100:12;:26;;;;:::i;:::-;:31;;;;:::i;:::-;:35;;;;:::i;:::-;21071:64;;21151:20;21189:18;21174:12;:33;;;;:::i;:::-;21151:56;;21220:30;21237:12;21220:16;:30::i;:::-;21263:23;21289:21;21263:47;;21321:19;21377:2;21361:13;;21343:15;:31;;;;:::i;:::-;:36;;;;:::i;:::-;21321:58;;21390:28;21453:2;21439:11;;21421:15;:29;;;;:::i;:::-;:34;;;;:::i;:::-;21390:65;;21466:23;21529:1;21524:2;21510:11;;21492:15;:29;;;;:::i;:::-;:34;;;;:::i;:::-;:38;;;;:::i;:::-;21466:64;;21571:1;21553:15;:19;21549:105;;;21596:14;;;;;;;;;;;21588:32;;:54;21621:20;21588:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21549:105;21678:15;;;;;;;;;;;:23;;;21709:11;21678:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21674:61:::0;21780:1:::1;21759:18;:22;21755:103;;;21797:49;21810:18;21830:15;21797:12;:49::i;:::-;21755:103;20995:870;;;;;;;11781:5:::0;11762:16;;:24;;;;;;;;;;;;;;;;;;20954:911::o;15879:345::-;15984:4;15966:23;;:6;:23;;;;:41;;;;;16003:4;;;;;;;;;;;15993:14;;:6;:14;;;;15966:41;15958:50;;;;;;16046:6;16019:16;:24;16036:6;16019:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16066:6;16063:154;;;16088:15;;;;;;;;;;;:24;;;16113:6;16121:1;16088:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16063:154;;;16154:15;;;;;;;;;;;:24;;;16179:6;16187:9;:17;16197:6;16187:17;;;;;;;;;;;;;;;;16154:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16063:154;15879:345;;:::o;19458:300::-;19551:4;19608:6;19588:9;:17;19598:6;19588:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;19568:9;:17;19578:6;19568:17;;;;;;;;;;;;;;;:46;;;;19671:6;19648:9;:20;19658:9;19648:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;19625:9;:20;19635:9;19625:20;;;;;;;;;;;;;;;:52;;;;19710:9;19693:35;;19702:6;19693:35;;;19721:6;19693:35;;;;;;:::i;:::-;;;;;;;;19746:4;19739:11;;19458:300;;;;;:::o;19772:415::-;19858:7;19888:21;19920:9;19912:17;;:4;;;;;;;;;;;:17;;;:36;;19942:6;;19912:36;;;19932:7;;19912:36;19888:60;;19959:17;20004:3;19988:13;19979:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;19959:48;;20074:9;20047;:24;20065:4;20047:24;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;20020:9;:24;20038:4;20020:24;;;;;;;;;;;;;;;:63;;;;20124:4;20099:42;;20108:6;20099:42;;;20131:9;20099:42;;;;;;:::i;:::-;;;;;;;;20170:9;20161:6;:18;;;;:::i;:::-;20154:25;;;;19772:415;;;;;:::o;20199:460::-;20267:21;20305:1;20291:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20267:40;;20336:4;20318;20323:1;20318:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20362:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20352:4;20357:1;20352:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20388:35;20404:4;20411:11;20388:7;:35::i;:::-;;20436:6;;;;;;;;;;;:57;;;20508:11;20534:1;20578:4;20605;20625:15;20436:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20254:405;20199:460;:::o;20667:279::-;20748:6;;;;;;;;;;;:22;;;20778:9;20811:4;20831:11;20857:1;20873;20889:8;;;;;;;;;;;20912:15;20748:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20667:279;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:117::-;2775:1;2772;2765:12;2789:117;2898:1;2895;2888:12;2912:117;3021:1;3018;3011:12;3049:553;3107:8;3117:6;3167:3;3160:4;3152:6;3148:17;3144:27;3134:122;;3175:79;;:::i;:::-;3134:122;3288:6;3275:20;3265:30;;3318:18;3310:6;3307:30;3304:117;;;3340:79;;:::i;:::-;3304:117;3454:4;3446:6;3442:17;3430:29;;3508:3;3500:4;3492:6;3488:17;3478:8;3474:32;3471:41;3468:128;;;3515:79;;:::i;:::-;3468:128;3049:553;;;;;:::o;3608:674::-;3688:6;3696;3704;3753:2;3741:9;3732:7;3728:23;3724:32;3721:119;;;3759:79;;:::i;:::-;3721:119;3879:1;3904:53;3949:7;3940:6;3929:9;3925:22;3904:53;:::i;:::-;3894:63;;3850:117;4034:2;4023:9;4019:18;4006:32;4065:18;4057:6;4054:30;4051:117;;;4087:79;;:::i;:::-;4051:117;4200:65;4257:7;4248:6;4237:9;4233:22;4200:65;:::i;:::-;4182:83;;;;3977:298;3608:674;;;;;:::o;4288:122::-;4361:24;4379:5;4361:24;:::i;:::-;4354:5;4351:35;4341:63;;4400:1;4397;4390:12;4341:63;4288:122;:::o;4416:139::-;4462:5;4500:6;4487:20;4478:29;;4516:33;4543:5;4516:33;:::i;:::-;4416:139;;;;:::o;4561:474::-;4629:6;4637;4686:2;4674:9;4665:7;4661:23;4657:32;4654:119;;;4692:79;;:::i;:::-;4654:119;4812:1;4837:53;4882:7;4873:6;4862:9;4858:22;4837:53;:::i;:::-;4827:63;;4783:117;4939:2;4965:53;5010:7;5001:6;4990:9;4986:22;4965:53;:::i;:::-;4955:63;;4910:118;4561:474;;;;;:::o;5041:90::-;5075:7;5118:5;5111:13;5104:21;5093:32;;5041:90;;;:::o;5137:109::-;5218:21;5233:5;5218:21;:::i;:::-;5213:3;5206:34;5137:109;;:::o;5252:210::-;5339:4;5377:2;5366:9;5362:18;5354:26;;5390:65;5452:1;5441:9;5437:17;5428:6;5390:65;:::i;:::-;5252:210;;;;:::o;5468:60::-;5496:3;5517:5;5510:12;;5468:60;;;:::o;5534:142::-;5584:9;5617:53;5635:34;5644:24;5662:5;5644:24;:::i;:::-;5635:34;:::i;:::-;5617:53;:::i;:::-;5604:66;;5534:142;;;:::o;5682:134::-;5740:9;5773:37;5804:5;5773:37;:::i;:::-;5760:50;;5682:134;;;:::o;5822:165::-;5903:9;5936:45;5975:5;5936:45;:::i;:::-;5923:58;;5822:165;;;:::o;5993:193::-;6111:68;6173:5;6111:68;:::i;:::-;6106:3;6099:81;5993:193;;:::o;6192:284::-;6316:4;6354:2;6343:9;6339:18;6331:26;;6367:102;6466:1;6455:9;6451:17;6442:6;6367:102;:::i;:::-;6192:284;;;;:::o;6482:619::-;6559:6;6567;6575;6624:2;6612:9;6603:7;6599:23;6595:32;6592:119;;;6630:79;;:::i;:::-;6592:119;6750:1;6775:53;6820:7;6811:6;6800:9;6796:22;6775:53;:::i;:::-;6765:63;;6721:117;6877:2;6903:53;6948:7;6939:6;6928:9;6924:22;6903:53;:::i;:::-;6893:63;;6848:118;7005:2;7031:53;7076:7;7067:6;7056:9;7052:22;7031:53;:::i;:::-;7021:63;;6976:118;6482:619;;;;;:::o;7107:329::-;7166:6;7215:2;7203:9;7194:7;7190:23;7186:32;7183:119;;;7221:79;;:::i;:::-;7183:119;7341:1;7366:53;7411:7;7402:6;7391:9;7387:22;7366:53;:::i;:::-;7356:63;;7312:117;7107:329;;;;:::o;7442:474::-;7510:6;7518;7567:2;7555:9;7546:7;7542:23;7538:32;7535:119;;;7573:79;;:::i;:::-;7535:119;7693:1;7718:53;7763:7;7754:6;7743:9;7739:22;7718:53;:::i;:::-;7708:63;;7664:117;7820:2;7846:53;7891:7;7882:6;7871:9;7867:22;7846:53;:::i;:::-;7836:63;;7791:118;7442:474;;;;;:::o;7922:619::-;7999:6;8007;8015;8064:2;8052:9;8043:7;8039:23;8035:32;8032:119;;;8070:79;;:::i;:::-;8032:119;8190:1;8215:53;8260:7;8251:6;8240:9;8236:22;8215:53;:::i;:::-;8205:63;;8161:117;8317:2;8343:53;8388:7;8379:6;8368:9;8364:22;8343:53;:::i;:::-;8333:63;;8288:118;8445:2;8471:53;8516:7;8507:6;8496:9;8492:22;8471:53;:::i;:::-;8461:63;;8416:118;7922:619;;;;;:::o;8547:86::-;8582:7;8622:4;8615:5;8611:16;8600:27;;8547:86;;;:::o;8639:112::-;8722:22;8738:5;8722:22;:::i;:::-;8717:3;8710:35;8639:112;;:::o;8757:214::-;8846:4;8884:2;8873:9;8869:18;8861:26;;8897:67;8961:1;8950:9;8946:17;8937:6;8897:67;:::i;:::-;8757:214;;;;:::o;8977:116::-;9047:21;9062:5;9047:21;:::i;:::-;9040:5;9037:32;9027:60;;9083:1;9080;9073:12;9027:60;8977:116;:::o;9099:133::-;9142:5;9180:6;9167:20;9158:29;;9196:30;9220:5;9196:30;:::i;:::-;9099:133;;;;:::o;9238:468::-;9303:6;9311;9360:2;9348:9;9339:7;9335:23;9331:32;9328:119;;;9366:79;;:::i;:::-;9328:119;9486:1;9511:50;9553:7;9544:6;9533:9;9529:22;9511:50;:::i;:::-;9501:60;;9457:114;9610:2;9636:53;9681:7;9672:6;9661:9;9657:22;9636:53;:::i;:::-;9626:63;;9581:118;9238:468;;;;;:::o;9712:118::-;9799:24;9817:5;9799:24;:::i;:::-;9794:3;9787:37;9712:118;;:::o;9836:222::-;9929:4;9967:2;9956:9;9952:18;9944:26;;9980:71;10048:1;10037:9;10033:17;10024:6;9980:71;:::i;:::-;9836:222;;;;:::o;10064:329::-;10123:6;10172:2;10160:9;10151:7;10147:23;10143:32;10140:119;;;10178:79;;:::i;:::-;10140:119;10298:1;10323:53;10368:7;10359:6;10348:9;10344:22;10323:53;:::i;:::-;10313:63;;10269:117;10064:329;;;;:::o;10399:468::-;10464:6;10472;10521:2;10509:9;10500:7;10496:23;10492:32;10489:119;;;10527:79;;:::i;:::-;10489:119;10647:1;10672:53;10717:7;10708:6;10697:9;10693:22;10672:53;:::i;:::-;10662:63;;10618:117;10774:2;10800:50;10842:7;10833:6;10822:9;10818:22;10800:50;:::i;:::-;10790:60;;10745:115;10399:468;;;;;:::o;10873:180::-;10921:77;10918:1;10911:88;11018:4;11015:1;11008:15;11042:4;11039:1;11032:15;11059:281;11142:27;11164:4;11142:27;:::i;:::-;11134:6;11130:40;11272:6;11260:10;11257:22;11236:18;11224:10;11221:34;11218:62;11215:88;;;11283:18;;:::i;:::-;11215:88;11323:10;11319:2;11312:22;11102:238;11059:281;;:::o;11346:129::-;11380:6;11407:20;;:::i;:::-;11397:30;;11436:33;11464:4;11456:6;11436:33;:::i;:::-;11346:129;;;:::o;11481:311::-;11558:4;11648:18;11640:6;11637:30;11634:56;;;11670:18;;:::i;:::-;11634:56;11720:4;11712:6;11708:17;11700:25;;11780:4;11774;11770:15;11762:23;;11481:311;;;:::o;11815:710::-;11911:5;11936:81;11952:64;12009:6;11952:64;:::i;:::-;11936:81;:::i;:::-;11927:90;;12037:5;12066:6;12059:5;12052:21;12100:4;12093:5;12089:16;12082:23;;12153:4;12145:6;12141:17;12133:6;12129:30;12182:3;12174:6;12171:15;12168:122;;;12201:79;;:::i;:::-;12168:122;12316:6;12299:220;12333:6;12328:3;12325:15;12299:220;;;12408:3;12437:37;12470:3;12458:10;12437:37;:::i;:::-;12432:3;12425:50;12504:4;12499:3;12495:14;12488:21;;12375:144;12359:4;12354:3;12350:14;12343:21;;12299:220;;;12303:21;11917:608;;11815:710;;;;;:::o;12548:370::-;12619:5;12668:3;12661:4;12653:6;12649:17;12645:27;12635:122;;12676:79;;:::i;:::-;12635:122;12793:6;12780:20;12818:94;12908:3;12900:6;12893:4;12885:6;12881:17;12818:94;:::i;:::-;12809:103;;12625:293;12548:370;;;;:::o;12924:539::-;13008:6;13057:2;13045:9;13036:7;13032:23;13028:32;13025:119;;;13063:79;;:::i;:::-;13025:119;13211:1;13200:9;13196:17;13183:31;13241:18;13233:6;13230:30;13227:117;;;13263:79;;:::i;:::-;13227:117;13368:78;13438:7;13429:6;13418:9;13414:22;13368:78;:::i;:::-;13358:88;;13154:302;12924:539;;;;:::o;13469:104::-;13514:7;13543:24;13561:5;13543:24;:::i;:::-;13532:35;;13469:104;;;:::o;13579:138::-;13660:32;13686:5;13660:32;:::i;:::-;13653:5;13650:43;13640:71;;13707:1;13704;13697:12;13640:71;13579:138;:::o;13723:155::-;13777:5;13815:6;13802:20;13793:29;;13831:41;13866:5;13831:41;:::i;:::-;13723:155;;;;:::o;13884:345::-;13951:6;14000:2;13988:9;13979:7;13975:23;13971:32;13968:119;;;14006:79;;:::i;:::-;13968:119;14126:1;14151:61;14204:7;14195:6;14184:9;14180:22;14151:61;:::i;:::-;14141:71;;14097:125;13884:345;;;;:::o;14235:474::-;14303:6;14311;14360:2;14348:9;14339:7;14335:23;14331:32;14328:119;;;14366:79;;:::i;:::-;14328:119;14486:1;14511:53;14556:7;14547:6;14536:9;14532:22;14511:53;:::i;:::-;14501:63;;14457:117;14613:2;14639:53;14684:7;14675:6;14664:9;14660:22;14639:53;:::i;:::-;14629:63;;14584:118;14235:474;;;;;:::o;14715:126::-;14765:9;14798:37;14829:5;14798:37;:::i;:::-;14785:50;;14715:126;;;:::o;14847:144::-;14915:9;14948:37;14979:5;14948:37;:::i;:::-;14935:50;;14847:144;;;:::o;14997:167::-;15102:55;15151:5;15102:55;:::i;:::-;15097:3;15090:68;14997:167;;:::o;15170:258::-;15281:4;15319:2;15308:9;15304:18;15296:26;;15332:89;15418:1;15407:9;15403:17;15394:6;15332:89;:::i;:::-;15170:258;;;;:::o;15434:156::-;15574:8;15570:1;15562:6;15558:14;15551:32;15434:156;:::o;15596:365::-;15738:3;15759:66;15823:1;15818:3;15759:66;:::i;:::-;15752:73;;15834:93;15923:3;15834:93;:::i;:::-;15952:2;15947:3;15943:12;15936:19;;15596:365;;;:::o;15967:419::-;16133:4;16171:2;16160:9;16156:18;16148:26;;16220:9;16214:4;16210:20;16206:1;16195:9;16191:17;16184:47;16248:131;16374:4;16248:131;:::i;:::-;16240:139;;15967:419;;;:::o;16392:154::-;16476:6;16471:3;16466;16453:30;16538:1;16529:6;16524:3;16520:16;16513:27;16392:154;;;:::o;16576:304::-;16674:3;16695:71;16759:6;16754:3;16695:71;:::i;:::-;16688:78;;16776:43;16812:6;16807:3;16800:5;16776:43;:::i;:::-;16844:29;16866:6;16844:29;:::i;:::-;16839:3;16835:39;16828:46;;16576:304;;;;;:::o;16886:443::-;17037:4;17075:2;17064:9;17060:18;17052:26;;17088:71;17156:1;17145:9;17141:17;17132:6;17088:71;:::i;:::-;17206:9;17200:4;17196:20;17191:2;17180:9;17176:18;17169:48;17234:88;17317:4;17308:6;17300;17234:88;:::i;:::-;17226:96;;16886:443;;;;;;:::o;17335:180::-;17383:77;17380:1;17373:88;17480:4;17477:1;17470:15;17504:4;17501:1;17494:15;17521:191;17561:4;17581:20;17599:1;17581:20;:::i;:::-;17576:25;;17615:20;17633:1;17615:20;:::i;:::-;17610:25;;17654:1;17651;17648:8;17645:34;;;17659:18;;:::i;:::-;17645:34;17704:1;17701;17697:9;17689:17;;17521:191;;;;:::o;17718:332::-;17839:4;17877:2;17866:9;17862:18;17854:26;;17890:71;17958:1;17947:9;17943:17;17934:6;17890:71;:::i;:::-;17971:72;18039:2;18028:9;18024:18;18015:6;17971:72;:::i;:::-;17718:332;;;;;:::o;18056:158::-;18196:10;18192:1;18184:6;18180:14;18173:34;18056:158;:::o;18220:365::-;18362:3;18383:66;18447:1;18442:3;18383:66;:::i;:::-;18376:73;;18458:93;18547:3;18458:93;:::i;:::-;18576:2;18571:3;18567:12;18560:19;;18220:365;;;:::o;18591:419::-;18757:4;18795:2;18784:9;18780:18;18772:26;;18844:9;18838:4;18834:20;18830:1;18819:9;18815:17;18808:47;18872:131;18998:4;18872:131;:::i;:::-;18864:139;;18591:419;;;:::o;19016:143::-;19073:5;19104:6;19098:13;19089:22;;19120:33;19147:5;19120:33;:::i;:::-;19016:143;;;;:::o;19165:351::-;19235:6;19284:2;19272:9;19263:7;19259:23;19255:32;19252:119;;;19290:79;;:::i;:::-;19252:119;19410:1;19435:64;19491:7;19482:6;19471:9;19467:22;19435:64;:::i;:::-;19425:74;;19381:128;19165:351;;;;:::o;19522:180::-;19570:77;19567:1;19560:88;19667:4;19664:1;19657:15;19691:4;19688:1;19681:15;19708:233;19747:3;19770:24;19788:5;19770:24;:::i;:::-;19761:33;;19816:66;19809:5;19806:77;19803:103;;19886:18;;:::i;:::-;19803:103;19933:1;19926:5;19922:13;19915:20;;19708:233;;;:::o;19947:180::-;19995:77;19992:1;19985:88;20092:4;20089:1;20082:15;20116:4;20113:1;20106:15;20133:320;20177:6;20214:1;20208:4;20204:12;20194:22;;20261:1;20255:4;20251:12;20282:18;20272:81;;20338:4;20330:6;20326:17;20316:27;;20272:81;20400:2;20392:6;20389:14;20369:18;20366:38;20363:84;;20419:18;;:::i;:::-;20363:84;20184:269;20133:320;;;:::o;20459:134::-;20517:9;20550:37;20581:5;20550:37;:::i;:::-;20537:50;;20459:134;;;:::o;20599:147::-;20694:45;20733:5;20694:45;:::i;:::-;20689:3;20682:58;20599:147;;:::o;20752:238::-;20853:4;20891:2;20880:9;20876:18;20868:26;;20904:79;20980:1;20969:9;20965:17;20956:6;20904:79;:::i;:::-;20752:238;;;;:::o;20996:168::-;21136:20;21132:1;21124:6;21120:14;21113:44;20996:168;:::o;21170:366::-;21312:3;21333:67;21397:2;21392:3;21333:67;:::i;:::-;21326:74;;21409:93;21498:3;21409:93;:::i;:::-;21527:2;21522:3;21518:12;21511:19;;21170:366;;;:::o;21542:419::-;21708:4;21746:2;21735:9;21731:18;21723:26;;21795:9;21789:4;21785:20;21781:1;21770:9;21766:17;21759:47;21823:131;21949:4;21823:131;:::i;:::-;21815:139;;21542:419;;;:::o;21967:152::-;22107:4;22103:1;22095:6;22091:14;22084:28;21967:152;:::o;22125:365::-;22267:3;22288:66;22352:1;22347:3;22288:66;:::i;:::-;22281:73;;22363:93;22452:3;22363:93;:::i;:::-;22481:2;22476:3;22472:12;22465:19;;22125:365;;;:::o;22496:419::-;22662:4;22700:2;22689:9;22685:18;22677:26;;22749:9;22743:4;22739:20;22735:1;22724:9;22720:17;22713:47;22777:131;22903:4;22777:131;:::i;:::-;22769:139;;22496:419;;;:::o;22921:305::-;22961:3;22980:20;22998:1;22980:20;:::i;:::-;22975:25;;23014:20;23032:1;23014:20;:::i;:::-;23009:25;;23168:1;23100:66;23096:74;23093:1;23090:81;23087:107;;;23174:18;;:::i;:::-;23087:107;23218:1;23215;23211:9;23204:16;;22921:305;;;;:::o;23232:156::-;23372:8;23368:1;23360:6;23356:14;23349:32;23232:156;:::o;23394:365::-;23536:3;23557:66;23621:1;23616:3;23557:66;:::i;:::-;23550:73;;23632:93;23721:3;23632:93;:::i;:::-;23750:2;23745:3;23741:12;23734:19;;23394:365;;;:::o;23765:419::-;23931:4;23969:2;23958:9;23954:18;23946:26;;24018:9;24012:4;24008:20;24004:1;23993:9;23989:17;23982:47;24046:131;24172:4;24046:131;:::i;:::-;24038:139;;23765:419;;;:::o;24190:332::-;24311:4;24349:2;24338:9;24334:18;24326:26;;24362:71;24430:1;24419:9;24415:17;24406:6;24362:71;:::i;:::-;24443:72;24511:2;24500:9;24496:18;24487:6;24443:72;:::i;:::-;24190:332;;;;;:::o;24528:348::-;24568:7;24591:20;24609:1;24591:20;:::i;:::-;24586:25;;24625:20;24643:1;24625:20;:::i;:::-;24620:25;;24813:1;24745:66;24741:74;24738:1;24735:81;24730:1;24723:9;24716:17;24712:105;24709:131;;;24820:18;;:::i;:::-;24709:131;24868:1;24865;24861:9;24850:20;;24528:348;;;;:::o;24882:180::-;24930:77;24927:1;24920:88;25027:4;25024:1;25017:15;25051:4;25048:1;25041:15;25068:185;25108:1;25125:20;25143:1;25125:20;:::i;:::-;25120:25;;25159:20;25177:1;25159:20;:::i;:::-;25154:25;;25198:1;25188:35;;25203:18;;:::i;:::-;25188:35;25245:1;25242;25238:9;25233:14;;25068:185;;;;:::o;25259:85::-;25304:7;25333:5;25322:16;;25259:85;;;:::o;25350:158::-;25408:9;25441:61;25459:42;25468:32;25494:5;25468:32;:::i;:::-;25459:42;:::i;:::-;25441:61;:::i;:::-;25428:74;;25350:158;;;:::o;25514:147::-;25609:45;25648:5;25609:45;:::i;:::-;25604:3;25597:58;25514:147;;:::o;25667:348::-;25796:4;25834:2;25823:9;25819:18;25811:26;;25847:71;25915:1;25904:9;25900:17;25891:6;25847:71;:::i;:::-;25928:80;26004:2;25993:9;25989:18;25980:6;25928:80;:::i;:::-;25667:348;;;;;:::o;26021:143::-;26078:5;26109:6;26103:13;26094:22;;26125:33;26152:5;26125:33;:::i;:::-;26021:143;;;;:::o;26170:351::-;26240:6;26289:2;26277:9;26268:7;26264:23;26260:32;26257:119;;;26295:79;;:::i;:::-;26257:119;26415:1;26440:64;26496:7;26487:6;26476:9;26472:22;26440:64;:::i;:::-;26430:74;;26386:128;26170:351;;;;:::o;26527:114::-;26594:6;26628:5;26622:12;26612:22;;26527:114;;;:::o;26647:184::-;26746:11;26780:6;26775:3;26768:19;26820:4;26815:3;26811:14;26796:29;;26647:184;;;;:::o;26837:132::-;26904:4;26927:3;26919:11;;26957:4;26952:3;26948:14;26940:22;;26837:132;;;:::o;26975:108::-;27052:24;27070:5;27052:24;:::i;:::-;27047:3;27040:37;26975:108;;:::o;27089:179::-;27158:10;27179:46;27221:3;27213:6;27179:46;:::i;:::-;27257:4;27252:3;27248:14;27234:28;;27089:179;;;;:::o;27274:113::-;27344:4;27376;27371:3;27367:14;27359:22;;27274:113;;;:::o;27423:732::-;27542:3;27571:54;27619:5;27571:54;:::i;:::-;27641:86;27720:6;27715:3;27641:86;:::i;:::-;27634:93;;27751:56;27801:5;27751:56;:::i;:::-;27830:7;27861:1;27846:284;27871:6;27868:1;27865:13;27846:284;;;27947:6;27941:13;27974:63;28033:3;28018:13;27974:63;:::i;:::-;27967:70;;28060:60;28113:6;28060:60;:::i;:::-;28050:70;;27906:224;27893:1;27890;27886:9;27881:14;;27846:284;;;27850:14;28146:3;28139:10;;27547:608;;;27423:732;;;;:::o;28161:831::-;28424:4;28462:3;28451:9;28447:19;28439:27;;28476:71;28544:1;28533:9;28529:17;28520:6;28476:71;:::i;:::-;28557:80;28633:2;28622:9;28618:18;28609:6;28557:80;:::i;:::-;28684:9;28678:4;28674:20;28669:2;28658:9;28654:18;28647:48;28712:108;28815:4;28806:6;28712:108;:::i;:::-;28704:116;;28830:72;28898:2;28887:9;28883:18;28874:6;28830:72;:::i;:::-;28912:73;28980:3;28969:9;28965:19;28956:6;28912:73;:::i;:::-;28161:831;;;;;;;;:::o;28998:807::-;29247:4;29285:3;29274:9;29270:19;29262:27;;29299:71;29367:1;29356:9;29352:17;29343:6;29299:71;:::i;:::-;29380:72;29448:2;29437:9;29433:18;29424:6;29380:72;:::i;:::-;29462:80;29538:2;29527:9;29523:18;29514:6;29462:80;:::i;:::-;29552;29628:2;29617:9;29613:18;29604:6;29552:80;:::i;:::-;29642:73;29710:3;29699:9;29695:19;29686:6;29642:73;:::i;:::-;29725;29793:3;29782:9;29778:19;29769:6;29725:73;:::i;:::-;28998:807;;;;;;;;;:::o;29811:663::-;29899:6;29907;29915;29964:2;29952:9;29943:7;29939:23;29935:32;29932:119;;;29970:79;;:::i;:::-;29932:119;30090:1;30115:64;30171:7;30162:6;30151:9;30147:22;30115:64;:::i;:::-;30105:74;;30061:128;30228:2;30254:64;30310:7;30301:6;30290:9;30286:22;30254:64;:::i;:::-;30244:74;;30199:129;30367:2;30393:64;30449:7;30440:6;30429:9;30425:22;30393:64;:::i;:::-;30383:74;;30338:129;29811:663;;;;;:::o

Swarm Source

ipfs://aca69ce77bdd9153ea4df015cd6dfe8a2b568f8a32d365601c92de6da352d141

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.