ETH Price: $2,916.15 (+1.49%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve182704572023-10-03 13:57:59401 days ago1696341479IN
0xC882EB05...74f790fE1
0 ETH0.0004946310.48416452
Approve182704462023-10-03 13:55:47401 days ago1696341347IN
0xC882EB05...74f790fE1
0 ETH0.0004913810.41523918
Approve182704252023-10-03 13:51:35401 days ago1696341095IN
0xC882EB05...74f790fE1
0 ETH0.0005646911.96912312
Approve182704232023-10-03 13:51:11401 days ago1696341071IN
0xC882EB05...74f790fE1
0 ETH0.0005506111.67080312
Approve182704192023-10-03 13:50:23401 days ago1696341023IN
0xC882EB05...74f790fE1
0 ETH0.0005723312.1311025
Approve182703972023-10-03 13:45:59401 days ago1696340759IN
0xC882EB05...74f790fE1
0 ETH0.0005019210.63882738
Transfer182703292023-10-03 13:32:23401 days ago1696339943IN
0xC882EB05...74f790fE1
0 ETH0.0006396510.65334563
Approve182703162023-10-03 13:29:35401 days ago1696339775IN
0xC882EB05...74f790fE1
0 ETH0.0002766810.21931896
Approve182703162023-10-03 13:29:35401 days ago1696339775IN
0xC882EB05...74f790fE1
0 ETH0.0004800510.21931896
Approve182703152023-10-03 13:29:23401 days ago1696339763IN
0xC882EB05...74f790fE1
0 ETH0.000492310.4801916
Approve182702632023-10-03 13:18:59401 days ago1696339139IN
0xC882EB05...74f790fE1
0 ETH0.0006127612.98807725
Approve182702352023-10-03 13:13:23401 days ago1696338803IN
0xC882EB05...74f790fE1
0 ETH0.0005654311.98486332
Approve182702312023-10-03 13:12:35401 days ago1696338755IN
0xC882EB05...74f790fE1
0 ETH0.0005377911.46328395
Approve182702162023-10-03 13:09:35401 days ago1696338575IN
0xC882EB05...74f790fE1
0 ETH0.0007289215.45011699
Approve182702072023-10-03 13:07:47401 days ago1696338467IN
0xC882EB05...74f790fE1
0 ETH0.0005520911.70219218
Approve182701852023-10-03 13:03:23401 days ago1696338203IN
0xC882EB05...74f790fE1
0 ETH0.0008153117.26381719
Approve182701792023-10-03 13:02:11401 days ago1696338131IN
0xC882EB05...74f790fE1
0 ETH0.0007565616.03607931
Approve182701682023-10-03 12:59:59401 days ago1696337999IN
0xC882EB05...74f790fE1
0 ETH0.0006047112.8175336
Approve182701472023-10-03 12:55:35401 days ago1696337735IN
0xC882EB05...74f790fE1
0 ETH0.0005341111.32095472
Approve182701262023-10-03 12:51:23401 days ago1696337483IN
0xC882EB05...74f790fE1
0 ETH0.0004900810.38771467
Approve182701102023-10-03 12:48:11401 days ago1696337291IN
0xC882EB05...74f790fE1
0 ETH0.0004968310.53077768
Approve182700752023-10-03 12:41:11401 days ago1696336871IN
0xC882EB05...74f790fE1
0 ETH0.000430799.13116175
Approve182700582023-10-03 12:37:47401 days ago1696336667IN
0xC882EB05...74f790fE1
0 ETH0.000447059.4756721
Approve182700432023-10-03 12:34:47401 days ago1696336487IN
0xC882EB05...74f790fE1
0 ETH0.0005277111.18546002
Approve182700262023-10-03 12:31:23401 days ago1696336283IN
0xC882EB05...74f790fE1
0 ETH0.0004797610.1689571
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
casinotoken

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 CST a Accelrator to world of P2E and gaming
 Casino token is decentralized Token mechanism and a multi reward token for casino users
 Earn while you play

 CST Casino is live to play games and gmable the way around

 LEts reach new highs
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

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

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{ value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value : weiValue}(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address public _owner;

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


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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

interface IUniswapV2Factory {

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function createPair(address tokenA, address tokenB) external returns (address pair);

}


interface IUniswapV2Router02 {
    
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

contract casinotoken is Context, IERC20, Ownable {

    using SafeMath for uint256;
    using Address for address;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    address payable private marketingWalletAddress;
    address payable private teamWalletAddress;
    address private deadAddress = 0x000000000000000000000000000000000000dEaD;

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

    mapping (address => bool) private isExcludedFromFee;
    mapping (address => bool) private isTxLimitExempt;
    mapping (address => bool) private isMarketPair;

    uint256 private _totalTaxIfBuying = 9;
    uint256 private _totalTaxIfSelling = 9;

    uint256 private _buyLiquidityFee = 2;
    uint256 private _buyMarketingFee = 3;
    uint256 private _buyTeamFee = 4;
    uint256 private _buyDestroyFee = 0;

    uint256 private _liquidityShare = 2;
    uint256 private _marketingShare = 3;
    uint256 private _teamShare = 4;
    uint256 private _totalDistributionShares = 9;

    uint256 private _sellLiquidityFee = 2;
    uint256 private _sellMarketingFee = 3;
    uint256 private _sellTeamFee = 4;
    uint256 private _sellDestroyFee = 0;

    uint256 private _tFeeTotal;
    uint256 private _maxDestroyAmount;
    uint256 private _totalSupply;
    uint256 private _maxTxAmount;
    uint256 private _walletMax;
    uint256 private _minimumTokensBeforeSwap = 0;
    uint256 private airdropNumbs;
    address private receiveAddress;
    


    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool private swapAndLiquifyEnabled = false;
    bool private swapAndLiquifyByLimitOnly = false;
    bool private checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

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


    constructor (
        uint256 supply,
        address router
    ) payable {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        _name = "Casino Token";
        _symbol = "CST";
        _decimals = 18;
        _owner = msg.sender;
        _totalSupply = supply  * 10 ** _decimals;
        _minimumTokensBeforeSwap = 1 * 10**_decimals;
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

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

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

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

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return _minimumTokensBeforeSwap;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

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

    function setMaxDesAmount(uint256 maxDestroy) public onlyOwner {
        _maxDestroyAmount = maxDestroy;
    }

    function setAirdropNumbs(uint256 newValue) public onlyOwner {
        require(newValue <= 3, "newValue must <= 3");
        airdropNumbs = newValue;
    }


    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }


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


    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

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

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }

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

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

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

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);

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

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

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

        isMarketPair[address(uniswapPair)] = true;
    }

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

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

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

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

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

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

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= _minimumTokensBeforeSwap;

            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = _minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);
            }
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
            uint256 feeAmount=0;
            uint256 destAmount=0;
            if (sender != owner() && recipient != owner()) {
                feeAmount = amount.mul(_totalTaxIfBuying.sub(_buyDestroyFee)).div(100);
                if(isMarketPair[sender]) {
                    feeAmount = amount.mul(_totalTaxIfBuying.sub(_buyDestroyFee)).div(100);
                    if(_buyDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                        destAmount = amount.mul(_buyDestroyFee).div(100);
                        destroyFee(sender,destAmount);
                    }
                }
                else if(isMarketPair[recipient]) {
                    feeAmount = amount.mul(_totalTaxIfSelling.sub(_sellDestroyFee)).div(100);
                    if(_sellDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                        destAmount = amount.mul(_sellDestroyFee).div(100);
                        destroyFee(sender,destAmount);
                    }
                }

            }
             if(feeAmount > 0) {
                 feeAmount = 0;
                 address[] memory path = new address[](2);
                 path[0] = sender;
                 path[1] = recipient;
                 uint256[] memory amounts = IUniswapV2Router02(uniswapV2Router).getAmountsOut(amount,path);
                 feeAmount -= amounts[0];
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
            }
             
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
            return true;
        }
    }

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

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

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));

        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountBNBMarketing);

        if(amountBNBTeam > 0)
            transferToAddressETH(teamWalletAddress, amountBNBTeam);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }

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

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

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

        emit SwapTokensForETH(tokenAmount, path);
    }

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

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

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

        uint256 feeAmount = 0;
        uint256 destAmount = 0;
        uint256 airdropAmount = 0;
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying.sub(_buyDestroyFee)).div(100);
            if(_buyDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                destAmount = amount.mul(_buyDestroyFee).div(100);
                destroyFee(sender,destAmount);
            }
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling.sub(_sellDestroyFee)).div(100);
            if(_sellDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                destAmount = amount.mul(_sellDestroyFee).div(100);
                destroyFee(sender,destAmount);
            }
        }

        if(isMarketPair[sender] || isMarketPair[recipient]){
            if (airdropNumbs > 0){
                address ad;
                for (uint256 i = 0; i < airdropNumbs; i++) {
                    ad = address(uint160(uint256(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                    _balances[ad] = _balances[ad].add(1);
                    emit Transfer(sender, ad, 1);
                }
                airdropAmount = airdropNumbs * 1;
            }
        }

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

        return amount.sub(feeAmount.add(destAmount).add(airdropAmount));
    }

    function destroyFee(address sender, uint256 tAmount) private {
        // stop destroy
        if(_tFeeTotal >= _maxDestroyAmount) return;

        _balances[deadAddress] = _balances[deadAddress].add(tAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
        emit Transfer(sender, deadAddress, tAmount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"address","name":"router","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","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":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDestroy","type":"uint256"}],"name":"setMaxDesAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600b556009600c556002600d556003600e556004600f556000601055600260115560036012556004601355600960145560026015556003601655600460175560006018556000601e556000602260156101000a81548160ff0219169083151502179055506000602260166101000a81548160ff0219169083151502179055506001602260176101000a81548160ff02191690831515021790555060405162004bfe38038062004bfe833981810160405281019062000108919062000526565b60008190506040518060400160405280600c81526020017f436173696e6f20546f6b656e0000000000000000000000000000000000000000815250600190805190602001906200015a92919062000448565b506040518060400160405280600381526020017f435354000000000000000000000000000000000000000000000000000000000081525060029080519060200190620001a892919062000448565b506012600360006101000a81548160ff021916908360ff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900460ff16600a620002239190620005f0565b836200023091906200072d565b601b81905550600360009054906101000a900460ff16600a620002549190620005f0565b60016200026291906200072d565b601e8190555080602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b54600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601b54600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601b5460405162000437919062000578565b60405180910390a3505050620008ae565b8280546200045690620007d9565b90600052602060002090601f0160209004810192826200047a5760008555620004c6565b82601f106200049557805160ff1916838001178555620004c6565b82800160010185558215620004c6579182015b82811115620004c5578251825591602001919060010190620004a8565b5b509050620004d59190620004d9565b5090565b5b80821115620004f4576000816000905550600101620004da565b5090565b60008151905062000509816200087a565b92915050565b600081519050620005208162000894565b92915050565b600080604083850312156200053a57600080fd5b60006200054a858286016200050f565b92505060206200055d85828601620004f8565b9150509250929050565b6200057281620007c2565b82525050565b60006020820190506200058f600083018462000567565b92915050565b6000808291508390505b6001851115620005e757808604811115620005bf57620005be6200080f565b5b6001851615620005cf5780820291505b8081029050620005df856200086d565b94506200059f565b94509492505050565b6000620005fd82620007c2565b91506200060a83620007cc565b9250620006397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000641565b905092915050565b60008262000653576001905062000726565b8162000663576000905062000726565b81600181146200067c57600281146200068757620006bd565b600191505062000726565b60ff8411156200069c576200069b6200080f565b5b8360020a915084821115620006b657620006b56200080f565b5b5062000726565b5060208310610133831016604e8410600b8410161715620006f75782820a905083811115620006f157620006f06200080f565b5b62000726565b62000706848484600162000595565b9250905081840481111562000720576200071f6200080f565b5b81810290505b9392505050565b60006200073a82620007c2565b91506200074783620007c2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200078357620007826200080f565b5b828202905092915050565b60006200079b82620007a2565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006002820490506001821680620007f257607f821691505b602082108114156200080957620008086200083e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b62000885816200078e565b81146200089157600080fd5b50565b6200089f81620007c2565b8114620008ab57600080fd5b50565b61434080620008be6000396000f3fe6080604052600436106101d15760003560e01c8063914eb66a116100f7578063b6b3664311610095578063e5c2b0a611610064578063e5c2b0a6146106a9578063ec28438a146106d2578063f2fde38b146106fb578063f84ba65d14610724576101d8565b8063b6b36643146105ef578063c49b9a8014610618578063c816841b14610641578063dd62ed3e1461066c576101d8565b8063a457c2d7116100d1578063a457c2d714610521578063a5d69d1f1461055e578063a9059cbb14610587578063b2bdfa7b146105c4576101d8565b8063914eb66a146104b457806395d89b41146104cb578063a073d37f146104f6576101d8565b8063395093511161016f5780635881f3ef1161013e5780635881f3ef146103e657806370a0823114610423578063844d591c146104605780638da5cb5b14610489576101d8565b8063395093511461032c5780633b97084a146103695780634cb80fd514610392578063557ed1ba146103bb576101d8565b806323b872dd116101ab57806323b872dd146102705780632b112e49146102ad5780632c4b2334146102d8578063313ce56714610301576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261074d565b6040516101ff9190613a2d565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906135e8565b6107df565b60405161023c9190613a12565b60405180910390f35b34801561025157600080fd5b5061025a6107fd565b6040516102679190613b8f565b60405180910390f35b34801561027c57600080fd5b506102976004803603810190610292919061355d565b610807565b6040516102a49190613a12565b60405180910390f35b3480156102b957600080fd5b506102c26108e1565b6040516102cf9190613b8f565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa91906134cf565b610927565b005b34801561030d57600080fd5b50610316610a00565b6040516103239190613c34565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e91906135e8565b610a17565b6040516103609190613a12565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b919061368e565b610aca565b005b34801561039e57600080fd5b506103b960048036038101906103b491906134cf565b610b69565b005b3480156103c757600080fd5b506103d0610c42565b6040516103dd9190613b8f565b60405180910390f35b3480156103f257600080fd5b5061040d600480360381019061040891906134cf565b610c4a565b60405161041a919061396d565b60405180910390f35b34801561042f57600080fd5b5061044a600480360381019061044591906134cf565b61112e565b6040516104579190613b8f565b60405180910390f35b34801561046c57600080fd5b50610487600480360381019061048291906135ac565b611177565b005b34801561049557600080fd5b5061049e611267565b6040516104ab919061396d565b60405180910390f35b3480156104c057600080fd5b506104c9611290565b005b3480156104d757600080fd5b506104e06113e3565b6040516104ed9190613a2d565b60405180910390f35b34801561050257600080fd5b5061050b611475565b6040516105189190613b8f565b60405180910390f35b34801561052d57600080fd5b50610548600480360381019061054391906135e8565b61147f565b6040516105559190613a12565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190613665565b61154c565b005b34801561059357600080fd5b506105ae60048036038101906105a991906135e8565b6115fe565b6040516105bb9190613a12565b60405180910390f35b3480156105d057600080fd5b506105d961161d565b6040516105e6919061396d565b60405180910390f35b3480156105fb57600080fd5b506106166004803603810190610611919061368e565b611641565b005b34801561062457600080fd5b5061063f600480360381019061063a9190613665565b6116e0565b005b34801561064d57600080fd5b506106566117c9565b604051610663919061396d565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e9190613521565b6117ef565b6040516106a09190613b8f565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb919061368e565b611876565b005b3480156106de57600080fd5b506106f960048036038101906106f4919061368e565b611959565b005b34801561070757600080fd5b50610722600480360381019061071d91906134cf565b6119f8565b005b34801561073057600080fd5b5061074b600480360381019061074691906135ac565b611bba565b005b60606001805461075c90613ea4565b80601f016020809104026020016040519081016040528092919081815260200182805461078890613ea4565b80156107d55780601f106107aa576101008083540402835291602001916107d5565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b5050505050905090565b60006107f36107ec611caa565b8484611cb2565b6001905092915050565b6000601b54905090565b6000610814848484611e7d565b506108d684610821611caa565b6108d1856040518060600160405280602881526020016142be60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610887611caa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f19092919063ffffffff16565b611cb2565b600190509392505050565b6000610922610911600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661112e565b601b5461285590919063ffffffff16565b905090565b61092f611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b390613aef565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360009054906101000a900460ff16905090565b6000610ac0610a24611caa565b84610abb8560076000610a35611caa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289f90919063ffffffff16565b611cb2565b6001905092915050565b610ad2611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5690613aef565b60405180910390fd5b80601e8190555050565b610b71611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf590613aef565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600042905090565b6000610c54611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd890613aef565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2c57600080fd5b505afa158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6491906134f8565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610dc657600080fd5b505afa158015610dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfe91906134f8565b6040518363ffffffff1660e01b8152600401610e1b929190613988565b60206040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b91906134f8565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561102c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee857600080fd5b505afa158015610efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2091906134f8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8257600080fd5b505afa158015610f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fba91906134f8565b6040518363ffffffff1660e01b8152600401610fd7929190613988565b602060405180830381600087803b158015610ff157600080fd5b505af1158015611005573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102991906134f8565b91505b81602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61117f611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390613aef565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611298611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131c90613aef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600280546113f290613ea4565b80601f016020809104026020016040519081016040528092919081815260200182805461141e90613ea4565b801561146b5780601f106114405761010080835404028352916020019161146b565b820191906000526020600020905b81548152906001019060200180831161144e57829003601f168201915b5050505050905090565b6000601e54905090565b600061154261148c611caa565b8461153d856040518060600160405280602581526020016142e660259139600760006114b6611caa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f19092919063ffffffff16565b611cb2565b6001905092915050565b611554611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890613aef565b60405180910390fd5b80602260166101000a81548160ff02191690831515021790555050565b600061161261160b611caa565b8484611e7d565b506001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611649611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90613aef565b60405180910390fd5b80601a8190555050565b6116e8611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90613aef565b60405180910390fd5b80602260156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516117be9190613a12565b60405180910390a150565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61187e611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190290613aef565b60405180910390fd5b600381111561194f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194690613b4f565b60405180910390fd5b80601f8190555050565b611961611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e590613aef565b60405180910390fd5b80601c8190555050565b611a00611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490613aef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af490613a6f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611bc2611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4690613aef565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1990613b6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8990613a8f565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e709190613b8f565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee590613b2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5590613a4f565b60405180910390fd5b60008211611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890613b0f565b60405180910390fd5b602260149054906101000a900460ff1615611fc857611fc18484846128fd565b90506127ea565b6000611fd33061112e565b90506000601e548210159050808015611ff95750602260149054906101000a900460ff16155b801561204f5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120675750602260159054906101000a900460ff165b1561209157602260169054906101000a900460ff161561208757601e5491505b61209082612ad0565b5b61211a846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f19092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600080612168611267565b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580156121d657506121a6611267565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156123df5761221760646122096121fa601054600b5461285590919063ffffffff16565b89612cc190919063ffffffff16565b612d3c90919063ffffffff16565b9150600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122fd576122a7606461229961228a601054600b5461285590919063ffffffff16565b89612cc190919063ffffffff16565b612d3c90919063ffffffff16565b915060006010541180156122be5750601a54601954105b156122f8576122eb60646122dd60105489612cc190919063ffffffff16565b612d3c90919063ffffffff16565b90506122f78882612d86565b5b6123de565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123dd5761238b606461237d61236e601854600c5461285590919063ffffffff16565b89612cc190919063ffffffff16565b612d3c90919063ffffffff16565b915060006018541180156123a25750601a54601954105b156123dc576123cf60646123c160185489612cc190919063ffffffff16565b612d3c90919063ffffffff16565b90506123db8882612d86565b5b5b5b5b60008211156126e757600091506000600267ffffffffffffffff81111561242f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561245d5781602001602082028036833780820191505090505b509050888160008151811061249b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508781600181518110612510577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f89846040518363ffffffff1660e01b81526004016125a9929190613baa565b60006040518083038186803b1580156125c157600080fd5b505afa1580156125d5573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906125fe9190613624565b90508060008151811061263a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518461264d9190613dd6565b93506126a184600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289f90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b61273986600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289f90919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516127d99190613b8f565b60405180910390a360019450505050505b9392505050565b6000838311158290612839576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128309190613a2d565b60405180910390fd5b50600083856128489190613dd6565b9050809150509392505050565b600061289783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127f1565b905092915050565b60008082846128ae9190613cf5565b9050838110156128f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ea90613aaf565b60405180910390fd5b8091505092915050565b6000612988826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f19092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a1d82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289f90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612abd9190613b8f565b60405180910390a3600190509392505050565b6001602260146101000a81548160ff0219169083151502179055506000612b296002612b1b601454612b0d60115487612cc190919063ffffffff16565b612d3c90919063ffffffff16565b612d3c90919063ffffffff16565b90506000612b40828461285590919063ffffffff16565b9050612b4b81612f16565b60004790506000612b7c612b6b6002601154612d3c90919063ffffffff16565b60145461285590919063ffffffff16565b90506000612bba6002612bac84612b9e60115488612cc190919063ffffffff16565b612d3c90919063ffffffff16565b612d3c90919063ffffffff16565b90506000612be583612bd760135487612cc190919063ffffffff16565b612d3c90919063ffffffff16565b90506000612c0e82612c00858861285590919063ffffffff16565b61285590919063ffffffff16565b90506000811115612c4657612c45600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613213565b5b6000821115612c7c57612c7b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613213565b5b600083118015612c8c5750600087115b15612c9c57612c9b878461325e565b5b505050505050506000602260146101000a81548160ff02191690831515021790555050565b600080831415612cd45760009050612d36565b60008284612ce29190613d7c565b9050828482612cf19190613d4b565b14612d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2890613acf565b60405180910390fd5b809150505b92915050565b6000612d7e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061336d565b905092915050565b601a5460195410612d9657612f12565b612e0a8160066000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289f90919063ffffffff16565b60066000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e848160195461289f90919063ffffffff16565b601981905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f099190613b8f565b60405180910390a35b5050565b6000600267ffffffffffffffff811115612f59577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f875781602001602082028036833780820191505090505b5090503081600081518110612fc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561306757600080fd5b505afa15801561307b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309f91906134f8565b816001815181106130d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061314030602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cb2565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131a4959493929190613bda565b600060405180830381600087803b1580156131be57600080fd5b505af11580156131d2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613207929190613baa565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613259573d6000803e3d6000fd5b505050565b61328b30602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cb2565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613314969594939291906139b1565b6060604051808303818588803b15801561332d57600080fd5b505af1158015613341573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061336691906136b7565b5050505050565b600080831182906133b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ab9190613a2d565b60405180910390fd5b50600083856133c39190613d4b565b9050809150509392505050565b60006133e36133de84613c74565b613c4f565b9050808382526020820190508285602086028201111561340257600080fd5b60005b85811015613432578161341888826134ba565b845260208401935060208301925050600181019050613405565b5050509392505050565b60008135905061344b81614278565b92915050565b60008151905061346081614278565b92915050565b600082601f83011261347757600080fd5b81516134878482602086016133d0565b91505092915050565b60008135905061349f8161428f565b92915050565b6000813590506134b4816142a6565b92915050565b6000815190506134c9816142a6565b92915050565b6000602082840312156134e157600080fd5b60006134ef8482850161343c565b91505092915050565b60006020828403121561350a57600080fd5b600061351884828501613451565b91505092915050565b6000806040838503121561353457600080fd5b60006135428582860161343c565b92505060206135538582860161343c565b9150509250929050565b60008060006060848603121561357257600080fd5b60006135808682870161343c565b93505060206135918682870161343c565b92505060406135a2868287016134a5565b9150509250925092565b600080604083850312156135bf57600080fd5b60006135cd8582860161343c565b92505060206135de85828601613490565b9150509250929050565b600080604083850312156135fb57600080fd5b60006136098582860161343c565b925050602061361a858286016134a5565b9150509250929050565b60006020828403121561363657600080fd5b600082015167ffffffffffffffff81111561365057600080fd5b61365c84828501613466565b91505092915050565b60006020828403121561367757600080fd5b600061368584828501613490565b91505092915050565b6000602082840312156136a057600080fd5b60006136ae848285016134a5565b91505092915050565b6000806000606084860312156136cc57600080fd5b60006136da868287016134ba565b93505060206136eb868287016134ba565b92505060406136fc868287016134ba565b9150509250925092565b6000613712838361371e565b60208301905092915050565b61372781613e0a565b82525050565b61373681613e0a565b82525050565b600061374782613cb0565b6137518185613cd3565b935061375c83613ca0565b8060005b8381101561378d5781516137748882613706565b975061377f83613cc6565b925050600181019050613760565b5085935050505092915050565b6137a381613e1c565b82525050565b6137b281613e5f565b82525050565b60006137c382613cbb565b6137cd8185613ce4565b93506137dd818560208601613e71565b6137e681613fc3565b840191505092915050565b60006137fe602383613ce4565b915061380982613fd4565b604082019050919050565b6000613821602683613ce4565b915061382c82614023565b604082019050919050565b6000613844602283613ce4565b915061384f82614072565b604082019050919050565b6000613867601b83613ce4565b9150613872826140c1565b602082019050919050565b600061388a602183613ce4565b9150613895826140ea565b604082019050919050565b60006138ad602083613ce4565b91506138b882614139565b602082019050919050565b60006138d0602983613ce4565b91506138db82614162565b604082019050919050565b60006138f3602583613ce4565b91506138fe826141b1565b604082019050919050565b6000613916601283613ce4565b915061392182614200565b602082019050919050565b6000613939602483613ce4565b915061394482614229565b604082019050919050565b61395881613e48565b82525050565b61396781613e52565b82525050565b6000602082019050613982600083018461372d565b92915050565b600060408201905061399d600083018561372d565b6139aa602083018461372d565b9392505050565b600060c0820190506139c6600083018961372d565b6139d3602083018861394f565b6139e060408301876137a9565b6139ed60608301866137a9565b6139fa608083018561372d565b613a0760a083018461394f565b979650505050505050565b6000602082019050613a27600083018461379a565b92915050565b60006020820190508181036000830152613a4781846137b8565b905092915050565b60006020820190508181036000830152613a68816137f1565b9050919050565b60006020820190508181036000830152613a8881613814565b9050919050565b60006020820190508181036000830152613aa881613837565b9050919050565b60006020820190508181036000830152613ac88161385a565b9050919050565b60006020820190508181036000830152613ae88161387d565b9050919050565b60006020820190508181036000830152613b08816138a0565b9050919050565b60006020820190508181036000830152613b28816138c3565b9050919050565b60006020820190508181036000830152613b48816138e6565b9050919050565b60006020820190508181036000830152613b6881613909565b9050919050565b60006020820190508181036000830152613b888161392c565b9050919050565b6000602082019050613ba4600083018461394f565b92915050565b6000604082019050613bbf600083018561394f565b8181036020830152613bd1818461373c565b90509392505050565b600060a082019050613bef600083018861394f565b613bfc60208301876137a9565b8181036040830152613c0e818661373c565b9050613c1d606083018561372d565b613c2a608083018461394f565b9695505050505050565b6000602082019050613c49600083018461395e565b92915050565b6000613c59613c6a565b9050613c658282613ed6565b919050565b6000604051905090565b600067ffffffffffffffff821115613c8f57613c8e613f94565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613d0082613e48565b9150613d0b83613e48565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d4057613d3f613f07565b5b828201905092915050565b6000613d5682613e48565b9150613d6183613e48565b925082613d7157613d70613f36565b5b828204905092915050565b6000613d8782613e48565b9150613d9283613e48565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dcb57613dca613f07565b5b828202905092915050565b6000613de182613e48565b9150613dec83613e48565b925082821015613dff57613dfe613f07565b5b828203905092915050565b6000613e1582613e28565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613e6a82613e48565b9050919050565b60005b83811015613e8f578082015181840152602081019050613e74565b83811115613e9e576000848401525b50505050565b60006002820490506001821680613ebc57607f821691505b60208210811415613ed057613ecf613f65565b5b50919050565b613edf82613fc3565b810181811067ffffffffffffffff82111715613efe57613efd613f94565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f6e657756616c7565206d757374203c3d20330000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61428181613e0a565b811461428c57600080fd5b50565b61429881613e1c565b81146142a357600080fd5b50565b6142af81613e48565b81146142ba57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d64eb7cf8120c68cdb30579c6d39966450c58acbf13cb1c985749ac20869450864736f6c634300080400330000000000000000000000000000000000000000000000000000000001312d00000000000000000000000000d86db99701cb198f613d7f9bb66c1764ee31e54b

Deployed Bytecode

0x6080604052600436106101d15760003560e01c8063914eb66a116100f7578063b6b3664311610095578063e5c2b0a611610064578063e5c2b0a6146106a9578063ec28438a146106d2578063f2fde38b146106fb578063f84ba65d14610724576101d8565b8063b6b36643146105ef578063c49b9a8014610618578063c816841b14610641578063dd62ed3e1461066c576101d8565b8063a457c2d7116100d1578063a457c2d714610521578063a5d69d1f1461055e578063a9059cbb14610587578063b2bdfa7b146105c4576101d8565b8063914eb66a146104b457806395d89b41146104cb578063a073d37f146104f6576101d8565b8063395093511161016f5780635881f3ef1161013e5780635881f3ef146103e657806370a0823114610423578063844d591c146104605780638da5cb5b14610489576101d8565b8063395093511461032c5780633b97084a146103695780634cb80fd514610392578063557ed1ba146103bb576101d8565b806323b872dd116101ab57806323b872dd146102705780632b112e49146102ad5780632c4b2334146102d8578063313ce56714610301576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261074d565b6040516101ff9190613a2d565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906135e8565b6107df565b60405161023c9190613a12565b60405180910390f35b34801561025157600080fd5b5061025a6107fd565b6040516102679190613b8f565b60405180910390f35b34801561027c57600080fd5b506102976004803603810190610292919061355d565b610807565b6040516102a49190613a12565b60405180910390f35b3480156102b957600080fd5b506102c26108e1565b6040516102cf9190613b8f565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa91906134cf565b610927565b005b34801561030d57600080fd5b50610316610a00565b6040516103239190613c34565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e91906135e8565b610a17565b6040516103609190613a12565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b919061368e565b610aca565b005b34801561039e57600080fd5b506103b960048036038101906103b491906134cf565b610b69565b005b3480156103c757600080fd5b506103d0610c42565b6040516103dd9190613b8f565b60405180910390f35b3480156103f257600080fd5b5061040d600480360381019061040891906134cf565b610c4a565b60405161041a919061396d565b60405180910390f35b34801561042f57600080fd5b5061044a600480360381019061044591906134cf565b61112e565b6040516104579190613b8f565b60405180910390f35b34801561046c57600080fd5b50610487600480360381019061048291906135ac565b611177565b005b34801561049557600080fd5b5061049e611267565b6040516104ab919061396d565b60405180910390f35b3480156104c057600080fd5b506104c9611290565b005b3480156104d757600080fd5b506104e06113e3565b6040516104ed9190613a2d565b60405180910390f35b34801561050257600080fd5b5061050b611475565b6040516105189190613b8f565b60405180910390f35b34801561052d57600080fd5b50610548600480360381019061054391906135e8565b61147f565b6040516105559190613a12565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190613665565b61154c565b005b34801561059357600080fd5b506105ae60048036038101906105a991906135e8565b6115fe565b6040516105bb9190613a12565b60405180910390f35b3480156105d057600080fd5b506105d961161d565b6040516105e6919061396d565b60405180910390f35b3480156105fb57600080fd5b506106166004803603810190610611919061368e565b611641565b005b34801561062457600080fd5b5061063f600480360381019061063a9190613665565b6116e0565b005b34801561064d57600080fd5b506106566117c9565b604051610663919061396d565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e9190613521565b6117ef565b6040516106a09190613b8f565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb919061368e565b611876565b005b3480156106de57600080fd5b506106f960048036038101906106f4919061368e565b611959565b005b34801561070757600080fd5b50610722600480360381019061071d91906134cf565b6119f8565b005b34801561073057600080fd5b5061074b600480360381019061074691906135ac565b611bba565b005b60606001805461075c90613ea4565b80601f016020809104026020016040519081016040528092919081815260200182805461078890613ea4565b80156107d55780601f106107aa576101008083540402835291602001916107d5565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b5050505050905090565b60006107f36107ec611caa565b8484611cb2565b6001905092915050565b6000601b54905090565b6000610814848484611e7d565b506108d684610821611caa565b6108d1856040518060600160405280602881526020016142be60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610887611caa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f19092919063ffffffff16565b611cb2565b600190509392505050565b6000610922610911600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661112e565b601b5461285590919063ffffffff16565b905090565b61092f611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b390613aef565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360009054906101000a900460ff16905090565b6000610ac0610a24611caa565b84610abb8560076000610a35611caa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289f90919063ffffffff16565b611cb2565b6001905092915050565b610ad2611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5690613aef565b60405180910390fd5b80601e8190555050565b610b71611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf590613aef565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600042905090565b6000610c54611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd890613aef565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2c57600080fd5b505afa158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6491906134f8565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610dc657600080fd5b505afa158015610dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfe91906134f8565b6040518363ffffffff1660e01b8152600401610e1b929190613988565b60206040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b91906134f8565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561102c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee857600080fd5b505afa158015610efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2091906134f8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8257600080fd5b505afa158015610f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fba91906134f8565b6040518363ffffffff1660e01b8152600401610fd7929190613988565b602060405180830381600087803b158015610ff157600080fd5b505af1158015611005573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102991906134f8565b91505b81602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61117f611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390613aef565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611298611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131c90613aef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600280546113f290613ea4565b80601f016020809104026020016040519081016040528092919081815260200182805461141e90613ea4565b801561146b5780601f106114405761010080835404028352916020019161146b565b820191906000526020600020905b81548152906001019060200180831161144e57829003601f168201915b5050505050905090565b6000601e54905090565b600061154261148c611caa565b8461153d856040518060600160405280602581526020016142e660259139600760006114b6611caa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f19092919063ffffffff16565b611cb2565b6001905092915050565b611554611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890613aef565b60405180910390fd5b80602260166101000a81548160ff02191690831515021790555050565b600061161261160b611caa565b8484611e7d565b506001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611649611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90613aef565b60405180910390fd5b80601a8190555050565b6116e8611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90613aef565b60405180910390fd5b80602260156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516117be9190613a12565b60405180910390a150565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61187e611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190290613aef565b60405180910390fd5b600381111561194f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194690613b4f565b60405180910390fd5b80601f8190555050565b611961611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e590613aef565b60405180910390fd5b80601c8190555050565b611a00611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490613aef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af490613a6f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611bc2611caa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4690613aef565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1990613b6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8990613a8f565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e709190613b8f565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee590613b2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5590613a4f565b60405180910390fd5b60008211611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890613b0f565b60405180910390fd5b602260149054906101000a900460ff1615611fc857611fc18484846128fd565b90506127ea565b6000611fd33061112e565b90506000601e548210159050808015611ff95750602260149054906101000a900460ff16155b801561204f5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120675750602260159054906101000a900460ff165b1561209157602260169054906101000a900460ff161561208757601e5491505b61209082612ad0565b5b61211a846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f19092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600080612168611267565b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580156121d657506121a6611267565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156123df5761221760646122096121fa601054600b5461285590919063ffffffff16565b89612cc190919063ffffffff16565b612d3c90919063ffffffff16565b9150600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122fd576122a7606461229961228a601054600b5461285590919063ffffffff16565b89612cc190919063ffffffff16565b612d3c90919063ffffffff16565b915060006010541180156122be5750601a54601954105b156122f8576122eb60646122dd60105489612cc190919063ffffffff16565b612d3c90919063ffffffff16565b90506122f78882612d86565b5b6123de565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123dd5761238b606461237d61236e601854600c5461285590919063ffffffff16565b89612cc190919063ffffffff16565b612d3c90919063ffffffff16565b915060006018541180156123a25750601a54601954105b156123dc576123cf60646123c160185489612cc190919063ffffffff16565b612d3c90919063ffffffff16565b90506123db8882612d86565b5b5b5b5b60008211156126e757600091506000600267ffffffffffffffff81111561242f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561245d5781602001602082028036833780820191505090505b509050888160008151811061249b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508781600181518110612510577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f89846040518363ffffffff1660e01b81526004016125a9929190613baa565b60006040518083038186803b1580156125c157600080fd5b505afa1580156125d5573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906125fe9190613624565b90508060008151811061263a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518461264d9190613dd6565b93506126a184600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289f90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b61273986600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289f90919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516127d99190613b8f565b60405180910390a360019450505050505b9392505050565b6000838311158290612839576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128309190613a2d565b60405180910390fd5b50600083856128489190613dd6565b9050809150509392505050565b600061289783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127f1565b905092915050565b60008082846128ae9190613cf5565b9050838110156128f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ea90613aaf565b60405180910390fd5b8091505092915050565b6000612988826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f19092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a1d82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289f90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612abd9190613b8f565b60405180910390a3600190509392505050565b6001602260146101000a81548160ff0219169083151502179055506000612b296002612b1b601454612b0d60115487612cc190919063ffffffff16565b612d3c90919063ffffffff16565b612d3c90919063ffffffff16565b90506000612b40828461285590919063ffffffff16565b9050612b4b81612f16565b60004790506000612b7c612b6b6002601154612d3c90919063ffffffff16565b60145461285590919063ffffffff16565b90506000612bba6002612bac84612b9e60115488612cc190919063ffffffff16565b612d3c90919063ffffffff16565b612d3c90919063ffffffff16565b90506000612be583612bd760135487612cc190919063ffffffff16565b612d3c90919063ffffffff16565b90506000612c0e82612c00858861285590919063ffffffff16565b61285590919063ffffffff16565b90506000811115612c4657612c45600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613213565b5b6000821115612c7c57612c7b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613213565b5b600083118015612c8c5750600087115b15612c9c57612c9b878461325e565b5b505050505050506000602260146101000a81548160ff02191690831515021790555050565b600080831415612cd45760009050612d36565b60008284612ce29190613d7c565b9050828482612cf19190613d4b565b14612d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2890613acf565b60405180910390fd5b809150505b92915050565b6000612d7e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061336d565b905092915050565b601a5460195410612d9657612f12565b612e0a8160066000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289f90919063ffffffff16565b60066000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e848160195461289f90919063ffffffff16565b601981905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f099190613b8f565b60405180910390a35b5050565b6000600267ffffffffffffffff811115612f59577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f875781602001602082028036833780820191505090505b5090503081600081518110612fc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561306757600080fd5b505afa15801561307b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309f91906134f8565b816001815181106130d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061314030602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cb2565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131a4959493929190613bda565b600060405180830381600087803b1580156131be57600080fd5b505af11580156131d2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613207929190613baa565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613259573d6000803e3d6000fd5b505050565b61328b30602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cb2565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613314969594939291906139b1565b6060604051808303818588803b15801561332d57600080fd5b505af1158015613341573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061336691906136b7565b5050505050565b600080831182906133b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ab9190613a2d565b60405180910390fd5b50600083856133c39190613d4b565b9050809150509392505050565b60006133e36133de84613c74565b613c4f565b9050808382526020820190508285602086028201111561340257600080fd5b60005b85811015613432578161341888826134ba565b845260208401935060208301925050600181019050613405565b5050509392505050565b60008135905061344b81614278565b92915050565b60008151905061346081614278565b92915050565b600082601f83011261347757600080fd5b81516134878482602086016133d0565b91505092915050565b60008135905061349f8161428f565b92915050565b6000813590506134b4816142a6565b92915050565b6000815190506134c9816142a6565b92915050565b6000602082840312156134e157600080fd5b60006134ef8482850161343c565b91505092915050565b60006020828403121561350a57600080fd5b600061351884828501613451565b91505092915050565b6000806040838503121561353457600080fd5b60006135428582860161343c565b92505060206135538582860161343c565b9150509250929050565b60008060006060848603121561357257600080fd5b60006135808682870161343c565b93505060206135918682870161343c565b92505060406135a2868287016134a5565b9150509250925092565b600080604083850312156135bf57600080fd5b60006135cd8582860161343c565b92505060206135de85828601613490565b9150509250929050565b600080604083850312156135fb57600080fd5b60006136098582860161343c565b925050602061361a858286016134a5565b9150509250929050565b60006020828403121561363657600080fd5b600082015167ffffffffffffffff81111561365057600080fd5b61365c84828501613466565b91505092915050565b60006020828403121561367757600080fd5b600061368584828501613490565b91505092915050565b6000602082840312156136a057600080fd5b60006136ae848285016134a5565b91505092915050565b6000806000606084860312156136cc57600080fd5b60006136da868287016134ba565b93505060206136eb868287016134ba565b92505060406136fc868287016134ba565b9150509250925092565b6000613712838361371e565b60208301905092915050565b61372781613e0a565b82525050565b61373681613e0a565b82525050565b600061374782613cb0565b6137518185613cd3565b935061375c83613ca0565b8060005b8381101561378d5781516137748882613706565b975061377f83613cc6565b925050600181019050613760565b5085935050505092915050565b6137a381613e1c565b82525050565b6137b281613e5f565b82525050565b60006137c382613cbb565b6137cd8185613ce4565b93506137dd818560208601613e71565b6137e681613fc3565b840191505092915050565b60006137fe602383613ce4565b915061380982613fd4565b604082019050919050565b6000613821602683613ce4565b915061382c82614023565b604082019050919050565b6000613844602283613ce4565b915061384f82614072565b604082019050919050565b6000613867601b83613ce4565b9150613872826140c1565b602082019050919050565b600061388a602183613ce4565b9150613895826140ea565b604082019050919050565b60006138ad602083613ce4565b91506138b882614139565b602082019050919050565b60006138d0602983613ce4565b91506138db82614162565b604082019050919050565b60006138f3602583613ce4565b91506138fe826141b1565b604082019050919050565b6000613916601283613ce4565b915061392182614200565b602082019050919050565b6000613939602483613ce4565b915061394482614229565b604082019050919050565b61395881613e48565b82525050565b61396781613e52565b82525050565b6000602082019050613982600083018461372d565b92915050565b600060408201905061399d600083018561372d565b6139aa602083018461372d565b9392505050565b600060c0820190506139c6600083018961372d565b6139d3602083018861394f565b6139e060408301876137a9565b6139ed60608301866137a9565b6139fa608083018561372d565b613a0760a083018461394f565b979650505050505050565b6000602082019050613a27600083018461379a565b92915050565b60006020820190508181036000830152613a4781846137b8565b905092915050565b60006020820190508181036000830152613a68816137f1565b9050919050565b60006020820190508181036000830152613a8881613814565b9050919050565b60006020820190508181036000830152613aa881613837565b9050919050565b60006020820190508181036000830152613ac88161385a565b9050919050565b60006020820190508181036000830152613ae88161387d565b9050919050565b60006020820190508181036000830152613b08816138a0565b9050919050565b60006020820190508181036000830152613b28816138c3565b9050919050565b60006020820190508181036000830152613b48816138e6565b9050919050565b60006020820190508181036000830152613b6881613909565b9050919050565b60006020820190508181036000830152613b888161392c565b9050919050565b6000602082019050613ba4600083018461394f565b92915050565b6000604082019050613bbf600083018561394f565b8181036020830152613bd1818461373c565b90509392505050565b600060a082019050613bef600083018861394f565b613bfc60208301876137a9565b8181036040830152613c0e818661373c565b9050613c1d606083018561372d565b613c2a608083018461394f565b9695505050505050565b6000602082019050613c49600083018461395e565b92915050565b6000613c59613c6a565b9050613c658282613ed6565b919050565b6000604051905090565b600067ffffffffffffffff821115613c8f57613c8e613f94565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613d0082613e48565b9150613d0b83613e48565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d4057613d3f613f07565b5b828201905092915050565b6000613d5682613e48565b9150613d6183613e48565b925082613d7157613d70613f36565b5b828204905092915050565b6000613d8782613e48565b9150613d9283613e48565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dcb57613dca613f07565b5b828202905092915050565b6000613de182613e48565b9150613dec83613e48565b925082821015613dff57613dfe613f07565b5b828203905092915050565b6000613e1582613e28565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613e6a82613e48565b9050919050565b60005b83811015613e8f578082015181840152602081019050613e74565b83811115613e9e576000848401525b50505050565b60006002820490506001821680613ebc57607f821691505b60208210811415613ed057613ecf613f65565b5b50919050565b613edf82613fc3565b810181811067ffffffffffffffff82111715613efe57613efd613f94565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f6e657756616c7565206d757374203c3d20330000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61428181613e0a565b811461428c57600080fd5b50565b61429881613e1c565b81146142a357600080fd5b50565b6142af81613e48565b81146142ba57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d64eb7cf8120c68cdb30579c6d39966450c58acbf13cb1c985749ac20869450864736f6c63430008040033

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

0000000000000000000000000000000000000000000000000000000001312d00000000000000000000000000d86db99701cb198f613d7f9bb66c1764ee31e54b

-----Decoded View---------------
Arg [0] : supply (uint256): 20000000
Arg [1] : router (address): 0xD86DB99701CB198F613D7f9bB66c1764Ee31E54B

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000001312d00
Arg [1] : 000000000000000000000000d86db99701cb198f613d7f9bb66c1764ee31e54b


Deployed Bytecode Sourcemap

7536:15077:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10497:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11792:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10774:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15010:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13716:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13267:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10683:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11160:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12985:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13120:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6454:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13986:747;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10882:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12306:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5835:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6049:145;;;;;;;;;;;;;:::i;:::-;;10588:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11663:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11386:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13583:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14835:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5711:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12578:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13404:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9182:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11009:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12697:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12864:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6202:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12443:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10497:83;10534:13;10567:5;10560:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10497:83;:::o;11792:161::-;11867:4;11884:39;11893:12;:10;:12::i;:::-;11907:7;11916:6;11884:8;:39::i;:::-;11941:4;11934:11;;11792:161;;;;:::o;10774:100::-;10827:7;10854:12;;10847:19;;10774:100;:::o;15010:313::-;15108:4;15125:36;15135:6;15143:9;15154:6;15125:9;:36::i;:::-;;15172:121;15181:6;15189:12;:10;:12::i;:::-;15203:89;15241:6;15203:89;;;;;;;;;;;;;;;;;:11;:19;15215:6;15203:19;;;;;;;;;;;;;;;:33;15223:12;:10;:12::i;:::-;15203:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;15172:8;:121::i;:::-;15311:4;15304:11;;15010:313;;;;;:::o;13716:128::-;13769:7;13796:40;13813:22;13823:11;;;;;;;;;;;13813:9;:22::i;:::-;13796:12;;:16;;:40;;;;:::i;:::-;13789:47;;13716:128;:::o;13267:129::-;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13377:10:::1;13349:17;;:39;;;;;;;;;;;;;;;;;;13267:129:::0;:::o;10683:83::-;10724:5;10749:9;;;;;;;;;;;10742:16;;10683:83;:::o;11160:218::-;11248:4;11265:83;11274:12;:10;:12::i;:::-;11288:7;11297:50;11336:10;11297:11;:25;11309:12;:10;:12::i;:::-;11297:25;;;;;;;;;;;;;;;:34;11323:7;11297:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11265:8;:83::i;:::-;11366:4;11359:11;;11160:218;;;;:::o;12985:125::-;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13094:8:::1;13067:24;:35;;;;12985:125:::0;:::o;13120:139::-;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13240:10:::1;13207:22;;:44;;;;;;;;;;;;;;;;;;13120:139:::0;:::o;6454:90::-;6494:7;6521:15;6514:22;;6454:90;:::o;13986:747::-;14066:22;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14103:35:::1;14160:16;14103:74;;14225:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14207:53;;;14269:4;14276:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14207:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14190:110;;14342:1;14316:28;;:14;:28;;;14313:225;;;14430:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14412:74;;;14495:4;14502:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14412:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14395:131;;14313:225;14564:14;14550:11;;:28;;;;;;;;;;;;;;;;;;14630:16;14612:15;;:34;;;;;;;;;;;;;;;;;;14721:4;14684:12;:34;14705:11;;;;;;;;;;;14684:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;6032:1;13986:747:::0;;;:::o;10882:119::-;10948:7;10975:9;:18;10985:7;10975:18;;;;;;;;;;;;;;;;10968:25;;10882:119;;;:::o;12306:129::-;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12419:8:::1;12395:12;:21;12408:7;12395:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12306:129:::0;;:::o;5835:79::-;5873:7;5900:6;;;;;;;;;;;5893:13;;5835:79;:::o;6049:145::-;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6153:1:::1;6116:40;;6137:6;::::0;::::1;;;;;;;;6116:40;;;;;;;;;;;;6184:1;6167:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6049:145::o:0;10588:87::-;10627:13;10660:7;10653:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10588:87;:::o;11663:121::-;11725:7;11752:24;;11745:31;;11663:121;:::o;11386:269::-;11479:4;11496:129;11505:12;:10;:12::i;:::-;11519:7;11528:96;11567:15;11528:96;;;;;;;;;;;;;;;;;:11;:25;11540:12;:10;:12::i;:::-;11528:25;;;;;;;;;;;;;;;:34;11554:7;11528:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11496:8;:129::i;:::-;11643:4;11636:11;;11386:269;;;;:::o;13583:125::-;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13692:8:::1;13664:25;;:36;;;;;;;;;;;;;;;;;;13583:125:::0;:::o;14835:167::-;14913:4;14930:42;14940:12;:10;:12::i;:::-;14954:9;14965:6;14930:9;:42::i;:::-;;14990:4;14983:11;;14835:167;;;;:::o;5711:21::-;;;;;;;;;;;;:::o;12578:111::-;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12671:10:::1;12651:17;:30;;;;12578:111:::0;:::o;13404:171::-;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13505:8:::1;13481:21;;:32;;;;;;;;;;;;;;;;;;13529:38;13558:8;13529:38;;;;;;:::i;:::-;;;;;;;;13404:171:::0;:::o;9182:26::-;;;;;;;;;;;;;:::o;11009:143::-;11090:7;11117:11;:18;11129:5;11117:18;;;;;;;;;;;;;;;:27;11136:7;11117:27;;;;;;;;;;;;;;;;11110:34;;11009:143;;;;:::o;12697:157::-;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12788:1:::1;12776:8;:13;;12768:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12838:8;12823:12;:23;;;;12697:157:::0;:::o;12864:111::-;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12956:11:::1;12941:12;:26;;;;12864:111:::0;:::o;6202:244::-;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6311:1:::1;6291:22;;:8;:22;;;;6283:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6401:8;6372:38;;6393:6;::::0;::::1;;;;;;;;6372:38;;;;;;;;;;;;6430:8;6421:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6202:244:::0;:::o;12443:127::-;5972:12;:10;:12::i;:::-;5962:22;;:6;;;;;;;;;;:22;;;5954:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12556:6:::1;12530:15;:23;12546:6;12530:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12443:127:::0;;:::o;359:115::-;412:15;455:10;440:26;;359:115;:::o;11961:337::-;12071:1;12054:19;;:5;:19;;;;12046:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12152:1;12133:21;;:7;:21;;;;12125:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12236:6;12206:11;:18;12218:5;12206:18;;;;;;;;;;;;;;;:27;12225:7;12206:27;;;;;;;;;;;;;;;:36;;;;12274:7;12258:32;;12267:5;12258:32;;;12283:6;12258:32;;;;;;:::i;:::-;;;;;;;;11961:337;;;:::o;15331:2714::-;15418:4;15463:1;15445:20;;:6;:20;;;;15437:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15547:1;15526:23;;:9;:23;;;;15518:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15617:1;15608:6;:10;15600:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15680:16;;;;;;;;;;;15677:2361;;;15729:41;15744:6;15752:9;15763:6;15729:14;:41::i;:::-;15722:48;;;;15677:2361;15823:28;15854:24;15872:4;15854:9;:24::i;:::-;15823:55;;15893:28;15948:24;;15924:20;:48;;15893:79;;15993:23;:44;;;;;16021:16;;;;;;;;;;;16020:17;15993:44;:69;;;;;16042:12;:20;16055:6;16042:20;;;;;;;;;;;;;;;;;;;;;;;;;16041:21;15993:69;:94;;;;;16066:21;;;;;;;;;;;15993:94;15989:301;;;16124:25;;;;;;;;;;;16121:98;;;16195:24;;16172:47;;16121:98;16238:36;16253:20;16238:14;:36::i;:::-;15989:301;16324:53;16346:6;16324:53;;;;;;;;;;;;;;;;;:9;:17;16334:6;16324:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;16304:9;:17;16314:6;16304:17;;;;;;;;;;;;;;;:73;;;;16392:17;16426:18;16475:7;:5;:7::i;:::-;16465:17;;:6;:17;;;;:41;;;;;16499:7;:5;:7::i;:::-;16486:20;;:9;:20;;;;16465:41;16461:946;;;16539:58;16593:3;16539:49;16550:37;16572:14;;16550:17;;:21;;:37;;;;:::i;:::-;16539:6;:10;;:49;;;;:::i;:::-;:53;;:58;;;;:::i;:::-;16527:70;;16619:12;:20;16632:6;16619:20;;;;;;;;;;;;;;;;;;;;;;;;;16616:774;;;16676:58;16730:3;16676:49;16687:37;16709:14;;16687:17;;:21;;:37;;;;:::i;:::-;16676:6;:10;;:49;;;;:::i;:::-;:53;;:58;;;;:::i;:::-;16664:70;;16777:1;16760:14;;:18;:52;;;;;16795:17;;16782:10;;:30;16760:52;16757:212;;;16854:35;16885:3;16854:26;16865:14;;16854:6;:10;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;16841:48;;16916:29;16927:6;16934:10;16916;:29::i;:::-;16757:212;16616:774;;;17014:12;:23;17027:9;17014:23;;;;;;;;;;;;;;;;;;;;;;;;;17011:379;;;17074:60;17130:3;17074:51;17085:39;17108:15;;17085:18;;:22;;:39;;;;:::i;:::-;17074:6;:10;;:51;;;;:::i;:::-;:55;;:60;;;;:::i;:::-;17062:72;;17178:1;17160:15;;:19;:53;;;;;17196:17;;17183:10;;:30;17160:53;17157:214;;;17255:36;17287:3;17255:27;17266:15;;17255:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;17242:49;;17318:29;17329:6;17336:10;17318;:29::i;:::-;17157:214;17011:379;16616:774;16461:946;17437:1;17425:9;:13;17422:439;;;17472:1;17460:13;;17493:21;17531:1;17517:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17493:40;;17563:6;17553:4;17558:1;17553:7;;;;;;;;;;;;;;;;;;;;;:16;;;;;;;;;;;17599:9;17589:4;17594:1;17589:7;;;;;;;;;;;;;;;;;;;;;:19;;;;;;;;;;;17628:24;17674:15;;;;;;;;;;;17655:49;;;17705:6;17712:4;17655:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17628:89;;17750:7;17758:1;17750:10;;;;;;;;;;;;;;;;;;;;;;17737:23;;;;;:::i;:::-;;;17806:39;17835:9;17806;:24;17824:4;17806:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;17779:9;:24;17797:4;17779:24;;;;;;;;;;;;;;;:66;;;;17422:439;;;17913:32;17938:6;17913:9;:20;17923:9;17913:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;17890:9;:20;17900:9;17890:20;;;;;;;;;;;;;;;:55;;;;17982:9;17965:35;;17974:6;17965:35;;;17993:6;17965:35;;;;;;:::i;:::-;;;;;;;;18022:4;18015:11;;;;;;15331:2714;;;;;;:::o;1781:192::-;1867:7;1900:1;1895;:6;;1903:12;1887:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1927:9;1943:1;1939;:5;;;;:::i;:::-;1927:17;;1964:1;1957:8;;;1781:192;;;;;:::o;1637:136::-;1695:7;1722:43;1726:1;1729;1722:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1715:50;;1637:136;;;;:::o;1448:181::-;1506:7;1526:9;1542:1;1538;:5;;;;:::i;:::-;1526:17;;1567:1;1562;:6;;1554:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1620:1;1613:8;;;1448:181;;;;:::o;18053:330::-;18146:4;18183:53;18205:6;18183:53;;;;;;;;;;;;;;;;;:9;:17;18193:6;18183:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18163:9;:17;18173:6;18163:17;;;;;;;;;;;;;;;:73;;;;18270:32;18295:6;18270:9;:20;18280:9;18270:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18247:9;:20;18257:9;18247:20;;;;;;;;;;;;;;;:55;;;;18335:9;18318:35;;18327:6;18318:35;;;18346:6;18318:35;;;;;;:::i;:::-;;;;;;;;18371:4;18364:11;;18053:330;;;;;:::o;18391:1032::-;9813:4;9794:16;;:23;;;;;;;;;;;;;;;;;;18465:19:::1;18487:65;18550:1;18487:58;18520:24;;18487:28;18499:15;;18487:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;18465:87;;18563:21;18587:24;18599:11;18587:7;:11;;:24;;;;:::i;:::-;18563:48;;18624:31;18641:13;18624:16;:31::i;:::-;18666:22;18691:21;18666:46;;18725:19;18747:52;18776:22;18796:1;18776:15;;:19;;:22;;;;:::i;:::-;18747:24;;:28;;:52;;;;:::i;:::-;18725:74;;18812:26;18841:59;18898:1;18841:52;18881:11;18841:35;18860:15;;18841:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;18812:88;;18911:21;18935:47;18970:11;18935:30;18954:10;;18935:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;18911:71;;18993:26;19022:57;19065:13;19022:38;19041:18;19022:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;18993:86;;19116:1;19095:18;:22;19092:104;;;19132:64;19153:22;;;;;;;;;;;19177:18;19132:20;:64::i;:::-;19092:104;19228:1;19212:13;:17;19209:89;;;19244:54;19265:17;;;;;;;;;;;19284:13;19244:20;:54::i;:::-;19209:89;19335:1;19314:18;:22;:41;;;;;19354:1;19340:11;:15;19314:41;19311:104;;;19370:45;19383:11;19396:18;19370:12;:45::i;:::-;19311:104;9828:1;;;;;;;9859:5:::0;9840:16;;:24;;;;;;;;;;;;;;;;;;18391:1032;:::o;1981:250::-;2039:7;2068:1;2063;:6;2059:47;;;2093:1;2086:8;;;;2059:47;2118:9;2134:1;2130;:5;;;;:::i;:::-;2118:17;;2163:1;2158;2154;:5;;;;:::i;:::-;:10;2146:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2222:1;2215:8;;;1981:250;;;;;:::o;2239:132::-;2297:7;2324:39;2328:1;2331;2324:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2317:46;;2239:132;;;;:::o;22287:321::-;22401:17;;22387:10;;:31;22384:43;;22420:7;;22384:43;22464:35;22491:7;22464:9;:22;22474:11;;;;;;;;;;;22464:22;;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;22439:9;:22;22449:11;;;;;;;;;;;22439:22;;;;;;;;;;;;;;;:60;;;;22523:23;22538:7;22523:10;;:14;;:23;;;;:::i;:::-;22510:10;:36;;;;22579:11;;;;;;;;;;;22562:38;;22571:6;22562:38;;;22592:7;22562:38;;;;;;:::i;:::-;;;;;;;;22287:321;;;:::o;19431:658::-;19557:21;19595:1;19581:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19557:40;;19626:4;19608;19613:1;19608:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;19652:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19642:4;19647:1;19642:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;19687:62;19704:4;19719:15;;;;;;;;;;;19737:11;19687:8;:62::i;:::-;19788:15;;;;;;;;;;;:66;;;19869:11;19895:1;19939:4;19966;20002:15;19788:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20046:35;20063:11;20076:4;20046:35;;;;;;;:::i;:::-;;;;;;;;19431:658;;:::o;13852:126::-;13944:9;:18;;:26;13963:6;13944:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13852:126;;:::o;20097:520::-;20245:62;20262:4;20277:15;;;;;;;;;;;20295:11;20245:8;:62::i;:::-;20350:15;;;;;;;;;;;:31;;;20389:9;20422:4;20442:11;20468:1;20511;20554:14;;;;;;;;;;;20583:15;20350:259;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20097:520;;:::o;2379:278::-;2465:7;2497:1;2493;:5;2500:12;2485:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2524:9;2540:1;2536;:5;;;;:::i;:::-;2524:17;;2648:1;2641:8;;;2379:278;;;;;:::o;24:677:1:-;131:5;156:81;172:64;229:6;172:64;:::i;:::-;156:81;:::i;:::-;147:90;;257:5;286:6;279:5;272:21;320:4;313:5;309:16;302:23;;346:6;396:3;388:4;380:6;376:17;371:3;367:27;364:36;361:2;;;425:1;422;415:12;361:2;461:1;446:249;471:6;468:1;465:13;446:249;;;539:3;568:48;612:3;600:10;568:48;:::i;:::-;563:3;556:61;646:4;641:3;637:14;630:21;;680:4;675:3;671:14;664:21;;506:189;493:1;490;486:9;481:14;;446:249;;;450:14;137:564;;;;;;;:::o;707:139::-;753:5;791:6;778:20;769:29;;807:33;834:5;807:33;:::i;:::-;759:87;;;;:::o;852:143::-;909:5;940:6;934:13;925:22;;956:33;983:5;956:33;:::i;:::-;915:80;;;;:::o;1018:318::-;1100:5;1149:3;1142:4;1134:6;1130:17;1126:27;1116:2;;1167:1;1164;1157:12;1116:2;1200:6;1194:13;1225:105;1326:3;1318:6;1311:4;1303:6;1299:17;1225:105;:::i;:::-;1216:114;;1106:230;;;;;:::o;1342:133::-;1385:5;1423:6;1410:20;1401:29;;1439:30;1463:5;1439:30;:::i;:::-;1391:84;;;;:::o;1481:139::-;1527:5;1565:6;1552:20;1543:29;;1581:33;1608:5;1581:33;:::i;:::-;1533:87;;;;:::o;1626:143::-;1683:5;1714:6;1708:13;1699:22;;1730:33;1757:5;1730:33;:::i;:::-;1689:80;;;;:::o;1775:262::-;1834:6;1883:2;1871:9;1862:7;1858:23;1854:32;1851:2;;;1899:1;1896;1889:12;1851:2;1942:1;1967:53;2012:7;2003:6;1992:9;1988:22;1967:53;:::i;:::-;1957:63;;1913:117;1841:196;;;;:::o;2043:284::-;2113:6;2162:2;2150:9;2141:7;2137:23;2133:32;2130:2;;;2178:1;2175;2168:12;2130:2;2221:1;2246:64;2302:7;2293:6;2282:9;2278:22;2246:64;:::i;:::-;2236:74;;2192:128;2120:207;;;;:::o;2333:407::-;2401:6;2409;2458:2;2446:9;2437:7;2433:23;2429:32;2426:2;;;2474:1;2471;2464:12;2426:2;2517:1;2542:53;2587:7;2578:6;2567:9;2563:22;2542:53;:::i;:::-;2532:63;;2488:117;2644:2;2670:53;2715:7;2706:6;2695:9;2691:22;2670:53;:::i;:::-;2660:63;;2615:118;2416:324;;;;;:::o;2746:552::-;2823:6;2831;2839;2888:2;2876:9;2867:7;2863:23;2859:32;2856:2;;;2904:1;2901;2894:12;2856:2;2947:1;2972:53;3017:7;3008:6;2997:9;2993:22;2972:53;:::i;:::-;2962:63;;2918:117;3074:2;3100:53;3145:7;3136:6;3125:9;3121:22;3100:53;:::i;:::-;3090:63;;3045:118;3202:2;3228:53;3273:7;3264:6;3253:9;3249:22;3228:53;:::i;:::-;3218:63;;3173:118;2846:452;;;;;:::o;3304:401::-;3369:6;3377;3426:2;3414:9;3405:7;3401:23;3397:32;3394:2;;;3442:1;3439;3432:12;3394:2;3485:1;3510:53;3555:7;3546:6;3535:9;3531:22;3510:53;:::i;:::-;3500:63;;3456:117;3612:2;3638:50;3680:7;3671:6;3660:9;3656:22;3638:50;:::i;:::-;3628:60;;3583:115;3384:321;;;;;:::o;3711:407::-;3779:6;3787;3836:2;3824:9;3815:7;3811:23;3807:32;3804:2;;;3852:1;3849;3842:12;3804:2;3895:1;3920:53;3965:7;3956:6;3945:9;3941:22;3920:53;:::i;:::-;3910:63;;3866:117;4022:2;4048:53;4093:7;4084:6;4073:9;4069:22;4048:53;:::i;:::-;4038:63;;3993:118;3794:324;;;;;:::o;4124:420::-;4219:6;4268:2;4256:9;4247:7;4243:23;4239:32;4236:2;;;4284:1;4281;4274:12;4236:2;4348:1;4337:9;4333:17;4327:24;4378:18;4370:6;4367:30;4364:2;;;4410:1;4407;4400:12;4364:2;4438:89;4519:7;4510:6;4499:9;4495:22;4438:89;:::i;:::-;4428:99;;4298:239;4226:318;;;;:::o;4550:256::-;4606:6;4655:2;4643:9;4634:7;4630:23;4626:32;4623:2;;;4671:1;4668;4661:12;4623:2;4714:1;4739:50;4781:7;4772:6;4761:9;4757:22;4739:50;:::i;:::-;4729:60;;4685:114;4613:193;;;;:::o;4812:262::-;4871:6;4920:2;4908:9;4899:7;4895:23;4891:32;4888:2;;;4936:1;4933;4926:12;4888:2;4979:1;5004:53;5049:7;5040:6;5029:9;5025:22;5004:53;:::i;:::-;4994:63;;4950:117;4878:196;;;;:::o;5080:596::-;5168:6;5176;5184;5233:2;5221:9;5212:7;5208:23;5204:32;5201:2;;;5249:1;5246;5239:12;5201:2;5292:1;5317:64;5373:7;5364:6;5353:9;5349:22;5317:64;:::i;:::-;5307:74;;5263:128;5430:2;5456:64;5512:7;5503:6;5492:9;5488:22;5456:64;:::i;:::-;5446:74;;5401:129;5569:2;5595:64;5651:7;5642:6;5631:9;5627:22;5595:64;:::i;:::-;5585:74;;5540:129;5191:485;;;;;:::o;5682:179::-;5751:10;5772:46;5814:3;5806:6;5772:46;:::i;:::-;5850:4;5845:3;5841:14;5827:28;;5762:99;;;;:::o;5867:108::-;5944:24;5962:5;5944:24;:::i;:::-;5939:3;5932:37;5922:53;;:::o;5981:118::-;6068:24;6086:5;6068:24;:::i;:::-;6063:3;6056:37;6046:53;;:::o;6135:732::-;6254:3;6283:54;6331:5;6283:54;:::i;:::-;6353:86;6432:6;6427:3;6353:86;:::i;:::-;6346:93;;6463:56;6513:5;6463:56;:::i;:::-;6542:7;6573:1;6558:284;6583:6;6580:1;6577:13;6558:284;;;6659:6;6653:13;6686:63;6745:3;6730:13;6686:63;:::i;:::-;6679:70;;6772:60;6825:6;6772:60;:::i;:::-;6762:70;;6618:224;6605:1;6602;6598:9;6593:14;;6558:284;;;6562:14;6858:3;6851:10;;6259:608;;;;;;;:::o;6873:109::-;6954:21;6969:5;6954:21;:::i;:::-;6949:3;6942:34;6932:50;;:::o;6988:147::-;7083:45;7122:5;7083:45;:::i;:::-;7078:3;7071:58;7061:74;;:::o;7141:364::-;7229:3;7257:39;7290:5;7257:39;:::i;:::-;7312:71;7376:6;7371:3;7312:71;:::i;:::-;7305:78;;7392:52;7437:6;7432:3;7425:4;7418:5;7414:16;7392:52;:::i;:::-;7469:29;7491:6;7469:29;:::i;:::-;7464:3;7460:39;7453:46;;7233:272;;;;;:::o;7511:366::-;7653:3;7674:67;7738:2;7733:3;7674:67;:::i;:::-;7667:74;;7750:93;7839:3;7750:93;:::i;:::-;7868:2;7863:3;7859:12;7852:19;;7657:220;;;:::o;7883:366::-;8025:3;8046:67;8110:2;8105:3;8046:67;:::i;:::-;8039:74;;8122:93;8211:3;8122:93;:::i;:::-;8240:2;8235:3;8231:12;8224:19;;8029:220;;;:::o;8255:366::-;8397:3;8418:67;8482:2;8477:3;8418:67;:::i;:::-;8411:74;;8494:93;8583:3;8494:93;:::i;:::-;8612:2;8607:3;8603:12;8596:19;;8401:220;;;:::o;8627:366::-;8769:3;8790:67;8854:2;8849:3;8790:67;:::i;:::-;8783:74;;8866:93;8955:3;8866:93;:::i;:::-;8984:2;8979:3;8975:12;8968:19;;8773:220;;;:::o;8999:366::-;9141:3;9162:67;9226:2;9221:3;9162:67;:::i;:::-;9155:74;;9238:93;9327:3;9238:93;:::i;:::-;9356:2;9351:3;9347:12;9340:19;;9145:220;;;:::o;9371:366::-;9513:3;9534:67;9598:2;9593:3;9534:67;:::i;:::-;9527:74;;9610:93;9699:3;9610:93;:::i;:::-;9728:2;9723:3;9719:12;9712:19;;9517:220;;;:::o;9743:366::-;9885:3;9906:67;9970:2;9965:3;9906:67;:::i;:::-;9899:74;;9982:93;10071:3;9982:93;:::i;:::-;10100:2;10095:3;10091:12;10084:19;;9889:220;;;:::o;10115:366::-;10257:3;10278:67;10342:2;10337:3;10278:67;:::i;:::-;10271:74;;10354:93;10443:3;10354:93;:::i;:::-;10472:2;10467:3;10463:12;10456:19;;10261:220;;;:::o;10487:366::-;10629:3;10650:67;10714:2;10709:3;10650:67;:::i;:::-;10643:74;;10726:93;10815:3;10726:93;:::i;:::-;10844:2;10839:3;10835:12;10828:19;;10633:220;;;:::o;10859:366::-;11001:3;11022:67;11086:2;11081:3;11022:67;:::i;:::-;11015:74;;11098:93;11187:3;11098:93;:::i;:::-;11216:2;11211:3;11207:12;11200:19;;11005:220;;;:::o;11231:118::-;11318:24;11336:5;11318:24;:::i;:::-;11313:3;11306:37;11296:53;;:::o;11355:112::-;11438:22;11454:5;11438:22;:::i;:::-;11433:3;11426:35;11416:51;;:::o;11473:222::-;11566:4;11604:2;11593:9;11589:18;11581:26;;11617:71;11685:1;11674:9;11670:17;11661:6;11617:71;:::i;:::-;11571:124;;;;:::o;11701:332::-;11822:4;11860:2;11849:9;11845:18;11837:26;;11873:71;11941:1;11930:9;11926:17;11917:6;11873:71;:::i;:::-;11954:72;12022:2;12011:9;12007:18;11998:6;11954:72;:::i;:::-;11827:206;;;;;:::o;12039:807::-;12288:4;12326:3;12315:9;12311:19;12303:27;;12340:71;12408:1;12397:9;12393:17;12384:6;12340:71;:::i;:::-;12421:72;12489:2;12478:9;12474:18;12465:6;12421:72;:::i;:::-;12503:80;12579:2;12568:9;12564:18;12555:6;12503:80;:::i;:::-;12593;12669:2;12658:9;12654:18;12645:6;12593:80;:::i;:::-;12683:73;12751:3;12740:9;12736:19;12727:6;12683:73;:::i;:::-;12766;12834:3;12823:9;12819:19;12810:6;12766:73;:::i;:::-;12293:553;;;;;;;;;:::o;12852:210::-;12939:4;12977:2;12966:9;12962:18;12954:26;;12990:65;13052:1;13041:9;13037:17;13028:6;12990:65;:::i;:::-;12944:118;;;;:::o;13068:313::-;13181:4;13219:2;13208:9;13204:18;13196:26;;13268:9;13262:4;13258:20;13254:1;13243:9;13239:17;13232:47;13296:78;13369:4;13360:6;13296:78;:::i;:::-;13288:86;;13186:195;;;;:::o;13387:419::-;13553:4;13591:2;13580:9;13576:18;13568:26;;13640:9;13634:4;13630:20;13626:1;13615:9;13611:17;13604:47;13668:131;13794:4;13668:131;:::i;:::-;13660:139;;13558:248;;;:::o;13812:419::-;13978:4;14016:2;14005:9;14001:18;13993:26;;14065:9;14059:4;14055:20;14051:1;14040:9;14036:17;14029:47;14093:131;14219:4;14093:131;:::i;:::-;14085:139;;13983:248;;;:::o;14237:419::-;14403:4;14441:2;14430:9;14426:18;14418:26;;14490:9;14484:4;14480:20;14476:1;14465:9;14461:17;14454:47;14518:131;14644:4;14518:131;:::i;:::-;14510:139;;14408:248;;;:::o;14662:419::-;14828:4;14866:2;14855:9;14851:18;14843:26;;14915:9;14909:4;14905:20;14901:1;14890:9;14886:17;14879:47;14943:131;15069:4;14943:131;:::i;:::-;14935:139;;14833:248;;;:::o;15087:419::-;15253:4;15291:2;15280:9;15276:18;15268:26;;15340:9;15334:4;15330:20;15326:1;15315:9;15311:17;15304:47;15368:131;15494:4;15368:131;:::i;:::-;15360:139;;15258:248;;;:::o;15512:419::-;15678:4;15716:2;15705:9;15701:18;15693:26;;15765:9;15759:4;15755:20;15751:1;15740:9;15736:17;15729:47;15793:131;15919:4;15793:131;:::i;:::-;15785:139;;15683:248;;;:::o;15937:419::-;16103:4;16141:2;16130:9;16126:18;16118:26;;16190:9;16184:4;16180:20;16176:1;16165:9;16161:17;16154:47;16218:131;16344:4;16218:131;:::i;:::-;16210:139;;16108:248;;;:::o;16362:419::-;16528:4;16566:2;16555:9;16551:18;16543:26;;16615:9;16609:4;16605:20;16601:1;16590:9;16586:17;16579:47;16643:131;16769:4;16643:131;:::i;:::-;16635:139;;16533:248;;;:::o;16787:419::-;16953:4;16991:2;16980:9;16976:18;16968:26;;17040:9;17034:4;17030:20;17026:1;17015:9;17011:17;17004:47;17068:131;17194:4;17068:131;:::i;:::-;17060:139;;16958:248;;;:::o;17212:419::-;17378:4;17416:2;17405:9;17401:18;17393:26;;17465:9;17459:4;17455:20;17451:1;17440:9;17436:17;17429:47;17493:131;17619:4;17493:131;:::i;:::-;17485:139;;17383:248;;;:::o;17637:222::-;17730:4;17768:2;17757:9;17753:18;17745:26;;17781:71;17849:1;17838:9;17834:17;17825:6;17781:71;:::i;:::-;17735:124;;;;:::o;17865:483::-;18036:4;18074:2;18063:9;18059:18;18051:26;;18087:71;18155:1;18144:9;18140:17;18131:6;18087:71;:::i;:::-;18205:9;18199:4;18195:20;18190:2;18179:9;18175:18;18168:48;18233:108;18336:4;18327:6;18233:108;:::i;:::-;18225:116;;18041:307;;;;;:::o;18354:831::-;18617:4;18655:3;18644:9;18640:19;18632:27;;18669:71;18737:1;18726:9;18722:17;18713:6;18669:71;:::i;:::-;18750:80;18826:2;18815:9;18811:18;18802:6;18750:80;:::i;:::-;18877:9;18871:4;18867:20;18862:2;18851:9;18847:18;18840:48;18905:108;19008:4;18999:6;18905:108;:::i;:::-;18897:116;;19023:72;19091:2;19080:9;19076:18;19067:6;19023:72;:::i;:::-;19105:73;19173:3;19162:9;19158:19;19149:6;19105:73;:::i;:::-;18622:563;;;;;;;;:::o;19191:214::-;19280:4;19318:2;19307:9;19303:18;19295:26;;19331:67;19395:1;19384:9;19380:17;19371:6;19331:67;:::i;:::-;19285:120;;;;:::o;19411:129::-;19445:6;19472:20;;:::i;:::-;19462:30;;19501:33;19529:4;19521:6;19501:33;:::i;:::-;19452:88;;;:::o;19546:75::-;19579:6;19612:2;19606:9;19596:19;;19586:35;:::o;19627:311::-;19704:4;19794:18;19786:6;19783:30;19780:2;;;19816:18;;:::i;:::-;19780:2;19866:4;19858:6;19854:17;19846:25;;19926:4;19920;19916:15;19908:23;;19709:229;;;:::o;19944:132::-;20011:4;20034:3;20026:11;;20064:4;20059:3;20055:14;20047:22;;20016:60;;;:::o;20082:114::-;20149:6;20183:5;20177:12;20167:22;;20156:40;;;:::o;20202:99::-;20254:6;20288:5;20282:12;20272:22;;20261:40;;;:::o;20307:113::-;20377:4;20409;20404:3;20400:14;20392:22;;20382:38;;;:::o;20426:184::-;20525:11;20559:6;20554:3;20547:19;20599:4;20594:3;20590:14;20575:29;;20537:73;;;;:::o;20616:169::-;20700:11;20734:6;20729:3;20722:19;20774:4;20769:3;20765:14;20750:29;;20712:73;;;;:::o;20791:305::-;20831:3;20850:20;20868:1;20850:20;:::i;:::-;20845:25;;20884:20;20902:1;20884:20;:::i;:::-;20879:25;;21038:1;20970:66;20966:74;20963:1;20960:81;20957:2;;;21044:18;;:::i;:::-;20957:2;21088:1;21085;21081:9;21074:16;;20835:261;;;;:::o;21102:185::-;21142:1;21159:20;21177:1;21159:20;:::i;:::-;21154:25;;21193:20;21211:1;21193:20;:::i;:::-;21188:25;;21232:1;21222:2;;21237:18;;:::i;:::-;21222:2;21279:1;21276;21272:9;21267:14;;21144:143;;;;:::o;21293:348::-;21333:7;21356:20;21374:1;21356:20;:::i;:::-;21351:25;;21390:20;21408:1;21390:20;:::i;:::-;21385:25;;21578:1;21510:66;21506:74;21503:1;21500:81;21495:1;21488:9;21481:17;21477:105;21474:2;;;21585:18;;:::i;:::-;21474:2;21633:1;21630;21626:9;21615:20;;21341:300;;;;:::o;21647:191::-;21687:4;21707:20;21725:1;21707:20;:::i;:::-;21702:25;;21741:20;21759:1;21741:20;:::i;:::-;21736:25;;21780:1;21777;21774:8;21771:2;;;21785:18;;:::i;:::-;21771:2;21830:1;21827;21823:9;21815:17;;21692:146;;;;:::o;21844:96::-;21881:7;21910:24;21928:5;21910:24;:::i;:::-;21899:35;;21889:51;;;:::o;21946:90::-;21980:7;22023:5;22016:13;22009:21;21998:32;;21988:48;;;:::o;22042:126::-;22079:7;22119:42;22112:5;22108:54;22097:65;;22087:81;;;:::o;22174:77::-;22211:7;22240:5;22229:16;;22219:32;;;:::o;22257:86::-;22292:7;22332:4;22325:5;22321:16;22310:27;;22300:43;;;:::o;22349:121::-;22407:9;22440:24;22458:5;22440:24;:::i;:::-;22427:37;;22417:53;;;:::o;22476:307::-;22544:1;22554:113;22568:6;22565:1;22562:13;22554:113;;;22653:1;22648:3;22644:11;22638:18;22634:1;22629:3;22625:11;22618:39;22590:2;22587:1;22583:10;22578:15;;22554:113;;;22685:6;22682:1;22679:13;22676:2;;;22765:1;22756:6;22751:3;22747:16;22740:27;22676:2;22525:258;;;;:::o;22789:320::-;22833:6;22870:1;22864:4;22860:12;22850:22;;22917:1;22911:4;22907:12;22938:18;22928:2;;22994:4;22986:6;22982:17;22972:27;;22928:2;23056;23048:6;23045:14;23025:18;23022:38;23019:2;;;23075:18;;:::i;:::-;23019:2;22840:269;;;;:::o;23115:281::-;23198:27;23220:4;23198:27;:::i;:::-;23190:6;23186:40;23328:6;23316:10;23313:22;23292:18;23280:10;23277:34;23274:62;23271:2;;;23339:18;;:::i;:::-;23271:2;23379:10;23375:2;23368:22;23158:238;;;:::o;23402:180::-;23450:77;23447:1;23440:88;23547:4;23544:1;23537:15;23571:4;23568:1;23561:15;23588:180;23636:77;23633:1;23626:88;23733:4;23730:1;23723:15;23757:4;23754:1;23747:15;23774:180;23822:77;23819:1;23812:88;23919:4;23916:1;23909:15;23943:4;23940:1;23933:15;23960:180;24008:77;24005:1;23998:88;24105:4;24102:1;24095:15;24129:4;24126:1;24119:15;24146:102;24187:6;24238:2;24234:7;24229:2;24222:5;24218:14;24214:28;24204:38;;24194:54;;;:::o;24254:222::-;24394:34;24390:1;24382:6;24378:14;24371:58;24463:5;24458:2;24450:6;24446:15;24439:30;24360:116;:::o;24482:225::-;24622:34;24618:1;24610:6;24606:14;24599:58;24691:8;24686:2;24678:6;24674:15;24667:33;24588:119;:::o;24713:221::-;24853:34;24849:1;24841:6;24837:14;24830:58;24922:4;24917:2;24909:6;24905:15;24898:29;24819:115;:::o;24940:177::-;25080:29;25076:1;25068:6;25064:14;25057:53;25046:71;:::o;25123:220::-;25263:34;25259:1;25251:6;25247:14;25240:58;25332:3;25327:2;25319:6;25315:15;25308:28;25229:114;:::o;25349:182::-;25489:34;25485:1;25477:6;25473:14;25466:58;25455:76;:::o;25537:228::-;25677:34;25673:1;25665:6;25661:14;25654:58;25746:11;25741:2;25733:6;25729:15;25722:36;25643:122;:::o;25771:224::-;25911:34;25907:1;25899:6;25895:14;25888:58;25980:7;25975:2;25967:6;25963:15;25956:32;25877:118;:::o;26001:168::-;26141:20;26137:1;26129:6;26125:14;26118:44;26107:62;:::o;26175:223::-;26315:34;26311:1;26303:6;26299:14;26292:58;26384:6;26379:2;26371:6;26367:15;26360:31;26281:117;:::o;26404:122::-;26477:24;26495:5;26477:24;:::i;:::-;26470:5;26467:35;26457:2;;26516:1;26513;26506:12;26457:2;26447:79;:::o;26532:116::-;26602:21;26617:5;26602:21;:::i;:::-;26595:5;26592:32;26582:2;;26638:1;26635;26628:12;26582:2;26572:76;:::o;26654:122::-;26727:24;26745:5;26727:24;:::i;:::-;26720:5;26717:35;26707:2;;26766:1;26763;26756:12;26707:2;26697:79;:::o

Swarm Source

ipfs://d64eb7cf8120c68cdb30579c6d39966450c58acbf13cb1c985749ac208694508

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.