ETH Price: $2,390.31 (-0.35%)

Token

Santa Doge (SDOGE)
 

Overview

Max Total Supply

1,000,000,000 SDOGE

Holders

112

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
2,044,402.517397 SDOGE

Value
$0.00
0xd25c6b0e6f4e0e8c3dcf9a9437efa6ad5be3b658
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
SDOGE

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-05
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.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;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address who) external view returns (uint256);
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function transfer(address to, uint256 value) external returns (bool);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IPancakeSwapPair {
		event Approval(address indexed owner, address indexed spender, uint value);
		event Transfer(address indexed from, address indexed to, uint value);
		function name() external pure returns (string memory);
		function symbol() external pure returns (string memory);
		function decimals() external pure returns (uint8);
		function totalSupply() external view returns (uint);
		function balanceOf(address owner) external view returns (uint);
		function allowance(address owner, address spender) external view returns (uint);
		function approve(address spender, uint value) external returns (bool);
		function transfer(address to, uint value) external returns (bool);
		function transferFrom(address from, address to, uint value) external returns (bool);
		function DOMAIN_SEPARATOR() external view returns (bytes32);
		function PERMIT_TYPEHASH() external pure returns (bytes32);
		function nonces(address owner) external view returns (uint);
		function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
		event Mint(address indexed sender, uint amount0, uint amount1);
		event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
		event Swap(
				address indexed sender,
				uint amount0In,
				uint amount1In,
				uint amount0Out,
				uint amount1Out,
				address indexed to
		);
		event Sync(uint112 reserve0, uint112 reserve1);
		function MINIMUM_LIQUIDITY() external pure returns (uint);
		function factory() external view returns (address);
		function token0() external view returns (address);
		function token1() external view returns (address);
		function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
		function price0CumulativeLast() external view returns (uint);
		function price1CumulativeLast() external view returns (uint);
		function kLast() external view returns (uint);
		function mint(address to) external returns (uint liquidity);
		function burn(address to) external returns (uint amount0, uint amount1);
		function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
		function skim(address to) external;
		function sync() external;
		function initialize(address, address) external;
}

interface IPancakeSwapRouter{
		function factory() external pure returns (address);
		function WETH() external pure returns (address);
		function addLiquidity(
				address tokenA,
				address tokenB,
				uint amountADesired,
				uint amountBDesired,
				uint amountAMin,
				uint amountBMin,
				address to,
				uint deadline
		) external returns (uint amountA, uint amountB, uint liquidity);
		function addLiquidityETH(
				address token,
				uint amountTokenDesired,
				uint amountTokenMin,
				uint amountETHMin,
				address to,
				uint deadline
		) external payable returns (uint amountToken, uint amountETH, uint liquidity);
		function removeLiquidity(
				address tokenA,
				address tokenB,
				uint liquidity,
				uint amountAMin,
				uint amountBMin,
				address to,
				uint deadline
		) external returns (uint amountA, uint amountB);
		function removeLiquidityETH(
				address token,
				uint liquidity,
				uint amountTokenMin,
				uint amountETHMin,
				address to,
				uint deadline
		) external returns (uint amountToken, uint amountETH);
		function removeLiquidityWithPermit(
				address tokenA,
				address tokenB,
				uint liquidity,
				uint amountAMin,
				uint amountBMin,
				address to,
				uint deadline,
				bool approveMax, uint8 v, bytes32 r, bytes32 s
		) external returns (uint amountA, uint amountB);
		function removeLiquidityETHWithPermit(
				address token,
				uint liquidity,
				uint amountTokenMin,
				uint amountETHMin,
				address to,
				uint deadline,
				bool approveMax, uint8 v, bytes32 r, bytes32 s
		) external returns (uint amountToken, uint amountETH);
		function swapExactTokensForTokens(
				uint amountIn,
				uint amountOutMin,
				address[] calldata path,
				address to,
				uint deadline
		) external returns (uint[] memory amounts);
		function swapTokensForExactTokens(
				uint amountOut,
				uint amountInMax,
				address[] calldata path,
				address to,
				uint deadline
		) external returns (uint[] memory amounts);
		function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
				external
				payable
				returns (uint[] memory amounts);
		function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
				external
				returns (uint[] memory amounts);
		function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
				external
				returns (uint[] memory amounts);
		function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
				external
				payable
				returns (uint[] memory amounts);

		function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
		function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
		function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
		function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
		function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
		function removeLiquidityETHSupportingFeeOnTransferTokens(
			address token,
			uint liquidity,
			uint amountTokenMin,
			uint amountETHMin,
			address to,
			uint deadline
		) external returns (uint amountETH);
		function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
			address token,
			uint liquidity,
			uint amountTokenMin,
			uint amountETHMin,
			address to,
			uint deadline,
			bool approveMax, uint8 v, bytes32 r, bytes32 s
		) external returns (uint amountETH);
	
		function swapExactTokensForTokensSupportingFeeOnTransferTokens(
			uint amountIn,
			uint amountOutMin,
			address[] calldata path,
			address to,
			uint deadline
		) external;
		function swapExactETHForTokensSupportingFeeOnTransferTokens(
			uint amountOutMin,
			address[] calldata path,
			address to,
			uint deadline
		) external payable;
		function swapExactTokensForETHSupportingFeeOnTransferTokens(
			uint amountIn,
			uint amountOutMin,
			address[] calldata path,
			address to,
			uint deadline
		) external;
}

interface IPancakeSwapFactory {
		event PairCreated(address indexed token0, address indexed token1, address pair, uint);
		function feeTo() external view returns (address);
		function feeToSetter() external view returns (address);
		function getPair(address tokenA, address tokenB) external view returns (address pair);
		function allPairs(uint) external view returns (address pair);
		function allPairsLength() external view returns (uint);
		function createPair(address tokenA, address tokenB) external returns (address pair);
		function setFeeTo(address) external;
		function setFeeToSetter(address) external;
}

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

    //Mainnet
    IERC20 USDT = IERC20(0xdAC17F958D2ee523a2206206994597C13D831ec7); 

    //testnet usdc 
    // IERC20 USDT = IERC20(0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C); 

    IPancakeSwapRouter router;

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

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public currentIndex;

    uint256 public dividendsPerShareAccuracyFactor = 10 ** 12;
    uint256 public minPeriod = 3600;
    uint256 public minDistribution = 1 * (10 ** 6);

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

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

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

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

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

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

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyToken returns (bool success){
        return IERC20(tokenAddress).transfer(_receiver, tokens);
    }

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

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

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

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

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

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

        if(shareholderCount == 0) { return; }

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

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

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

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution;
    }

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

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            USDT.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }

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

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

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

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

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

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

contract Ownable {
    address private _owner;

    event OwnershipRenounced(address indexed previousOwner);

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _owner = msg.sender;
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(_owner);
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract SDOGE is IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Santa Doge";
    string private constant _symbol = "SDOGE";
    uint8 private constant _decimals = 6;

    uint256 public buyLiquidityFee = 10;
    uint256 public buyMarketingFee = 20;
    uint256 public buyDeveloperFee = 20;
    uint256 public buyRewardsFee = 10;

    uint256 public sellLiquidityFee = 10;
    uint256 public sellMarketingFee = 20;
    uint256 public sellDeveloperFee = 20;
    uint256 public sellRewardsFee = 10;

    uint256 public AmountLiquidityFee;
    uint256 public AmountMarketingFee;
    uint256 public AmountDeveloperFee;
    uint256 public AmountRewardsFee;

    uint256 private constant feeDenominator = 1000;

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

    address public _marketingWalletAddress = 0x7e70340e3438eB90884744Bc1035DcAC1b898BDc;
    address public _developerWalletAddress = 0x361aD07081dFd31A87F497a976Ed34A960D0e022;
    address public _liquidityReciever;

    address private constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address private constant ZeroWallet = 0x0000000000000000000000000000000000000000;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public automatedMarketMakerPairs;

    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    mapping(address => bool) public isDividendExempt;
    mapping (address => bool) public blacklisted;

    uint256 public _totalSupply = 1_000_000_000 * (10 ** _decimals);

    uint256 public MaxWalletLimit = _totalSupply.mul(10).div(feeDenominator);  //1%
    uint256 public MaxTxLimit = _totalSupply.mul(5).div(feeDenominator);  //0.5%

    uint256 public swapTokensAtAmount = 10000 * (10 ** _decimals); //0.5%

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

    bool public _enableSwap = true; 

    bool public initalDistribution;
    bool public triggered;
    uint public launchTime;

    modifier validRecipient(address to) {
        require(to != address(0x0));
        _;
    }
  
    DividendDistributor distributor;
    address public SDDividendReceiver;

    uint256 distributorGas = 500000;
    
    address public pair;
    IPancakeSwapPair public pairContract;
    IPancakeSwapRouter public router;

    bool inSwap = false;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() Ownable() {

        address _router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; 

        router = IPancakeSwapRouter(_router); 

        pair = IPancakeSwapFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );

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

        pairContract = IPancakeSwapPair(pair);
        automatedMarketMakerPairs[pair] = true;
        
        _liquidityReciever = msg.sender;

        distributor = new DividendDistributor(_router);
        SDDividendReceiver = address(distributor);

        isDividendExempt[msg.sender] = true;
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[deadWallet] = true;
        isDividendExempt[ZeroWallet] = true;
        
        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[address(this)] = true;

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

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

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

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

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

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return
            _totalSupply.sub(_balances[deadWallet]).sub(_balances[ZeroWallet]);
    }

    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

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

    function checkFeeExempt(address _addr) external view returns (bool) {
        return _isExcludedFromFees[_addr];
    }

    function transfer(address to, uint256 value)
        external
        override
        validRecipient(to)
        returns (bool)
    {
        _transferFrom(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external validRecipient(to) override returns (bool) {
        
        if (_allowances[from][msg.sender] != ~uint256(0)) {
            _allowances[from][msg.sender] = _allowances[from][
                msg.sender
            ].sub(value, "Insufficient Allowance");
        }
        _transferFrom(from, to, value);
        return true;
    }

    function _basicTransfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount);
        return true;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0,"Error: Invalid Amount!");

        require(!blacklisted[sender] && !blacklisted[recipient],"Error: Blacklist Bots/Contracts not Allowed!!");
        require(initalDistribution || isOwner() ,"Trade is Currently Paused!!");
        
        if((block.timestamp > launchTime + 15 minutes) && !triggered && (launchTime != 0) ){
            MaxTxLimit =  _totalSupply.mul(15).div(feeDenominator);     //1.5%
            MaxWalletLimit = _totalSupply.mul(15).div(feeDenominator);    //1.5%
            triggered = true;
        }

        if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
            require(amount <= MaxTxLimit, "Error: Transfer amount exceeds the maxTxAmount.");
        }

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

        if (shouldSwapBack()) {
            swapBack();
        }
        
        _balances[sender] = _balances[sender].sub(amount);
        
        uint256 AmountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;

        if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
            require(balanceOf(recipient).add(AmountReceived) <= MaxWalletLimit,"Error: Transfer Amount exceeds Wallet Limit.");
        }

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

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

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

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

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {

        uint256 feeAmount;
        uint LFEE;
        uint MFEE;
        uint RFEE;
        uint DFEE;
        
        if(automatedMarketMakerPairs[sender]){

            LFEE = amount.mul(buyLiquidityFee).div(feeDenominator);
            AmountLiquidityFee += LFEE;
            MFEE = amount.mul(buyMarketingFee).div(feeDenominator);
            AmountMarketingFee += MFEE;
            RFEE = amount.mul(buyRewardsFee).div(feeDenominator);
            AmountRewardsFee += RFEE;
            DFEE = amount.mul(buyDeveloperFee).div(feeDenominator);
            AmountDeveloperFee += DFEE;

            feeAmount = LFEE.add(MFEE).add(RFEE).add(DFEE);
        }
        else if(automatedMarketMakerPairs[recipient]){

            LFEE = amount.mul(sellLiquidityFee).div(feeDenominator);
            AmountLiquidityFee += LFEE;
            MFEE = amount.mul(sellMarketingFee).div(feeDenominator);
            AmountMarketingFee += MFEE;
            RFEE = amount.mul(sellRewardsFee).div(feeDenominator);
            AmountRewardsFee += RFEE;
            DFEE = amount.mul(sellDeveloperFee).div(feeDenominator);
            AmountDeveloperFee += DFEE;

            feeAmount = LFEE.add(MFEE).add(RFEE).add(DFEE);
    
        }

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

        return amount.sub(feeAmount);
    }

    function manualSwap() public onlyOwner swapping { 
        if(AmountLiquidityFee > 0) swapForLiquidity(AmountLiquidityFee); 
        if(AmountMarketingFee > 0) swapForMarketing(AmountMarketingFee);
        if(AmountDeveloperFee > 0) swapForDevelopers(AmountDeveloperFee);
        if(AmountRewardsFee > 0) swapAndSendDivident(AmountRewardsFee);
    }

    function swapBack() internal swapping {
        if(AmountLiquidityFee > 0) swapForLiquidity(AmountLiquidityFee); 
        if(AmountMarketingFee > 0) swapForMarketing(AmountMarketingFee);
        if(AmountDeveloperFee > 0) swapForDevelopers(AmountDeveloperFee);
        if(AmountRewardsFee > 0) swapAndSendDivident(AmountRewardsFee);
    }

    function swapAndSendDivident(uint256 _tokens) private {
        uint initialBalance = address(this).balance;
        swapTokensForEth(_tokens);
        uint ReceivedBalance = address(this).balance.sub(initialBalance);
        AmountRewardsFee = AmountRewardsFee.sub(_tokens);
        try distributor.deposit { value: ReceivedBalance } () {} catch {}  
    }

    function shouldTakeFee(address from, address to)
        internal
        view
        returns (bool)
    {
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            return false;
        }        
        else{
            return (automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]);
        }
    }

    function shouldSwapBack() internal view returns (bool) {

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        return
            _enableSwap && 
            !inSwap && 
            canSwap &&
            !automatedMarketMakerPairs[msg.sender];
    }

    function setAutoSwapBack(bool _flag) external onlyOwner {
        if(_flag) {
            _enableSwap = _flag;
        } else {
            _enableSwap = _flag;
        }
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        returns (bool)
    {
        uint256 oldValue = _allowances[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowances[msg.sender][spender] = 0;
        } else {
            _allowances[msg.sender][spender] = oldValue.sub(
                subtractedValue
            );
        }
        emit Approval(
            msg.sender,
            spender,
            _allowances[msg.sender][spender]
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        external
        returns (bool)
    {
        _allowances[msg.sender][spender] = _allowances[msg.sender][
            spender
        ].add(addedValue);
        emit Approval(
            msg.sender,
            spender,
            _allowances[msg.sender][spender]
        );
        return true;
    }

    function approve(address spender, uint256 value)
        external
        override
        returns (bool)
    {
        _approve(msg.sender,spender,value);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setBuyFee(
            uint _newLp,
            uint _newMarketing,
            uint _newReward,
            uint _newDeveloper
        ) public onlyOwner {
      
        buyLiquidityFee = _newLp;
        buyMarketingFee = _newMarketing;
        buyRewardsFee = _newReward;
        buyDeveloperFee = _newDeveloper;
    }

    function setSellFee(
            uint _newLp,
            uint _newMarketing,
            uint _newReward,
            uint _newDeveloper
        ) public onlyOwner {

        sellLiquidityFee = _newLp;
        sellMarketingFee = _newMarketing;
        sellRewardsFee = _newReward;
        sellDeveloperFee = _newDeveloper;
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(this) && !automatedMarketMakerPairs[holder]);
        isDividendExempt[holder] = exempt;

        if (exempt) {
            distributor.setShare(holder, 0);
        } else {
            distributor.setShare(holder, balanceOf(holder));
        }
    }

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

    function blacklistBot(address _adr,bool _status) public onlyOwner {
        blacklisted[_adr] = _status;
    }

    function clearStuckBalance(address _receiver) external onlyOwner {
        uint256 balance = address(this).balance;
        payable(_receiver).transfer(balance);
    }

    function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyOwner returns (bool success){
        return IERC20(tokenAddress).transfer(_receiver, tokens);
    }

    function rescueDToken(address tokenAddress,address _receiver, uint256 tokens) external onlyOwner returns (bool success) {
        return distributor.rescueToken(tokenAddress, _receiver,tokens);
    }

    function setFeeReceivers(address _marketing,address _liquidity,address _developer) public onlyOwner {
        _marketingWalletAddress = _marketing;
        _liquidityReciever = _liquidity;
        _developerWalletAddress = _developer;
    }

    function setDistributorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000, "Gas must be lower than 750000");
        distributorGas = gas;
    }

    function enableDisableTxLimit(bool _status) public onlyOwner {
        EnableTransactionLimit = _status;
    }

    function enableDisableWalletLimit(bool _status) public onlyOwner {
        checkWalletLimit = _status;
    }

    function setMaxWalletLimit(uint _value) public onlyOwner {
        MaxWalletLimit = _value;
    }

    function setMaxTxLimit(uint _value) public onlyOwner {
        MaxTxLimit = _value; 
    }

    function setLP(address _address) external onlyOwner {
        pair = _address;
    }

    function setAutomaticPairMarket(address _addr,bool _status) public onlyOwner {
        if(_status) {
            require(!automatedMarketMakerPairs[_addr],"Pair Already Set!!");
        }
        automatedMarketMakerPairs[_addr] = _status;
        isDividendExempt[_addr] = true;
        isWalletLimitExempt[_addr] = true;
    }

    function setWhitelistFee(address _addr,bool _status) external onlyOwner {
        require(_isExcludedFromFees[_addr] != _status, "Error: Not changed");
        _isExcludedFromFees[_addr] = _status;
    }

    function setEdTxLimit(address _addr,bool _status) external onlyOwner {
        isTxLimitExempt[_addr] = _status;
    }

    function setEdWalletLimit(address _addr,bool _status) external onlyOwner {
        isWalletLimitExempt[_addr] = _status;
    }

    function setMinSwapAmount(uint _value) external onlyOwner {
        swapTokensAtAmount = _value;
    }

    function openTrade(bool _status, bool _s) public onlyOwner {
        initalDistribution = _status;
        if(_s){
            launchTime = block.timestamp;
        }
    }

    function swapForMarketing(uint _tokens) private {
        uint initalBalance = address(this).balance;
        swapTokensForEth(_tokens);
        uint recieveBalance = address(this).balance.sub(initalBalance);
        AmountMarketingFee = AmountMarketingFee.sub(_tokens);
        payable(_marketingWalletAddress).transfer(recieveBalance);
    }

    function swapForDevelopers(uint _tokens) private {
        uint initalBalance = address(this).balance;
        swapTokensForEth(_tokens);
        uint recieveBalance = address(this).balance.sub(initalBalance);
        AmountDeveloperFee = AmountDeveloperFee.sub(_tokens);
        payable(_developerWalletAddress).transfer(recieveBalance);
    }

    function swapForLiquidity(uint _tokens) private {
        uint half = AmountLiquidityFee.div(2);
        uint otherhalf = AmountLiquidityFee.sub(half);
        uint initalBalance = address(this).balance;
        swapTokensForEth(half);
        uint recieveBalance = address(this).balance.sub(initalBalance);
        AmountLiquidityFee = AmountLiquidityFee.sub(_tokens);
        addLiquidity(otherhalf,recieveBalance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);
        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _liquidityReciever,
            block.timestamp
        );

    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

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

    }

    receive() external payable {}

    /* AirDrop begins*/

    function airDrop(address[] calldata _adr, uint[] calldata _tokens) public onlyOwner {
        require(_adr.length == _tokens.length,"Length Mismatch!!");
        uint Subtokens;
        address account = msg.sender;
        for(uint i=0; i < _tokens.length; i++){
            Subtokens += _tokens[i];
        }
        require(balanceOf(account) >= Subtokens,"ERROR: Insufficient Balance!!");
        _balances[account] = _balances[account].sub(Subtokens);
        for (uint j=0; j < _adr.length; j++) {
            _balances[_adr[j]] = _balances[_adr[j]].add(_tokens[j]);
            emit Transfer(account,_adr[j],_tokens[j]);
        } 
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"AmountDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SDDividendReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developerWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_enableSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_adr","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"blacklistBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableDisableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initalDistribution","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":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"bool","name":"_s","type":"bool"}],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract IPancakeSwapPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueDToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAutomaticPairMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLp","type":"uint256"},{"internalType":"uint256","name":"_newMarketing","type":"uint256"},{"internalType":"uint256","name":"_newReward","type":"uint256"},{"internalType":"uint256","name":"_newDeveloper","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setEdTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setEdWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_developer","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMinSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLp","type":"uint256"},{"internalType":"uint256","name":"_newMarketing","type":"uint256"},{"internalType":"uint256","name":"_newReward","type":"uint256"},{"internalType":"uint256","name":"_newDeveloper","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600a60015560146002556014600355600a600455600a60055560146006556014600755600a600855737e70340e3438eb90884744bc1035dcac1b898bdc600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073361ad07081dfd31a87f497a976ed34a960d0e022601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006600a620000e6919062000ffd565b633b9aca00620000f791906200113a565b601855620001326103e86200011e600a60185462000c8260201b62002eef1790919060201c565b62000d0660201b62002f6a1790919060201c565b6019556200016d6103e862000159600560185462000c8260201b62002eef1790919060201c565b62000d0660201b62002f6a1790919060201c565b601a556006600a62000180919062000ffd565b6127106200018f91906200113a565b601b556001601c60006101000a81548160ff0219169083151502179055506001601c60016101000a81548160ff0219169083151502179055506001601c60026101000a81548160ff0219169083151502179055506207a1206020556000602360146101000a81548160ff0219169083151502179055503480156200021257600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031657600080fd5b505afa1580156200032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000351919062000de5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003d557600080fd5b505afa158015620003ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000410919062000de5565b306040518363ffffffff1660e01b81526004016200043092919062000ebe565b602060405180830381600087803b1580156200044b57600080fd5b505af115801562000460573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000486919062000de5565b602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160136000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080604051620006989062000dc0565b620006a4919062000ea1565b604051809103906000f080158015620006c1573d6000803e3d6000fd5b50601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160166000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016016600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601854600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60185460405162000c73919062000f31565b60405180910390a35062001306565b60008083141562000c97576000905062000d00565b6000828462000ca791906200113a565b905082848262000cb8919062000f6a565b1462000cfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cf29062000f0f565b60405180910390fd5b809150505b92915050565b600062000d5083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000d5860201b60201c565b905092915050565b6000808311829062000da2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d99919062000eeb565b60405180910390fd5b506000838562000db3919062000f6a565b9050809150509392505050565b612287806200730283390190565b60008151905062000ddf81620012ec565b92915050565b60006020828403121562000dfe5762000dfd6200127a565b5b600062000e0e8482850162000dce565b91505092915050565b62000e22816200119b565b82525050565b600062000e358262000f4e565b62000e41818562000f59565b935062000e53818560208601620011e6565b62000e5e816200127f565b840191505092915050565b600062000e7860218362000f59565b915062000e85826200129d565b604082019050919050565b62000e9b81620011cf565b82525050565b600060208201905062000eb8600083018462000e17565b92915050565b600060408201905062000ed5600083018562000e17565b62000ee4602083018462000e17565b9392505050565b6000602082019050818103600083015262000f07818462000e28565b905092915050565b6000602082019050818103600083015262000f2a8162000e69565b9050919050565b600060208201905062000f48600083018462000e90565b92915050565b600081519050919050565b600082825260208201905092915050565b600062000f7782620011cf565b915062000f8483620011cf565b92508262000f975762000f966200124b565b5b828204905092915050565b6000808291508390505b600185111562000ff45780860481111562000fcc5762000fcb6200121c565b5b600185161562000fdc5780820291505b808102905062000fec8562001290565b945062000fac565b94509492505050565b60006200100a82620011cf565b91506200101783620011d9565b9250620010467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200104e565b905092915050565b60008262001060576001905062001133565b8162001070576000905062001133565b81600181146200108957600281146200109457620010ca565b600191505062001133565b60ff841115620010a957620010a86200121c565b5b8360020a915084821115620010c357620010c26200121c565b5b5062001133565b5060208310610133831016604e8410600b8410161715620011045782820a905083811115620010fe57620010fd6200121c565b5b62001133565b62001113848484600162000fa2565b925090508184048111156200112d576200112c6200121c565b5b81810290505b9392505050565b60006200114782620011cf565b91506200115483620011cf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001190576200118f6200121c565b5b828202905092915050565b6000620011a882620011af565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101562001206578082015181840152602081019050620011e9565b8381111562001216576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620012f7816200119b565b81146200130357600080fd5b50565b615fec80620013166000396000f3fe60806040526004361061044b5760003560e01c80638da5cb5b11610234578063cfe0e6191161012e578063e653da08116100b6578063f63743421161007a578063f637434214611100578063f708a64f1461112b578063f832679514611154578063f872858a1461117f578063f887ea40146111aa57610452565b8063e653da081461102f578063ea8b2c4414611058578063f11a24d314611081578063f2fde38b146110ac578063f48f2594146110d557610452565b8063dbac26e9116100fd578063dbac26e914610f24578063dd62ed3e14610f61578063dde04b9514610f9e578063e2f4560514610fc7578063e5711e8b14610ff257610452565b8063cfe0e61914610e68578063d4057d7e14610e93578063d439979014610ebe578063d7c0103214610efb57610452565b8063a715184d116101bc578063b62496f511610180578063b62496f514610d5b578063b677814c14610d98578063bb8d513114610dc3578063c6501c8914610dee578063c867d60b14610e2b57610452565b8063a715184d14610c74578063a8aa1b3114610c9f578063a9059cbb14610cca578063b37f80f814610d07578063b38d323c14610d3257610452565b806395d89b411161020357806395d89b4114610b8d5780639990038714610bb85780639d1944f514610be35780639d6228c514610c0c578063a457c2d714610c3757610452565b80638da5cb5b14610ae15780638f32d59b14610b0c5780639213691314610b3757806393011a9914610b6257610452565b806351bc3c8511610345578063764d72bf116102cd5780638236802e116102915780638236802e146109fc57806383b4ac6814610a255780638526148514610a505780638b42507f14610a7b5780638c5a133d14610ab857610452565b8063764d72bf1461092957806377a3b60914610952578063790ca4131461097d5780637bce5a04146109a85780637e504d59146109d357610452565b806365216a411161031457806365216a411461085857806370a0823114610881578063715018a6146108be578063728d41c9146108d5578063741c8907146108fe57610452565b806351bc3c85146107c45780635b19f70d146107db5780636140a51e1461080657806364f5a5bb1461082f57610452565b80632f34d282116103d35780633eaaf86b116103975780633eaaf86b146106dd5780634144d9e4146107085780634355855a146107335780634bc6dd18146107705780634d709adf1461079957610452565b80632f34d282146105f8578063313ce56714610621578063320d45341461064c578063334901911461067557806339509351146106a057610452565b806323a2f1fc1161041a57806323a2f1fc1461051357806323b872dd1461053e5780632563ae831461057b5780632b112e49146105a45780632d48e896146105cf57610452565b806306fdde0314610457578063095ea7b314610482578063180fe7c9146104bf57806318160ddd146104e857610452565b3661045257005b600080fd5b34801561046357600080fd5b5061046c6111d5565b604051610479919061555b565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a49190614e2c565b611212565b6040516104b6919061550a565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e19190614dec565b611229565b005b3480156104f457600080fd5b506104fd611295565b60405161050a919061577d565b60405180910390f35b34801561051f57600080fd5b5061052861129f565b604051610535919061577d565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190614d99565b6112a5565b604051610572919061550a565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190614eed565b6114c6565b005b3480156105b057600080fd5b506105b96114f4565b6040516105c6919061577d565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f19190614fb4565b6115a2565b005b34801561060457600080fd5b5061061f600480360381019061061a9190614cac565b611646565b005b34801561062d57600080fd5b5061063661169b565b604051610643919061581b565b60405180910390f35b34801561065857600080fd5b50610673600480360381019061066e9190614f87565b6116a4565b005b34801561068157600080fd5b5061068a6116bf565b604051610697919061577d565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c29190614e2c565b6116c5565b6040516106d4919061550a565b60405180910390f35b3480156106e957600080fd5b506106f26118c1565b6040516106ff919061577d565b60405180910390f35b34801561071457600080fd5b5061071d6118c7565b60405161072a9190615405565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190614cac565b6118ed565b604051610767919061550a565b60405180910390f35b34801561077c57600080fd5b5061079760048036038101906107929190614eed565b61190d565b005b3480156107a557600080fd5b506107ae611961565b6040516107bb9190615525565b60405180910390f35b3480156107d057600080fd5b506107d9611987565b005b3480156107e757600080fd5b506107f0611a2c565b6040516107fd919061577d565b60405180910390f35b34801561081257600080fd5b5061082d60048036038101906108289190614eed565b611a32565b005b34801561083b57600080fd5b5061085660048036038101906108519190614f87565b611a60565b005b34801561086457600080fd5b5061087f600480360381019061087a9190614e6c565b611a7b565b005b34801561088d57600080fd5b506108a860048036038101906108a39190614cac565b611dce565b6040516108b5919061577d565b60405180910390f35b3480156108ca57600080fd5b506108d3611e17565b005b3480156108e157600080fd5b506108fc60048036038101906108f79190614f87565b611ece565b005b34801561090a57600080fd5b50610913611ee9565b604051610920919061550a565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b9190614cac565b611efc565b005b34801561095e57600080fd5b50610967611f5d565b604051610974919061577d565b60405180910390f35b34801561098957600080fd5b50610992611f63565b60405161099f919061577d565b60405180910390f35b3480156109b457600080fd5b506109bd611f69565b6040516109ca919061577d565b60405180910390f35b3480156109df57600080fd5b506109fa60048036038101906109f59190614dec565b611f6f565b005b348015610a0857600080fd5b50610a236004803603810190610a1e9190614dec565b611fdb565b005b348015610a3157600080fd5b50610a3a612047565b604051610a47919061550a565b60405180910390f35b348015610a5c57600080fd5b50610a6561205f565b604051610a72919061550a565b60405180910390f35b348015610a8757600080fd5b50610aa26004803603810190610a9d9190614cac565b612072565b604051610aaf919061550a565b60405180910390f35b348015610ac457600080fd5b50610adf6004803603810190610ada9190615047565b612092565b005b348015610aed57600080fd5b50610af66120c5565b604051610b039190615405565b60405180910390f35b348015610b1857600080fd5b50610b216120ee565b604051610b2e919061550a565b60405180910390f35b348015610b4357600080fd5b50610b4c612145565b604051610b59919061577d565b60405180910390f35b348015610b6e57600080fd5b50610b7761214b565b604051610b849190615405565b60405180910390f35b348015610b9957600080fd5b50610ba2612171565b604051610baf919061555b565b60405180910390f35b348015610bc457600080fd5b50610bcd6121ae565b604051610bda919061577d565b60405180910390f35b348015610bef57600080fd5b50610c0a6004803603810190610c059190614f87565b6121b4565b005b348015610c1857600080fd5b50610c21612214565b604051610c2e919061577d565b60405180910390f35b348015610c4357600080fd5b50610c5e6004803603810190610c599190614e2c565b61221a565b604051610c6b919061550a565b60405180910390f35b348015610c8057600080fd5b50610c896124aa565b604051610c969190615405565b60405180910390f35b348015610cab57600080fd5b50610cb46124d0565b604051610cc19190615405565b60405180910390f35b348015610cd657600080fd5b50610cf16004803603810190610cec9190614e2c565b6124f6565b604051610cfe919061550a565b60405180910390f35b348015610d1357600080fd5b50610d1c61254a565b604051610d29919061550a565b60405180910390f35b348015610d3e57600080fd5b50610d596004803603810190610d549190614f47565b61255d565b005b348015610d6757600080fd5b50610d826004803603810190610d7d9190614cac565b61259a565b604051610d8f919061550a565b60405180910390f35b348015610da457600080fd5b50610dad6125ba565b604051610dba919061577d565b60405180910390f35b348015610dcf57600080fd5b50610dd86125c0565b604051610de5919061577d565b60405180910390f35b348015610dfa57600080fd5b50610e156004803603810190610e109190614d99565b6125c6565b604051610e22919061550a565b60405180910390f35b348015610e3757600080fd5b50610e526004803603810190610e4d9190614cac565b612693565b604051610e5f919061550a565b60405180910390f35b348015610e7457600080fd5b50610e7d6126b3565b604051610e8a919061577d565b60405180910390f35b348015610e9f57600080fd5b50610ea86126b9565b604051610eb5919061550a565b60405180910390f35b348015610eca57600080fd5b50610ee56004803603810190610ee09190614cac565b6126cc565b604051610ef2919061550a565b60405180910390f35b348015610f0757600080fd5b50610f226004803603810190610f1d9190614d46565b612722565b005b348015610f3057600080fd5b50610f4b6004803603810190610f469190614cac565b6127fb565b604051610f58919061550a565b60405180910390f35b348015610f6d57600080fd5b50610f886004803603810190610f839190614d06565b61281b565b604051610f95919061577d565b60405180910390f35b348015610faa57600080fd5b50610fc56004803603810190610fc09190614dec565b6128a2565b005b348015610fd357600080fd5b50610fdc6129a1565b604051610fe9919061577d565b60405180910390f35b348015610ffe57600080fd5b5061101960048036038101906110149190614d99565b6129a7565b604051611026919061550a565b60405180910390f35b34801561103b57600080fd5b5061105660048036038101906110519190615047565b612a50565b005b34801561106457600080fd5b5061107f600480360381019061107a9190614dec565b612a83565b005b34801561108d57600080fd5b50611096612c33565b6040516110a3919061577d565b60405180910390f35b3480156110b857600080fd5b506110d360048036038101906110ce9190614cac565b612c39565b005b3480156110e157600080fd5b506110ea612c56565b6040516110f79190615405565b60405180910390f35b34801561110c57600080fd5b50611115612c7c565b604051611122919061577d565b60405180910390f35b34801561113757600080fd5b50611152600480360381019061114d9190614dec565b612c82565b005b34801561116057600080fd5b50611169612eb0565b604051611176919061577d565b60405180910390f35b34801561118b57600080fd5b50611194612eb6565b6040516111a1919061550a565b60405180910390f35b3480156111b657600080fd5b506111bf612ec9565b6040516111cc9190615540565b60405180910390f35b60606040518060400160405280600a81526020017f53616e746120446f676500000000000000000000000000000000000000000000815250905090565b600061121f338484612fb4565b6001905092915050565b6112316120ee565b61123a57600080fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601854905090565b601a5481565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112e257600080fd5b600019600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146114ae5761142d836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461317f9092919063ffffffff16565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6114b98585856131e3565b5060019150509392505050565b6114ce6120ee565b6114d757600080fd5b80601c60016101000a81548160ff02191690831515021790555050565b600061159d600d60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461158f600d600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601854613b3c90919063ffffffff16565b613b3c90919063ffffffff16565b905090565b6115aa6120ee565b6115b357600080fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004016116109291906157f2565b600060405180830381600087803b15801561162a57600080fd5b505af115801561163e573d6000803e3d6000fd5b505050505050565b61164e6120ee565b61165757600080fd5b80602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006006905090565b6116ac6120ee565b6116b557600080fd5b80601b8190555050565b60195481565b600061175682600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b8690919063ffffffff16565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516118af919061577d565b60405180910390a36001905092915050565b60185481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b6119156120ee565b61191e57600080fd5b80156119435780601c60026101000a81548160ff02191690831515021790555061195e565b80601c60026101000a81548160ff0219169083151502179055505b50565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61198f6120ee565b61199857600080fd5b6001602360146101000a81548160ff021916908315150217905550600060095411156119ca576119c9600954613be4565b5b6000600a5411156119e1576119e0600a54613c68565b5b6000600b5411156119f8576119f7600b54613d16565b5b6000600c541115611a0f57611a0e600c54613dc4565b5b6000602360146101000a81548160ff021916908315150217905550565b60035481565b611a3a6120ee565b611a4357600080fd5b80601c60006101000a81548160ff02191690831515021790555050565b611a686120ee565b611a7157600080fd5b80601a8190555050565b611a836120ee565b611a8c57600080fd5b818190508484905014611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb906156bd565b60405180910390fd5b60008033905060005b84849050811015611b2257848482818110611afb57611afa615b29565b5b9050602002013583611b0d919061588b565b92508080611b1a90615a82565b915050611add565b5081611b2d82611dce565b1015611b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b659061563d565b60405180910390fd5b611bc082600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3c90919063ffffffff16565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b86869050811015611dc557611ca3858583818110611c2757611c26615b29565b5b90506020020135600d60008a8a86818110611c4557611c44615b29565b5b9050602002016020810190611c5a9190614cac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b8690919063ffffffff16565b600d6000898985818110611cba57611cb9615b29565b5b9050602002016020810190611ccf9190614cac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110611d2057611d1f615b29565b5b9050602002016020810190611d359190614cac565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878785818110611d9657611d95615b29565b5b90506020020135604051611daa919061577d565b60405180910390a38080611dbd90615a82565b915050611c06565b50505050505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611e1f6120ee565b611e2857600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611ed66120ee565b611edf57600080fd5b8060198190555050565b601c60049054906101000a900460ff1681565b611f046120ee565b611f0d57600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f58573d6000803e3d6000fd5b505050565b60045481565b601d5481565b60025481565b611f776120ee565b611f8057600080fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611fe36120ee565b611fec57600080fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602360149054906101000a900460ff1615905090565b601c60009054906101000a900460ff1681565b60146020528060005260406000206000915054906101000a900460ff1681565b61209a6120ee565b6120a357600080fd5b8360018190555082600281905550816004819055508060038190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60065481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f53444f4745000000000000000000000000000000000000000000000000000000815250905090565b60075481565b6121bc6120ee565b6121c557600080fd5b620b71b0811061220a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612201906155fd565b60405180910390fd5b8060208190555050565b600b5481565b600080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831061232a576000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123be565b61233d8382613b3c90919063ffffffff16565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051612497919061577d565b60405180910390a3600191505092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561253357600080fd5b61253e3385856131e3565b50600191505092915050565b601c60039054906101000a900460ff1681565b6125656120ee565b61256e57600080fd5b81601c60036101000a81548160ff02191690831515021790555080156125965742601d819055505b5050565b60136020528060005260406000206000915054906101000a900460ff1681565b600c5481565b60085481565b60006125d06120ee565b6125d957600080fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5711e8b8585856040518463ffffffff1660e01b815260040161263893929190615420565b602060405180830381600087803b15801561265257600080fd5b505af1158015612666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268a9190614f1a565b90509392505050565b60156020528060005260406000206000915054906101000a900460ff1681565b600a5481565b601c60029054906101000a900460ff1681565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61272a6120ee565b61273357600080fd5b82600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128aa6120ee565b6128b357600080fd5b801515601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293d9061575d565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b60006129b16120ee565b6129ba57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016129f5929190615480565b602060405180830381600087803b158015612a0f57600080fd5b505af1158015612a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a479190614f1a565b90509392505050565b612a586120ee565b612a6157600080fd5b8360058190555082600681905550816008819055508060078190555050505050565b612a8b6120ee565b612a9457600080fd5b8015612b2857601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1e906155bd565b60405180910390fd5b5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60015481565b612c416120ee565b612c4a57600080fd5b612c5381613e8f565b50565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b612c8a6120ee565b612c9357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d195750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612d2257600080fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612e1457601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612ddd929190615457565b600060405180830381600087803b158015612df757600080fd5b505af1158015612e0b573d6000803e3d6000fd5b50505050612eac565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683612e5c85611dce565b6040518363ffffffff1660e01b8152600401612e79929190615480565b600060405180830381600087803b158015612e9357600080fd5b505af1158015612ea7573d6000803e3d6000fd5b505050505b5050565b60095481565b601c60019054906101000a900460ff1681565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080831415612f025760009050612f64565b60008284612f109190615912565b9050828482612f1f91906158e1565b14612f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f569061565d565b60405180910390fd5b809150505b92915050565b6000612fac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613f86565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301b906156dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308b9061559d565b60405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051613172919061577d565b60405180910390a3505050565b60008383111582906131c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131be919061555b565b60405180910390fd5b50600083856131d6919061596c565b9050809150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324b9061569d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132bb9061557d565b60405180910390fd5b60008211613307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132fe9061567d565b60405180910390fd5b601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133ab5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6133ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e19061573d565b60405180910390fd5b601c60039054906101000a900460ff168061340957506134086120ee565b5b613448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343f9061571d565b60405180910390fd5b610384601d54613458919061588b565b421180156134735750601c60049054906101000a900460ff16155b801561348257506000601d5414155b15613503576134b16103e86134a3600f601854612eef90919063ffffffff16565b612f6a90919063ffffffff16565b601a819055506134e16103e86134d3600f601854612eef90919063ffffffff16565b612f6a90919063ffffffff16565b6019819055506001601c60046101000a81548160ff0219169083151502179055505b601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135a75750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135bf5750601c60009054906101000a900460ff165b1561360a57601a54821115613609576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136009061561d565b60405180910390fd5b5b602360149054906101000a900460ff16156136315761362a848484613fe9565b9050613b35565b613639614120565b15613647576136466141c7565b5b61369982600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3c90919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006136e8858561425b565b6136f257826136fe565b6136fd8585856143b6565b5b9050601c60019054906101000a900460ff1680156137665750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137cb576019546137898261377b87611dce565b613b8690919063ffffffff16565b11156137ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c1906156fd565b60405180910390fd5b5b61381d81600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b8690919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661394c57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96866138f988611dce565b6040518363ffffffff1660e01b8152600401613916929190615480565b600060405180830381600087803b15801561393057600080fd5b505af1925050508015613941575060015b61394a5761394b565b5b5b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a3857601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96856139e587611dce565b6040518363ffffffff1660e01b8152600401613a02929190615480565b600060405180830381600087803b158015613a1c57600080fd5b505af1925050508015613a2d575060015b613a3657613a37565b5b5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796020546040518263ffffffff1660e01b8152600401613a95919061577d565b600060405180830381600087803b158015613aaf57600080fd5b505af1925050508015613ac0575060015b613ac957613aca565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b27919061577d565b60405180910390a360019150505b9392505050565b6000613b7e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061317f565b905092915050565b6000808284613b95919061588b565b905083811015613bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bd1906155dd565b60405180910390fd5b8091505092915050565b6000613bfc6002600954612f6a90919063ffffffff16565b90506000613c1582600954613b3c90919063ffffffff16565b90506000479050613c2583614821565b6000613c3a8247613b3c90919063ffffffff16565b9050613c5185600954613b3c90919063ffffffff16565b600981905550613c618382614a73565b5050505050565b6000479050613c7682614821565b6000613c8b8247613b3c90919063ffffffff16565b9050613ca283600a54613b3c90919063ffffffff16565b600a81905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613d10573d6000803e3d6000fd5b50505050565b6000479050613d2482614821565b6000613d398247613b3c90919063ffffffff16565b9050613d5083600b54613b3c90919063ffffffff16565b600b81905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613dbe573d6000803e3d6000fd5b50505050565b6000479050613dd282614821565b6000613de78247613b3c90919063ffffffff16565b9050613dfe83600c54613b3c90919063ffffffff16565b600c81905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613e6e57600080fd5b505af193505050508015613e80575060015b613e8957613e8a565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613ec957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290613fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fc4919061555b565b60405180910390fd5b5060008385613fdc91906158e1565b9050809150509392505050565b600061403d82600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3c90919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140d282600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b8690919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b60008061412c30611dce565b90506000601b548210159050601c60029054906101000a900460ff1680156141615750602360149054906101000a900460ff16155b801561416a5750805b80156141c05750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9250505090565b6001602360146101000a81548160ff021916908315150217905550600060095411156141f9576141f8600954613be4565b5b6000600a5411156142105761420f600a54613c68565b5b6000600b54111561422757614226600b54613d16565b5b6000600c54111561423e5761423d600c54613dc4565b5b6000602360146101000a81548160ff021916908315150217905550565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806142fe5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561430c57600090506143b0565b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143ad5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90505b92915050565b600080600080600080601360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561455f5761443a6103e861442c6001548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b9350836009600082825461444e919061588b565b9250508190555061447e6103e86144706002548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b925082600a6000828254614492919061588b565b925050819055506144c26103e86144b46004548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b915081600c60008282546144d6919061588b565b925050819055506145066103e86144f86003548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b905080600b600082825461451a919061588b565b925050819055506145588161454a8461453c8789613b8690919063ffffffff16565b613b8690919063ffffffff16565b613b8690919063ffffffff16565b94506146fc565b601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156146fb576145da6103e86145cc6005548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b935083600960008282546145ee919061588b565b9250508190555061461e6103e86146106006548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b925082600a6000828254614632919061588b565b925050819055506146626103e86146546008548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b915081600c6000828254614676919061588b565b925050819055506146a66103e86146986007548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b905080600b60008282546146ba919061588b565b925050819055506146f8816146ea846146dc8789613b8690919063ffffffff16565b613b8690919063ffffffff16565b613b8690919063ffffffff16565b94505b5b60008511156148005761475785600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b8690919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516147f7919061577d565b60405180910390a35b6148138588613b3c90919063ffffffff16565b955050505050509392505050565b6000600267ffffffffffffffff81111561483e5761483d615b58565b5b60405190808252806020026020018201604052801561486c5781602001602082028036833780820191505090505b509050308160008151811061488457614883615b29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561492657600080fd5b505afa15801561493a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061495e9190614cd9565b8160018151811061497257614971615b29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506149d930602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fb4565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614a3d959493929190615798565b600060405180830381600087803b158015614a5757600080fd5b505af1158015614a6b573d6000803e3d6000fd5b505050505050565b614aa030602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fb4565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401614b29969594939291906154a9565b6060604051808303818588803b158015614b4257600080fd5b505af1158015614b56573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614b7b9190614ff4565b5050505050565b600081359050614b9181615f71565b92915050565b600081519050614ba681615f71565b92915050565b60008083601f840112614bc257614bc1615b8c565b5b8235905067ffffffffffffffff811115614bdf57614bde615b87565b5b602083019150836020820283011115614bfb57614bfa615b91565b5b9250929050565b60008083601f840112614c1857614c17615b8c565b5b8235905067ffffffffffffffff811115614c3557614c34615b87565b5b602083019150836020820283011115614c5157614c50615b91565b5b9250929050565b600081359050614c6781615f88565b92915050565b600081519050614c7c81615f88565b92915050565b600081359050614c9181615f9f565b92915050565b600081519050614ca681615f9f565b92915050565b600060208284031215614cc257614cc1615b9b565b5b6000614cd084828501614b82565b91505092915050565b600060208284031215614cef57614cee615b9b565b5b6000614cfd84828501614b97565b91505092915050565b60008060408385031215614d1d57614d1c615b9b565b5b6000614d2b85828601614b82565b9250506020614d3c85828601614b82565b9150509250929050565b600080600060608486031215614d5f57614d5e615b9b565b5b6000614d6d86828701614b82565b9350506020614d7e86828701614b82565b9250506040614d8f86828701614b82565b9150509250925092565b600080600060608486031215614db257614db1615b9b565b5b6000614dc086828701614b82565b9350506020614dd186828701614b82565b9250506040614de286828701614c82565b9150509250925092565b60008060408385031215614e0357614e02615b9b565b5b6000614e1185828601614b82565b9250506020614e2285828601614c58565b9150509250929050565b60008060408385031215614e4357614e42615b9b565b5b6000614e5185828601614b82565b9250506020614e6285828601614c82565b9150509250929050565b60008060008060408587031215614e8657614e85615b9b565b5b600085013567ffffffffffffffff811115614ea457614ea3615b96565b5b614eb087828801614bac565b9450945050602085013567ffffffffffffffff811115614ed357614ed2615b96565b5b614edf87828801614c02565b925092505092959194509250565b600060208284031215614f0357614f02615b9b565b5b6000614f1184828501614c58565b91505092915050565b600060208284031215614f3057614f2f615b9b565b5b6000614f3e84828501614c6d565b91505092915050565b60008060408385031215614f5e57614f5d615b9b565b5b6000614f6c85828601614c58565b9250506020614f7d85828601614c58565b9150509250929050565b600060208284031215614f9d57614f9c615b9b565b5b6000614fab84828501614c82565b91505092915050565b60008060408385031215614fcb57614fca615b9b565b5b6000614fd985828601614c82565b9250506020614fea85828601614c82565b9150509250929050565b60008060006060848603121561500d5761500c615b9b565b5b600061501b86828701614c97565b935050602061502c86828701614c97565b925050604061503d86828701614c97565b9150509250925092565b6000806000806080858703121561506157615060615b9b565b5b600061506f87828801614c82565b945050602061508087828801614c82565b935050604061509187828801614c82565b92505060606150a287828801614c82565b91505092959194509250565b60006150ba83836150c6565b60208301905092915050565b6150cf816159a0565b82525050565b6150de816159a0565b82525050565b60006150ef82615846565b6150f98185615869565b935061510483615836565b8060005b8381101561513557815161511c88826150ae565b97506151278361585c565b925050600181019050615108565b5085935050505092915050565b61514b816159b2565b82525050565b61515a816159f5565b82525050565b61516981615a07565b82525050565b61517881615a19565b82525050565b600061518982615851565b615193818561587a565b93506151a3818560208601615a4f565b6151ac81615ba0565b840191505092915050565b60006151c460238361587a565b91506151cf82615bb1565b604082019050919050565b60006151e760228361587a565b91506151f282615c00565b604082019050919050565b600061520a60128361587a565b915061521582615c4f565b602082019050919050565b600061522d601b8361587a565b915061523882615c78565b602082019050919050565b6000615250601d8361587a565b915061525b82615ca1565b602082019050919050565b6000615273602f8361587a565b915061527e82615cca565b604082019050919050565b6000615296601d8361587a565b91506152a182615d19565b602082019050919050565b60006152b960218361587a565b91506152c482615d42565b604082019050919050565b60006152dc60168361587a565b91506152e782615d91565b602082019050919050565b60006152ff60258361587a565b915061530a82615dba565b604082019050919050565b600061532260118361587a565b915061532d82615e09565b602082019050919050565b600061534560248361587a565b915061535082615e32565b604082019050919050565b6000615368602c8361587a565b915061537382615e81565b604082019050919050565b600061538b601b8361587a565b915061539682615ed0565b602082019050919050565b60006153ae602d8361587a565b91506153b982615ef9565b604082019050919050565b60006153d160128361587a565b91506153dc82615f48565b602082019050919050565b6153f0816159de565b82525050565b6153ff816159e8565b82525050565b600060208201905061541a60008301846150d5565b92915050565b600060608201905061543560008301866150d5565b61544260208301856150d5565b61544f60408301846153e7565b949350505050565b600060408201905061546c60008301856150d5565b615479602083018461516f565b9392505050565b600060408201905061549560008301856150d5565b6154a260208301846153e7565b9392505050565b600060c0820190506154be60008301896150d5565b6154cb60208301886153e7565b6154d8604083018761516f565b6154e5606083018661516f565b6154f260808301856150d5565b6154ff60a08301846153e7565b979650505050505050565b600060208201905061551f6000830184615142565b92915050565b600060208201905061553a6000830184615151565b92915050565b60006020820190506155556000830184615160565b92915050565b60006020820190508181036000830152615575818461517e565b905092915050565b60006020820190508181036000830152615596816151b7565b9050919050565b600060208201905081810360008301526155b6816151da565b9050919050565b600060208201905081810360008301526155d6816151fd565b9050919050565b600060208201905081810360008301526155f681615220565b9050919050565b6000602082019050818103600083015261561681615243565b9050919050565b6000602082019050818103600083015261563681615266565b9050919050565b6000602082019050818103600083015261565681615289565b9050919050565b60006020820190508181036000830152615676816152ac565b9050919050565b60006020820190508181036000830152615696816152cf565b9050919050565b600060208201905081810360008301526156b6816152f2565b9050919050565b600060208201905081810360008301526156d681615315565b9050919050565b600060208201905081810360008301526156f681615338565b9050919050565b600060208201905081810360008301526157168161535b565b9050919050565b600060208201905081810360008301526157368161537e565b9050919050565b60006020820190508181036000830152615756816153a1565b9050919050565b60006020820190508181036000830152615776816153c4565b9050919050565b600060208201905061579260008301846153e7565b92915050565b600060a0820190506157ad60008301886153e7565b6157ba602083018761516f565b81810360408301526157cc81866150e4565b90506157db60608301856150d5565b6157e860808301846153e7565b9695505050505050565b600060408201905061580760008301856153e7565b61581460208301846153e7565b9392505050565b600060208201905061583060008301846153f6565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615896826159de565b91506158a1836159de565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156158d6576158d5615acb565b5b828201905092915050565b60006158ec826159de565b91506158f7836159de565b92508261590757615906615afa565b5b828204905092915050565b600061591d826159de565b9150615928836159de565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561596157615960615acb565b5b828202905092915050565b6000615977826159de565b9150615982836159de565b92508282101561599557615994615acb565b5b828203905092915050565b60006159ab826159be565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000615a0082615a2b565b9050919050565b6000615a1282615a2b565b9050919050565b6000615a24826159de565b9050919050565b6000615a3682615a3d565b9050919050565b6000615a48826159be565b9050919050565b60005b83811015615a6d578082015181840152602081019050615a52565b83811115615a7c576000848401525b50505050565b6000615a8d826159de565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615ac057615abf615acb565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5061697220416c72656164792053657421210000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f476173206d757374206265206c6f776572207468616e20373530303030000000600082015250565b7f4572726f723a205472616e7366657220616d6f756e742065786365656473207460008201527f6865206d61785478416d6f756e742e0000000000000000000000000000000000602082015250565b7f4552524f523a20496e73756666696369656e742042616c616e63652121000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e76616c696420416d6f756e742100000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4c656e677468204d69736d617463682121000000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a205472616e7366657220416d6f756e742065786365656473205760008201527f616c6c6574204c696d69742e0000000000000000000000000000000000000000602082015250565b7f54726164652069732043757272656e746c792050617573656421210000000000600082015250565b7f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060008201527f6e6f7420416c6c6f776564212100000000000000000000000000000000000000602082015250565b7f4572726f723a204e6f74206368616e6765640000000000000000000000000000600082015250565b615f7a816159a0565b8114615f8557600080fd5b50565b615f91816159b2565b8114615f9c57600080fd5b50565b615fa8816159de565b8114615fb357600080fd5b5056fea26469706673582212208d0fbb4ae53e1299851468b009137e35aa35de2cc2e6245aa03c370ef52367c164736f6c63430008070033608060405273dac17f958d2ee523a2206206994597c13d831ec7600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555064e8d4a51000600c55610e10600d55620f4240600e553480156200007c57600080fd5b5060405162002287380380620022878339818101604052810190620000a2919062000193565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000f357737a250d5630b4cf539739df2c5dacb4c659f2488d620000f5565b805b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000218565b6000815190506200018d81620001fe565b92915050565b600060208284031215620001ac57620001ab620001f9565b5b6000620001bc848285016200017c565b91505092915050565b6000620001d282620001d9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200020981620001c5565b81146200021557600080fd5b50565b61205f80620002286000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed1461030f578063f0fc6bca1461033a578063ffb2c47914610351578063ffd49c841461037a576100f3565b8063ce7c2ac21461025e578063d0e30db01461029d578063e2d2e219146102a7578063e5711e8b146102d2576100f3565b80632d48e896116100c65780632d48e896146101b45780633a98ef39146101dd5780634fab0ae814610208578063997664d714610233576100f3565b806311ce023d146100f857806314b6ca961461012357806326987b601461014c57806328fd319814610177575b600080fd5b34801561010457600080fd5b5061010d6103a5565b60405161011a9190611bd9565b60405180910390f35b34801561012f57600080fd5b5061014a60048036038101906101459190611885565b6103ab565b005b34801561015857600080fd5b5061016161066a565b60405161016e9190611bd9565b60405180910390f35b34801561018357600080fd5b5061019e600480360381019061019991906117d8565b610670565b6040516101ab9190611bd9565b60405180910390f35b3480156101c057600080fd5b506101db60048036038101906101d6919061194c565b61078a565b005b3480156101e957600080fd5b506101f26107f4565b6040516101ff9190611bd9565b60405180910390f35b34801561021457600080fd5b5061021d6107fa565b60405161022a9190611bd9565b60405180910390f35b34801561023f57600080fd5b50610248610800565b6040516102559190611bd9565b60405180910390f35b34801561026a57600080fd5b50610285600480360381019061028091906117d8565b610806565b60405161029493929190611bf4565b60405180910390f35b6102a5610830565b005b3480156102b357600080fd5b506102bc610c9d565b6040516102c99190611bd9565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f49190611832565b610ca3565b6040516103069190611b10565b60405180910390f35b34801561031b57600080fd5b50610324610d94565b6040516103319190611bd9565b60405180910390f35b34801561034657600080fd5b5061034f610d9a565b005b34801561035d57600080fd5b50610378600480360381019061037391906118f2565b610da5565b005b34801561038657600080fd5b5061038f610f39565b60405161039c9190611bd9565b60405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040357600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104585761045782610f3f565b5b6000811180156104aa57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104bd576104b8826111e6565b61051f565b60008114801561050f57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561051e5761051d82611295565b5b5b6105888161057a600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460075461149c90919063ffffffff16565b6114e690919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610620600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611544565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600b5481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106c55760009050610785565b6000610712600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611544565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161076d57600092505050610785565b610780818361149c90919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e257600080fd5b81600d8190555080600e819055505050565b60075481565b600e5481565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088857600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108e59190611acc565b60206040518083038186803b1580156108fd57600080fd5b505afa158015610911573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610935919061191f565b90506000600267ffffffffffffffff81111561095457610953611f27565b5b6040519080825280602002602001820160405280156109825781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ed57600080fd5b505afa158015610a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a259190611805565b81600081518110610a3957610a38611ef8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610aaa57610aa9611ef8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610b479493929190611b2b565b6000604051808303818588803b158015610b6057600080fd5b505af1158015610b74573d6000803e3d6000fd5b50505050506000610c3883600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bda9190611acc565b60206040518083038186803b158015610bf257600080fd5b505afa158015610c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2a919061191f565b61149c90919063ffffffff16565b9050610c4f816008546114e690919063ffffffff16565b600881905550610c92610c81600754610c7384600c5461157690919063ffffffff16565b6115f190919063ffffffff16565b600a546114e690919063ffffffff16565b600a81905550505050565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cfe57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610d39929190611ae7565b602060405180830381600087803b158015610d5357600080fd5b505af1158015610d67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8b91906118c5565b90509392505050565b60095481565b610da333610f3f565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dfd57600080fd5b600060038054905090506000811415610e165750610f36565b6000805a905060005b8483108015610e2d57508381105b15610f315783600b5410610e44576000600b819055505b610e8d6003600b5481548110610e5d57610e5c611ef8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661163b565b15610edc57610edb6003600b5481548110610eab57610eaa611ef8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f3f565b5b610f01610ef25a8461149c90919063ffffffff16565b846114e690919063ffffffff16565b92505a9150600b6000815480929190610f1990611e22565b91905055508080610f2990611e22565b915050610e1f565b505050505b50565b600d5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610f8f576111e3565b6000610f9a82610670565b905060008111156111e157610fba816009546114e690919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161101d929190611ae7565b602060405180830381600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106f91906118c5565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061110981600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546114e690919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061119a600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611544565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490506112a99190611d61565b815481106112ba576112b9611ef8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061133857611337611ef8565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460046000600360016003805490506113d89190611d61565b815481106113e9576113e8611ef8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600380548061146457611463611ec9565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b60006114de83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116a8565b905092915050565b60008082846114f59190611c80565b90508381101561153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153190611b99565b60405180910390fd5b8091505092915050565b600061156f600c54611561600a548561157690919063ffffffff16565b6115f190919063ffffffff16565b9050919050565b60008083141561158957600090506115eb565b600082846115979190611d07565b90508284826115a69190611cd6565b146115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd90611bb9565b60405180910390fd5b809150505b92915050565b600061163383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061170c565b905092915050565b600042600d54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461168b9190611c80565b1080156116a15750600e5461169f83610670565b115b9050919050565b60008383111582906116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e79190611b77565b60405180910390fd5b50600083856116ff9190611d61565b9050809150509392505050565b60008083118290611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a9190611b77565b60405180910390fd5b50600083856117629190611cd6565b9050809150509392505050565b60008135905061177e81611fe4565b92915050565b60008151905061179381611fe4565b92915050565b6000815190506117a881611ffb565b92915050565b6000813590506117bd81612012565b92915050565b6000815190506117d281612012565b92915050565b6000602082840312156117ee576117ed611f56565b5b60006117fc8482850161176f565b91505092915050565b60006020828403121561181b5761181a611f56565b5b600061182984828501611784565b91505092915050565b60008060006060848603121561184b5761184a611f56565b5b60006118598682870161176f565b935050602061186a8682870161176f565b925050604061187b868287016117ae565b9150509250925092565b6000806040838503121561189c5761189b611f56565b5b60006118aa8582860161176f565b92505060206118bb858286016117ae565b9150509250929050565b6000602082840312156118db576118da611f56565b5b60006118e984828501611799565b91505092915050565b60006020828403121561190857611907611f56565b5b6000611916848285016117ae565b91505092915050565b60006020828403121561193557611934611f56565b5b6000611943848285016117c3565b91505092915050565b6000806040838503121561196357611962611f56565b5b6000611971858286016117ae565b9250506020611982858286016117ae565b9150509250929050565b600061199883836119a4565b60208301905092915050565b6119ad81611d95565b82525050565b6119bc81611d95565b82525050565b60006119cd82611c3b565b6119d78185611c5e565b93506119e283611c2b565b8060005b83811015611a135781516119fa888261198c565b9750611a0583611c51565b9250506001810190506119e6565b5085935050505092915050565b611a2981611da7565b82525050565b611a3881611ddd565b82525050565b6000611a4982611c46565b611a538185611c6f565b9350611a63818560208601611def565b611a6c81611f5b565b840191505092915050565b6000611a84601b83611c6f565b9150611a8f82611f6c565b602082019050919050565b6000611aa7602183611c6f565b9150611ab282611f95565b604082019050919050565b611ac681611dd3565b82525050565b6000602082019050611ae160008301846119b3565b92915050565b6000604082019050611afc60008301856119b3565b611b096020830184611abd565b9392505050565b6000602082019050611b256000830184611a20565b92915050565b6000608082019050611b406000830187611a2f565b8181036020830152611b5281866119c2565b9050611b6160408301856119b3565b611b6e6060830184611abd565b95945050505050565b60006020820190508181036000830152611b918184611a3e565b905092915050565b60006020820190508181036000830152611bb281611a77565b9050919050565b60006020820190508181036000830152611bd281611a9a565b9050919050565b6000602082019050611bee6000830184611abd565b92915050565b6000606082019050611c096000830186611abd565b611c166020830185611abd565b611c236040830184611abd565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611c8b82611dd3565b9150611c9683611dd3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ccb57611cca611e6b565b5b828201905092915050565b6000611ce182611dd3565b9150611cec83611dd3565b925082611cfc57611cfb611e9a565b5b828204905092915050565b6000611d1282611dd3565b9150611d1d83611dd3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d5657611d55611e6b565b5b828202905092915050565b6000611d6c82611dd3565b9150611d7783611dd3565b925082821015611d8a57611d89611e6b565b5b828203905092915050565b6000611da082611db3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611de882611dd3565b9050919050565b60005b83811015611e0d578082015181840152602081019050611df2565b83811115611e1c576000848401525b50505050565b6000611e2d82611dd3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611e6057611e5f611e6b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b611fed81611d95565b8114611ff857600080fd5b50565b61200481611da7565b811461200f57600080fd5b50565b61201b81611dd3565b811461202657600080fd5b5056fea2646970667358221220fde1b30b84cd787a9c7c90cd4cb19b020ff6ca9302e9452d873e1a5aa074cffe64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061044b5760003560e01c80638da5cb5b11610234578063cfe0e6191161012e578063e653da08116100b6578063f63743421161007a578063f637434214611100578063f708a64f1461112b578063f832679514611154578063f872858a1461117f578063f887ea40146111aa57610452565b8063e653da081461102f578063ea8b2c4414611058578063f11a24d314611081578063f2fde38b146110ac578063f48f2594146110d557610452565b8063dbac26e9116100fd578063dbac26e914610f24578063dd62ed3e14610f61578063dde04b9514610f9e578063e2f4560514610fc7578063e5711e8b14610ff257610452565b8063cfe0e61914610e68578063d4057d7e14610e93578063d439979014610ebe578063d7c0103214610efb57610452565b8063a715184d116101bc578063b62496f511610180578063b62496f514610d5b578063b677814c14610d98578063bb8d513114610dc3578063c6501c8914610dee578063c867d60b14610e2b57610452565b8063a715184d14610c74578063a8aa1b3114610c9f578063a9059cbb14610cca578063b37f80f814610d07578063b38d323c14610d3257610452565b806395d89b411161020357806395d89b4114610b8d5780639990038714610bb85780639d1944f514610be35780639d6228c514610c0c578063a457c2d714610c3757610452565b80638da5cb5b14610ae15780638f32d59b14610b0c5780639213691314610b3757806393011a9914610b6257610452565b806351bc3c8511610345578063764d72bf116102cd5780638236802e116102915780638236802e146109fc57806383b4ac6814610a255780638526148514610a505780638b42507f14610a7b5780638c5a133d14610ab857610452565b8063764d72bf1461092957806377a3b60914610952578063790ca4131461097d5780637bce5a04146109a85780637e504d59146109d357610452565b806365216a411161031457806365216a411461085857806370a0823114610881578063715018a6146108be578063728d41c9146108d5578063741c8907146108fe57610452565b806351bc3c85146107c45780635b19f70d146107db5780636140a51e1461080657806364f5a5bb1461082f57610452565b80632f34d282116103d35780633eaaf86b116103975780633eaaf86b146106dd5780634144d9e4146107085780634355855a146107335780634bc6dd18146107705780634d709adf1461079957610452565b80632f34d282146105f8578063313ce56714610621578063320d45341461064c578063334901911461067557806339509351146106a057610452565b806323a2f1fc1161041a57806323a2f1fc1461051357806323b872dd1461053e5780632563ae831461057b5780632b112e49146105a45780632d48e896146105cf57610452565b806306fdde0314610457578063095ea7b314610482578063180fe7c9146104bf57806318160ddd146104e857610452565b3661045257005b600080fd5b34801561046357600080fd5b5061046c6111d5565b604051610479919061555b565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a49190614e2c565b611212565b6040516104b6919061550a565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e19190614dec565b611229565b005b3480156104f457600080fd5b506104fd611295565b60405161050a919061577d565b60405180910390f35b34801561051f57600080fd5b5061052861129f565b604051610535919061577d565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190614d99565b6112a5565b604051610572919061550a565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190614eed565b6114c6565b005b3480156105b057600080fd5b506105b96114f4565b6040516105c6919061577d565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f19190614fb4565b6115a2565b005b34801561060457600080fd5b5061061f600480360381019061061a9190614cac565b611646565b005b34801561062d57600080fd5b5061063661169b565b604051610643919061581b565b60405180910390f35b34801561065857600080fd5b50610673600480360381019061066e9190614f87565b6116a4565b005b34801561068157600080fd5b5061068a6116bf565b604051610697919061577d565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c29190614e2c565b6116c5565b6040516106d4919061550a565b60405180910390f35b3480156106e957600080fd5b506106f26118c1565b6040516106ff919061577d565b60405180910390f35b34801561071457600080fd5b5061071d6118c7565b60405161072a9190615405565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190614cac565b6118ed565b604051610767919061550a565b60405180910390f35b34801561077c57600080fd5b5061079760048036038101906107929190614eed565b61190d565b005b3480156107a557600080fd5b506107ae611961565b6040516107bb9190615525565b60405180910390f35b3480156107d057600080fd5b506107d9611987565b005b3480156107e757600080fd5b506107f0611a2c565b6040516107fd919061577d565b60405180910390f35b34801561081257600080fd5b5061082d60048036038101906108289190614eed565b611a32565b005b34801561083b57600080fd5b5061085660048036038101906108519190614f87565b611a60565b005b34801561086457600080fd5b5061087f600480360381019061087a9190614e6c565b611a7b565b005b34801561088d57600080fd5b506108a860048036038101906108a39190614cac565b611dce565b6040516108b5919061577d565b60405180910390f35b3480156108ca57600080fd5b506108d3611e17565b005b3480156108e157600080fd5b506108fc60048036038101906108f79190614f87565b611ece565b005b34801561090a57600080fd5b50610913611ee9565b604051610920919061550a565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b9190614cac565b611efc565b005b34801561095e57600080fd5b50610967611f5d565b604051610974919061577d565b60405180910390f35b34801561098957600080fd5b50610992611f63565b60405161099f919061577d565b60405180910390f35b3480156109b457600080fd5b506109bd611f69565b6040516109ca919061577d565b60405180910390f35b3480156109df57600080fd5b506109fa60048036038101906109f59190614dec565b611f6f565b005b348015610a0857600080fd5b50610a236004803603810190610a1e9190614dec565b611fdb565b005b348015610a3157600080fd5b50610a3a612047565b604051610a47919061550a565b60405180910390f35b348015610a5c57600080fd5b50610a6561205f565b604051610a72919061550a565b60405180910390f35b348015610a8757600080fd5b50610aa26004803603810190610a9d9190614cac565b612072565b604051610aaf919061550a565b60405180910390f35b348015610ac457600080fd5b50610adf6004803603810190610ada9190615047565b612092565b005b348015610aed57600080fd5b50610af66120c5565b604051610b039190615405565b60405180910390f35b348015610b1857600080fd5b50610b216120ee565b604051610b2e919061550a565b60405180910390f35b348015610b4357600080fd5b50610b4c612145565b604051610b59919061577d565b60405180910390f35b348015610b6e57600080fd5b50610b7761214b565b604051610b849190615405565b60405180910390f35b348015610b9957600080fd5b50610ba2612171565b604051610baf919061555b565b60405180910390f35b348015610bc457600080fd5b50610bcd6121ae565b604051610bda919061577d565b60405180910390f35b348015610bef57600080fd5b50610c0a6004803603810190610c059190614f87565b6121b4565b005b348015610c1857600080fd5b50610c21612214565b604051610c2e919061577d565b60405180910390f35b348015610c4357600080fd5b50610c5e6004803603810190610c599190614e2c565b61221a565b604051610c6b919061550a565b60405180910390f35b348015610c8057600080fd5b50610c896124aa565b604051610c969190615405565b60405180910390f35b348015610cab57600080fd5b50610cb46124d0565b604051610cc19190615405565b60405180910390f35b348015610cd657600080fd5b50610cf16004803603810190610cec9190614e2c565b6124f6565b604051610cfe919061550a565b60405180910390f35b348015610d1357600080fd5b50610d1c61254a565b604051610d29919061550a565b60405180910390f35b348015610d3e57600080fd5b50610d596004803603810190610d549190614f47565b61255d565b005b348015610d6757600080fd5b50610d826004803603810190610d7d9190614cac565b61259a565b604051610d8f919061550a565b60405180910390f35b348015610da457600080fd5b50610dad6125ba565b604051610dba919061577d565b60405180910390f35b348015610dcf57600080fd5b50610dd86125c0565b604051610de5919061577d565b60405180910390f35b348015610dfa57600080fd5b50610e156004803603810190610e109190614d99565b6125c6565b604051610e22919061550a565b60405180910390f35b348015610e3757600080fd5b50610e526004803603810190610e4d9190614cac565b612693565b604051610e5f919061550a565b60405180910390f35b348015610e7457600080fd5b50610e7d6126b3565b604051610e8a919061577d565b60405180910390f35b348015610e9f57600080fd5b50610ea86126b9565b604051610eb5919061550a565b60405180910390f35b348015610eca57600080fd5b50610ee56004803603810190610ee09190614cac565b6126cc565b604051610ef2919061550a565b60405180910390f35b348015610f0757600080fd5b50610f226004803603810190610f1d9190614d46565b612722565b005b348015610f3057600080fd5b50610f4b6004803603810190610f469190614cac565b6127fb565b604051610f58919061550a565b60405180910390f35b348015610f6d57600080fd5b50610f886004803603810190610f839190614d06565b61281b565b604051610f95919061577d565b60405180910390f35b348015610faa57600080fd5b50610fc56004803603810190610fc09190614dec565b6128a2565b005b348015610fd357600080fd5b50610fdc6129a1565b604051610fe9919061577d565b60405180910390f35b348015610ffe57600080fd5b5061101960048036038101906110149190614d99565b6129a7565b604051611026919061550a565b60405180910390f35b34801561103b57600080fd5b5061105660048036038101906110519190615047565b612a50565b005b34801561106457600080fd5b5061107f600480360381019061107a9190614dec565b612a83565b005b34801561108d57600080fd5b50611096612c33565b6040516110a3919061577d565b60405180910390f35b3480156110b857600080fd5b506110d360048036038101906110ce9190614cac565b612c39565b005b3480156110e157600080fd5b506110ea612c56565b6040516110f79190615405565b60405180910390f35b34801561110c57600080fd5b50611115612c7c565b604051611122919061577d565b60405180910390f35b34801561113757600080fd5b50611152600480360381019061114d9190614dec565b612c82565b005b34801561116057600080fd5b50611169612eb0565b604051611176919061577d565b60405180910390f35b34801561118b57600080fd5b50611194612eb6565b6040516111a1919061550a565b60405180910390f35b3480156111b657600080fd5b506111bf612ec9565b6040516111cc9190615540565b60405180910390f35b60606040518060400160405280600a81526020017f53616e746120446f676500000000000000000000000000000000000000000000815250905090565b600061121f338484612fb4565b6001905092915050565b6112316120ee565b61123a57600080fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601854905090565b601a5481565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112e257600080fd5b600019600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146114ae5761142d836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461317f9092919063ffffffff16565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6114b98585856131e3565b5060019150509392505050565b6114ce6120ee565b6114d757600080fd5b80601c60016101000a81548160ff02191690831515021790555050565b600061159d600d60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461158f600d600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601854613b3c90919063ffffffff16565b613b3c90919063ffffffff16565b905090565b6115aa6120ee565b6115b357600080fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004016116109291906157f2565b600060405180830381600087803b15801561162a57600080fd5b505af115801561163e573d6000803e3d6000fd5b505050505050565b61164e6120ee565b61165757600080fd5b80602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006006905090565b6116ac6120ee565b6116b557600080fd5b80601b8190555050565b60195481565b600061175682600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b8690919063ffffffff16565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516118af919061577d565b60405180910390a36001905092915050565b60185481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b6119156120ee565b61191e57600080fd5b80156119435780601c60026101000a81548160ff02191690831515021790555061195e565b80601c60026101000a81548160ff0219169083151502179055505b50565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61198f6120ee565b61199857600080fd5b6001602360146101000a81548160ff021916908315150217905550600060095411156119ca576119c9600954613be4565b5b6000600a5411156119e1576119e0600a54613c68565b5b6000600b5411156119f8576119f7600b54613d16565b5b6000600c541115611a0f57611a0e600c54613dc4565b5b6000602360146101000a81548160ff021916908315150217905550565b60035481565b611a3a6120ee565b611a4357600080fd5b80601c60006101000a81548160ff02191690831515021790555050565b611a686120ee565b611a7157600080fd5b80601a8190555050565b611a836120ee565b611a8c57600080fd5b818190508484905014611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb906156bd565b60405180910390fd5b60008033905060005b84849050811015611b2257848482818110611afb57611afa615b29565b5b9050602002013583611b0d919061588b565b92508080611b1a90615a82565b915050611add565b5081611b2d82611dce565b1015611b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b659061563d565b60405180910390fd5b611bc082600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3c90919063ffffffff16565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b86869050811015611dc557611ca3858583818110611c2757611c26615b29565b5b90506020020135600d60008a8a86818110611c4557611c44615b29565b5b9050602002016020810190611c5a9190614cac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b8690919063ffffffff16565b600d6000898985818110611cba57611cb9615b29565b5b9050602002016020810190611ccf9190614cac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110611d2057611d1f615b29565b5b9050602002016020810190611d359190614cac565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878785818110611d9657611d95615b29565b5b90506020020135604051611daa919061577d565b60405180910390a38080611dbd90615a82565b915050611c06565b50505050505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611e1f6120ee565b611e2857600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611ed66120ee565b611edf57600080fd5b8060198190555050565b601c60049054906101000a900460ff1681565b611f046120ee565b611f0d57600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f58573d6000803e3d6000fd5b505050565b60045481565b601d5481565b60025481565b611f776120ee565b611f8057600080fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611fe36120ee565b611fec57600080fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602360149054906101000a900460ff1615905090565b601c60009054906101000a900460ff1681565b60146020528060005260406000206000915054906101000a900460ff1681565b61209a6120ee565b6120a357600080fd5b8360018190555082600281905550816004819055508060038190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60065481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f53444f4745000000000000000000000000000000000000000000000000000000815250905090565b60075481565b6121bc6120ee565b6121c557600080fd5b620b71b0811061220a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612201906155fd565b60405180910390fd5b8060208190555050565b600b5481565b600080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831061232a576000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123be565b61233d8382613b3c90919063ffffffff16565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051612497919061577d565b60405180910390a3600191505092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561253357600080fd5b61253e3385856131e3565b50600191505092915050565b601c60039054906101000a900460ff1681565b6125656120ee565b61256e57600080fd5b81601c60036101000a81548160ff02191690831515021790555080156125965742601d819055505b5050565b60136020528060005260406000206000915054906101000a900460ff1681565b600c5481565b60085481565b60006125d06120ee565b6125d957600080fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5711e8b8585856040518463ffffffff1660e01b815260040161263893929190615420565b602060405180830381600087803b15801561265257600080fd5b505af1158015612666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268a9190614f1a565b90509392505050565b60156020528060005260406000206000915054906101000a900460ff1681565b600a5481565b601c60029054906101000a900460ff1681565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61272a6120ee565b61273357600080fd5b82600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128aa6120ee565b6128b357600080fd5b801515601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293d9061575d565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b60006129b16120ee565b6129ba57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016129f5929190615480565b602060405180830381600087803b158015612a0f57600080fd5b505af1158015612a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a479190614f1a565b90509392505050565b612a586120ee565b612a6157600080fd5b8360058190555082600681905550816008819055508060078190555050505050565b612a8b6120ee565b612a9457600080fd5b8015612b2857601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1e906155bd565b60405180910390fd5b5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60015481565b612c416120ee565b612c4a57600080fd5b612c5381613e8f565b50565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b612c8a6120ee565b612c9357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d195750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612d2257600080fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612e1457601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612ddd929190615457565b600060405180830381600087803b158015612df757600080fd5b505af1158015612e0b573d6000803e3d6000fd5b50505050612eac565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683612e5c85611dce565b6040518363ffffffff1660e01b8152600401612e79929190615480565b600060405180830381600087803b158015612e9357600080fd5b505af1158015612ea7573d6000803e3d6000fd5b505050505b5050565b60095481565b601c60019054906101000a900460ff1681565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080831415612f025760009050612f64565b60008284612f109190615912565b9050828482612f1f91906158e1565b14612f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f569061565d565b60405180910390fd5b809150505b92915050565b6000612fac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613f86565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301b906156dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308b9061559d565b60405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051613172919061577d565b60405180910390a3505050565b60008383111582906131c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131be919061555b565b60405180910390fd5b50600083856131d6919061596c565b9050809150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324b9061569d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132bb9061557d565b60405180910390fd5b60008211613307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132fe9061567d565b60405180910390fd5b601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133ab5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6133ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e19061573d565b60405180910390fd5b601c60039054906101000a900460ff168061340957506134086120ee565b5b613448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343f9061571d565b60405180910390fd5b610384601d54613458919061588b565b421180156134735750601c60049054906101000a900460ff16155b801561348257506000601d5414155b15613503576134b16103e86134a3600f601854612eef90919063ffffffff16565b612f6a90919063ffffffff16565b601a819055506134e16103e86134d3600f601854612eef90919063ffffffff16565b612f6a90919063ffffffff16565b6019819055506001601c60046101000a81548160ff0219169083151502179055505b601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135a75750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135bf5750601c60009054906101000a900460ff165b1561360a57601a54821115613609576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136009061561d565b60405180910390fd5b5b602360149054906101000a900460ff16156136315761362a848484613fe9565b9050613b35565b613639614120565b15613647576136466141c7565b5b61369982600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3c90919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006136e8858561425b565b6136f257826136fe565b6136fd8585856143b6565b5b9050601c60019054906101000a900460ff1680156137665750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137cb576019546137898261377b87611dce565b613b8690919063ffffffff16565b11156137ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c1906156fd565b60405180910390fd5b5b61381d81600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b8690919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661394c57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96866138f988611dce565b6040518363ffffffff1660e01b8152600401613916929190615480565b600060405180830381600087803b15801561393057600080fd5b505af1925050508015613941575060015b61394a5761394b565b5b5b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a3857601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96856139e587611dce565b6040518363ffffffff1660e01b8152600401613a02929190615480565b600060405180830381600087803b158015613a1c57600080fd5b505af1925050508015613a2d575060015b613a3657613a37565b5b5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796020546040518263ffffffff1660e01b8152600401613a95919061577d565b600060405180830381600087803b158015613aaf57600080fd5b505af1925050508015613ac0575060015b613ac957613aca565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b27919061577d565b60405180910390a360019150505b9392505050565b6000613b7e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061317f565b905092915050565b6000808284613b95919061588b565b905083811015613bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bd1906155dd565b60405180910390fd5b8091505092915050565b6000613bfc6002600954612f6a90919063ffffffff16565b90506000613c1582600954613b3c90919063ffffffff16565b90506000479050613c2583614821565b6000613c3a8247613b3c90919063ffffffff16565b9050613c5185600954613b3c90919063ffffffff16565b600981905550613c618382614a73565b5050505050565b6000479050613c7682614821565b6000613c8b8247613b3c90919063ffffffff16565b9050613ca283600a54613b3c90919063ffffffff16565b600a81905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613d10573d6000803e3d6000fd5b50505050565b6000479050613d2482614821565b6000613d398247613b3c90919063ffffffff16565b9050613d5083600b54613b3c90919063ffffffff16565b600b81905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613dbe573d6000803e3d6000fd5b50505050565b6000479050613dd282614821565b6000613de78247613b3c90919063ffffffff16565b9050613dfe83600c54613b3c90919063ffffffff16565b600c81905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613e6e57600080fd5b505af193505050508015613e80575060015b613e8957613e8a565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613ec957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290613fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fc4919061555b565b60405180910390fd5b5060008385613fdc91906158e1565b9050809150509392505050565b600061403d82600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3c90919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140d282600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b8690919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b60008061412c30611dce565b90506000601b548210159050601c60029054906101000a900460ff1680156141615750602360149054906101000a900460ff16155b801561416a5750805b80156141c05750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9250505090565b6001602360146101000a81548160ff021916908315150217905550600060095411156141f9576141f8600954613be4565b5b6000600a5411156142105761420f600a54613c68565b5b6000600b54111561422757614226600b54613d16565b5b6000600c54111561423e5761423d600c54613dc4565b5b6000602360146101000a81548160ff021916908315150217905550565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806142fe5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561430c57600090506143b0565b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143ad5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90505b92915050565b600080600080600080601360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561455f5761443a6103e861442c6001548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b9350836009600082825461444e919061588b565b9250508190555061447e6103e86144706002548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b925082600a6000828254614492919061588b565b925050819055506144c26103e86144b46004548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b915081600c60008282546144d6919061588b565b925050819055506145066103e86144f86003548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b905080600b600082825461451a919061588b565b925050819055506145588161454a8461453c8789613b8690919063ffffffff16565b613b8690919063ffffffff16565b613b8690919063ffffffff16565b94506146fc565b601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156146fb576145da6103e86145cc6005548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b935083600960008282546145ee919061588b565b9250508190555061461e6103e86146106006548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b925082600a6000828254614632919061588b565b925050819055506146626103e86146546008548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b915081600c6000828254614676919061588b565b925050819055506146a66103e86146986007548a612eef90919063ffffffff16565b612f6a90919063ffffffff16565b905080600b60008282546146ba919061588b565b925050819055506146f8816146ea846146dc8789613b8690919063ffffffff16565b613b8690919063ffffffff16565b613b8690919063ffffffff16565b94505b5b60008511156148005761475785600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b8690919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516147f7919061577d565b60405180910390a35b6148138588613b3c90919063ffffffff16565b955050505050509392505050565b6000600267ffffffffffffffff81111561483e5761483d615b58565b5b60405190808252806020026020018201604052801561486c5781602001602082028036833780820191505090505b509050308160008151811061488457614883615b29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561492657600080fd5b505afa15801561493a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061495e9190614cd9565b8160018151811061497257614971615b29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506149d930602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fb4565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614a3d959493929190615798565b600060405180830381600087803b158015614a5757600080fd5b505af1158015614a6b573d6000803e3d6000fd5b505050505050565b614aa030602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fb4565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401614b29969594939291906154a9565b6060604051808303818588803b158015614b4257600080fd5b505af1158015614b56573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614b7b9190614ff4565b5050505050565b600081359050614b9181615f71565b92915050565b600081519050614ba681615f71565b92915050565b60008083601f840112614bc257614bc1615b8c565b5b8235905067ffffffffffffffff811115614bdf57614bde615b87565b5b602083019150836020820283011115614bfb57614bfa615b91565b5b9250929050565b60008083601f840112614c1857614c17615b8c565b5b8235905067ffffffffffffffff811115614c3557614c34615b87565b5b602083019150836020820283011115614c5157614c50615b91565b5b9250929050565b600081359050614c6781615f88565b92915050565b600081519050614c7c81615f88565b92915050565b600081359050614c9181615f9f565b92915050565b600081519050614ca681615f9f565b92915050565b600060208284031215614cc257614cc1615b9b565b5b6000614cd084828501614b82565b91505092915050565b600060208284031215614cef57614cee615b9b565b5b6000614cfd84828501614b97565b91505092915050565b60008060408385031215614d1d57614d1c615b9b565b5b6000614d2b85828601614b82565b9250506020614d3c85828601614b82565b9150509250929050565b600080600060608486031215614d5f57614d5e615b9b565b5b6000614d6d86828701614b82565b9350506020614d7e86828701614b82565b9250506040614d8f86828701614b82565b9150509250925092565b600080600060608486031215614db257614db1615b9b565b5b6000614dc086828701614b82565b9350506020614dd186828701614b82565b9250506040614de286828701614c82565b9150509250925092565b60008060408385031215614e0357614e02615b9b565b5b6000614e1185828601614b82565b9250506020614e2285828601614c58565b9150509250929050565b60008060408385031215614e4357614e42615b9b565b5b6000614e5185828601614b82565b9250506020614e6285828601614c82565b9150509250929050565b60008060008060408587031215614e8657614e85615b9b565b5b600085013567ffffffffffffffff811115614ea457614ea3615b96565b5b614eb087828801614bac565b9450945050602085013567ffffffffffffffff811115614ed357614ed2615b96565b5b614edf87828801614c02565b925092505092959194509250565b600060208284031215614f0357614f02615b9b565b5b6000614f1184828501614c58565b91505092915050565b600060208284031215614f3057614f2f615b9b565b5b6000614f3e84828501614c6d565b91505092915050565b60008060408385031215614f5e57614f5d615b9b565b5b6000614f6c85828601614c58565b9250506020614f7d85828601614c58565b9150509250929050565b600060208284031215614f9d57614f9c615b9b565b5b6000614fab84828501614c82565b91505092915050565b60008060408385031215614fcb57614fca615b9b565b5b6000614fd985828601614c82565b9250506020614fea85828601614c82565b9150509250929050565b60008060006060848603121561500d5761500c615b9b565b5b600061501b86828701614c97565b935050602061502c86828701614c97565b925050604061503d86828701614c97565b9150509250925092565b6000806000806080858703121561506157615060615b9b565b5b600061506f87828801614c82565b945050602061508087828801614c82565b935050604061509187828801614c82565b92505060606150a287828801614c82565b91505092959194509250565b60006150ba83836150c6565b60208301905092915050565b6150cf816159a0565b82525050565b6150de816159a0565b82525050565b60006150ef82615846565b6150f98185615869565b935061510483615836565b8060005b8381101561513557815161511c88826150ae565b97506151278361585c565b925050600181019050615108565b5085935050505092915050565b61514b816159b2565b82525050565b61515a816159f5565b82525050565b61516981615a07565b82525050565b61517881615a19565b82525050565b600061518982615851565b615193818561587a565b93506151a3818560208601615a4f565b6151ac81615ba0565b840191505092915050565b60006151c460238361587a565b91506151cf82615bb1565b604082019050919050565b60006151e760228361587a565b91506151f282615c00565b604082019050919050565b600061520a60128361587a565b915061521582615c4f565b602082019050919050565b600061522d601b8361587a565b915061523882615c78565b602082019050919050565b6000615250601d8361587a565b915061525b82615ca1565b602082019050919050565b6000615273602f8361587a565b915061527e82615cca565b604082019050919050565b6000615296601d8361587a565b91506152a182615d19565b602082019050919050565b60006152b960218361587a565b91506152c482615d42565b604082019050919050565b60006152dc60168361587a565b91506152e782615d91565b602082019050919050565b60006152ff60258361587a565b915061530a82615dba565b604082019050919050565b600061532260118361587a565b915061532d82615e09565b602082019050919050565b600061534560248361587a565b915061535082615e32565b604082019050919050565b6000615368602c8361587a565b915061537382615e81565b604082019050919050565b600061538b601b8361587a565b915061539682615ed0565b602082019050919050565b60006153ae602d8361587a565b91506153b982615ef9565b604082019050919050565b60006153d160128361587a565b91506153dc82615f48565b602082019050919050565b6153f0816159de565b82525050565b6153ff816159e8565b82525050565b600060208201905061541a60008301846150d5565b92915050565b600060608201905061543560008301866150d5565b61544260208301856150d5565b61544f60408301846153e7565b949350505050565b600060408201905061546c60008301856150d5565b615479602083018461516f565b9392505050565b600060408201905061549560008301856150d5565b6154a260208301846153e7565b9392505050565b600060c0820190506154be60008301896150d5565b6154cb60208301886153e7565b6154d8604083018761516f565b6154e5606083018661516f565b6154f260808301856150d5565b6154ff60a08301846153e7565b979650505050505050565b600060208201905061551f6000830184615142565b92915050565b600060208201905061553a6000830184615151565b92915050565b60006020820190506155556000830184615160565b92915050565b60006020820190508181036000830152615575818461517e565b905092915050565b60006020820190508181036000830152615596816151b7565b9050919050565b600060208201905081810360008301526155b6816151da565b9050919050565b600060208201905081810360008301526155d6816151fd565b9050919050565b600060208201905081810360008301526155f681615220565b9050919050565b6000602082019050818103600083015261561681615243565b9050919050565b6000602082019050818103600083015261563681615266565b9050919050565b6000602082019050818103600083015261565681615289565b9050919050565b60006020820190508181036000830152615676816152ac565b9050919050565b60006020820190508181036000830152615696816152cf565b9050919050565b600060208201905081810360008301526156b6816152f2565b9050919050565b600060208201905081810360008301526156d681615315565b9050919050565b600060208201905081810360008301526156f681615338565b9050919050565b600060208201905081810360008301526157168161535b565b9050919050565b600060208201905081810360008301526157368161537e565b9050919050565b60006020820190508181036000830152615756816153a1565b9050919050565b60006020820190508181036000830152615776816153c4565b9050919050565b600060208201905061579260008301846153e7565b92915050565b600060a0820190506157ad60008301886153e7565b6157ba602083018761516f565b81810360408301526157cc81866150e4565b90506157db60608301856150d5565b6157e860808301846153e7565b9695505050505050565b600060408201905061580760008301856153e7565b61581460208301846153e7565b9392505050565b600060208201905061583060008301846153f6565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615896826159de565b91506158a1836159de565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156158d6576158d5615acb565b5b828201905092915050565b60006158ec826159de565b91506158f7836159de565b92508261590757615906615afa565b5b828204905092915050565b600061591d826159de565b9150615928836159de565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561596157615960615acb565b5b828202905092915050565b6000615977826159de565b9150615982836159de565b92508282101561599557615994615acb565b5b828203905092915050565b60006159ab826159be565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000615a0082615a2b565b9050919050565b6000615a1282615a2b565b9050919050565b6000615a24826159de565b9050919050565b6000615a3682615a3d565b9050919050565b6000615a48826159be565b9050919050565b60005b83811015615a6d578082015181840152602081019050615a52565b83811115615a7c576000848401525b50505050565b6000615a8d826159de565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615ac057615abf615acb565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5061697220416c72656164792053657421210000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f476173206d757374206265206c6f776572207468616e20373530303030000000600082015250565b7f4572726f723a205472616e7366657220616d6f756e742065786365656473207460008201527f6865206d61785478416d6f756e742e0000000000000000000000000000000000602082015250565b7f4552524f523a20496e73756666696369656e742042616c616e63652121000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e76616c696420416d6f756e742100000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4c656e677468204d69736d617463682121000000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a205472616e7366657220416d6f756e742065786365656473205760008201527f616c6c6574204c696d69742e0000000000000000000000000000000000000000602082015250565b7f54726164652069732043757272656e746c792050617573656421210000000000600082015250565b7f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060008201527f6e6f7420416c6c6f776564212100000000000000000000000000000000000000602082015250565b7f4572726f723a204e6f74206368616e6765640000000000000000000000000000600082015250565b615f7a816159a0565b8114615f8557600080fd5b50565b615f91816159b2565b8114615f9c57600080fd5b50565b615fa8816159de565b8114615fb357600080fd5b5056fea26469706673582212208d0fbb4ae53e1299851468b009137e35aa35de2cc2e6245aa03c370ef52367c164736f6c63430008070033

Deployed Bytecode Sourcemap

16771:20369:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20761:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29530:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33613:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21038:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18584:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22097:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32637:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21278:167;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31192:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32962:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20947:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33877:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18499:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29134:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18427:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17678:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18319:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28364:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19227:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26571:354;;;;;;;;;;;;;:::i;:::-;;17077:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32517:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32862:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36478:657;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21151:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16326:126;;;;;;;;;;;;;:::i;:::-;;32755:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18914:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31502:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17119:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18942:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17035:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33741:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31382:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21453:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18745:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18203:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30115:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16061:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16226:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17204:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17768:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20852:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17247:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32341:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17413:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28554:572;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17858:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19201:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21874:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18877:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33989:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18136:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17453:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17290:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31880:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18258:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17373:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18837:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21746:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32089:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18374:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21546:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33399:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18668:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31680:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30464:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33056:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16993:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16460:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19115:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17161:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30812:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17333:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18793:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19270:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20761:83;20798:13;20831:5;;;;;;;;;;;;;;;;;20824:12;;20761:83;:::o;29530:189::-;29633:4;29655:34;29664:10;29675:7;29683:5;29655:8;:34::i;:::-;29707:4;29700:11;;29530:189;;;;:::o;33613:120::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;33718:7:::1;33693:15;:22;33709:5;33693:22;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;33613:120:::0;;:::o;21038:102::-;21093:7;21120:12;;21113:19;;21038:102;:::o;18584:67::-;;;;:::o;22097:447::-;22240:4;22218:2;19042:3;19028:18;;:2;:18;;;;19020:27;;;;;;22313:1:::1;22304:11;22271;:17;22283:4;22271:17;;;;;;;;;;;;;;;:29;22289:10;22271:29;;;;;;;;;;;;;;;;:44;22267:207;;22364:98;22430:5;22364:98;;;;;;;;;;;;;;;;::::0;:11:::1;:17;22376:4;22364:17;;;;;;;;;;;;;;;:61;22400:10;22364:61;;;;;;;;;;;;;;;;:65;;:98;;;;;:::i;:::-;22332:11;:17;22344:4;22332:17;;;;;;;;;;;;;;;:29;22350:10;22332:29;;;;;;;;;;;;;;;:130;;;;22267:207;22484:30;22498:4;22504:2;22508:5;22484:13;:30::i;:::-;;22532:4;22525:11;;22097:447:::0;;;;;;:::o;32637:110::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;32732:7:::1;32713:16;;:26;;;;;;;;;;;;;;;;;;32637:110:::0;:::o;21278:167::-;21331:7;21371:66;21415:9;:21;18025:42;21415:21;;;;;;;;;;;;;;;;21371:39;21388:9;:21;17938:42;21388:21;;;;;;;;;;;;;;;;21371:12;;:16;;:39;;;;:::i;:::-;:43;;:66;;;;:::i;:::-;21351:86;;21278:167;:::o;31192:182::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;31301:11:::1;;;;;;;;;;;:35;;;31337:10;31349:16;31301:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31192:182:::0;;:::o;32962:86::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;33032:8:::1;33025:4;;:15;;;;;;;;;;;;;;;;;;32962:86:::0;:::o;20947:83::-;20988:5;16983:1;21006:16;;20947:83;:::o;33877:104::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;33967:6:::1;33946:18;:27;;;;33877:104:::0;:::o;18499:72::-;;;;:::o;29134:388::-;29234:4;29291:72;29352:10;29291:11;:23;29303:10;29291:23;;;;;;;;;;;;;;;:56;29329:7;29291:56;;;;;;;;;;;;;;;;:60;;:72;;;;:::i;:::-;29256:11;:23;29268:10;29256:23;;;;;;;;;;;;;;;:32;29280:7;29256:32;;;;;;;;;;;;;;;:107;;;;29427:7;29379:113;;29402:10;29379:113;;;29449:11;:23;29461:10;29449:23;;;;;;;;;;;;;;;:32;29473:7;29449:32;;;;;;;;;;;;;;;;29379:113;;;;;;:::i;:::-;;;;;;;;29510:4;29503:11;;29134:388;;;;:::o;18427:63::-;;;;:::o;17678:83::-;;;;;;;;;;;;;:::o;18319:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;28364:182::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;28434:5:::1;28431:108;;;28470:5;28456:11;;:19;;;;;;;;;;;;;;;;;;28431:108;;;28522:5;28508:11;;:19;;;;;;;;;;;;;;;;;;28431:108;28364:182:::0;:::o;19227:36::-;;;;;;;;;;;;;:::o;26571:354::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;19379:4:::1;19370:6;;:13;;;;;;;;;;;;;;;;;;26655:1:::2;26634:18;;:22;26631:63;;;26658:36;26675:18;;26658:16;:36::i;:::-;26631:63;26730:1;26709:18;;:22;26706:63;;;26733:36;26750:18;;26733:16;:36::i;:::-;26706:63;26804:1;26783:18;;:22;26780:64;;;26807:37;26825:18;;26807:17;:37::i;:::-;26780:64;26877:1;26858:16;;:20;26855:62;;;26880:37;26900:16;;26880:19;:37::i;:::-;26855:62;19415:5:::1;19406:6;;:14;;;;;;;;;;;;;;;;;;26571:354::o:0;17077:35::-;;;;:::o;32517:112::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;32614:7:::1;32589:22;;:32;;;;;;;;;;;;;;;;;;32517:112:::0;:::o;32862:92::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;32939:6:::1;32926:10;:19;;;;32862:92:::0;:::o;36478:657::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;36596:7:::1;;:14;;36581:4;;:11;;:29;36573:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;36642:14;36667:15:::0;36685:10:::1;36667:28;;36710:6;36706:88;36724:7;;:14;;36720:1;:18;36706:88;;;36772:7;;36780:1;36772:10;;;;;;;:::i;:::-;;;;;;;;36759:23;;;;;:::i;:::-;;;36740:3;;;;;:::i;:::-;;;;36706:88;;;;36834:9;36812:18;36822:7;36812:9;:18::i;:::-;:31;;36804:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;36908:33;36931:9;36908;:18;36918:7;36908:18;;;;;;;;;;;;;;;;:22;;:33;;;;:::i;:::-;36887:9;:18;36897:7;36887:18;;;;;;;;;;;;;;;:54;;;;36957:6;36952:175;36971:4;;:11;;36967:1;:15;36952:175;;;37025:34;37048:7;;37056:1;37048:10;;;;;;;:::i;:::-;;;;;;;;37025:9;:18;37035:4;;37040:1;37035:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;37025:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;37004:9;:18;37014:4;;37019:1;37014:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;37004:18;;;;;;;;;;;;;;;:55;;;;37096:4;;37101:1;37096:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;37079:36;;37088:7;37079:36;;;37104:7;;37112:1;37104:10;;;;;;;:::i;:::-;;;;;;;;37079:36;;;;;;:::i;:::-;;;;;;;;36984:3;;;;;:::i;:::-;;;;36952:175;;;;36562:573;;36478:657:::0;;;;:::o;21151:119::-;21217:7;21244:9;:18;21254:7;21244:18;;;;;;;;;;;;;;;;21237:25;;21151:119;;;:::o;16326:126::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;16407:6:::1;::::0;::::1;;;;;;;;16388:26;;;;;;;;;;;;16442:1;16425:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16326:126::o:0;32755:99::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;32840:6:::1;32823:14;:23;;;;32755:99:::0;:::o;18914:21::-;;;;;;;;;;;;;:::o;31502:170::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;31578:15:::1;31596:21;31578:39;;31636:9;31628:27;;:36;31656:7;31628:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;31567:105;31502:170:::0;:::o;17119:33::-;;;;:::o;18942:22::-;;;;:::o;17035:35::-;;;;:::o;33741:128::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;33854:7:::1;33825:19;:26;33845:5;33825:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;33741:128:::0;;:::o;31382:112::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;31479:7:::1;31459:11;:17;31471:4;31459:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;31382:112:::0;;:::o;21453:85::-;21499:4;21524:6;;;;;;;;;;;21523:7;21516:14;;21453:85;:::o;18745:41::-;;;;;;;;;;;;;:::o;18203:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;30115:341::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;30321:6:::1;30303:15;:24;;;;30356:13;30338:15;:31;;;;30396:10;30380:13;:26;;;;30435:13;30417:15;:31;;;;30115:341:::0;;;;:::o;16061:79::-;16099:7;16126:6;;;;;;;;;;;16119:13;;16061:79;:::o;16226:92::-;16266:4;16304:6;;;;;;;;;;;16290:20;;:10;:20;;;16283:27;;16226:92;:::o;17204:36::-;;;;:::o;17768:83::-;;;;;;;;;;;;;:::o;20852:87::-;20891:13;20924:7;;;;;;;;;;;;;;;;;20917:14;;20852:87;:::o;17247:36::-;;;;:::o;32341:168::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;32430:6:::1;32424:3;:12;32416:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;32498:3;32481:14;:20;;;;32341:168:::0;:::o;17413:33::-;;;;:::o;28554:572::-;28659:4;28681:16;28700:11;:23;28712:10;28700:23;;;;;;;;;;;;;;;:32;28724:7;28700:32;;;;;;;;;;;;;;;;28681:51;;28766:8;28747:15;:27;28743:225;;28826:1;28791:11;:23;28803:10;28791:23;;;;;;;;;;;;;;;:32;28815:7;28791:32;;;;;;;;;;;;;;;:36;;;;28743:225;;;28895:61;28926:15;28895:8;:12;;:61;;;;:::i;:::-;28860:11;:23;28872:10;28860:23;;;;;;;;;;;;;;;:32;28884:7;28860:32;;;;;;;;;;;;;;;:96;;;;28743:225;29031:7;28983:113;;29006:10;28983:113;;;29053:11;:23;29065:10;29053:23;;;;;;;;;;;;;;;:32;29077:7;29053:32;;;;;;;;;;;;;;;;28983:113;;;;;;:::i;:::-;;;;;;;;29114:4;29107:11;;;28554:572;;;;:::o;17858:33::-;;;;;;;;;;;;;:::o;19201:19::-;;;;;;;;;;;;;:::o;21874:215::-;22001:4;21979:2;19042:3;19028:18;;:2;:18;;;;19020:27;;;;;;22023:36:::1;22037:10;22049:2;22053:5;22023:13;:36::i;:::-;;22077:4;22070:11;;21874:215:::0;;;;;:::o;18877:30::-;;;;;;;;;;;;;:::o;33989:177::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;34080:7:::1;34059:18;;:28;;;;;;;;;;;;;;;;;;34101:2;34098:61;;;34132:15;34119:10;:28;;;;34098:61;33989:177:::0;;:::o;18136:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17453:31::-;;;;:::o;17290:34::-;;;;:::o;31880:201::-;31986:12;16188:9;:7;:9::i;:::-;16180:18;;;;;;32018:11:::1;;;;;;;;;;;:23;;;32042:12;32056:9;32066:6;32018:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32011:62;;31880:201:::0;;;;;:::o;18258:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;17373:33::-;;;;:::o;18837:30::-;;;;;;;;;;;;;:::o;21746:120::-;21808:4;21832:19;:26;21852:5;21832:26;;;;;;;;;;;;;;;;;;;;;;;;;21825:33;;21746:120;;;:::o;32089:244::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;32226:10:::1;32200:23;;:36;;;;;;;;;;;;;;;;;;32268:10;32247:18;;:31;;;;;;;;;;;;;;;;;;32315:10;32289:23;;:36;;;;;;;;;;;;;;;;;;32089:244:::0;;;:::o;18374:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;21546:188::-;21666:7;21698:11;:19;21710:6;21698:19;;;;;;;;;;;;;;;:28;21718:7;21698:28;;;;;;;;;;;;;;;;21691:35;;21546:188;;;;:::o;33399:206::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;33520:7:::1;33490:37;;:19;:26;33510:5;33490:26;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;33482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33590:7;33561:19;:26;33581:5;33561:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;33399:206:::0;;:::o;18668:61::-;;;;:::o;31680:192::-;31785:12;16188:9;:7;:9::i;:::-;16180:18;;;;;;31823:12:::1;31816:29;;;31846:9;31857:6;31816:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31809:55;;31680:192:::0;;;;;:::o;30464:340::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;30666:6:::1;30647:16;:25;;;;30702:13;30683:16;:32;;;;30743:10;30726:14;:27;;;;30783:13;30764:16;:32;;;;30464:340:::0;;;;:::o;33056:335::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;33147:7:::1;33144:102;;;33180:25;:32;33206:5;33180:32;;;;;;;;;;;;;;;;;;;;;;;;;33179:33;33171:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;33144:102;33291:7;33256:25;:32;33282:5;33256:32;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;33335:4;33309:16;:23;33326:5;33309:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;33379:4;33350:19;:26;33370:5;33350:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;33056:335:::0;;:::o;16993:35::-;;;;:::o;16460:109::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;16533:28:::1;16552:8;16533:18;:28::i;:::-;16460:109:::0;:::o;19115:33::-;;;;;;;;;;;;;:::o;17161:36::-;;;;:::o;30812:372::-;16188:9;:7;:9::i;:::-;16180:18;;;;;;30926:4:::1;30908:23;;:6;:23;;;;:61;;;;;30936:25;:33;30962:6;30936:33;;;;;;;;;;;;;;;;;;;;;;;;;30935:34;30908:61;30900:70;;;::::0;::::1;;31008:6;30981:16;:24;30998:6;30981:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;31031:6;31027:150;;;31054:11;;;;;;;;;;;:20;;;31075:6;31083:1;31054:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31027:150;;;31118:11;;;;;;;;;;;:20;;;31139:6;31147:17;31157:6;31147:9;:17::i;:::-;31118:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31027:150;30812:372:::0;;:::o;17333:33::-;;;;:::o;18793:35::-;;;;;;;;;;;;;:::o;19270:32::-;;;;;;;;;;;;;:::o;653:250::-;711:7;740:1;735;:6;731:47;;;765:1;758:8;;;;731:47;790:9;806:1;802;:5;;;;:::i;:::-;790:17;;835:1;830;826;:5;;;;:::i;:::-;:10;818:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;894:1;887:8;;;653:250;;;;;:::o;911:132::-;969:7;996:39;1000:1;1003;996:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;989:46;;911:132;;;;:::o;29727:380::-;29880:1;29863:19;;:5;:19;;;;29855:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29961:1;29942:21;;:7;:21;;;;29934:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30045:6;30015:11;:18;30027:5;30015:18;;;;;;;;;;;;;;;:27;30034:7;30015:27;;;;;;;;;;;;;;;:36;;;;30083:7;30067:32;;30076:5;30067:32;;;30092:6;30067:32;;;;;;:::i;:::-;;;;;;;;29727:380;;;:::o;419:226::-;539:7;572:1;567;:6;;575:12;559:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;599:9;615:1;611;:5;;;;:::i;:::-;599:17;;636:1;629:8;;;419:226;;;;;:::o;22822:2112::-;22948:4;22991:1;22973:20;;:6;:20;;;;22965:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23075:1;23054:23;;:9;:23;;;;23046:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23145:1;23136:6;:10;23128:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;23194:11;:19;23206:6;23194:19;;;;;;;;;;;;;;;;;;;;;;;;;23193:20;:47;;;;;23218:11;:22;23230:9;23218:22;;;;;;;;;;;;;;;;;;;;;;;;;23217:23;23193:47;23185:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;23308:18;;;;;;;;;;;:31;;;;23330:9;:7;:9::i;:::-;23308:31;23300:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23427:10;23414;;:23;;;;:::i;:::-;23396:15;:41;23395:57;;;;;23443:9;;;;;;;;;;;23442:10;23395:57;:78;;;;;23471:1;23457:10;;:15;;23395:78;23392:288;;;23504:40;17535:4;23504:20;23521:2;23504:12;;:16;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;23490:10;:54;;;;23587:40;17535:4;23587:20;23604:2;23587:12;;:16;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;23570:14;:57;;;;23664:4;23652:9;;:16;;;;;;;;;;;;;;;;;;23392:288;23696:15;:23;23712:6;23696:23;;;;;;;;;;;;;;;;;;;;;;;;;23695:24;:55;;;;;23724:15;:26;23740:9;23724:26;;;;;;;;;;;;;;;;;;;;;;;;;23723:27;23695:55;:81;;;;;23754:22;;;;;;;;;;;23695:81;23692:193;;;23811:10;;23801:6;:20;;23793:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;23692:193;23901:6;;;;;;;;;;;23897:87;;;23931:41;23946:6;23954:9;23965:6;23931:14;:41::i;:::-;23924:48;;;;23897:87;24000:16;:14;:16::i;:::-;23996:59;;;24033:10;:8;:10::i;:::-;23996:59;24095:29;24117:6;24095:9;:17;24105:6;24095:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;24075:9;:17;24085:6;24075:17;;;;;;;;;;;;;;;:49;;;;24145:22;24170:32;24184:6;24192:9;24170:13;:32::i;:::-;:104;;24268:6;24170:104;;;24218:34;24226:6;24234:9;24245:6;24218:7;:34::i;:::-;24170:104;24145:129;;24290:16;;;;;;;;;;;:51;;;;;24311:19;:30;24331:9;24311:30;;;;;;;;;;;;;;;;;;;;;;;;;24310:31;24290:51;24287:197;;;24410:14;;24366:40;24391:14;24366:20;24376:9;24366;:20::i;:::-;:24;;:40;;;;:::i;:::-;:58;;24358:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;24287:197;24519:40;24544:14;24519:9;:20;24529:9;24519:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;24496:9;:20;24506:9;24496:20;;;;;;;;;;;;;;;:63;;;;24576:16;:24;24593:6;24576:24;;;;;;;;;;;;;;;;;;;;;;;;;24572:96;;24607:11;;;;;;;;;;;:20;;;24628:6;24636:17;24646:6;24636:9;:17::i;:::-;24607:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24603:63;;;;;;24572:96;24682:16;:27;24699:9;24682:27;;;;;;;;;;;;;;;;;;;;;;;;;24678:105;;24716:11;;;;;;;;;;;:20;;;24737:9;24748:20;24758:9;24748;:20::i;:::-;24716:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24712:69;;;;;;24678:105;24799:11;;;;;;;;;;;:19;;;24819:14;;24799:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24795:51;;;;;;24879:9;24863:41;;24872:6;24863:41;;;24889:14;24863:41;;;;;;:::i;:::-;;;;;;;;24922:4;24915:11;;;22822:2112;;;;;;:::o;275:136::-;333:7;360:43;364:1;367;360:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;353:50;;275:136;;;;:::o;86:181::-;144:7;164:9;180:1;176;:5;;;;:::i;:::-;164:17;;205:1;200;:6;;192:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;258:1;251:8;;;86:181;;;;:::o;34889:431::-;34948:9;34960:25;34983:1;34960:18;;:22;;:25;;;;:::i;:::-;34948:37;;34996:14;35013:28;35036:4;35013:18;;:22;;:28;;;;:::i;:::-;34996:45;;35052:18;35073:21;35052:42;;35105:22;35122:4;35105:16;:22::i;:::-;35138:19;35160:40;35186:13;35160:21;:25;;:40;;;;:::i;:::-;35138:62;;35232:31;35255:7;35232:18;;:22;;:31;;;;:::i;:::-;35211:18;:52;;;;35274:38;35287:9;35297:14;35274:12;:38::i;:::-;34937:383;;;;34889:431;:::o;34174:349::-;34233:18;34254:21;34233:42;;34286:25;34303:7;34286:16;:25::i;:::-;34322:19;34344:40;34370:13;34344:21;:25;;:40;;;;:::i;:::-;34322:62;;34416:31;34439:7;34416:18;;:22;;:31;;;;:::i;:::-;34395:18;:52;;;;34466:23;;;;;;;;;;;34458:41;;:57;34500:14;34458:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34222:301;;34174:349;:::o;34531:350::-;34591:18;34612:21;34591:42;;34644:25;34661:7;34644:16;:25::i;:::-;34680:19;34702:40;34728:13;34702:21;:25;;:40;;;;:::i;:::-;34680:62;;34774:31;34797:7;34774:18;;:22;;:31;;;;:::i;:::-;34753:18;:52;;;;34824:23;;;;;;;;;;;34816:41;;:57;34858:14;34816:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34580:301;;34531:350;:::o;27284:363::-;27349:19;27371:21;27349:43;;27403:25;27420:7;27403:16;:25::i;:::-;27439:20;27462:41;27488:14;27462:21;:25;;:41;;;;:::i;:::-;27439:64;;27533:29;27554:7;27533:16;;:20;;:29;;;;:::i;:::-;27514:16;:48;;;;27577:11;;;;;;;;;;;:19;;;27606:15;27577:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27573:65;;;;;;27338:309;;27284:363;:::o;16577:187::-;16671:1;16651:22;;:8;:22;;;;16643:31;;;;;;16719:8;16690:38;;16711:6;;;;;;;;;;16690:38;;;;;;;;;;;;16748:8;16739:6;;:17;;;;;;;;;;;;;;;;;;16577:187;:::o;1051:225::-;1171:7;1203:1;1199;:5;1206:12;1191:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1230:9;1246:1;1242;:5;;;;:::i;:::-;1230:17;;1267:1;1260:8;;;1051:225;;;;;:::o;22552:262::-;22670:4;22705:27;22725:6;22705:9;:15;22715:4;22705:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;22687:9;:15;22697:4;22687:15;;;;;;;;;;;;;;;:45;;;;22759:25;22777:6;22759:9;:13;22769:2;22759:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;22743:9;:13;22753:2;22743:13;;;;;;;;;;;;;;;:41;;;;22802:4;22795:11;;22552:262;;;;;:::o;28008:348::-;28057:4;28076:28;28107:24;28125:4;28107:9;:24::i;:::-;28076:55;;28142:12;28181:18;;28157:20;:42;;28142:57;;28232:11;;;;;;;;;;;:36;;;;;28262:6;;;;;;;;;;;28261:7;28232:36;:61;;;;;28286:7;28232:61;:116;;;;;28311:25;:37;28337:10;28311:37;;;;;;;;;;;;;;;;;;;;;;;;;28310:38;28232:116;28212:136;;;;28008:348;:::o;26933:343::-;19379:4;19370:6;;:13;;;;;;;;;;;;;;;;;;27006:1:::1;26985:18;;:22;26982:63;;;27009:36;27026:18;;27009:16;:36::i;:::-;26982:63;27081:1;27060:18;;:22;27057:63;;;27084:36;27101:18;;27084:16;:36::i;:::-;27057:63;27155:1;27134:18;;:22;27131:64;;;27158:37;27176:18;;27158:17;:37::i;:::-;27131:64;27228:1;27209:16;;:20;27206:62;;;27231:37;27251:16;;27231:19;:37::i;:::-;27206:62;19415:5:::0;19406:6;;:14;;;;;;;;;;;;;;;;;;26933:343::o;27655:345::-;27754:4;27779:19;:25;27799:4;27779:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27808:19;:23;27828:2;27808:23;;;;;;;;;;;;;;;;;;;;;;;;;27779:52;27776:217;;;27854:5;27847:12;;;;27776:217;27916:25;:31;27942:4;27916:31;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;27951:25;:29;27977:2;27951:29;;;;;;;;;;;;;;;;;;;;;;;;;27916:64;27908:73;;27655:345;;;;;:::o;24942:1621::-;25062:7;25084:17;25112:9;25132;25152;25172;25205:25;:33;25231:6;25205:33;;;;;;;;;;;;;;;;;;;;;;;;;25202:1128;;;25263:47;17535:4;25263:27;25274:15;;25263:6;:10;;:27;;;;:::i;:::-;:31;;:47;;;;:::i;:::-;25256:54;;25347:4;25325:18;;:26;;;;;;;:::i;:::-;;;;;;;;25373:47;17535:4;25373:27;25384:15;;25373:6;:10;;:27;;;;:::i;:::-;:31;;:47;;;;:::i;:::-;25366:54;;25457:4;25435:18;;:26;;;;;;;:::i;:::-;;;;;;;;25483:45;17535:4;25483:25;25494:13;;25483:6;:10;;:25;;;;:::i;:::-;:29;;:45;;;;:::i;:::-;25476:52;;25563:4;25543:16;;:24;;;;;;;:::i;:::-;;;;;;;;25589:47;17535:4;25589:27;25600:15;;25589:6;:10;;:27;;;;:::i;:::-;:31;;:47;;;;:::i;:::-;25582:54;;25673:4;25651:18;;:26;;;;;;;:::i;:::-;;;;;;;;25706:34;25735:4;25706:24;25725:4;25706:14;25715:4;25706;:8;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;25694:46;;25202:1128;;;25770:25;:36;25796:9;25770:36;;;;;;;;;;;;;;;;;;;;;;;;;25767:563;;;25831:48;17535:4;25831:28;25842:16;;25831:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;25824:55;;25916:4;25894:18;;:26;;;;;;;:::i;:::-;;;;;;;;25942:48;17535:4;25942:28;25953:16;;25942:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;25935:55;;26027:4;26005:18;;:26;;;;;;;:::i;:::-;;;;;;;;26053:46;17535:4;26053:26;26064:14;;26053:6;:10;;:26;;;;:::i;:::-;:30;;:46;;;;:::i;:::-;26046:53;;26134:4;26114:16;;:24;;;;;;;:::i;:::-;;;;;;;;26160:48;17535:4;26160:28;26171:16;;26160:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;26153:55;;26245:4;26223:18;;:26;;;;;;;:::i;:::-;;;;;;;;26278:34;26307:4;26278:24;26297:4;26278:14;26287:4;26278;:8;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;26266:46;;25767:563;25202:1128;26357:1;26345:9;:13;26342:173;;;26402:39;26431:9;26402;:24;26420:4;26402:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;26375:9;:24;26393:4;26375:24;;;;;;;;;;;;;;;:66;;;;26486:4;26461:42;;26470:6;26461:42;;;26493:9;26461:42;;;;;;:::i;:::-;;;;;;;;26342:173;26534:21;26545:9;26534:6;:10;;:21;;;;:::i;:::-;26527:28;;;;;;;24942:1621;;;;;:::o;35842:564::-;35968:21;36006:1;35992:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35968:40;;36037:4;36019;36024:1;36019:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;36063:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36053:4;36058:1;36053:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;36089:53;36106:4;36121:6;;;;;;;;;;;36130:11;36089:8;:53::i;:::-;36181:6;;;;;;;;;;;:57;;;36253:11;36279:1;36323:4;36350;36370:15;36181:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35897:509;35842:564;:::o;35328:506::-;35476:53;35493:4;35508:6;;;;;;;;;;;35517:11;35476:8;:53::i;:::-;35570:6;;;;;;;;;;;:22;;;35600:9;35633:4;35653:11;35679:1;35722;35765:18;;;;;;;;;;;35798:15;35570:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;35328:506;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;318:568::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:122;;459:79;;:::i;:::-;418:122;572:6;559:20;549:30;;602:18;594:6;591:30;588:117;;;624:79;;:::i;:::-;588:117;738:4;730:6;726:17;714:29;;792:3;784:4;776:6;772:17;762:8;758:32;755:41;752:128;;;799:79;;:::i;:::-;752:128;318:568;;;;;:::o;909:::-;982:8;992:6;1042:3;1035:4;1027:6;1023:17;1019:27;1009:122;;1050:79;;:::i;:::-;1009:122;1163:6;1150:20;1140:30;;1193:18;1185:6;1182:30;1179:117;;;1215:79;;:::i;:::-;1179:117;1329:4;1321:6;1317:17;1305:29;;1383:3;1375:4;1367:6;1363:17;1353:8;1349:32;1346:41;1343:128;;;1390:79;;:::i;:::-;1343:128;909:568;;;;;:::o;1483:133::-;1526:5;1564:6;1551:20;1542:29;;1580:30;1604:5;1580:30;:::i;:::-;1483:133;;;;:::o;1622:137::-;1676:5;1707:6;1701:13;1692:22;;1723:30;1747:5;1723:30;:::i;:::-;1622:137;;;;:::o;1765:139::-;1811:5;1849:6;1836:20;1827:29;;1865:33;1892:5;1865:33;:::i;:::-;1765:139;;;;:::o;1910:143::-;1967:5;1998:6;1992:13;1983:22;;2014:33;2041:5;2014:33;:::i;:::-;1910:143;;;;:::o;2059:329::-;2118:6;2167:2;2155:9;2146:7;2142:23;2138:32;2135:119;;;2173:79;;:::i;:::-;2135:119;2293:1;2318:53;2363:7;2354:6;2343:9;2339:22;2318:53;:::i;:::-;2308:63;;2264:117;2059:329;;;;:::o;2394:351::-;2464:6;2513:2;2501:9;2492:7;2488:23;2484:32;2481:119;;;2519:79;;:::i;:::-;2481:119;2639:1;2664:64;2720:7;2711:6;2700:9;2696:22;2664:64;:::i;:::-;2654:74;;2610:128;2394:351;;;;:::o;2751:474::-;2819:6;2827;2876:2;2864:9;2855:7;2851:23;2847:32;2844:119;;;2882:79;;:::i;:::-;2844:119;3002:1;3027:53;3072:7;3063:6;3052:9;3048:22;3027:53;:::i;:::-;3017:63;;2973:117;3129:2;3155:53;3200:7;3191:6;3180:9;3176:22;3155:53;:::i;:::-;3145:63;;3100:118;2751:474;;;;;:::o;3231:619::-;3308:6;3316;3324;3373:2;3361:9;3352:7;3348:23;3344:32;3341:119;;;3379:79;;:::i;:::-;3341:119;3499:1;3524:53;3569:7;3560:6;3549:9;3545:22;3524:53;:::i;:::-;3514:63;;3470:117;3626:2;3652:53;3697:7;3688:6;3677:9;3673:22;3652:53;:::i;:::-;3642:63;;3597:118;3754:2;3780:53;3825:7;3816:6;3805:9;3801:22;3780:53;:::i;:::-;3770:63;;3725:118;3231:619;;;;;:::o;3856:::-;3933:6;3941;3949;3998:2;3986:9;3977:7;3973:23;3969:32;3966:119;;;4004:79;;:::i;:::-;3966:119;4124:1;4149:53;4194:7;4185:6;4174:9;4170:22;4149:53;:::i;:::-;4139:63;;4095:117;4251:2;4277:53;4322:7;4313:6;4302:9;4298:22;4277:53;:::i;:::-;4267:63;;4222:118;4379:2;4405:53;4450:7;4441:6;4430:9;4426:22;4405:53;:::i;:::-;4395:63;;4350:118;3856:619;;;;;:::o;4481:468::-;4546:6;4554;4603:2;4591:9;4582:7;4578:23;4574:32;4571:119;;;4609:79;;:::i;:::-;4571:119;4729:1;4754:53;4799:7;4790:6;4779:9;4775:22;4754:53;:::i;:::-;4744:63;;4700:117;4856:2;4882:50;4924:7;4915:6;4904:9;4900:22;4882:50;:::i;:::-;4872:60;;4827:115;4481:468;;;;;:::o;4955:474::-;5023:6;5031;5080:2;5068:9;5059:7;5055:23;5051:32;5048:119;;;5086:79;;:::i;:::-;5048:119;5206:1;5231:53;5276:7;5267:6;5256:9;5252:22;5231:53;:::i;:::-;5221:63;;5177:117;5333:2;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5304:118;4955:474;;;;;:::o;5435:934::-;5557:6;5565;5573;5581;5630:2;5618:9;5609:7;5605:23;5601:32;5598:119;;;5636:79;;:::i;:::-;5598:119;5784:1;5773:9;5769:17;5756:31;5814:18;5806:6;5803:30;5800:117;;;5836:79;;:::i;:::-;5800:117;5949:80;6021:7;6012:6;6001:9;5997:22;5949:80;:::i;:::-;5931:98;;;;5727:312;6106:2;6095:9;6091:18;6078:32;6137:18;6129:6;6126:30;6123:117;;;6159:79;;:::i;:::-;6123:117;6272:80;6344:7;6335:6;6324:9;6320:22;6272:80;:::i;:::-;6254:98;;;;6049:313;5435:934;;;;;;;:::o;6375:323::-;6431:6;6480:2;6468:9;6459:7;6455:23;6451:32;6448:119;;;6486:79;;:::i;:::-;6448:119;6606:1;6631:50;6673:7;6664:6;6653:9;6649:22;6631:50;:::i;:::-;6621:60;;6577:114;6375:323;;;;:::o;6704:345::-;6771:6;6820:2;6808:9;6799:7;6795:23;6791:32;6788:119;;;6826:79;;:::i;:::-;6788:119;6946:1;6971:61;7024:7;7015:6;7004:9;7000:22;6971:61;:::i;:::-;6961:71;;6917:125;6704:345;;;;:::o;7055:462::-;7117:6;7125;7174:2;7162:9;7153:7;7149:23;7145:32;7142:119;;;7180:79;;:::i;:::-;7142:119;7300:1;7325:50;7367:7;7358:6;7347:9;7343:22;7325:50;:::i;:::-;7315:60;;7271:114;7424:2;7450:50;7492:7;7483:6;7472:9;7468:22;7450:50;:::i;:::-;7440:60;;7395:115;7055:462;;;;;:::o;7523:329::-;7582:6;7631:2;7619:9;7610:7;7606:23;7602:32;7599:119;;;7637:79;;:::i;:::-;7599:119;7757:1;7782:53;7827:7;7818:6;7807:9;7803:22;7782:53;:::i;:::-;7772:63;;7728:117;7523:329;;;;:::o;7858:474::-;7926:6;7934;7983:2;7971:9;7962:7;7958:23;7954:32;7951:119;;;7989:79;;:::i;:::-;7951:119;8109:1;8134:53;8179:7;8170:6;8159:9;8155:22;8134:53;:::i;:::-;8124:63;;8080:117;8236:2;8262:53;8307:7;8298:6;8287:9;8283:22;8262:53;:::i;:::-;8252:63;;8207:118;7858:474;;;;;:::o;8338:663::-;8426:6;8434;8442;8491:2;8479:9;8470:7;8466:23;8462:32;8459:119;;;8497:79;;:::i;:::-;8459:119;8617:1;8642:64;8698:7;8689:6;8678:9;8674:22;8642:64;:::i;:::-;8632:74;;8588:128;8755:2;8781:64;8837:7;8828:6;8817:9;8813:22;8781:64;:::i;:::-;8771:74;;8726:129;8894:2;8920:64;8976:7;8967:6;8956:9;8952:22;8920:64;:::i;:::-;8910:74;;8865:129;8338:663;;;;;:::o;9007:765::-;9093:6;9101;9109;9117;9166:3;9154:9;9145:7;9141:23;9137:33;9134:120;;;9173:79;;:::i;:::-;9134:120;9293:1;9318:53;9363:7;9354:6;9343:9;9339:22;9318:53;:::i;:::-;9308:63;;9264:117;9420:2;9446:53;9491:7;9482:6;9471:9;9467:22;9446:53;:::i;:::-;9436:63;;9391:118;9548:2;9574:53;9619:7;9610:6;9599:9;9595:22;9574:53;:::i;:::-;9564:63;;9519:118;9676:2;9702:53;9747:7;9738:6;9727:9;9723:22;9702:53;:::i;:::-;9692:63;;9647:118;9007:765;;;;;;;:::o;9778:179::-;9847:10;9868:46;9910:3;9902:6;9868:46;:::i;:::-;9946:4;9941:3;9937:14;9923:28;;9778:179;;;;:::o;9963:108::-;10040:24;10058:5;10040:24;:::i;:::-;10035:3;10028:37;9963:108;;:::o;10077:118::-;10164:24;10182:5;10164:24;:::i;:::-;10159:3;10152:37;10077:118;;:::o;10231:732::-;10350:3;10379:54;10427:5;10379:54;:::i;:::-;10449:86;10528:6;10523:3;10449:86;:::i;:::-;10442:93;;10559:56;10609:5;10559:56;:::i;:::-;10638:7;10669:1;10654:284;10679:6;10676:1;10673:13;10654:284;;;10755:6;10749:13;10782:63;10841:3;10826:13;10782:63;:::i;:::-;10775:70;;10868:60;10921:6;10868:60;:::i;:::-;10858:70;;10714:224;10701:1;10698;10694:9;10689:14;;10654:284;;;10658:14;10954:3;10947:10;;10355:608;;;10231:732;;;;:::o;10969:109::-;11050:21;11065:5;11050:21;:::i;:::-;11045:3;11038:34;10969:109;;:::o;11084:179::-;11195:61;11250:5;11195:61;:::i;:::-;11190:3;11183:74;11084:179;;:::o;11269:183::-;11382:63;11439:5;11382:63;:::i;:::-;11377:3;11370:76;11269:183;;:::o;11458:147::-;11553:45;11592:5;11553:45;:::i;:::-;11548:3;11541:58;11458:147;;:::o;11611:364::-;11699:3;11727:39;11760:5;11727:39;:::i;:::-;11782:71;11846:6;11841:3;11782:71;:::i;:::-;11775:78;;11862:52;11907:6;11902:3;11895:4;11888:5;11884:16;11862:52;:::i;:::-;11939:29;11961:6;11939:29;:::i;:::-;11934:3;11930:39;11923:46;;11703:272;11611:364;;;;:::o;11981:366::-;12123:3;12144:67;12208:2;12203:3;12144:67;:::i;:::-;12137:74;;12220:93;12309:3;12220:93;:::i;:::-;12338:2;12333:3;12329:12;12322:19;;11981:366;;;:::o;12353:::-;12495:3;12516:67;12580:2;12575:3;12516:67;:::i;:::-;12509:74;;12592:93;12681:3;12592:93;:::i;:::-;12710:2;12705:3;12701:12;12694:19;;12353:366;;;:::o;12725:::-;12867:3;12888:67;12952:2;12947:3;12888:67;:::i;:::-;12881:74;;12964:93;13053:3;12964:93;:::i;:::-;13082:2;13077:3;13073:12;13066:19;;12725:366;;;:::o;13097:::-;13239:3;13260:67;13324:2;13319:3;13260:67;:::i;:::-;13253:74;;13336:93;13425:3;13336:93;:::i;:::-;13454:2;13449:3;13445:12;13438:19;;13097:366;;;:::o;13469:::-;13611:3;13632:67;13696:2;13691:3;13632:67;:::i;:::-;13625:74;;13708:93;13797:3;13708:93;:::i;:::-;13826:2;13821:3;13817:12;13810:19;;13469:366;;;:::o;13841:::-;13983:3;14004:67;14068:2;14063:3;14004:67;:::i;:::-;13997:74;;14080:93;14169:3;14080:93;:::i;:::-;14198:2;14193:3;14189:12;14182:19;;13841:366;;;:::o;14213:::-;14355:3;14376:67;14440:2;14435:3;14376:67;:::i;:::-;14369:74;;14452:93;14541:3;14452:93;:::i;:::-;14570:2;14565:3;14561:12;14554:19;;14213:366;;;:::o;14585:::-;14727:3;14748:67;14812:2;14807:3;14748:67;:::i;:::-;14741:74;;14824:93;14913:3;14824:93;:::i;:::-;14942:2;14937:3;14933:12;14926:19;;14585:366;;;:::o;14957:::-;15099:3;15120:67;15184:2;15179:3;15120:67;:::i;:::-;15113:74;;15196:93;15285:3;15196:93;:::i;:::-;15314:2;15309:3;15305:12;15298:19;;14957:366;;;:::o;15329:::-;15471:3;15492:67;15556:2;15551:3;15492:67;:::i;:::-;15485:74;;15568:93;15657:3;15568:93;:::i;:::-;15686:2;15681:3;15677:12;15670:19;;15329:366;;;:::o;15701:::-;15843:3;15864:67;15928:2;15923:3;15864:67;:::i;:::-;15857:74;;15940:93;16029:3;15940:93;:::i;:::-;16058:2;16053:3;16049:12;16042:19;;15701:366;;;:::o;16073:::-;16215:3;16236:67;16300:2;16295:3;16236:67;:::i;:::-;16229:74;;16312:93;16401:3;16312:93;:::i;:::-;16430:2;16425:3;16421:12;16414:19;;16073:366;;;:::o;16445:::-;16587:3;16608:67;16672:2;16667:3;16608:67;:::i;:::-;16601:74;;16684:93;16773:3;16684:93;:::i;:::-;16802:2;16797:3;16793:12;16786:19;;16445:366;;;:::o;16817:::-;16959:3;16980:67;17044:2;17039:3;16980:67;:::i;:::-;16973:74;;17056:93;17145:3;17056:93;:::i;:::-;17174:2;17169:3;17165:12;17158:19;;16817:366;;;:::o;17189:::-;17331:3;17352:67;17416:2;17411:3;17352:67;:::i;:::-;17345:74;;17428:93;17517:3;17428:93;:::i;:::-;17546:2;17541:3;17537:12;17530:19;;17189:366;;;:::o;17561:::-;17703:3;17724:67;17788:2;17783:3;17724:67;:::i;:::-;17717:74;;17800:93;17889:3;17800:93;:::i;:::-;17918:2;17913:3;17909:12;17902:19;;17561:366;;;:::o;17933:118::-;18020:24;18038:5;18020:24;:::i;:::-;18015:3;18008:37;17933:118;;:::o;18057:112::-;18140:22;18156:5;18140:22;:::i;:::-;18135:3;18128:35;18057:112;;:::o;18175:222::-;18268:4;18306:2;18295:9;18291:18;18283:26;;18319:71;18387:1;18376:9;18372:17;18363:6;18319:71;:::i;:::-;18175:222;;;;:::o;18403:442::-;18552:4;18590:2;18579:9;18575:18;18567:26;;18603:71;18671:1;18660:9;18656:17;18647:6;18603:71;:::i;:::-;18684:72;18752:2;18741:9;18737:18;18728:6;18684:72;:::i;:::-;18766;18834:2;18823:9;18819:18;18810:6;18766:72;:::i;:::-;18403:442;;;;;;:::o;18851:348::-;18980:4;19018:2;19007:9;19003:18;18995:26;;19031:71;19099:1;19088:9;19084:17;19075:6;19031:71;:::i;:::-;19112:80;19188:2;19177:9;19173:18;19164:6;19112:80;:::i;:::-;18851:348;;;;;:::o;19205:332::-;19326:4;19364:2;19353:9;19349:18;19341:26;;19377:71;19445:1;19434:9;19430:17;19421:6;19377:71;:::i;:::-;19458:72;19526:2;19515:9;19511:18;19502:6;19458:72;:::i;:::-;19205:332;;;;;:::o;19543:807::-;19792:4;19830:3;19819:9;19815:19;19807:27;;19844:71;19912:1;19901:9;19897:17;19888:6;19844:71;:::i;:::-;19925:72;19993:2;19982:9;19978:18;19969:6;19925:72;:::i;:::-;20007:80;20083:2;20072:9;20068:18;20059:6;20007:80;:::i;:::-;20097;20173:2;20162:9;20158:18;20149:6;20097:80;:::i;:::-;20187:73;20255:3;20244:9;20240:19;20231:6;20187:73;:::i;:::-;20270;20338:3;20327:9;20323:19;20314:6;20270:73;:::i;:::-;19543:807;;;;;;;;;:::o;20356:210::-;20443:4;20481:2;20470:9;20466:18;20458:26;;20494:65;20556:1;20545:9;20541:17;20532:6;20494:65;:::i;:::-;20356:210;;;;:::o;20572:270::-;20689:4;20727:2;20716:9;20712:18;20704:26;;20740:95;20832:1;20821:9;20817:17;20808:6;20740:95;:::i;:::-;20572:270;;;;:::o;20848:274::-;20967:4;21005:2;20994:9;20990:18;20982:26;;21018:97;21112:1;21101:9;21097:17;21088:6;21018:97;:::i;:::-;20848:274;;;;:::o;21128:313::-;21241:4;21279:2;21268:9;21264:18;21256:26;;21328:9;21322:4;21318:20;21314:1;21303:9;21299:17;21292:47;21356:78;21429:4;21420:6;21356:78;:::i;:::-;21348:86;;21128:313;;;;:::o;21447:419::-;21613:4;21651:2;21640:9;21636:18;21628:26;;21700:9;21694:4;21690:20;21686:1;21675:9;21671:17;21664:47;21728:131;21854:4;21728:131;:::i;:::-;21720:139;;21447:419;;;:::o;21872:::-;22038:4;22076:2;22065:9;22061:18;22053:26;;22125:9;22119:4;22115:20;22111:1;22100:9;22096:17;22089:47;22153:131;22279:4;22153:131;:::i;:::-;22145:139;;21872:419;;;:::o;22297:::-;22463:4;22501:2;22490:9;22486:18;22478:26;;22550:9;22544:4;22540:20;22536:1;22525:9;22521:17;22514:47;22578:131;22704:4;22578:131;:::i;:::-;22570:139;;22297:419;;;:::o;22722:::-;22888:4;22926:2;22915:9;22911:18;22903:26;;22975:9;22969:4;22965:20;22961:1;22950:9;22946:17;22939:47;23003:131;23129:4;23003:131;:::i;:::-;22995:139;;22722:419;;;:::o;23147:::-;23313:4;23351:2;23340:9;23336:18;23328:26;;23400:9;23394:4;23390:20;23386:1;23375:9;23371:17;23364:47;23428:131;23554:4;23428:131;:::i;:::-;23420:139;;23147:419;;;:::o;23572:::-;23738:4;23776:2;23765:9;23761:18;23753:26;;23825:9;23819:4;23815:20;23811:1;23800:9;23796:17;23789:47;23853:131;23979:4;23853:131;:::i;:::-;23845:139;;23572:419;;;:::o;23997:::-;24163:4;24201:2;24190:9;24186:18;24178:26;;24250:9;24244:4;24240:20;24236:1;24225:9;24221:17;24214:47;24278:131;24404:4;24278:131;:::i;:::-;24270:139;;23997:419;;;:::o;24422:::-;24588:4;24626:2;24615:9;24611:18;24603:26;;24675:9;24669:4;24665:20;24661:1;24650:9;24646:17;24639:47;24703:131;24829:4;24703:131;:::i;:::-;24695:139;;24422:419;;;:::o;24847:::-;25013:4;25051:2;25040:9;25036:18;25028:26;;25100:9;25094:4;25090:20;25086:1;25075:9;25071:17;25064:47;25128:131;25254:4;25128:131;:::i;:::-;25120:139;;24847:419;;;:::o;25272:::-;25438:4;25476:2;25465:9;25461:18;25453:26;;25525:9;25519:4;25515:20;25511:1;25500:9;25496:17;25489:47;25553:131;25679:4;25553:131;:::i;:::-;25545:139;;25272:419;;;:::o;25697:::-;25863:4;25901:2;25890:9;25886:18;25878:26;;25950:9;25944:4;25940:20;25936:1;25925:9;25921:17;25914:47;25978:131;26104:4;25978:131;:::i;:::-;25970:139;;25697:419;;;:::o;26122:::-;26288:4;26326:2;26315:9;26311:18;26303:26;;26375:9;26369:4;26365:20;26361:1;26350:9;26346:17;26339:47;26403:131;26529:4;26403:131;:::i;:::-;26395:139;;26122:419;;;:::o;26547:::-;26713:4;26751:2;26740:9;26736:18;26728:26;;26800:9;26794:4;26790:20;26786:1;26775:9;26771:17;26764:47;26828:131;26954:4;26828:131;:::i;:::-;26820:139;;26547:419;;;:::o;26972:::-;27138:4;27176:2;27165:9;27161:18;27153:26;;27225:9;27219:4;27215:20;27211:1;27200:9;27196:17;27189:47;27253:131;27379:4;27253:131;:::i;:::-;27245:139;;26972:419;;;:::o;27397:::-;27563:4;27601:2;27590:9;27586:18;27578:26;;27650:9;27644:4;27640:20;27636:1;27625:9;27621:17;27614:47;27678:131;27804:4;27678:131;:::i;:::-;27670:139;;27397:419;;;:::o;27822:::-;27988:4;28026:2;28015:9;28011:18;28003:26;;28075:9;28069:4;28065:20;28061:1;28050:9;28046:17;28039:47;28103:131;28229:4;28103:131;:::i;:::-;28095:139;;27822:419;;;:::o;28247:222::-;28340:4;28378:2;28367:9;28363:18;28355:26;;28391:71;28459:1;28448:9;28444:17;28435:6;28391:71;:::i;:::-;28247:222;;;;:::o;28475:831::-;28738:4;28776:3;28765:9;28761:19;28753:27;;28790:71;28858:1;28847:9;28843:17;28834:6;28790:71;:::i;:::-;28871:80;28947:2;28936:9;28932:18;28923:6;28871:80;:::i;:::-;28998:9;28992:4;28988:20;28983:2;28972:9;28968:18;28961:48;29026:108;29129:4;29120:6;29026:108;:::i;:::-;29018:116;;29144:72;29212:2;29201:9;29197:18;29188:6;29144:72;:::i;:::-;29226:73;29294:3;29283:9;29279:19;29270:6;29226:73;:::i;:::-;28475:831;;;;;;;;:::o;29312:332::-;29433:4;29471:2;29460:9;29456:18;29448:26;;29484:71;29552:1;29541:9;29537:17;29528:6;29484:71;:::i;:::-;29565:72;29633:2;29622:9;29618:18;29609:6;29565:72;:::i;:::-;29312:332;;;;;:::o;29650:214::-;29739:4;29777:2;29766:9;29762:18;29754:26;;29790:67;29854:1;29843:9;29839:17;29830:6;29790:67;:::i;:::-;29650:214;;;;:::o;29951:132::-;30018:4;30041:3;30033:11;;30071:4;30066:3;30062:14;30054:22;;29951:132;;;:::o;30089:114::-;30156:6;30190:5;30184:12;30174:22;;30089:114;;;:::o;30209:99::-;30261:6;30295:5;30289:12;30279:22;;30209:99;;;:::o;30314:113::-;30384:4;30416;30411:3;30407:14;30399:22;;30314:113;;;:::o;30433:184::-;30532:11;30566:6;30561:3;30554:19;30606:4;30601:3;30597:14;30582:29;;30433:184;;;;:::o;30623:169::-;30707:11;30741:6;30736:3;30729:19;30781:4;30776:3;30772:14;30757:29;;30623:169;;;;:::o;30798:305::-;30838:3;30857:20;30875:1;30857:20;:::i;:::-;30852:25;;30891:20;30909:1;30891:20;:::i;:::-;30886:25;;31045:1;30977:66;30973:74;30970:1;30967:81;30964:107;;;31051:18;;:::i;:::-;30964:107;31095:1;31092;31088:9;31081:16;;30798:305;;;;:::o;31109:185::-;31149:1;31166:20;31184:1;31166:20;:::i;:::-;31161:25;;31200:20;31218:1;31200:20;:::i;:::-;31195:25;;31239:1;31229:35;;31244:18;;:::i;:::-;31229:35;31286:1;31283;31279:9;31274:14;;31109:185;;;;:::o;31300:348::-;31340:7;31363:20;31381:1;31363:20;:::i;:::-;31358:25;;31397:20;31415:1;31397:20;:::i;:::-;31392:25;;31585:1;31517:66;31513:74;31510:1;31507:81;31502:1;31495:9;31488:17;31484:105;31481:131;;;31592:18;;:::i;:::-;31481:131;31640:1;31637;31633:9;31622:20;;31300:348;;;;:::o;31654:191::-;31694:4;31714:20;31732:1;31714:20;:::i;:::-;31709:25;;31748:20;31766:1;31748:20;:::i;:::-;31743:25;;31787:1;31784;31781:8;31778:34;;;31792:18;;:::i;:::-;31778:34;31837:1;31834;31830:9;31822:17;;31654:191;;;;:::o;31851:96::-;31888:7;31917:24;31935:5;31917:24;:::i;:::-;31906:35;;31851:96;;;:::o;31953:90::-;31987:7;32030:5;32023:13;32016:21;32005:32;;31953:90;;;:::o;32049:126::-;32086:7;32126:42;32119:5;32115:54;32104:65;;32049:126;;;:::o;32181:77::-;32218:7;32247:5;32236:16;;32181:77;;;:::o;32264:86::-;32299:7;32339:4;32332:5;32328:16;32317:27;;32264:86;;;:::o;32356:150::-;32430:9;32463:37;32494:5;32463:37;:::i;:::-;32450:50;;32356:150;;;:::o;32512:152::-;32588:9;32621:37;32652:5;32621:37;:::i;:::-;32608:50;;32512:152;;;:::o;32670:121::-;32728:9;32761:24;32779:5;32761:24;:::i;:::-;32748:37;;32670:121;;;:::o;32797:126::-;32847:9;32880:37;32911:5;32880:37;:::i;:::-;32867:50;;32797:126;;;:::o;32929:113::-;32979:9;33012:24;33030:5;33012:24;:::i;:::-;32999:37;;32929:113;;;:::o;33048:307::-;33116:1;33126:113;33140:6;33137:1;33134:13;33126:113;;;33225:1;33220:3;33216:11;33210:18;33206:1;33201:3;33197:11;33190:39;33162:2;33159:1;33155:10;33150:15;;33126:113;;;33257:6;33254:1;33251:13;33248:101;;;33337:1;33328:6;33323:3;33319:16;33312:27;33248:101;33097:258;33048:307;;;:::o;33361:233::-;33400:3;33423:24;33441:5;33423:24;:::i;:::-;33414:33;;33469:66;33462:5;33459:77;33456:103;;;33539:18;;:::i;:::-;33456:103;33586:1;33579:5;33575:13;33568:20;;33361:233;;;:::o;33600:180::-;33648:77;33645:1;33638:88;33745:4;33742:1;33735:15;33769:4;33766:1;33759:15;33786:180;33834:77;33831:1;33824:88;33931:4;33928:1;33921:15;33955:4;33952:1;33945:15;33972:180;34020:77;34017:1;34010:88;34117:4;34114:1;34107:15;34141:4;34138:1;34131:15;34158:180;34206:77;34203:1;34196:88;34303:4;34300:1;34293:15;34327:4;34324:1;34317:15;34344:117;34453:1;34450;34443:12;34467:117;34576:1;34573;34566:12;34590:117;34699:1;34696;34689:12;34713:117;34822:1;34819;34812:12;34836:117;34945:1;34942;34935:12;34959:102;35000:6;35051:2;35047:7;35042:2;35035:5;35031:14;35027:28;35017:38;;34959:102;;;:::o;35067:222::-;35207:34;35203:1;35195:6;35191:14;35184:58;35276:5;35271:2;35263:6;35259:15;35252:30;35067:222;:::o;35295:221::-;35435:34;35431:1;35423:6;35419:14;35412:58;35504:4;35499:2;35491:6;35487:15;35480:29;35295:221;:::o;35522:168::-;35662:20;35658:1;35650:6;35646:14;35639:44;35522:168;:::o;35696:177::-;35836:29;35832:1;35824:6;35820:14;35813:53;35696:177;:::o;35879:179::-;36019:31;36015:1;36007:6;36003:14;35996:55;35879:179;:::o;36064:234::-;36204:34;36200:1;36192:6;36188:14;36181:58;36273:17;36268:2;36260:6;36256:15;36249:42;36064:234;:::o;36304:179::-;36444:31;36440:1;36432:6;36428:14;36421:55;36304:179;:::o;36489:220::-;36629:34;36625:1;36617:6;36613:14;36606:58;36698:3;36693:2;36685:6;36681:15;36674:28;36489:220;:::o;36715:172::-;36855:24;36851:1;36843:6;36839:14;36832:48;36715:172;:::o;36893:224::-;37033:34;37029:1;37021:6;37017:14;37010:58;37102:7;37097:2;37089:6;37085:15;37078:32;36893:224;:::o;37123:167::-;37263:19;37259:1;37251:6;37247:14;37240:43;37123:167;:::o;37296:223::-;37436:34;37432:1;37424:6;37420:14;37413:58;37505:6;37500:2;37492:6;37488:15;37481:31;37296:223;:::o;37525:231::-;37665:34;37661:1;37653:6;37649:14;37642:58;37734:14;37729:2;37721:6;37717:15;37710:39;37525:231;:::o;37762:177::-;37902:29;37898:1;37890:6;37886:14;37879:53;37762:177;:::o;37945:232::-;38085:34;38081:1;38073:6;38069:14;38062:58;38154:15;38149:2;38141:6;38137:15;38130:40;37945:232;:::o;38183:168::-;38323:20;38319:1;38311:6;38307:14;38300:44;38183:168;:::o;38357:122::-;38430:24;38448:5;38430:24;:::i;:::-;38423:5;38420:35;38410:63;;38469:1;38466;38459:12;38410:63;38357:122;:::o;38485:116::-;38555:21;38570:5;38555:21;:::i;:::-;38548:5;38545:32;38535:60;;38591:1;38588;38581:12;38535:60;38485:116;:::o;38607:122::-;38680:24;38698:5;38680:24;:::i;:::-;38673:5;38670:35;38660:63;;38719:1;38716;38709:12;38660:63;38607:122;:::o

Swarm Source

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

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