ETH Price: $2,151.53 (+0.01%)

Contract

0x8A332Da1f6A623Ac57dFd0DcEF67A98b31599f40
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve238733142025-11-25 4:01:47115 days ago1764043307IN
0x8A332Da1...b31599f40
0 ETH0.000073951.58400657
Approve228868742025-07-10 6:05:23253 days ago1752127523IN
0x8A332Da1...b31599f40
0 ETH0.000107542.30350973
Approve222173082025-04-07 13:25:35347 days ago1744032335IN
0x8A332Da1...b31599f40
0 ETH0.000126735.19307829
Approve218893222025-02-20 18:22:23393 days ago1740075743IN
0x8A332Da1...b31599f40
0 ETH0.000068781.47522377
Approve217545472025-02-01 22:06:47412 days ago1738447607IN
0x8A332Da1...b31599f40
0 ETH0.000198394.25474304
Approve214754452024-12-24 22:55:35451 days ago1735080935IN
0x8A332Da1...b31599f40
0 ETH0.00016923.6287867
Transfer213921842024-12-13 7:45:47462 days ago1734075947IN
0x8A332Da1...b31599f40
0 ETH0.0007275411.56029071
Approve199667142024-05-28 6:56:11661 days ago1716879371IN
0x8A332Da1...b31599f40
0 ETH0.0004699119.25563619
Approve198836202024-05-16 16:05:47673 days ago1715875547IN
0x8A332Da1...b31599f40
0 ETH0.000351527.5293229
Approve198767582024-05-15 17:04:59674 days ago1715792699IN
0x8A332Da1...b31599f40
0 ETH0.0002616410.72121302
Approve198767452024-05-15 17:02:23674 days ago1715792543IN
0x8A332Da1...b31599f40
0 ETH0.00051310.98793805
Approve198710762024-05-14 22:03:35675 days ago1715724215IN
0x8A332Da1...b31599f40
0 ETH0.0004798910.33186995
Transfer198225782024-05-08 3:11:23681 days ago1715137883IN
0x8A332Da1...b31599f40
0 ETH0.000484566.46671925
Approve197606012024-04-29 11:13:59690 days ago1714389239IN
0x8A332Da1...b31599f40
0 ETH0.000438519.40458264
Approve196700572024-04-16 19:14:35703 days ago1713294875IN
0x8A332Da1...b31599f40
0 ETH0.0005287311.32483705
Approve196442832024-04-13 4:29:59706 days ago1712982599IN
0x8A332Da1...b31599f40
0 ETH0.0005025410.77785507
Approve189481482024-01-06 12:23:47804 days ago1704543827IN
0x8A332Da1...b31599f40
0 ETH0.0006994215.08550316
Approve189320042024-01-04 5:52:47806 days ago1704347567IN
0x8A332Da1...b31599f40
0 ETH0.0003246713.30398494
Approve189250342024-01-03 6:24:59807 days ago1704263099IN
0x8A332Da1...b31599f40
0 ETH0.0005867312.64841358
Approve187356342023-12-07 16:34:47834 days ago1701966887IN
0x8A332Da1...b31599f40
0 ETH0.0038785683.07419292
Approve187006322023-12-02 18:52:47839 days ago1701543167IN
0x8A332Da1...b31599f40
0 ETH0.0015165932.48353152
Approve186970182023-12-02 6:46:35839 days ago1701499595IN
0x8A332Da1...b31599f40
0 ETH0.0013563329.08834038
Approve186895432023-12-01 5:41:11840 days ago1701409271IN
0x8A332Da1...b31599f40
0 ETH0.0014371630.98148582
Approve186844662023-11-30 12:37:23841 days ago1701347843IN
0x8A332Da1...b31599f40
0 ETH0.0017669937.846879
Approve186809872023-11-30 0:56:59842 days ago1701305819IN
0x8A332Da1...b31599f40
0 ETH0.0014595131.30126785
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer186233932023-11-21 23:23:23850 days ago1700609003
0x8A332Da1...b31599f40
0.2339415 ETH
Transfer186233932023-11-21 23:23:23850 days ago1700609003
0x8A332Da1...b31599f40
0.2339415 ETH
Transfer186233232023-11-21 23:09:23850 days ago1700608163
0x8A332Da1...b31599f40
0.21522839 ETH
Transfer186233232023-11-21 23:09:23850 days ago1700608163
0x8A332Da1...b31599f40
0.21522839 ETH
Transfer186233212023-11-21 23:08:59850 days ago1700608139
0x8A332Da1...b31599f40
0.1595742 ETH
Transfer186233212023-11-21 23:08:59850 days ago1700608139
0x8A332Da1...b31599f40
0.1595742 ETH
Transfer186233152023-11-21 23:07:47850 days ago1700608067
0x8A332Da1...b31599f40
0.2458824 ETH
Transfer186233152023-11-21 23:07:47850 days ago1700608067
0x8A332Da1...b31599f40
0.2458824 ETH
Transfer186233032023-11-21 23:05:23850 days ago1700607923
0x8A332Da1...b31599f40
0.2831813 ETH
Transfer186233032023-11-21 23:05:23850 days ago1700607923
0x8A332Da1...b31599f40
0.2831813 ETH
Transfer186233012023-11-21 23:04:59850 days ago1700607899
0x8A332Da1...b31599f40
0.25313301 ETH
Transfer186233012023-11-21 23:04:59850 days ago1700607899
0x8A332Da1...b31599f40
0.25313301 ETH
Transfer186232922023-11-21 23:03:11850 days ago1700607791
0x8A332Da1...b31599f40
0.27849384 ETH
Transfer186232922023-11-21 23:03:11850 days ago1700607791
0x8A332Da1...b31599f40
0.27849384 ETH
Transfer186232792023-11-21 23:00:23850 days ago1700607623
0x8A332Da1...b31599f40
0.22410755 ETH
Transfer186232792023-11-21 23:00:23850 days ago1700607623
0x8A332Da1...b31599f40
0.22410755 ETH
Transfer186232772023-11-21 22:59:59850 days ago1700607599
0x8A332Da1...b31599f40
0.22835285 ETH
Transfer186232772023-11-21 22:59:59850 days ago1700607599
0x8A332Da1...b31599f40
0.22835285 ETH
Transfer186232732023-11-21 22:59:11850 days ago1700607551
0x8A332Da1...b31599f40
0.21137956 ETH
Transfer186232732023-11-21 22:59:11850 days ago1700607551
0x8A332Da1...b31599f40
0.21137956 ETH
Transfer186232682023-11-21 22:58:11850 days ago1700607491
0x8A332Da1...b31599f40
0.29301476 ETH
Transfer186232682023-11-21 22:58:11850 days ago1700607491
0x8A332Da1...b31599f40
0.29301476 ETH
Transfer186232622023-11-21 22:56:59850 days ago1700607419
0x8A332Da1...b31599f40
0.2267918 ETH
Transfer186232622023-11-21 22:56:59850 days ago1700607419
0x8A332Da1...b31599f40
0.2267918 ETH
Transfer186232612023-11-21 22:56:47850 days ago1700607407
0x8A332Da1...b31599f40
0.2267918 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HotHoneyBun

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 2 : HotHoneyBun.sol
/**
 *Submitted for verification at Etherscan.io on 2023-03-16
*/
//website: hothoneybun.com
//Telegram: https://t.me/HotHoneyBun
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.9.0;

import "./SafeMath.sol";

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

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function 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 swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

contract HotHoneyBun is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;

    mapping (address => bool) public isBot;
   
    uint256 constant private startingSupply = 690_000_000_000;
    string constant private _name = "HotHoneyBun";
    string constant private _symbol = "HHB";
    uint8 constant private _decimals = 18;

    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    uint256 public tradingEnabledAt;
    using SafeMath for uint256;
    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        uint16 marketing;
        uint16 jackpot;
        uint16 totalSwap;
    }

    Fees public _taxRates = Fees({
        buyFee: 0,
        sellFee: 2000,
        transferFee: 0
        });
		
    Ratios public _ratios = Ratios({
        jackpot: 0,
        marketing: 2000,
        totalSwap: 2000
        });

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2000;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant public maxRoundtripTax = 3000;
    uint256 constant masterTaxDivisor = 10000;
    uint256 public maxWallet = 10350000000000000000000000000;
    uint256 public maxTransactionAmount = 10350000000000000000000000000;
    
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
       address payable marketing;
       address payable jackpot;
    }
	
    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x60C526E97C8464313daCa553D9d82cBA01ccc225),
        jackpot: payable(0x60C526E97C8464313daCa553D9d82cBA01ccc225)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent;
    
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;

        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3 || block.chainid == 5) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;

        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }
	
    address private _owner;

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
		
		_isExcludedFromFees[_owner] = false;
		_isExcludedFromFees[newOwner] = true;
        
        if(balanceOf(_owner) > 0) {
            _finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
		_isExcludedFromFees[_owner] = false;
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }
	
    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    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 allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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

    function approveContractContingency() public onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

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

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) public onlyOwner {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    function addRemoveBots(address[] memory accounts, bool[] memory value) public onlyOwner {
        require(accounts.length == value.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            isBot[accounts[i]] = value[i];
        }        
    }
	
    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        require(buyFee + sellFee <= maxRoundtripTax, "Cannot exceed roundtrip maximum.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 marketing, uint16 jackpot) external onlyOwner {
        _ratios.jackpot = jackpot;
        _ratios.marketing = marketing;
        _ratios.totalSwap = jackpot + marketing;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable marketing, address payable jackpot) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
        _taxWallets.jackpot = payable(jackpot);
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= _tTotal / 1_000_000, "Cannot set maxTransactionAmount lower than 0.00001%");
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= _tTotal / 1_000_000, "Cannot set maxWallet lower than 0.00001%");
        maxWallet = newNum * (10**18);
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }

	function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 200, "Cannot set above 2%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
		
        tradingEnabled = true;
        tradingEnabledAt = block.timestamp;
        swapThreshold = (balanceOf(lpPair) * 15) / 10000;
        swapAmount = (balanceOf(lpPair) * 30) / 10000;
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(tradingEnabled && block.timestamp <= tradingEnabledAt.add(900) && !isBot[to]) {
                revert("Cannot buy yet");
            }
        }
        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return _finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal lockTheSwap {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 jackpotBalance = (amtBalance * ratios.jackpot) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - jackpotBalance;
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 35000}("");
        }
        if (ratios.jackpot > 0) {
            (success,) = _taxWallets.jackpot.call{value: jackpotBalance, gas: 35000}("");
        }
    }    

    function _contractSwap(uint256 contractTokenBalance) external {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 jackpotBalance = (amtBalance * ratios.jackpot) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - jackpotBalance;
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 35000}("");
        }
        if (ratios.jackpot > 0) {
            (success,) = _taxWallets.jackpot.call{value: jackpotBalance, gas: 35000}("");
        }
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
			
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }
    

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]);
            _finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
		
        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        else if(!_isExcludedFromFees[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }
	
    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) 
		{
            currentFee = _taxRates.buyFee;
        } 
		else if (sell) 
		{
            currentFee = _taxRates.sellFee;
        } 
		else 
		{
            currentFee = _taxRates.transferFee;
        }
		
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 swapAmt = feeAmount;

        _tOwned[address(this)] += swapAmt;
        emit Transfer(from, address(this), swapAmt);

        return amount - feeAmount;
    }
}

pragma solidity 0.8.20;

// SPDX-License-Identifier: MIT

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) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/OpenZeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

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

        return c;
    }

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

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

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"contractTokenBalance","type":"uint256"}],"name":"_contractSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"jackpot","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"jackpot","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool[]","name":"value","type":"bool[]"}],"name":"addRemoveBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","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":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundtripTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"jackpot","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"jackpot","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabledAt","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

5f600281905560808190526107d060a081905260c0829052600880546307d0000065ffffffffffff199182161790915560e08290526101009290925261012052600980549091166507d0000007d01790556b217151c042e12f432e000000600a818155600b919091556101806040527360c526e97c8464313daca553d9d82cba01ccc225610140819052610160819052600e80546001600160a01b03199081168317909155600f805490911690911790556010805461ff0019169055601580546001600160b01b031916620100003302179055620000e090601290620007b1565b620000f19064a0a7347400620007c8565b601580546001600160a01b03620100009182900481165f9081526020819052604081209490945591540416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200014c6012600a620007b1565b6200015d9064a0a7347400620007c8565b60405190815260200160405180910390a346603803620001a357600c80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002a1565b46606103620001d857600c80546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d1179055620002a1565b4660011480620001e85750466004145b80620001f45750466003145b80620002005750466005145b156200023257600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002a1565b4661a86a036200026857600c80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d4179055620002a1565b4660fa036200029d57600c80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c29179055620002a1565b5f80fd5b600c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003189190620007e2565b6001600160a01b031663c9c65396600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000377573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200039d9190620007e2565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af1158015620003e7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200040d9190620007e2565b600d80546001600160a01b0319166001600160a01b039283169081179091555f908152600160208190526040909120805460ff19169091179055601554600c54620004659262010000909204821691165f19620005a2565b600c54620004809030906001600160a01b03165f19620005a2565b601580546001600160a01b03620100009182900481165f908152600560208181526040808420805460ff19908116600190811790925530865282862080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805482168317905597549690960490941683526004815292822080548616851790559091527f7e99e1e5c40ec22aa71ab68cea1ae3bb6f232576acb26d0b4e86f2583f2d4e3c80548416831790557f3b88920f3cdb6a2d8f52fb772e91e6e89cd00cd610f4b9dfb804ff1eafb41e59805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527f5ded1e7b8c25e3df69e401c18bf55e92f7343717ed383d2e5c8e4004d4de223f80549092161790556200080a565b6001600160a01b038316620005f45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006425760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005eb565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006f657815f1904821115620006da57620006da620006a2565b80851615620006e857918102915b93841c9390800290620006bb565b509250929050565b5f826200070e57506001620007ab565b816200071c57505f620007ab565b8160018114620007355760028114620007405762000760565b6001915050620007ab565b60ff841115620007545762000754620006a2565b50506001821b620007ab565b5060208310610133831016604e8410600b841016171562000785575081810a620007ab565b620007918383620006b6565b805f1904821115620007a757620007a7620006a2565b0290505b92915050565b5f620007c160ff841683620006fe565b9392505050565b8082028115828204841417620007ab57620007ab620006a2565b5f60208284031215620007f3575f80fd5b81516001600160a01b0381168114620007c1575f80fd5b61339d80620008185f395ff3fe6080604052600436106102dc575f3560e01c806370a0823111610189578063bfc2fc35116100d8578063dd62ed3e11610092578063f8b45b051161006d578063f8b45b05146108bd578063f94aa1b4146108d2578063fb78680d14610918578063fdb78c0e14610937575f80fd5b8063dd62ed3e14610846578063eafb5a3c1461088a578063ee5d9c2d146108a9575f80fd5b8063bfc2fc3514610790578063c18bc195146107af578063c31fe80a146107ce578063c8c8ebe4146107e3578063cf847706146107f8578063d3f6a15714610827575f80fd5b806394b954d611610143578063b1b08f711161011e578063b1b08f71146104a2578063b3d514fb146104a2578063b7df8b3614610758578063bcd96a2514610771575f80fd5b806394b954d6146106ef57806395d89b411461070e578063a9059cbb14610739575f80fd5b806370a0823114610652578063715018a61461067157806380c581d114610685578063893d20e8146106a45780638a63bd9b146106c75780638a8c523c146106db575f80fd5b80632e8fa821116102455780634ada218b116101ff5780634fbee193116101da5780634fbee193146105bf57806350a8e016146105f6578063590ffdce146106145780636492048014610633575f80fd5b80634ada218b146105685780634e718e48146105815780634fb2e45d146105a0575f80fd5b80632e8fa821146104b7578063313ce567146104cc57806332cde664146104e75780633bbac57914610506578063452ed4f11461053457806346ea7ac814610553575f80fd5b806318160ddd1161029657806318160ddd1461041a578063203e727e1461042e57806323b872dd1461044f5780632610eaca1461046e578063285777511461048d5780632b28fc7a146104a2575f80fd5b806303fd2a45146102e75780630445b66714610319578063069d955f1461033c57806306fdde03146103905780630758d924146103cc578063095ea7b3146103eb575f80fd5b366102e357005b5f80fd5b3480156102f2575f80fd5b506102fc61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610324575f80fd5b5061032e60115481565b604051908152602001610310565b348015610347575f80fd5b5060085461036b9061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610310565b34801561039b575f80fd5b5060408051808201909152600b81526a2437ba2437b732bca13ab760a91b60208201525b6040516103109190612be1565b3480156103d7575f80fd5b50600c546102fc906001600160a01b031681565b3480156103f6575f80fd5b5061040a610405366004612c40565b610955565b6040519015158152602001610310565b348015610425575f80fd5b5061032e61096b565b348015610439575f80fd5b5061044d610448366004612c6a565b61098c565b005b34801561045a575f80fd5b5061040a610469366004612c81565b610a71565b348015610479575f80fd5b5061044d610488366004612d98565b610ae6565b348015610498575f80fd5b5061032e60145481565b3480156104ad575f80fd5b5061032e6107d081565b3480156104c2575f80fd5b5061032e60125481565b3480156104d7575f80fd5b5060405160128152602001610310565b3480156104f2575f80fd5b5061044d610501366004612e63565b610c14565b348015610511575f80fd5b5061040a610520366004612ea3565b60066020525f908152604090205460ff1681565b34801561053f575f80fd5b50600d546102fc906001600160a01b031681565b34801561055e575f80fd5b5061032e610bb881565b348015610573575f80fd5b5060155461040a9060ff1681565b34801561058c575f80fd5b5061044d61059b366004612c6a565b610d5b565b3480156105ab575f80fd5b5061044d6105ba366004612ea3565b610dd8565b3480156105ca575f80fd5b5061040a6105d9366004612ea3565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610601575f80fd5b5060155461040a90610100900460ff1681565b34801561061f575f80fd5b5061044d61062e366004612ecd565b610f2b565b34801561063e575f80fd5b5061044d61064d366004612c6a565b610f85565b34801561065d575f80fd5b5061032e61066c366004612ea3565b61125c565b34801561067c575f80fd5b5061044d611276565b348015610690575f80fd5b5061044d61069f366004612ecd565b611316565b3480156106af575f80fd5b506015546201000090046001600160a01b03166102fc565b3480156106d2575f80fd5b5061040a6113f8565b3480156106e6575f80fd5b5061044d611449565b3480156106fa575f80fd5b5061044d610709366004612f00565b611598565b348015610719575f80fd5b5060408051808201909152600381526224242160e91b60208201526103bf565b348015610744575f80fd5b5061040a610753366004612c40565b611697565b348015610763575f80fd5b5060135461040a9060ff1681565b34801561077c575f80fd5b5061044d61078b366004612fad565b6116ad565b34801561079b575f80fd5b5061044d6107aa366004612fd5565b6117b5565b3480156107ba575f80fd5b5061044d6107c9366004612c6a565b611844565b3480156107d9575f80fd5b5061032e60075481565b3480156107ee575f80fd5b5061032e600b5481565b348015610803575f80fd5b5060095461036b9061ffff80821691620100008104821691600160201b9091041683565b348015610832575f80fd5b5061044d610841366004612fef565b611915565b348015610851575f80fd5b5061032e610860366004612fef565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610895575f80fd5b5061044d6108a4366004612ea3565b611973565b3480156108b4575f80fd5b5061044d611c9d565b3480156108c8575f80fd5b5061032e600a5481565b3480156108dd575f80fd5b50600e54600f546108f8916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610310565b348015610923575f80fd5b5061044d610932366004613026565b611d66565b348015610942575f80fd5b5060105461040a90610100900460ff1681565b5f610961338484611f80565b5060015b92915050565b5f6109786012600a613149565b6109879064a0a7347400613157565b905090565b6015546201000090046001600160a01b031633146109c55760405162461bcd60e51b81526004016109bc9061316e565b60405180910390fd5b620f42406109d56012600a613149565b6109e49064a0a7347400613157565b6109ee9190613199565b811015610a595760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74206044820152726c6f776572207468616e20302e30303030312560681b60648201526084016109bc565b610a6b81670de0b6b3a7640000613157565b600b5550565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610ad3576001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610acd9084906131b8565b90915550505b610ade848484612078565b949350505050565b6015546201000090046001600160a01b03163314610b165760405162461bcd60e51b81526004016109bc9061316e565b8051825114610b5f5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b60448201526064016109bc565b5f5b82518160ff161015610c0f57818160ff1681518110610b8257610b826131cb565b6020026020010151610b933361125c565b1015610b9d575f80fd5b610bfc33848360ff1681518110610bb657610bb66131cb565b60200260200101516012600a610bcc9190613149565b858560ff1681518110610be157610be16131cb565b6020026020010151610bf39190613157565b5f806001612385565b5080610c07816131df565b915050610b61565b505050565b6015546201000090046001600160a01b03163314610c445760405162461bcd60e51b81526004016109bc9061316e565b6107d08361ffff1611158015610c6057506107d08261ffff1611155b8015610c7257506107d08161ffff1611155b610cbe5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016109bc565b610bb8610ccb83856131fd565b61ffff161115610d1d5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e60448201526064016109bc565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6015546201000090046001600160a01b03163314610d8b5760405162461bcd60e51b81526004016109bc9061316e565b60c8811115610dd35760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba1039b2ba1030b137bb329019129760611b60448201526064016109bc565b601455565b6015546201000090046001600160a01b03163314610e085760405162461bcd60e51b81526004016109bc9061316e565b6001600160a01b038116610e2e5760405162461bcd60e51b81526004016109bc9061321f565b61deac196001600160a01b03821601610e595760405162461bcd60e51b81526004016109bc9061321f565b601580546001600160a01b03620100009182900481165f90815260056020526040808220805460ff199081169091558684168352908220805490911660011790559254610ea89290041661125c565b1115610ed057601554610ece906201000090046001600160a01b031682610bf38261125c565b505b601580546001600160a01b038381166201000081810262010000600160b01b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6015546201000090046001600160a01b03163314610f5b5760405162461bcd60e51b81526004016109bc9061316e565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6040805160608101825260095461ffff808216835262010000820481166020840152600160201b90910416918101829052905f03610fc1575050565b305f908152600360209081526040808320600c546001600160a01b031684529091529020545f191461101657305f908152600360209081526040808320600c546001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611049576110496131cb565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c4919061327c565b816001815181106110d7576110d76131cb565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac9479061111c9086905f90869030904290600401613297565b5f604051808303815f87803b158015611133575f80fd5b505af1158015611145573d5f803e3d5ffd5b505050505f4790505f80846040015161ffff16856020015161ffff168461116c9190613157565b6111769190613199565b90505f61118382856131b8565b865190915061ffff16156111eb57600e546040516001600160a01b03909116906188b89083905f818181858888f193505050503d805f81146111e0576040519150601f19603f3d011682016040523d82523d5f602084013e6111e5565b606091505b50909350505b602086015161ffff161561125357600f546040516001600160a01b03909116906188b89084905f818181858888f193505050503d805f8114611248576040519150601f19603f3d011682016040523d82523d5f602084013e61124d565b606091505b50909350505b50505050505050565b6001600160a01b03165f9081526020819052604090205490565b6015546201000090046001600160a01b031633146112a65760405162461bcd60e51b81526004016109bc9061316e565b601580546001600160a01b03620100009182900481165f90815260056020526040808220805460ff19169055845462010000600160b01b03198116909555519290930416919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546201000090046001600160a01b031633146113465760405162461bcd60e51b81526004016109bc9061316e565b8015155f0361137057506001600160a01b03165f908152600160205260409020805460ff19169055565b600254156113ca576203f4806002544261138a91906131b8565b116113ca5760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b60448201526064016109bc565b6001600160a01b0382165f908152600160208190526040909120805460ff19169091179055426002555b5050565b6015545f906201000090046001600160a01b0316331461142a5760405162461bcd60e51b81526004016109bc9061316e565b600c546114439030906001600160a01b03165f19611f80565b50600190565b6015546201000090046001600160a01b031633146114795760405162461bcd60e51b81526004016109bc9061316e565b60155460ff16156114cc5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016109bc565b601554610100900460ff166115235760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016109bc565b6015805460ff1916600117905542600755600d546127109061154d906001600160a01b031661125c565b61155890600f613157565b6115629190613199565b601155600d546127109061157e906001600160a01b031661125c565b61158990601e613157565b6115939190613199565b601255565b6015546201000090046001600160a01b031633146115c85760405162461bcd60e51b81526004016109bc9061316e565b80518251146116115760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b60448201526064016109bc565b5f5b82518160ff161015610c0f57818160ff1681518110611634576116346131cb565b602002602001015160065f858460ff1681518110611654576116546131cb565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061168f816131df565b915050611613565b5f6116a3338484612078565b5060019392505050565b6015546201000090046001600160a01b031633146116dd5760405162461bcd60e51b81526004016109bc9061316e565b6009805463ffffffff19166201000061ffff8481169190910261ffff19169190911790841617905561170f82826131fd565b6009805465ffff000000001916600160201b61ffff938416021790556008545f9161174391620100008104821691166131fd565b60095461ffff9182169250600160201b900416811015610c0f5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b60648201526084016109bc565b6015546201000090046001600160a01b031633146117e55760405162461bcd60e51b81526004016109bc9061316e565b6010805461ff001916610100841515908102919091179091556013805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6015546201000090046001600160a01b031633146118745760405162461bcd60e51b81526004016109bc9061316e565b620f42406118846012600a613149565b6118939064a0a7347400613157565b61189d9190613199565b8110156118fd5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015267302e30303030312560c01b60648201526084016109bc565b61190f81670de0b6b3a7640000613157565b600a5550565b6015546201000090046001600160a01b031633146119455760405162461bcd60e51b81526004016109bc9061316e565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b6015546201000090046001600160a01b031633146119a35760405162461bcd60e51b81526004016109bc9061316e565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a08919061327c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a77919061327c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611ac0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae4919061327c565b90506001600160a01b038116611c5657816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b54919061327c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bc3919061327c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611c0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c31919061327c565b600d80546001600160a01b0319166001600160a01b0392909216919091179055611c72565b600d80546001600160a01b0319166001600160a01b0383161790555b600c80546001600160a01b0319166001600160a01b038416908117909155610c0f9030905f19611f80565b6015546201000090046001600160a01b03163314611ccd5760405162461bcd60e51b81526004016109bc9061316e565b601554610100900460ff1615611d255760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e0000000060448201526064016109bc565b6015546040516001600160a01b036201000090920491909116904780156108fc02915f818181858888f19350505050158015611d63573d5f803e3d5ffd5b50565b6015546201000090046001600160a01b03163314611d965760405162461bcd60e51b81526004016109bc9061316e565b8284611da46012600a613149565b611db39064a0a7347400613157565b611dbd9190613157565b611dc79190613199565b6011558082611dd86012600a613149565b611de79064a0a7347400613157565b611df19190613157565b611dfb9190613199565b60128190556011541115611e5b5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b60648201526084016109bc565b600d5461271090611e74906001600160a01b031661125c565b611e7f906096613157565b611e899190613199565b6012541115611ee65760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b60648201526084016109bc565b620f4240611ef66012600a613149565b611f059064a0a7347400613157565b611f0f9190613199565b6012541015611f305760405162461bcd60e51b81526004016109bc90613306565b620f4240611f406012600a613149565b611f4f9064a0a7347400613157565b611f599190613199565b6011541015611f7a5760405162461bcd60e51b81526004016109bc90613306565b50505050565b6001600160a01b038316611fcc5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109bc565b6001600160a01b0382166120185760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109bc565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166120dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bc565b6001600160a01b03831661213f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bc565b5f82116121a05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109bc565b6001600160a01b0384165f908152600160205260408120548190819060ff16156121cd57600192506121fa565b6001600160a01b0386165f9081526001602052604090205460ff16156121f657600191506121fa565b5060015b61220487876125bf565b156122dd5760155460ff1661225b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016109bc565b60155460ff16801561227b5750600754612277906103846126a5565b4211155b801561229f57506001600160a01b0386165f9081526006602052604090205460ff16155b156122dd5760405162461bcd60e51b815260206004820152600e60248201526d10d85b9b9bdd08189d5e481e595d60921b60448201526064016109bc565b811561236c5760105460ff1661236c57601054610100900460ff161561236c575f6123073061125c565b9050601154811061236a5760125460135460ff161561235457601454600d54612710919061233d906001600160a01b031661125c565b6123479190613157565b6123519190613199565b90505b80821061235f578091505b61236882612703565b505b505b61237a878787868686612385565b979650505050505050565b6015545f90610100900460ff1661241f576123a087876129fa565b601554610100900460ff161580156123bd57506123bd87876125bf565b80156123c7575081155b1561241f5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b60648201526084016109bc565b6001600160a01b0387165f9081526005602052604090205460019060ff168061245f57506001600160a01b0387165f9081526005602052604090205460ff165b1561246b57505f6124e4565b6001600160a01b0387165f9081526005602052604090205460ff166124e457600a546124968861125c565b6124a09088613354565b11156124e45760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109bc565b6001600160a01b0388165f908152602081905260408120805488929061250b9084906131b8565b909155505f90508161251d5786612529565b6125298987878a612b0d565b9050805f808a6001600160a01b03166001600160a01b031681526020019081526020015f205f82825461255c9190613354565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125a891815260200190565b60405180910390a350600198975050505050505050565b6015545f906001600160a01b038481166201000090920416148015906125f957506015546001600160a01b03838116620100009092041614155b801561261657506015546201000090046001600160a01b03163214155b801561263a57506001600160a01b0382165f9081526004602052604090205460ff16155b801561265e57506001600160a01b0383165f9081526004602052604090205460ff16155b801561267557506001600160a01b03821661dead14155b801561268957506001600160a01b03821615155b801561269e57506001600160a01b0383163014155b9392505050565b5f806126b18385613354565b90508381101561269e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109bc565b6010805460ff191660011790556040805160608101825260095461ffff808216835262010000820481166020840152600160201b90910416918101829052905f0361274e57506129ed565b305f908152600360209081526040808320600c546001600160a01b031684529091529020545f19146127a357305f908152600360209081526040808320600c546001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106127d6576127d66131cb565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561282d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612851919061327c565b81600181518110612864576128646131cb565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac947906128a99086905f90869030904290600401613297565b5f604051808303815f87803b1580156128c0575f80fd5b505af19250505080156128d1575060015b6128dc5750506129ed565b5f4790505f80846040015161ffff16856020015161ffff16846128ff9190613157565b6129099190613199565b90505f61291682856131b8565b865190915061ffff161561297e57600e546040516001600160a01b03909116906188b89083905f818181858888f193505050503d805f8114612973576040519150601f19603f3d011682016040523d82523d5f602084013e612978565b606091505b50909350505b602086015161ffff16156129e657600f546040516001600160a01b03909116906188b89084905f818181858888f193505050503d805f81146129db576040519150601f19603f3d011682016040523d82523d5f602084013e6129e0565b606091505b50909350505b5050505050505b506010805460ff19169055565b601554610100900460ff1615612a5e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016109bc565b612a6882826125bf565b158015612a825750600d546001600160a01b038281169116145b156113f4576001600160a01b0382165f9081526004602090815260408083208054600160ff1991821681179092556005845293829020805490941681179093556015805461010061ff00199182168117909255601080549091169091179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579101611838565b5f808415612b22575060085461ffff16612b4b565b8315612b3b575060085462010000900461ffff16612b4b565b50600854600160201b900461ffff165b5f612710612b598386613157565b612b639190613199565b305f90815260208190526040812080549293508392839290612b86908490613354565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612bd582866131b8565b98975050505050505050565b5f6020808352835180828501525f5b81811015612c0c57858101830151858201604001528201612bf0565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d63575f80fd5b5f8060408385031215612c51575f80fd5b8235612c5c81612c2c565b946020939093013593505050565b5f60208284031215612c7a575f80fd5b5035919050565b5f805f60608486031215612c93575f80fd5b8335612c9e81612c2c565b92506020840135612cae81612c2c565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612cfc57612cfc612cbf565b604052919050565b5f67ffffffffffffffff821115612d1d57612d1d612cbf565b5060051b60200190565b5f82601f830112612d36575f80fd5b81356020612d4b612d4683612d04565b612cd3565b82815260059290921b84018101918181019086841115612d69575f80fd5b8286015b84811015612d8d578035612d8081612c2c565b8352918301918301612d6d565b509695505050505050565b5f8060408385031215612da9575f80fd5b823567ffffffffffffffff80821115612dc0575f80fd5b612dcc86838701612d27565b9350602091508185013581811115612de2575f80fd5b85019050601f81018613612df4575f80fd5b8035612e02612d4682612d04565b81815260059190911b82018301908381019088831115612e20575f80fd5b928401925b82841015612e3e57833582529284019290840190612e25565b80955050505050509250929050565b803561ffff81168114612e5e575f80fd5b919050565b5f805f60608486031215612e75575f80fd5b612e7e84612e4d565b9250612e8c60208501612e4d565b9150612e9a60408501612e4d565b90509250925092565b5f60208284031215612eb3575f80fd5b813561269e81612c2c565b80358015158114612e5e575f80fd5b5f8060408385031215612ede575f80fd5b8235612ee981612c2c565b9150612ef760208401612ebe565b90509250929050565b5f8060408385031215612f11575f80fd5b823567ffffffffffffffff80821115612f28575f80fd5b612f3486838701612d27565b9350602091508185013581811115612f4a575f80fd5b85019050601f81018613612f5c575f80fd5b8035612f6a612d4682612d04565b81815260059190911b82018301908381019088831115612f88575f80fd5b928401925b82841015612e3e57612f9e84612ebe565b82529284019290840190612f8d565b5f8060408385031215612fbe575f80fd5b612fc783612e4d565b9150612ef760208401612e4d565b5f8060408385031215612fe6575f80fd5b612ee983612ebe565b5f8060408385031215613000575f80fd5b823561300b81612c2c565b9150602083013561301b81612c2c565b809150509250929050565b5f805f8060808587031215613039575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156130a357815f190482111561308957613089613055565b8085161561309657918102915b93841c939080029061306e565b509250929050565b5f826130b957506001610965565b816130c557505f610965565b81600181146130db57600281146130e557613101565b6001915050610965565b60ff8411156130f6576130f6613055565b50506001821b610965565b5060208310610133831016604e8410600b8410161715613124575081810a610965565b61312e8383613069565b805f190482111561314157613141613055565b029392505050565b5f61269e60ff8416836130ab565b808202811582820484141761096557610965613055565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b5f826131b357634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561096557610965613055565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff81036131f4576131f4613055565b60010192915050565b61ffff81811683821601908082111561321857613218613055565b5092915050565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b5f6020828403121561328c575f80fd5b815161269e81612c2c565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156132e55784516001600160a01b0316835293830193918301916001016132c0565b50506001600160a01b03969096166060850152505050608001529392505050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b808201808211156109655761096561305556fea26469706673582212205e45732616da51155c997ad27c5e0b98c0c355f3d2a9b0851ebb936c52785bcd64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106102dc575f3560e01c806370a0823111610189578063bfc2fc35116100d8578063dd62ed3e11610092578063f8b45b051161006d578063f8b45b05146108bd578063f94aa1b4146108d2578063fb78680d14610918578063fdb78c0e14610937575f80fd5b8063dd62ed3e14610846578063eafb5a3c1461088a578063ee5d9c2d146108a9575f80fd5b8063bfc2fc3514610790578063c18bc195146107af578063c31fe80a146107ce578063c8c8ebe4146107e3578063cf847706146107f8578063d3f6a15714610827575f80fd5b806394b954d611610143578063b1b08f711161011e578063b1b08f71146104a2578063b3d514fb146104a2578063b7df8b3614610758578063bcd96a2514610771575f80fd5b806394b954d6146106ef57806395d89b411461070e578063a9059cbb14610739575f80fd5b806370a0823114610652578063715018a61461067157806380c581d114610685578063893d20e8146106a45780638a63bd9b146106c75780638a8c523c146106db575f80fd5b80632e8fa821116102455780634ada218b116101ff5780634fbee193116101da5780634fbee193146105bf57806350a8e016146105f6578063590ffdce146106145780636492048014610633575f80fd5b80634ada218b146105685780634e718e48146105815780634fb2e45d146105a0575f80fd5b80632e8fa821146104b7578063313ce567146104cc57806332cde664146104e75780633bbac57914610506578063452ed4f11461053457806346ea7ac814610553575f80fd5b806318160ddd1161029657806318160ddd1461041a578063203e727e1461042e57806323b872dd1461044f5780632610eaca1461046e578063285777511461048d5780632b28fc7a146104a2575f80fd5b806303fd2a45146102e75780630445b66714610319578063069d955f1461033c57806306fdde03146103905780630758d924146103cc578063095ea7b3146103eb575f80fd5b366102e357005b5f80fd5b3480156102f2575f80fd5b506102fc61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610324575f80fd5b5061032e60115481565b604051908152602001610310565b348015610347575f80fd5b5060085461036b9061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610310565b34801561039b575f80fd5b5060408051808201909152600b81526a2437ba2437b732bca13ab760a91b60208201525b6040516103109190612be1565b3480156103d7575f80fd5b50600c546102fc906001600160a01b031681565b3480156103f6575f80fd5b5061040a610405366004612c40565b610955565b6040519015158152602001610310565b348015610425575f80fd5b5061032e61096b565b348015610439575f80fd5b5061044d610448366004612c6a565b61098c565b005b34801561045a575f80fd5b5061040a610469366004612c81565b610a71565b348015610479575f80fd5b5061044d610488366004612d98565b610ae6565b348015610498575f80fd5b5061032e60145481565b3480156104ad575f80fd5b5061032e6107d081565b3480156104c2575f80fd5b5061032e60125481565b3480156104d7575f80fd5b5060405160128152602001610310565b3480156104f2575f80fd5b5061044d610501366004612e63565b610c14565b348015610511575f80fd5b5061040a610520366004612ea3565b60066020525f908152604090205460ff1681565b34801561053f575f80fd5b50600d546102fc906001600160a01b031681565b34801561055e575f80fd5b5061032e610bb881565b348015610573575f80fd5b5060155461040a9060ff1681565b34801561058c575f80fd5b5061044d61059b366004612c6a565b610d5b565b3480156105ab575f80fd5b5061044d6105ba366004612ea3565b610dd8565b3480156105ca575f80fd5b5061040a6105d9366004612ea3565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610601575f80fd5b5060155461040a90610100900460ff1681565b34801561061f575f80fd5b5061044d61062e366004612ecd565b610f2b565b34801561063e575f80fd5b5061044d61064d366004612c6a565b610f85565b34801561065d575f80fd5b5061032e61066c366004612ea3565b61125c565b34801561067c575f80fd5b5061044d611276565b348015610690575f80fd5b5061044d61069f366004612ecd565b611316565b3480156106af575f80fd5b506015546201000090046001600160a01b03166102fc565b3480156106d2575f80fd5b5061040a6113f8565b3480156106e6575f80fd5b5061044d611449565b3480156106fa575f80fd5b5061044d610709366004612f00565b611598565b348015610719575f80fd5b5060408051808201909152600381526224242160e91b60208201526103bf565b348015610744575f80fd5b5061040a610753366004612c40565b611697565b348015610763575f80fd5b5060135461040a9060ff1681565b34801561077c575f80fd5b5061044d61078b366004612fad565b6116ad565b34801561079b575f80fd5b5061044d6107aa366004612fd5565b6117b5565b3480156107ba575f80fd5b5061044d6107c9366004612c6a565b611844565b3480156107d9575f80fd5b5061032e60075481565b3480156107ee575f80fd5b5061032e600b5481565b348015610803575f80fd5b5060095461036b9061ffff80821691620100008104821691600160201b9091041683565b348015610832575f80fd5b5061044d610841366004612fef565b611915565b348015610851575f80fd5b5061032e610860366004612fef565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610895575f80fd5b5061044d6108a4366004612ea3565b611973565b3480156108b4575f80fd5b5061044d611c9d565b3480156108c8575f80fd5b5061032e600a5481565b3480156108dd575f80fd5b50600e54600f546108f8916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610310565b348015610923575f80fd5b5061044d610932366004613026565b611d66565b348015610942575f80fd5b5060105461040a90610100900460ff1681565b5f610961338484611f80565b5060015b92915050565b5f6109786012600a613149565b6109879064a0a7347400613157565b905090565b6015546201000090046001600160a01b031633146109c55760405162461bcd60e51b81526004016109bc9061316e565b60405180910390fd5b620f42406109d56012600a613149565b6109e49064a0a7347400613157565b6109ee9190613199565b811015610a595760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74206044820152726c6f776572207468616e20302e30303030312560681b60648201526084016109bc565b610a6b81670de0b6b3a7640000613157565b600b5550565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610ad3576001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610acd9084906131b8565b90915550505b610ade848484612078565b949350505050565b6015546201000090046001600160a01b03163314610b165760405162461bcd60e51b81526004016109bc9061316e565b8051825114610b5f5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b60448201526064016109bc565b5f5b82518160ff161015610c0f57818160ff1681518110610b8257610b826131cb565b6020026020010151610b933361125c565b1015610b9d575f80fd5b610bfc33848360ff1681518110610bb657610bb66131cb565b60200260200101516012600a610bcc9190613149565b858560ff1681518110610be157610be16131cb565b6020026020010151610bf39190613157565b5f806001612385565b5080610c07816131df565b915050610b61565b505050565b6015546201000090046001600160a01b03163314610c445760405162461bcd60e51b81526004016109bc9061316e565b6107d08361ffff1611158015610c6057506107d08261ffff1611155b8015610c7257506107d08161ffff1611155b610cbe5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016109bc565b610bb8610ccb83856131fd565b61ffff161115610d1d5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e60448201526064016109bc565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6015546201000090046001600160a01b03163314610d8b5760405162461bcd60e51b81526004016109bc9061316e565b60c8811115610dd35760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba1039b2ba1030b137bb329019129760611b60448201526064016109bc565b601455565b6015546201000090046001600160a01b03163314610e085760405162461bcd60e51b81526004016109bc9061316e565b6001600160a01b038116610e2e5760405162461bcd60e51b81526004016109bc9061321f565b61deac196001600160a01b03821601610e595760405162461bcd60e51b81526004016109bc9061321f565b601580546001600160a01b03620100009182900481165f90815260056020526040808220805460ff199081169091558684168352908220805490911660011790559254610ea89290041661125c565b1115610ed057601554610ece906201000090046001600160a01b031682610bf38261125c565b505b601580546001600160a01b038381166201000081810262010000600160b01b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6015546201000090046001600160a01b03163314610f5b5760405162461bcd60e51b81526004016109bc9061316e565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6040805160608101825260095461ffff808216835262010000820481166020840152600160201b90910416918101829052905f03610fc1575050565b305f908152600360209081526040808320600c546001600160a01b031684529091529020545f191461101657305f908152600360209081526040808320600c546001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611049576110496131cb565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c4919061327c565b816001815181106110d7576110d76131cb565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac9479061111c9086905f90869030904290600401613297565b5f604051808303815f87803b158015611133575f80fd5b505af1158015611145573d5f803e3d5ffd5b505050505f4790505f80846040015161ffff16856020015161ffff168461116c9190613157565b6111769190613199565b90505f61118382856131b8565b865190915061ffff16156111eb57600e546040516001600160a01b03909116906188b89083905f818181858888f193505050503d805f81146111e0576040519150601f19603f3d011682016040523d82523d5f602084013e6111e5565b606091505b50909350505b602086015161ffff161561125357600f546040516001600160a01b03909116906188b89084905f818181858888f193505050503d805f8114611248576040519150601f19603f3d011682016040523d82523d5f602084013e61124d565b606091505b50909350505b50505050505050565b6001600160a01b03165f9081526020819052604090205490565b6015546201000090046001600160a01b031633146112a65760405162461bcd60e51b81526004016109bc9061316e565b601580546001600160a01b03620100009182900481165f90815260056020526040808220805460ff19169055845462010000600160b01b03198116909555519290930416919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546201000090046001600160a01b031633146113465760405162461bcd60e51b81526004016109bc9061316e565b8015155f0361137057506001600160a01b03165f908152600160205260409020805460ff19169055565b600254156113ca576203f4806002544261138a91906131b8565b116113ca5760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b60448201526064016109bc565b6001600160a01b0382165f908152600160208190526040909120805460ff19169091179055426002555b5050565b6015545f906201000090046001600160a01b0316331461142a5760405162461bcd60e51b81526004016109bc9061316e565b600c546114439030906001600160a01b03165f19611f80565b50600190565b6015546201000090046001600160a01b031633146114795760405162461bcd60e51b81526004016109bc9061316e565b60155460ff16156114cc5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016109bc565b601554610100900460ff166115235760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016109bc565b6015805460ff1916600117905542600755600d546127109061154d906001600160a01b031661125c565b61155890600f613157565b6115629190613199565b601155600d546127109061157e906001600160a01b031661125c565b61158990601e613157565b6115939190613199565b601255565b6015546201000090046001600160a01b031633146115c85760405162461bcd60e51b81526004016109bc9061316e565b80518251146116115760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b60448201526064016109bc565b5f5b82518160ff161015610c0f57818160ff1681518110611634576116346131cb565b602002602001015160065f858460ff1681518110611654576116546131cb565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061168f816131df565b915050611613565b5f6116a3338484612078565b5060019392505050565b6015546201000090046001600160a01b031633146116dd5760405162461bcd60e51b81526004016109bc9061316e565b6009805463ffffffff19166201000061ffff8481169190910261ffff19169190911790841617905561170f82826131fd565b6009805465ffff000000001916600160201b61ffff938416021790556008545f9161174391620100008104821691166131fd565b60095461ffff9182169250600160201b900416811015610c0f5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b60648201526084016109bc565b6015546201000090046001600160a01b031633146117e55760405162461bcd60e51b81526004016109bc9061316e565b6010805461ff001916610100841515908102919091179091556013805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6015546201000090046001600160a01b031633146118745760405162461bcd60e51b81526004016109bc9061316e565b620f42406118846012600a613149565b6118939064a0a7347400613157565b61189d9190613199565b8110156118fd5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015267302e30303030312560c01b60648201526084016109bc565b61190f81670de0b6b3a7640000613157565b600a5550565b6015546201000090046001600160a01b031633146119455760405162461bcd60e51b81526004016109bc9061316e565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b6015546201000090046001600160a01b031633146119a35760405162461bcd60e51b81526004016109bc9061316e565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a08919061327c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a77919061327c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611ac0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae4919061327c565b90506001600160a01b038116611c5657816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b54919061327c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bc3919061327c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611c0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c31919061327c565b600d80546001600160a01b0319166001600160a01b0392909216919091179055611c72565b600d80546001600160a01b0319166001600160a01b0383161790555b600c80546001600160a01b0319166001600160a01b038416908117909155610c0f9030905f19611f80565b6015546201000090046001600160a01b03163314611ccd5760405162461bcd60e51b81526004016109bc9061316e565b601554610100900460ff1615611d255760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e0000000060448201526064016109bc565b6015546040516001600160a01b036201000090920491909116904780156108fc02915f818181858888f19350505050158015611d63573d5f803e3d5ffd5b50565b6015546201000090046001600160a01b03163314611d965760405162461bcd60e51b81526004016109bc9061316e565b8284611da46012600a613149565b611db39064a0a7347400613157565b611dbd9190613157565b611dc79190613199565b6011558082611dd86012600a613149565b611de79064a0a7347400613157565b611df19190613157565b611dfb9190613199565b60128190556011541115611e5b5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b60648201526084016109bc565b600d5461271090611e74906001600160a01b031661125c565b611e7f906096613157565b611e899190613199565b6012541115611ee65760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b60648201526084016109bc565b620f4240611ef66012600a613149565b611f059064a0a7347400613157565b611f0f9190613199565b6012541015611f305760405162461bcd60e51b81526004016109bc90613306565b620f4240611f406012600a613149565b611f4f9064a0a7347400613157565b611f599190613199565b6011541015611f7a5760405162461bcd60e51b81526004016109bc90613306565b50505050565b6001600160a01b038316611fcc5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109bc565b6001600160a01b0382166120185760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109bc565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166120dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bc565b6001600160a01b03831661213f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bc565b5f82116121a05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109bc565b6001600160a01b0384165f908152600160205260408120548190819060ff16156121cd57600192506121fa565b6001600160a01b0386165f9081526001602052604090205460ff16156121f657600191506121fa565b5060015b61220487876125bf565b156122dd5760155460ff1661225b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016109bc565b60155460ff16801561227b5750600754612277906103846126a5565b4211155b801561229f57506001600160a01b0386165f9081526006602052604090205460ff16155b156122dd5760405162461bcd60e51b815260206004820152600e60248201526d10d85b9b9bdd08189d5e481e595d60921b60448201526064016109bc565b811561236c5760105460ff1661236c57601054610100900460ff161561236c575f6123073061125c565b9050601154811061236a5760125460135460ff161561235457601454600d54612710919061233d906001600160a01b031661125c565b6123479190613157565b6123519190613199565b90505b80821061235f578091505b61236882612703565b505b505b61237a878787868686612385565b979650505050505050565b6015545f90610100900460ff1661241f576123a087876129fa565b601554610100900460ff161580156123bd57506123bd87876125bf565b80156123c7575081155b1561241f5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b60648201526084016109bc565b6001600160a01b0387165f9081526005602052604090205460019060ff168061245f57506001600160a01b0387165f9081526005602052604090205460ff165b1561246b57505f6124e4565b6001600160a01b0387165f9081526005602052604090205460ff166124e457600a546124968861125c565b6124a09088613354565b11156124e45760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109bc565b6001600160a01b0388165f908152602081905260408120805488929061250b9084906131b8565b909155505f90508161251d5786612529565b6125298987878a612b0d565b9050805f808a6001600160a01b03166001600160a01b031681526020019081526020015f205f82825461255c9190613354565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125a891815260200190565b60405180910390a350600198975050505050505050565b6015545f906001600160a01b038481166201000090920416148015906125f957506015546001600160a01b03838116620100009092041614155b801561261657506015546201000090046001600160a01b03163214155b801561263a57506001600160a01b0382165f9081526004602052604090205460ff16155b801561265e57506001600160a01b0383165f9081526004602052604090205460ff16155b801561267557506001600160a01b03821661dead14155b801561268957506001600160a01b03821615155b801561269e57506001600160a01b0383163014155b9392505050565b5f806126b18385613354565b90508381101561269e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109bc565b6010805460ff191660011790556040805160608101825260095461ffff808216835262010000820481166020840152600160201b90910416918101829052905f0361274e57506129ed565b305f908152600360209081526040808320600c546001600160a01b031684529091529020545f19146127a357305f908152600360209081526040808320600c546001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106127d6576127d66131cb565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561282d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612851919061327c565b81600181518110612864576128646131cb565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac947906128a99086905f90869030904290600401613297565b5f604051808303815f87803b1580156128c0575f80fd5b505af19250505080156128d1575060015b6128dc5750506129ed565b5f4790505f80846040015161ffff16856020015161ffff16846128ff9190613157565b6129099190613199565b90505f61291682856131b8565b865190915061ffff161561297e57600e546040516001600160a01b03909116906188b89083905f818181858888f193505050503d805f8114612973576040519150601f19603f3d011682016040523d82523d5f602084013e612978565b606091505b50909350505b602086015161ffff16156129e657600f546040516001600160a01b03909116906188b89084905f818181858888f193505050503d805f81146129db576040519150601f19603f3d011682016040523d82523d5f602084013e6129e0565b606091505b50909350505b5050505050505b506010805460ff19169055565b601554610100900460ff1615612a5e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016109bc565b612a6882826125bf565b158015612a825750600d546001600160a01b038281169116145b156113f4576001600160a01b0382165f9081526004602090815260408083208054600160ff1991821681179092556005845293829020805490941681179093556015805461010061ff00199182168117909255601080549091169091179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579101611838565b5f808415612b22575060085461ffff16612b4b565b8315612b3b575060085462010000900461ffff16612b4b565b50600854600160201b900461ffff165b5f612710612b598386613157565b612b639190613199565b305f90815260208190526040812080549293508392839290612b86908490613354565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612bd582866131b8565b98975050505050505050565b5f6020808352835180828501525f5b81811015612c0c57858101830151858201604001528201612bf0565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d63575f80fd5b5f8060408385031215612c51575f80fd5b8235612c5c81612c2c565b946020939093013593505050565b5f60208284031215612c7a575f80fd5b5035919050565b5f805f60608486031215612c93575f80fd5b8335612c9e81612c2c565b92506020840135612cae81612c2c565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612cfc57612cfc612cbf565b604052919050565b5f67ffffffffffffffff821115612d1d57612d1d612cbf565b5060051b60200190565b5f82601f830112612d36575f80fd5b81356020612d4b612d4683612d04565b612cd3565b82815260059290921b84018101918181019086841115612d69575f80fd5b8286015b84811015612d8d578035612d8081612c2c565b8352918301918301612d6d565b509695505050505050565b5f8060408385031215612da9575f80fd5b823567ffffffffffffffff80821115612dc0575f80fd5b612dcc86838701612d27565b9350602091508185013581811115612de2575f80fd5b85019050601f81018613612df4575f80fd5b8035612e02612d4682612d04565b81815260059190911b82018301908381019088831115612e20575f80fd5b928401925b82841015612e3e57833582529284019290840190612e25565b80955050505050509250929050565b803561ffff81168114612e5e575f80fd5b919050565b5f805f60608486031215612e75575f80fd5b612e7e84612e4d565b9250612e8c60208501612e4d565b9150612e9a60408501612e4d565b90509250925092565b5f60208284031215612eb3575f80fd5b813561269e81612c2c565b80358015158114612e5e575f80fd5b5f8060408385031215612ede575f80fd5b8235612ee981612c2c565b9150612ef760208401612ebe565b90509250929050565b5f8060408385031215612f11575f80fd5b823567ffffffffffffffff80821115612f28575f80fd5b612f3486838701612d27565b9350602091508185013581811115612f4a575f80fd5b85019050601f81018613612f5c575f80fd5b8035612f6a612d4682612d04565b81815260059190911b82018301908381019088831115612f88575f80fd5b928401925b82841015612e3e57612f9e84612ebe565b82529284019290840190612f8d565b5f8060408385031215612fbe575f80fd5b612fc783612e4d565b9150612ef760208401612e4d565b5f8060408385031215612fe6575f80fd5b612ee983612ebe565b5f8060408385031215613000575f80fd5b823561300b81612c2c565b9150602083013561301b81612c2c565b809150509250929050565b5f805f8060808587031215613039575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156130a357815f190482111561308957613089613055565b8085161561309657918102915b93841c939080029061306e565b509250929050565b5f826130b957506001610965565b816130c557505f610965565b81600181146130db57600281146130e557613101565b6001915050610965565b60ff8411156130f6576130f6613055565b50506001821b610965565b5060208310610133831016604e8410600b8410161715613124575081810a610965565b61312e8383613069565b805f190482111561314157613141613055565b029392505050565b5f61269e60ff8416836130ab565b808202811582820484141761096557610965613055565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b5f826131b357634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561096557610965613055565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff81036131f4576131f4613055565b60010192915050565b61ffff81811683821601908082111561321857613218613055565b5092915050565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b5f6020828403121561328c575f80fd5b815161269e81612c2c565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156132e55784516001600160a01b0316835293830193918301916001016132c0565b50506001600160a01b03969096166060850152505050608001529392505050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b808201808211156109655761096561305556fea26469706673582212205e45732616da51155c997ad27c5e0b98c0c355f3d2a9b0851ebb936c52785bcd64736f6c63430008140033

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.