ETH Price: $1,984.30 (-4.35%)
 

Overview

ETH Balance

0.000238166461252644 ETH

Eth Value

$0.47 (@ $1,984.30/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve233342642025-09-10 17:49:47169 days ago1757526587IN
0x4E4468Bd...FD6F0955c
0 ETH0.000037240.80007939
Manualswap207436382024-09-13 18:59:47530 days ago1726253987IN
0x4E4468Bd...FD6F0955c
0 ETH0.000426292.4441819
Set Tax Wallet207436342024-09-13 18:58:59530 days ago1726253939IN
0x4E4468Bd...FD6F0955c
0 ETH0.000088292.5593656
Manualsend207435732024-09-13 18:46:35530 days ago1726253195IN
0x4E4468Bd...FD6F0955c
0 ETH0.000087662.796953
Manualsend206381732024-08-30 1:40:35545 days ago1724982035IN
0x4E4468Bd...FD6F0955c
0 ETH0.000082961.18964895
Set Tax Wallet206381712024-08-30 1:40:11545 days ago1724982011IN
0x4E4468Bd...FD6F0955c
0 ETH0.000037941.1
Approve202041242024-06-30 11:12:23606 days ago1719745943IN
0x4E4468Bd...FD6F0955c
0 ETH0.000121932.63489555
Approve176376792023-07-06 22:09:11965 days ago1688681351IN
0x4E4468Bd...FD6F0955c
0 ETH0.0010886523.37870189
Approve173734342023-05-30 18:11:231003 days ago1685470283IN
0x4E4468Bd...FD6F0955c
0 ETH0.0027072658.49995103
Approve171371142023-04-27 11:07:351036 days ago1682593655IN
0x4E4468Bd...FD6F0955c
0 ETH0.0008461934.7628162
Approve170725812023-04-18 9:07:231045 days ago1681808843IN
0x4E4468Bd...FD6F0955c
0 ETH0.0008004132.88200912
Approve164581402023-01-21 22:23:351131 days ago1674339815IN
0x4E4468Bd...FD6F0955c
0 ETH0.0007142215.31816692
Approve160533582022-11-26 9:46:351188 days ago1669455995IN
0x4E4468Bd...FD6F0955c
0 ETH0.0005085910.90803439
Approve159001062022-11-05 0:02:111209 days ago1667606531IN
0x4E4468Bd...FD6F0955c
0 ETH0.0003341813.72894029
Approve158777512022-11-01 21:06:111212 days ago1667336771IN
0x4E4468Bd...FD6F0955c
0 ETH0.0011141623.89573385
Approve156838332022-10-05 18:56:471239 days ago1664996207IN
0x4E4468Bd...FD6F0955c
0 ETH0.0009254319.84801279
Approve152595762022-08-01 23:17:511304 days ago1659395871IN
0x4E4468Bd...FD6F0955c
0 ETH0.000201648.28371865
Approve152573552022-08-01 14:57:241305 days ago1659365844IN
0x4E4468Bd...FD6F0955c
0 ETH0.0008071317.31078376
Transfer152471692022-07-31 1:01:031306 days ago1659229263IN
0x4E4468Bd...FD6F0955c
0 ETH0.00165325.28251514
Approve151771202022-07-20 3:25:021317 days ago1658287502IN
0x4E4468Bd...FD6F0955c
0 ETH0.0005825812.49483507
Approve151736772022-07-19 14:48:591318 days ago1658242139IN
0x4E4468Bd...FD6F0955c
0 ETH0.0029026862.2547476
Approve151736612022-07-19 14:46:291318 days ago1658241989IN
0x4E4468Bd...FD6F0955c
0 ETH0.0024567252.69005601
Approve151736442022-07-19 14:43:071318 days ago1658241787IN
0x4E4468Bd...FD6F0955c
0 ETH0.0025768955.26724313
Approve151736252022-07-19 14:39:391318 days ago1658241579IN
0x4E4468Bd...FD6F0955c
0 ETH0.0035144175.37457352
Approve151736192022-07-19 14:37:371318 days ago1658241457IN
0x4E4468Bd...FD6F0955c
0 ETH0.0035448376.0270353
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer207436382024-09-13 18:59:47530 days ago1726253987
0x4E4468Bd...FD6F0955c
0.00023816 ETH
Transfer206381732024-08-30 1:40:35545 days ago1724982035
0x4E4468Bd...FD6F0955c
0.09489737 ETH
Transfer206381732024-08-30 1:40:35545 days ago1724982035
0x4E4468Bd...FD6F0955c
0.09489737 ETH
Transfer202041582024-06-30 11:19:11606 days ago1719746351
0x4E4468Bd...FD6F0955c
0.00021979 ETH
Add Liquidity ET...202041582024-06-30 11:19:11606 days ago1719746351
0x4E4468Bd...FD6F0955c
0.00343484 ETH
Transfer202041582024-06-30 11:19:11606 days ago1719746351
0x4E4468Bd...FD6F0955c
0.00686968 ETH
Transfer202041582024-06-30 11:19:11606 days ago1719746351
0x4E4468Bd...FD6F0955c
0.00686968 ETH
Transfer202041582024-06-30 11:19:11606 days ago1719746351
0x4E4468Bd...FD6F0955c
0.0171742 ETH
Transfer157499632022-10-15 0:34:471230 days ago1665794087
0x4E4468Bd...FD6F0955c
0.00002643 ETH
Add Liquidity ET...157499632022-10-15 0:34:471230 days ago1665794087
0x4E4468Bd...FD6F0955c
0.013386 ETH
Transfer157499632022-10-15 0:34:471230 days ago1665794087
0x4E4468Bd...FD6F0955c
0.02677201 ETH
Transfer157499632022-10-15 0:34:471230 days ago1665794087
0x4E4468Bd...FD6F0955c
0.02677201 ETH
Transfer157499632022-10-15 0:34:471230 days ago1665794087
0x4E4468Bd...FD6F0955c
0.06693004 ETH
Add Liquidity ET...157499472022-10-15 0:31:351230 days ago1665793895
0x4E4468Bd...FD6F0955c
0.00725213 ETH
Transfer157499472022-10-15 0:31:351230 days ago1665793895
0x4E4468Bd...FD6F0955c
0.01450427 ETH
Transfer157499472022-10-15 0:31:351230 days ago1665793895
0x4E4468Bd...FD6F0955c
0.01450427 ETH
Transfer157499472022-10-15 0:31:351230 days ago1665793895
0x4E4468Bd...FD6F0955c
0.03626068 ETH
Add Liquidity ET...156838382022-10-05 18:57:471239 days ago1664996267
0x4E4468Bd...FD6F0955c
0.00465604 ETH
Transfer156838382022-10-05 18:57:471239 days ago1664996267
0x4E4468Bd...FD6F0955c
0.00931209 ETH
Transfer156838382022-10-05 18:57:471239 days ago1664996267
0x4E4468Bd...FD6F0955c
0.00931209 ETH
Transfer156838382022-10-05 18:57:471239 days ago1664996267
0x4E4468Bd...FD6F0955c
0.02328023 ETH
Add Liquidity ET...152471692022-07-31 1:01:031306 days ago1659229263
0x4E4468Bd...FD6F0955c
0.00486946 ETH
Transfer152471692022-07-31 1:01:031306 days ago1659229263
0x4E4468Bd...FD6F0955c
0.00973892 ETH
Transfer152471692022-07-31 1:01:031306 days ago1659229263
0x4E4468Bd...FD6F0955c
0.00973892 ETH
Transfer152471692022-07-31 1:01:031306 days ago1659229263
0x4E4468Bd...FD6F0955c
0.02434731 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:
S3XYTWITT3R

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-04-23
*/

/*

S3XY TWITT3R (S3XY) 

Telegram :
https://t.me/S3XYTwitt3r

Twitter : 
https://twitter.com/s3xytwitt3r

Website: 
S3xytwitt3r.com

*/

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract S3XYTWITT3R is Context, IERC20, Ownable {
    
    using SafeMath for uint256;

    string private constant _name = "S3XY TWITT3R";
    string private constant _symbol = "S3XY";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 46500000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    //Buy Fee
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _marketingFeeOnBuy = 600; //100 = 1%
    uint256 private _liquidityFeeOnBuy = 300; //100 = 1%
    
    //Sell Fee
    uint256 private _redisFeeOnSell = 0;
    uint256 private _marketingFeeOnSell = 600; //100 = 1%
    uint256 private _liquidityFeeOnSell = 300; //100 = 1%
    
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _marketingFeeOnSell.add(_liquidityFeeOnSell).div(100);
    
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    
    mapping(address => bool) public bots;
    mapping (address => bool) public preTrader;
    
    address payable private _taxWallet1 = payable(0x770d59467036325d0f8FDE184FE57f74FcB1ef41);
    address payable private _taxWallet2 = payable(0xD795c0f54CCFB0a0aB9E2e323F4C591AFcce3c63);
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
    
    uint256 public _maxTxAmount = _tTotal.mul(30).div(10000); //0.30%
    uint256 public _maxWalletSize = _tTotal.mul(50).div(10000); //0.50%
    uint256 public _swapTokensAtAmount = _tTotal.mul(10).div(10000); //0.1%

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        
        _rOwned[_msgSender()] = _rTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet1] = true;
        _isExcludedFromFee[_taxWallet2] = true;
        
        preTrader[owner()] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
    
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
        
        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        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");

        if (from != owner() && to != owner() && !preTrader[from] && !preTrader[to]) {
            
            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from], "TOKEN: This account cannot send tokens until trading is enabled");
            }
              
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
            
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount) {
                contractTokenBalance = _maxTxAmount;
            }
            
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapDistributeAndLiquify(contractTokenBalance);
            }
        }
        
        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
            
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _marketingFeeOnBuy.add(_liquidityFeeOnBuy).div(100);
            }
    
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _marketingFeeOnSell.add(_liquidityFeeOnSell).div(100);
            }
            
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    
    function swapDistributeAndLiquify(uint256 tokens) private {

        uint256 totalTokensFee = _marketingFeeOnSell.add(_liquidityFeeOnSell);
        uint256 halfLPFee = _liquidityFeeOnSell.div(2);

        uint256 tokensToSwapToETH = tokens.mul(_marketingFeeOnSell.add(halfLPFee)).div(totalTokensFee);

        uint256 liquidityTokens = tokens.mul(halfLPFee).div(totalTokensFee);

        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(tokensToSwapToETH);
        uint256 newETHBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethMarketingShare = newETHBalance.mul(_marketingFeeOnSell).div(totalTokensFee.sub(halfLPFee));
        uint256 ethLPShare = newETHBalance.sub(ethMarketingShare);
        
        sendETHToFee(ethMarketingShare);
        addLiquidity(liquidityTokens, ethLPShare);
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function sendETHToFee(uint256 amount) private {
        _taxWallet1.transfer(amount.div(2));
        _taxWallet2.transfer(amount.div(2));
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _taxWallet1 || _msgSender() == _taxWallet2 || _msgSender() == owner());
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _taxWallet1 || _msgSender() == _taxWallet2 || _msgSender() == owner());
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);

        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);

        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();

        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
    
        return (rSupply, tSupply);
    }
    
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 marketingFeeOnBuy, uint256 marketingFeeOnSell, uint256 liquidityFeeOnBuy, uint256 liquidityFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        
        _marketingFeeOnBuy = marketingFeeOnBuy;
        _marketingFeeOnSell = marketingFeeOnSell;
        
        _liquidityFeeOnBuy = liquidityFeeOnBuy;
        _liquidityFeeOnSell = liquidityFeeOnSell;
    
    }
    
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set marketing tax wallet
    function setTaxWallet(address payable taxWallet1, address payable taxWallet2) public onlyOwner {
        _taxWallet1 = taxWallet1;
        _taxWallet2 = taxWallet2;
    }
    
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    
    //Set MAx transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
    
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function allowPreTrading(address account, bool allowed) public onlyOwner {
        require(preTrader[account] != allowed, "TOKEN: Already enabled.");
        preTrader[account] = allowed;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowPreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"marketingFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"liquidityFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"liquidityFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"taxWallet1","type":"address"},{"internalType":"address payable","name":"taxWallet2","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001b680285512fa1e7aa0000600019620006c3565b6200002990600019620006a9565b600555600060075561025860085561012c6009556000600a55610258600b5561012c600c55600a54600d556200008c606462000078600c54600b546200045560201b62000d381790919060201c565b620004c560201b62000d9e1790919060201c565b600e819055600d54600f55601055601380546001600160a01b031990811673770d59467036325d0f8fde184fe57f74fcb1ef41179091556014805490911673d795c0f54ccfb0a0ab9e2e323f4c591afcce3c631790556016805461ffff60a81b1916600160b01b1790556200012261271062000078680285512fa1e7aa0000601e62000de06200050f602090811b91909117901c565b60175562000150612710620000786032680285512fa1e7aa00006200050f60201b62000de01790919060201c565b6018556200017e61271062000078600a680285512fa1e7aa00006200050f60201b62000de01790919060201c565b6019553480156200018e57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506005543360009081526002602090815260409182902092909255601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b1580156200024757600080fd5b505afa1580156200025c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002829190620005d2565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002cb57600080fd5b505afa158015620002e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003069190620005d2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200034f57600080fd5b505af115801562000364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038a9190620005d2565b601680546001600160a01b0319166001600160a01b039283161790556000805482168152600460209081526040808320805460ff199081166001908117909255308552828520805482168317905560135486168552828520805482168317905560145486168552828520805482168317905584549095168452601283528184208054909516179093559151680285512fa1e7aa0000815233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000706565b60008062000464838562000655565b905083811015620004bc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b6000620004bc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200059660201b60201c565b6000826200052057506000620004bf565b60006200052e838562000687565b9050826200053d858362000670565b14620004bc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401620004b3565b60008183620005ba5760405162461bcd60e51b8152600401620004b39190620005fd565b506000620005c9848662000670565b95945050505050565b600060208284031215620005e557600080fd5b81516001600160a01b0381168114620004bc57600080fd5b600060208083528351808285015260005b818110156200062c578581018301518582016040015282016200060e565b818111156200063f576000604083870101525b50601f01601f1916929092016040019392505050565b600082198211156200066b576200066b620006da565b500190565b600082620006825762000682620006f0565b500490565b6000816000190483118215151615620006a457620006a4620006da565b500290565b600082821015620006be57620006be620006da565b500390565b600082620006d557620006d5620006f0565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61227b80620007166000396000f3fe6080604052600436106101e65760003560e01c80637d1db4a511610102578063bdd795ef11610095578063dd62ed3e11610064578063dd62ed3e146105b1578063e6b0ed02146105f7578063ea1644d514610617578063f2fde38b1461063757600080fd5b8063bdd795ef1461051c578063bfd792841461054c578063c3c8cd801461057c578063c492f0461461059157600080fd5b806395d89b41116100d157806395d89b411461048f57806398a5c315146104bc578063a9059cbb146104dc578063bd9a3b6d146104fc57600080fd5b80637d1db4a5146104255780638da5cb5b1461043b5780638f70ccf7146104595780638f9a55c01461047957600080fd5b8063313ce5671161017a5780636fc3eaec116101495780636fc3eaec146103bb57806370a08231146103d0578063715018a6146103f057806374010ece1461040557600080fd5b8063313ce5671461033f57806349bd5a5e1461035b5780636b9990531461037b5780636d8aa8f81461039b57600080fd5b806318160ddd116101b657806318160ddd146102c357806323b872dd146102e95780632f9c4569146103095780632fd689e31461032957600080fd5b8062b8cf2a146101f257806306fdde0314610214578063095ea7b31461025b5780631694505e1461028b57600080fd5b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021261020d366004611ecf565b610657565b005b34801561022057600080fd5b5060408051808201909152600c81526b2999ac2c902a2ba4aa2a19a960a11b60208201525b6040516102529190612040565b60405180910390f35b34801561026757600080fd5b5061027b610276366004611e1f565b6106f6565b6040519015158152602001610252565b34801561029757600080fd5b506015546102ab906001600160a01b031681565b6040516001600160a01b039091168152602001610252565b3480156102cf57600080fd5b50680285512fa1e7aa00005b604051908152602001610252565b3480156102f557600080fd5b5061027b610304366004611da9565b61070d565b34801561031557600080fd5b50610212610324366004611dea565b610776565b34801561033557600080fd5b506102db60195481565b34801561034b57600080fd5b5060405160098152602001610252565b34801561036757600080fd5b506016546102ab906001600160a01b031681565b34801561038757600080fd5b50610212610396366004611d36565b61083a565b3480156103a757600080fd5b506102126103b6366004611f9b565b610885565b3480156103c757600080fd5b506102126108cd565b3480156103dc57600080fd5b506102db6103eb366004611d36565b61092d565b3480156103fc57600080fd5b5061021261094f565b34801561041157600080fd5b50610212610420366004611fb6565b6109c3565b34801561043157600080fd5b506102db60175481565b34801561044757600080fd5b506000546001600160a01b03166102ab565b34801561046557600080fd5b50610212610474366004611f9b565b6109f2565b34801561048557600080fd5b506102db60185481565b34801561049b57600080fd5b506040805180820190915260048152635333585960e01b6020820152610245565b3480156104c857600080fd5b506102126104d7366004611fb6565b610a3a565b3480156104e857600080fd5b5061027b6104f7366004611e1f565b610a69565b34801561050857600080fd5b50610212610517366004611ffd565b610a76565b34801561052857600080fd5b5061027b610537366004611d36565b60126020526000908152604090205460ff1681565b34801561055857600080fd5b5061027b610567366004611d36565b60116020526000908152604090205460ff1681565b34801561058857600080fd5b50610212610abd565b34801561059d57600080fd5b506102126105ac366004611e4b565b610b26565b3480156105bd57600080fd5b506102db6105cc366004611d70565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561060357600080fd5b50610212610612366004611d70565b610bc7565b34801561062357600080fd5b50610212610632366004611fb6565b610c1f565b34801561064357600080fd5b50610212610652366004611d36565b610c4e565b6000546001600160a01b0316331461068a5760405162461bcd60e51b815260040161068190612095565b60405180910390fd5b60005b81518110156106f2576001601160008484815181106106ae576106ae6121dc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806106ea816121ab565b91505061068d565b5050565b6000610703338484610e5f565b5060015b92915050565b600061071a848484610f83565b61076c84336107678560405180606001604052806028815260200161221e602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061152e565b610e5f565b5060019392505050565b6000546001600160a01b031633146107a05760405162461bcd60e51b815260040161068190612095565b6001600160a01b03821660009081526012602052604090205460ff161515811515141561080f5760405162461bcd60e51b815260206004820152601760248201527f544f4b454e3a20416c726561647920656e61626c65642e0000000000000000006044820152606401610681565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108645760405162461bcd60e51b815260040161068190612095565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6000546001600160a01b031633146108af5760405162461bcd60e51b815260040161068190612095565b60168054911515600160b01b0260ff60b01b19909216919091179055565b6013546001600160a01b0316336001600160a01b0316148061090257506014546001600160a01b0316336001600160a01b0316145b8061091757506000546001600160a01b031633145b61092057600080fd5b4761092a81611568565b50565b6001600160a01b038116600090815260026020526040812054610707906115ed565b6000546001600160a01b031633146109795760405162461bcd60e51b815260040161068190612095565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109ed5760405162461bcd60e51b815260040161068190612095565b601755565b6000546001600160a01b03163314610a1c5760405162461bcd60e51b815260040161068190612095565b60168054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610a645760405162461bcd60e51b815260040161068190612095565b601955565b6000610703338484610f83565b6000546001600160a01b03163314610aa05760405162461bcd60e51b815260040161068190612095565b600795909555600a93909355600891909155600b55600955600c55565b6013546001600160a01b0316336001600160a01b03161480610af257506014546001600160a01b0316336001600160a01b0316145b80610b0757506000546001600160a01b031633145b610b1057600080fd5b6000610b1b3061092d565b905061092a8161166a565b6000546001600160a01b03163314610b505760405162461bcd60e51b815260040161068190612095565b60005b82811015610bc1578160046000868685818110610b7257610b726121dc565b9050602002016020810190610b879190611d36565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610bb9816121ab565b915050610b53565b50505050565b6000546001600160a01b03163314610bf15760405162461bcd60e51b815260040161068190612095565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000546001600160a01b03163314610c495760405162461bcd60e51b815260040161068190612095565b601855565b6000546001600160a01b03163314610c785760405162461bcd60e51b815260040161068190612095565b6001600160a01b038116610cdd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610681565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610d45838561213b565b905083811015610d975760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610681565b9392505050565b6000610d9783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117f3565b600082610def57506000610707565b6000610dfb8385612175565b905082610e088583612153565b14610d975760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610681565b6001600160a01b038316610ec15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610681565b6001600160a01b038216610f225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610681565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fe75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610681565b6001600160a01b0382166110495760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610681565b600081116110ab5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610681565b6000546001600160a01b038481169116148015906110d757506000546001600160a01b03838116911614155b80156110fc57506001600160a01b03831660009081526012602052604090205460ff16155b801561112157506001600160a01b03821660009081526012602052604090205460ff16155b156113fb57601654600160a01b900460ff166111c5576001600160a01b03831660009081526012602052604090205460ff166111c55760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610681565b6017548111156112175760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610681565b6001600160a01b03831660009081526011602052604090205460ff1615801561125957506001600160a01b03821660009081526011602052604090205460ff16155b6112b15760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610681565b6016546001600160a01b0383811691161461133657601854816112d38461092d565b6112dd919061213b565b106113365760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610681565b60006113413061092d565b60195460175491925082101590821061135a5760175491505b8080156113715750601654600160a81b900460ff16155b801561138b57506016546001600160a01b03868116911614155b80156113a05750601654600160b01b900460ff165b80156113c557506001600160a01b03851660009081526004602052604090205460ff16155b80156113ea57506001600160a01b03841660009081526004602052604090205460ff16155b156113f8576113f882611821565b50505b6001600160a01b03831660009081526004602052604090205460019060ff168061143d57506001600160a01b03831660009081526004602052604090205460ff165b8061146f57506016546001600160a01b0385811691161480159061146f57506016546001600160a01b03848116911614155b1561147c57506000611522565b6016546001600160a01b0385811691161480156114a757506015546001600160a01b03848116911614155b156114d257600754600d556009546008546114ce916064916114c891610d38565b90610d9e565b600e555b6016546001600160a01b0384811691161480156114fd57506015546001600160a01b03858116911614155b1561152257600a54600d55600c54600b5461151e916064916114c891610d38565b600e555b610bc1848484846118f2565b600081848411156115525760405162461bcd60e51b81526004016106819190612040565b50600061155f8486612194565b95945050505050565b6013546001600160a01b03166108fc611582836002610d9e565b6040518115909202916000818181858888f193505050501580156115aa573d6000803e3d6000fd5b506014546001600160a01b03166108fc6115c5836002610d9e565b6040518115909202916000818181858888f193505050501580156106f2573d6000803e3d6000fd5b60006005548211156116545760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610681565b600061165e611920565b9050610d978382610d9e565b6016805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106116b2576116b26121dc565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561170657600080fd5b505afa15801561171a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173e9190611d53565b81600181518110611751576117516121dc565b6001600160a01b0392831660209182029290920101526015546117779130911684610e5f565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906117b09085906000908690309042906004016120ca565b600060405180830381600087803b1580156117ca57600080fd5b505af11580156117de573d6000803e3d6000fd5b50506016805460ff60a81b1916905550505050565b600081836118145760405162461bcd60e51b81526004016106819190612040565b50600061155f8486612153565b600061183a600c54600b54610d3890919063ffffffff16565b905060006118546002600c54610d9e90919063ffffffff16565b9050600061187b836114c861187485600b54610d3890919063ffffffff16565b8790610de0565b9050600061188d846114c88786610de0565b9050476118998361166a565b60006118a54783611943565b905060006118c46118b68888611943565b600b546114c8908590610de0565b905060006118d28383611943565b90506118dd82611568565b6118e78582611985565b505050505050505050565b806118ff576118ff611a45565b61190a848484611a73565b80610bc157610bc1600f54600d55601054600e55565b600080600061192d611b6a565b909250905061193c8282610d9e565b9250505090565b6000610d9783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061152e565b60155461199d9030906001600160a01b031684610e5f565b60155460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b158015611a0557600080fd5b505af1158015611a19573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a3e9190611fcf565b5050505050565b600d54158015611a555750600e54155b15611a5c57565b600d8054600f55600e805460105560009182905555565b600080600080600080611a8587611bac565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611ab79087611943565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611ae69086610d38565b6001600160a01b038916600090815260026020526040902055611b0881611c09565b611b128483611c53565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b5791815260200190565b60405180910390a3505050505050505050565b6005546000908190680285512fa1e7aa0000611b868282610d9e565b821015611ba357505060055492680285512fa1e7aa000092509050565b90939092509050565b6000806000806000806000806000611bc98a600d54600e54611c77565b9250925092506000611bd9611920565b90506000806000611bec8e878787611cc6565b919e509c509a509598509396509194505050505091939550919395565b6000611c13611920565b90506000611c218383610de0565b30600090815260026020526040902054909150611c3e9082610d38565b30600090815260026020526040902055505050565b600554611c609083611943565b600555600654611c709082610d38565b6006555050565b6000808080611c8b60646114c88989610de0565b90506000611c9e60646114c88a89610de0565b90506000611cb682611cb08b86611943565b90611943565b9992985090965090945050505050565b6000808080611cd58886610de0565b90506000611ce38887610de0565b90506000611cf18888610de0565b90506000611d0382611cb08686611943565b939b939a50919850919650505050505050565b8035611d2181612208565b919050565b80358015158114611d2157600080fd5b600060208284031215611d4857600080fd5b8135610d9781612208565b600060208284031215611d6557600080fd5b8151610d9781612208565b60008060408385031215611d8357600080fd5b8235611d8e81612208565b91506020830135611d9e81612208565b809150509250929050565b600080600060608486031215611dbe57600080fd5b8335611dc981612208565b92506020840135611dd981612208565b929592945050506040919091013590565b60008060408385031215611dfd57600080fd5b8235611e0881612208565b9150611e1660208401611d26565b90509250929050565b60008060408385031215611e3257600080fd5b8235611e3d81612208565b946020939093013593505050565b600080600060408486031215611e6057600080fd5b833567ffffffffffffffff80821115611e7857600080fd5b818601915086601f830112611e8c57600080fd5b813581811115611e9b57600080fd5b8760208260051b8501011115611eb057600080fd5b602092830195509350611ec69186019050611d26565b90509250925092565b60006020808385031215611ee257600080fd5b823567ffffffffffffffff80821115611efa57600080fd5b818501915085601f830112611f0e57600080fd5b813581811115611f2057611f206121f2565b8060051b604051601f19603f83011681018181108582111715611f4557611f456121f2565b604052828152858101935084860182860187018a1015611f6457600080fd5b600095505b83861015611f8e57611f7a81611d16565b855260019590950194938601938601611f69565b5098975050505050505050565b600060208284031215611fad57600080fd5b610d9782611d26565b600060208284031215611fc857600080fd5b5035919050565b600080600060608486031215611fe457600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c0878903121561201657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b8181101561206d57858101830151858201604001528201612051565b8181111561207f576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561211a5784516001600160a01b0316835293830193918301916001016120f5565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561214e5761214e6121c6565b500190565b60008261217057634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561218f5761218f6121c6565b500290565b6000828210156121a6576121a66121c6565b500390565b60006000198214156121bf576121bf6121c6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461092a57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e6f636a1f33b9166a7163def1cc12381504d703b8cca2e4121454b183a7d5e9264736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101e65760003560e01c80637d1db4a511610102578063bdd795ef11610095578063dd62ed3e11610064578063dd62ed3e146105b1578063e6b0ed02146105f7578063ea1644d514610617578063f2fde38b1461063757600080fd5b8063bdd795ef1461051c578063bfd792841461054c578063c3c8cd801461057c578063c492f0461461059157600080fd5b806395d89b41116100d157806395d89b411461048f57806398a5c315146104bc578063a9059cbb146104dc578063bd9a3b6d146104fc57600080fd5b80637d1db4a5146104255780638da5cb5b1461043b5780638f70ccf7146104595780638f9a55c01461047957600080fd5b8063313ce5671161017a5780636fc3eaec116101495780636fc3eaec146103bb57806370a08231146103d0578063715018a6146103f057806374010ece1461040557600080fd5b8063313ce5671461033f57806349bd5a5e1461035b5780636b9990531461037b5780636d8aa8f81461039b57600080fd5b806318160ddd116101b657806318160ddd146102c357806323b872dd146102e95780632f9c4569146103095780632fd689e31461032957600080fd5b8062b8cf2a146101f257806306fdde0314610214578063095ea7b31461025b5780631694505e1461028b57600080fd5b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021261020d366004611ecf565b610657565b005b34801561022057600080fd5b5060408051808201909152600c81526b2999ac2c902a2ba4aa2a19a960a11b60208201525b6040516102529190612040565b60405180910390f35b34801561026757600080fd5b5061027b610276366004611e1f565b6106f6565b6040519015158152602001610252565b34801561029757600080fd5b506015546102ab906001600160a01b031681565b6040516001600160a01b039091168152602001610252565b3480156102cf57600080fd5b50680285512fa1e7aa00005b604051908152602001610252565b3480156102f557600080fd5b5061027b610304366004611da9565b61070d565b34801561031557600080fd5b50610212610324366004611dea565b610776565b34801561033557600080fd5b506102db60195481565b34801561034b57600080fd5b5060405160098152602001610252565b34801561036757600080fd5b506016546102ab906001600160a01b031681565b34801561038757600080fd5b50610212610396366004611d36565b61083a565b3480156103a757600080fd5b506102126103b6366004611f9b565b610885565b3480156103c757600080fd5b506102126108cd565b3480156103dc57600080fd5b506102db6103eb366004611d36565b61092d565b3480156103fc57600080fd5b5061021261094f565b34801561041157600080fd5b50610212610420366004611fb6565b6109c3565b34801561043157600080fd5b506102db60175481565b34801561044757600080fd5b506000546001600160a01b03166102ab565b34801561046557600080fd5b50610212610474366004611f9b565b6109f2565b34801561048557600080fd5b506102db60185481565b34801561049b57600080fd5b506040805180820190915260048152635333585960e01b6020820152610245565b3480156104c857600080fd5b506102126104d7366004611fb6565b610a3a565b3480156104e857600080fd5b5061027b6104f7366004611e1f565b610a69565b34801561050857600080fd5b50610212610517366004611ffd565b610a76565b34801561052857600080fd5b5061027b610537366004611d36565b60126020526000908152604090205460ff1681565b34801561055857600080fd5b5061027b610567366004611d36565b60116020526000908152604090205460ff1681565b34801561058857600080fd5b50610212610abd565b34801561059d57600080fd5b506102126105ac366004611e4b565b610b26565b3480156105bd57600080fd5b506102db6105cc366004611d70565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561060357600080fd5b50610212610612366004611d70565b610bc7565b34801561062357600080fd5b50610212610632366004611fb6565b610c1f565b34801561064357600080fd5b50610212610652366004611d36565b610c4e565b6000546001600160a01b0316331461068a5760405162461bcd60e51b815260040161068190612095565b60405180910390fd5b60005b81518110156106f2576001601160008484815181106106ae576106ae6121dc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806106ea816121ab565b91505061068d565b5050565b6000610703338484610e5f565b5060015b92915050565b600061071a848484610f83565b61076c84336107678560405180606001604052806028815260200161221e602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061152e565b610e5f565b5060019392505050565b6000546001600160a01b031633146107a05760405162461bcd60e51b815260040161068190612095565b6001600160a01b03821660009081526012602052604090205460ff161515811515141561080f5760405162461bcd60e51b815260206004820152601760248201527f544f4b454e3a20416c726561647920656e61626c65642e0000000000000000006044820152606401610681565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108645760405162461bcd60e51b815260040161068190612095565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6000546001600160a01b031633146108af5760405162461bcd60e51b815260040161068190612095565b60168054911515600160b01b0260ff60b01b19909216919091179055565b6013546001600160a01b0316336001600160a01b0316148061090257506014546001600160a01b0316336001600160a01b0316145b8061091757506000546001600160a01b031633145b61092057600080fd5b4761092a81611568565b50565b6001600160a01b038116600090815260026020526040812054610707906115ed565b6000546001600160a01b031633146109795760405162461bcd60e51b815260040161068190612095565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109ed5760405162461bcd60e51b815260040161068190612095565b601755565b6000546001600160a01b03163314610a1c5760405162461bcd60e51b815260040161068190612095565b60168054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610a645760405162461bcd60e51b815260040161068190612095565b601955565b6000610703338484610f83565b6000546001600160a01b03163314610aa05760405162461bcd60e51b815260040161068190612095565b600795909555600a93909355600891909155600b55600955600c55565b6013546001600160a01b0316336001600160a01b03161480610af257506014546001600160a01b0316336001600160a01b0316145b80610b0757506000546001600160a01b031633145b610b1057600080fd5b6000610b1b3061092d565b905061092a8161166a565b6000546001600160a01b03163314610b505760405162461bcd60e51b815260040161068190612095565b60005b82811015610bc1578160046000868685818110610b7257610b726121dc565b9050602002016020810190610b879190611d36565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610bb9816121ab565b915050610b53565b50505050565b6000546001600160a01b03163314610bf15760405162461bcd60e51b815260040161068190612095565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000546001600160a01b03163314610c495760405162461bcd60e51b815260040161068190612095565b601855565b6000546001600160a01b03163314610c785760405162461bcd60e51b815260040161068190612095565b6001600160a01b038116610cdd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610681565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610d45838561213b565b905083811015610d975760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610681565b9392505050565b6000610d9783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117f3565b600082610def57506000610707565b6000610dfb8385612175565b905082610e088583612153565b14610d975760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610681565b6001600160a01b038316610ec15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610681565b6001600160a01b038216610f225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610681565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fe75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610681565b6001600160a01b0382166110495760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610681565b600081116110ab5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610681565b6000546001600160a01b038481169116148015906110d757506000546001600160a01b03838116911614155b80156110fc57506001600160a01b03831660009081526012602052604090205460ff16155b801561112157506001600160a01b03821660009081526012602052604090205460ff16155b156113fb57601654600160a01b900460ff166111c5576001600160a01b03831660009081526012602052604090205460ff166111c55760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610681565b6017548111156112175760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610681565b6001600160a01b03831660009081526011602052604090205460ff1615801561125957506001600160a01b03821660009081526011602052604090205460ff16155b6112b15760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610681565b6016546001600160a01b0383811691161461133657601854816112d38461092d565b6112dd919061213b565b106113365760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610681565b60006113413061092d565b60195460175491925082101590821061135a5760175491505b8080156113715750601654600160a81b900460ff16155b801561138b57506016546001600160a01b03868116911614155b80156113a05750601654600160b01b900460ff165b80156113c557506001600160a01b03851660009081526004602052604090205460ff16155b80156113ea57506001600160a01b03841660009081526004602052604090205460ff16155b156113f8576113f882611821565b50505b6001600160a01b03831660009081526004602052604090205460019060ff168061143d57506001600160a01b03831660009081526004602052604090205460ff165b8061146f57506016546001600160a01b0385811691161480159061146f57506016546001600160a01b03848116911614155b1561147c57506000611522565b6016546001600160a01b0385811691161480156114a757506015546001600160a01b03848116911614155b156114d257600754600d556009546008546114ce916064916114c891610d38565b90610d9e565b600e555b6016546001600160a01b0384811691161480156114fd57506015546001600160a01b03858116911614155b1561152257600a54600d55600c54600b5461151e916064916114c891610d38565b600e555b610bc1848484846118f2565b600081848411156115525760405162461bcd60e51b81526004016106819190612040565b50600061155f8486612194565b95945050505050565b6013546001600160a01b03166108fc611582836002610d9e565b6040518115909202916000818181858888f193505050501580156115aa573d6000803e3d6000fd5b506014546001600160a01b03166108fc6115c5836002610d9e565b6040518115909202916000818181858888f193505050501580156106f2573d6000803e3d6000fd5b60006005548211156116545760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610681565b600061165e611920565b9050610d978382610d9e565b6016805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106116b2576116b26121dc565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561170657600080fd5b505afa15801561171a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173e9190611d53565b81600181518110611751576117516121dc565b6001600160a01b0392831660209182029290920101526015546117779130911684610e5f565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906117b09085906000908690309042906004016120ca565b600060405180830381600087803b1580156117ca57600080fd5b505af11580156117de573d6000803e3d6000fd5b50506016805460ff60a81b1916905550505050565b600081836118145760405162461bcd60e51b81526004016106819190612040565b50600061155f8486612153565b600061183a600c54600b54610d3890919063ffffffff16565b905060006118546002600c54610d9e90919063ffffffff16565b9050600061187b836114c861187485600b54610d3890919063ffffffff16565b8790610de0565b9050600061188d846114c88786610de0565b9050476118998361166a565b60006118a54783611943565b905060006118c46118b68888611943565b600b546114c8908590610de0565b905060006118d28383611943565b90506118dd82611568565b6118e78582611985565b505050505050505050565b806118ff576118ff611a45565b61190a848484611a73565b80610bc157610bc1600f54600d55601054600e55565b600080600061192d611b6a565b909250905061193c8282610d9e565b9250505090565b6000610d9783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061152e565b60155461199d9030906001600160a01b031684610e5f565b60155460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b158015611a0557600080fd5b505af1158015611a19573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a3e9190611fcf565b5050505050565b600d54158015611a555750600e54155b15611a5c57565b600d8054600f55600e805460105560009182905555565b600080600080600080611a8587611bac565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611ab79087611943565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611ae69086610d38565b6001600160a01b038916600090815260026020526040902055611b0881611c09565b611b128483611c53565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b5791815260200190565b60405180910390a3505050505050505050565b6005546000908190680285512fa1e7aa0000611b868282610d9e565b821015611ba357505060055492680285512fa1e7aa000092509050565b90939092509050565b6000806000806000806000806000611bc98a600d54600e54611c77565b9250925092506000611bd9611920565b90506000806000611bec8e878787611cc6565b919e509c509a509598509396509194505050505091939550919395565b6000611c13611920565b90506000611c218383610de0565b30600090815260026020526040902054909150611c3e9082610d38565b30600090815260026020526040902055505050565b600554611c609083611943565b600555600654611c709082610d38565b6006555050565b6000808080611c8b60646114c88989610de0565b90506000611c9e60646114c88a89610de0565b90506000611cb682611cb08b86611943565b90611943565b9992985090965090945050505050565b6000808080611cd58886610de0565b90506000611ce38887610de0565b90506000611cf18888610de0565b90506000611d0382611cb08686611943565b939b939a50919850919650505050505050565b8035611d2181612208565b919050565b80358015158114611d2157600080fd5b600060208284031215611d4857600080fd5b8135610d9781612208565b600060208284031215611d6557600080fd5b8151610d9781612208565b60008060408385031215611d8357600080fd5b8235611d8e81612208565b91506020830135611d9e81612208565b809150509250929050565b600080600060608486031215611dbe57600080fd5b8335611dc981612208565b92506020840135611dd981612208565b929592945050506040919091013590565b60008060408385031215611dfd57600080fd5b8235611e0881612208565b9150611e1660208401611d26565b90509250929050565b60008060408385031215611e3257600080fd5b8235611e3d81612208565b946020939093013593505050565b600080600060408486031215611e6057600080fd5b833567ffffffffffffffff80821115611e7857600080fd5b818601915086601f830112611e8c57600080fd5b813581811115611e9b57600080fd5b8760208260051b8501011115611eb057600080fd5b602092830195509350611ec69186019050611d26565b90509250925092565b60006020808385031215611ee257600080fd5b823567ffffffffffffffff80821115611efa57600080fd5b818501915085601f830112611f0e57600080fd5b813581811115611f2057611f206121f2565b8060051b604051601f19603f83011681018181108582111715611f4557611f456121f2565b604052828152858101935084860182860187018a1015611f6457600080fd5b600095505b83861015611f8e57611f7a81611d16565b855260019590950194938601938601611f69565b5098975050505050505050565b600060208284031215611fad57600080fd5b610d9782611d26565b600060208284031215611fc857600080fd5b5035919050565b600080600060608486031215611fe457600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c0878903121561201657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b8181101561206d57858101830151858201604001528201612051565b8181111561207f576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561211a5784516001600160a01b0316835293830193918301916001016120f5565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561214e5761214e6121c6565b500190565b60008261217057634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561218f5761218f6121c6565b500290565b6000828210156121a6576121a66121c6565b500390565b60006000198214156121bf576121bf6121c6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461092a57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e6f636a1f33b9166a7163def1cc12381504d703b8cca2e4121454b183a7d5e9264736f6c63430008070033

Deployed Bytecode Sourcemap

4212:15990:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14704:169;;;;;;;;;;-1:-1:-1;14704:169:0;;;;;:::i;:::-;;:::i;:::-;;7023:83;;;;;;;;;;-1:-1:-1;7093:5:0;;;;;;;;;;;;-1:-1:-1;;;7093:5:0;;;;7023:83;;;;;;;:::i;:::-;;;;;;;;7948:193;;;;;;;;;;-1:-1:-1;7948:193:0;;;;;:::i;:::-;;:::i;:::-;;;6754:14:1;;6747:22;6729:41;;6717:2;6702:18;7948:193:0;6589:187:1;5765:41:0;;;;;;;;;;-1:-1:-1;5765:41:0;;;;-1:-1:-1;;;;;5765:41:0;;;;;;-1:-1:-1;;;;;5933:32:1;;;5915:51;;5903:2;5888:18;5765:41:0;5769:203:1;7300:95:0;;;;;;;;;;-1:-1:-1;4720:19:0;7300:95;;;13677:25:1;;;13665:2;13650:18;7300:95:0;13531:177:1;8149:446:0;;;;;;;;;;-1:-1:-1;8149:446:0;;;;;:::i;:::-;;:::i;20003:196::-;;;;;;;;;;-1:-1:-1;20003:196:0;;;;;:::i;:::-;;:::i;6107:63::-;;;;;;;;;;;;;;;;7209:83;;;;;;;;;;-1:-1:-1;7209:83:0;;4444:1;14840:36:1;;14828:2;14813:18;7209:83:0;14698:184:1;5813:28:0;;;;;;;;;;-1:-1:-1;5813:28:0;;;;-1:-1:-1;;;;;5813:28:0;;;14881:92;;;;;;;;;;-1:-1:-1;14881:92:0;;;;;:::i;:::-;;:::i;19619:101::-;;;;;;;;;;-1:-1:-1;19619:101:0;;;;;:::i;:::-;;:::i;14448:248::-;;;;;;;;;;;;;:::i;7403:138::-;;;;;;;;;;-1:-1:-1;7403:138:0;;;;;:::i;:::-;;:::i;1701:148::-;;;;;;;;;;;;;:::i;19759:108::-;;;;;;;;;;-1:-1:-1;19759:108:0;;;;;:::i;:::-;;:::i;5963:56::-;;;;;;;;;;;;;;;;1487:79;;;;;;;;;;-1:-1:-1;1525:7:0;1552:6;-1:-1:-1;;;;;1552:6:0;1487:79;;14082:101;;;;;;;;;;-1:-1:-1;14082:101:0;;;;;:::i;:::-;;:::i;6034:58::-;;;;;;;;;;;;;;;;7114:87;;;;;;;;;;-1:-1:-1;7186:7:0;;;;;;;;;;;;-1:-1:-1;;;7186:7:0;;;;7114:87;;19211:139;;;;;;;;;;-1:-1:-1;19211:139:0;;;;;:::i;:::-;;:::i;7549:199::-;;;;;;;;;;-1:-1:-1;7549:199:0;;;;;:::i;:::-;;:::i;18405:508::-;;;;;;;;;;-1:-1:-1;18405:508:0;;;;;:::i;:::-;;:::i;5512:42::-;;;;;;;;;;-1:-1:-1;5512:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5469:36;;;;;;;;;;-1:-1:-1;5469:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14191:249;;;;;;;;;;;;;:::i;18925:234::-;;;;;;;;;;-1:-1:-1;18925:234:0;;;;;:::i;:::-;;:::i;7756:184::-;;;;;;;;;;-1:-1:-1;7756:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7905:18:0;;;7873:7;7905:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7756:184;19390:173;;;;;;;;;;-1:-1:-1;19390:173:0;;;;;:::i;:::-;;:::i;19879:115::-;;;;;;;;;;-1:-1:-1;19879:115:0;;;;;:::i;:::-;;:::i;1857:244::-;;;;;;;;;;-1:-1:-1;1857:244:0;;;;;:::i;:::-;;:::i;14704:169::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;;;;;;;;;14780:9:::1;14775:91;14799:5;:12;14795:1;:16;14775:91;;;14850:4;14833;:14;14838:5;14844:1;14838:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14833:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14833:14:0;:21;;-1:-1:-1;;14833:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14813:3;::::1;::::0;::::1;:::i;:::-;;;;14775:91;;;;14704:169:::0;:::o;7948:193::-;8050:4;8072:39;326:10;8095:7;8104:6;8072:8;:39::i;:::-;-1:-1:-1;8129:4:0;7948:193;;;;;:::o;8149:446::-;8281:4;8298:36;8308:6;8316:9;8327:6;8298:9;:36::i;:::-;8345:220;8368:6;326:10;8416:138;8472:6;8416:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8416:19:0;;;;;;:11;:19;;;;;;;;326:10;8416:33;;;;;;;;;;:37;:138::i;:::-;8345:8;:220::i;:::-;-1:-1:-1;8583:4:0;8149:446;;;;;:::o;20003:196::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20095:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;:29;;::::0;::::1;;;;20087:65;;;::::0;-1:-1:-1;;;20087:65:0;;10993:2:1;20087:65:0::1;::::0;::::1;10975:21:1::0;11032:2;11012:18;;;11005:30;11071:25;11051:18;;;11044:53;11114:18;;20087:65:0::1;10791:347:1::0;20087:65:0::1;-1:-1:-1::0;;;;;20163:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:28;;-1:-1:-1;;20163:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20003:196::o;14881:92::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14945:12:0::1;14960:5;14945:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;14945:20:0::1;::::0;;14881:92::o;19619:101::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;19686:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;19686:26:0::1;-1:-1:-1::0;;;;19686:26:0;;::::1;::::0;;;::::1;::::0;;19619:101::o;14448:248::-;14514:11;;-1:-1:-1;;;;;14514:11:0;326:10;-1:-1:-1;;;;;14498:27:0;;:58;;;-1:-1:-1;14545:11:0;;-1:-1:-1;;;;;14545:11:0;326:10;-1:-1:-1;;;;;14529:27:0;;14498:58;:85;;;-1:-1:-1;1525:7:0;1552:6;-1:-1:-1;;;;;1552:6:0;326:10;14560:23;14498:85;14490:94;;;;;;14624:21;14656:32;14624:21;14656:12;:32::i;:::-;14479:217;14448:248::o;7403:138::-;-1:-1:-1;;;;;7516:16:0;;7469:7;7516:16;;;:7;:16;;;;;;7496:37;;:19;:37::i;1701:148::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;1808:1:::1;1792:6:::0;;1771:40:::1;::::0;-1:-1:-1;;;;;1792:6:0;;::::1;::::0;1771:40:::1;::::0;1808:1;;1771:40:::1;1839:1;1822:19:::0;;-1:-1:-1;;;;;;1822:19:0::1;::::0;;1701:148::o;19759:108::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;19833:12:::1;:26:::0;19759:108::o;14082:101::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;14149:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;14149:26:0::1;-1:-1:-1::0;;;;14149:26:0;;::::1;::::0;;;::::1;::::0;;14082:101::o;19211:139::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;19302:19:::1;:40:::0;19211:139::o;7549:199::-;7654:4;7676:42;326:10;7700:9;7711:6;7676:9;:42::i;18405:508::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;18606:14:::1;:30:::0;;;;18647:15:::1;:32:::0;;;;18700:18:::1;:38:::0;;;;18749:19:::1;:40:::0;18810:18:::1;:38:::0;18859:19:::1;:40:::0;18405:508::o;14191:249::-;14257:11;;-1:-1:-1;;;;;14257:11:0;326:10;-1:-1:-1;;;;;14241:27:0;;:58;;;-1:-1:-1;14288:11:0;;-1:-1:-1;;;;;14288:11:0;326:10;-1:-1:-1;;;;;14272:27:0;;14241:58;:85;;;-1:-1:-1;1525:7:0;1552:6;-1:-1:-1;;;;;1552:6:0;326:10;14303:23;14241:85;14233:94;;;;;;14338:23;14364:24;14382:4;14364:9;:24::i;:::-;14338:50;;14399:33;14416:15;14399:16;:33::i;18925:234::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;19042:9:::1;19038:114;19057:19:::0;;::::1;19038:114;;;19132:8;19098:18;:31;19117:8;;19126:1;19117:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19098:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19098:31:0;:42;;-1:-1:-1;;19098:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19078:3;::::1;::::0;::::1;:::i;:::-;;;;19038:114;;;;18925:234:::0;;;:::o;19390:173::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;19496:11:::1;:24:::0;;-1:-1:-1;;;;;19496:24:0;;::::1;-1:-1:-1::0;;;;;;19496:24:0;;::::1;;::::0;;;19531:11:::1;:24:::0;;;;;::::1;::::0;::::1;;::::0;;19390:173::o;19879:115::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;19956:14:::1;:30:::0;19879:115::o;1857:244::-;1614:6;;-1:-1:-1;;;;;1614:6:0;326:10;1614:22;1606:67;;;;-1:-1:-1;;;1606:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1946:22:0;::::1;1938:73;;;::::0;-1:-1:-1;;;1938:73:0;;9423:2:1;1938:73:0::1;::::0;::::1;9405:21:1::0;9462:2;9442:18;;;9435:30;9501:34;9481:18;;;9474:62;-1:-1:-1;;;9552:18:1;;;9545:36;9598:19;;1938:73:0::1;9221:402:1::0;1938:73:0::1;2048:6;::::0;;2027:38:::1;::::0;-1:-1:-1;;;;;2027:38:0;;::::1;::::0;2048:6;::::1;::::0;2027:38:::1;::::0;::::1;2076:6;:17:::0;;-1:-1:-1;;;;;;2076:17:0::1;-1:-1:-1::0;;;;;2076:17:0;;;::::1;::::0;;;::::1;::::0;;1857:244::o;2132:179::-;2190:7;;2222:5;2226:1;2222;:5;:::i;:::-;2210:17;;2251:1;2246;:6;;2238:46;;;;-1:-1:-1;;;2238:46:0;;10637:2:1;2238:46:0;;;10619:21:1;10676:2;10656:18;;;10649:30;10715:29;10695:18;;;10688:57;10762:18;;2238:46:0;10435:351:1;2238:46:0;2302:1;2132:179;-1:-1:-1;;;2132:179:0:o;2949:132::-;3007:7;3034:39;3038:1;3041;3034:39;;;;;;;;;;;;;;;;;:3;:39::i;2695:246::-;2753:7;2777:6;2773:47;;-1:-1:-1;2807:1:0;2800:8;;2773:47;2830:9;2842:5;2846:1;2842;:5;:::i;:::-;2830:17;-1:-1:-1;2875:1:0;2866:5;2870:1;2830:17;2866:5;:::i;:::-;:10;2858:56;;;;-1:-1:-1;;;2858:56:0;;11345:2:1;2858:56:0;;;11327:21:1;11384:2;11364:18;;;11357:30;11423:34;11403:18;;;11396:62;-1:-1:-1;;;11474:18:1;;;11467:31;11515:19;;2858:56:0;11143:397:1;9298:369:0;-1:-1:-1;;;;;9425:19:0;;9417:68;;;;-1:-1:-1;;;9417:68:0;;13328:2:1;9417:68:0;;;13310:21:1;13367:2;13347:18;;;13340:30;13406:34;13386:18;;;13379:62;-1:-1:-1;;;13457:18:1;;;13450:34;13501:19;;9417:68:0;13126:400:1;9417:68:0;-1:-1:-1;;;;;9504:21:0;;9496:68;;;;-1:-1:-1;;;9496:68:0;;9830:2:1;9496:68:0;;;9812:21:1;9869:2;9849:18;;;9842:30;9908:34;9888:18;;;9881:62;-1:-1:-1;;;9959:18:1;;;9952:32;10001:19;;9496:68:0;9628:398:1;9496:68:0;-1:-1:-1;;;;;9575:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9627:32;;13677:25:1;;;9627:32:0;;13650:18:1;9627:32:0;;;;;;;9298:369;;;:::o;9675:2347::-;-1:-1:-1;;;;;9797:18:0;;9789:68;;;;-1:-1:-1;;;9789:68:0;;12518:2:1;9789:68:0;;;12500:21:1;12557:2;12537:18;;;12530:30;12596:34;12576:18;;;12569:62;-1:-1:-1;;;12647:18:1;;;12640:35;12692:19;;9789:68:0;12316:401:1;9789:68:0;-1:-1:-1;;;;;9876:16:0;;9868:64;;;;-1:-1:-1;;;9868:64:0;;7819:2:1;9868:64:0;;;7801:21:1;7858:2;7838:18;;;7831:30;7897:34;7877:18;;;7870:62;-1:-1:-1;;;7948:18:1;;;7941:33;7991:19;;9868:64:0;7617:399:1;9868:64:0;9960:1;9951:6;:10;9943:64;;;;-1:-1:-1;;;9943:64:0;;12108:2:1;9943:64:0;;;12090:21:1;12147:2;12127:18;;;12120:30;12186:34;12166:18;;;12159:62;-1:-1:-1;;;12237:18:1;;;12230:39;12286:19;;9943:64:0;11906:405:1;9943:64:0;1525:7;1552:6;-1:-1:-1;;;;;10024:15:0;;;1552:6;;10024:15;;;;:32;;-1:-1:-1;1525:7:0;1552:6;-1:-1:-1;;;;;10043:13:0;;;1552:6;;10043:13;;10024:32;:52;;;;-1:-1:-1;;;;;;10061:15:0;;;;;;:9;:15;;;;;;;;10060:16;10024:52;:70;;;;-1:-1:-1;;;;;;10081:13:0;;;;;;:9;:13;;;;;;;;10080:14;10024:70;10020:1161;;;10163:11;;-1:-1:-1;;;10163:11:0;;;;10158:144;;-1:-1:-1;;;;;10203:15:0;;;;;;:9;:15;;;;;;;;10195:91;;;;-1:-1:-1;;;10195:91:0;;8223:2:1;10195:91:0;;;8205:21:1;8262:2;8242:18;;;8235:30;8301:34;8281:18;;;8274:62;8372:33;8352:18;;;8345:61;8423:19;;10195:91:0;8021:427:1;10195:91:0;10350:12;;10340:6;:22;;10332:63;;;;-1:-1:-1;;;10332:63:0;;9066:2:1;10332:63:0;;;9048:21:1;9105:2;9085:18;;;9078:30;9144;9124:18;;;9117:58;9192:18;;10332:63:0;8864:352:1;10332:63:0;-1:-1:-1;;;;;10419:10:0;;;;;;:4;:10;;;;;;;;10418:11;:24;;;;-1:-1:-1;;;;;;10434:8:0;;;;;;:4;:8;;;;;;;;10433:9;10418:24;10410:72;;;;-1:-1:-1;;;10410:72:0;;10233:2:1;10410:72:0;;;10215:21:1;10272:2;10252:18;;;10245:30;10311:34;10291:18;;;10284:62;-1:-1:-1;;;10362:18:1;;;10355:33;10405:19;;10410:72:0;10031:399:1;10410:72:0;10520:13;;-1:-1:-1;;;;;10514:19:0;;;10520:13;;10514:19;10511:146;;10587:14;;10578:6;10562:13;10572:2;10562:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10554:87;;;;-1:-1:-1;;;10554:87:0;;12924:2:1;10554:87:0;;;12906:21:1;12963:2;12943:18;;;12936:30;13002:34;12982:18;;;12975:62;-1:-1:-1;;;13053:18:1;;;13046:33;13096:19;;10554:87:0;12722:399:1;10554:87:0;10685:28;10716:24;10734:4;10716:9;:24::i;:::-;10794:19;;10857:12;;10685:55;;-1:-1:-1;10770:43:0;;;;10833:36;;10830:111;;10913:12;;10890:35;;10830:111;10973:7;:18;;;;-1:-1:-1;10985:6:0;;-1:-1:-1;;;10985:6:0;;;;10984:7;10973:18;:43;;;;-1:-1:-1;11003:13:0;;-1:-1:-1;;;;;10995:21:0;;;11003:13;;10995:21;;10973:43;:58;;;;-1:-1:-1;11020:11:0;;-1:-1:-1;;;11020:11:0;;;;10973:58;:87;;;;-1:-1:-1;;;;;;11036:24:0;;;;;;:18;:24;;;;;;;;11035:25;10973:87;:114;;;;-1:-1:-1;;;;;;11065:22:0;;;;;;:18;:22;;;;;;;;11064:23;10973:114;10969:201;;;11108:46;11133:20;11108:24;:46::i;:::-;10096:1085;;10020:1161;-1:-1:-1;;;;;11265:24:0;;11201:12;11265:24;;;:18;:24;;;;;;11216:4;;11265:24;;;:50;;-1:-1:-1;;;;;;11293:22:0;;;;;;:18;:22;;;;;;;;11265:50;11264:102;;;-1:-1:-1;11329:13:0;;-1:-1:-1;;;;;11321:21:0;;;11329:13;;11321:21;;;;:44;;-1:-1:-1;11352:13:0;;-1:-1:-1;;;;;11346:19:0;;;11352:13;;11346:19;;11321:44;11260:701;;;-1:-1:-1;11393:5:0;11260:701;;;11488:13;;-1:-1:-1;;;;;11480:21:0;;;11488:13;;11480:21;:55;;;;-1:-1:-1;11519:15:0;;-1:-1:-1;;;;;11505:30:0;;;11519:15;;11505:30;;11480:55;11477:201;;;11568:14;;11556:9;:26;11634:18;;11611;;:51;;11658:3;;11611:42;;:22;:42::i;:::-;:46;;:51::i;:::-;11601:7;:61;11477:201;11741:13;;-1:-1:-1;;;;;11735:19:0;;;11741:13;;11735:19;:55;;;;-1:-1:-1;11774:15:0;;-1:-1:-1;;;;;11758:32:0;;;11774:15;;11758:32;;11735:55;11731:205;;;11823:15;;11811:9;:27;11891:19;;11867;;:53;;11916:3;;11867:44;;:23;:44::i;:53::-;11857:7;:63;11731:205;11973:41;11988:4;11994:2;11998:6;12006:7;11973:14;:41::i;2463:224::-;2583:7;2619:12;2611:6;;;;2603:29;;;;-1:-1:-1;;;2603:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2643:9:0;2655:5;2659:1;2655;:5;:::i;:::-;2643:17;2463:224;-1:-1:-1;;;;;2463:224:0:o;13928:146::-;13985:11;;-1:-1:-1;;;;;13985:11:0;:35;14006:13;:6;14017:1;14006:10;:13::i;:::-;13985:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14031:11:0;;-1:-1:-1;;;;;14031:11:0;:35;14052:13;:6;14063:1;14052:10;:13::i;:::-;14031:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8603:323;8698:7;8756;;8745;:18;;8723:110;;;;-1:-1:-1;;;8723:110:0;;8655:2:1;8723:110:0;;;8637:21:1;8694:2;8674:18;;;8667:30;8733:34;8713:18;;;8706:62;-1:-1:-1;;;8784:18:1;;;8777:40;8834:19;;8723:110:0;8453:406:1;8723:110:0;8844:19;8866:10;:8;:10::i;:::-;8844:32;-1:-1:-1;8894:24:0;:7;8844:32;8894:11;:24::i;12030:483::-;6271:6;:13;;-1:-1:-1;;;;6271:13:0;-1:-1:-1;;;6271:13:0;;;12132:16:::1;::::0;;12146:1:::1;12132:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12132:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12132:16:0::1;12108:40;;12177:4;12159;12164:1;12159:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12159:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12203:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12203:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12159:7;;12203:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12193:4;12198:1;12193:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12193:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12268:15:::1;::::0;12236:62:::1;::::0;12253:4:::1;::::0;12268:15:::1;12286:11:::0;12236:8:::1;:62::i;:::-;12309:15;::::0;:196:::1;::::0;-1:-1:-1;;;12309:196:0;;-1:-1:-1;;;;;12309:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12390:11;;12309:15:::1;::::0;12432:4;;12459::::1;::::0;12479:15:::1;::::0;12309:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6307:6:0;:14;;-1:-1:-1;;;;6307:14:0;;;-1:-1:-1;;;;12030:483:0:o;3089:223::-;3209:7;3244:12;3237:5;3229:28;;;;-1:-1:-1;;;3229:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3268:9:0;3280:5;3284:1;3280;:5;:::i;12525:865::-;12596:22;12621:44;12645:19;;12621;;:23;;:44;;;;:::i;:::-;12596:69;;12676:17;12696:26;12720:1;12696:19;;:23;;:26;;;;:::i;:::-;12676:46;;12735:25;12763:66;12814:14;12763:46;12774:34;12798:9;12774:19;;:23;;:34;;;;:::i;:::-;12763:6;;:10;:46::i;:66::-;12735:94;-1:-1:-1;12842:23:0;12868:41;12894:14;12868:21;:6;12879:9;12868:10;:21::i;:41::-;12842:67;-1:-1:-1;12950:21:0;12982:35;12999:17;12982:16;:35::i;:::-;13028:21;13052:44;:21;13078:17;13052:25;:44::i;:::-;13028:68;-1:-1:-1;13109:25:0;13137:73;13180:29;:14;13199:9;13180:18;:29::i;:::-;13155:19;;13137:38;;:13;;:17;:38::i;:73::-;13109:101;-1:-1:-1;13221:18:0;13242:36;:13;13109:101;13242:17;:36::i;:::-;13221:57;;13299:31;13312:17;13299:12;:31::i;:::-;13341:41;13354:15;13371:10;13341:12;:41::i;:::-;12583:807;;;;;;;;12525:865;:::o;14981:282::-;15137:7;15132:28;;15146:14;:12;:14::i;:::-;15171:44;15189:6;15197:9;15208:6;15171:17;:44::i;:::-;15231:7;15226:29;;15240:15;9229:17;;9217:9;:29;9267:15;;9257:7;:25;9173:117;17956:166;17998:7;18019:15;18036;18055:19;:17;:19::i;:::-;18018:56;;-1:-1:-1;18018:56:0;-1:-1:-1;18094:20:0;18018:56;;18094:11;:20::i;:::-;18087:27;;;;17956:166;:::o;2319:136::-;2377:7;2404:43;2408:1;2411;2404:43;;;;;;;;;;;;;;;;;:3;:43::i;13402:518::-;13584:15;;13552:62;;13569:4;;-1:-1:-1;;;;;13584:15:0;13602:11;13552:8;:62::i;:::-;13657:15;;:255;;-1:-1:-1;;;13657:255:0;;13729:4;13657:255;;;6318:34:1;6368:18;;;6361:34;;;13657:15:0;6411:18:1;;;6404:34;;;6454:18;;;6447:34;;;6497:19;;;6490:44;13886:15:0;6550:19:1;;;6543:35;-1:-1:-1;;;;;13657:15:0;;;;:31;;13696:9;;6252:19:1;;13657:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13402:518;;:::o;8934:231::-;8981:9;;:14;:30;;;;-1:-1:-1;8999:7:0;;:12;8981:30;8977:43;;;8934:231::o;8977:43::-;9056:9;;;9036:17;:29;9094:7;;;9076:15;:25;-1:-1:-1;9122:13:0;;;;9146:11;8934:231::o;15271:610::-;15418:15;15448:23;15486:12;15513:23;15551:12;15578:13;15605:19;15616:7;15605:10;:19::i;:::-;-1:-1:-1;;;;;15653:15:0;;;;;;:7;:15;;;;;;15403:221;;-1:-1:-1;15403:221:0;;-1:-1:-1;15403:221:0;;-1:-1:-1;15403:221:0;-1:-1:-1;15403:221:0;-1:-1:-1;15403:221:0;-1:-1:-1;15653:28:0;;15403:221;15653:19;:28::i;:::-;-1:-1:-1;;;;;15635:15:0;;;;;;;:7;:15;;;;;;:46;;;;15713:18;;;;;;;:39;;15736:15;15713:22;:39::i;:::-;-1:-1:-1;;;;;15692:18:0;;;;;;:7;:18;;;;;:60;15763:16;15773:5;15763:9;:16::i;:::-;15790:23;15802:4;15808;15790:11;:23::i;:::-;15846:9;-1:-1:-1;;;;;15829:44:0;15838:6;-1:-1:-1;;;;;15829:44:0;;15857:15;15829:44;;;;13677:25:1;;13665:2;13650:18;;13531:177;15829:44:0;;;;;;;;15392:489;;;;;;15271:610;;;:::o;18130:263::-;18228:7;;18181;;;;4720:19;18296:20;18228:7;4720:19;18296:11;:20::i;:::-;18286:7;:30;18282:61;;;-1:-1:-1;;18326:7:0;;;4720:19;;-1:-1:-1;18130:263:0;-1:-1:-1;18130:263:0:o;18282:61::-;18368:7;;18377;;-1:-1:-1;18130:263:0;-1:-1:-1;18130:263:0:o;16300:625::-;16400:7;16422;16444;16466;16488;16510;16546:23;16571:12;16585:13;16615:40;16627:7;16636:9;;16647:7;;16615:11;:40::i;:::-;16545:110;;;;;;16666:19;16688:10;:8;:10::i;:::-;16666:32;;16710:15;16727:23;16752:12;16781:46;16793:7;16802:4;16808:5;16815:11;16781;:46::i;:::-;16709:118;;-1:-1:-1;16709:118:0;-1:-1:-1;16709:118:0;-1:-1:-1;16888:15:0;;-1:-1:-1;16905:4:0;;-1:-1:-1;16911:5:0;;-1:-1:-1;;;;;16300:625:0;;;;;;;:::o;15889:211::-;15942:19;15964:10;:8;:10::i;:::-;15942:32;-1:-1:-1;15985:13:0;16001:22;:5;15942:32;16001:9;:22::i;:::-;16075:4;16059:22;;;;:7;:22;;;;;;15985:38;;-1:-1:-1;16059:33:0;;15985:38;16059:26;:33::i;:::-;16050:4;16034:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;15889:211:0:o;16108:147::-;16186:7;;:17;;16198:4;16186:11;:17::i;:::-;16176:7;:27;16227:10;;:20;;16242:4;16227:14;:20::i;:::-;16214:10;:33;-1:-1:-1;;16108:147:0:o;16933:471::-;17102:7;;;;17196:30;17222:3;17196:21;:7;17208:8;17196:11;:21::i;:30::-;17181:45;-1:-1:-1;17237:13:0;17253:28;17277:3;17253:19;:7;17265:6;17253:11;:19::i;:28::-;17237:44;-1:-1:-1;17292:23:0;17318:28;17237:44;17318:17;:7;17330:4;17318:11;:17::i;:::-;:21;;:28::i;:::-;17292:54;17384:4;;-1:-1:-1;17390:5:0;;-1:-1:-1;16933:471:0;;-1:-1:-1;;;;;16933:471:0:o;17412:536::-;17606:7;;;;17703:24;:7;17715:11;17703;:24::i;:::-;17685:42;-1:-1:-1;17738:12:0;17753:21;:4;17762:11;17753:8;:21::i;:::-;17738:36;-1:-1:-1;17785:13:0;17801:22;:5;17811:11;17801:9;:22::i;:::-;17785:38;-1:-1:-1;17834:23:0;17860:28;17785:38;17860:17;:7;17872:4;17860:11;:17::i;:28::-;17909:7;;;;-1:-1:-1;17935:4:0;;-1:-1:-1;17412:536:0;;-1:-1:-1;;;;;;;17412:536:0:o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:160::-;218:20;;274:13;;267:21;257:32;;247:60;;303:1;300;293:12;318:247;377:6;430:2;418:9;409:7;405:23;401:32;398:52;;;446:1;443;436:12;398:52;485:9;472:23;504:31;529:5;504:31;:::i;570:251::-;640:6;693:2;681:9;672:7;668:23;664:32;661:52;;;709:1;706;699:12;661:52;741:9;735:16;760:31;785:5;760:31;:::i;826:404::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;-1:-1:-1;1152:2:1;1137:18;;1124:32;1165:33;1124:32;1165:33;:::i;:::-;1217:7;1207:17;;;826:404;;;;;:::o;1628:456::-;1705:6;1713;1721;1774:2;1762:9;1753:7;1749:23;1745:32;1742:52;;;1790:1;1787;1780:12;1742:52;1829:9;1816:23;1848:31;1873:5;1848:31;:::i;:::-;1898:5;-1:-1:-1;1955:2:1;1940:18;;1927:32;1968:33;1927:32;1968:33;:::i;:::-;1628:456;;2020:7;;-1:-1:-1;;;2074:2:1;2059:18;;;;2046:32;;1628:456::o;2089:315::-;2154:6;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2363:35:1;2394:2;2379:18;;2363:35;:::i;:::-;2353:45;;2089:315;;;;;:::o;2409:::-;2477:6;2485;2538:2;2526:9;2517:7;2513:23;2509:32;2506:52;;;2554:1;2551;2544:12;2506:52;2593:9;2580:23;2612:31;2637:5;2612:31;:::i;:::-;2662:5;2714:2;2699:18;;;;2686:32;;-1:-1:-1;;;2409:315:1:o;2729:689::-;2821:6;2829;2837;2890:2;2878:9;2869:7;2865:23;2861:32;2858:52;;;2906:1;2903;2896:12;2858:52;2946:9;2933:23;2975:18;3016:2;3008:6;3005:14;3002:34;;;3032:1;3029;3022:12;3002:34;3070:6;3059:9;3055:22;3045:32;;3115:7;3108:4;3104:2;3100:13;3096:27;3086:55;;3137:1;3134;3127:12;3086:55;3177:2;3164:16;3203:2;3195:6;3192:14;3189:34;;;3219:1;3216;3209:12;3189:34;3274:7;3267:4;3257:6;3254:1;3250:14;3246:2;3242:23;3238:34;3235:47;3232:67;;;3295:1;3292;3285:12;3232:67;3326:4;3318:13;;;;-1:-1:-1;3350:6:1;-1:-1:-1;3375:37:1;;3391:20;;;-1:-1:-1;3375:37:1;:::i;:::-;3365:47;;2729:689;;;;;:::o;3423:1132::-;3507:6;3538:2;3581;3569:9;3560:7;3556:23;3552:32;3549:52;;;3597:1;3594;3587:12;3549:52;3637:9;3624:23;3666:18;3707:2;3699:6;3696:14;3693:34;;;3723:1;3720;3713:12;3693:34;3761:6;3750:9;3746:22;3736:32;;3806:7;3799:4;3795:2;3791:13;3787:27;3777:55;;3828:1;3825;3818:12;3777:55;3864:2;3851:16;3886:2;3882;3879:10;3876:36;;;3892:18;;:::i;:::-;3938:2;3935:1;3931:10;3970:2;3964:9;4033:2;4029:7;4024:2;4020;4016:11;4012:25;4004:6;4000:38;4088:6;4076:10;4073:22;4068:2;4056:10;4053:18;4050:46;4047:72;;;4099:18;;:::i;:::-;4135:2;4128:22;4185:18;;;4219:15;;;;-1:-1:-1;4254:11:1;;;4284;;;4280:20;;4277:33;-1:-1:-1;4274:53:1;;;4323:1;4320;4313:12;4274:53;4345:1;4336:10;;4355:169;4369:2;4366:1;4363:9;4355:169;;;4426:23;4445:3;4426:23;:::i;:::-;4414:36;;4387:1;4380:9;;;;;4470:12;;;;4502;;4355:169;;;-1:-1:-1;4543:6:1;3423:1132;-1:-1:-1;;;;;;;;3423:1132:1:o;4560:180::-;4616:6;4669:2;4657:9;4648:7;4644:23;4640:32;4637:52;;;4685:1;4682;4675:12;4637:52;4708:26;4724:9;4708:26;:::i;4745:180::-;4804:6;4857:2;4845:9;4836:7;4832:23;4828:32;4825:52;;;4873:1;4870;4863:12;4825:52;-1:-1:-1;4896:23:1;;4745:180;-1:-1:-1;4745:180:1:o;4930:306::-;5018:6;5026;5034;5087:2;5075:9;5066:7;5062:23;5058:32;5055:52;;;5103:1;5100;5093:12;5055:52;5132:9;5126:16;5116:26;;5182:2;5171:9;5167:18;5161:25;5151:35;;5226:2;5215:9;5211:18;5205:25;5195:35;;4930:306;;;;;:::o;5241:523::-;5345:6;5353;5361;5369;5377;5385;5438:3;5426:9;5417:7;5413:23;5409:33;5406:53;;;5455:1;5452;5445:12;5406:53;-1:-1:-1;;5478:23:1;;;5548:2;5533:18;;5520:32;;-1:-1:-1;5599:2:1;5584:18;;5571:32;;5650:2;5635:18;;5622:32;;-1:-1:-1;5701:3:1;5686:19;;5673:33;;-1:-1:-1;5753:3:1;5738:19;5725:33;;-1:-1:-1;5241:523:1;-1:-1:-1;5241:523:1:o;7015:597::-;7127:4;7156:2;7185;7174:9;7167:21;7217:6;7211:13;7260:6;7255:2;7244:9;7240:18;7233:34;7285:1;7295:140;7309:6;7306:1;7303:13;7295:140;;;7404:14;;;7400:23;;7394:30;7370:17;;;7389:2;7366:26;7359:66;7324:10;;7295:140;;;7453:6;7450:1;7447:13;7444:91;;;7523:1;7518:2;7509:6;7498:9;7494:22;7490:31;7483:42;7444:91;-1:-1:-1;7596:2:1;7575:15;-1:-1:-1;;7571:29:1;7556:45;;;;7603:2;7552:54;;7015:597;-1:-1:-1;;;7015:597:1:o;11545:356::-;11747:2;11729:21;;;11766:18;;;11759:30;11825:34;11820:2;11805:18;;11798:62;11892:2;11877:18;;11545:356::o;13713:980::-;13975:4;14023:3;14012:9;14008:19;14054:6;14043:9;14036:25;14080:2;14118:6;14113:2;14102:9;14098:18;14091:34;14161:3;14156:2;14145:9;14141:18;14134:31;14185:6;14220;14214:13;14251:6;14243;14236:22;14289:3;14278:9;14274:19;14267:26;;14328:2;14320:6;14316:15;14302:29;;14349:1;14359:195;14373:6;14370:1;14367:13;14359:195;;;14438:13;;-1:-1:-1;;;;;14434:39:1;14422:52;;14529:15;;;;14494:12;;;;14470:1;14388:9;14359:195;;;-1:-1:-1;;;;;;;14610:32:1;;;;14605:2;14590:18;;14583:60;-1:-1:-1;;;14674:3:1;14659:19;14652:35;14571:3;13713:980;-1:-1:-1;;;13713:980:1:o;14887:128::-;14927:3;14958:1;14954:6;14951:1;14948:13;14945:39;;;14964:18;;:::i;:::-;-1:-1:-1;15000:9:1;;14887:128::o;15020:217::-;15060:1;15086;15076:132;;15130:10;15125:3;15121:20;15118:1;15111:31;15165:4;15162:1;15155:15;15193:4;15190:1;15183:15;15076:132;-1:-1:-1;15222:9:1;;15020:217::o;15242:168::-;15282:7;15348:1;15344;15340:6;15336:14;15333:1;15330:21;15325:1;15318:9;15311:17;15307:45;15304:71;;;15355:18;;:::i;:::-;-1:-1:-1;15395:9:1;;15242:168::o;15415:125::-;15455:4;15483:1;15480;15477:8;15474:34;;;15488:18;;:::i;:::-;-1:-1:-1;15525:9:1;;15415:125::o;15545:135::-;15584:3;-1:-1:-1;;15605:17:1;;15602:43;;;15625:18;;:::i;:::-;-1:-1:-1;15672:1:1;15661:13;;15545:135::o;15685:127::-;15746:10;15741:3;15737:20;15734:1;15727:31;15777:4;15774:1;15767:15;15801:4;15798:1;15791:15;15817:127;15878:10;15873:3;15869:20;15866:1;15859:31;15909:4;15906:1;15899:15;15933:4;15930:1;15923:15;15949:127;16010:10;16005:3;16001:20;15998:1;15991:31;16041:4;16038:1;16031:15;16065:4;16062:1;16055:15;16081:131;-1:-1:-1;;;;;16156:31:1;;16146:42;;16136:70;;16202:1;16199;16192:12

Swarm Source

ipfs://e6f636a1f33b9166a7163def1cc12381504d703b8cca2e4121454b183a7d5e92

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.