ETH Price: $2,696.39 (-2.57%)

Contract

0x531128FdA6b92f8bBEfEcD78F019E7781050e32E
 

Overview

ETH Balance

0.000630494670175041 ETH

Eth Value

$1.70 (@ $2,696.39/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve189248812024-01-03 5:54:23236 days ago1704261263IN
0x531128Fd...81050e32E
0 ETH0.0005584912.01223643
Approve186959472023-12-02 3:10:59268 days ago1701486659IN
0x531128Fd...81050e32E
0 ETH0.0013484929.13908941
Manual Send186095542023-11-20 0:54:11280 days ago1700441651IN
0x531128Fd...81050e32E
0 ETH0.0005249417.30713477
Approve185401282023-11-10 7:42:59290 days ago1699602179IN
0x531128Fd...81050e32E
0 ETH0.0014615131.63042727
Approve185329872023-11-09 7:46:35291 days ago1699515995IN
0x531128Fd...81050e32E
0 ETH0.0014776631.74083984
Approve185328012023-11-09 7:09:11291 days ago1699513751IN
0x531128Fd...81050e32E
0 ETH0.0016017934.40724868
Approve185318372023-11-09 3:54:11291 days ago1699502051IN
0x531128Fd...81050e32E
0 ETH0.0011559824.83115697
Approve185146652023-11-06 18:16:35294 days ago1699294595IN
0x531128Fd...81050e32E
0 ETH0.0018442239.89228542
Approve185082792023-11-05 20:48:11294 days ago1699217291IN
0x531128Fd...81050e32E
0 ETH0.0008858419.03320369
Approve185078412023-11-05 19:19:35294 days ago1699211975IN
0x531128Fd...81050e32E
0 ETH0.001670735.9338552
Approve185067172023-11-05 15:32:35295 days ago1699198355IN
0x531128Fd...81050e32E
0 ETH0.0010079121.67848488
Approve185033972023-11-05 4:22:23295 days ago1699158143IN
0x531128Fd...81050e32E
0 ETH0.0006216913.43051501
Approve185022932023-11-05 0:38:59295 days ago1699144739IN
0x531128Fd...81050e32E
0 ETH0.0006983115
Approve185017712023-11-04 22:53:59295 days ago1699138439IN
0x531128Fd...81050e32E
0 ETH0.0007421215.96180049
Approve184943572023-11-03 21:57:35296 days ago1699048655IN
0x531128Fd...81050e32E
0 ETH0.0007903917
Approve184795452023-11-01 20:08:59298 days ago1698869339IN
0x531128Fd...81050e32E
0 ETH0.0019836342.62024939
Approve184795042023-11-01 20:00:47298 days ago1698868847IN
0x531128Fd...81050e32E
0 ETH0.0018976440.7622816
Approve184789472023-11-01 18:08:35299 days ago1698862115IN
0x531128Fd...81050e32E
0 ETH0.0022246547.78663963
Approve184789432023-11-01 18:07:47299 days ago1698862067IN
0x531128Fd...81050e32E
0 ETH0.0023582350.66897318
Approve184789372023-11-01 18:06:35299 days ago1698861995IN
0x531128Fd...81050e32E
0 ETH0.0022872449.1309183
Approve184735832023-11-01 0:08:23299 days ago1698797303IN
0x531128Fd...81050e32E
0 ETH0.0008632218.56640208
Approve184735772023-11-01 0:07:11299 days ago1698797231IN
0x531128Fd...81050e32E
0 ETH0.0009613220.67639603
Approve184735102023-10-31 23:53:35299 days ago1698796415IN
0x531128Fd...81050e32E
0 ETH0.0007920717.03596922
Approve184734972023-10-31 23:50:59299 days ago1698796259IN
0x531128Fd...81050e32E
0 ETH0.0007690816.5415623
Approve184733012023-10-31 23:11:23299 days ago1698793883IN
0x531128Fd...81050e32E
0 ETH0.0009499120.54764678
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
189248982024-01-03 5:57:47236 days ago1704261467
0x531128Fd...81050e32E
0.00031524 ETH
189248982024-01-03 5:57:47236 days ago1704261467
0x531128Fd...81050e32E
0.00157623 ETH
189248982024-01-03 5:57:47236 days ago1704261467
0x531128Fd...81050e32E
0.00168131 ETH
189248982024-01-03 5:57:47236 days ago1704261467
0x531128Fd...81050e32E
0.00420329 ETH
186095542023-11-20 0:54:11280 days ago1700441651
0x531128Fd...81050e32E
0.10891323 ETH
185329852023-11-09 7:46:11291 days ago1699515971
0x531128Fd...81050e32E
0.00037251 ETH
185329852023-11-09 7:46:11291 days ago1699515971
0x531128Fd...81050e32E
0.00186258 ETH
185329852023-11-09 7:46:11291 days ago1699515971
0x531128Fd...81050e32E
0.00198675 ETH
185329852023-11-09 7:46:11291 days ago1699515971
0x531128Fd...81050e32E
0.00496689 ETH
185329812023-11-09 7:45:23291 days ago1699515923
0x531128Fd...81050e32E
0.00042727 ETH
185329812023-11-09 7:45:23291 days ago1699515923
0x531128Fd...81050e32E
0.00213636 ETH
185329812023-11-09 7:45:23291 days ago1699515923
0x531128Fd...81050e32E
0.00227878 ETH
185329812023-11-09 7:45:23291 days ago1699515923
0x531128Fd...81050e32E
0.00569697 ETH
185318392023-11-09 3:54:35291 days ago1699502075
0x531128Fd...81050e32E
0.00048538 ETH
185318392023-11-09 3:54:35291 days ago1699502075
0x531128Fd...81050e32E
0.00242693 ETH
185318392023-11-09 3:54:35291 days ago1699502075
0x531128Fd...81050e32E
0.00258872 ETH
185318392023-11-09 3:54:35291 days ago1699502075
0x531128Fd...81050e32E
0.00647181 ETH
185148122023-11-06 18:46:23294 days ago1699296383
0x531128Fd...81050e32E
0.00055105 ETH
185148122023-11-06 18:46:23294 days ago1699296383
0x531128Fd...81050e32E
0.00275527 ETH
185148122023-11-06 18:46:23294 days ago1699296383
0x531128Fd...81050e32E
0.00293895 ETH
185148122023-11-06 18:46:23294 days ago1699296383
0x531128Fd...81050e32E
0.00734739 ETH
185148112023-11-06 18:46:11294 days ago1699296371
0x531128Fd...81050e32E
0.00074392 ETH
185148112023-11-06 18:46:11294 days ago1699296371
0x531128Fd...81050e32E
0.00371961 ETH
185148112023-11-06 18:46:11294 days ago1699296371
0x531128Fd...81050e32E
0.00396758 ETH
185148112023-11-06 18:46:11294 days ago1699296371
0x531128Fd...81050e32E
0.00991897 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WITCOIN

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/* 

https://x.com/witcoinerc
https://t.me/WitcoinERC
https://witcoin.tech/

The Next Generation User Friendly Passive Miner Accessible to All

Based off the Goerli Testnet Mining Protocol, users will mine via there PC / Mobile for ease of use. No fancy equipment needed, even the slowest machines can still earn.

*/


// SPDX-License-Identifier: Unlicensed


pragma solidity 0.8.21;

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

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

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

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

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

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

    function renounceOwnership() 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;
    }
}

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

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

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

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

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

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

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

interface InterfaceLP {
    function sync() external;
}

contract WITCOIN is Ownable, ERC20 {
    using SafeMath for uint256;

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

    string constant _name = "WITCOIN";
    string constant _symbol = "WTC";
    uint8 constant _decimals = 9; 
  

    uint256 _totalSupply = 1 * 10**15 * 10**_decimals;

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

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

    
    mapping (address => bool) isFeeexcused;
    mapping (address => bool) isTxLimitexcused;

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 1;
    uint256 private utilityFee      = 1;
    uint256 private teamFee         = 1; 
    uint256 private miningFee       = 0;
    uint256 public totalFee         = teamFee + marketingFee + liquidityFee + utilityFee + miningFee;
    uint256 private feeDenominator  = 100;

    uint256 sellMultiplier = 500;
    uint256 buyMultiplier = 400;
    uint256 transferMultiplier = 100; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private utilityFeeReceiver;
    address private teamFeeReceiver;
    address private miningFeeReceiver;
    
    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false; 

    bool public launchMode = false;
    mapping (address => bool) public islaunched;   

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 60 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeexcused[msg.sender] = true;
        isFeeexcused[utilityFeeReceiver] = true;
            
        isTxLimitexcused[msg.sender] = true;
        isTxLimitexcused[pair] = true;
        isTxLimitexcused[utilityFeeReceiver] = true;
        isTxLimitexcused[marketingFeeReceiver] = true;
        isTxLimitexcused[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x79bE66A25AD406c173fe0D9A4333a93531003853;
        utilityFeeReceiver = 0x79bE66A25AD406c173fe0D9A4333a93531003853;
        teamFeeReceiver = msg.sender;
        miningFeeReceiver = DEAD; 

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

    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

        function setWalletPercent(uint256 maxWallPercent) external onlyOwner {
         require(_maxWalletToken >= _totalSupply / 1000); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
                
    }

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

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
             if(launchMode){
                require(islaunched[recipient],"Not launched"); 
          }
        }
               
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != miningFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitexcused[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        

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

        if(shouldSwapBack()){ swapBack(); }
                    
         //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

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

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

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

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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 miningTokens = feeAmount.mul(miningFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(miningTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[miningFeeReceiver] = _balances[miningFeeReceiver].add(miningTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(miningTokens > 0){
            _totalSupply = _totalSupply.sub(miningTokens);
            emit Transfer(sender, ZERO, miningTokens);  
        
        }

        return amount.sub(feeAmount);
    }

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

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

     
    function removeLimits() external onlyOwner { 
        _maxWalletToken = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

    function manualSend() external { 
             payable(autoLiquidityReceiver).transfer(address(this).balance);

    }

    function removeForeignToken(address tokenAddress, uint256 tokens) public returns (bool) {
               if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

    function setTax(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;    
          
    }

     function enableLaunch(bool _status) public onlyOwner {
        launchMode = _status;
    }

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

    function allowTrading() public onlyOwner {
        launchMode = false;
        buyMultiplier = 500;
        sellMultiplier = 750;
        transferMultiplier = 1000;
    }

    function stepOne() public onlyOwner {
        buyMultiplier = 200;
        sellMultiplier = 400;
        transferMultiplier = 0;
    }

     function stepTwo() public onlyOwner {
        buyMultiplier = 100;
        sellMultiplier = 100;
        transferMultiplier = 0;
    }
    
    function goLive() public onlyOwner {
        TradingOpen = true;
        launchMode = true;
    }
        
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

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

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHutility = amountETH.mul(utilityFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(utilityFeeReceiver).call{value: amountETHutility}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        tmpSuccess = false;

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

    function setInternalAddress(address holder, bool excused) external onlyOwner {
        isFeeexcused[holder] = excused;
        isTxLimitexcused[holder] = excused;
    }

    function setNoTxLimit(address holder, bool excused) external onlyOwner {
        isTxLimitexcused[holder] = excused;
    }

    function updateTaxAllocation(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _utilityFee, uint256 _miningFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        utilityFee = _utilityFee;
        miningFee = _miningFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_utilityFee).add(_miningFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
    }

    function updateTaxWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _utilityFeeReceiver, address _miningFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
        miningFeeReceiver = _miningFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function setSwapAndLiquify(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setRatio(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

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

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

  


event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addKOL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allowTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"islaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"removeForeignToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"excused","type":"bool"}],"name":"setInternalAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"excused","type":"bool"}],"name":"setNoTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stepOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stepTwo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_miningFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"updateTaxAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_miningFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"updateTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620006a6565b620000459066038d7ea4c68000620006b6565b600581905562000066906064906200005f90600162000483565b9062000516565b60065560055462000081906064906200005f90600162000483565b6007556001600c819055600d819055600e819055600f8190555f60108190559080620000ae8180620006d0565b620000ba9190620006d0565b620000c69190620006d0565b620000d29190620006d0565b601155606460128190556101f460135561019060149081556015829055601b55601c55601f805461ffff60a01b191690556021805460ff191660011790556005546103e8906200012490603c620006b6565b620001309190620006e6565b6022553480156200013f575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620001fc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000222919062000706565b600280546001600160a01b0319166001600160a01b03928316179055601d546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156200027f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a5919062000706565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200031a919062000706565b601f80546001600160a01b039283166001600160a01b031991821681178355601e805483169091179055305f818152600960209081526040808320601d548816845282528083205f19905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b16875284872080548316841790559686528386208054909116909117905560168054871682179055845486167379be66a25ad406c173fe0d9a4333a935310038539081179095558654861690941790955560198054851684179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200077b565b5f825f036200049457505f62000510565b5f620004a18385620006b6565b905082620004b08583620006e6565b146200050d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200050d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200055f60201b60201c565b5f8183620005825760405162461bcd60e51b81526004016200050491906200072e565b505f620005908486620006e6565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005ed57815f1904821115620005d157620005d162000599565b80851615620005df57918102915b93841c9390800290620005b2565b509250929050565b5f82620006055750600162000510565b816200061357505f62000510565b81600181146200062c5760028114620006375762000657565b600191505062000510565b60ff8411156200064b576200064b62000599565b50506001821b62000510565b5060208310610133831016604e8410600b84101617156200067c575081810a62000510565b620006888383620005ad565b805f19048211156200069e576200069e62000599565b029392505050565b5f6200050d60ff841683620005f5565b808202811582820484141762000510576200051062000599565b8082018082111562000510576200051062000599565b5f826200070157634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000717575f80fd5b81516001600160a01b03811681146200050d575f80fd5b5f6020808352835180828501525f5b818110156200075b578581018301518582016040015282016200073d565b505f604082860101526040601f19601f8301168501019250505092915050565b61235f80620007895f395ff3fe608060405260043610610278575f3560e01c8063751039fc1161014a578063a983e4c8116100be578063d78e139d11610078578063d78e139d1461074d578063dd62ed3e1461076c578063f2fde38b146107b0578063f4293890146107cf578063f785ccd0146107e3578063f887ea4014610802575f80fd5b8063a983e4c814610693578063b2bdfa7b146106b2578063b37dd690146106d0578063ca3e4d05146106f0578063d51ed1c81461070f578063d6aeedca1461072e575f80fd5b80638da5cb5b1161010f5780638da5cb5b146105db57806395d89b41146105f757806398f4efc614610622578063a67931d314610641578063a8aa1b3114610655578063a9059cbb14610674575f80fd5b8063751039fc1461054e57806378109e54146105625780637d1db4a5146105775780637fa4a5bb1461058c578063893d20e8146105ab575f80fd5b80632c28f579116101ec57806361a077b2116101a657806361a077b2146104825780636cd333fd146104a15780636ddd1713146104c05780637007546b146104d957806370a0823114610506578063715018a61461053a575f80fd5b80632c28f579146103e25780632e5b4c43146103f6578063313ce5671461040a5780633ee6daf714610425578063571ac8b0146104445780635accb59714610463575f80fd5b806311107c681161023d57806311107c68146103485780631161ae391461036757806318160ddd146103865780631df4ccfc1461039a57806323b872dd146103af5780632b112e49146103ce575f80fd5b80630445b6671461028357806306fdde03146102ab57806308fd3d05146102e3578063095ea7b3146103135780630b3cbe3614610332575f80fd5b3661027f57005b5f80fd5b34801561028e575f80fd5b5061029860225481565b6040519081526020015b60405180910390f35b3480156102b6575f80fd5b506040805180820190915260078152662ba4aa21a7a4a760c91b60208201525b6040516102a29190611e63565b3480156102ee575f80fd5b50601f5461030390600160a01b900460ff1681565b60405190151581526020016102a2565b34801561031e575f80fd5b5061030361032d366004611ec9565b610821565b34801561033d575f80fd5b5061034661088d565b005b348015610353575f80fd5b50610346610362366004611efe565b6108d0565b348015610372575f80fd5b50610303610381366004611f19565b610917565b348015610391575f80fd5b50600554610298565b3480156103a5575f80fd5b5061029860115481565b3480156103ba575f80fd5b506103036103c9366004611f39565b61092a565b3480156103d9575f80fd5b506102986109e8565b3480156103ed575f80fd5b50610346610a38565b348015610401575f80fd5b50610346610a78565b348015610415575f80fd5b50604051600981526020016102a2565b348015610430575f80fd5b5061034661043f366004611f72565b610ac2565b34801561044f575f80fd5b5061030361045e366004611fa7565b610b15565b34801561046e575f80fd5b5061034661047d366004611fc0565b610b21565b34801561048d575f80fd5b5061034661049c366004611fd7565b610b88565b3480156104ac575f80fd5b506103466104bb366004612016565b610c4d565b3480156104cb575f80fd5b506021546103039060ff1681565b3480156104e4575f80fd5b506103036104f3366004611fa7565b602080525f908152604090205460ff1681565b348015610511575f80fd5b50610298610520366004611fa7565b6001600160a01b03165f9081526008602052604090205490565b348015610545575f80fd5b50610346610ce8565b348015610559575f80fd5b50610346610d59565b34801561056d575f80fd5b5061029860075481565b348015610582575f80fd5b5061029860065481565b348015610597575f80fd5b506103466105a6366004611f72565b610d8f565b3480156105b6575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102a2565b3480156105e6575f80fd5b505f546001600160a01b03166105c3565b348015610602575f80fd5b5060408051808201909152600381526257544360e81b60208201526102d6565b34801561062d575f80fd5b5061034661063c366004612095565b610df5565b34801561064c575f80fd5b50610346610e35565b348015610660575f80fd5b50601f546105c3906001600160a01b031681565b34801561067f575f80fd5b5061030361068e366004611ec9565b610e6e565b34801561069e575f80fd5b506103466106ad3660046120b1565b610e7a565b3480156106bd575f80fd5b505f546105c3906001600160a01b031681565b3480156106db575f80fd5b50601f5461030390600160a81b900460ff1681565b3480156106fb575f80fd5b5061034661070a3660046120da565b610eb4565b34801561071a575f80fd5b50610298610729366004611fc0565b610f3c565b348015610739575f80fd5b50610303610748366004611ec9565b610f81565b348015610758575f80fd5b50610346610767366004611fc0565b611066565b348015610777575f80fd5b5061029861078636600461213b565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b3480156107bb575f80fd5b506103466107ca366004611fa7565b6110b7565b3480156107da575f80fd5b5061034661119e565b3480156107ee575f80fd5b506103466107fd366004611f19565b6111d7565b34801561080d575f80fd5b50601d546105c3906001600160a01b031681565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061087b9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146108bf5760405162461bcd60e51b81526004016108b69061216c565b60405180910390fd5b60c86014556101906013555f601555565b5f546001600160a01b031633146108f95760405162461bcd60e51b81526004016108b69061216c565b601f8054911515600160a81b0260ff60a81b19909216919091179055565b5f8261092283610f3c565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146109d3576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546109af91849061120b565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6109de848484611243565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610a33906003546001600160a01b03165f90815260086020526040902054610a2d9060055490611604565b90611604565b905090565b5f546001600160a01b03163314610a615760405162461bcd60e51b81526004016108b69061216c565b601f805461ffff60a01b191661010160a01b179055565b5f546001600160a01b03163314610aa15760405162461bcd60e51b81526004016108b69061216c565b601f805460ff60a81b191690556101f46014556102ee6013556103e8601555565b5f546001600160a01b03163314610aeb5760405162461bcd60e51b81526004016108b69061216c565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f610887825f19610821565b5f546001600160a01b03163314610b4a5760405162461bcd60e51b81526004016108b69061216c565b6103e8600554610b5a91906121b5565b6007541015610b67575f80fd5b6103e881600554610b7891906121d4565b610b8291906121b5565b60075550565b5f546001600160a01b03163314610bb15760405162461bcd60e51b81526004016108b69061216c565b600c869055600f859055600d849055600e8390556010829055610be282610bdc858188818c8c611645565b90611645565b6011556012819055610bf56005826121b5565b60115410610c455760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e2032302500000060448201526064016108b6565b505050505050565b5f546001600160a01b03163314610c765760405162461bcd60e51b81526004016108b69061216c565b5f5b82811015610ce2578160205f868685818110610c9657610c966121eb565b9050602002016020810190610cab9190611fa7565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610cdb816121ff565b9050610c78565b50505050565b5f546001600160a01b03163314610d115760405162461bcd60e51b81526004016108b69061216c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610d825760405162461bcd60e51b81526004016108b69061216c565b6005546007819055600655565b5f546001600160a01b03163314610db85760405162461bcd60e51b81526004016108b69061216c565b6001600160a01b039091165f908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b5f546001600160a01b03163314610e1e5760405162461bcd60e51b81526004016108b69061216c565b6021805460ff191692151592909217909155602255565b5f546001600160a01b03163314610e5e5760405162461bcd60e51b81526004016108b69061216c565b606460148190556013555f601555565b5f6109e1338484611243565b5f546001600160a01b03163314610ea35760405162461bcd60e51b81526004016108b69061216c565b601391909155601491909155601555565b5f546001600160a01b03163314610edd5760405162461bcd60e51b81526004016108b69061216c565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b5f610887610f486109e8565b601f546001600160a01b03165f90815260086020526040902054610f7b90610f74906002905b906116a3565b85906116a3565b90611721565b5f815f03610ff2576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610fcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fef9190612217565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015611042573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e1919061222e565b60195447906001600160a01b03166108fc606461108385856121d4565b61108d91906121b5565b6040518115909202915f818181858888f193505050501580156110b2573d5f803e3d5ffd5b505050565b5f546001600160a01b031633146110e05760405162461bcd60e51b81526004016108b69061216c565b6001600160a01b0381166111455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b6565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156111d4573d5f803e3d5ffd5b50565b5f546001600160a01b031633146112005760405162461bcd60e51b81526004016108b69061216c565b601b91909155601c55565b5f818484111561122e5760405162461bcd60e51b81526004016108b69190611e63565b505f61123a8486612249565b95945050505050565b6023545f9060ff16156112625761125b848484611762565b90506109e1565b6001600160a01b0384165f9081526001602052604090205460ff161580156112a257506001600160a01b0383165f9081526001602052604090205460ff16155b1561135e57601f54600160a01b900460ff166112f75760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108b6565b601f54600160a81b900460ff161561135e576001600160a01b0383165f90815260208052604090205460ff1661135e5760405162461bcd60e51b815260206004820152600c60248201526b139bdd081b185d5b98da195960a21b60448201526064016108b6565b6001600160a01b0384165f9081526001602052604090205460ff1615801561138f57506001600160a01b0383163014155b80156113a957506003546001600160a01b03848116911614155b80156113c35750601f546001600160a01b03848116911614155b80156113dd5750601a546001600160a01b03848116911614155b80156113f757506017546001600160a01b03848116911614155b801561141b57506001600160a01b0383165f908152600b602052604090205460ff16155b156114bb576001600160a01b0383165f90815260086020526040902054600754611445848361225c565b11156114b95760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016108b6565b505b6114c58483611832565b6114cd61189e565b156114da576114da6118eb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526008909152919091205461152b91849061120b565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061157657506001600160a01b0384165f908152600a602052604090205460ff165b61158a57611585858486611cb3565b61158c565b825b6001600160a01b0385165f908152600860205260409020549091506115b19082611645565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f8051602061230a833981519152906115f19085815260200190565b60405180910390a3506001949350505050565b5f6109e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061120b565b5f80611651838561225c565b9050838110156109e15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108b6565b5f825f036116b257505f610887565b5f6116bd83856121d4565b9050826116ca85836121b5565b146109e15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108b6565b5f6109e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e37565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526008909152918220546117b291849061120b565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546117e09083611645565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f8051602061230a833981519152906118209086815260200190565b60405180910390a35060019392505050565b6006548111158061185a57506001600160a01b0382165f908152600b602052604090205460ff165b61189a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108b6565b5050565b601f545f906001600160a01b031633148015906118be575060235460ff16155b80156118cc575060215460ff165b8015610a33575050602254305f90815260086020526040902054101590565b6023805460ff19166001179055601b54601c545f9161190991610917565b61191557600c54611917565b5f5b90505f61193a6002610f7b601154610f7b866022546116a390919063ffffffff16565b90505f6119528260225461160490919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061198a5761198a6121eb565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106119bb576119bb6121eb565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac94790611a049086905f9087903090429060040161226f565b5f604051808303815f87803b158015611a1b575f80fd5b505af1158015611a2d573d5f803e3d5ffd5b505050505f611a45824761160490919063ffffffff16565b90505f611a5f611a56886002611721565b60115490611604565b90505f611a736002610f7b8481878d6116a3565b90505f611a8f83610f7b600d54876116a390919063ffffffff16565b90505f611aab84610f7b600f54886116a390919063ffffffff16565b90505f611ac785610f7b600e54896116a390919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611b16576040519150601f19603f3d011682016040523d82523d5f602084013e611b1b565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611b68576040519150601f19603f3d011682016040523d82523d5f602084013e611b6d565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611bba576040519150601f19603f3d011682016040523d82523d5f602084013e611bbf565b606091505b505f9250508b159050611c9b57601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611c39573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c5e91906122de565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b0390811690841603611cd85750601354611cf3565b601f546001600160a01b0390811690861603611cf357506014545b5f611d1f6012546064611d0691906121d4565b610f7b84610f6e6011548a6116a390919063ffffffff16565b90505f611d3d601154610f7b601054856116a390919063ffffffff16565b90505f611d4a8383611604565b305f90815260086020526040902054909150611d669082611645565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611d939083611645565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f8051602061230a833981519152910160405180910390a38115611e2157600554611deb9083611604565b6005556004546040518381526001600160a01b03918216918a16905f8051602061230a8339815191529060200160405180910390a35b611e2b8784611604565b98975050505050505050565b5f8183611e575760405162461bcd60e51b81526004016108b69190611e63565b505f61123a84866121b5565b5f6020808352835180828501525f5b81811015611e8e57858101830151858201604001528201611e72565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611ec4575f80fd5b919050565b5f8060408385031215611eda575f80fd5b611ee383611eae565b946020939093013593505050565b80151581146111d4575f80fd5b5f60208284031215611f0e575f80fd5b81356109e181611ef1565b5f8060408385031215611f2a575f80fd5b50508035926020909101359150565b5f805f60608486031215611f4b575f80fd5b611f5484611eae565b9250611f6260208501611eae565b9150604084013590509250925092565b5f8060408385031215611f83575f80fd5b611f8c83611eae565b91506020830135611f9c81611ef1565b809150509250929050565b5f60208284031215611fb7575f80fd5b6109e182611eae565b5f60208284031215611fd0575f80fd5b5035919050565b5f805f805f8060c08789031215611fec575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f805f60408486031215612028575f80fd5b833567ffffffffffffffff8082111561203f575f80fd5b818601915086601f830112612052575f80fd5b813581811115612060575f80fd5b8760208260051b8501011115612074575f80fd5b6020928301955093505084013561208a81611ef1565b809150509250925092565b5f80604083850312156120a6575f80fd5b8235611ee381611ef1565b5f805f606084860312156120c3575f80fd5b505081359360208301359350604090920135919050565b5f805f805f60a086880312156120ee575f80fd5b6120f786611eae565b945061210560208701611eae565b935061211360408701611eae565b925061212160608701611eae565b915061212f60808701611eae565b90509295509295909350565b5f806040838503121561214c575f80fd5b61215583611eae565b915061216360208401611eae565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f826121cf57634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610887576108876121a1565b634e487b7160e01b5f52603260045260245ffd5b5f60018201612210576122106121a1565b5060010190565b5f60208284031215612227575f80fd5b5051919050565b5f6020828403121561223e575f80fd5b81516109e181611ef1565b81810381811115610887576108876121a1565b80820180821115610887576108876121a1565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156122bd5784516001600160a01b031683529383019391830191600101612298565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156122f0575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208728e854582562f6da76090e2db7dbd98b6f40069ca793c222dca7a13dcdac1264736f6c63430008150033

Deployed Bytecode

0x608060405260043610610278575f3560e01c8063751039fc1161014a578063a983e4c8116100be578063d78e139d11610078578063d78e139d1461074d578063dd62ed3e1461076c578063f2fde38b146107b0578063f4293890146107cf578063f785ccd0146107e3578063f887ea4014610802575f80fd5b8063a983e4c814610693578063b2bdfa7b146106b2578063b37dd690146106d0578063ca3e4d05146106f0578063d51ed1c81461070f578063d6aeedca1461072e575f80fd5b80638da5cb5b1161010f5780638da5cb5b146105db57806395d89b41146105f757806398f4efc614610622578063a67931d314610641578063a8aa1b3114610655578063a9059cbb14610674575f80fd5b8063751039fc1461054e57806378109e54146105625780637d1db4a5146105775780637fa4a5bb1461058c578063893d20e8146105ab575f80fd5b80632c28f579116101ec57806361a077b2116101a657806361a077b2146104825780636cd333fd146104a15780636ddd1713146104c05780637007546b146104d957806370a0823114610506578063715018a61461053a575f80fd5b80632c28f579146103e25780632e5b4c43146103f6578063313ce5671461040a5780633ee6daf714610425578063571ac8b0146104445780635accb59714610463575f80fd5b806311107c681161023d57806311107c68146103485780631161ae391461036757806318160ddd146103865780631df4ccfc1461039a57806323b872dd146103af5780632b112e49146103ce575f80fd5b80630445b6671461028357806306fdde03146102ab57806308fd3d05146102e3578063095ea7b3146103135780630b3cbe3614610332575f80fd5b3661027f57005b5f80fd5b34801561028e575f80fd5b5061029860225481565b6040519081526020015b60405180910390f35b3480156102b6575f80fd5b506040805180820190915260078152662ba4aa21a7a4a760c91b60208201525b6040516102a29190611e63565b3480156102ee575f80fd5b50601f5461030390600160a01b900460ff1681565b60405190151581526020016102a2565b34801561031e575f80fd5b5061030361032d366004611ec9565b610821565b34801561033d575f80fd5b5061034661088d565b005b348015610353575f80fd5b50610346610362366004611efe565b6108d0565b348015610372575f80fd5b50610303610381366004611f19565b610917565b348015610391575f80fd5b50600554610298565b3480156103a5575f80fd5b5061029860115481565b3480156103ba575f80fd5b506103036103c9366004611f39565b61092a565b3480156103d9575f80fd5b506102986109e8565b3480156103ed575f80fd5b50610346610a38565b348015610401575f80fd5b50610346610a78565b348015610415575f80fd5b50604051600981526020016102a2565b348015610430575f80fd5b5061034661043f366004611f72565b610ac2565b34801561044f575f80fd5b5061030361045e366004611fa7565b610b15565b34801561046e575f80fd5b5061034661047d366004611fc0565b610b21565b34801561048d575f80fd5b5061034661049c366004611fd7565b610b88565b3480156104ac575f80fd5b506103466104bb366004612016565b610c4d565b3480156104cb575f80fd5b506021546103039060ff1681565b3480156104e4575f80fd5b506103036104f3366004611fa7565b602080525f908152604090205460ff1681565b348015610511575f80fd5b50610298610520366004611fa7565b6001600160a01b03165f9081526008602052604090205490565b348015610545575f80fd5b50610346610ce8565b348015610559575f80fd5b50610346610d59565b34801561056d575f80fd5b5061029860075481565b348015610582575f80fd5b5061029860065481565b348015610597575f80fd5b506103466105a6366004611f72565b610d8f565b3480156105b6575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102a2565b3480156105e6575f80fd5b505f546001600160a01b03166105c3565b348015610602575f80fd5b5060408051808201909152600381526257544360e81b60208201526102d6565b34801561062d575f80fd5b5061034661063c366004612095565b610df5565b34801561064c575f80fd5b50610346610e35565b348015610660575f80fd5b50601f546105c3906001600160a01b031681565b34801561067f575f80fd5b5061030361068e366004611ec9565b610e6e565b34801561069e575f80fd5b506103466106ad3660046120b1565b610e7a565b3480156106bd575f80fd5b505f546105c3906001600160a01b031681565b3480156106db575f80fd5b50601f5461030390600160a81b900460ff1681565b3480156106fb575f80fd5b5061034661070a3660046120da565b610eb4565b34801561071a575f80fd5b50610298610729366004611fc0565b610f3c565b348015610739575f80fd5b50610303610748366004611ec9565b610f81565b348015610758575f80fd5b50610346610767366004611fc0565b611066565b348015610777575f80fd5b5061029861078636600461213b565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b3480156107bb575f80fd5b506103466107ca366004611fa7565b6110b7565b3480156107da575f80fd5b5061034661119e565b3480156107ee575f80fd5b506103466107fd366004611f19565b6111d7565b34801561080d575f80fd5b50601d546105c3906001600160a01b031681565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061087b9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146108bf5760405162461bcd60e51b81526004016108b69061216c565b60405180910390fd5b60c86014556101906013555f601555565b5f546001600160a01b031633146108f95760405162461bcd60e51b81526004016108b69061216c565b601f8054911515600160a81b0260ff60a81b19909216919091179055565b5f8261092283610f3c565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146109d3576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546109af91849061120b565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6109de848484611243565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610a33906003546001600160a01b03165f90815260086020526040902054610a2d9060055490611604565b90611604565b905090565b5f546001600160a01b03163314610a615760405162461bcd60e51b81526004016108b69061216c565b601f805461ffff60a01b191661010160a01b179055565b5f546001600160a01b03163314610aa15760405162461bcd60e51b81526004016108b69061216c565b601f805460ff60a81b191690556101f46014556102ee6013556103e8601555565b5f546001600160a01b03163314610aeb5760405162461bcd60e51b81526004016108b69061216c565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f610887825f19610821565b5f546001600160a01b03163314610b4a5760405162461bcd60e51b81526004016108b69061216c565b6103e8600554610b5a91906121b5565b6007541015610b67575f80fd5b6103e881600554610b7891906121d4565b610b8291906121b5565b60075550565b5f546001600160a01b03163314610bb15760405162461bcd60e51b81526004016108b69061216c565b600c869055600f859055600d849055600e8390556010829055610be282610bdc858188818c8c611645565b90611645565b6011556012819055610bf56005826121b5565b60115410610c455760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e2032302500000060448201526064016108b6565b505050505050565b5f546001600160a01b03163314610c765760405162461bcd60e51b81526004016108b69061216c565b5f5b82811015610ce2578160205f868685818110610c9657610c966121eb565b9050602002016020810190610cab9190611fa7565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610cdb816121ff565b9050610c78565b50505050565b5f546001600160a01b03163314610d115760405162461bcd60e51b81526004016108b69061216c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610d825760405162461bcd60e51b81526004016108b69061216c565b6005546007819055600655565b5f546001600160a01b03163314610db85760405162461bcd60e51b81526004016108b69061216c565b6001600160a01b039091165f908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b5f546001600160a01b03163314610e1e5760405162461bcd60e51b81526004016108b69061216c565b6021805460ff191692151592909217909155602255565b5f546001600160a01b03163314610e5e5760405162461bcd60e51b81526004016108b69061216c565b606460148190556013555f601555565b5f6109e1338484611243565b5f546001600160a01b03163314610ea35760405162461bcd60e51b81526004016108b69061216c565b601391909155601491909155601555565b5f546001600160a01b03163314610edd5760405162461bcd60e51b81526004016108b69061216c565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b5f610887610f486109e8565b601f546001600160a01b03165f90815260086020526040902054610f7b90610f74906002905b906116a3565b85906116a3565b90611721565b5f815f03610ff2576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610fcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fef9190612217565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015611042573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e1919061222e565b60195447906001600160a01b03166108fc606461108385856121d4565b61108d91906121b5565b6040518115909202915f818181858888f193505050501580156110b2573d5f803e3d5ffd5b505050565b5f546001600160a01b031633146110e05760405162461bcd60e51b81526004016108b69061216c565b6001600160a01b0381166111455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b6565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156111d4573d5f803e3d5ffd5b50565b5f546001600160a01b031633146112005760405162461bcd60e51b81526004016108b69061216c565b601b91909155601c55565b5f818484111561122e5760405162461bcd60e51b81526004016108b69190611e63565b505f61123a8486612249565b95945050505050565b6023545f9060ff16156112625761125b848484611762565b90506109e1565b6001600160a01b0384165f9081526001602052604090205460ff161580156112a257506001600160a01b0383165f9081526001602052604090205460ff16155b1561135e57601f54600160a01b900460ff166112f75760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108b6565b601f54600160a81b900460ff161561135e576001600160a01b0383165f90815260208052604090205460ff1661135e5760405162461bcd60e51b815260206004820152600c60248201526b139bdd081b185d5b98da195960a21b60448201526064016108b6565b6001600160a01b0384165f9081526001602052604090205460ff1615801561138f57506001600160a01b0383163014155b80156113a957506003546001600160a01b03848116911614155b80156113c35750601f546001600160a01b03848116911614155b80156113dd5750601a546001600160a01b03848116911614155b80156113f757506017546001600160a01b03848116911614155b801561141b57506001600160a01b0383165f908152600b602052604090205460ff16155b156114bb576001600160a01b0383165f90815260086020526040902054600754611445848361225c565b11156114b95760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016108b6565b505b6114c58483611832565b6114cd61189e565b156114da576114da6118eb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526008909152919091205461152b91849061120b565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061157657506001600160a01b0384165f908152600a602052604090205460ff165b61158a57611585858486611cb3565b61158c565b825b6001600160a01b0385165f908152600860205260409020549091506115b19082611645565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f8051602061230a833981519152906115f19085815260200190565b60405180910390a3506001949350505050565b5f6109e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061120b565b5f80611651838561225c565b9050838110156109e15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108b6565b5f825f036116b257505f610887565b5f6116bd83856121d4565b9050826116ca85836121b5565b146109e15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108b6565b5f6109e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e37565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526008909152918220546117b291849061120b565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546117e09083611645565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f8051602061230a833981519152906118209086815260200190565b60405180910390a35060019392505050565b6006548111158061185a57506001600160a01b0382165f908152600b602052604090205460ff165b61189a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108b6565b5050565b601f545f906001600160a01b031633148015906118be575060235460ff16155b80156118cc575060215460ff165b8015610a33575050602254305f90815260086020526040902054101590565b6023805460ff19166001179055601b54601c545f9161190991610917565b61191557600c54611917565b5f5b90505f61193a6002610f7b601154610f7b866022546116a390919063ffffffff16565b90505f6119528260225461160490919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061198a5761198a6121eb565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106119bb576119bb6121eb565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac94790611a049086905f9087903090429060040161226f565b5f604051808303815f87803b158015611a1b575f80fd5b505af1158015611a2d573d5f803e3d5ffd5b505050505f611a45824761160490919063ffffffff16565b90505f611a5f611a56886002611721565b60115490611604565b90505f611a736002610f7b8481878d6116a3565b90505f611a8f83610f7b600d54876116a390919063ffffffff16565b90505f611aab84610f7b600f54886116a390919063ffffffff16565b90505f611ac785610f7b600e54896116a390919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611b16576040519150601f19603f3d011682016040523d82523d5f602084013e611b1b565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611b68576040519150601f19603f3d011682016040523d82523d5f602084013e611b6d565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611bba576040519150601f19603f3d011682016040523d82523d5f602084013e611bbf565b606091505b505f9250508b159050611c9b57601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611c39573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c5e91906122de565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b0390811690841603611cd85750601354611cf3565b601f546001600160a01b0390811690861603611cf357506014545b5f611d1f6012546064611d0691906121d4565b610f7b84610f6e6011548a6116a390919063ffffffff16565b90505f611d3d601154610f7b601054856116a390919063ffffffff16565b90505f611d4a8383611604565b305f90815260086020526040902054909150611d669082611645565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611d939083611645565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f8051602061230a833981519152910160405180910390a38115611e2157600554611deb9083611604565b6005556004546040518381526001600160a01b03918216918a16905f8051602061230a8339815191529060200160405180910390a35b611e2b8784611604565b98975050505050505050565b5f8183611e575760405162461bcd60e51b81526004016108b69190611e63565b505f61123a84866121b5565b5f6020808352835180828501525f5b81811015611e8e57858101830151858201604001528201611e72565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611ec4575f80fd5b919050565b5f8060408385031215611eda575f80fd5b611ee383611eae565b946020939093013593505050565b80151581146111d4575f80fd5b5f60208284031215611f0e575f80fd5b81356109e181611ef1565b5f8060408385031215611f2a575f80fd5b50508035926020909101359150565b5f805f60608486031215611f4b575f80fd5b611f5484611eae565b9250611f6260208501611eae565b9150604084013590509250925092565b5f8060408385031215611f83575f80fd5b611f8c83611eae565b91506020830135611f9c81611ef1565b809150509250929050565b5f60208284031215611fb7575f80fd5b6109e182611eae565b5f60208284031215611fd0575f80fd5b5035919050565b5f805f805f8060c08789031215611fec575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f805f60408486031215612028575f80fd5b833567ffffffffffffffff8082111561203f575f80fd5b818601915086601f830112612052575f80fd5b813581811115612060575f80fd5b8760208260051b8501011115612074575f80fd5b6020928301955093505084013561208a81611ef1565b809150509250925092565b5f80604083850312156120a6575f80fd5b8235611ee381611ef1565b5f805f606084860312156120c3575f80fd5b505081359360208301359350604090920135919050565b5f805f805f60a086880312156120ee575f80fd5b6120f786611eae565b945061210560208701611eae565b935061211360408701611eae565b925061212160608701611eae565b915061212f60808701611eae565b90509295509295909350565b5f806040838503121561214c575f80fd5b61215583611eae565b915061216360208401611eae565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f826121cf57634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610887576108876121a1565b634e487b7160e01b5f52603260045260245ffd5b5f60018201612210576122106121a1565b5060010190565b5f60208284031215612227575f80fd5b5051919050565b5f6020828403121561223e575f80fd5b81516109e181611ef1565b81810381811115610887576108876121a1565b80820180821115610887576108876121a1565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156122bd5784516001600160a01b031683529383019391830191600101612298565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156122f0575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208728e854582562f6da76090e2db7dbd98b6f40069ca793c222dca7a13dcdac1264736f6c63430008150033

Deployed Bytecode Sourcemap

5313:14278:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7114:55;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7114:55:0;;;;;;;;8669:80;;;;;;;;;;-1:-1:-1;8741:5:0;;;;;;;;;;;;-1:-1:-1;;;8741:5:0;;;;8669:80;;;;;;;:::i;6944:31::-;;;;;;;;;;-1:-1:-1;6944:31:0;;;;-1:-1:-1;;;6944:31:0;;;;;;;;;914:14:1;;907:22;889:41;;877:2;862:18;6944:31:0;749:187:1;9091:216:0;;;;;;;;;;-1:-1:-1;9091:216:0;;;;;:::i;:::-;;:::i;15026:138::-;;;;;;;;;;;;;:::i;:::-;;14538:92;;;;;;;;;;-1:-1:-1;14538:92:0;;;;;:::i;:::-;;:::i;19365:150::-;;;;;;;;;;-1:-1:-1;19365:150:0;;;;;:::i;:::-;;:::i;8399:88::-;;;;;;;;;;-1:-1:-1;8472:12:0;;8399:88;;6286:96;;;;;;;;;;;;;;;;9609:370;;;;;;;;;;-1:-1:-1;9609:370:0;;;;;:::i;:::-;;:::i;19040:142::-;;;;;;;;;;;;;:::i;15323:100::-;;;;;;;;;;;;;:::i;14843:175::-;;;;;;;;;;;;;:::i;8493:80::-;;;;;;;;;;-1:-1:-1;8493:80:0;;5650:1;2475:36:1;;2463:2;2448:18;8493:80:0;2333:184:1;17503:124:0;;;;;;;;;;-1:-1:-1;17503:124:0;;;;;:::i;:::-;;:::i;9315:122::-;;;;;;;;;;-1:-1:-1;9315:122:0;;;;;:::i;:::-;;:::i;9991:223::-;;;;;;;;;;-1:-1:-1;9991:223:0;;;;;:::i;:::-;;:::i;17635:588::-;;;;;;;;;;-1:-1:-1;17635:588:0;;;;;:::i;:::-;;:::i;14638:197::-;;;;;;;;;;-1:-1:-1;14638:197:0;;;;;:::i;:::-;;:::i;7077:30::-;;;;;;;;;;-1:-1:-1;7077:30:0;;;;;;;;7022:43;;;;;;;;;;-1:-1:-1;7022:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8839:105;;;;;;;;;;-1:-1:-1;8839:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8923:18:0;8905:7;8923:18;;;:9;:18;;;;;;;8839:105;3370:148;;;;;;;;;;;;;:::i;13761:133::-;;;;;;;;;;;;;:::i;5788:61::-;;;;;;;;;;;;;;;;5723:58;;;;;;;;;;;;;;;;17324:171;;;;;;;;;;-1:-1:-1;17324:171:0;;;;;:::i;:::-;;:::i;8755:78::-;;;;;;;;;;-1:-1:-1;8807:7:0;3221:6;-1:-1:-1;;;;;3221:6:0;8755:78;;;-1:-1:-1;;;;;4665:32:1;;;4647:51;;4635:2;4620:18;8755:78:0;4501:203:1;3156:79:0;;;;;;;;;;-1:-1:-1;3194:7:0;3221:6;-1:-1:-1;;;;;3221:6:0;3156:79;;8579:84;;;;;;;;;;-1:-1:-1;8653:7:0;;;;;;;;;;;;-1:-1:-1;;;8653:7:0;;;;8579:84;;18695:153;;;;;;;;;;-1:-1:-1;18695:153:0;;;;;:::i;:::-;;:::i;15173:138::-;;;;;;;;;;;;;:::i;6912:19::-;;;;;;;;;;-1:-1:-1;6912:19:0;;;;-1:-1:-1;;;;;6912:19:0;;;9445:156;;;;;;;;;;-1:-1:-1;9445:156:0;;;;;:::i;:::-;;:::i;14323:206::-;;;;;;;;;;-1:-1:-1;14323:206:0;;;;;:::i;:::-;;:::i;2776:21::-;;;;;;;;;;-1:-1:-1;2776:21:0;;;;-1:-1:-1;;;;;2776:21:0;;;6985:30;;;;;;;;;;-1:-1:-1;6985:30:0;;;;-1:-1:-1;;;6985:30:0;;;;;;18231:456;;;;;;;;;;-1:-1:-1;18231:456:0;;;;;:::i;:::-;;:::i;19190:167::-;;;;;;;;;;-1:-1:-1;19190:167:0;;;;;:::i;:::-;;:::i;14030:285::-;;;;;;;;;;-1:-1:-1;14030:285:0;;;;;:::i;:::-;;:::i;13548:198::-;;;;;;;;;;-1:-1:-1;13548:198:0;;;;;:::i;:::-;;:::i;8950:133::-;;;;;;;;;;-1:-1:-1;8950:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9052:19:0;;;9034:7;9052:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8950:133;3526:244;;;;;;;;;;-1:-1:-1;3526:244:0;;;;;:::i;:::-;;:::i;13902:120::-;;;;;;;;;;;;;:::i;18856:172::-;;;;;;;;;;-1:-1:-1;18856:172:0;;;;;:::i;:::-;;:::i;6842:24::-;;;;;;;;;;-1:-1:-1;6842:24:0;;;;-1:-1:-1;;;;;6842:24:0;;;9091:216;9195:10;9166:4;9183:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9183:32:0;;;;;;;;;;:41;;;9240:37;9166:4;;9183:32;;9240:37;;;;9218:6;160:25:1;;148:2;133:18;;14:177;9240:37:0;;;;;;;;-1:-1:-1;9295:4:0;9091:216;;;;;:::o;15026:138::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;;;;;;;;;15089:3:::1;15073:13;:19:::0;15120:3:::1;15103:14;:20:::0;-1:-1:-1;15134:18:0::1;:22:::0;15026:138::o;14538:92::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;14602:10:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;14602:20:0::1;-1:-1:-1::0;;;;14602:20:0;;::::1;::::0;;;::::1;::::0;;14538:92::o;19365:150::-;19445:4;19501:6;19469:29;19489:8;19469:19;:29::i;:::-;:38;;19365:150;-1:-1:-1;;;19365:150:0:o;9609:370::-;-1:-1:-1;;;;;9729:19:0;;9709:4;9729:19;;;:11;:19;;;;;;;;9749:10;9729:31;;;;;;;;-1:-1:-1;;9729:52:0;9726:186;;9831:69;;;;;;;;;;;-1:-1:-1;;;9831:69:0;;;;;;;;-1:-1:-1;;;;;9831:19:0;;-1:-1:-1;9831:19:0;;;:11;:19;;;;;9851:10;9831:31;;;;;;;;;;:69;;9867:6;;9831:35;:69::i;:::-;-1:-1:-1;;;;;9797:19:0;;;;;;:11;:19;;;;;;;;9817:10;9797:31;;;;;;;:103;9726:186;9931:40;9945:6;9953:9;9964:6;9931:13;:40::i;:::-;9924:47;;9609:370;;;;;;:::o;19040:142::-;19168:4;;-1:-1:-1;;;;;19168:4:0;19093:7;8923:18;;;:9;:18;;;;;;19120:54;;19147:4;;-1:-1:-1;;;;;19147:4:0;8905:7;8923:18;;;:9;:18;;;;;;19120:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;19113:61;;19040:142;:::o;15323:100::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;15369:11:::1;:18:::0;;-1:-1:-1;;;;15398:17:0;-1:-1:-1;;;15398:17:0;;;15323:100::o;14843:175::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;14895:10:::1;:18:::0;;-1:-1:-1;;;;14895:18:0::1;::::0;;14940:3:::1;14924:13;:19:::0;14971:3:::1;14954:14;:20:::0;15006:4:::1;14895:10;14985:25:::0;14843:175::o;17503:124::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17585:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:34;;-1:-1:-1;;17585:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17503:124::o;9315:122::-;9370:4;9394:35;9402:7;-1:-1:-1;;9394:7:0;:35::i;9991:223::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;10114:4:::1;10099:12;;:19;;;;:::i;:::-;10080:15;;:38;;10072:47;;;::::0;::::1;;10184:4;10165:14;10150:12;;:29;;;;:::i;:::-;10149:39;;;;:::i;:::-;10131:15;:57:::0;-1:-1:-1;9991:223:0:o;17635:588::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;17824:12:::1;:28:::0;;;17863:7:::1;:18:::0;;;17892:12:::1;:28:::0;;;17931:10:::1;:24:::0;;;17966:9:::1;:22:::0;;;18010:79:::1;17978:10:::0;18010:63:::1;17944:11:::0;18010:63;17907:13;18010:63;17839:13;17873:8;18010:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:79::-;17999:8;:90:::0;18100:14:::1;:32:::0;;;18162:18:::1;18179:1;18117:15:::0;18162:18:::1;:::i;:::-;18151:8;;:29;18143:71;;;::::0;-1:-1:-1;;;18143:71:0;;7414:2:1;18143:71:0::1;::::0;::::1;7396:21:1::0;7453:2;7433:18;;;7426:30;7492:31;7472:18;;;7465:59;7541:18;;18143:71:0::1;7212:353:1::0;18143:71:0::1;17635:588:::0;;;;;;:::o;14638:197::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;14730:9:::1;14725:103;14741:20:::0;;::::1;14725:103;;;14810:6;14783:10;:24;14794:9;;14804:1;14794:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14783:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14783:24:0;:33;;-1:-1:-1;;14783:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14763:3:::1;::::0;::::1;:::i;:::-;;;14725:103;;;;14638:197:::0;;;:::o;3370:148::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;3477:1:::1;3461:6:::0;;3440:40:::1;::::0;-1:-1:-1;;;;;3461:6:0;;::::1;::::0;3440:40:::1;::::0;3477:1;;3440:40:::1;3508:1;3491:19:::0;;-1:-1:-1;;;;;;3491:19:0::1;::::0;;3370:148::o;13761:133::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;13834:12:::1;::::0;13816:15:::1;:30:::0;;;13857:12:::1;:27:::0;13761:133::o;17324:171::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17412:20:0;;::::1;;::::0;;;:12:::1;:20;::::0;;;;;;;:30;;;::::1;;-1:-1:-1::0;;17412:30:0;;::::1;::::0;::::1;::::0;;;17453:16:::1;:24:::0;;;;;;:34;;;;::::1;;::::0;;17324:171::o;18695:153::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;18784:11:::1;:22:::0;;-1:-1:-1;;18784:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;18817:13:::1;:23:::0;18695:153::o;15173:138::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;15236:3:::1;15220:13;:19:::0;;;15250:14:::1;:20:::0;-1:-1:-1;15281:18:0::1;:22:::0;15173:138::o;9445:156::-;9525:4;9549:44;9563:10;9575:9;9586:6;9549:13;:44::i;14323:206::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;14414:14:::1;:22:::0;;;;14447:13:::1;:20:::0;;;;14478:18:::1;:27:::0;14323:206::o;18231:456::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;18433:21:::1;:46:::0;;-1:-1:-1;;;;;;18433:46:0;;::::1;-1:-1:-1::0;;;;;18433:46:0;;::::1;;::::0;;;18490:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18545:18:::1;:40:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18596:17:::1;:38:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;18645:15:::1;:34:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;18231:456::o;19190:167::-;19258:7;19285:64;19326:22;:20;:22::i;:::-;19308:4;;-1:-1:-1;;;;;19308:4:0;8905:7;8923:18;;;:9;:18;;;;;;19285:36;;19298:22;;19318:1;;19298:15;:19;;:22::i;:::-;19285:8;;:12;:36::i;:::-;:40;;:64::i;14030:285::-;14112:4;14139:6;14149:1;14139:11;14136:95;;14175:44;;-1:-1:-1;;;14175:44:0;;14213:4;14175:44;;;4647:51:1;-1:-1:-1;;;;;14175:29:0;;;;;4620:18:1;;14175:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14166:53;;14136:95;14277:21;;14248:59;;-1:-1:-1;;;14248:59:0;;-1:-1:-1;;;;;14277:21:0;;;14248:59;;;8205:51:1;8272:18;;;8265:34;;;14248:28:0;;;;;;8178:18:1;;14248:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13548:198::-;13677:15;;13637:21;;-1:-1:-1;;;;;13677:15:0;13669:69;13734:3;13703:28;13715:16;13637:21;13703:28;:::i;:::-;:34;;;;:::i;:::-;13669:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13606:140;13548:198;:::o;3526:244::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3615:22:0;::::1;3607:73;;;::::0;-1:-1:-1;;;3607:73:0;;8762:2:1;3607:73:0::1;::::0;::::1;8744:21:1::0;8801:2;8781:18;;;8774:30;8840:34;8820:18;;;8813:62;-1:-1:-1;;;8891:18:1;;;8884:36;8937:19;;3607:73:0::1;8560:402:1::0;3607:73:0::1;3717:6;::::0;;3696:38:::1;::::0;-1:-1:-1;;;;;3696:38:0;;::::1;::::0;3717:6;::::1;::::0;3696:38:::1;::::0;::::1;3745:6;:17:::0;;-1:-1:-1;;;;;;3745:17:0::1;-1:-1:-1::0;;;;;3745:17:0;;;::::1;::::0;;;::::1;::::0;;3526:244::o;13902:120::-;13958:21;;13950:62;;-1:-1:-1;;;;;13958:21:0;;;;13990;13950:62;;;;;13958:21;13950:62;13958:21;13950:62;13990:21;13958;13950:62;;;;;;;;;;;;;;;;;;;;;13902:120::o;18856:172::-;3283:6;;-1:-1:-1;;;;;3283:6:0;2593:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;18943:15:::1;:25:::0;;;;18979:26:::1;:41:::0;18856:172::o;757:192::-;843:7;879:12;871:6;;;;863:29;;;;-1:-1:-1;;;863:29:0;;;;;;;;:::i;:::-;-1:-1:-1;903:9:0;915:5;919:1;915;:5;:::i;:::-;903:17;757:192;-1:-1:-1;;;;;757:192:0:o;10233:1429::-;10345:6;;10325:4;;10345:6;;10342:63;;;10361:41;10376:6;10384:9;10395:6;10361:14;:41::i;:::-;10354:48;;;;10342:63;-1:-1:-1;;;;;10421:22:0;;;;;;:14;:22;;;;;;;;10420:23;:53;;;;-1:-1:-1;;;;;;10448:25:0;;;;;;:14;:25;;;;;;;;10447:26;10420:53;10417:245;;;10497:11;;-1:-1:-1;;;10497:11:0;;;;10489:43;;;;-1:-1:-1;;;10489:43:0;;9302:2:1;10489:43:0;;;9284:21:1;9341:2;9321:18;;;9314:30;-1:-1:-1;;;9360:18:1;;;9353:50;9420:18;;10489:43:0;9100:344:1;10489:43:0;10561:10;;-1:-1:-1;;;10561:10:0;;;;10558:93;;;-1:-1:-1;;;;;10599:21:0;;;;;;:10;:21;;;;;;;;10591:45;;;;-1:-1:-1;;;10591:45:0;;9651:2:1;10591:45:0;;;9633:21:1;9690:2;9670:18;;;9663:30;-1:-1:-1;;;9709:18:1;;;9702:42;9761:18;;10591:45:0;9449:336:1;10591:45:0;-1:-1:-1;;;;;10694:22:0;;;;;;:14;:22;;;;;;;;10693:23;:53;;;;-1:-1:-1;;;;;;10720:26:0;;10741:4;10720:26;;10693:53;:84;;;;-1:-1:-1;10772:4:0;;-1:-1:-1;;;;;10751:26:0;;;10772:4;;10751:26;;10693:84;:105;;;;-1:-1:-1;10794:4:0;;-1:-1:-1;;;;;10781:17:0;;;10794:4;;10781:17;;10693:105;:139;;;;-1:-1:-1;10815:17:0;;-1:-1:-1;;;;;10802:30:0;;;10815:17;;10802:30;;10693:139;:176;;;;-1:-1:-1;10849:20:0;;-1:-1:-1;;;;;10836:33:0;;;10849:20;;10836:33;;10693:176;:208;;;;-1:-1:-1;;;;;;10874:27:0;;;;;;:16;:27;;;;;;;;10873:28;10693:208;10689:400;;;-1:-1:-1;;;;;8923:18:0;;10917;8923;;;:9;:18;;;;;;11006:15;;10982:19;10995:6;8923:18;10982:19;:::i;:::-;10981:40;;10973:114;;;;-1:-1:-1;;;10973:114:0;;10122:2:1;10973:114:0;;;10104:21:1;10161:2;10141:18;;;10134:30;10200:34;10180:18;;;10173:62;10271:32;10251:18;;;10244:60;10321:19;;10973:114:0;9920:426:1;10973:114:0;10902:187;10689:400;11154:28;11167:6;11175;11154:12;:28::i;:::-;11199:16;:14;:16::i;:::-;11196:35;;;11218:10;:8;:10::i;:::-;11311:53;;;;;;;;;;;-1:-1:-1;;;11311:53:0;;;;;;;;-1:-1:-1;;;;;11311:17:0;;-1:-1:-1;11311:17:0;;;:9;:17;;;;;;;;:53;;11333:6;;11311:21;:53::i;:::-;-1:-1:-1;;;;;11291:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11403:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;11427:23:0;;;;;;:12;:23;;;;;;;;11403:47;11402:95;;11463:34;11471:6;11479;11487:9;11463:7;:34::i;:::-;11402:95;;;11454:6;11402:95;-1:-1:-1;;;;;11531:20:0;;;;;;:9;:20;;;;;;11377:120;;-1:-1:-1;11531:40:0;;11377:120;11531:24;:40::i;:::-;-1:-1:-1;;;;;11508:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11589:43;;;;;;-1:-1:-1;;;;;;;;;;;11589:43:0;;;11617:14;160:25:1;;148:2;133:18;;14:177;11589:43:0;;;;;;;;-1:-1:-1;11650:4:0;;10233:1429;-1:-1:-1;;;;10233:1429:0:o;615:136::-;673:7;700:43;704:1;707;700:43;;;;;;;;;;;;;;;;;:3;:43::i;428:181::-;486:7;;518:5;522:1;518;:5;:::i;:::-;506:17;;547:1;542;:6;;534:46;;;;-1:-1:-1;;;534:46:0;;10553:2:1;534:46:0;;;10535:21:1;10592:2;10572:18;;;10565:30;10631:29;10611:18;;;10604:57;10678:18;;534:46:0;10351:351:1;955:250:0;1013:7;1037:1;1042;1037:6;1033:47;;-1:-1:-1;1067:1:0;1060:8;;1033:47;1092:9;1104:5;1108:1;1104;:5;:::i;:::-;1092:17;-1:-1:-1;1137:1:0;1128:5;1132:1;1092:17;1128:5;:::i;:::-;:10;1120:56;;;;-1:-1:-1;;;1120:56:0;;10909:2:1;1120:56:0;;;10891:21:1;10948:2;10928:18;;;10921:30;10987:34;10967:18;;;10960:62;-1:-1:-1;;;11038:18:1;;;11031:31;11079:19;;1120:56:0;10707:397:1;1211:132:0;1269:7;1296:39;1300:1;1303;1296:39;;;;;;;;;;;;;;;;;:3;:39::i;11674:330::-;11804:53;;;;;;;;;;;-1:-1:-1;;;11804:53:0;;;;;;;;-1:-1:-1;;;;;11804:17:0;;11767:4;11804:17;;;:9;:17;;;;;;;:53;;11826:6;;11804:21;:53::i;:::-;-1:-1:-1;;;;;11784:17:0;;;;;;;:9;:17;;;;;;:73;;;;11891:20;;;;;;;:32;;11916:6;11891:24;:32::i;:::-;-1:-1:-1;;;;;11868:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11939:35;;;;;;-1:-1:-1;;;;;;;;;;;11939:35:0;;;11967:6;160:25:1;;148:2;133:18;;14:177;11939:35:0;;;;;;;;-1:-1:-1;11992:4:0;11674:330;;;;;:::o;12012:167::-;12109:12;;12099:6;:22;;:50;;;-1:-1:-1;;;;;;12125:24:0;;;;;;:16;:24;;;;;;;;12099:50;12091:80;;;;-1:-1:-1;;;12091:80:0;;11311:2:1;12091:80:0;;;11293:21:1;11350:2;11330:18;;;11323:30;-1:-1:-1;;;11369:18:1;;;11362:47;11426:18;;12091:80:0;11109:341:1;12091:80:0;12012:167;;:::o;13343:197::-;13430:4;;13392;;-1:-1:-1;;;;;13430:4:0;13416:10;:18;;;;:38;;-1:-1:-1;13448:6:0;;;;13447:7;13416:38;:62;;;;-1:-1:-1;13467:11:0;;;;13416:62;:116;;;;-1:-1:-1;;13519:13:0;;13509:4;13491:24;;;;:9;:24;;;;;;:41;;;13343:197::o;15439:1877::-;7217:6;:13;;-1:-1:-1;;7217:13:0;7226:4;7217:13;;;15534:15:::1;::::0;15551:26:::1;::::0;7217:6;;15518:60:::1;::::0;:15:::1;:60::i;:::-;:79;;15585:12;;15518:79;;;15581:1;15518:79;15488:109;;15608:23;15634:59;15691:1;15634:52;15677:8;;15634:38;15652:19;15634:13;;:17;;:38;;;;:::i;:59::-;15608:85;;15704:20;15727:34;15745:15;15727:13;;:17;;:34;;;;:::i;:::-;15798:16;::::0;;15812:1:::1;15798:16:::0;;;;;::::1;::::0;;15704:57;;-1:-1:-1;15774:21:0::1;::::0;15798:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15798:16:0::1;15774:40;;15843:4;15825;15830:1;15825:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15825:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15869:4:::1;::::0;15859:7;;15869:4;::::1;::::0;15859;;15869;;15859:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;15859:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;15944:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;15944:188:0;;15910:21:::1;::::0;15944:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;16016:12;;15886:21:::1;::::0;16059:4;;16086::::1;::::0;16106:15:::1;::::0;15944:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16145:17;16165:40;16191:13;16165:21;:25;;:40;;;;:::i;:::-;16145:60:::0;-1:-1:-1;16218:19:0::1;16240:40;16253:26;:19:::0;16277:1:::1;16253:23;:26::i;:::-;16240:8;::::0;;:12:::1;:40::i;:::-;16218:62:::0;-1:-1:-1;16301:26:0::1;16330:58;16386:1;16330:51;16218:62:::0;16330:51;:9;16344:19;16330:13:::1;:34::i;:58::-;16301:87;;16399:26;16428:44;16460:11;16428:27;16442:12;;16428:9;:13;;:27;;;;:::i;:44::-;16399:73;;16483:21;16507:39;16534:11;16507:22;16521:7;;16507:9;:13;;:22;;;;:::i;:39::-;16483:63;;16557:24;16584:42;16614:11;16584:25;16598:10;;16584:9;:13;;:25;;;;:::i;:42::-;16668:20;::::0;16660:65:::1;::::0;16557:69;;-1:-1:-1;16640:15:0::1;::::0;-1:-1:-1;;;;;16668:20:0;;::::1;::::0;16702:18;;16640:15;16660:65;16640:15;16660:65;16702:18;16668:20;16660:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16760:18:0::1;::::0;16752:61:::1;::::0;16639:86;;-1:-1:-1;;;;;;16760:18:0::1;::::0;16792:16;;16752:61:::1;::::0;;;16792:16;16760:18;16752:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16848:15:0::1;::::0;16840:55:::1;::::0;16736:77;;-1:-1:-1;;;;;;16848:15:0::1;::::0;16877:13;;16840:55:::1;::::0;;;16877:13;16848:15;16840:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16929:5:0::1;::::0;-1:-1:-1;;16950:19:0;;;-1:-1:-1;16947:362:0::1;;16985:6;::::0;17159:21:::1;::::0;16985:244:::1;::::0;-1:-1:-1;;;16985:244:0;;17061:4:::1;16985:244;::::0;::::1;13123:34:1::0;13173:18;;;13166:34;;;16985:6:0::1;13216:18:1::0;;;13209:34;;;13259:18;;;13252:34;-1:-1:-1;;;;;17159:21:0;;::::1;13302:19:1::0;;;13295:44;17199:15:0::1;13355:19:1::0;;;13348:35;16985:6:0;::::1;::::0;:22:::1;::::0;17015:18;;13057:19:1;;16985:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17249:48:0::1;::::0;;13879:25:1;;;13935:2;13920:18;;13913:34;;;17249:48:0::1;::::0;-1:-1:-1;13852:18:1;17249:48:0::1;;;;;;;16947:362;-1:-1:-1::0;;7235:6:0;:14;;-1:-1:-1;;7235:14:0;;;-1:-1:-1;;;;;;;;;;15439:1877:0:o;12310:1025::-;12447:18;;12494:4;;12396:7;;12447:18;-1:-1:-1;;;;;12494:4:0;;;12481:17;;;;12478:154;;-1:-1:-1;12528:14:0;;12478:154;;;12573:4;;-1:-1:-1;;;;;12573:4:0;;;12563:14;;;;12560:72;;-1:-1:-1;12607:13:0;;12560:72;12644:17;12664:62;12705:14;;12722:3;12705:20;;;;:::i;:::-;12664:36;12689:10;12664:20;12675:8;;12664:6;:10;;:20;;;;:::i;:62::-;12644:82;;12737:20;12760:38;12789:8;;12760:24;12774:9;;12760;:13;;:24;;;;:::i;:38::-;12737:61;-1:-1:-1;12809:22:0;12834:27;:9;12737:61;12834:13;:27::i;:::-;12919:4;12901:24;;;;:9;:24;;;;;;12809:52;;-1:-1:-1;12901:44:0;;12809:52;12901:28;:44::i;:::-;12892:4;12874:24;;;;:9;:24;;;;;;:71;;;;12997:17;;-1:-1:-1;;;;;12997:17:0;12987:28;;;;:46;;13020:12;12987:32;:46::i;:::-;12966:17;;-1:-1:-1;;;;;12966:17:0;;;12956:28;;;;:9;:28;;;;;;;;;:77;;;;13049:47;160:25:1;;;13074:4:0;;13049:47;;;;-1:-1:-1;;;;;;;;;;;13049:47:0;133:18:1;13049:47:0;;;;;;;13130:16;;13127:160;;13177:12;;:30;;13194:12;13177:16;:30::i;:::-;13162:12;:45;13244:4;;13227:36;;160:25:1;;;-1:-1:-1;;;;;13244:4:0;;;;13227:36;;;-1:-1:-1;;;;;;;;;;;13227:36:0;148:2:1;133:18;13227:36:0;;;;;;;13127:160;13306:21;:6;13317:9;13306:10;:21::i;:::-;13299:28;12310:1025;-1:-1:-1;;;;;;;;12310:1025:0:o;1349:189::-;1435:7;1470:12;1463:5;1455:28;;;;-1:-1:-1;;;1455:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1494:9:0;1506:5;1510:1;1506;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;941:173::-;1009:20;;-1:-1:-1;;;;;1058:31:1;;1048:42;;1038:70;;1104:1;1101;1094:12;1038:70;941:173;;;:::o;1119:254::-;1187:6;1195;1248:2;1236:9;1227:7;1223:23;1219:32;1216:52;;;1264:1;1261;1254:12;1216:52;1287:29;1306:9;1287:29;:::i;:::-;1277:39;1363:2;1348:18;;;;1335:32;;-1:-1:-1;;;1119:254:1:o;1378:118::-;1464:5;1457:13;1450:21;1443:5;1440:32;1430:60;;1486:1;1483;1476:12;1501:241;1557:6;1610:2;1598:9;1589:7;1585:23;1581:32;1578:52;;;1626:1;1623;1616:12;1578:52;1665:9;1652:23;1684:28;1706:5;1684:28;:::i;1747:248::-;1815:6;1823;1876:2;1864:9;1855:7;1851:23;1847:32;1844:52;;;1892:1;1889;1882:12;1844:52;-1:-1:-1;;1915:23:1;;;1985:2;1970:18;;;1957:32;;-1:-1:-1;1747:248:1:o;2000:328::-;2077:6;2085;2093;2146:2;2134:9;2125:7;2121:23;2117:32;2114:52;;;2162:1;2159;2152:12;2114:52;2185:29;2204:9;2185:29;:::i;:::-;2175:39;;2233:38;2267:2;2256:9;2252:18;2233:38;:::i;:::-;2223:48;;2318:2;2307:9;2303:18;2290:32;2280:42;;2000:328;;;;;:::o;2522:315::-;2587:6;2595;2648:2;2636:9;2627:7;2623:23;2619:32;2616:52;;;2664:1;2661;2654:12;2616:52;2687:29;2706:9;2687:29;:::i;:::-;2677:39;;2766:2;2755:9;2751:18;2738:32;2779:28;2801:5;2779:28;:::i;:::-;2826:5;2816:15;;;2522:315;;;;;:::o;2842:186::-;2901:6;2954:2;2942:9;2933:7;2929:23;2925:32;2922:52;;;2970:1;2967;2960:12;2922:52;2993:29;3012:9;2993:29;:::i;3033:180::-;3092:6;3145:2;3133:9;3124:7;3120:23;3116:32;3113:52;;;3161:1;3158;3151:12;3113:52;-1:-1:-1;3184:23:1;;3033:180;-1:-1:-1;3033:180:1:o;3218:523::-;3322:6;3330;3338;3346;3354;3362;3415:3;3403:9;3394:7;3390:23;3386:33;3383:53;;;3432:1;3429;3422:12;3383:53;-1:-1:-1;;3455:23:1;;;3525:2;3510:18;;3497:32;;-1:-1:-1;3576:2:1;3561:18;;3548:32;;3627:2;3612:18;;3599:32;;-1:-1:-1;3678:3:1;3663:19;;3650:33;;-1:-1:-1;3730:3:1;3715:19;3702:33;;-1:-1:-1;3218:523:1;-1:-1:-1;3218:523:1:o;3746:750::-;3838:6;3846;3854;3907:2;3895:9;3886:7;3882:23;3878:32;3875:52;;;3923:1;3920;3913:12;3875:52;3963:9;3950:23;3992:18;4033:2;4025:6;4022:14;4019:34;;;4049:1;4046;4039:12;4019:34;4087:6;4076:9;4072:22;4062:32;;4132:7;4125:4;4121:2;4117:13;4113:27;4103:55;;4154:1;4151;4144:12;4103:55;4194:2;4181:16;4220:2;4212:6;4209:14;4206:34;;;4236:1;4233;4226:12;4206:34;4291:7;4284:4;4274:6;4271:1;4267:14;4263:2;4259:23;4255:34;4252:47;4249:67;;;4312:1;4309;4302:12;4249:67;4343:4;4335:13;;;;-1:-1:-1;4367:6:1;-1:-1:-1;;4408:20:1;;4395:34;4438:28;4395:34;4438:28;:::i;:::-;4485:5;4475:15;;;3746:750;;;;;:::o;4709:309::-;4774:6;4782;4835:2;4823:9;4814:7;4810:23;4806:32;4803:52;;;4851:1;4848;4841:12;4803:52;4890:9;4877:23;4909:28;4931:5;4909:28;:::i;5023:316::-;5100:6;5108;5116;5169:2;5157:9;5148:7;5144:23;5140:32;5137:52;;;5185:1;5182;5175:12;5137:52;-1:-1:-1;;5208:23:1;;;5278:2;5263:18;;5250:32;;-1:-1:-1;5329:2:1;5314:18;;;5301:32;;5023:316;-1:-1:-1;5023:316:1:o;5344:484::-;5439:6;5447;5455;5463;5471;5524:3;5512:9;5503:7;5499:23;5495:33;5492:53;;;5541:1;5538;5531:12;5492:53;5564:29;5583:9;5564:29;:::i;:::-;5554:39;;5612:38;5646:2;5635:9;5631:18;5612:38;:::i;:::-;5602:48;;5669:38;5703:2;5692:9;5688:18;5669:38;:::i;:::-;5659:48;;5726:38;5760:2;5749:9;5745:18;5726:38;:::i;:::-;5716:48;;5783:39;5817:3;5806:9;5802:19;5783:39;:::i;:::-;5773:49;;5344:484;;;;;;;;:::o;5833:260::-;5901:6;5909;5962:2;5950:9;5941:7;5937:23;5933:32;5930:52;;;5978:1;5975;5968:12;5930:52;6001:29;6020:9;6001:29;:::i;:::-;5991:39;;6049:38;6083:2;6072:9;6068:18;6049:38;:::i;:::-;6039:48;;5833:260;;;;;:::o;6324:356::-;6526:2;6508:21;;;6545:18;;;6538:30;6604:34;6599:2;6584:18;;6577:62;6671:2;6656:18;;6324:356::o;6685:127::-;6746:10;6741:3;6737:20;6734:1;6727:31;6777:4;6774:1;6767:15;6801:4;6798:1;6791:15;6817:217;6857:1;6883;6873:132;;6927:10;6922:3;6918:20;6915:1;6908:31;6962:4;6959:1;6952:15;6990:4;6987:1;6980:15;6873:132;-1:-1:-1;7019:9:1;;6817:217::o;7039:168::-;7112:9;;;7143;;7160:15;;;7154:22;;7140:37;7130:71;;7181:18;;:::i;7570:127::-;7631:10;7626:3;7622:20;7619:1;7612:31;7662:4;7659:1;7652:15;7686:4;7683:1;7676:15;7702:135;7741:3;7762:17;;;7759:43;;7782:18;;:::i;:::-;-1:-1:-1;7829:1:1;7818:13;;7702:135::o;7842:184::-;7912:6;7965:2;7953:9;7944:7;7940:23;7936:32;7933:52;;;7981:1;7978;7971:12;7933:52;-1:-1:-1;8004:16:1;;7842:184;-1:-1:-1;7842:184:1:o;8310:245::-;8377:6;8430:2;8418:9;8409:7;8405:23;8401:32;8398:52;;;8446:1;8443;8436:12;8398:52;8478:9;8472:16;8497:28;8519:5;8497:28;:::i;8967:128::-;9034:9;;;9055:11;;;9052:37;;;9069:18;;:::i;9790:125::-;9855:9;;;9876:10;;;9873:36;;;9889:18;;:::i;11587:980::-;11849:4;11897:3;11886:9;11882:19;11928:6;11917:9;11910:25;11954:2;11992:6;11987:2;11976:9;11972:18;11965:34;12035:3;12030:2;12019:9;12015:18;12008:31;12059:6;12094;12088:13;12125:6;12117;12110:22;12163:3;12152:9;12148:19;12141:26;;12202:2;12194:6;12190:15;12176:29;;12223:1;12233:195;12247:6;12244:1;12241:13;12233:195;;;12312:13;;-1:-1:-1;;;;;12308:39:1;12296:52;;12403:15;;;;12368:12;;;;12344:1;12262:9;12233:195;;;-1:-1:-1;;;;;;;12484:32:1;;;;12479:2;12464:18;;12457:60;-1:-1:-1;;;12548:3:1;12533:19;12526:35;12445:3;11587:980;-1:-1:-1;;;11587:980:1:o;13394:306::-;13482:6;13490;13498;13551:2;13539:9;13530:7;13526:23;13522:32;13519:52;;;13567:1;13564;13557:12;13519:52;13596:9;13590:16;13580:26;;13646:2;13635:9;13631:18;13625:25;13615:35;;13690:2;13679:9;13675:18;13669:25;13659:35;;13394:306;;;;;:::o

Swarm Source

ipfs://8728e854582562f6da76090e2db7dbd98b6f40069ca793c222dca7a13dcdac12

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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