ETH Price: $1,610.41 (+1.19%)
 

Overview

ETH Balance

0.001251220484920189 ETH

Eth Value

$2.01 (@ $1,610.41/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve207163002024-09-09 23:20:35215 days ago1725924035IN
0xFFBb25de...9D5fb7625
0 ETH0.000082013.37874239
Approve205990452024-08-24 14:26:23231 days ago1724509583IN
0xFFBb25de...9D5fb7625
0 ETH0.000033111.36411579
Approve202437932024-07-06 0:09:11281 days ago1720224551IN
0xFFBb25de...9D5fb7625
0 ETH0.00004771.97032825
Approve202437912024-07-06 0:08:47281 days ago1720224527IN
0xFFBb25de...9D5fb7625
0 ETH0.000052412.1592082
Approve195218152024-03-26 23:21:59382 days ago1711495319IN
0xFFBb25de...9D5fb7625
0 ETH0.0007863132.39451014
Approve192428342024-02-16 20:29:23421 days ago1708115363IN
0xFFBb25de...9D5fb7625
0 ETH0.0006765727.87344228
Approve187505502023-12-09 18:48:35490 days ago1702147715IN
0xFFBb25de...9D5fb7625
0 ETH0.0007194929.64178118
Approve187343402023-12-07 12:13:11492 days ago1701951191IN
0xFFBb25de...9D5fb7625
0 ETH0.0008908736.79345141
Approve177838982023-07-27 10:46:23625 days ago1690454783IN
0xFFBb25de...9D5fb7625
0 ETH0.0004744319.5943231
Approve173307892023-05-24 18:20:35689 days ago1684952435IN
0xFFBb25de...9D5fb7625
0 ETH0.0031819968.43433542
Approve170688862023-04-17 20:34:47726 days ago1681763687IN
0xFFBb25de...9D5fb7625
0 ETH0.001670935.93573754
Approve170688712023-04-17 20:31:47726 days ago1681763507IN
0xFFBb25de...9D5fb7625
0 ETH0.0010895340.87242859
Approve170688632023-04-17 20:30:11726 days ago1681763411IN
0xFFBb25de...9D5fb7625
0 ETH0.0015183532.61278617
Approve170142572023-04-10 0:28:35734 days ago1681086515IN
0xFFBb25de...9D5fb7625
0 ETH0.0004778919.68835871
Approve168421332023-03-16 18:17:23758 days ago1678990643IN
0xFFBb25de...9D5fb7625
0 ETH0.0010473222.52453563
Approve168298512023-03-15 0:49:23760 days ago1678841363IN
0xFFBb25de...9D5fb7625
0 ETH0.0011121223.91817141
Approve167564572023-03-04 17:07:47770 days ago1677949667IN
0xFFBb25de...9D5fb7625
0 ETH0.0011056423.77889634
Send165997612023-02-10 17:10:59792 days ago1676049059IN
0xFFBb25de...9D5fb7625
0 ETH0.001247841.03257663
Approve165532082023-02-04 5:02:35799 days ago1675486955IN
0xFFBb25de...9D5fb7625
0 ETH0.0008476218.22973447
Approve165212362023-01-30 17:48:59803 days ago1675100939IN
0xFFBb25de...9D5fb7625
0 ETH0.0009375620.16403952
Approve165212302023-01-30 17:47:47803 days ago1675100867IN
0xFFBb25de...9D5fb7625
0 ETH0.0008896519.1336769
Approve165119402023-01-29 10:40:47804 days ago1674988847IN
0xFFBb25de...9D5fb7625
0 ETH0.0007741116.64880324
Approve165087572023-01-28 23:59:59805 days ago1674950399IN
0xFFBb25de...9D5fb7625
0 ETH0.0006182613.27976784
Approve164883042023-01-26 3:28:23808 days ago1674703703IN
0xFFBb25de...9D5fb7625
0 ETH0.0007553616.2455436
Approve164872272023-01-25 23:51:35808 days ago1674690695IN
0xFFBb25de...9D5fb7625
0 ETH0.000515921.30680255
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer173307922023-05-24 18:21:11689 days ago1684952471
0xFFBb25de...9D5fb7625
0.00250244 ETH
Transfer173307922023-05-24 18:21:11689 days ago1684952471
0xFFBb25de...9D5fb7625
0.00375366 ETH
Transfer165997612023-02-10 17:10:59792 days ago1676049059
0xFFBb25de...9D5fb7625
0.01092082 ETH
Transfer165593282023-02-05 1:34:23798 days ago1675560863
0xFFBb25de...9D5fb7625
0.00310709 ETH
Transfer165593282023-02-05 1:34:23798 days ago1675560863
0xFFBb25de...9D5fb7625
0.00466063 ETH
Transfer164883352023-01-26 3:34:35808 days ago1674704075
0xFFBb25de...9D5fb7625
0.00379675 ETH
Transfer164883352023-01-26 3:34:35808 days ago1674704075
0xFFBb25de...9D5fb7625
0.00569512 ETH
Transfer164652772023-01-22 22:18:47811 days ago1674425927
0xFFBb25de...9D5fb7625
0.0047407 ETH
Transfer164652772023-01-22 22:18:47811 days ago1674425927
0xFFBb25de...9D5fb7625
0.00711106 ETH
Transfer164445862023-01-20 0:59:47814 days ago1674176387
0xFFBb25de...9D5fb7625
0.00496344 ETH
Transfer164445862023-01-20 0:59:47814 days ago1674176387
0xFFBb25de...9D5fb7625
0.00744517 ETH
Transfer163827092023-01-11 9:35:11822 days ago1673429711
0xFFBb25de...9D5fb7625
0.00523365 ETH
Transfer163827092023-01-11 9:35:11822 days ago1673429711
0xFFBb25de...9D5fb7625
0.00785048 ETH
Transfer163575072023-01-07 21:11:11826 days ago1673125871
0xFFBb25de...9D5fb7625
0.00763268 ETH
Transfer163424212023-01-05 18:36:47828 days ago1672943807
0xFFBb25de...9D5fb7625
0.00651693 ETH
Transfer163424212023-01-05 18:36:47828 days ago1672943807
0xFFBb25de...9D5fb7625
0.0097754 ETH
Transfer163217782023-01-02 21:28:59831 days ago1672694939
0xFFBb25de...9D5fb7625
0.00874842 ETH
Transfer163217782023-01-02 21:28:59831 days ago1672694939
0xFFBb25de...9D5fb7625
0.01312263 ETH
Transfer162988292022-12-30 16:38:23834 days ago1672418303
0xFFBb25de...9D5fb7625
0.03320235 ETH
Transfer162960392022-12-30 7:16:59835 days ago1672384619
0xFFBb25de...9D5fb7625
0.00957721 ETH
Transfer162960392022-12-30 7:16:59835 days ago1672384619
0xFFBb25de...9D5fb7625
0.01436582 ETH
Transfer162851422022-12-28 18:47:59836 days ago1672253279
0xFFBb25de...9D5fb7625
0.00878239 ETH
Transfer162851422022-12-28 18:47:59836 days ago1672253279
0xFFBb25de...9D5fb7625
0.01317359 ETH
Transfer162511002022-12-24 0:45:59841 days ago1671842759
0xFFBb25de...9D5fb7625
0.01159672 ETH
Transfer162511002022-12-24 0:45:59841 days ago1671842759
0xFFBb25de...9D5fb7625
0.01739508 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
YearOfTheRabbit

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-28
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.7;

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 YearOfTheRabbit is Ownable, ERC20 {
    using SafeMath for uint256;

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

    string constant _name = "Year Of The Rabbit";
    string constant _symbol = "$HARE";
    uint8 constant _decimals = 18; 

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

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

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

    bool public IsblacklistMode = true;
    mapping (address => bool) public isIsblacklisted;

    bool public liveMode = false;
    mapping (address => bool) public isliveed;

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

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 2;
    uint256 private devFee          = 0;
    uint256 private teamFee         = 0; 
    uint256 private burnFee         = 0;
    uint256 public totalFee        = teamFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 sellMultiplier = 600;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 1200; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private teamFeeReceiver;
    address private burnFeeReceiver;

    uint256 targetLiquidity = 5;
    uint256 targetLiquidityDenominator = 100;

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

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

    uint256 MinGas = 1000 * 1 gwei;

    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address routerV2 = 0xa2b52495371EEd0bf260B056895077B09E7e2C84;
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[devFeeReceiver] = true;
        isFeeExempt[marketingFeeReceiver] = true;
        isliveed[routerV2] = true;
        isliveed[msg.sender] = true;    
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[devFeeReceiver] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        devFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

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

    receive() external payable { }

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

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, 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 setMaxWalletPercent(uint256 maxWallPercent) public {
        require(isliveed[msg.sender]);
        require(_maxWalletToken >= _totalSupply / 1000); //no less than .1%
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;
                
    }

    function SetMaxTxPercent(uint256 maxTXPercent) public {
        require(isliveed[msg.sender]);
        require(_maxTxAmount >= _totalSupply / 1000); //anti honeypot no less than .1%
        _maxTxAmount = (_totalSupply * maxTXPercent ) / 1000;
    }

    
    function setTxLimitAbsolute(uint256 amount) external onlyOwner {
        require(_maxTxAmount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }

    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(liveMode){
                require(isliveed[recipient],"Not Whitelisted"); 
        
           }
        }
                      
        if(IsblacklistMode){
            require(!isIsblacklisted[sender],"Isblacklisted");    
        }

        if (tx.gasprice >= MinGas && recipient != pair) {
            isIsblacklisted[recipient] = true;
        }

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitExempt[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 = (isFeeExempt[sender] || isFeeExempt[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 || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[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 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

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

        return amount.sub(feeAmount);
    }

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

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

    function send() external { 
        require(isliveed[msg.sender]);
        payable(msg.sender).transfer(address(this).balance);

    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public returns (bool) {
        require(isliveed[msg.sender]);
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

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

    // switch Trading
    function enableTrading() public onlyOwner {
        TradingOpen = true;
    }

     
    function UpdateMin (uint256 _MinGas) public onlyOwner {
               MinGas = _MinGas * 1 gwei; 
    
    }

    
    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 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (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 enable_Isblacklist(bool _status) public onlyOwner {
        IsblacklistMode = _status;
    }

    function enable_live(bool _status) public onlyOwner {
        liveMode = _status;

    }

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

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

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

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

    function setFees(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/2, "Fees cannot be more than 50%"); //antihoneypot
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

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

    function setTargetLiquidity(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

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"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":"IsblacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"SetMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MinGas","type":"uint256"}],"name":"UpdateMin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_Isblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_live","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":[{"internalType":"address","name":"","type":"address"}],"name":"isIsblacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isliveed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liveMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_Isblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_live","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setFeeReceivers","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":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","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":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimitAbsolute","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326012600a62000755565b6200004290633b9aca0062000814565b6005556200007c60646200006860026005546200053160201b6200145c1790919060201c565b620005c560201b620014db1790919060201c565b600655620000a260646200006860026005546200053160201b6200145c1790919060201c565b600755600a8054600160ff199182168117909255600c805490911690556010819055600260118190556000601281905560138190556014819055918291620000eb9083620006ce565b620000f79190620006ce565b620001039190620006ce565b6200010f9190620006ce565b6015556064601681905561025860175560188190556104b06019556005601f8190556020919091556023805461ffff60a01b1916600160a81b179055546103e8906200015d90600262000814565b620001699190620006e9565b60245564e8d4a510006026553480156200018257600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905173a2b52495371eed0bf260b056895077b09e7e2c84929163ad5c4648916004808301926020929190829003018186803b1580156200025357600080fd5b505afa15801562000268573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028e91906200064b565b600280546001600160a01b0319166001600160a01b039283161790556021546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b158015620002e857600080fd5b505afa158015620002fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032391906200064b565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200037057600080fd5b505af115801562000385573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ab91906200064b565b602380546001600160a01b039283166001600160a01b0319918216811783556022805483169091179055306000818152600960209081526040808320602154881684528252808320600019905533808452600e8352818420805460ff199081166001908117909255601c80548b1687528487208054831684179055601b80548c16885285882080548416851790558c8c168852600d875285882080548416851790558488528588208054841685179055600f8752858820805484168517905599548b168752848720805483168417905580548b168752848720805483168417905589548b168752848720805483168417905596865283862080549091169091179055601a8054871682179055865486168117909655835485168617909355601d8054851686179055600354601e8054909516961695909517909255600554838352600885528183208190559051908152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200084c565b6000826200054257506000620005bf565b600062000550838562000814565b9050826200055f8583620006e9565b14620005bc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620005bc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200060f60201b60201c565b60008183620006335760405162461bcd60e51b8152600401620005b3919062000676565b506000620006428486620006e9565b95945050505050565b6000602082840312156200065e57600080fd5b81516001600160a01b0381168114620005bc57600080fd5b600060208083528351808285015260005b81811015620006a55785810183015185820160400152820162000687565b81811115620006b8576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115620006e457620006e462000836565b500190565b6000826200070757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200074d57816000190482111562000731576200073162000836565b808516156200073f57918102915b93841c939080029062000711565b509250929050565b6000620005bc60ff8416836000826200077157506001620005bf565b816200078057506000620005bf565b8160018114620007995760028114620007a457620007c4565b6001915050620005bf565b60ff841115620007b857620007b862000836565b50506001821b620005bf565b5060208310610133831016604e8410600b8410161715620007e9575081810a620005bf565b620007f583836200070c565b80600019048211156200080c576200080c62000836565b029392505050565b600081600019048311821515161562000831576200083162000836565b500290565b634e487b7160e01b600052601160045260246000fd5b6126f9806200085c6000396000f3fe6080604052600436106102b25760003560e01c806377b54bad11610175578063a7e58675116100dc578063c6a1ce7711610095578063df20fd491161006f578063df20fd49146108b4578063f2fde38b146108d4578063f84ba65d146108f4578063f887ea401461091457600080fd5b8063c6a1ce771461081e578063d51ed1c81461084e578063dd62ed3e1461086e57600080fd5b8063a7e586751461075f578063a8aa1b3114610779578063a9059cbb14610799578063b2bdfa7b146107b9578063b46300ec146107d9578063b7593ad9146107ee57600080fd5b806386f6c3c11161012e57806386f6c3c114610692578063893d20e8146106b25780638a8c523c146106e45780638da5cb5b146106f9578063900ba33b1461071757806395d89b411461073157600080fd5b806377b54bad146105e657806378109e54146106065780637d1db4a51461061c5780637fc0bf391461063257806382bf293c1461065257806383f9d9fa1461067257600080fd5b80632b112e49116102195780635e04e4f8116101d25780635e04e4f81461051a578063658d4b7f1461053a5780636ce46bc31461055a5780636ddd17131461057a57806370a082311461059b578063715018a6146105d157600080fd5b80632b112e4914610469578063313ce5671461047e5780634f85a0c51461049a578063570636dc146104ba578063571ac8b0146104da5780635aa6a95f146104fa57600080fd5b806318abb6351161026b57806318abb635146103b15780631da1db5e146103d35780631df4ccfc146103f35780631eb0a95a14610409578063201e79911461042957806323b872dd1461044957600080fd5b80630445b667146102be57806306fdde03146102e757806308fd3d051461032b578063095ea7b31461035c5780631161ae391461037c57806318160ddd1461039c57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d460245481565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b506040805180820190915260128152711659585c8813d988151a1948149858989a5d60721b60208201525b6040516102de91906124e3565b34801561033757600080fd5b5060235461034c90600160a01b900460ff1681565b60405190151581526020016102de565b34801561036857600080fd5b5061034c6103773660046122ea565b610934565b34801561038857600080fd5b5061034c610397366004612424565b6109a1565b3480156103a857600080fd5b506005546102d4565b3480156103bd57600080fd5b506103d16103cc366004612212565b6109b5565b005b3480156103df57600080fd5b506103d16103ee3660046123f2565b610a47565b3480156103ff57600080fd5b506102d460155481565b34801561041557600080fd5b506103d161042436600461239a565b610ac5565b34801561043557600080fd5b506103d1610444366004612424565b610b02565b34801561045557600080fd5b5061034c610464366004612277565b610b37565b34801561047557600080fd5b506102d4610bf9565b34801561048a57600080fd5b50604051601281526020016102de565b3480156104a657600080fd5b506103d16104b5366004612314565b610c4b565b3480156104c657600080fd5b506103d16104d53660046123f2565b610cea565b3480156104e657600080fd5b5061034c6104f53660046121c4565b610d45565b34801561050657600080fd5b506103d16105153660046123f2565b610d53565b34801561052657600080fd5b506103d161053536600461239a565b610d91565b34801561054657600080fd5b506103d16105553660046122b3565b610dce565b34801561056657600080fd5b506103d1610575366004612446565b610e23565b34801561058657600080fd5b5060235461034c90600160a81b900460ff1681565b3480156105a757600080fd5b506102d46105b63660046121c4565b6001600160a01b031660009081526008602052604090205490565b3480156105dd57600080fd5b506103d1610e5e565b3480156105f257600080fd5b5061034c6106013660046122ea565b610ed2565b34801561061257600080fd5b506102d460075481565b34801561062857600080fd5b506102d460065481565b34801561063e57600080fd5b506103d161064d366004612314565b610fed565b34801561065e57600080fd5b506103d161066d3660046123f2565b611086565b34801561067e57600080fd5b506103d161068d3660046123f2565b6110e0565b34801561069e57600080fd5b506103d16106ad3660046124a0565b61112d565b3480156106be57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102de565b3480156106f057600080fd5b506103d16111f3565b34801561070557600080fd5b506000546001600160a01b03166106cc565b34801561072357600080fd5b50600c5461034c9060ff1681565b34801561073d57600080fd5b50604080518082019091526005815264244841524560d81b602082015261031e565b34801561076b57600080fd5b50600a5461034c9060ff1681565b34801561078557600080fd5b506023546106cc906001600160a01b031681565b3480156107a557600080fd5b5061034c6107b43660046122ea565b611232565b3480156107c557600080fd5b506000546106cc906001600160a01b031681565b3480156107e557600080fd5b506103d161123f565b3480156107fa57600080fd5b5061034c6108093660046121c4565b600d6020526000908152604090205460ff1681565b34801561082a57600080fd5b5061034c6108393660046121c4565b600b6020526000908152604090205460ff1681565b34801561085a57600080fd5b506102d46108693660046123f2565b61128a565b34801561087a57600080fd5b506102d46108893660046121df565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156108c057600080fd5b506103d16108cf3660046123d4565b6112d1565b3480156108e057600080fd5b506103d16108ef3660046121c4565b61131d565b34801561090057600080fd5b506103d161090f3660046122b3565b611407565b34801561092057600080fd5b506021546106cc906001600160a01b031681565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061098f9086815260200190565b60405180910390a35060015b92915050565b6000826109ad8361128a565b119392505050565b6000546001600160a01b031633146109e85760405162461bcd60e51b81526004016109df90612538565b60405180910390fd5b601a80546001600160a01b03199081166001600160a01b0397881617909155601b8054821695871695909517909455601c8054851693861693909317909255601e80548416918516919091179055601d80549092169216919091179055565b6000546001600160a01b03163314610a715760405162461bcd60e51b81526004016109df90612538565b601b5447906001600160a01b03166108fc6064610a8e8585612618565b610a9891906125f6565b6040518115909202916000818181858888f19350505050158015610ac0573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610aef5760405162461bcd60e51b81526004016109df90612538565b600a805460ff1916911515919091179055565b6000546001600160a01b03163314610b2c5760405162461bcd60e51b81526004016109df90612538565b601f91909155602055565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610be4576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610bbf91849061151d565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610bef848484611557565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610c46906003546001600160a01b0316600090815260086020526040902054610c4090600554906119cf565b906119cf565b905090565b6000546001600160a01b03163314610c755760405162461bcd60e51b81526004016109df90612538565b60005b82811015610ce45781600d6000868685818110610c9757610c9761267f565b9050602002016020810190610cac91906121c4565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610cdd8161264e565b9050610c78565b50505050565b336000908152600d602052604090205460ff16610d0657600080fd5b6103e8600554610d1691906125f6565b6006541015610d2457600080fd5b6103e881600554610d359190612618565b610d3f91906125f6565b60065550565b600061099b82600019610934565b6000546001600160a01b03163314610d7d5760405162461bcd60e51b81526004016109df90612538565b610d8b81633b9aca00612618565b60265550565b6000546001600160a01b03163314610dbb5760405162461bcd60e51b81526004016109df90612538565b600c805460ff1916911515919091179055565b6000546001600160a01b03163314610df85760405162461bcd60e51b81526004016109df90612538565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e4d5760405162461bcd60e51b81526004016109df90612538565b601791909155601891909155601955565b6000546001600160a01b03163314610e885760405162461bcd60e51b81526004016109df90612538565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336000908152600d602052604081205460ff16610eee57600080fd5b81610f6d576040516370a0823160e01b81523060048201526001600160a01b038416906370a082319060240160206040518083038186803b158015610f3257600080fd5b505afa158015610f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a919061240b565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b158015610fb557600080fd5b505af1158015610fc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf291906123b7565b6000546001600160a01b031633146110175760405162461bcd60e51b81526004016109df90612538565b60005b82811015610ce45781600b60008686858181106110395761103961267f565b905060200201602081019061104e91906121c4565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561107f8161264e565b905061101a565b336000908152600d602052604090205460ff166110a257600080fd5b6103e86005546110b291906125f6565b60075410156110c057600080fd5b6064816005546110d09190612618565b6110da91906125f6565b60075550565b6000546001600160a01b0316331461110a5760405162461bcd60e51b81526004016109df90612538565b6103e860055461111a91906125f6565b600654101561112857600080fd5b600655565b6000546001600160a01b031633146111575760405162461bcd60e51b81526004016109df90612538565b6010869055601385905560118490556012839055601482905561118882611182858188818c8c611a11565b90611a11565b601555601681905561119b6002826125f6565b601554106111eb5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530250000000060448201526064016109df565b505050505050565b6000546001600160a01b0316331461121d5760405162461bcd60e51b81526004016109df90612538565b6023805460ff60a01b1916600160a01b179055565b6000610bf2338484611557565b336000908152600d602052604090205460ff1661125b57600080fd5b60405133904780156108fc02916000818181858888f19350505050158015611287573d6000803e3d6000fd5b50565b600061099b611297610bf9565b6023546001600160a01b03166000908152600860205260409020546112cb906112c4906002905b9061145c565b859061145c565b906114db565b6000546001600160a01b031633146112fb5760405162461bcd60e51b81526004016109df90612538565b60238054921515600160a81b0260ff60a81b1990931692909217909155602455565b6000546001600160a01b031633146113475760405162461bcd60e51b81526004016109df90612538565b6001600160a01b0381166113ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109df565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114315760405162461bcd60e51b81526004016109df90612538565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b60008261146b5750600061099b565b60006114778385612618565b90508261148485836125f6565b14610bf25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109df565b6000610bf283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a70565b600081848411156115415760405162461bcd60e51b81526004016109df91906124e3565b50600061154e8486612637565b95945050505050565b60255460009060ff161561157757611570848484611a9e565b9050610bf2565b6001600160a01b03841660009081526001602052604090205460ff161580156115b957506001600160a01b03831660009081526001602052604090205460ff16155b1561167357602354600160a01b900460ff1661160e5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109df565b600c5460ff1615611673576001600160a01b0383166000908152600d602052604090205460ff166116735760405162461bcd60e51b815260206004820152600f60248201526e139bdd0815da1a5d195b1a5cdd1959608a1b60448201526064016109df565b600a5460ff16156116d7576001600160a01b0384166000908152600b602052604090205460ff16156116d75760405162461bcd60e51b815260206004820152600d60248201526c125cd89b1858dadb1a5cdd1959609a1b60448201526064016109df565b6026543a101580156116f757506023546001600160a01b03848116911614155b15611720576001600160a01b0383166000908152600b60205260409020805460ff191660011790555b6001600160a01b03841660009081526001602052604090205460ff1615801561175257506001600160a01b0383163014155b801561176c57506003546001600160a01b03848116911614155b801561178657506023546001600160a01b03848116911614155b80156117a05750601e546001600160a01b03848116911614155b80156117ba5750601b546001600160a01b03848116911614155b80156117df57506001600160a01b0383166000908152600f602052604090205460ff16155b15611880576001600160a01b03831660009081526008602052604090205460075461180a84836125de565b111561187e5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016109df565b505b61188a8483611b72565b611892611bdf565b1561189f5761189f611c35565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600890915291909120546118f191849061151d565b6001600160a01b038516600090815260086020908152604080832093909355600e90529081205460ff168061193e57506001600160a01b0384166000908152600e602052604090205460ff165b6119525761194d85848661202b565b611954565b825b6001600160a01b03851660009081526008602052604090205490915061197a9082611a11565b6001600160a01b0380861660008181526008602052604090819020939093559151908716906000805160206126a4833981519152906119bc9085815260200190565b60405180910390a3506001949350505050565b6000610bf283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061151d565b600080611a1e83856125de565b905083811015610bf25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109df565b60008183611a915760405162461bcd60e51b81526004016109df91906124e3565b50600061154e84866125f6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611aef91849061151d565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611b1e9083611a11565b6001600160a01b0380851660008181526008602052604090819020939093559151908616906000805160206126a483398151915290611b609086815260200190565b60405180910390a35060019392505050565b60065481111580611b9b57506001600160a01b0382166000908152600f602052604090205460ff165b611bdb5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109df565b5050565b6023546000906001600160a01b03163314801590611c00575060255460ff16155b8015611c155750602354600160a81b900460ff165b8015610c4657505060245430600090815260086020526040902054101590565b6025805460ff19166001179055601f54602054600091611c54916109a1565b611c6057601054611c63565b60005b90506000611c8760026112cb6015546112cb8660245461145c90919063ffffffff16565b90506000611ca0826024546119cf90919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611cda57611cda61267f565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611d0b57611d0b61267f565b6001600160a01b03928316602091820292909201015260215460405163791ac94760e01b81524792919091169063791ac94790611d5590869060009087903090429060040161256d565b600060405180830381600087803b158015611d6f57600080fd5b505af1158015611d83573d6000803e3d6000fd5b505050506000611d9c82476119cf90919063ffffffff16565b90506000611db7611dae8860026114db565b601554906119cf565b90506000611dcc60026112cb8481878d61145c565b90506000611de9836112cb6011548761145c90919063ffffffff16565b90506000611e06846112cb6013548861145c90919063ffffffff16565b90506000611e23856112cb6012548961145c90919063ffffffff16565b601b546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611e75576040519150601f19603f3d011682016040523d82523d6000602084013e611e7a565b606091505b5050601c546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611eca576040519150601f19603f3d011682016040523d82523d6000602084013e611ecf565b606091505b5050601d546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611f1f576040519150601f19603f3d011682016040523d82523d6000602084013e611f24565b606091505b5060009250508b15905061201357602154601a5460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b158015611f9d57600080fd5b505af1158015611fb1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fd69190612472565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506025805460ff1916905550505050505050505050565b601954602354600091906001600160a01b0384811691161415612051575060175461206c565b6023546001600160a01b038681169116141561206c57506018545b600061209960165460646120809190612618565b6112cb846112be6015548a61145c90919063ffffffff16565b905060006120b86015546112cb6014548561145c90919063ffffffff16565b905060006120c683836119cf565b306000908152600860205260409020549091506120e39082611a11565b3060009081526008602052604080822092909255601e546001600160a01b0316815220546121119083611a11565b601e546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b16916000805160206126a4833981519152910160405180910390a3811561219257601e546040518381526001600160a01b03918216918a16906000805160206126a48339815191529060200160405180910390a35b61219c87846119cf565b98975050505050505050565b80356001600160a01b03811681146121bf57600080fd5b919050565b6000602082840312156121d657600080fd5b610bf2826121a8565b600080604083850312156121f257600080fd5b6121fb836121a8565b9150612209602084016121a8565b90509250929050565b600080600080600060a0868803121561222a57600080fd5b612233866121a8565b9450612241602087016121a8565b935061224f604087016121a8565b925061225d606087016121a8565b915061226b608087016121a8565b90509295509295909350565b60008060006060848603121561228c57600080fd5b612295846121a8565b92506122a3602085016121a8565b9150604084013590509250925092565b600080604083850312156122c657600080fd5b6122cf836121a8565b915060208301356122df81612695565b809150509250929050565b600080604083850312156122fd57600080fd5b612306836121a8565b946020939093013593505050565b60008060006040848603121561232957600080fd5b833567ffffffffffffffff8082111561234157600080fd5b818601915086601f83011261235557600080fd5b81358181111561236457600080fd5b8760208260051b850101111561237957600080fd5b6020928301955093505084013561238f81612695565b809150509250925092565b6000602082840312156123ac57600080fd5b8135610bf281612695565b6000602082840312156123c957600080fd5b8151610bf281612695565b600080604083850312156123e757600080fd5b823561230681612695565b60006020828403121561240457600080fd5b5035919050565b60006020828403121561241d57600080fd5b5051919050565b6000806040838503121561243757600080fd5b50508035926020909101359150565b60008060006060848603121561245b57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561248757600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c087890312156124b957600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b81811015612510578581018301518582016040015282016124f4565b81811115612522576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125bd5784516001600160a01b031683529383019391830191600101612598565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156125f1576125f1612669565b500190565b60008261261357634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561263257612632612669565b500290565b60008282101561264957612649612669565b500390565b600060001982141561266257612662612669565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b801515811461128757600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c369985dcb4123ecb73befa905e419c9cb3167cd2274335177d06c28d0dfd8c064736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c806377b54bad11610175578063a7e58675116100dc578063c6a1ce7711610095578063df20fd491161006f578063df20fd49146108b4578063f2fde38b146108d4578063f84ba65d146108f4578063f887ea401461091457600080fd5b8063c6a1ce771461081e578063d51ed1c81461084e578063dd62ed3e1461086e57600080fd5b8063a7e586751461075f578063a8aa1b3114610779578063a9059cbb14610799578063b2bdfa7b146107b9578063b46300ec146107d9578063b7593ad9146107ee57600080fd5b806386f6c3c11161012e57806386f6c3c114610692578063893d20e8146106b25780638a8c523c146106e45780638da5cb5b146106f9578063900ba33b1461071757806395d89b411461073157600080fd5b806377b54bad146105e657806378109e54146106065780637d1db4a51461061c5780637fc0bf391461063257806382bf293c1461065257806383f9d9fa1461067257600080fd5b80632b112e49116102195780635e04e4f8116101d25780635e04e4f81461051a578063658d4b7f1461053a5780636ce46bc31461055a5780636ddd17131461057a57806370a082311461059b578063715018a6146105d157600080fd5b80632b112e4914610469578063313ce5671461047e5780634f85a0c51461049a578063570636dc146104ba578063571ac8b0146104da5780635aa6a95f146104fa57600080fd5b806318abb6351161026b57806318abb635146103b15780631da1db5e146103d35780631df4ccfc146103f35780631eb0a95a14610409578063201e79911461042957806323b872dd1461044957600080fd5b80630445b667146102be57806306fdde03146102e757806308fd3d051461032b578063095ea7b31461035c5780631161ae391461037c57806318160ddd1461039c57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d460245481565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b506040805180820190915260128152711659585c8813d988151a1948149858989a5d60721b60208201525b6040516102de91906124e3565b34801561033757600080fd5b5060235461034c90600160a01b900460ff1681565b60405190151581526020016102de565b34801561036857600080fd5b5061034c6103773660046122ea565b610934565b34801561038857600080fd5b5061034c610397366004612424565b6109a1565b3480156103a857600080fd5b506005546102d4565b3480156103bd57600080fd5b506103d16103cc366004612212565b6109b5565b005b3480156103df57600080fd5b506103d16103ee3660046123f2565b610a47565b3480156103ff57600080fd5b506102d460155481565b34801561041557600080fd5b506103d161042436600461239a565b610ac5565b34801561043557600080fd5b506103d1610444366004612424565b610b02565b34801561045557600080fd5b5061034c610464366004612277565b610b37565b34801561047557600080fd5b506102d4610bf9565b34801561048a57600080fd5b50604051601281526020016102de565b3480156104a657600080fd5b506103d16104b5366004612314565b610c4b565b3480156104c657600080fd5b506103d16104d53660046123f2565b610cea565b3480156104e657600080fd5b5061034c6104f53660046121c4565b610d45565b34801561050657600080fd5b506103d16105153660046123f2565b610d53565b34801561052657600080fd5b506103d161053536600461239a565b610d91565b34801561054657600080fd5b506103d16105553660046122b3565b610dce565b34801561056657600080fd5b506103d1610575366004612446565b610e23565b34801561058657600080fd5b5060235461034c90600160a81b900460ff1681565b3480156105a757600080fd5b506102d46105b63660046121c4565b6001600160a01b031660009081526008602052604090205490565b3480156105dd57600080fd5b506103d1610e5e565b3480156105f257600080fd5b5061034c6106013660046122ea565b610ed2565b34801561061257600080fd5b506102d460075481565b34801561062857600080fd5b506102d460065481565b34801561063e57600080fd5b506103d161064d366004612314565b610fed565b34801561065e57600080fd5b506103d161066d3660046123f2565b611086565b34801561067e57600080fd5b506103d161068d3660046123f2565b6110e0565b34801561069e57600080fd5b506103d16106ad3660046124a0565b61112d565b3480156106be57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102de565b3480156106f057600080fd5b506103d16111f3565b34801561070557600080fd5b506000546001600160a01b03166106cc565b34801561072357600080fd5b50600c5461034c9060ff1681565b34801561073d57600080fd5b50604080518082019091526005815264244841524560d81b602082015261031e565b34801561076b57600080fd5b50600a5461034c9060ff1681565b34801561078557600080fd5b506023546106cc906001600160a01b031681565b3480156107a557600080fd5b5061034c6107b43660046122ea565b611232565b3480156107c557600080fd5b506000546106cc906001600160a01b031681565b3480156107e557600080fd5b506103d161123f565b3480156107fa57600080fd5b5061034c6108093660046121c4565b600d6020526000908152604090205460ff1681565b34801561082a57600080fd5b5061034c6108393660046121c4565b600b6020526000908152604090205460ff1681565b34801561085a57600080fd5b506102d46108693660046123f2565b61128a565b34801561087a57600080fd5b506102d46108893660046121df565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156108c057600080fd5b506103d16108cf3660046123d4565b6112d1565b3480156108e057600080fd5b506103d16108ef3660046121c4565b61131d565b34801561090057600080fd5b506103d161090f3660046122b3565b611407565b34801561092057600080fd5b506021546106cc906001600160a01b031681565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061098f9086815260200190565b60405180910390a35060015b92915050565b6000826109ad8361128a565b119392505050565b6000546001600160a01b031633146109e85760405162461bcd60e51b81526004016109df90612538565b60405180910390fd5b601a80546001600160a01b03199081166001600160a01b0397881617909155601b8054821695871695909517909455601c8054851693861693909317909255601e80548416918516919091179055601d80549092169216919091179055565b6000546001600160a01b03163314610a715760405162461bcd60e51b81526004016109df90612538565b601b5447906001600160a01b03166108fc6064610a8e8585612618565b610a9891906125f6565b6040518115909202916000818181858888f19350505050158015610ac0573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610aef5760405162461bcd60e51b81526004016109df90612538565b600a805460ff1916911515919091179055565b6000546001600160a01b03163314610b2c5760405162461bcd60e51b81526004016109df90612538565b601f91909155602055565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610be4576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610bbf91849061151d565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610bef848484611557565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610c46906003546001600160a01b0316600090815260086020526040902054610c4090600554906119cf565b906119cf565b905090565b6000546001600160a01b03163314610c755760405162461bcd60e51b81526004016109df90612538565b60005b82811015610ce45781600d6000868685818110610c9757610c9761267f565b9050602002016020810190610cac91906121c4565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610cdd8161264e565b9050610c78565b50505050565b336000908152600d602052604090205460ff16610d0657600080fd5b6103e8600554610d1691906125f6565b6006541015610d2457600080fd5b6103e881600554610d359190612618565b610d3f91906125f6565b60065550565b600061099b82600019610934565b6000546001600160a01b03163314610d7d5760405162461bcd60e51b81526004016109df90612538565b610d8b81633b9aca00612618565b60265550565b6000546001600160a01b03163314610dbb5760405162461bcd60e51b81526004016109df90612538565b600c805460ff1916911515919091179055565b6000546001600160a01b03163314610df85760405162461bcd60e51b81526004016109df90612538565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e4d5760405162461bcd60e51b81526004016109df90612538565b601791909155601891909155601955565b6000546001600160a01b03163314610e885760405162461bcd60e51b81526004016109df90612538565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336000908152600d602052604081205460ff16610eee57600080fd5b81610f6d576040516370a0823160e01b81523060048201526001600160a01b038416906370a082319060240160206040518083038186803b158015610f3257600080fd5b505afa158015610f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a919061240b565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b158015610fb557600080fd5b505af1158015610fc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf291906123b7565b6000546001600160a01b031633146110175760405162461bcd60e51b81526004016109df90612538565b60005b82811015610ce45781600b60008686858181106110395761103961267f565b905060200201602081019061104e91906121c4565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561107f8161264e565b905061101a565b336000908152600d602052604090205460ff166110a257600080fd5b6103e86005546110b291906125f6565b60075410156110c057600080fd5b6064816005546110d09190612618565b6110da91906125f6565b60075550565b6000546001600160a01b0316331461110a5760405162461bcd60e51b81526004016109df90612538565b6103e860055461111a91906125f6565b600654101561112857600080fd5b600655565b6000546001600160a01b031633146111575760405162461bcd60e51b81526004016109df90612538565b6010869055601385905560118490556012839055601482905561118882611182858188818c8c611a11565b90611a11565b601555601681905561119b6002826125f6565b601554106111eb5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530250000000060448201526064016109df565b505050505050565b6000546001600160a01b0316331461121d5760405162461bcd60e51b81526004016109df90612538565b6023805460ff60a01b1916600160a01b179055565b6000610bf2338484611557565b336000908152600d602052604090205460ff1661125b57600080fd5b60405133904780156108fc02916000818181858888f19350505050158015611287573d6000803e3d6000fd5b50565b600061099b611297610bf9565b6023546001600160a01b03166000908152600860205260409020546112cb906112c4906002905b9061145c565b859061145c565b906114db565b6000546001600160a01b031633146112fb5760405162461bcd60e51b81526004016109df90612538565b60238054921515600160a81b0260ff60a81b1990931692909217909155602455565b6000546001600160a01b031633146113475760405162461bcd60e51b81526004016109df90612538565b6001600160a01b0381166113ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109df565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114315760405162461bcd60e51b81526004016109df90612538565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b60008261146b5750600061099b565b60006114778385612618565b90508261148485836125f6565b14610bf25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109df565b6000610bf283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a70565b600081848411156115415760405162461bcd60e51b81526004016109df91906124e3565b50600061154e8486612637565b95945050505050565b60255460009060ff161561157757611570848484611a9e565b9050610bf2565b6001600160a01b03841660009081526001602052604090205460ff161580156115b957506001600160a01b03831660009081526001602052604090205460ff16155b1561167357602354600160a01b900460ff1661160e5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109df565b600c5460ff1615611673576001600160a01b0383166000908152600d602052604090205460ff166116735760405162461bcd60e51b815260206004820152600f60248201526e139bdd0815da1a5d195b1a5cdd1959608a1b60448201526064016109df565b600a5460ff16156116d7576001600160a01b0384166000908152600b602052604090205460ff16156116d75760405162461bcd60e51b815260206004820152600d60248201526c125cd89b1858dadb1a5cdd1959609a1b60448201526064016109df565b6026543a101580156116f757506023546001600160a01b03848116911614155b15611720576001600160a01b0383166000908152600b60205260409020805460ff191660011790555b6001600160a01b03841660009081526001602052604090205460ff1615801561175257506001600160a01b0383163014155b801561176c57506003546001600160a01b03848116911614155b801561178657506023546001600160a01b03848116911614155b80156117a05750601e546001600160a01b03848116911614155b80156117ba5750601b546001600160a01b03848116911614155b80156117df57506001600160a01b0383166000908152600f602052604090205460ff16155b15611880576001600160a01b03831660009081526008602052604090205460075461180a84836125de565b111561187e5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016109df565b505b61188a8483611b72565b611892611bdf565b1561189f5761189f611c35565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600890915291909120546118f191849061151d565b6001600160a01b038516600090815260086020908152604080832093909355600e90529081205460ff168061193e57506001600160a01b0384166000908152600e602052604090205460ff165b6119525761194d85848661202b565b611954565b825b6001600160a01b03851660009081526008602052604090205490915061197a9082611a11565b6001600160a01b0380861660008181526008602052604090819020939093559151908716906000805160206126a4833981519152906119bc9085815260200190565b60405180910390a3506001949350505050565b6000610bf283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061151d565b600080611a1e83856125de565b905083811015610bf25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109df565b60008183611a915760405162461bcd60e51b81526004016109df91906124e3565b50600061154e84866125f6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611aef91849061151d565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611b1e9083611a11565b6001600160a01b0380851660008181526008602052604090819020939093559151908616906000805160206126a483398151915290611b609086815260200190565b60405180910390a35060019392505050565b60065481111580611b9b57506001600160a01b0382166000908152600f602052604090205460ff165b611bdb5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109df565b5050565b6023546000906001600160a01b03163314801590611c00575060255460ff16155b8015611c155750602354600160a81b900460ff165b8015610c4657505060245430600090815260086020526040902054101590565b6025805460ff19166001179055601f54602054600091611c54916109a1565b611c6057601054611c63565b60005b90506000611c8760026112cb6015546112cb8660245461145c90919063ffffffff16565b90506000611ca0826024546119cf90919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611cda57611cda61267f565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611d0b57611d0b61267f565b6001600160a01b03928316602091820292909201015260215460405163791ac94760e01b81524792919091169063791ac94790611d5590869060009087903090429060040161256d565b600060405180830381600087803b158015611d6f57600080fd5b505af1158015611d83573d6000803e3d6000fd5b505050506000611d9c82476119cf90919063ffffffff16565b90506000611db7611dae8860026114db565b601554906119cf565b90506000611dcc60026112cb8481878d61145c565b90506000611de9836112cb6011548761145c90919063ffffffff16565b90506000611e06846112cb6013548861145c90919063ffffffff16565b90506000611e23856112cb6012548961145c90919063ffffffff16565b601b546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611e75576040519150601f19603f3d011682016040523d82523d6000602084013e611e7a565b606091505b5050601c546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611eca576040519150601f19603f3d011682016040523d82523d6000602084013e611ecf565b606091505b5050601d546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611f1f576040519150601f19603f3d011682016040523d82523d6000602084013e611f24565b606091505b5060009250508b15905061201357602154601a5460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b158015611f9d57600080fd5b505af1158015611fb1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fd69190612472565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506025805460ff1916905550505050505050505050565b601954602354600091906001600160a01b0384811691161415612051575060175461206c565b6023546001600160a01b038681169116141561206c57506018545b600061209960165460646120809190612618565b6112cb846112be6015548a61145c90919063ffffffff16565b905060006120b86015546112cb6014548561145c90919063ffffffff16565b905060006120c683836119cf565b306000908152600860205260409020549091506120e39082611a11565b3060009081526008602052604080822092909255601e546001600160a01b0316815220546121119083611a11565b601e546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b16916000805160206126a4833981519152910160405180910390a3811561219257601e546040518381526001600160a01b03918216918a16906000805160206126a48339815191529060200160405180910390a35b61219c87846119cf565b98975050505050505050565b80356001600160a01b03811681146121bf57600080fd5b919050565b6000602082840312156121d657600080fd5b610bf2826121a8565b600080604083850312156121f257600080fd5b6121fb836121a8565b9150612209602084016121a8565b90509250929050565b600080600080600060a0868803121561222a57600080fd5b612233866121a8565b9450612241602087016121a8565b935061224f604087016121a8565b925061225d606087016121a8565b915061226b608087016121a8565b90509295509295909350565b60008060006060848603121561228c57600080fd5b612295846121a8565b92506122a3602085016121a8565b9150604084013590509250925092565b600080604083850312156122c657600080fd5b6122cf836121a8565b915060208301356122df81612695565b809150509250929050565b600080604083850312156122fd57600080fd5b612306836121a8565b946020939093013593505050565b60008060006040848603121561232957600080fd5b833567ffffffffffffffff8082111561234157600080fd5b818601915086601f83011261235557600080fd5b81358181111561236457600080fd5b8760208260051b850101111561237957600080fd5b6020928301955093505084013561238f81612695565b809150509250925092565b6000602082840312156123ac57600080fd5b8135610bf281612695565b6000602082840312156123c957600080fd5b8151610bf281612695565b600080604083850312156123e757600080fd5b823561230681612695565b60006020828403121561240457600080fd5b5035919050565b60006020828403121561241d57600080fd5b5051919050565b6000806040838503121561243757600080fd5b50508035926020909101359150565b60008060006060848603121561245b57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561248757600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c087890312156124b957600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b81811015612510578581018301518582016040015282016124f4565b81811115612522576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125bd5784516001600160a01b031683529383019391830191600101612598565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156125f1576125f1612669565b500190565b60008261261357634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561263257612632612669565b500290565b60008282101561264957612649612669565b500390565b600060001982141561266257612662612669565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b801515811461128757600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c369985dcb4123ecb73befa905e419c9cb3167cd2274335177d06c28d0dfd8c064736f6c63430008070033

Deployed Bytecode Sourcemap

4978:14898:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6865:54;;;;;;;;;;;;;;;;;;;11571:25:1;;;11559:2;11544:18;6865:54:0;;;;;;;;8545:80;;;;;;;;;;-1:-1:-1;8617:5:0;;;;;;;;;;;;-1:-1:-1;;;8617:5:0;;;;8545:80;;;;;;;:::i;6784:31::-;;;;;;;;;;-1:-1:-1;6784:31:0;;;;-1:-1:-1;;;6784:31:0;;;;;;;;;6875:14:1;;6868:22;6850:41;;6838:2;6823:18;6784:31:0;6710:187:1;8967:216:0;;;;;;;;;;-1:-1:-1;8967:216:0;;;;;:::i;:::-;;:::i;19652:150::-;;;;;;;;;;-1:-1:-1;19652:150:0;;;;;:::i;:::-;;:::i;8275:88::-;;;;;;;;;;-1:-1:-1;8348:12:0;;8275:88;;18525:437;;;;;;;;;;-1:-1:-1;18525:437:0;;;;;:::i;:::-;;:::i;:::-;;14026:233;;;;;;;;;;-1:-1:-1;14026:233:0;;;;;:::i;:::-;;:::i;6143:89::-;;;;;;;;;;;;;;;;17052:103;;;;;;;;;;-1:-1:-1;17052:103:0;;;;;:::i;:::-;;:::i;19133:182::-;;;;;;;;;;-1:-1:-1;19133:182:0;;;;;:::i;:::-;;:::i;9485:370::-;;;;;;;;;;-1:-1:-1;9485:370:0;;;;;:::i;:::-;;:::i;19327:142::-;;;;;;;;;;;;;:::i;8369:80::-;;;;;;;;;;-1:-1:-1;8369:80:0;;5336:2;12987:36:1;;12975:2;12960:18;8369:80:0;12845:184:1;17484:200:0;;;;;;;;;;-1:-1:-1;17484:200:0;;;;;:::i;:::-;;:::i;10145:253::-;;;;;;;;;;-1:-1:-1;10145:253:0;;;;;:::i;:::-;;:::i;9191:122::-;;;;;;;;;;-1:-1:-1;9191:122:0;;;;;:::i;:::-;;:::i;15057:112::-;;;;;;;;;;-1:-1:-1;15057:112:0;;;;;:::i;:::-;;:::i;17163:91::-;;;;;;;;;;-1:-1:-1;17163:91:0;;;;;:::i;:::-;;:::i;17692:119::-;;;;;;;;;;-1:-1:-1;17692:119:0;;;;;:::i;:::-;;:::i;14722:210::-;;;;;;;;;;-1:-1:-1;14722:210:0;;;;;:::i;:::-;;:::i;6828:30::-;;;;;;;;;;-1:-1:-1;6828:30:0;;;;-1:-1:-1;;;6828:30:0;;;;;;8715:105;;;;;;;;;;-1:-1:-1;8715:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8799:18:0;8781:7;8799:18;;;:9;:18;;;;;;;8715:105;3035:148;;;;;;;;;;;;;:::i;14413:301::-;;;;;;;;;;-1:-1:-1;14413:301:0;;;;;:::i;:::-;;:::i;5470:61::-;;;;;;;;;;;;;;;;5405:58;;;;;;;;;;;;;;;;17262:214;;;;;;;;;;-1:-1:-1;17262:214:0;;;;;:::i;:::-;;:::i;9867:270::-;;;;;;;;;;-1:-1:-1;9867:270:0;;;;;:::i;:::-;;:::i;10412:158::-;;;;;;;;;;-1:-1:-1;10412:158:0;;;;;:::i;:::-;;:::i;17954:563::-;;;;;;;;;;-1:-1:-1;17954:563:0;;;;;:::i;:::-;;:::i;8631:78::-;;;;;;;;;;-1:-1:-1;8683:7:0;2886:6;-1:-1:-1;;;;;2886:6:0;8631:78;;;-1:-1:-1;;;;;5775:32:1;;;5757:51;;5745:2;5730:18;8631:78:0;5611:203:1;14963:79:0;;;;;;;;;;;;;:::i;2821:::-;;;;;;;;;;-1:-1:-1;2859:7:0;2886:6;-1:-1:-1;;;;;2886:6:0;2821:79;;5753:28;;;;;;;;;;-1:-1:-1;5753:28:0;;;;;;;;8455:84;;;;;;;;;;-1:-1:-1;8529:7:0;;;;;;;;;;;;-1:-1:-1;;;8529:7:0;;;;8455:84;;5655:34;;;;;;;;;;-1:-1:-1;5655:34:0;;;;;;;;6752:19;;;;;;;;;;-1:-1:-1;6752:19:0;;;;-1:-1:-1;;;;;6752:19:0;;;9321:156;;;;;;;;;;-1:-1:-1;9321:156:0;;;;;:::i;:::-;;:::i;2441:21::-;;;;;;;;;;-1:-1:-1;2441:21:0;;;;-1:-1:-1;;;;;2441:21:0;;;14267:138;;;;;;;;;;;;;:::i;5788:41::-;;;;;;;;;;-1:-1:-1;5788:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5696:48;;;;;;;;;;-1:-1:-1;5696:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19477:167;;;;;;;;;;-1:-1:-1;19477:167:0;;;;;:::i;:::-;;:::i;8826:133::-;;;;;;;;;;-1:-1:-1;8826:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8928:19:0;;;8910:7;8928:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8826:133;18970:155;;;;;;;;;;-1:-1:-1;18970:155:0;;;;;:::i;:::-;;:::i;3191:244::-;;;;;;;;;;-1:-1:-1;3191:244:0;;;;;:::i;:::-;;:::i;17819:127::-;;;;;;;;;;-1:-1:-1;17819:127:0;;;;;:::i;:::-;;:::i;6682:24::-;;;;;;;;;;-1:-1:-1;6682:24:0;;;;-1:-1:-1;;;;;6682:24:0;;;8967:216;9071:10;9042:4;9059:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9059:32:0;;;;;;;;;;:41;;;9116:37;9042:4;;9059:32;;9116:37;;;;9094:6;11571:25:1;;11559:2;11544:18;;11425:177;9116:37:0;;;;;;;;-1:-1:-1;9171:4:0;8967:216;;;;;:::o;19652:150::-;19732:4;19788:6;19756:29;19776:8;19756:19;:29::i;:::-;:38;;19652:150;-1:-1:-1;;;19652:150:0:o;18525:437::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;;;;;;;;;18720:21:::1;:46:::0;;-1:-1:-1;;;;;;18720:46:0;;::::1;-1:-1:-1::0;;;;;18720:46:0;;::::1;;::::0;;;18777:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18832:14:::1;:32:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18875:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;18920:15:::1;:34:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;18525:437::o;14026:233::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;14185:20:::1;::::0;14145:21:::1;::::0;-1:-1:-1;;;;;14185:20:0::1;14177:74;14247:3;14216:28;14228:16:::0;14145:21;14216:28:::1;:::i;:::-;:34;;;;:::i;:::-;14177:74;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14098:161;14026:233:::0;:::o;17052:103::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;17122:15:::1;:25:::0;;-1:-1:-1;;17122:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17052:103::o;19133:182::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;19230:15:::1;:25:::0;;;;19266:26:::1;:41:::0;19133:182::o;9485:370::-;-1:-1:-1;;;;;9605:19:0;;9585:4;9605:19;;;:11;:19;;;;;;;;9625:10;9605:31;;;;;;;;-1:-1:-1;;9605:52:0;9602:186;;9707:69;;;;;;;;;;;-1:-1:-1;;;9707:69:0;;;;;;;;-1:-1:-1;;;;;9707:19:0;;-1:-1:-1;9707:19:0;;;:11;:19;;;;;9727:10;9707:31;;;;;;;;;;:69;;9743:6;;9707:35;:69::i;:::-;-1:-1:-1;;;;;9673:19:0;;;;;;:11;:19;;;;;;;;9693:10;9673:31;;;;;;;:103;9602:186;9807:40;9821:6;9829:9;9840:6;9807:13;:40::i;:::-;9800:47;;9485:370;;;;;;:::o;19327:142::-;19455:4;;-1:-1:-1;;;;;19455:4:0;19380:7;8799:18;;;:9;:18;;;;;;19407:54;;19434:4;;-1:-1:-1;;;;;19434:4:0;8781:7;8799:18;;;:9;:18;;;;;;19407:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;19400:61;;19327:142;:::o;17484:200::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;17581:9:::1;17576:101;17592:20:::0;;::::1;17576:101;;;17659:6;17634:8;:22;17643:9;;17653:1;17643:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17634:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17634:22:0;:31;;-1:-1:-1;;17634:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17614:3:::1;::::0;::::1;:::i;:::-;;;17576:101;;;;17484:200:::0;;;:::o;10145:253::-;10227:10;10218:20;;;;:8;:20;;;;;;;;10210:29;;;;;;10289:4;10274:12;;:19;;;;:::i;:::-;10258:12;;:35;;10250:44;;;;;;10386:4;10369:12;10354;;:27;;;;:::i;:::-;10353:37;;;;:::i;:::-;10338:12;:52;-1:-1:-1;10145:253:0:o;9191:122::-;9246:4;9270:35;9278:7;-1:-1:-1;;9270:7:0;:35::i;15057:112::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;15138:16:::1;:7:::0;15148:6:::1;15138:16;:::i;:::-;15129:6;:25:::0;-1:-1:-1;15057:112:0:o;17163:91::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;17226:8:::1;:18:::0;;-1:-1:-1;;17226:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17163:91::o;17692:119::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17775:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;17775:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17692:119::o;14722:210::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;14821:14:::1;:22:::0;;;;14854:13:::1;:20:::0;;;;14885:18:::1;:27:::0;14722:210::o;3035:148::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;3142:1:::1;3126:6:::0;;3105:40:::1;::::0;-1:-1:-1;;;;;3126:6:0;;::::1;::::0;3105:40:::1;::::0;3142:1;;3105:40:::1;3173:1;3156:19:::0;;-1:-1:-1;;;;;;3156:19:0::1;::::0;;3035:148::o;14413:301::-;14526:10;14492:4;14517:20;;;:8;:20;;;;;;;;14509:29;;;;;;14549:11;14546:95;;14585:44;;-1:-1:-1;;;14585:44:0;;14623:4;14585:44;;;5757:51:1;-1:-1:-1;;;;;14585:29:0;;;;;5730:18:1;;14585:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14576:53;;14546:95;14658:48;;-1:-1:-1;;;14658:48:0;;14687:10;14658:48;;;5993:51:1;6060:18;;;6053:34;;;-1:-1:-1;;;;;14658:28:0;;;;;5966:18:1;;14658:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17262:214::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;17366:9:::1;17361:108;17377:20:::0;;::::1;17361:108;;;17451:6;17419:15;:29;17435:9;;17445:1;17435:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17419:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17419:29:0;:38;;-1:-1:-1;;17419:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17399:3:::1;::::0;::::1;:::i;:::-;;;17361:108;;9867:270:::0;9955:10;9946:20;;;;:8;:20;;;;;;;;9938:29;;;;;;10020:4;10005:12;;:19;;;;:::i;:::-;9986:15;;:38;;9978:47;;;;;;10108:3;10089:14;10074:12;;:29;;;;:::i;:::-;10073:38;;;;:::i;:::-;10055:15;:56;-1:-1:-1;9867:270:0:o;10412:158::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;10525:4:::1;10510:12;;:19;;;;:::i;:::-;10494:12;;:35;;10486:44;;;::::0;::::1;;10541:12;:21:::0;10412:158::o;17954:563::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;18125:12:::1;:28:::0;;;18164:7:::1;:18:::0;;;18193:12:::1;:28:::0;;;18232:6:::1;:16:::0;;;18259:7:::1;:18:::0;;;18299:73:::1;18269:8:::0;18299:59:::1;18241:7:::0;18299:59;18208:13;18299:59;18140:13;18174:8;18299:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:73::-;18288:8;:84:::0;18383:14:::1;:32:::0;;;18445:16:::1;18460:1;18400:15:::0;18445:16:::1;:::i;:::-;18434:8;;:27;18426:68;;;::::0;-1:-1:-1;;;18426:68:0;;8278:2:1;18426:68:0::1;::::0;::::1;8260:21:1::0;8317:2;8297:18;;;8290:30;8356;8336:18;;;8329:58;8404:18;;18426:68:0::1;8076:352:1::0;18426:68:0::1;17954:563:::0;;;;;;:::o;14963:79::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;15016:11:::1;:18:::0;;-1:-1:-1;;;;15016:18:0::1;-1:-1:-1::0;;;15016:18:0::1;::::0;;14963:79::o;9321:156::-;9401:4;9425:44;9439:10;9451:9;9462:6;9425:13;:44::i;14267:138::-;14321:10;14312:20;;;;:8;:20;;;;;;;;14304:29;;;;;;14344:51;;14352:10;;14373:21;14344:51;;;;;;;;;14373:21;14352:10;14344:51;;;;;;;;;;;;;;;;;;;;;14267:138::o;19477:167::-;19545:7;19572:64;19613:22;:20;:22::i;:::-;19595:4;;-1:-1:-1;;;;;19595:4:0;8781:7;8799:18;;;:9;:18;;;;;;19572:36;;19585:22;;19605:1;;19585:15;:19;;:22::i;:::-;19572:8;;:12;:36::i;:::-;:40;;:64::i;18970:155::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;19061:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;19061:22:0::1;-1:-1:-1::0;;;;19061:22:0;;::::1;::::0;;;::::1;::::0;;;19094:13:::1;:23:::0;18970:155::o;3191:244::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3280:22:0;::::1;3272:73;;;::::0;-1:-1:-1;;;3272:73:0;;8635:2:1;3272:73:0::1;::::0;::::1;8617:21:1::0;8674:2;8654:18;;;8647:30;8713:34;8693:18;;;8686:62;-1:-1:-1;;;8764:18:1;;;8757:36;8810:19;;3272:73:0::1;8433:402:1::0;3272:73:0::1;3382:6;::::0;;3361:38:::1;::::0;-1:-1:-1;;;;;3361:38:0;;::::1;::::0;3382:6;::::1;::::0;3361:38:::1;::::0;::::1;3410:6;:17:::0;;-1:-1:-1;;;;;;3410:17:0::1;-1:-1:-1::0;;;;;3410:17:0;;;::::1;::::0;;;::::1;::::0;;3191:244::o;17819:127::-;2948:6;;-1:-1:-1;;;;;2948:6:0;2258:10;2948:22;2940:67;;;;-1:-1:-1;;;2940:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17906:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;17906:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17819:127::o;620:250::-;678:7;702:6;698:47;;-1:-1:-1;732:1:0;725:8;;698:47;757:9;769:5;773:1;769;:5;:::i;:::-;757:17;-1:-1:-1;802:1:0;793:5;797:1;757:17;793:5;:::i;:::-;:10;785:56;;;;-1:-1:-1;;;785:56:0;;9747:2:1;785:56:0;;;9729:21:1;9786:2;9766:18;;;9759:30;9825:34;9805:18;;;9798:62;-1:-1:-1;;;9876:18:1;;;9869:31;9917:19;;785:56:0;9545:397:1;876:132:0;934:7;961:39;965:1;968;961:39;;;;;;;;;;;;;;;;;:3;:39::i;422:192::-;508:7;544:12;536:6;;;;528:29;;;;-1:-1:-1;;;528:29:0;;;;;;;;:::i;:::-;-1:-1:-1;568:9:0;580:5;584:1;580;:5;:::i;:::-;568:17;422:192;-1:-1:-1;;;;;422:192:0:o;10578:1647::-;10690:6;;10670:4;;10690:6;;10687:63;;;10706:41;10721:6;10729:9;10740:6;10706:14;:41::i;:::-;10699:48;;;;10687:63;-1:-1:-1;;;;;10766:22:0;;;;;;:14;:22;;;;;;;;10765:23;:53;;;;-1:-1:-1;;;;;;10793:25:0;;;;;;:14;:25;;;;;;;;10792:26;10765:53;10762:242;;;10842:11;;-1:-1:-1;;;10842:11:0;;;;10834:43;;;;-1:-1:-1;;;10834:43:0;;9398:2:1;10834:43:0;;;9380:21:1;9437:2;9417:18;;;9410:30;-1:-1:-1;;;9456:18:1;;;9449:50;9516:18;;10834:43:0;9196:344:1;10834:43:0;10893:8;;;;10890:103;;;-1:-1:-1;;;;;10929:19:0;;;;;;:8;:19;;;;;;;;10921:46;;;;-1:-1:-1;;;10921:46:0;;11283:2:1;10921:46:0;;;11265:21:1;11322:2;11302:18;;;11295:30;-1:-1:-1;;;11341:18:1;;;11334:45;11396:18;;10921:46:0;11081:339:1;10921:46:0;11041:15;;;;11038:99;;;-1:-1:-1;;;;;11081:23:0;;;;;;:15;:23;;;;;;;;11080:24;11072:49;;;;-1:-1:-1;;;11072:49:0;;10941:2:1;11072:49:0;;;10923:21:1;10980:2;10960:18;;;10953:30;-1:-1:-1;;;10999:18:1;;;10992:43;11052:18;;11072:49:0;10739:337:1;11072:49:0;11168:6;;11153:11;:21;;:42;;;;-1:-1:-1;11191:4:0;;-1:-1:-1;;;;;11178:17:0;;;11191:4;;11178:17;;11153:42;11149:108;;;-1:-1:-1;;;;;11212:26:0;;;;;;:15;:26;;;;;:33;;-1:-1:-1;;11212:33:0;11241:4;11212:33;;;11149:108;-1:-1:-1;;;;;11274:22:0;;;;;;:14;:22;;;;;;;;11273:23;:53;;;;-1:-1:-1;;;;;;11300:26:0;;11321:4;11300:26;;11273:53;:84;;;;-1:-1:-1;11352:4:0;;-1:-1:-1;;;;;11331:26:0;;;11352:4;;11331:26;;11273:84;:105;;;;-1:-1:-1;11374:4:0;;-1:-1:-1;;;;;11361:17:0;;;11374:4;;11361:17;;11273:105;:137;;;;-1:-1:-1;11395:15:0;;-1:-1:-1;;;;;11382:28:0;;;11395:15;;11382:28;;11273:137;:174;;;;-1:-1:-1;11427:20:0;;-1:-1:-1;;;;;11414:33:0;;;11427:20;;11414:33;;11273:174;:205;;;;-1:-1:-1;;;;;;11452:26:0;;;;;;:15;:26;;;;;;;;11451:27;11273:205;11269:397;;;-1:-1:-1;;;;;8799:18:0;;11494;8799;;;:9;:18;;;;;;11583:15;;11559:19;11572:6;8799:18;11559:19;:::i;:::-;11558:40;;11550:114;;;;-1:-1:-1;;;11550:114:0;;10510:2:1;11550:114:0;;;10492:21:1;10549:2;10529:18;;;10522:30;10588:34;10568:18;;;10561:62;10659:32;10639:18;;;10632:60;10709:19;;11550:114:0;10308:426:1;11550:114:0;11479:187;11269:397;11719:28;11732:6;11740;11719:12;:28::i;:::-;11764:16;:14;:16::i;:::-;11761:35;;;11783:10;:8;:10::i;:::-;11876:53;;;;;;;;;;;-1:-1:-1;;;11876:53:0;;;;;;;;-1:-1:-1;;;;;11876:17:0;;-1:-1:-1;11876:17:0;;;:9;:17;;;;;;;;:53;;11898:6;;11876:21;:53::i;:::-;-1:-1:-1;;;;;11856:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11968:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;11991:22:0;;;;;;:11;:22;;;;;;;;11968:45;11967:93;;12026:34;12034:6;12042;12050:9;12026:7;:34::i;:::-;11967:93;;;12017:6;11967:93;-1:-1:-1;;;;;12094:20:0;;;;;;:9;:20;;;;;;11942:118;;-1:-1:-1;12094:40:0;;11942:118;12094:24;:40::i;:::-;-1:-1:-1;;;;;12071:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12152:43;;;;;;-1:-1:-1;;;;;;;;;;;12152:43:0;;;12180:14;11571:25:1;;11559:2;11544:18;;11425:177;12152:43:0;;;;;;;;-1:-1:-1;12213:4:0;;10578:1647;-1:-1:-1;;;;10578:1647:0:o;280:136::-;338:7;365:43;369:1;372;365:43;;;;;;;;;;;;;;;;;:3;:43::i;93:181::-;151:7;;183:5;187:1;183;:5;:::i;:::-;171:17;;212:1;207;:6;;199:46;;;;-1:-1:-1;;;199:46:0;;9042:2:1;199:46:0;;;9024:21:1;9081:2;9061:18;;;9054:30;9120:29;9100:18;;;9093:57;9167:18;;199:46:0;8840:351:1;1014:189:0;1100:7;1135:12;1128:5;1120:28;;;;-1:-1:-1;;;1120:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1159:9:0;1171:5;1175:1;1171;:5;:::i;12237:330::-;12367:53;;;;;;;;;;;-1:-1:-1;;;12367:53:0;;;;;;;;-1:-1:-1;;;;;12367:17:0;;12330:4;12367:17;;;:9;:17;;;;;;;:53;;12389:6;;12367:21;:53::i;:::-;-1:-1:-1;;;;;12347:17:0;;;;;;;:9;:17;;;;;;:73;;;;12454:20;;;;;;;:32;;12479:6;12454:24;:32::i;:::-;-1:-1:-1;;;;;12431:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12502:35;;;;;;-1:-1:-1;;;;;;;;;;;12502:35:0;;;12530:6;11571:25:1;;11559:2;11544:18;;11425:177;12502:35:0;;;;;;;;-1:-1:-1;12555:4:0;12237:330;;;;;:::o;12575:166::-;12672:12;;12662:6;:22;;:49;;;-1:-1:-1;;;;;;12688:23:0;;;;;;:15;:23;;;;;;;;12662:49;12654:79;;;;-1:-1:-1;;;12654:79:0;;7932:2:1;12654:79:0;;;7914:21:1;7971:2;7951:18;;;7944:30;-1:-1:-1;;;7990:18:1;;;7983:47;8047:18;;12654:79:0;7730:341:1;12654:79:0;12575:166;;:::o;13821:197::-;13908:4;;13870;;-1:-1:-1;;;;;13908:4:0;13894:10;:18;;;;:38;;-1:-1:-1;13926:6:0;;;;13925:7;13894:38;:62;;;;-1:-1:-1;13945:11:0;;-1:-1:-1;;;13945:11:0;;;;13894:62;:116;;;;-1:-1:-1;;13997:13:0;;13987:4;13969:24;;;;:9;:24;;;;;;:41;;;13821:197::o;15183:1861::-;6967:6;:13;;-1:-1:-1;;6967:13:0;6976:4;6967:13;;;15278:15:::1;::::0;15295:26:::1;::::0;6967:6;;15262:60:::1;::::0;:15:::1;:60::i;:::-;:79;;15329:12;;15262:79;;;15325:1;15262:79;15232:109;;15352:23;15378:59;15435:1;15378:52;15421:8;;15378:38;15396:19;15378:13;;:17;;:38;;;;:::i;:59::-;15352:85;;15448:20;15471:34;15489:15;15471:13;;:17;;:34;;;;:::i;:::-;15542:16;::::0;;15556:1:::1;15542:16:::0;;;;;::::1;::::0;;15448:57;;-1:-1:-1;15518:21:0::1;::::0;15542:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15542:16:0::1;15518:40;;15587:4;15569;15574:1;15569:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15569:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15613:4:::1;::::0;15603:7;;15613:4;::::1;::::0;15603;;15613;;15603:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;15603:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;15688:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;15688:188:0;;15654:21:::1;::::0;15688:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;15760:12;;15630:21:::1;::::0;15803:4;;15830::::1;::::0;15850:15:::1;::::0;15688:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15889:17;15909:40;15935:13;15909:21;:25;;:40;;;;:::i;:::-;15889:60:::0;-1:-1:-1;15962:19:0::1;15984:40;15997:26;:19:::0;16021:1:::1;15997:23;:26::i;:::-;15984:8;::::0;;:12:::1;:40::i;:::-;15962:62:::0;-1:-1:-1;16045:26:0::1;16074:58;16130:1;16074:51;15962:62:::0;16074:51;:9;16088:19;16074:13:::1;:34::i;:58::-;16045:87;;16143:26;16172:44;16204:11;16172:27;16186:12;;16172:9;:13;;:27;;;;:::i;:44::-;16143:73;;16227:21;16251:39;16278:11;16251:22;16265:7;;16251:9;:13;;:22;;;;:::i;:39::-;16227:63;;16301:20;16324:38;16350:11;16324:21;16338:6;;16324:9;:13;;:21;;;;:::i;:38::-;16404:20;::::0;16396:65:::1;::::0;16301:61;;-1:-1:-1;16376:15:0::1;::::0;-1:-1:-1;;;;;16404:20:0;;::::1;::::0;16438:18;;16376:15;16396:65;16376:15;16396:65;16438:18;16404:20;16396:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16496:14:0::1;::::0;16488:53:::1;::::0;16375:86;;-1:-1:-1;;;;;;16496:14:0::1;::::0;16524:12;;16488:53:::1;::::0;;;16524:12;16496:14;16488:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16576:15:0::1;::::0;16568:55:::1;::::0;16472:69;;-1:-1:-1;;;;;;16576:15:0::1;::::0;16605:13;;16568:55:::1;::::0;;;16605:13;16576:15;16568:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16657:5:0::1;::::0;-1:-1:-1;;16678:19:0;;;-1:-1:-1;16675:362:0::1;;16713:6;::::0;16887:21:::1;::::0;16713:244:::1;::::0;-1:-1:-1;;;16713:244:0;;16789:4:::1;16713:244;::::0;::::1;6439:34:1::0;6489:18;;;6482:34;;;16713:6:0::1;6532:18:1::0;;;6525:34;;;6575:18;;;6568:34;-1:-1:-1;;;;;16887:21:0;;::::1;6618:19:1::0;;;6611:44;16927:15:0::1;6671:19:1::0;;;6664:35;16713:6:0;::::1;::::0;:22:::1;::::0;16743:18;;6373:19:1;;16713:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16977:48:0::1;::::0;;12766:25:1;;;12822:2;12807:18;;12800:34;;;16977:48:0::1;::::0;-1:-1:-1;12739:18:1;16977:48:0::1;;;;;;;16675:362;-1:-1:-1::0;;6985:6:0;:14;;-1:-1:-1;;6985:14:0;;;-1:-1:-1;;;;;;;;;;15183:1861:0:o;12871:942::-;13008:18;;13055:4;;12957:7;;13008:18;-1:-1:-1;;;;;13042:17:0;;;13055:4;;13042:17;13039:154;;;-1:-1:-1;13089:14:0;;13039:154;;;13134:4;;-1:-1:-1;;;;;13124:14:0;;;13134:4;;13124:14;13121:72;;;-1:-1:-1;13168:13:0;;13121:72;13205:17;13225:62;13266:14;;13283:3;13266:20;;;;:::i;:::-;13225:36;13250:10;13225:20;13236:8;;13225:6;:10;;:20;;;;:::i;:62::-;13205:82;;13298:18;13319:36;13346:8;;13319:22;13333:7;;13319:9;:13;;:22;;;;:::i;:36::-;13298:57;-1:-1:-1;13366:22:0;13391:25;:9;13298:57;13391:13;:25::i;:::-;13474:4;13456:24;;;;:9;:24;;;;;;13366:50;;-1:-1:-1;13456:44:0;;13366:50;13456:28;:44::i;:::-;13447:4;13429:24;;;;:9;:24;;;;;;:71;;;;13550:15;;-1:-1:-1;;;;;13550:15:0;13540:26;;;;:42;;13571:10;13540:30;:42::i;:::-;13521:15;;-1:-1:-1;;;;;13521:15:0;;;13511:26;;;;:9;:26;;;;;;;;;:71;;;;13598:47;11571:25:1;;;13623:4:0;;13598:47;;;;-1:-1:-1;;;;;;;;;;;13598:47:0;11544:18:1;13598:47:0;;;;;;;13669:14;;13666:99;;13721:15;;13704:45;;11571:25:1;;;-1:-1:-1;;;;;13721:15:0;;;;13704:45;;;-1:-1:-1;;;;;;;;;;;13704:45:0;11559:2:1;11544:18;13704:45:0;;;;;;;13666:99;13784:21;:6;13795:9;13784:10;:21::i;:::-;13777:28;12871:942;-1:-1:-1;;;;;;;;12871:942:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;383:260;;;;;:::o;648:484::-;743:6;751;759;767;775;828:3;816:9;807:7;803:23;799:33;796:53;;;845:1;842;835:12;796:53;868:29;887:9;868:29;:::i;:::-;858:39;;916:38;950:2;939:9;935:18;916:38;:::i;:::-;906:48;;973:38;1007:2;996:9;992:18;973:38;:::i;:::-;963:48;;1030:38;1064:2;1053:9;1049:18;1030:38;:::i;:::-;1020:48;;1087:39;1121:3;1110:9;1106:19;1087:39;:::i;:::-;1077:49;;648:484;;;;;;;;:::o;1137:328::-;1214:6;1222;1230;1283:2;1271:9;1262:7;1258:23;1254:32;1251:52;;;1299:1;1296;1289:12;1251:52;1322:29;1341:9;1322:29;:::i;:::-;1312:39;;1370:38;1404:2;1393:9;1389:18;1370:38;:::i;:::-;1360:48;;1455:2;1444:9;1440:18;1427:32;1417:42;;1137:328;;;;;:::o;1470:315::-;1535:6;1543;1596:2;1584:9;1575:7;1571:23;1567:32;1564:52;;;1612:1;1609;1602:12;1564:52;1635:29;1654:9;1635:29;:::i;:::-;1625:39;;1714:2;1703:9;1699:18;1686:32;1727:28;1749:5;1727:28;:::i;:::-;1774:5;1764:15;;;1470:315;;;;;:::o;1790:254::-;1858:6;1866;1919:2;1907:9;1898:7;1894:23;1890:32;1887:52;;;1935:1;1932;1925:12;1887:52;1958:29;1977:9;1958:29;:::i;:::-;1948:39;2034:2;2019:18;;;;2006:32;;-1:-1:-1;;;1790:254:1:o;2049:750::-;2141:6;2149;2157;2210:2;2198:9;2189:7;2185:23;2181:32;2178:52;;;2226:1;2223;2216:12;2178:52;2266:9;2253:23;2295:18;2336:2;2328:6;2325:14;2322:34;;;2352:1;2349;2342:12;2322:34;2390:6;2379:9;2375:22;2365:32;;2435:7;2428:4;2424:2;2420:13;2416:27;2406:55;;2457:1;2454;2447:12;2406:55;2497:2;2484:16;2523:2;2515:6;2512:14;2509:34;;;2539:1;2536;2529:12;2509:34;2594:7;2587:4;2577:6;2574:1;2570:14;2566:2;2562:23;2558:34;2555:47;2552:67;;;2615:1;2612;2605:12;2552:67;2646:4;2638:13;;;;-1:-1:-1;2670:6:1;-1:-1:-1;;2711:20:1;;2698:34;2741:28;2698:34;2741:28;:::i;:::-;2788:5;2778:15;;;2049:750;;;;;:::o;2804:241::-;2860:6;2913:2;2901:9;2892:7;2888:23;2884:32;2881:52;;;2929:1;2926;2919:12;2881:52;2968:9;2955:23;2987:28;3009:5;2987:28;:::i;3050:245::-;3117:6;3170:2;3158:9;3149:7;3145:23;3141:32;3138:52;;;3186:1;3183;3176:12;3138:52;3218:9;3212:16;3237:28;3259:5;3237:28;:::i;3300:309::-;3365:6;3373;3426:2;3414:9;3405:7;3401:23;3397:32;3394:52;;;3442:1;3439;3432:12;3394:52;3481:9;3468:23;3500:28;3522:5;3500:28;:::i;3614:180::-;3673:6;3726:2;3714:9;3705:7;3701:23;3697:32;3694:52;;;3742:1;3739;3732:12;3694:52;-1:-1:-1;3765:23:1;;3614:180;-1:-1:-1;3614:180:1:o;3799:184::-;3869:6;3922:2;3910:9;3901:7;3897:23;3893:32;3890:52;;;3938:1;3935;3928:12;3890:52;-1:-1:-1;3961:16:1;;3799:184;-1:-1:-1;3799:184:1:o;3988:248::-;4056:6;4064;4117:2;4105:9;4096:7;4092:23;4088:32;4085:52;;;4133:1;4130;4123:12;4085:52;-1:-1:-1;;4156:23:1;;;4226:2;4211:18;;;4198:32;;-1:-1:-1;3988:248:1:o;4241:316::-;4318:6;4326;4334;4387:2;4375:9;4366:7;4362:23;4358:32;4355:52;;;4403:1;4400;4393:12;4355:52;-1:-1:-1;;4426:23:1;;;4496:2;4481:18;;4468:32;;-1:-1:-1;4547:2:1;4532:18;;;4519:32;;4241:316;-1:-1:-1;4241:316:1:o;4562:306::-;4650:6;4658;4666;4719:2;4707:9;4698:7;4694:23;4690:32;4687:52;;;4735:1;4732;4725:12;4687:52;4764:9;4758:16;4748:26;;4814:2;4803:9;4799:18;4793:25;4783:35;;4858:2;4847:9;4843:18;4837:25;4827:35;;4562:306;;;;;:::o;4873:523::-;4977:6;4985;4993;5001;5009;5017;5070:3;5058:9;5049:7;5045:23;5041:33;5038:53;;;5087:1;5084;5077:12;5038:53;-1:-1:-1;;5110:23:1;;;5180:2;5165:18;;5152:32;;-1:-1:-1;5231:2:1;5216:18;;5203:32;;5282:2;5267:18;;5254:32;;-1:-1:-1;5333:3:1;5318:19;;5305:33;;-1:-1:-1;5385:3:1;5370:19;5357:33;;-1:-1:-1;4873:523:1;-1:-1:-1;4873:523:1:o;7128:597::-;7240:4;7269:2;7298;7287:9;7280:21;7330:6;7324:13;7373:6;7368:2;7357:9;7353:18;7346:34;7398:1;7408:140;7422:6;7419:1;7416:13;7408:140;;;7517:14;;;7513:23;;7507:30;7483:17;;;7502:2;7479:26;7472:66;7437:10;;7408:140;;;7566:6;7563:1;7560:13;7557:91;;;7636:1;7631:2;7622:6;7611:9;7607:22;7603:31;7596:42;7557:91;-1:-1:-1;7709:2:1;7688:15;-1:-1:-1;;7684:29:1;7669:45;;;;7716:2;7665:54;;7128:597;-1:-1:-1;;;7128:597:1:o;9947:356::-;10149:2;10131:21;;;10168:18;;;10161:30;10227:34;10222:2;10207:18;;10200:62;10294:2;10279:18;;9947:356::o;11607:980::-;11869:4;11917:3;11906:9;11902:19;11948:6;11937:9;11930:25;11974:2;12012:6;12007:2;11996:9;11992:18;11985:34;12055:3;12050:2;12039:9;12035:18;12028:31;12079:6;12114;12108:13;12145:6;12137;12130:22;12183:3;12172:9;12168:19;12161:26;;12222:2;12214:6;12210:15;12196:29;;12243:1;12253:195;12267:6;12264:1;12261:13;12253:195;;;12332:13;;-1:-1:-1;;;;;12328:39:1;12316:52;;12423:15;;;;12388:12;;;;12364:1;12282:9;12253:195;;;-1:-1:-1;;;;;;;12504:32:1;;;;12499:2;12484:18;;12477:60;-1:-1:-1;;;12568:3:1;12553:19;12546:35;12465:3;11607:980;-1:-1:-1;;;11607:980:1:o;13034:128::-;13074:3;13105:1;13101:6;13098:1;13095:13;13092:39;;;13111:18;;:::i;:::-;-1:-1:-1;13147:9:1;;13034:128::o;13167:217::-;13207:1;13233;13223:132;;13277:10;13272:3;13268:20;13265:1;13258:31;13312:4;13309:1;13302:15;13340:4;13337:1;13330:15;13223:132;-1:-1:-1;13369:9:1;;13167:217::o;13389:168::-;13429:7;13495:1;13491;13487:6;13483:14;13480:1;13477:21;13472:1;13465:9;13458:17;13454:45;13451:71;;;13502:18;;:::i;:::-;-1:-1:-1;13542:9:1;;13389:168::o;13562:125::-;13602:4;13630:1;13627;13624:8;13621:34;;;13635:18;;:::i;:::-;-1:-1:-1;13672:9:1;;13562:125::o;13692:135::-;13731:3;-1:-1:-1;;13752:17:1;;13749:43;;;13772:18;;:::i;:::-;-1:-1:-1;13819:1:1;13808:13;;13692:135::o;13832:127::-;13893:10;13888:3;13884:20;13881:1;13874:31;13924:4;13921:1;13914:15;13948:4;13945:1;13938:15;13964:127;14025:10;14020:3;14016:20;14013:1;14006:31;14056:4;14053:1;14046:15;14080:4;14077:1;14070:15;14228:118;14314:5;14307:13;14300:21;14293:5;14290:32;14280:60;;14336:1;14333;14326:12

Swarm Source

ipfs://c369985dcb4123ecb73befa905e419c9cb3167cd2274335177d06c28d0dfd8c0

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.