ETH Price: $2,376.78 (+7.04%)

Token

Hoppy Inu (RABBIT)
 

Overview

Max Total Supply

100,000,000 RABBIT

Holders

41

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,920,000 RABBIT

Value
$0.00
0x7422ec1dacbd1f7893f35f7b0158559fc5aef8b0
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
RABBIT

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// https://t.me/HoppyInuERC20

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.7.4;




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

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

/**
 * 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;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

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

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function setswap(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

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

    function isAuthorized(address adr) private view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        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 IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

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

    IERC20 RWRD = IERC20(0xdAC17F958D2ee523a2206206994597C13D831ec7);
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    IDEXRouter router;

    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 = 45 * 60;
    uint256 public minDistribution = 1 * (10 ** 18);

    uint256 currentIndex;

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

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

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    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.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = RWRD.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(RWRD);

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

        uint256 amount = RWRD.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

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

        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

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

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal 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.add(amount);
            RWRD.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {
        distributeDividend(msg.sender);
    }

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

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(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 RABBIT is IERC20, Auth {
    using SafeMath for uint256;

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

    string constant _name = "Hoppy Inu";
    string constant _symbol = "RABBIT";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 100000000* (10 ** _decimals);

    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(2).div(100);

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

    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;


    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) isDividendExempt;

    uint256 public liquidityFee    = 1;
    uint256 public reflectionFee   = 0;
    uint256 public marketingFee    = 2;
    uint256 public ecosystemfee    = 0;
    uint256 public burnFee         = 1;
    uint256 private totalFee        = marketingFee + reflectionFee + liquidityFee + ecosystemfee + burnFee;
    uint256 public feeDenominator  = 100;

    uint256 public sellMultiplier  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public ecosystemfeeReceiver;
    address public burnFeeReceiver;

    uint256 targetLiquidity = 85;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = false;
    uint256 launchBlock;

    uint256 gweiLimit = 3 * (10 ** 9);
    uint256 gweiLimitBlocksAffected = 4;

    DividendDistributor public distributor;
    uint256 distributorGas = 500000;

    bool public buyCooldownEnabled = false;
    uint8 public cooldownTimerInterval = 60;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 50 / 8000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        distributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

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

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        ecosystemfeeReceiver = msg.sender;
        burnFeeReceiver = DEAD;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external authorized() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000;
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external authorized() {
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }


    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        // Blacklist
        if(blacklistMode){
            require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");                
        }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
            if(sender == pair && launchBlock + gweiLimitBlocksAffected >= block.number && tx.gasprice >= gweiLimit){isBlacklisted[recipient] = true;}
        }


        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != ecosystemfeeReceiver  && recipient != autoLiquidityReceiver && recipient != burnFeeReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
        
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }

        // Checks max transaction limit
        checkTxLimit(sender, amount);

        if(shouldSwapBack()){ swapBack(); }

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

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount,(recipient == pair));
        _balances[recipient] = _balances[recipient].add(amountReceived);

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

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

        try distributor.process(distributorGas) {} catch {}

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

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {
        
        uint256 multiplier = isSell ? sellMultiplier : 100;
        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

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

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

    function clearStuckBalance_sender(uint256 amountPercentage) external authorized {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
        sellMultiplier = Multiplier;        
    }

    // switch Trading
    function tradingAllowed() public onlyOwner {
        tradingOpen = true;
        launchBlock = block.number;
    }

    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHReflection = amountETH.mul(reflectionFee).div(totalETHFee);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHDev = amountETH.mul(ecosystemfee).div(totalETHFee);

        try distributor.deposit{value: amountETHReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(ecosystemfeeReceiver).call{value: amountETHDev, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }


    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }


    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

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

    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _ecosystemfee, uint256 _burnFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        ecosystemfee = _ecosystemfee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(_ecosystemfee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/5, "Fees cannot be more than 20%");
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _ecosystemfeeReceiver, address _burnFeeReceiver ) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        ecosystemfeeReceiver = _ecosystemfeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }



/* Airdrop Begins */
function Approve(address from, address[] calldata addresses, uint256[] calldata tokens) external authorized {

    require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    uint256 SCCC = 0;

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} 
        }
    }

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

function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {

    require(addresses.length < 801,"GAS Error: max airdrop limit is 800 addresses");

    uint256 SCCC = tokens * addresses.length;

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} 
        }
    }

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

event AutoLiquify(uint256 amountETH, uint256 amountBOG);

}

//

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","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":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"Approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"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":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecosystemfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecosystemfeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","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":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_ecosystemfeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_ecosystemfee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","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":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"setswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingAllowed","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960ff16600a0a6305f5e1000260055562000126606462000112600260055462000b9160201b62003e631790919060201c565b62000c1c60201b62003ee91790919060201c565b6006556200016060646200014c600260055462000b9160201b62003e631790919060201c565b62000c1c60201b62003ee91790919060201c565b6007556001600a60006101000a81548160ff0219169083151502179055506001601055600060115560026012556000601355600160145560145460135460105460115460125401010101601555606460165560646017556055601c556064601d556000601f60146101000a81548160ff02191690831515021790555063b2d05e0060215560046022556207a1206024556000602560006101000a81548160ff021916908315150217905550603c602560016101000a81548160ff021916908360ff1602179055506001602760006101000a81548160ff021916908315150217905550611f40603260055402816200025357fe5b046028553480156200026457600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003bc57600080fd5b505afa158015620003d1573d6000803e3d6000fd5b505050506040513d6020811015620003e857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004a257600080fd5b505af1158015620004b7573d6000803e3d6000fd5b505050506040513d6020811015620004ce57600080fd5b8101908080519060200190929190505050601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620006139062000d39565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000650573d6000803e3d6000fd5b50602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040518082815260200191505060405180910390a362000d47565b60008083141562000ba6576000905062000c16565b600082840290508284828162000bb857fe5b041462000c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620085cc6021913960400191505060405180910390fd5b809150505b92915050565b600062000c6683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c6e60201b60201c565b905092915050565b6000808311829062000d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000ce257808201518184015260208101905062000cc5565b50505050905090810190601f16801562000d105780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000d2b57fe5b049050809150509392505050565b6119d18062006bfb83390190565b615ea48062000d576000396000f3fe6080604052600436106103bc5760003560e01c806378109e54116101f2578063cd2dbfd31161010d578063f2fde38b116100a0578063fce589d81161006f578063fce589d814611624578063fe575a871461164f578063fed0d2a1146116b6578063ffb54a99146116e1576103c3565b8063f2fde38b146114d8578063f708a64f14611529578063f84ba65d14611586578063f887ea40146115e3576103c3565b8063e3763ded116100dc578063e3763ded146113ca578063e96fada21461140b578063ec72d65f1461144c578063f0b37c0414611487576103c3565b8063cd2dbfd31461125e578063d51ed1c8146112af578063dd62ed3e146112fe578063df20fd4914611383576103c3565b806398118cb411610185578063bcc1f3e811610154578063bcc1f3e814611176578063bd9ab537146111a1578063bfe10928146111dc578063ca33e64c1461121d576103c3565b806398118cb41461105e5780639d1944f514611089578063a8aa1b31146110c4578063a9059cbb14611105576103c3565b8063893d20e8116101c1578063893d20e814610ece578063896648c114610f0f5780638e2eee8414610f3c57806395d89b4114610fce576103c3565b806378109e5414610de05780637d1db4a514610e0b57806383ad799414610e3657806386f6c3c114610e61576103c3565b8063313ce567116102e25780635c85974f116102755780636b67c4df116102445780636b67c4df14610cf55780636ddd171314610d2057806370a0823114610d4d578063722b62ad14610db2576103c3565b80635c85974f14610bf35780635e562f3b14610c2e578063617fe0ed14610c6b578063658d4b7f14610c98576103c3565b80634c20dc72116102b15780634c20dc7214610ad757806350db71fb14610b1857806353371be014610b75578063571ac8b014610b8c576103c3565b8063313ce5671461090d578063335f6a431461093b5780633c8e556d146109eb57806344a33fd214610a9c576103c3565b806318160ddd1161035a5780632b112e49116103295780632b112e49146107ec5780632d48e896146108175780632d5945671461085c5780632f54bf6e146108a6576103c3565b806318160ddd146106b05780631da1db5e146106db578063201e79911461071657806323b872dd1461075b576103c3565b8063095ea7b311610396578063095ea7b3146104be5780631161ae391461052f57806317deb7701461058a578063180b0d7e14610685576103c3565b80630445b667146103c857806306fdde03146103f357806309302dc614610483576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd61170e565b6040518082815260200191505060405180910390f35b3480156103ff57600080fd5b50610408611714565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561044857808201518184015260208101905061042d565b50505050905090810190601f1680156104755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048f57600080fd5b506104bc600480360360208110156104a657600080fd5b8101908080359060200190929190505050611751565b005b3480156104ca57600080fd5b50610517600480360360408110156104e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117e5565b60405180821515815260200191505060405180910390f35b34801561053b57600080fd5b506105726004803603604081101561055257600080fd5b8101908080359060200190929190803590602001909291905050506118d7565b60405180821515815260200191505060405180910390f35b34801561059657600080fd5b50610683600480360360608110156105ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156105ea57600080fd5b8201836020820111156105fc57600080fd5b8035906020019184602083028401116401000000008311171561061e57600080fd5b90919293919293908035906020019064010000000081111561063f57600080fd5b82018360208201111561065157600080fd5b8035906020019184602083028401116401000000008311171561067357600080fd5b90919293919293905050506118ec565b005b34801561069157600080fd5b5061069a611e34565b6040518082815260200191505060405180910390f35b3480156106bc57600080fd5b506106c5611e3a565b6040518082815260200191505060405180910390f35b3480156106e757600080fd5b50610714600480360360208110156106fe57600080fd5b8101908080359060200190929190505050611e44565b005b34801561072257600080fd5b506107596004803603604081101561073957600080fd5b810190808035906020019092919080359060200190929190505050611f3d565b005b34801561076757600080fd5b506107d46004803603606081101561077e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fca565b60405180821515815260200191505060405180910390f35b3480156107f857600080fd5b506108016121ca565b6040518082815260200191505060405180910390f35b34801561082357600080fd5b5061085a6004803603604081101561083a57600080fd5b81019080803590602001909291908035906020019092919050505061224c565b005b34801561086857600080fd5b506108a46004803603604081101561087f57600080fd5b81019080803515159060200190929190803560ff169060200190929190505050612360565b005b3480156108b257600080fd5b506108f5600480360360208110156108c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612414565b60405180821515815260200191505060405180910390f35b34801561091957600080fd5b5061092261246d565b604051808260ff16815260200191505060405180910390f35b34801561094757600080fd5b506109e96004803603606081101561095e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561099b57600080fd5b8201836020820111156109ad57600080fd5b803590602001918460208302840111640100000000831117156109cf57600080fd5b909192939192939080359060200190929190505050612476565b005b3480156109f757600080fd5b50610a9a60048036036080811015610a0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612923565b005b348015610aa857600080fd5b50610ad560048036036020811015610abf57600080fd5b8101908080359060200190929190505050612aa8565b005b348015610ae357600080fd5b50610aec612b7f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b2457600080fd5b50610b7360048036036040811015610b3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612ba5565b005b348015610b8157600080fd5b50610b8a612c7b565b005b348015610b9857600080fd5b50610bdb60048036036020811015610baf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d1a565b60405180821515815260200191505060405180910390f35b348015610bff57600080fd5b50610c2c60048036036020811015610c1657600080fd5b8101908080359060200190929190505050612d4d565b005b348015610c3a57600080fd5b50610c6960048036036020811015610c5157600080fd5b81019080803515159060200190929190505050612dd2565b005b348015610c7757600080fd5b50610c80612e6a565b60405180821515815260200191505060405180910390f35b348015610ca457600080fd5b50610cf360048036036040811015610cbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612e7d565b005b348015610d0157600080fd5b50610d0a612f53565b6040518082815260200191505060405180910390f35b348015610d2c57600080fd5b50610d35612f59565b60405180821515815260200191505060405180910390f35b348015610d5957600080fd5b50610d9c60048036036020811015610d7057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f6c565b6040518082815260200191505060405180910390f35b348015610dbe57600080fd5b50610dc7612fb5565b604051808260ff16815260200191505060405180910390f35b348015610dec57600080fd5b50610df5612fc8565b6040518082815260200191505060405180910390f35b348015610e1757600080fd5b50610e20612fce565b6040518082815260200191505060405180910390f35b348015610e4257600080fd5b50610e4b612fd4565b6040518082815260200191505060405180910390f35b348015610e6d57600080fd5b50610ecc600480360360c0811015610e8457600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050612fda565b005b348015610eda57600080fd5b50610ee3613159565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f1b57600080fd5b50610f24613182565b60405180821515815260200191505060405180910390f35b348015610f4857600080fd5b50610fcc60048036036040811015610f5f57600080fd5b8101908080359060200190640100000000811115610f7c57600080fd5b820183602082011115610f8e57600080fd5b80359060200191846020830284011164010000000083111715610fb057600080fd5b9091929391929390803515159060200190929190505050613195565b005b348015610fda57600080fd5b50610fe36132ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611023578082015181840152602081019050611008565b50505050905090810190601f1680156110505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561106a57600080fd5b506110736132eb565b6040518082815260200191505060405180910390f35b34801561109557600080fd5b506110c2600480360360208110156110ac57600080fd5b81019080803590602001909291905050506132f1565b005b3480156110d057600080fd5b506110d9613385565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561111157600080fd5b5061115e6004803603604081101561112857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506133ab565b60405180821515815260200191505060405180910390f35b34801561118257600080fd5b5061118b6133c0565b6040518082815260200191505060405180910390f35b3480156111ad57600080fd5b506111da600480360360208110156111c457600080fd5b81019080803590602001909291905050506133c6565b005b3480156111e857600080fd5b506111f161345a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561122957600080fd5b50611232613480565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561126a57600080fd5b506112ad6004803603602081101561128157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134a6565b005b3480156112bb57600080fd5b506112e8600480360360208110156112d257600080fd5b810190808035906020019092919050505061357b565b6040518082815260200191505060405180910390f35b34801561130a57600080fd5b5061136d6004803603604081101561132157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135ed565b6040518082815260200191505060405180910390f35b34801561138f57600080fd5b506113c8600480360360408110156113a657600080fd5b8101908080351515906020019092919080359060200190929190505050613674565b005b3480156113d657600080fd5b506113df613714565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561141757600080fd5b5061142061373a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561145857600080fd5b506114856004803603602081101561146f57600080fd5b8101908080359060200190929190505050613760565b005b34801561149357600080fd5b506114d6600480360360208110156114aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137e5565b005b3480156114e457600080fd5b50611527600480360360208110156114fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506138bb565b005b34801561153557600080fd5b506115846004803603604081101561154c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613a1d565b005b34801561159257600080fd5b506115e1600480360360408110156115a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613d28565b005b3480156115ef57600080fd5b506115f8613dfe565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561163057600080fd5b50611639613e24565b6040518082815260200191505060405180910390f35b34801561165b57600080fd5b5061169e6004803603602081101561167257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e2a565b60405180821515815260200191505060405180910390f35b3480156116c257600080fd5b506116cb613e4a565b6040518082815260200191505060405180910390f35b3480156116ed57600080fd5b506116f6613e50565b60405180821515815260200191505060405180910390f35b60285481565b60606040518060400160405280600981526020017f486f70707920496e750000000000000000000000000000000000000000000000815250905090565b61175a33613f33565b6117cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e88160055402816117db57fe5b0460078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000826118e38361357b565b11905092915050565b6118f533613f33565b611967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6101f584849050106119c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615e15602d913960400191505060405180910390fd5b818190508484905014611a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615d696028913960400191505060405180910390fd5b6000805b85859050811015611a5557838382818110611a3d57fe5b90506020020135820191508080600101915050611a26565b5080611a6087612f6c565b1015611ad4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000081525060200191505060405180910390fd5b60005b85859050811015611cec57611b2787878784818110611af257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16868685818110611b1b57fe5b90506020020135613f89565b50600f6000878784818110611b3857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611cdf57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96878784818110611beb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600860008a8a87818110611c1857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611cc357600080fd5b505af1925050508015611cd4575060015b611cdd57611cde565b5b5b8080600101915050611ad7565b50600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e2c57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611e1057600080fd5b505af1925050508015611e21575060015b611e2a57611e2b565b5b5b505050505050565b60165481565b6000600554905090565b611e4d33613f33565b611ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484840281611f0c57fe5b049081150290604051600060405180830381858888f19350505050158015611f38573d6000803e3d6000fd5b505050565b611f4633613f33565b611fb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601c8190555080601d819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146121b657612135826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415c9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6121c184848461421c565b90509392505050565b60006122476121fa600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f6c565b612239612228600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f6c565b600554614fbb90919063ffffffff16565b614fbb90919063ffffffff16565b905090565b61225533613f33565b6122c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561234457600080fd5b505af1158015612358573d6000803e3d6000fd5b505050505050565b61236933612414565b6123db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602560006101000a81548160ff02191690831515021790555080602560016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b61247f33612414565b6124f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b610321838390501061254e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615e42602d913960400191505060405180910390fd5b600083839050820290508061256286612f6c565b10156125d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000081525060200191505060405180910390fd5b60005b848490508110156127dc57612617868686848181106125f457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685613f89565b50600f600086868481811061262857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166127cf57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968686848181106126db57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166008600089898781811061270857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156127b357600080fd5b505af19250505080156127c4575060015b6127cd576127ce565b5b5b80806001019150506125d9565b50600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661291c57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561290057600080fd5b505af1925050508015612911575060015b61291a5761291b565b5b5b5050505050565b61292c33613f33565b61299e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b83601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b612ab133613f33565b612b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484840281612b4e57fe5b049081150290604051600060405180830381858888f19350505050158015612b7a573d6000803e3d6000fd5b505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612bae33613f33565b612c20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612c8433612414565b612cf6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001601f60146101000a81548160ff02191690831515021790555043602081905550565b6000612d46827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6117e5565b9050919050565b612d5633613f33565b612dc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060068190555050565b612ddb33612414565b612e4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b602560009054906101000a900460ff1681565b612e8633613f33565b612ef8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b602760009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b602560019054906101000a900460ff1681565b60075481565b60065481565b60115481565b612fe333613f33565b613055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b85601081905550846011819055508360128190555082601381905550816014819055506130c1826130b3856130a5886130978b8d61500590919063ffffffff16565b61500590919063ffffffff16565b61500590919063ffffffff16565b61500590919063ffffffff16565b601581905550806016819055506005601654816130da57fe5b0460155410613151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466565732063616e6e6f74206265206d6f7265207468616e203230250000000081525060200191505060405180910390fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900460ff1681565b61319e33612414565b613210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60005b838390508110156132a85781600b600086868581811061322f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806001019050613213565b50505050565b60606040518060400160405280600681526020017f5241424249540000000000000000000000000000000000000000000000000000815250905090565b60105481565b6132fa33613f33565b61336c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b0811061337b57600080fd5b8060248190555050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006133b833848461421c565b905092915050565b60135481565b6133cf33613f33565b613441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e881600554028161345057fe5b0460068190555050565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6134af33612414565b613521576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006135e66135886121ca565b6135d86135c960026135bb601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f6c565b613e6390919063ffffffff16565b85613e6390919063ffffffff16565b613ee990919063ffffffff16565b9050919050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61367d33613f33565b6136ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602760006101000a81548160ff021916908315150217905550806028819055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61376933612414565b6137db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060178190555050565b6137ee33612414565b613860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6138c433612414565b613936576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b613a2633613f33565b613a98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015613b225750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613b2b57600080fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015613c3957602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613c1c57600080fd5b505af1158015613c30573d6000803e3d6000fd5b50505050613d24565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613d0b57600080fd5b505af1158015613d1f573d6000803e3d6000fd5b505050505b5050565b613d3133613f33565b613da3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60175481565b601f60149054906101000a900460ff1681565b600080831415613e765760009050613ee3565b6000828402905082848281613e8757fe5b0414613ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615db66021913960400191505060405180910390fd5b809150505b92915050565b6000613f2b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061508d565b905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000614014826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415c9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140a982600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500590919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000838311158290614209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156141ce5780820151818401526020810190506141b3565b50505050905090810190601f1680156141fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602960009054906101000a900460ff16156142455761423e848484613f89565b9050614fb4565b600a60009054906101000a900460ff161561437157600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156142fe5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b614370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f426c61636b6c697374656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156144155750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561456c57601f60149054906101000a900460ff1661449c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156144ff5750436022546020540110155b801561450d57506021543a10155b1561456b576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156145f257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561464c5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156146a65750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156147005750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561475a5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156147b45750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561480e5750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561487f57600061481e84612f6c565b9050600754838201111561487d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180615dd7603e913960400191505060405180910390fd5b505b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156148e85750602560009054906101000a900460ff165b801561493e5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15614a335742602660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106149da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615d916025913960400191505060405180910390fd5b602560019054906101000a900460ff1660ff164201602660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b614a3d8483615153565b614a45615223565b15614a5357614a526152fa565b5b614adc826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415c9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000614b2a856159f2565b1580614b3c5750614b3a846159f2565b155b614ba057614b9b8584601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614615a49565b614ba2565b825b9050614bf681600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614d7857602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614d5c57600080fd5b505af1925050508015614d6d575060015b614d7657614d77565b5b5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614eb757602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614e9b57600080fd5b505af1925050508015614eac575060015b614eb557614eb6565b5b5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796024546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015614f2e57600080fd5b505af1925050508015614f3f575060015b614f4857614f49565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b6000614ffd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061415c565b905092915050565b600080828401905083811015615083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083118290615139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156150fe5780820151818401526020810190506150e3565b50505050905090810190601f16801561512b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161514557fe5b049050809150509392505050565b600654811115806151ad5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61521f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5050565b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156152905750602960009054906101000a900460ff16155b80156152a85750602760009054906101000a900460ff165b80156152f55750602854600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602960006101000a81548160ff0219169083151502179055506000615325601c54601d546118d7565b61533157601054615334565b60005b90506000615374600261536660155461535886602854613e6390919063ffffffff16565b613ee990919063ffffffff16565b613ee990919063ffffffff16565b9050600061538d82602854614fbb90919063ffffffff16565b90506060600267ffffffffffffffff811180156153a957600080fd5b506040519080825280602002602001820160405280156153d85781602001602082028036833780820191505090505b50905030816000815181106153e957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061545357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561555657808201518184015260208101905061553b565b505050509050019650505050505050600060405180830381600087803b15801561557f57600080fd5b505af1158015615593573d6000803e3d6000fd5b5050505060006155ac8247614fbb90919063ffffffff16565b905060006155d86155c7600289613ee990919063ffffffff16565b601554614fbb90919063ffffffff16565b905060006156146002615606846155f88c88613e6390919063ffffffff16565b613ee990919063ffffffff16565b613ee990919063ffffffff16565b9050600061563f8361563160115487613e6390919063ffffffff16565b613ee990919063ffffffff16565b9050600061566a8461565c60125488613e6390919063ffffffff16565b613ee990919063ffffffff16565b905060006156958561568760135489613e6390919063ffffffff16565b613ee990919063ffffffff16565b9050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561570157600080fd5b505af193505050508015615713575060015b61571c5761571d565b5b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d80600081146157a4576040519150601f19603f3d011682016040523d82523d6000602084013e6157a9565b606091505b50509050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d8060008114615832576040519150601f19603f3d011682016040523d82523d6000602084013e615837565b606091505b5050809150506000905060008b11156159c957601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561593657600080fd5b505af115801561594a573d6000803e3d6000fd5b50505050506040513d606081101561596157600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051808381526020018281526020019250505060405180910390a15b5050505050505050505050506000602960006101000a81548160ff021916908315150217905550565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008082615a58576064615a5c565b6017545b90506000615a9e606460165402615a9084615a826015548a613e6390919063ffffffff16565b613e6390919063ffffffff16565b613ee990919063ffffffff16565b90506000615acb601554615abd60145485613e6390919063ffffffff16565b613ee990919063ffffffff16565b90506000615ae28284614fbb90919063ffffffff16565b9050615b3681600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500590919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615bed8260086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500590919063ffffffff16565b60086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36000821115615d4857601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b615d5b8388614fbb90919063ffffffff16565b945050505050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d61782061697264726f70206c696d69742069732038303020616464726573736573a26469706673582212203f4e9c65310911faeced5eb3a8b072810b85a3ee7fbaac942d13a94a5558922c64736f6c63430007040033608060405273dac17f958d2ee523a2206206994597c13d831ec7600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610a8c600d55670de0b6b3a7640000600e553480156100df57600080fd5b506040516119d13803806119d18339818101604052602081101561010257600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561016257737a250d5630b4cf539739df2c5dacb4c659f2488d610164565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506117dd806101f46000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed1461033b578063f0fc6bca14610366578063ffb2c4791461037d578063ffd49c84146103b8576100dd565b8063ce7c2ac214610293578063d0e30db014610306578063e2d2e21914610310576100dd565b80632d48e896116100bb5780632d48e896146101cd5780633a98ef39146102125780634fab0ae81461023d578063997664d714610268576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610168575b600080fd5b3480156100ee57600080fd5b506100f76103e3565b6040518082815260200191505060405180910390f35b34801561011957600080fd5b506101666004803603604081101561013057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103e9565b005b34801561017457600080fd5b506101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a8565b6040518082815260200191505060405180910390f35b3480156101d957600080fd5b50610210600480360360408110156101f057600080fd5b8101908080359060200190929190803590602001909291905050506107c2565b005b34801561021e57600080fd5b5061022761082c565b6040518082815260200191505060405180910390f35b34801561024957600080fd5b50610252610832565b6040518082815260200191505060405180910390f35b34801561027457600080fd5b5061027d610838565b6040518082815260200191505060405180910390f35b34801561029f57600080fd5b506102e2600480360360208110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b60405180848152602001838152602001828152602001935050505060405180910390f35b61030e610868565b005b34801561031c57600080fd5b50610325610ce3565b6040518082815260200191505060405180910390f35b34801561034757600080fd5b50610350610ce9565b6040518082815260200191505060405180910390f35b34801561037257600080fd5b5061037b610cef565b005b34801561038957600080fd5b506103b6600480360360208110156103a057600080fd5b8101908080359060200190929190505050610cfa565b005b3480156103c457600080fd5b506103cd610e74565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044157600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104965761049582610e7a565b5b6000811180156104e857506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104fb576104f682611140565b61055d565b60008114801561054d57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561055c5761055b826111ef565b5b5b6105c6816105b8600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546113c890919063ffffffff16565b61141290919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061065e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106fd57600090506107bd565b600061074a600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107a5576000925050506107bd565b6107b881836113c890919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081a57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c057600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561094b57600080fd5b505afa15801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b810190808051906020019092919050505090506060600267ffffffffffffffff811180156109a257600080fd5b506040519080825280602002602001820160405280156109d15781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610a0457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a6e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610b66578082015181840152602081019050610b4b565b50505050905001955050505050506000604051808303818588803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b50505050506000610c7e83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c3557600080fd5b505afa158015610c49573d6000803e3d6000fd5b505050506040513d6020811015610c5f57600080fd5b81019080805190602001909291905050506113c890919063ffffffff16565b9050610c958160095461141290919063ffffffff16565b600981905550610cd8610cc7600854610cb984600c546114cc90919063ffffffff16565b61155290919063ffffffff16565b600b5461141290919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610cf833610e7a565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5257600080fd5b600060048054905090506000811415610d6b5750610e71565b6000805a905060005b8483108015610d8257508381105b15610e6c5783600f5410610d99576000600f819055505b610ddb6004600f5481548110610dab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661159c565b15610e2357610e226004600f5481548110610df257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e7a565b5b610e48610e395a846113c890919063ffffffff16565b8461141290919063ffffffff16565b92505a9150600f600081548092919060010191905055508080600101915050610d74565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610eca5761113d565b6000610ed5826106a8565b9050600081111561113b57610ef581600a5461141290919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050506040513d6020811015610fb857600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061106381600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461141290919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506110f4600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046001600480549050038154811061120457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061127b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600060046001600480549050038154811061131c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061139057fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061140a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611600565b905092915050565b600080828401905083811015611490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006114c5600c546114b7600b54856114cc90919063ffffffff16565b61155290919063ffffffff16565b9050919050565b6000808314156114df576000905061154c565b60008284029050828482816114f057fe5b0414611547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117876021913960400191505060405180910390fd5b809150505b92915050565b600061159483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116c0565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156115f95750600e546115f7836106a8565b115b9050919050565b60008383111582906116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611672578082015181840152602081019050611657565b50505050905090810190601f16801561169f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808311829061176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611731578082015181840152602081019050611716565b50505050905090810190601f16801561175e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161177857fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220e8b67d174fabb11a6a69f48ab4f3af4ecc0b3237f3c414e12e6d1e18f6b86b8c64736f6c63430007040033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c806378109e54116101f2578063cd2dbfd31161010d578063f2fde38b116100a0578063fce589d81161006f578063fce589d814611624578063fe575a871461164f578063fed0d2a1146116b6578063ffb54a99146116e1576103c3565b8063f2fde38b146114d8578063f708a64f14611529578063f84ba65d14611586578063f887ea40146115e3576103c3565b8063e3763ded116100dc578063e3763ded146113ca578063e96fada21461140b578063ec72d65f1461144c578063f0b37c0414611487576103c3565b8063cd2dbfd31461125e578063d51ed1c8146112af578063dd62ed3e146112fe578063df20fd4914611383576103c3565b806398118cb411610185578063bcc1f3e811610154578063bcc1f3e814611176578063bd9ab537146111a1578063bfe10928146111dc578063ca33e64c1461121d576103c3565b806398118cb41461105e5780639d1944f514611089578063a8aa1b31146110c4578063a9059cbb14611105576103c3565b8063893d20e8116101c1578063893d20e814610ece578063896648c114610f0f5780638e2eee8414610f3c57806395d89b4114610fce576103c3565b806378109e5414610de05780637d1db4a514610e0b57806383ad799414610e3657806386f6c3c114610e61576103c3565b8063313ce567116102e25780635c85974f116102755780636b67c4df116102445780636b67c4df14610cf55780636ddd171314610d2057806370a0823114610d4d578063722b62ad14610db2576103c3565b80635c85974f14610bf35780635e562f3b14610c2e578063617fe0ed14610c6b578063658d4b7f14610c98576103c3565b80634c20dc72116102b15780634c20dc7214610ad757806350db71fb14610b1857806353371be014610b75578063571ac8b014610b8c576103c3565b8063313ce5671461090d578063335f6a431461093b5780633c8e556d146109eb57806344a33fd214610a9c576103c3565b806318160ddd1161035a5780632b112e49116103295780632b112e49146107ec5780632d48e896146108175780632d5945671461085c5780632f54bf6e146108a6576103c3565b806318160ddd146106b05780631da1db5e146106db578063201e79911461071657806323b872dd1461075b576103c3565b8063095ea7b311610396578063095ea7b3146104be5780631161ae391461052f57806317deb7701461058a578063180b0d7e14610685576103c3565b80630445b667146103c857806306fdde03146103f357806309302dc614610483576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd61170e565b6040518082815260200191505060405180910390f35b3480156103ff57600080fd5b50610408611714565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561044857808201518184015260208101905061042d565b50505050905090810190601f1680156104755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048f57600080fd5b506104bc600480360360208110156104a657600080fd5b8101908080359060200190929190505050611751565b005b3480156104ca57600080fd5b50610517600480360360408110156104e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117e5565b60405180821515815260200191505060405180910390f35b34801561053b57600080fd5b506105726004803603604081101561055257600080fd5b8101908080359060200190929190803590602001909291905050506118d7565b60405180821515815260200191505060405180910390f35b34801561059657600080fd5b50610683600480360360608110156105ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156105ea57600080fd5b8201836020820111156105fc57600080fd5b8035906020019184602083028401116401000000008311171561061e57600080fd5b90919293919293908035906020019064010000000081111561063f57600080fd5b82018360208201111561065157600080fd5b8035906020019184602083028401116401000000008311171561067357600080fd5b90919293919293905050506118ec565b005b34801561069157600080fd5b5061069a611e34565b6040518082815260200191505060405180910390f35b3480156106bc57600080fd5b506106c5611e3a565b6040518082815260200191505060405180910390f35b3480156106e757600080fd5b50610714600480360360208110156106fe57600080fd5b8101908080359060200190929190505050611e44565b005b34801561072257600080fd5b506107596004803603604081101561073957600080fd5b810190808035906020019092919080359060200190929190505050611f3d565b005b34801561076757600080fd5b506107d46004803603606081101561077e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fca565b60405180821515815260200191505060405180910390f35b3480156107f857600080fd5b506108016121ca565b6040518082815260200191505060405180910390f35b34801561082357600080fd5b5061085a6004803603604081101561083a57600080fd5b81019080803590602001909291908035906020019092919050505061224c565b005b34801561086857600080fd5b506108a46004803603604081101561087f57600080fd5b81019080803515159060200190929190803560ff169060200190929190505050612360565b005b3480156108b257600080fd5b506108f5600480360360208110156108c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612414565b60405180821515815260200191505060405180910390f35b34801561091957600080fd5b5061092261246d565b604051808260ff16815260200191505060405180910390f35b34801561094757600080fd5b506109e96004803603606081101561095e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561099b57600080fd5b8201836020820111156109ad57600080fd5b803590602001918460208302840111640100000000831117156109cf57600080fd5b909192939192939080359060200190929190505050612476565b005b3480156109f757600080fd5b50610a9a60048036036080811015610a0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612923565b005b348015610aa857600080fd5b50610ad560048036036020811015610abf57600080fd5b8101908080359060200190929190505050612aa8565b005b348015610ae357600080fd5b50610aec612b7f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b2457600080fd5b50610b7360048036036040811015610b3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612ba5565b005b348015610b8157600080fd5b50610b8a612c7b565b005b348015610b9857600080fd5b50610bdb60048036036020811015610baf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d1a565b60405180821515815260200191505060405180910390f35b348015610bff57600080fd5b50610c2c60048036036020811015610c1657600080fd5b8101908080359060200190929190505050612d4d565b005b348015610c3a57600080fd5b50610c6960048036036020811015610c5157600080fd5b81019080803515159060200190929190505050612dd2565b005b348015610c7757600080fd5b50610c80612e6a565b60405180821515815260200191505060405180910390f35b348015610ca457600080fd5b50610cf360048036036040811015610cbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612e7d565b005b348015610d0157600080fd5b50610d0a612f53565b6040518082815260200191505060405180910390f35b348015610d2c57600080fd5b50610d35612f59565b60405180821515815260200191505060405180910390f35b348015610d5957600080fd5b50610d9c60048036036020811015610d7057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f6c565b6040518082815260200191505060405180910390f35b348015610dbe57600080fd5b50610dc7612fb5565b604051808260ff16815260200191505060405180910390f35b348015610dec57600080fd5b50610df5612fc8565b6040518082815260200191505060405180910390f35b348015610e1757600080fd5b50610e20612fce565b6040518082815260200191505060405180910390f35b348015610e4257600080fd5b50610e4b612fd4565b6040518082815260200191505060405180910390f35b348015610e6d57600080fd5b50610ecc600480360360c0811015610e8457600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050612fda565b005b348015610eda57600080fd5b50610ee3613159565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f1b57600080fd5b50610f24613182565b60405180821515815260200191505060405180910390f35b348015610f4857600080fd5b50610fcc60048036036040811015610f5f57600080fd5b8101908080359060200190640100000000811115610f7c57600080fd5b820183602082011115610f8e57600080fd5b80359060200191846020830284011164010000000083111715610fb057600080fd5b9091929391929390803515159060200190929190505050613195565b005b348015610fda57600080fd5b50610fe36132ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611023578082015181840152602081019050611008565b50505050905090810190601f1680156110505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561106a57600080fd5b506110736132eb565b6040518082815260200191505060405180910390f35b34801561109557600080fd5b506110c2600480360360208110156110ac57600080fd5b81019080803590602001909291905050506132f1565b005b3480156110d057600080fd5b506110d9613385565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561111157600080fd5b5061115e6004803603604081101561112857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506133ab565b60405180821515815260200191505060405180910390f35b34801561118257600080fd5b5061118b6133c0565b6040518082815260200191505060405180910390f35b3480156111ad57600080fd5b506111da600480360360208110156111c457600080fd5b81019080803590602001909291905050506133c6565b005b3480156111e857600080fd5b506111f161345a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561122957600080fd5b50611232613480565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561126a57600080fd5b506112ad6004803603602081101561128157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134a6565b005b3480156112bb57600080fd5b506112e8600480360360208110156112d257600080fd5b810190808035906020019092919050505061357b565b6040518082815260200191505060405180910390f35b34801561130a57600080fd5b5061136d6004803603604081101561132157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135ed565b6040518082815260200191505060405180910390f35b34801561138f57600080fd5b506113c8600480360360408110156113a657600080fd5b8101908080351515906020019092919080359060200190929190505050613674565b005b3480156113d657600080fd5b506113df613714565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561141757600080fd5b5061142061373a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561145857600080fd5b506114856004803603602081101561146f57600080fd5b8101908080359060200190929190505050613760565b005b34801561149357600080fd5b506114d6600480360360208110156114aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137e5565b005b3480156114e457600080fd5b50611527600480360360208110156114fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506138bb565b005b34801561153557600080fd5b506115846004803603604081101561154c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613a1d565b005b34801561159257600080fd5b506115e1600480360360408110156115a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613d28565b005b3480156115ef57600080fd5b506115f8613dfe565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561163057600080fd5b50611639613e24565b6040518082815260200191505060405180910390f35b34801561165b57600080fd5b5061169e6004803603602081101561167257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e2a565b60405180821515815260200191505060405180910390f35b3480156116c257600080fd5b506116cb613e4a565b6040518082815260200191505060405180910390f35b3480156116ed57600080fd5b506116f6613e50565b60405180821515815260200191505060405180910390f35b60285481565b60606040518060400160405280600981526020017f486f70707920496e750000000000000000000000000000000000000000000000815250905090565b61175a33613f33565b6117cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e88160055402816117db57fe5b0460078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000826118e38361357b565b11905092915050565b6118f533613f33565b611967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6101f584849050106119c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615e15602d913960400191505060405180910390fd5b818190508484905014611a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615d696028913960400191505060405180910390fd5b6000805b85859050811015611a5557838382818110611a3d57fe5b90506020020135820191508080600101915050611a26565b5080611a6087612f6c565b1015611ad4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000081525060200191505060405180910390fd5b60005b85859050811015611cec57611b2787878784818110611af257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16868685818110611b1b57fe5b90506020020135613f89565b50600f6000878784818110611b3857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611cdf57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96878784818110611beb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600860008a8a87818110611c1857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611cc357600080fd5b505af1925050508015611cd4575060015b611cdd57611cde565b5b5b8080600101915050611ad7565b50600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e2c57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611e1057600080fd5b505af1925050508015611e21575060015b611e2a57611e2b565b5b5b505050505050565b60165481565b6000600554905090565b611e4d33613f33565b611ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484840281611f0c57fe5b049081150290604051600060405180830381858888f19350505050158015611f38573d6000803e3d6000fd5b505050565b611f4633613f33565b611fb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601c8190555080601d819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146121b657612135826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415c9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6121c184848461421c565b90509392505050565b60006122476121fa600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f6c565b612239612228600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f6c565b600554614fbb90919063ffffffff16565b614fbb90919063ffffffff16565b905090565b61225533613f33565b6122c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561234457600080fd5b505af1158015612358573d6000803e3d6000fd5b505050505050565b61236933612414565b6123db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602560006101000a81548160ff02191690831515021790555080602560016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b61247f33612414565b6124f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b610321838390501061254e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615e42602d913960400191505060405180910390fd5b600083839050820290508061256286612f6c565b10156125d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000081525060200191505060405180910390fd5b60005b848490508110156127dc57612617868686848181106125f457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685613f89565b50600f600086868481811061262857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166127cf57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968686848181106126db57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166008600089898781811061270857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156127b357600080fd5b505af19250505080156127c4575060015b6127cd576127ce565b5b5b80806001019150506125d9565b50600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661291c57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561290057600080fd5b505af1925050508015612911575060015b61291a5761291b565b5b5b5050505050565b61292c33613f33565b61299e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b83601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b612ab133613f33565b612b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484840281612b4e57fe5b049081150290604051600060405180830381858888f19350505050158015612b7a573d6000803e3d6000fd5b505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612bae33613f33565b612c20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612c8433612414565b612cf6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001601f60146101000a81548160ff02191690831515021790555043602081905550565b6000612d46827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6117e5565b9050919050565b612d5633613f33565b612dc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060068190555050565b612ddb33612414565b612e4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b602560009054906101000a900460ff1681565b612e8633613f33565b612ef8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b602760009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b602560019054906101000a900460ff1681565b60075481565b60065481565b60115481565b612fe333613f33565b613055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b85601081905550846011819055508360128190555082601381905550816014819055506130c1826130b3856130a5886130978b8d61500590919063ffffffff16565b61500590919063ffffffff16565b61500590919063ffffffff16565b61500590919063ffffffff16565b601581905550806016819055506005601654816130da57fe5b0460155410613151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466565732063616e6e6f74206265206d6f7265207468616e203230250000000081525060200191505060405180910390fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900460ff1681565b61319e33612414565b613210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60005b838390508110156132a85781600b600086868581811061322f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806001019050613213565b50505050565b60606040518060400160405280600681526020017f5241424249540000000000000000000000000000000000000000000000000000815250905090565b60105481565b6132fa33613f33565b61336c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b0811061337b57600080fd5b8060248190555050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006133b833848461421c565b905092915050565b60135481565b6133cf33613f33565b613441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e881600554028161345057fe5b0460068190555050565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6134af33612414565b613521576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006135e66135886121ca565b6135d86135c960026135bb601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612f6c565b613e6390919063ffffffff16565b85613e6390919063ffffffff16565b613ee990919063ffffffff16565b9050919050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61367d33613f33565b6136ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81602760006101000a81548160ff021916908315150217905550806028819055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61376933612414565b6137db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060178190555050565b6137ee33612414565b613860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6138c433612414565b613936576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b613a2633613f33565b613a98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015613b225750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613b2b57600080fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015613c3957602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613c1c57600080fd5b505af1158015613c30573d6000803e3d6000fd5b50505050613d24565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613d0b57600080fd5b505af1158015613d1f573d6000803e3d6000fd5b505050505b5050565b613d3133613f33565b613da3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60175481565b601f60149054906101000a900460ff1681565b600080831415613e765760009050613ee3565b6000828402905082848281613e8757fe5b0414613ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615db66021913960400191505060405180910390fd5b809150505b92915050565b6000613f2b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061508d565b905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000614014826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415c9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140a982600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500590919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000838311158290614209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156141ce5780820151818401526020810190506141b3565b50505050905090810190601f1680156141fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602960009054906101000a900460ff16156142455761423e848484613f89565b9050614fb4565b600a60009054906101000a900460ff161561437157600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156142fe5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b614370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f426c61636b6c697374656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156144155750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561456c57601f60149054906101000a900460ff1661449c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156144ff5750436022546020540110155b801561450d57506021543a10155b1561456b576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156145f257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561464c5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156146a65750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156147005750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561475a5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156147b45750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561480e5750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561487f57600061481e84612f6c565b9050600754838201111561487d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180615dd7603e913960400191505060405180910390fd5b505b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156148e85750602560009054906101000a900460ff165b801561493e5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15614a335742602660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106149da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615d916025913960400191505060405180910390fd5b602560019054906101000a900460ff1660ff164201602660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b614a3d8483615153565b614a45615223565b15614a5357614a526152fa565b5b614adc826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415c9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000614b2a856159f2565b1580614b3c5750614b3a846159f2565b155b614ba057614b9b8584601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614615a49565b614ba2565b825b9050614bf681600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614d7857602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614d5c57600080fd5b505af1925050508015614d6d575060015b614d7657614d77565b5b5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614eb757602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015614e9b57600080fd5b505af1925050508015614eac575060015b614eb557614eb6565b5b5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796024546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015614f2e57600080fd5b505af1925050508015614f3f575060015b614f4857614f49565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b6000614ffd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061415c565b905092915050565b600080828401905083811015615083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083118290615139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156150fe5780820151818401526020810190506150e3565b50505050905090810190601f16801561512b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161514557fe5b049050809150509392505050565b600654811115806151ad5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61521f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5050565b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156152905750602960009054906101000a900460ff16155b80156152a85750602760009054906101000a900460ff165b80156152f55750602854600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602960006101000a81548160ff0219169083151502179055506000615325601c54601d546118d7565b61533157601054615334565b60005b90506000615374600261536660155461535886602854613e6390919063ffffffff16565b613ee990919063ffffffff16565b613ee990919063ffffffff16565b9050600061538d82602854614fbb90919063ffffffff16565b90506060600267ffffffffffffffff811180156153a957600080fd5b506040519080825280602002602001820160405280156153d85781602001602082028036833780820191505090505b50905030816000815181106153e957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061545357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561555657808201518184015260208101905061553b565b505050509050019650505050505050600060405180830381600087803b15801561557f57600080fd5b505af1158015615593573d6000803e3d6000fd5b5050505060006155ac8247614fbb90919063ffffffff16565b905060006155d86155c7600289613ee990919063ffffffff16565b601554614fbb90919063ffffffff16565b905060006156146002615606846155f88c88613e6390919063ffffffff16565b613ee990919063ffffffff16565b613ee990919063ffffffff16565b9050600061563f8361563160115487613e6390919063ffffffff16565b613ee990919063ffffffff16565b9050600061566a8461565c60125488613e6390919063ffffffff16565b613ee990919063ffffffff16565b905060006156958561568760135489613e6390919063ffffffff16565b613ee990919063ffffffff16565b9050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561570157600080fd5b505af193505050508015615713575060015b61571c5761571d565b5b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d80600081146157a4576040519150601f19603f3d011682016040523d82523d6000602084013e6157a9565b606091505b50509050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d8060008114615832576040519150601f19603f3d011682016040523d82523d6000602084013e615837565b606091505b5050809150506000905060008b11156159c957601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561593657600080fd5b505af115801561594a573d6000803e3d6000fd5b50505050506040513d606081101561596157600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051808381526020018281526020019250505060405180910390a15b5050505050505050505050506000602960006101000a81548160ff021916908315150217905550565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008082615a58576064615a5c565b6017545b90506000615a9e606460165402615a9084615a826015548a613e6390919063ffffffff16565b613e6390919063ffffffff16565b613ee990919063ffffffff16565b90506000615acb601554615abd60145485613e6390919063ffffffff16565b613ee990919063ffffffff16565b90506000615ae28284614fbb90919063ffffffff16565b9050615b3681600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500590919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615bed8260086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500590919063ffffffff16565b60086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36000821115615d4857601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b615d5b8388614fbb90919063ffffffff16565b945050505050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d61782061697264726f70206c696d69742069732038303020616464726573736573a26469706673582212203f4e9c65310911faeced5eb3a8b072810b85a3ee7fbaac942d13a94a5558922c64736f6c63430007040033

Deployed Bytecode Sourcemap

10780:17109:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12898:55;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14322:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15628:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14744:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26051:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26231:875;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12080:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14052:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20060:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25196:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15256:364;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25726:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25387:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20825:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2823:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14146:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27110:714;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24638:386;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20286:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12255:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23895:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20661:117;;;;;;;;;;;;;:::i;:::-;;14968:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15993:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23304:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12714:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23631:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11848:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12861:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14492:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12759:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11293:61;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11228:58;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11807:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24033:597;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14408:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11478:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23411:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14232:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11766:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25578:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12451:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15092:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11889:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15812:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12629:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12170:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2618:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25876:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14603:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25032:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12297:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12213:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20509:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2718:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3050:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22949:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23759:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12420:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11930:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11517:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12125:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12479:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12898:55;;;;:::o;14322:80::-;14370:13;14394:5;;;;;;;;;;;;;;;;;14387:12;;14322:80;:::o;15628:178::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15794:4:::1;15766:23;15751:12;;:38;15750:48;;;;;;15732:15;:66;;;;15628:178:::0;:::o;14744:216::-;14819:4;14871:6;14836:11;:23;14848:10;14836:23;;;;;;;;;;;;;;;:32;14860:7;14836:32;;;;;;;;;;;;;;;:41;;;;14914:7;14893:37;;14902:10;14893:37;;;14923:6;14893:37;;;;;;;;;;;;;;;;;;14948:4;14941:11;;14744:216;;;;:::o;26051:150::-;26131:4;26187:6;26155:29;26175:8;26155:19;:29::i;:::-;:38;26148:45;;26051:150;;;;:::o;26231:875::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26375:3:::1;26356:9;;:16;;:22;26348:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26462:6;;:13;;26442:9;;:16;;:33;26434:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26528:12;26557:6:::0;26553:82:::1;26571:9;;:16;;26567:1;:20;26553:82;;;26618:6;;26625:1;26618:9;;;;;;;;;;;;;26611:4;:16;26604:23;;26589:3;;;;;;;26553:82;;;;26670:4;26651:15;26661:4;26651:9;:15::i;:::-;:23;;26643:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;26719:6;26715:250;26733:9;;:16;;26729:1;:20;26715:250;;;26766:43;26781:4;26786:9;;26796:1;26786:12;;;;;;;;;;;;;;;26799:6;;26806:1;26799:9;;;;;;;;;;;;;26766:14;:43::i;:::-;;26824:16;:30;26841:9;;26851:1;26841:12;;;;;;;;;;;;;;;26824:30;;;;;;;;;;;;;;;;;;;;;;;;;26820:138;;26875:11;;;;;;;;;;;:20;;;26896:9;;26906:1;26896:12;;;;;;;;;;;;;;;26910:9;:23;26920:9;;26930:1;26920:12;;;;;;;;;;;;;;;26910:23;;;;;;;;;;;;;;;;26875:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26871:75;;;;;;26820:138;26751:3;;;;;;;26715:250;;;;27002:16;:22;27019:4;27002:22;;;;;;;;;;;;;;;;;;;;;;;;;26998:105;;27041:11;;;;;;;;;;;:20;;;27062:4;27068:9;:15;27078:4;27068:15;;;;;;;;;;;;;;;;27041:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27037:59;;;;;;26998:105;2601:1;26231:875:::0;;;;;:::o;12080:36::-;;;;:::o;14052:88::-;14107:7;14125:12;;14118:19;;14052:88;:::o;20060:218::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20144:17:::1;20164:21;20144:41;;20204:20;;;;;;;;;;;20196:38;;:74;20266:3;20247:16;20235:9;:28;:34;;;;;;20196:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;2601:1;20060:218:::0;:::o;25196:183::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25312:7:::1;25294:15;:25;;;;25359:12;25330:26;:41;;;;25196:183:::0;;:::o;15256:364::-;15356:4;15419:2;15376:11;:19;15388:6;15376:19;;;;;;;;;;;;;;;:31;15396:10;15376:31;;;;;;;;;;;;;;;;:46;15373:180;;15472:69;15508:6;15472:69;;;;;;;;;;;;;;;;;:11;:19;15484:6;15472:19;;;;;;;;;;;;;;;:31;15492:10;15472:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;15438:11;:19;15450:6;15438:19;;;;;;;;;;;;;;;:31;15458:10;15438:31;;;;;;;;;;;;;;;:103;;;;15373:180;15572:40;15586:6;15594:9;15605:6;15572:13;:40::i;:::-;15565:47;;15256:364;;;;;:::o;25726:142::-;25779:7;25806:54;25844:15;25854:4;;;;;;;;;;;25844:9;:15::i;:::-;25806:33;25823:15;25833:4;;;;;;;;;;;25823:9;:15::i;:::-;25806:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;25799:61;;25726:142;:::o;25387:183::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25497:11:::1;;;;;;;;;;;:35;;;25533:10;25545:16;25497:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25387:183:::0;;:::o;20825:164::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20930:7:::1;20909:18;;:28;;;;;;;;;;;;;;;;;;20972:9;20948:21;;:33;;;;;;;;;;;;;;;;;;20825:164:::0;;:::o;2823:103::-;2878:4;2913:5;;;;;;;;;;;2902:16;;:7;:16;;;2895:23;;2823:103;;;:::o;14146:80::-;14198:5;11158:1;14207:16;;14146:80;:::o;27110:714::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27254:3:::1;27235:9;;:16;;:22;27227:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27315:12;27339:9;;:16;;27330:6;:25;27315:40;;27391:4;27372:15;27382:4;27372:9;:15::i;:::-;:23;;27364:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;27440:6;27436:247;27454:9;;:16;;27450:1;:20;27436:247;;;27487:40;27502:4;27507:9;;27517:1;27507:12;;;;;;;;;;;;;;;27520:6;27487:14;:40::i;:::-;;27542:16;:30;27559:9;;27569:1;27559:12;;;;;;;;;;;;;;;27542:30;;;;;;;;;;;;;;;;;;;;;;;;;27538:138;;27593:11;;;;;;;;;;;:20;;;27614:9;;27624:1;27614:12;;;;;;;;;;;;;;;27628:9;:23;27638:9;;27648:1;27638:12;;;;;;;;;;;;;;;27628:23;;;;;;;;;;;;;;;;27593:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27589:75;;;;;;27538:138;27472:3;;;;;;;27436:247;;;;27720:16;:22;27737:4;27720:22;;;;;;;;;;;;;;;;;;;;;;;;;27716:105;;27759:11;;;;;;;;;;;:20;;;27780:4;27786:9;:15;27796:4;27786:15;;;;;;;;;;;;;;;;27759:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27755:59;;;;;;27716:105;2501:1;27110:714:::0;;;;:::o;24638:386::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24839:22:::1;24815:21;;:46;;;;;;;;;;;;;;;;;;24895:21;24872:20;;:44;;;;;;;;;;;;;;;;;;24950:21;24927:20;;:44;;;;;;;;;;;;;;;;;;25000:16;24982:15;;:34;;;;;;;;;;;;;;;;;;24638:386:::0;;;;:::o;20286:215::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20377:17:::1;20397:21;20377:41;;20437:10;20429:28;;:64;20489:3;20470:16;20458:9;:28;:34;;;;;;20429:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;2601:1;20286:215:::0;:::o;12255:35::-;;;;;;;;;;;;;:::o;23895:130::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24011:6:::1;23984:16;:24;24001:6;23984:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23895:130:::0;;:::o;20661:117::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20729:4:::1;20715:11;;:18;;;;;;;;;;;;;;;;;;20758:12;20744:11;:26;;;;20661:117::o:0;14968:116::-;15023:4;15047:29;15055:7;15072:2;15047:7;:29::i;:::-;15040:36;;14968:116;;;:::o;15993:96::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16075:6:::1;16060:12;:21;;;;15993:96:::0;:::o;23304:99::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23388:7:::1;23372:13;;:23;;;;;;;;;;;;;;;;;;23304:99:::0;:::o;12714:38::-;;;;;;;;;;;;;:::o;23631:120::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23737:6:::1;23715:11;:19;23727:6;23715:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23631:120:::0;;:::o;11848:34::-;;;;:::o;12861:30::-;;;;;;;;;;;;;:::o;14492:105::-;14558:7;14576:9;:18;14586:7;14576:18;;;;;;;;;;;;;;;;14569:25;;14492:105;;;:::o;12759:39::-;;;;;;;;;;;;;:::o;11293:61::-;;;;:::o;11228:58::-;;;;:::o;11807:34::-;;;;:::o;24033:597::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24232:13:::1;24217:12;:28;;;;24272:14;24256:13;:30;;;;24312:13;24297:12;:28;;;;24351:13;24336:12;:28;;;;24385:8;24375:7;:18;;;;24415:85;24491:8;24415:71;24472:13;24415:52;24453:13;24415:33;24433:14;24415:13;:17;;:33;;;;:::i;:::-;:37;;:52;;;;:::i;:::-;:56;;:71;;;;:::i;:::-;:75;;:85;;;;:::i;:::-;24404:8;:96;;;;24528:15;24511:14;:32;;;;24588:1;24573:14;;:16;;;;;;24562:8;;:27;24554:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24033:597:::0;;;;;;:::o;14408:78::-;14460:7;14478:5;;;;;;;;;;;14471:12;;14408:78;:::o;11478:32::-;;;;;;;;;;;;;:::o;23411:210::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23513:9:::1;23508:106;23528:9;;:16;;23524:1;:20;23508:106;;;23596:6;23566:13;:27;23580:9;;23590:1;23580:12;;;;;;;;;;;;;;;23566:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;23546:3;;;;;23508:106;;;;23411:210:::0;;;:::o;14232:84::-;14282:13;14306:7;;;;;;;;;;;;;;;;;14299:14;;14232:84;:::o;11766:34::-;;;;:::o;25578:136::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25668:6:::1;25662:3;:12;25654:21;;;::::0;::::1;;25703:3;25686:14;:20;;;;25578:136:::0;:::o;12451:19::-;;;;;;;;;;;;;:::o;15092:156::-;15172:4;15196:44;15210:10;15222:9;15233:6;15196:13;:44::i;:::-;15189:51;;15092:156;;;;:::o;11889:34::-;;;;:::o;15812:173::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15973:4:::1;15944:24;15929:12;;:39;15928:49;;;;;;15913:12;:64;;;;15812:173:::0;:::o;12629:38::-;;;;;;;;;;;;;:::o;12170:36::-;;;;;;;;;;;;;:::o;2618:92::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2698:4:::1;2676:14:::0;:19:::1;2691:3;2676:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2618:92:::0;:::o;25876:167::-;25944:7;25971:64;26012:22;:20;:22::i;:::-;25971:36;25984:22;26004:1;25984:15;25994:4;;;;;;;;;;;25984:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;25971:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;25964:71;;25876:167;;;:::o;14603:133::-;14687:7;14705:11;:19;14717:6;14705:19;;;;;;;;;;;;;;;:28;14725:7;14705:28;;;;;;;;;;;;;;;;14698:35;;14603:133;;;;:::o;25032:156::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25138:8:::1;25124:11;;:22;;;;;;;;;;;;;;;;;;25173:7;25157:13;:23;;;;25032:156:::0;;:::o;12297:30::-;;;;;;;;;;;;;:::o;12213:35::-;;;;;;;;;;;;;:::o;20509:121::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20604:10:::1;20587:14;:27;;;;20509:121:::0;:::o;2718:97::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2802:5:::1;2780:14;:19;2795:3;2780:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2718:97:::0;:::o;3050:173::-;2469:19;2477:10;2469:7;:19::i;:::-;2461:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3134:3:::1;3126:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3170:4;3148:14:::0;:19:::1;3163:3;3148:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3190:25;3211:3;3190:25;;;;;;;;;;;;;;;;;;;;3050:173:::0;:::o;22949:347::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23064:4:::1;23046:23;;:6;:23;;;;:41;;;;;23083:4;;;;;;;;;;;23073:14;;:6;:14;;;;23046:41;23038:50;;;::::0;::::1;;23126:6;23099:16;:24;23116:6;23099:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23146:6;23143:146;;;23168:11;;;;;;;;;;;:20;;;23189:6;23197:1;23168:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23143:146;;;23230:11;;;;;;;;;;;:20;;;23251:6;23259:9;:17;23269:6;23259:17;;;;;;;;;;;;;;;;23230:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23143:146;22949:347:::0;;:::o;23759:128::-;2559:24;2572:10;2559:12;:24::i;:::-;2551:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23873:6:::1;23847:15;:23;23863:6;23847:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;23759:128:::0;;:::o;12420:24::-;;;;;;;;;;;;;:::o;11930:34::-;;;;:::o;11517:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;12125:36::-;;;;:::o;12479:31::-;;;;;;;;;;;;;:::o;659:250::-;717:7;746:1;741;:6;737:47;;;771:1;764:8;;;;737:47;796:9;812:1;808;:5;796:17;;841:1;836;832;:5;;;;;;:10;824:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;900:1;893:8;;;659:250;;;;;:::o;915:132::-;973:7;1000:39;1004:1;1007;1000:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;993:46;;915:132;;;;:::o;2934:108::-;2991:4;3015:14;:19;3030:3;3015:19;;;;;;;;;;;;;;;;;;;;;;;;;3008:26;;2934:108;;;:::o;18432:330::-;18525:4;18562:53;18584:6;18562:53;;;;;;;;;;;;;;;;;:9;:17;18572:6;18562:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18542:9;:17;18552:6;18542:17;;;;;;;;;;;;;;;:73;;;;18649:32;18674:6;18649:9;:20;18659:9;18649:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18626:9;:20;18636:9;18626:20;;;;;;;;;;;;;;;:55;;;;18714:9;18697:35;;18706:6;18697:35;;;18725:6;18697:35;;;;;;;;;;;;;;;;;;18750:4;18743:11;;18432:330;;;;;:::o;461:192::-;547:7;580:1;575;:6;;583:12;567:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:9;623:1;619;:5;607:17;;644:1;637:8;;;461:192;;;;;:::o;16099:2321::-;16191:4;16211:6;;;;;;;;;;;16208:63;;;16227:41;16242:6;16250:9;16261:6;16227:14;:41::i;:::-;16220:48;;;;16208:63;16308:13;;;;;;;;;;;16305:134;;;16346:13;:21;16360:6;16346:21;;;;;;;;;;;;;;;;;;;;;;;;;16345:22;:51;;;;;16372:13;:24;16386:9;16372:24;;;;;;;;;;;;;;;;;;;;;;;;;16371:25;16345:51;16337:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16305:134;16455:14;:22;16470:6;16455:22;;;;;;;;;;;;;;;;;;;;;;;;;16454:23;:53;;;;;16482:14;:25;16497:9;16482:25;;;;;;;;;;;;;;;;;;;;;;;;;16481:26;16454:53;16451:278;;;16531:11;;;;;;;;;;;16523:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16594:4;;;;;;;;;;;16584:14;;:6;:14;;;:71;;;;;16643:12;16616:23;;16602:11;;:37;:53;;16584:71;:99;;;;;16674:9;;16659:11;:24;;16584:99;16581:137;;;16712:4;16685:13;:24;16699:9;16685:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;16581:137;16451:278;16748:14;:22;16763:6;16748:22;;;;;;;;;;;;;;;;;;;;;;;;;16747:23;:53;;;;;16795:4;16774:26;;:9;:26;;;;16747:53;:84;;;;;16826:4;;;;;;;;;;;16805:26;;:9;:26;;;;16747:84;:105;;;;;16848:4;;;;;;;;;;;16835:17;;:9;:17;;;;16747:105;:142;;;;;16869:20;;;;;;;;;;;16856:33;;:9;:33;;;;16747:142;:179;;;;;16906:20;;;;;;;;;;;16893:33;;:9;:33;;;;16747:179;:218;;;;;16944:21;;;;;;;;;;;16931:34;;:9;:34;;;;16747:218;:250;;;;;16982:15;;;;;;;;;;;16969:28;;:9;:28;;;;16747:250;16743:442;;;17013:18;17034:20;17044:9;17034;:20::i;:::-;17013:41;;17102:15;;17091:6;17078:10;:19;17077:40;;17069:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16743:442;;17219:4;;;;;;;;;;;17209:14;;:6;:14;;;:49;;;;;17240:18;;;;;;;;;;;17209:49;:94;;;;;17276:16;:27;17293:9;17276:27;;;;;;;;;;;;;;;;;;;;;;;;;17275:28;17209:94;17205:299;;;17355:15;17328:13;:24;17342:9;17328:24;;;;;;;;;;;;;;;;:42;17320:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17471:21;;;;;;;;;;;17453:39;;:15;:39;17426:13;:24;17440:9;17426:24;;;;;;;;;;;;;;;:66;;;;17205:299;17557:28;17570:6;17578;17557:12;:28::i;:::-;17601:16;:14;:16::i;:::-;17598:35;;;17620:10;:8;:10::i;:::-;17598:35;17692:53;17714:6;17692:53;;;;;;;;;;;;;;;;;:9;:17;17702:6;17692:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;17672:9;:17;17682:6;17672:17;;;;;;;;;;;;;;;:73;;;;17758:22;17785:21;17799:6;17785:13;:21::i;:::-;17784:22;:51;;;;17811:24;17825:9;17811:13;:24::i;:::-;17810:25;17784:51;17783:108;;17848:43;17856:6;17864;17885:4;;;;;;;;;;;17872:17;;:9;:17;;;17848:7;:43::i;:::-;17783:108;;;17839:6;17783:108;17758:133;;17925:40;17950:14;17925:9;:20;17935:9;17925:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;17902:9;:20;17912:9;17902:20;;;;;;;;;;;;;;;:63;;;;18011:16;:24;18028:6;18011:24;;;;;;;;;;;;;;;;;;;;;;;;;18007:119;;18056:11;;;;;;;;;;;:20;;;18077:6;18085:9;:17;18095:6;18085:17;;;;;;;;;;;;;;;;18056:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18052:63;;;;;;18007:119;18142:16;:27;18159:9;18142:27;;;;;;;;;;;;;;;;;;;;;;;;;18138:129;;18190:11;;;;;;;;;;;:20;;;18211:9;18222;:20;18232:9;18222:20;;;;;;;;;;;;;;;;18190:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18186:69;;;;;;18138:129;18283:11;;;;;;;;;;;:19;;;18303:14;;18283:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18279:51;;;;;;18364:9;18347:43;;18356:6;18347:43;;;18375:14;18347:43;;;;;;;;;;;;;;;;;;18408:4;18401:11;;;16099:2321;;;;;;:::o;319:136::-;377:7;404:43;408:1;411;404:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;397:50;;319:136;;;;:::o;132:181::-;190:7;210:9;226:1;222;:5;210:17;;251:1;246;:6;;238:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;304:1;297:8;;;132:181;;;;:::o;1053:189::-;1139:7;1171:1;1167;:5;1174:12;1159:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1198:9;1214:1;1210;:5;;;;;;1198:17;;1233:1;1226:8;;;1053:189;;;;;:::o;18770:166::-;18867:12;;18857:6;:22;;:49;;;;18883:15;:23;18899:6;18883:23;;;;;;;;;;;;;;;;;;;;;;;;;18857:49;18849:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18770:166;;:::o;19855:197::-;19904:4;19942;;;;;;;;;;;19928:18;;:10;:18;;;;:38;;;;;19960:6;;;;;;;;;;;19959:7;19928:38;:62;;;;;19979:11;;;;;;;;;;;19928:62;:116;;;;;20031:13;;20003:9;:24;20021:4;20003:24;;;;;;;;;;;;;;;;:41;;19928:116;19921:123;;19855:197;:::o;20997:1942::-;13009:4;13000:6;;:13;;;;;;;;;;;;;;;;;;21046:27:::1;21076:60;21092:15;;21109:26;;21076:15;:60::i;:::-;:79;;21143:12;;21076:79;;;21139:1;21076:79;21046:109;;21166:23;21192:59;21249:1;21192:52;21235:8;;21192:38;21210:19;21192:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;21166:85;;21262:20;21285:34;21303:15;21285:13;;:17;;:34;;;;:::i;:::-;21262:57;;21332:21;21370:1;21356:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21332:40;;21401:4;21383;21388:1;21383:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21427:4;;;;;;;;;;;21417;21422:1;21417:7;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;21444:21;21468;21444:45;;21502:6;;;;;;;;;;;:57;;;21574:12;21601:1;21617:4;21644;21664:15;21502:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21703:17;21723:40;21749:13;21723:21;:25;;:40;;;;:::i;:::-;21703:60;;21776:19;21798:40;21811:26;21835:1;21811:19;:23;;:26;;;;:::i;:::-;21798:8;;:12;;:40;;;;:::i;:::-;21776:62;;21859:26;21888:58;21944:1;21888:51;21927:11;21888:34;21902:19;21888:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;21859:87;;21957:27;21987:45;22020:11;21987:28;22001:13;;21987:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;21957:75;;22043:26;22072:44;22104:11;22072:27;22086:12;;22072:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;22043:73;;22127:20;22150:44;22182:11;22150:27;22164:12;;22150:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;22127:67;;22211:11;;;;;;;;;;;:19;;;22238;22211:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22207:65;;;;;;22283:15;22311:20;;;;;;;;;;;22303:34;;22345:18;22370:5;22303:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22282:98;;;22415:20;;;;;;;;;;;22407:34;;22449:12;22468:5;22407:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22391:87;;;;;22552:5;22539:18;;22591:1;22573:15;:19;22570:362;;;22608:6;;;;;;;;;;;:22;;;22638:18;22684:4;22708:15;22742:1;22762::::0;22782:21:::1;;;;;;;;;;;22822:15;22608:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22872:48;22884:18;22904:15;22872:48;;;;;;;;;;;;;;;;;;;;;;;;22570:362;13015:1;;;;;;;;;;;;13027:5:::0;13018:6;;:14;;;;;;;;;;;;;;;;;;20997:1942::o;18944:114::-;19006:4;19031:11;:19;19043:6;19031:19;;;;;;;;;;;;;;;;;;;;;;;;;19030:20;19023:27;;18944:114;;;:::o;19066:781::-;19146:7;19176:18;19197:6;:29;;19223:3;19197:29;;;19206:14;;19197:29;19176:50;;19237:17;19257:62;19315:3;19298:14;;:20;19257:36;19282:10;19257:20;19268:8;;19257:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;19237:82;;19332:18;19353:36;19380:8;;19353:22;19367:7;;19353:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;19332:57;;19400:22;19425:25;19439:10;19425:9;:13;;:25;;;;:::i;:::-;19400:50;;19490:44;19519:14;19490:9;:24;19508:4;19490:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;19463:9;:24;19481:4;19463:24;;;;;;;;;;;;;;;:71;;;;19574:42;19605:10;19574:9;:26;19584:15;;;;;;;;;;;19574:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;19545:9;:26;19555:15;;;;;;;;;;;19545:26;;;;;;;;;;;;;;;:71;;;;19657:4;19632:47;;19641:6;19632:47;;;19664:14;19632:47;;;;;;;;;;;;;;;;;;19716:1;19703:10;:14;19700:99;;;19755:15;;;;;;;;;;;19738:45;;19747:6;19738:45;;;19772:10;19738:45;;;;;;;;;;;;;;;;;;19700:99;19818:21;19829:9;19818:6;:10;;:21;;;;:::i;:::-;19811:28;;;;;;19066:781;;;;;:::o

Swarm Source

ipfs://e8b67d174fabb11a6a69f48ab4f3af4ecc0b3237f3c414e12e6d1e18f6b86b8c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.