CRO Price: $0.08 (+1.19%)

Token

MadRevive (WEMAD)

Overview

Max Total Supply

10,000,000 WEMAD

Holders

82

Market

Price

$0.00 @ 0.000000 CRO

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
197,496.965240597 WEMAD

Value
$0.00
0x18f3bd138b6a272180a5c173ffe25288de9fc366
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
MadRevive

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 cronoscan.com on 2023-01-17
*/

//TELEGRAM: https://t.me/Madrevive

//SPDX-License-Identifier: MIT

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

interface IBEP20 {
    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);
}

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

    IDEXRouter router;
    address routerAddress = 0x145677FC4d9b8F19B5D56d1820c48e0443049a30; // MMF Router
    IBEP20 RewardToken = IBEP20(0xf8b9facB7B4410F5703Eb29093302f2933D6E1Aa); // MSHARE Token

    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 = 1 minutes ;
    uint256 public minDistribution = 1 / 100000 * (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(routerAddress);
        _token = msg.sender;
    }

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

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

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

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

        totalShares = totalShares.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 = RewardToken.balanceOf(address(this));

        address[] memory path = new address[](4);
        path[0] = router.WETH();
        path[1] = address(0x97749c9B61F878a880DfE312d2594AE07AEd7656);
        path[2] = address(0x654bAc3eC77d6dB497892478f854cF6e8245DcA9);
        path[3] = address(RewardToken);

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

        uint256 amount = RewardToken.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 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

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

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

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

            gasUsed = gasUsed.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);
            RewardToken.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 {

        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        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();
    }
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

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

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

contract MadRevive is IBEP20, Auth {
    
    using SafeMath for uint256;

    string constant _name = "MadRevive";
    string constant _symbol = "WEMAD";
    uint8 constant _decimals = 9;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    
    address routerAddress = 0x145677FC4d9b8F19B5D56d1820c48e0443049a30; // MMF Router
    address RewardToken = 0xf8b9facB7B4410F5703Eb29093302f2933D6E1Aa; // MSHARE Token

    uint256 _totalSupply = 10 * 10**6 * (10 ** _decimals);
    uint256 public _maxTxAmount = 2 * 10**5 * (10 ** _decimals);
    uint256 public _walletMax = 2 * 10**5 * (10 ** _decimals);
    
    bool public restrictWhales = true;

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

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

    uint256 public liquidityFee = 2;
    uint256 public marketingFee =12;
    uint256 public rewardsFee = 1;
    uint256 public extraFeeOnSell = 23;

    uint256 public totalFee = 12;
    uint256 public totalFeeIfSelling = 35;

    address public autoLiquidityReceiver;
    address public marketingWallet;
    address public devWallet;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool public tradingOpen = false;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 500000;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = 1 * 10**4 * (10 ** _decimals);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

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

        dividendDistributor = new DividendDistributor(address(router));

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

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

        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        // NICE!
        autoLiquidityReceiver = 0x4c70e03CffB971C1361fA90C16B4F7419D92084B;
        marketingWallet = 0x4c70e03CffB971C1361fA90C16B4F7419D92084B;
        devWallet = 0x1bf94AcE856a08c4d011F5Fdcd8E3951d51C63B9;
        
        totalFee = liquidityFee.add(marketingFee).add(rewardsFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);

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

    receive() external payable { }

    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function getOwner() external view override returns (address) { return owner; }

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

    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 launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function changeTxLimit(uint256 newLimit) external authorized {
        _maxTxAmount = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external authorized {
        _walletMax  = newLimit;
    }

    function changeRestrictWhales(bool newValue) external authorized {
       restrictWhales = newValue;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

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

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

    function changeFees(uint256 newLiqFee, uint256 newRewardFee, uint256 newMarketingFee, uint256 newExtraSellFee) external authorized {
        liquidityFee = newLiqFee;
        rewardsFee = newRewardFee;
        marketingFee = newMarketingFee;
        extraFeeOnSell = newExtraSellFee;
        
        totalFee = liquidityFee.add(marketingFee).add(rewardsFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);
    }

    function changeFeeReceivers(address newLiquidityReceiver, address newMarketingWallet, address newDevWallet) external authorized {
        autoLiquidityReceiver = newLiquidityReceiver;
        marketingWallet = newMarketingWallet;
        devWallet = newDevWallet;
    }

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

    function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 1000000);
        distributorGas = gas;
    }
    
    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 _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        
        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen, "Trading not open yet");
        }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");

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

        if(!launched() && recipient == pair) {
            require(_balances[sender] > 0);
            launch();
        }

        // Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        if(!isTxLimitExempt[recipient] && restrictWhales)
        {
            require(_balances[recipient].add(amount) <= _walletMax);
        }

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

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

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

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

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

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

        return amount.sub(feeAmount);
    }

    function tradingStatus(bool newStatus) public onlyOwner {
        tradingOpen = newStatus;
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

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

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

        uint256 amountBNB = address(this).balance;

        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(rewardsFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.sub(amountBNBLiquidity).sub(amountBNBReflection);

        try dividendDistributor.deposit{value: amountBNBReflection}() {} catch {}
        
        uint256 marketingShare = amountBNBMarketing.mul(3).div(4);
        uint256 devShare = amountBNBMarketing.sub(marketingShare);
        
        (bool tmpSuccess,) = payable(marketingWallet).call{value: marketingShare, gas: 30000}("");
        (bool tmpSuccess1,) = payable(devWallet).call{value: devShare, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;
        tmpSuccess1 = false;

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

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"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":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newExtraSellFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly","type":"bool"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","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":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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"}]

608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073145677fc4d9b8f19b5d56d1820c48e0443049a30600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f8b9facb7b4410f5703eb29093302f2933d6e1aa600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960ff16600a0a6298968002600655600960ff16600a0a62030d4002600755600960ff16600a0a62030d40026008556001600960006101000a81548160ff0219169083151502179055506002600f55600c60105560016011556017601255600c60135560236014556000601b60006101000a81548160ff0219169083151502179055506207a120601c556001601d60016101000a81548160ff0219169083151502179055506000601d60026101000a81548160ff021916908315150217905550600960ff16600a0a61271002601e553480156200021057600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037657600080fd5b505afa1580156200038b573d6000803e3d6000fd5b505050506040513d6020811015620003a257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043757600080fd5b505afa1580156200044c573d6000803e3d6000fd5b505050506040513d60208110156200046357600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004df57600080fd5b505af1158015620004f4573d6000803e3d6000fd5b505050506040513d60208110156200050b57600080fd5b8101908080519060200190929190505050601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620006509062000d0d565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801580156200068d573d6000803e3d6000fd5b50601b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550734c70e03cffb971c1361fa90c16b4f7419d92084b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734c70e03cffb971c1361fa90c16b4f7419d92084b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731bf94ace856a08c4d011f5fdcd8e3951d51c63b9601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000ba660115462000b92601054600f5462000c8460201b620028a61790919060201c565b62000c8460201b620028a61790919060201c565b60138190555062000bca60125460135462000c8460201b620028a61790919060201c565b601481905550600654600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000d1b565b60008082840190508381101562000d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b611b8f8062004ea983390190565b61417e8062000d2b6000396000f3fe6080604052600436106103035760003560e01c80637db1342c11610190578063bf56b371116100dc578063e66b1d1e11610095578063f887ea401161006f578063f887ea4014611128578063fabe628314611169578063fe9fbb80146111c6578063ffb54a991461122d5761030a565b8063e66b1d1e14611049578063f0b37c0414611086578063f2fde38b146110d75761030a565b8063bf56b37114610ec5578063ca33e64c14610ef0578063ca987b0e14610f31578063d920334e14610f5c578063da00097d14610f97578063dd62ed3e14610fc45761030a565b806398118cb411610149578063a9059cbb11610123578063a9059cbb14610d7d578063a9f7864b14610dee578063b6a5d7de14610e33578063bad3ea6a14610e845761030a565b806398118cb414610cb4578063a3a2e89e14610cdf578063a8aa1b3114610d3c5761030a565b80637db1342c14610ad5578063807c2d9c14610b10578063893d20e814610b3b5780638b42507f14610b7c5780638ea5220f14610be357806395d89b4114610c245761030a565b80633f4218e01161024f578063650c42261161020857806370a08231116101e257806370a08231146109a757806375f0a87414610a0c578063773fcb5c14610a4d5780637d1db4a514610aaa5761030a565b8063650c4226146108f857806369cf17d4146109515780636b67c4df1461097c5761030a565b80633f4218e01461072e5780634355855a1461079557806344de2e4c146107fc578063479f66d8146108295780634a74bb0214610864578063571ac8b0146108915761030a565b806323b872dd116102bc5780632f54bf6e116102965780632f54bf6e146105b5578063313ce5671461061c578063315dca291461064a57806334c70889146106db5761030a565b806323b872dd146104ce5780632b112e491461055f5780632bb14e1d1461058a5761030a565b80630445b6671461030f57806306fdde031461033a578063095ea7b3146103ca5780630d2959801461043b57806318160ddd146104785780631df4ccfc146104a35761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b5061032461125a565b6040518082815260200191505060405180910390f35b34801561034657600080fd5b5061034f611260565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038f578082015181840152602081019050610374565b50505050905090810190601f1680156103bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d657600080fd5b50610423600480360360408110156103ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061129d565b60405180821515815260200191505060405180910390f35b34801561044757600080fd5b506104766004803603602081101561045e57600080fd5b8101908080351515906020019092919050505061138f565b005b34801561048457600080fd5b5061048d611427565b6040518082815260200191505060405180910390f35b3480156104af57600080fd5b506104b8611431565b6040518082815260200191505060405180910390f35b3480156104da57600080fd5b50610547600480360360608110156104f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611437565b60405180821515815260200191505060405180910390f35b34801561056b57600080fd5b50610574611637565b6040518082815260200191505060405180910390f35b34801561059657600080fd5b5061059f6116b9565b6040518082815260200191505060405180910390f35b3480156105c157600080fd5b50610604600480360360208110156105d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116bf565b60405180821515815260200191505060405180910390f35b34801561062857600080fd5b50610631611718565b604051808260ff16815260200191505060405180910390f35b34801561065657600080fd5b506106d96004803603606081101561066d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611721565b005b3480156106e757600080fd5b5061072c600480360360608110156106fe57600080fd5b8101908080351515906020019092919080359060200190929190803515159060200190929190505050611864565b005b34801561073a57600080fd5b5061077d6004803603602081101561075157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061191f565b60405180821515815260200191505060405180910390f35b3480156107a157600080fd5b506107e4600480360360208110156107b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061193f565b60405180821515815260200191505060405180910390f35b34801561080857600080fd5b5061081161195f565b60405180821515815260200191505060405180910390f35b34801561083557600080fd5b506108626004803603602081101561084c57600080fd5b8101908080359060200190929190505050611972565b005b34801561087057600080fd5b50610879611a06565b60405180821515815260200191505060405180910390f35b34801561089d57600080fd5b506108e0600480360360208110156108b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a19565b60405180821515815260200191505060405180910390f35b34801561090457600080fd5b5061094f6004803603608081101561091b57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611a4c565b005b34801561095d57600080fd5b50610966611b37565b6040518082815260200191505060405180910390f35b34801561098857600080fd5b50610991611b3d565b6040518082815260200191505060405180910390f35b3480156109b357600080fd5b506109f6600480360360208110156109ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b43565b6040518082815260200191505060405180910390f35b348015610a1857600080fd5b50610a21611b8c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a5957600080fd5b50610aa860048036036040811015610a7057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611bb2565b005b348015610ab657600080fd5b50610abf611ebd565b6040518082815260200191505060405180910390f35b348015610ae157600080fd5b50610b0e60048036036020811015610af857600080fd5b8101908080359060200190929190505050611ec3565b005b348015610b1c57600080fd5b50610b25611f48565b6040518082815260200191505060405180910390f35b348015610b4757600080fd5b50610b50611f4e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b8857600080fd5b50610bcb60048036036020811015610b9f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f77565b60405180821515815260200191505060405180910390f35b348015610bef57600080fd5b50610bf8611f97565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c3057600080fd5b50610c39611fbd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c79578082015181840152602081019050610c5e565b50505050905090810190601f168015610ca65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610cc057600080fd5b50610cc9611ffa565b6040518082815260200191505060405180910390f35b348015610ceb57600080fd5b50610d3a60048036036040811015610d0257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612000565b005b348015610d4857600080fd5b50610d516120d6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d8957600080fd5b50610dd660048036036040811015610da057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120fc565b60405180821515815260200191505060405180910390f35b348015610dfa57600080fd5b50610e3160048036036040811015610e1157600080fd5b810190808035906020019092919080359060200190929190505050612111565b005b348015610e3f57600080fd5b50610e8260048036036020811015610e5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612225565b005b348015610e9057600080fd5b50610e996122fa565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ed157600080fd5b50610eda612320565b6040518082815260200191505060405180910390f35b348015610efc57600080fd5b50610f05612326565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f3d57600080fd5b50610f4661234c565b6040518082815260200191505060405180910390f35b348015610f6857600080fd5b50610f9560048036036020811015610f7f57600080fd5b8101908080359060200190929190505050612352565b005b348015610fa357600080fd5b50610fac6123d7565b60405180821515815260200191505060405180910390f35b348015610fd057600080fd5b5061103360048036036040811015610fe757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123ea565b6040518082815260200191505060405180910390f35b34801561105557600080fd5b506110846004803603602081101561106c57600080fd5b81019080803515159060200190929190505050612471565b005b34801561109257600080fd5b506110d5600480360360208110156110a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612509565b005b3480156110e357600080fd5b50611126600480360360208110156110fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125df565b005b34801561113457600080fd5b5061113d612741565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561117557600080fd5b506111c46004803603604081101561118c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612767565b005b3480156111d257600080fd5b50611215600480360360208110156111e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061283d565b60405180821515815260200191505060405180910390f35b34801561123957600080fd5b50611242612893565b60405180821515815260200191505060405180910390f35b601e5481565b60606040518060400160405280600981526020017f4d61645265766976650000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b611398336116bf565b61140a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b6000600654905090565b60135481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611623576115a2826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292e9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61162e8484846129ee565b90509392505050565b60006116b4611667600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b43565b6116a6611695600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b43565b60065461341690919063ffffffff16565b61341690919063ffffffff16565b905090565b60115481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b61172a3361283d565b61179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b61186d3361283d565b6118df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601d60016101000a81548160ff02191690831515021790555081601e8190555080601d60026101000a81548160ff021916908315150217905550505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900460ff1681565b61197b3361283d565b6119ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620f424081106119fc57600080fd5b80601c8190555050565b601d60019054906101000a900460ff1681565b6000611a45827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61129d565b9050919050565b611a553361283d565b611ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b83600f81905550826011819055508160108190555080601281905550611b0e601154611b00601054600f546128a690919063ffffffff16565b6128a690919063ffffffff16565b601381905550611b2b6012546013546128a690919063ffffffff16565b60148190555050505050565b60125481565b60105481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bbb3361283d565b611c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611cb75750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611cc057600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611dce57601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611db157600080fd5b505af1158015611dc5573d6000803e3d6000fd5b50505050611eb9565b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ea057600080fd5b505af1158015611eb4573d6000803e3d6000fd5b505050505b5050565b60075481565b611ecc3361283d565b611f3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f57454d4144000000000000000000000000000000000000000000000000000000815250905090565b600f5481565b6120093361283d565b61207b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006121093384846129ee565b905092915050565b61211a3361283d565b61218c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561220957600080fd5b505af115801561221d573d6000803e3d6000fd5b505050505050565b61222e336116bf565b6122a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b61235b3361283d565b6123cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b601d60029054906101000a900460ff1681565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61247a3361283d565b6124ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b612512336116bf565b612584576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6125e8336116bf565b61265a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6127703361283d565b6127e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b60009054906101000a900460ff1681565b600080828401905083811015612924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008383111582906129db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156129a0578082015181840152602081019050612985565b50505050905090810190601f1680156129cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601d60009054906101000a900460ff1615612a1757612a10848484613460565b905061340f565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612abb5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b4357601b60009054906101000a900460ff16612b42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b5b60075482111580612b9d5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c0f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612c7a5750601d60009054906101000a900460ff16155b8015612c925750601d60019054906101000a900460ff165b8015612cdf5750601e54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612ced57612cec613633565b5b612cf5613dd3565b158015612d4f5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612da9576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612da057600080fd5b612da8613de0565b5b612e32826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292e9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612edb5750600960009054906101000a900460ff165b15612f4157600854612f3583600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a690919063ffffffff16565b1115612f4057600080fd5b5b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612fe75750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612ff15782612ffd565b612ffc858585613de9565b5b905061305181600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a690919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131d357601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156131b757600080fd5b505af19250505080156131c8575060015b6131d1576131d2565b5b5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661331257601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156132f657600080fd5b505af1925050508015613307575060015b61331057613311565b5b5b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601c546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561338957600080fd5b505af192505050801561339a575060015b6133a3576133a4565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b600061345883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061292e565b905092915050565b60006134eb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292e9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061358082600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a690919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6001601d60006101000a81548160ff0219169083151502179055506000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006136d060026136c26013546136b4600f5487613f9190919063ffffffff16565b61401790919063ffffffff16565b61401790919063ffffffff16565b905060006136e7828461341690919063ffffffff16565b90506060600267ffffffffffffffff8111801561370357600080fd5b506040519080825280602002602001820160405280156137325781602001602082028036833780820191505090505b509050308160008151811061374357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156137e557600080fd5b505afa1580156137f9573d6000803e3d6000fd5b505050506040513d602081101561380f57600080fd5b81019080805190602001909291905050508160018151811061382d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561392b578082015181840152602081019050613910565b505050509050019650505050505050600060405180830381600087803b15801561395457600080fd5b505af1158015613968573d6000803e3d6000fd5b505050506000479050600061399d61398c6002600f5461401790919063ffffffff16565b60135461341690919063ffffffff16565b905060006139db60026139cd846139bf600f5488613f9190919063ffffffff16565b61401790919063ffffffff16565b61401790919063ffffffff16565b90506000613a06836139f860115487613f9190919063ffffffff16565b61401790919063ffffffff16565b90506000613a2f82613a21858861341690919063ffffffff16565b61341690919063ffffffff16565b9050601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613a9b57600080fd5b505af193505050508015613aad575060015b613ab657613ab7565b5b6000613ae06004613ad2600385613f9190919063ffffffff16565b61401790919063ffffffff16565b90506000613af7828461341690919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d8060008114613b80576040519150601f19603f3d011682016040523d82523d6000602084013e613b85565b606091505b505090506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d8060008114613c10576040519150601f19603f3d011682016040523d82523d6000602084013e613c15565b606091505b50509050600091506000905060008c1115613da957601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71988308f600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015613d1657600080fd5b505af1158015613d2a573d6000803e3d6000fd5b50505050506040513d6060811015613d4157600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506878d604051808381526020018281526020019250505060405180910390a15b505050505050505050505050506000601d60006101000a81548160ff021916908315150217905550565b600080601a541415905090565b43601a81905550565b6000808373ffffffffffffffffffffffffffffffffffffffff16601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613e4957601354613e4d565b6014545b90506000613e776064613e698487613f9190919063ffffffff16565b61401790919063ffffffff16565b9050613ecb81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a690919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3613f86818561341690919063ffffffff16565b925050509392505050565b600080831415613fa45760009050614011565b6000828402905082848281613fb557fe5b041461400c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141286021913960400191505060405180910390fd5b809150505b92915050565b600061405983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614061565b905092915050565b6000808311829061410d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156140d25780820151818401526020810190506140b7565b50505050905090810190601f1680156140ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161411957fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212202e97a30b4790b41a8253ecf94b9f7cd574abd4b25e923c9a1a26c4578295239c64736f6c63430007040033608060405273145677fc4d9b8f19b5d56d1820c48e0443049a30600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f8b9facb7b4410f5703eb29093302f2933d6e1aa600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55603c600d556509184e72a000600e553480156100dc57600080fd5b50604051611b8f380380611b8f833981810160405260208110156100ff57600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561016d57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661016f565b805b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611990806101ff6000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed1461033b578063f0fc6bca14610366578063ffb2c4791461037d578063ffd49c84146103b8576100dd565b8063ce7c2ac214610293578063d0e30db014610306578063e2d2e21914610310576100dd565b80632d48e896116100bb5780632d48e896146101cd5780633a98ef39146102125780634fab0ae81461023d578063997664d714610268576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610168575b600080fd5b3480156100ee57600080fd5b506100f76103e3565b6040518082815260200191505060405180910390f35b34801561011957600080fd5b506101666004803603604081101561013057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103e9565b005b34801561017457600080fd5b506101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a8565b6040518082815260200191505060405180910390f35b3480156101d957600080fd5b50610210600480360360408110156101f057600080fd5b8101908080359060200190929190803590602001909291905050506107c2565b005b34801561021e57600080fd5b5061022761082c565b6040518082815260200191505060405180910390f35b34801561024957600080fd5b50610252610832565b6040518082815260200191505060405180910390f35b34801561027457600080fd5b5061027d610838565b6040518082815260200191505060405180910390f35b34801561029f57600080fd5b506102e2600480360360208110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b60405180848152602001838152602001828152602001935050505060405180910390f35b61030e610868565b005b34801561031c57600080fd5b50610325610e1b565b6040518082815260200191505060405180910390f35b34801561034757600080fd5b50610350610e21565b6040518082815260200191505060405180910390f35b34801561037257600080fd5b5061037b610e27565b005b34801561038957600080fd5b506103b6600480360360208110156103a057600080fd5b8101908080359060200190929190505050610ead565b005b3480156103c457600080fd5b506103cd611027565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044157600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541115610496576104958261102d565b5b6000811180156104e857506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104fb576104f6826112f3565b61055d565b60008114801561054d57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561055c5761055b826113a2565b5b5b6105c6816105b8600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460085461157b90919063ffffffff16565b6115c590919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061065e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461164d565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106fd57600090506107bd565b600061074a600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461164d565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107a5576000925050506107bd565b6107b8818361157b90919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081a57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c057600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561094b57600080fd5b505afa15801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b810190808051906020019092919050505090506060600467ffffffffffffffff811180156109a257600080fd5b506040519080825280602002602001820160405280156109d15781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3c57600080fd5b505afa158015610a50573d6000803e3d6000fd5b505050506040513d6020811015610a6657600080fd5b810190808051906020019092919050505081600081518110610a8457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507397749c9b61f878a880dfe312d2594ae07aed765681600181518110610ae057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073654bac3ec77d6db497892478f854cf6e8245dca981600281518110610b3c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600381518110610ba657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610c9e578082015181840152602081019050610c83565b50505050905001955050505050506000604051808303818588803b158015610cc557600080fd5b505af1158015610cd9573d6000803e3d6000fd5b50505050506000610db683600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d6d57600080fd5b505afa158015610d81573d6000803e3d6000fd5b505050506040513d6020811015610d9757600080fd5b810190808051906020019092919050505061157b90919063ffffffff16565b9050610dcd816009546115c590919063ffffffff16565b600981905550610e10610dff600854610df184600c5461167f90919063ffffffff16565b61170590919063ffffffff16565b600b546115c590919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610e303361174f565b610ea2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6f20736f6f6e2e204e65656420746f20776169742100000000000000000081525060200191505060405180910390fd5b610eab3361102d565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f0557600080fd5b600060048054905090506000811415610f1e5750611024565b60008060005a90505b8482108015610f3557508383105b1561101f5783600f5410610f4c576000600f819055505b610f8e6004600f5481548110610f5e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661174f565b15610fd657610fd56004600f5481548110610fa557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661102d565b5b610ffb610fec5a8361157b90919063ffffffff16565b836115c590919063ffffffff16565b91505a9050600f600081548092919060010191905055508280600101935050610f27565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561107d576112f0565b6000611088826106a8565b905060008111156112ee576110a881600a546115c590919063ffffffff16565b600a81905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561114157600080fd5b505af1158015611155573d6000803e3d6000fd5b505050506040513d602081101561116b57600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061121681600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546115c590919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506112a7600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461164d565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004600160048054905003815481106113b757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061142e57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560006004600160048054905003815481106114cf57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061154357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b60006115bd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117b3565b905092915050565b600080828401905083811015611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611678600c5461166a600b548561167f90919063ffffffff16565b61170590919063ffffffff16565b9050919050565b60008083141561169257600090506116ff565b60008284029050828482816116a357fe5b04146116fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061193a6021913960400191505060405180910390fd5b809150505b92915050565b600061174783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611873565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156117ac5750600e546117aa836106a8565b115b9050919050565b6000838311158290611860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561182557808201518184015260208101905061180a565b50505050905090810190601f1680156118525780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808311829061191f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118e45780820151818401526020810190506118c9565b50505050905090810190601f1680156119115780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161192b57fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122041d3bbeed87674748e18bff1145eda1c8725b181d79273c8c5e93973eb507f7864736f6c63430007040033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80637db1342c11610190578063bf56b371116100dc578063e66b1d1e11610095578063f887ea401161006f578063f887ea4014611128578063fabe628314611169578063fe9fbb80146111c6578063ffb54a991461122d5761030a565b8063e66b1d1e14611049578063f0b37c0414611086578063f2fde38b146110d75761030a565b8063bf56b37114610ec5578063ca33e64c14610ef0578063ca987b0e14610f31578063d920334e14610f5c578063da00097d14610f97578063dd62ed3e14610fc45761030a565b806398118cb411610149578063a9059cbb11610123578063a9059cbb14610d7d578063a9f7864b14610dee578063b6a5d7de14610e33578063bad3ea6a14610e845761030a565b806398118cb414610cb4578063a3a2e89e14610cdf578063a8aa1b3114610d3c5761030a565b80637db1342c14610ad5578063807c2d9c14610b10578063893d20e814610b3b5780638b42507f14610b7c5780638ea5220f14610be357806395d89b4114610c245761030a565b80633f4218e01161024f578063650c42261161020857806370a08231116101e257806370a08231146109a757806375f0a87414610a0c578063773fcb5c14610a4d5780637d1db4a514610aaa5761030a565b8063650c4226146108f857806369cf17d4146109515780636b67c4df1461097c5761030a565b80633f4218e01461072e5780634355855a1461079557806344de2e4c146107fc578063479f66d8146108295780634a74bb0214610864578063571ac8b0146108915761030a565b806323b872dd116102bc5780632f54bf6e116102965780632f54bf6e146105b5578063313ce5671461061c578063315dca291461064a57806334c70889146106db5761030a565b806323b872dd146104ce5780632b112e491461055f5780632bb14e1d1461058a5761030a565b80630445b6671461030f57806306fdde031461033a578063095ea7b3146103ca5780630d2959801461043b57806318160ddd146104785780631df4ccfc146104a35761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b5061032461125a565b6040518082815260200191505060405180910390f35b34801561034657600080fd5b5061034f611260565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038f578082015181840152602081019050610374565b50505050905090810190601f1680156103bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d657600080fd5b50610423600480360360408110156103ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061129d565b60405180821515815260200191505060405180910390f35b34801561044757600080fd5b506104766004803603602081101561045e57600080fd5b8101908080351515906020019092919050505061138f565b005b34801561048457600080fd5b5061048d611427565b6040518082815260200191505060405180910390f35b3480156104af57600080fd5b506104b8611431565b6040518082815260200191505060405180910390f35b3480156104da57600080fd5b50610547600480360360608110156104f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611437565b60405180821515815260200191505060405180910390f35b34801561056b57600080fd5b50610574611637565b6040518082815260200191505060405180910390f35b34801561059657600080fd5b5061059f6116b9565b6040518082815260200191505060405180910390f35b3480156105c157600080fd5b50610604600480360360208110156105d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116bf565b60405180821515815260200191505060405180910390f35b34801561062857600080fd5b50610631611718565b604051808260ff16815260200191505060405180910390f35b34801561065657600080fd5b506106d96004803603606081101561066d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611721565b005b3480156106e757600080fd5b5061072c600480360360608110156106fe57600080fd5b8101908080351515906020019092919080359060200190929190803515159060200190929190505050611864565b005b34801561073a57600080fd5b5061077d6004803603602081101561075157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061191f565b60405180821515815260200191505060405180910390f35b3480156107a157600080fd5b506107e4600480360360208110156107b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061193f565b60405180821515815260200191505060405180910390f35b34801561080857600080fd5b5061081161195f565b60405180821515815260200191505060405180910390f35b34801561083557600080fd5b506108626004803603602081101561084c57600080fd5b8101908080359060200190929190505050611972565b005b34801561087057600080fd5b50610879611a06565b60405180821515815260200191505060405180910390f35b34801561089d57600080fd5b506108e0600480360360208110156108b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a19565b60405180821515815260200191505060405180910390f35b34801561090457600080fd5b5061094f6004803603608081101561091b57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611a4c565b005b34801561095d57600080fd5b50610966611b37565b6040518082815260200191505060405180910390f35b34801561098857600080fd5b50610991611b3d565b6040518082815260200191505060405180910390f35b3480156109b357600080fd5b506109f6600480360360208110156109ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b43565b6040518082815260200191505060405180910390f35b348015610a1857600080fd5b50610a21611b8c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a5957600080fd5b50610aa860048036036040811015610a7057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611bb2565b005b348015610ab657600080fd5b50610abf611ebd565b6040518082815260200191505060405180910390f35b348015610ae157600080fd5b50610b0e60048036036020811015610af857600080fd5b8101908080359060200190929190505050611ec3565b005b348015610b1c57600080fd5b50610b25611f48565b6040518082815260200191505060405180910390f35b348015610b4757600080fd5b50610b50611f4e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b8857600080fd5b50610bcb60048036036020811015610b9f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f77565b60405180821515815260200191505060405180910390f35b348015610bef57600080fd5b50610bf8611f97565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c3057600080fd5b50610c39611fbd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c79578082015181840152602081019050610c5e565b50505050905090810190601f168015610ca65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610cc057600080fd5b50610cc9611ffa565b6040518082815260200191505060405180910390f35b348015610ceb57600080fd5b50610d3a60048036036040811015610d0257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612000565b005b348015610d4857600080fd5b50610d516120d6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d8957600080fd5b50610dd660048036036040811015610da057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120fc565b60405180821515815260200191505060405180910390f35b348015610dfa57600080fd5b50610e3160048036036040811015610e1157600080fd5b810190808035906020019092919080359060200190929190505050612111565b005b348015610e3f57600080fd5b50610e8260048036036020811015610e5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612225565b005b348015610e9057600080fd5b50610e996122fa565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ed157600080fd5b50610eda612320565b6040518082815260200191505060405180910390f35b348015610efc57600080fd5b50610f05612326565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f3d57600080fd5b50610f4661234c565b6040518082815260200191505060405180910390f35b348015610f6857600080fd5b50610f9560048036036020811015610f7f57600080fd5b8101908080359060200190929190505050612352565b005b348015610fa357600080fd5b50610fac6123d7565b60405180821515815260200191505060405180910390f35b348015610fd057600080fd5b5061103360048036036040811015610fe757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123ea565b6040518082815260200191505060405180910390f35b34801561105557600080fd5b506110846004803603602081101561106c57600080fd5b81019080803515159060200190929190505050612471565b005b34801561109257600080fd5b506110d5600480360360208110156110a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612509565b005b3480156110e357600080fd5b50611126600480360360208110156110fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125df565b005b34801561113457600080fd5b5061113d612741565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561117557600080fd5b506111c46004803603604081101561118c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612767565b005b3480156111d257600080fd5b50611215600480360360208110156111e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061283d565b60405180821515815260200191505060405180910390f35b34801561123957600080fd5b50611242612893565b60405180821515815260200191505060405180910390f35b601e5481565b60606040518060400160405280600981526020017f4d61645265766976650000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b611398336116bf565b61140a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b6000600654905090565b60135481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611623576115a2826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292e9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61162e8484846129ee565b90509392505050565b60006116b4611667600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b43565b6116a6611695600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b43565b60065461341690919063ffffffff16565b61341690919063ffffffff16565b905090565b60115481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b61172a3361283d565b61179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b61186d3361283d565b6118df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601d60016101000a81548160ff02191690831515021790555081601e8190555080601d60026101000a81548160ff021916908315150217905550505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900460ff1681565b61197b3361283d565b6119ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620f424081106119fc57600080fd5b80601c8190555050565b601d60019054906101000a900460ff1681565b6000611a45827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61129d565b9050919050565b611a553361283d565b611ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b83600f81905550826011819055508160108190555080601281905550611b0e601154611b00601054600f546128a690919063ffffffff16565b6128a690919063ffffffff16565b601381905550611b2b6012546013546128a690919063ffffffff16565b60148190555050505050565b60125481565b60105481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bbb3361283d565b611c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611cb75750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611cc057600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611dce57601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611db157600080fd5b505af1158015611dc5573d6000803e3d6000fd5b50505050611eb9565b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ea057600080fd5b505af1158015611eb4573d6000803e3d6000fd5b505050505b5050565b60075481565b611ecc3361283d565b611f3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f57454d4144000000000000000000000000000000000000000000000000000000815250905090565b600f5481565b6120093361283d565b61207b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006121093384846129ee565b905092915050565b61211a3361283d565b61218c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561220957600080fd5b505af115801561221d573d6000803e3d6000fd5b505050505050565b61222e336116bf565b6122a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b61235b3361283d565b6123cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b601d60029054906101000a900460ff1681565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61247a3361283d565b6124ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b612512336116bf565b612584576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6125e8336116bf565b61265a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6127703361283d565b6127e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b60009054906101000a900460ff1681565b600080828401905083811015612924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008383111582906129db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156129a0578082015181840152602081019050612985565b50505050905090810190601f1680156129cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601d60009054906101000a900460ff1615612a1757612a10848484613460565b905061340f565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612abb5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b4357601b60009054906101000a900460ff16612b42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b5b60075482111580612b9d5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c0f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612c7a5750601d60009054906101000a900460ff16155b8015612c925750601d60019054906101000a900460ff165b8015612cdf5750601e54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612ced57612cec613633565b5b612cf5613dd3565b158015612d4f5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612da9576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612da057600080fd5b612da8613de0565b5b612e32826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292e9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612edb5750600960009054906101000a900460ff165b15612f4157600854612f3583600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a690919063ffffffff16565b1115612f4057600080fd5b5b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612fe75750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612ff15782612ffd565b612ffc858585613de9565b5b905061305181600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a690919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131d357601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156131b757600080fd5b505af19250505080156131c8575060015b6131d1576131d2565b5b5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661331257601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156132f657600080fd5b505af1925050508015613307575060015b61331057613311565b5b5b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601c546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561338957600080fd5b505af192505050801561339a575060015b6133a3576133a4565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b600061345883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061292e565b905092915050565b60006134eb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292e9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061358082600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a690919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6001601d60006101000a81548160ff0219169083151502179055506000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006136d060026136c26013546136b4600f5487613f9190919063ffffffff16565b61401790919063ffffffff16565b61401790919063ffffffff16565b905060006136e7828461341690919063ffffffff16565b90506060600267ffffffffffffffff8111801561370357600080fd5b506040519080825280602002602001820160405280156137325781602001602082028036833780820191505090505b509050308160008151811061374357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156137e557600080fd5b505afa1580156137f9573d6000803e3d6000fd5b505050506040513d602081101561380f57600080fd5b81019080805190602001909291905050508160018151811061382d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561392b578082015181840152602081019050613910565b505050509050019650505050505050600060405180830381600087803b15801561395457600080fd5b505af1158015613968573d6000803e3d6000fd5b505050506000479050600061399d61398c6002600f5461401790919063ffffffff16565b60135461341690919063ffffffff16565b905060006139db60026139cd846139bf600f5488613f9190919063ffffffff16565b61401790919063ffffffff16565b61401790919063ffffffff16565b90506000613a06836139f860115487613f9190919063ffffffff16565b61401790919063ffffffff16565b90506000613a2f82613a21858861341690919063ffffffff16565b61341690919063ffffffff16565b9050601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613a9b57600080fd5b505af193505050508015613aad575060015b613ab657613ab7565b5b6000613ae06004613ad2600385613f9190919063ffffffff16565b61401790919063ffffffff16565b90506000613af7828461341690919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d8060008114613b80576040519150601f19603f3d011682016040523d82523d6000602084013e613b85565b606091505b505090506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d8060008114613c10576040519150601f19603f3d011682016040523d82523d6000602084013e613c15565b606091505b50509050600091506000905060008c1115613da957601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71988308f600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015613d1657600080fd5b505af1158015613d2a573d6000803e3d6000fd5b50505050506040513d6060811015613d4157600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506878d604051808381526020018281526020019250505060405180910390a15b505050505050505050505050506000601d60006101000a81548160ff021916908315150217905550565b600080601a541415905090565b43601a81905550565b6000808373ffffffffffffffffffffffffffffffffffffffff16601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613e4957601354613e4d565b6014545b90506000613e776064613e698487613f9190919063ffffffff16565b61401790919063ffffffff16565b9050613ecb81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a690919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3613f86818561341690919063ffffffff16565b925050509392505050565b600080831415613fa45760009050614011565b6000828402905082848281613fb557fe5b041461400c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141286021913960400191505060405180910390fd5b809150505b92915050565b600061405983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614061565b905092915050565b6000808311829061410d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156140d25780820151818401526020810190506140b7565b50505050905090810190601f1680156140ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161411957fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212202e97a30b4790b41a8253ecf94b9f7cd574abd4b25e923c9a1a26c4578295239c64736f6c63430007040033

Deployed Bytecode Sourcemap

11463:11975:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13194:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14628:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15472:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21343:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14890:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12647:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18524:372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15070:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12568:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10833:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14804:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17435:273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17716:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12328:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12434:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12171:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18208:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13093:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15696:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16996:431;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12604:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12530:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15220:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12771:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16612:376;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12035:59;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16108:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12101:57;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14984:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12379:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12808:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14714:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12492:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16342:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12872:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18360:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18000:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10506:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12972:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12900:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12728:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12682:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15997:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13140:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15331:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16222:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10676:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11233:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12841:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16473:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11007:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12932:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13194:60;;;;:::o;14628:80::-;14676:13;14700:5;;;;;;;;;;;;;;;;;14693:12;;14628:80;:::o;15472:216::-;15547:4;15599:6;15564:11;:23;15576:10;15564:23;;;;;;;;;;;;;;;:32;15588:7;15564:32;;;;;;;;;;;;;;;:41;;;;15642:7;15621:37;;15630:10;15621:37;;;15651:6;15621:37;;;;;;;;;;;;;;;;;;15676:4;15669:11;;15472:216;;;;:::o;21343:98::-;10222:19;10230:10;10222:7;:19::i;:::-;10214:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21424:9:::1;21410:11;;:23;;;;;;;;;;;;;;;;;;21343:98:::0;:::o;14890:88::-;14945:7;14963:12;;14956:19;;14890:88;:::o;12647:28::-;;;;:::o;18524:372::-;18624:4;18697:2;18654:11;:19;18666:6;18654:19;;;;;;;;;;;;;;;:31;18674:10;18654:31;;;;;;;;;;;;;;;;:46;18651:180;;18750:69;18786:6;18750:69;;;;;;;;;;;;;;;;;:11;:19;18762:6;18750:19;;;;;;;;;;;;;;;:31;18770:10;18750:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;18716:11;:19;18728:6;18716:19;;;;;;;;;;;;;;;:31;18736:10;18716:31;;;;;;;;;;;;;;;:103;;;;18651:180;18848:40;18862:6;18870:9;18881:6;18848:13;:40::i;:::-;18841:47;;18524:372;;;;;:::o;15070:142::-;15123:7;15150:54;15188:15;15198:4;;;;;;;;;;;15188:9;:15::i;:::-;15150:33;15167:15;15177:4;;;;;;;;;;;15167:9;:15::i;:::-;15150:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15143:61;;15070:142;:::o;12568:29::-;;;;:::o;10833:103::-;10888:4;10923:5;;;;;;;;;;;10912:16;;:7;:16;;;10905:23;;10833:103;;;:::o;14804:80::-;14856:5;11655:1;14865:16;;14804:80;:::o;17435:273::-;10391:24;10404:10;10391:12;:24::i;:::-;10383:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17598:20:::1;17574:21;;:44;;;;;;;;;;;;;;;;;;17647:18;17629:15;;:36;;;;;;;;;;;;;;;;;;17688:12;17676:9;;:24;;;;;;;;;;;;;;;;;;17435:273:::0;;;:::o;17716:276::-;10391:24;10404:10;10391:12;:24::i;:::-;10383:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17873:14:::1;17848:21;;:39;;;;;;;;;;;;;;;;;;17914:16;17898:13;:32;;;;17969:15;17941:25;;:43;;;;;;;;;;;;;;;;;;17716:276:::0;;;:::o;12328:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12434:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;12171:33::-;;;;;;;;;;;;;:::o;18208:140::-;10391:24;10404:10;10391:12;:24::i;:::-;10383:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18301:7:::1;18295:3;:13;18287:22;;;::::0;::::1;;18337:3;18320:14;:20;;;;18208:140:::0;:::o;13093:40::-;;;;;;;;;;;;;:::o;15696:116::-;15751:4;15775:29;15783:7;15800:2;15775:7;:29::i;:::-;15768:36;;15696:116;;;:::o;16996:431::-;10391:24;10404:10;10391:12;:24::i;:::-;10383:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17153:9:::1;17138:12;:24;;;;17186:12;17173:10;:25;;;;17224:15;17209:12;:30;;;;17267:15;17250:14;:32;;;;17314:46;17349:10;;17314:30;17331:12;;17314;;:16;;:30;;;;:::i;:::-;:34;;:46;;;;:::i;:::-;17303:8;:57;;;;17391:28;17404:14;;17391:8;;:12;;:28;;;;:::i;:::-;17371:17;:48;;;;16996:431:::0;;;;:::o;12604:34::-;;;;:::o;12530:31::-;;;;:::o;15220:105::-;15286:7;15304:9;:18;15314:7;15304:18;;;;;;;;;;;;;;;;15297:25;;15220:105;;;:::o;12771:30::-;;;;;;;;;;;;;:::o;16612:376::-;10391:24;10404:10;10391:12;:24::i;:::-;10383:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16730:4:::1;16712:23;;:6;:23;;;;:41;;;;;16749:4;;;;;;;;;;;16739:14;;:6;:14;;;;16712:41;16704:50;;;::::0;::::1;;16792:6;16765:16;:24;16782:6;16765:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16822:6;16819:162;;;16844:19;;;;;;;;;;;:28;;;16873:6;16881:1;16844:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16819:162;;;16914:19;;;;;;;;;;;:28;;;16943:6;16951:9;:17;16961:6;16951:17;;;;;;;;;;;;;;;;16914:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16819:162;16612:376:::0;;:::o;12035:59::-;;;;:::o;16108:106::-;10391:24;10404:10;10391:12;:24::i;:::-;10383:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16198:8:::1;16184:10;:22;;;;16108:106:::0;:::o;12101:57::-;;;;:::o;14984:78::-;15036:7;15054:5;;;;;;;;;;;15047:12;;14984:78;:::o;12379:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;12808:24::-;;;;;;;;;;;;;:::o;14714:84::-;14764:13;14788:7;;;;;;;;;;;;;;;;;14781:14;;14714:84;:::o;12492:31::-;;;;:::o;16342:123::-;10391:24;10404:10;10391:12;:24::i;:::-;10383:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16451:6:::1;16429:11;:19;16441:6;16429:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;16342:123:::0;;:::o;12872:19::-;;;;;;;;;;;;;:::o;18360:156::-;18440:4;18464:44;18478:10;18490:9;18501:6;18464:13;:44::i;:::-;18457:51;;18360:156;;;;:::o;18000:200::-;10391:24;10404:10;10391:12;:24::i;:::-;10383:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18116:19:::1;;;;;;;;;;;:43;;;18160:11;18173:18;18116:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18000:200:::0;;:::o;10506:94::-;10222:19;10230:10;10222:7;:19::i;:::-;10214:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10588:4:::1;10566:14:::0;:19:::1;10581:3;10566:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10506:94:::0;:::o;12972:46::-;;;;;;;;;;;;;:::o;12900:25::-;;;;:::o;12728:36::-;;;;;;;;;;;;;:::o;12682:37::-;;;;:::o;15997:103::-;10391:24;10404:10;10391:12;:24::i;:::-;10383:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16084:8:::1;16069:12;:23;;;;15997:103:::0;:::o;13140:45::-;;;;;;;;;;;;;:::o;15331:133::-;15415:7;15433:11;:19;15445:6;15433:19;;;;;;;;;;;;;;;:28;15453:7;15433:28;;;;;;;;;;;;;;;;15426:35;;15331:133;;;;:::o;16222:108::-;10391:24;10404:10;10391:12;:24::i;:::-;10383:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16314:8:::1;16297:14;;:25;;;;;;;;;;;;;;;;;;16222:108:::0;:::o;10676:97::-;10222:19;10230:10;10222:7;:19::i;:::-;10214:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10760:5:::1;10738:14;:19;10753:3;10738:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10676:97:::0;:::o;11233:173::-;10222:19;10230:10;10222:7;:19::i;:::-;10214:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11317:3:::1;11309:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;11353:4;11331:14:::0;:19:::1;11346:3;11331:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11373:25;11394:3;11373:25;;;;;;;;;;;;;;;;;;;;11233:173:::0;:::o;12841:24::-;;;;;;;;;;;;;:::o;16473:131::-;10391:24;10404:10;10391:12;:24::i;:::-;10383:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16590:6:::1;16564:15;:23;16580:6;16564:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16473:131:::0;;:::o;11007:107::-;11063:4;11087:14;:19;11102:3;11087:19;;;;;;;;;;;;;;;;;;;;;;;;;11080:26;;11007:107;;;:::o;12932:31::-;;;;;;;;;;;;;:::o;125:179::-;183:7;203:9;219:1;215;:5;203:17;;244:1;239;:6;;231:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;295:1;288:8;;;125:179;;;;:::o;456:190::-;542:7;575:1;570;:6;;578:12;562:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;602:9;618:1;614;:5;602:17;;637:1;630:8;;;456:190;;;;;:::o;18904:1642::-;18996:4;19026:16;;;;;;;;;;;19023:73;;;19052:41;19067:6;19075:9;19086:6;19052:14;:41::i;:::-;19045:48;;;;19023:73;19112:14;:22;19127:6;19112:22;;;;;;;;;;;;;;;;;;;;;;;;;19111:23;:53;;;;;19139:14;:25;19154:9;19139:25;;;;;;;;;;;;;;;;;;;;;;;;;19138:26;19111:53;19108:128;;;19188:11;;;;;;;;;;;19180:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19108:128;19266:12;;19256:6;:22;;:49;;;;19282:15;:23;19298:6;19282:23;;;;;;;;;;;;;;;;;;;;;;;;;19256:49;19248:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19357:4;;;;;;;;;;;19343:18;;:10;:18;;;;:39;;;;;19366:16;;;;;;;;;;;19365:17;19343:39;:64;;;;;19386:21;;;;;;;;;;;19343:64;:109;;;;;19439:13;;19411:9;:24;19429:4;19411:24;;;;;;;;;;;;;;;;:41;;19343:109;19340:128;;;19455:10;:8;:10::i;:::-;19340:128;19484:10;:8;:10::i;:::-;19483:11;:32;;;;;19511:4;;;;;;;;;;;19498:17;;:9;:17;;;19483:32;19480:117;;;19560:1;19540:9;:17;19550:6;19540:17;;;;;;;;;;;;;;;;:21;19532:30;;;;;;19577:8;:6;:8::i;:::-;19480:117;19657:53;19679:6;19657:53;;;;;;;;;;;;;;;;;:9;:17;19667:6;19657:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19637:9;:17;19647:6;19637:17;;;;;;;;;;;;;;;:73;;;;19735:15;:26;19751:9;19735:26;;;;;;;;;;;;;;;;;;;;;;;;;19734:27;:45;;;;;19765:14;;;;;;;;;;;19734:45;19731:141;;;19849:10;;19813:32;19838:6;19813:9;:20;19823:9;19813:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:46;;19805:55;;;;;;19731:141;19884:19;19907:11;:19;19919:6;19907:19;;;;;;;;;;;;;;;;;;;;;;;;;19906:20;:47;;;;;19931:11;:22;19943:9;19931:22;;;;;;;;;;;;;;;;;;;;;;;;;19930:23;19906:47;:93;;19993:6;19906:93;;;19956:34;19964:6;19972:9;19983:6;19956:7;:34::i;:::-;19906:93;19884:115;;20033:37;20058:11;20033:9;:20;20043:9;20033:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;20010:9;:20;20020:9;20010:20;;;;;;;;;;;;;;;:60;;;;20116:16;:24;20133:6;20116:24;;;;;;;;;;;;;;;;;;;;;;;;;20112:127;;20161:19;;;;;;;;;;;:28;;;20190:6;20198:9;:17;20208:6;20198:17;;;;;;;;;;;;;;;;20161:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20157:71;;;;;;20112:127;20255:16;:27;20272:9;20255:27;;;;;;;;;;;;;;;;;;;;;;;;;20251:137;;20303:19;;;;;;;;;;;:28;;;20332:9;20343;:20;20353:9;20343:20;;;;;;;;;;;;;;;;20303:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20299:77;;;;;;20251:137;20404:19;;;;;;;;;;;:27;;;20432:14;;20404:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20400:59;;;;;;20493:9;20476:40;;20485:6;20476:40;;;20504:11;20476:40;;;;;;;;;;;;;;;;;;20534:4;20527:11;;;18904:1642;;;;;;:::o;312:136::-;370:7;397:43;401:1;404;397:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;390:50;;312:136;;;;:::o;20558:330::-;20651:4;20688:53;20710:6;20688:53;;;;;;;;;;;;;;;;;:9;:17;20698:6;20688:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;20668:9;:17;20678:6;20668:17;;;;;;;;;;;;;;;:73;;;;20775:32;20800:6;20775:9;:20;20785:9;20775:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20752:9;:20;20762:9;20752:20;;;;;;;;;;;;;;;:55;;;;20840:9;20823:35;;20832:6;20823:35;;;20851:6;20823:35;;;;;;;;;;;;;;;;;;20876:4;20869:11;;20558:330;;;;;:::o;21449:1920::-;13318:4;13299:16;;:23;;;;;;;;;;;;;;;;;;21511::::1;21537:9;:24;21555:4;21537:24;;;;;;;;;;;;;;;;21511:50;;21572:23;21598:54;21650:1;21598:47;21636:8;;21598:33;21618:12;;21598:15;:19;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;:51;;:54;;;;:::i;:::-;21572:80;;21663:20;21686:36;21706:15;21686;:19;;:36;;;;:::i;:::-;21663:59;;21735:21;21773:1;21759:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21735:40;;21804:4;21786;21791:1;21786:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21830:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;21820:4;21825:1;21820:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21856:6;;;;;;;;;;;:57;;;21928:12;21955:1;21971:4;21998;22018:15;21856:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22057:17;22077:21;22057:41;;22111:19;22133:33;22146:19;22163:1;22146:12;;:16;;:19;;;;:::i;:::-;22133:8;;:12;;:33;;;;:::i;:::-;22111:55;;22187:26;22216:51;22265:1;22216:44;22248:11;22216:27;22230:12;;22216:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;22187:80;;22278:27;22308:42;22338:11;22308:25;22322:10;;22308:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;22278:72;;22361:26;22390:58;22428:19;22390:33;22404:18;22390:9;:13;;:33;;;;:::i;:::-;:37;;:58;;;;:::i;:::-;22361:87;;22465:19;;;;;;;;;;;:27;;;22500:19;22465:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22461:73;;;;;;22554:22;22579:32;22609:1;22579:25;22602:1;22579:18;:22;;:25;;;;:::i;:::-;:29;;:32;;;;:::i;:::-;22554:57;;22622:16;22641:38;22664:14;22641:18;:22;;:38;;;;:::i;:::-;22622:57;;22701:15;22729;;;;;;;;;;;22721:29;;22758:14;22779:5;22721:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22700:89;;;22801:16;22830:9;;;;;;;;;;;22822:23;;22853:8;22868:5;22822:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22800:78;;;22952:5;22939:18;;22982:5;22968:19;;23021:1;23003:15;:19;23000:362;;;23038:6;;;;;;;;;;;:22;;;23068:18;23114:4;23138:15;23172:1;23192::::0;23212:21:::1;;;;;;;;;;;23252:15;23038:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23302:48;23314:18;23334:15;23302:48;;;;;;;;;;;;;;;;;;;;;;;;23000:362;13333:1;;;;;;;;;;;;;13364:5:::0;13345:16;;:24;;;;;;;;;;;;;;;;;;21449:1920::o;15820:90::-;15863:4;15901:1;15887:10;;:15;;15880:22;;15820:90;:::o;15918:71::-;15969:12;15956:10;:25;;;;15918:71::o;20896:439::-;20982:7;21012:21;21044:9;21036:17;;:4;;;;;;;;;;;:17;;;:48;;21076:8;;21036:48;;;21056:17;;21036:48;21012:72;;21095:17;21115:34;21145:3;21115:25;21126:13;21115:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;21095:54;;21189:39;21218:9;21189;:24;21207:4;21189:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;21162:9;:24;21180:4;21162:24;;;;;;;;;;;;;;;:66;;;;21269:4;21244:42;;21253:6;21244:42;;;21276:9;21244:42;;;;;;;;;;;;;;;;;;21306:21;21317:9;21306:6;:10;;:21;;;;:::i;:::-;21299:28;;;;20896:439;;;;;:::o;654:224::-;712:7;741:1;736;:6;732:25;;;753:1;746:8;;;;732:25;767:9;783:1;779;:5;767:17;;812:1;807;803;:5;;;;;;:10;795:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;869:1;862:8;;;654:224;;;;;:::o;886:132::-;944:7;971:39;975:1;978;971:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;964:46;;886:132;;;;:::o;1026:189::-;1112:7;1144:1;1140;:5;1147:12;1132:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1171:9;1187:1;1183;:5;;;;;;1171:17;;1206:1;1199:8;;;1026:189;;;;;:::o

Swarm Source

ipfs://41d3bbeed87674748e18bff1145eda1c8725b181d79273c8c5e93973eb507f78
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.