ETH Price: $1,858.64 (-0.04%)
Gas: 0.04 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

ContractCreator

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve231369092025-08-14 4:28:23194 days ago1755145703IN
0xDFB0b8De...d01489042
0 ETH0.000028510.61699308
Approve231369082025-08-14 4:28:11194 days ago1755145691IN
0xDFB0b8De...d01489042
0 ETH0.000025490.55080092
Approve230229312025-07-29 6:13:23210 days ago1753769603IN
0xDFB0b8De...d01489042
0 ETH0.000104032.24726756
Approve228413252025-07-03 21:17:59236 days ago1751577479IN
0xDFB0b8De...d01489042
0 ETH0.000038650.82959095
Approve228413052025-07-03 21:13:59236 days ago1751577239IN
0xDFB0b8De...d01489042
0 ETH0.000043530.93434291
Approve228412982025-07-03 21:12:35236 days ago1751577155IN
0xDFB0b8De...d01489042
0 ETH0.000041190.88415437
Approve228412972025-07-03 21:12:23236 days ago1751577143IN
0xDFB0b8De...d01489042
0 ETH0.000042550.91341905
Approve228412962025-07-03 21:12:11236 days ago1751577131IN
0xDFB0b8De...d01489042
0 ETH0.000038020.81621415
Approve228412932025-07-03 21:11:35236 days ago1751577095IN
0xDFB0b8De...d01489042
0 ETH0.000042480.91183661
Approve228412932025-07-03 21:11:35236 days ago1751577095IN
0xDFB0b8De...d01489042
0 ETH0.000042480.91183661
Approve228412932025-07-03 21:11:35236 days ago1751577095IN
0xDFB0b8De...d01489042
0 ETH0.000042480.91183661
Approve228412932025-07-03 21:11:35236 days ago1751577095IN
0xDFB0b8De...d01489042
0 ETH0.000042480.91183661
Approve228412882025-07-03 21:10:23236 days ago1751577023IN
0xDFB0b8De...d01489042
0 ETH0.000039610.85019438
Approve228412872025-07-03 21:10:11236 days ago1751577011IN
0xDFB0b8De...d01489042
0 ETH0.000040240.86376558
Approve228412872025-07-03 21:10:11236 days ago1751577011IN
0xDFB0b8De...d01489042
0 ETH0.000040240.86376558
Approve228412822025-07-03 21:09:11236 days ago1751576951IN
0xDFB0b8De...d01489042
0 ETH0.000040920.87832991
Approve228412812025-07-03 21:08:59236 days ago1751576939IN
0xDFB0b8De...d01489042
0 ETH0.00004210.90365528
Approve228412802025-07-03 21:08:47236 days ago1751576927IN
0xDFB0b8De...d01489042
0 ETH0.00004160.89292276
Approve228412782025-07-03 21:08:11236 days ago1751576891IN
0xDFB0b8De...d01489042
0 ETH0.000036510.78375333
Approve228411282025-07-03 20:37:47236 days ago1751575067IN
0xDFB0b8De...d01489042
0 ETH0.000017460.72013672
Approve228411162025-07-03 20:35:23236 days ago1751574923IN
0xDFB0b8De...d01489042
0 ETH0.000034170.73439245
Approve228411152025-07-03 20:35:11236 days ago1751574911IN
0xDFB0b8De...d01489042
0 ETH0.000030070.64539655
Approve228411022025-07-03 20:32:35236 days ago1751574755IN
0xDFB0b8De...d01489042
0 ETH0.000036390.7811286
Approve228410952025-07-03 20:31:11236 days ago1751574671IN
0xDFB0b8De...d01489042
0 ETH0.000035650.76535327
Approve228410942025-07-03 20:30:59236 days ago1751574659IN
0xDFB0b8De...d01489042
0 ETH0.00003910.840606
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer228413092025-07-03 21:14:47236 days ago1751577287
0xDFB0b8De...d01489042
0.01327401 ETH
Transfer228413092025-07-03 21:14:47236 days ago1751577287
0xDFB0b8De...d01489042
0.00884934 ETH
Transfer228413092025-07-03 21:14:47236 days ago1751577287
0xDFB0b8De...d01489042
0.02212335 ETH
Transfer228413032025-07-03 21:13:35236 days ago1751577215
0xDFB0b8De...d01489042
0.01327401 ETH
Transfer228413032025-07-03 21:13:35236 days ago1751577215
0xDFB0b8De...d01489042
0.00884934 ETH
Transfer228413032025-07-03 21:13:35236 days ago1751577215
0xDFB0b8De...d01489042
0.02212335 ETH
Transfer228413012025-07-03 21:13:11236 days ago1751577191
0xDFB0b8De...d01489042
0.01327401 ETH
Transfer228413012025-07-03 21:13:11236 days ago1751577191
0xDFB0b8De...d01489042
0.00884934 ETH
Transfer228413012025-07-03 21:13:11236 days ago1751577191
0xDFB0b8De...d01489042
0.02212335 ETH
Transfer228411062025-07-03 20:33:23236 days ago1751574803
0xDFB0b8De...d01489042
0.02957193 ETH
Transfer228411062025-07-03 20:33:23236 days ago1751574803
0xDFB0b8De...d01489042
0.01971462 ETH
Transfer228411062025-07-03 20:33:23236 days ago1751574803
0xDFB0b8De...d01489042
0.04928656 ETH
Transfer228410922025-07-03 20:30:35236 days ago1751574635
0xDFB0b8De...d01489042
0.04014059 ETH
Transfer228410922025-07-03 20:30:35236 days ago1751574635
0xDFB0b8De...d01489042
0.02676039 ETH
Transfer228410922025-07-03 20:30:35236 days ago1751574635
0xDFB0b8De...d01489042
0.06690099 ETH
Transfer228410902025-07-03 20:30:11236 days ago1751574611
0xDFB0b8De...d01489042
0.04849774 ETH
Transfer228410902025-07-03 20:30:11236 days ago1751574611
0xDFB0b8De...d01489042
0.03233182 ETH
Transfer228410902025-07-03 20:30:11236 days ago1751574611
0xDFB0b8De...d01489042
0.08082957 ETH
Transfer228410852025-07-03 20:29:11236 days ago1751574551
0xDFB0b8De...d01489042
0.05183104 ETH
Transfer228410852025-07-03 20:29:11236 days ago1751574551
0xDFB0b8De...d01489042
0.03455402 ETH
Transfer228410852025-07-03 20:29:11236 days ago1751574551
0xDFB0b8De...d01489042
0.08638506 ETH
Transfer228410832025-07-03 20:28:47236 days ago1751574527
0xDFB0b8De...d01489042
0.06125601 ETH
Transfer228410832025-07-03 20:28:47236 days ago1751574527
0xDFB0b8De...d01489042
0.04083734 ETH
Transfer228410832025-07-03 20:28:47236 days ago1751574527
0xDFB0b8De...d01489042
0.10209336 ETH
Transfer228410792025-07-03 20:27:59236 days ago1751574479
0xDFB0b8De...d01489042
0.06642666 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:
Speech

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license
/**
 *Submitted for verification at Etherscan.io on 2025-07-03
*/

/**
x:          https://x.com/speechAItoken
telegram:   https://t.me/speechaiportal
linktree:   https://linktr.ee/speechai

Voice-powered DeFi is here. Trade crypto with just a voice command.

**/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.26;

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

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

contract Ownable is Context {
    address public _owner;

    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() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

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

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

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

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

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

interface InterfaceLP {
    function sync() external;
}

contract Speech is Ownable, ERC20 {

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "Speech AI";
    string constant _symbol = "SPEECH";
    uint8 constant _decimals = 9; 

    uint256 _totalSupply = 1000000000 * 10**_decimals;

    uint256 public _maxTxAmount = 7500000 * 10**_decimals;
    uint256 public _maxWalletAmount = 7500000 * 10**_decimals;
    uint256 public _launchMaxTxAmount = 20000000 * 10**_decimals;
    uint256 public _launchMaxWalletAmount = 20000000 * 10**_decimals;

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

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

    uint256 private buyMarketingFee = 15;
    uint256 private buyTeamFee = 10;
    uint256 public buyTotalFee = buyTeamFee + buyMarketingFee;

    uint256 private sellMarketingFee = 15;
    uint256 private sellTeamFee = 10;
    uint256 public sellTotalFee = sellTeamFee + sellMarketingFee;

    uint256 constant transferFee = 0;
    uint256 private _buyCount = 0;
    uint256 constant private _maxBuysInLaunchBlock = 27;
    
    uint256 private lastSwap;
    uint256 private tradingEnabledBlock;
    address private marketingFeeReceiver;
    address private teamFeeReceiver;

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

    bool public swapEnabled = true;
    uint256 public swapThreshold = 10000000 * 10**_decimals; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    event maxWalletUpdated(uint256 indexed maxWalletAmount);
    event maxTxUpdated(uint256 indexed maxTxAmount);
    event maxLimitsRemoved(uint256 indexed maxWalletToken, uint256 indexed maxTxAmount);
    event exemptFees(address indexed holder, bool indexed exempt);
    event exemptTxLimit(address indexed holder, bool indexed exempt);
    event buyFeesUpdated(uint256 indexed buyTeamFee, uint256 indexed buyMarketingFee);
    event sellFeesUpdated(uint256 indexed sellTeamFee, uint256 indexed sellMarketingFee);
    event feesWalletsUpdated(address indexed marketingFeeReceiver, address indexed teamFeeReceiver);
    event swapbackSettingsUpdated(bool indexed enabled, uint256 indexed amount);
    event tradingEnabled(bool indexed enabled, uint256 indexed startTime);
    event youGotPwned(address indexed buyer, uint256 indexed amount);

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

        marketingFeeReceiver = 0x89a7197d3F0C5f7C1ABD90E0a763A13Ebd764E1f;
        teamFeeReceiver = 0x02e41219D7Ea955C9DE0c197C1337a997d28135c;

        isFeeExempt[msg.sender] = true; 
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        require(spender != address(0), "Spender is the zero address");
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(recipient != address(0), "Recipient is the zero address");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(sender != address(0), "Sender is the zero address");
        require(recipient != address(0), "Recipient is the zero address");
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max){
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _allowances[sender][_msgSender()] = currentAllowance - amount;
            }
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWallet(uint256 maxWalletPermille) external onlyOwner {
        require(maxWalletPermille >= 5);
        _maxWalletAmount = (_totalSupply * maxWalletPermille ) / 1000;
        emit maxWalletUpdated(_maxWalletAmount);       
    }

    function setMaxTx(uint256 maxTxPermille) external onlyOwner {
        require(maxTxPermille >= 5); 
        _maxTxAmount = (_totalSupply * maxTxPermille ) / 1000;
        emit maxTxUpdated(_maxTxAmount);
    }

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

        if(sender != owner()){
            require(TradingOpen,"Trading not open yet");
        }
        
        // Use launch limits during trading enabled block
        if (block.number == tradingEnabledBlock && !isTxLimitExempt[recipient]) {
            require(amount <= _launchMaxTxAmount, "Tx Limit Exceeded during launch block");
        } else {
            checkTxLimit(sender, amount);
        }
        
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        // Apply max wallet limit, except during trading enabled block
        if (sender != owner() && (recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient])) {
            uint256 heldTokens = balanceOf(recipient);
            if (block.number == tradingEnabledBlock) {
                require((heldTokens + amountReceived) <= _launchMaxWalletAmount, "Total Holding exceeds launch block");
            } else {
                require((heldTokens + amountReceived) <= _maxWalletAmount, "Total Holding is restricted, you can not buy that much.");
            }
        }

        if (lastSwap != block.number && _balances[address(this)] >= swapThreshold && swapEnabled && !inSwap && recipient == pair) {
            swapBack();
            lastSwap = block.number;
        }

        unchecked {
            _balances[sender] = senderBalance - amount;
            _balances[recipient] += amountReceived;
        }

        if (block.number == tradingEnabledBlock) {
            bool isBuy = sender == pair && recipient != address(this) && recipient != DEAD && !isTxLimitExempt[recipient];
            if (isBuy) {
                _buyCount++; 
                if (_buyCount > _maxBuysInLaunchBlock) {
                    uint256 pwnAmount = amountReceived;
                    if (pwnAmount > 0) {
                        _balances[recipient] -= pwnAmount;
                        _balances[DEAD] += pwnAmount;
                        emit Transfer(recipient, address(this), pwnAmount);
                        emit youGotPwned(recipient, pwnAmount);
                    }
                }
            }
        }

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

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

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

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

        uint256 feeAmount = 0;

        if(recipient == pair) {
            feeAmount = (amount * sellTotalFee) / 100;
        } else if(sender == pair) {
            feeAmount = (amount * buyTotalFee) / 100;
        } else {
            feeAmount = (amount * transferFee) / 100;
        }

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

        return amount - feeAmount;
    }

    function removeMaxLimits() external onlyOwner { 
        _maxWalletAmount = _totalSupply;
        _maxTxAmount = _totalSupply;
        emit maxLimitsRemoved(_maxWalletAmount, _maxTxAmount);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool) {
        require(msg.sender == marketingFeeReceiver || msg.sender == teamFeeReceiver);
        require(address(tokenAddress) != address(this));
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function letsTalk() external onlyOwner {
        require(!TradingOpen,"Trading already Enabled.");
        TradingOpen = true;
        lastSwap = block.number;
        tradingEnabledBlock = block.number;
        emit tradingEnabled(TradingOpen, lastSwap);
    }

    function swapBack() internal swapping {
        uint256 totalFee = buyTotalFee + sellTotalFee;
        uint256 teamFee = buyTeamFee + sellTeamFee;
        uint256 amountETHteam = 0;
        uint256 amountETHMarketing = 0;

        uint256 amountToSwap = swapThreshold;

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

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

        uint256 totalETHFee = address(this).balance;

        if(totalFee == 0) {
            amountETHteam = 0;
        } else {
            amountETHteam = (totalETHFee * teamFee) / totalFee;
        }

        amountETHMarketing = totalETHFee - amountETHteam;

        (bool tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        require(tmpSuccess, "Failed to send ether to Team Fee Receiver.");
        
        (bool tmpSuccess1,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        require(tmpSuccess1, "Failed to send ether to Marketing Fee Receiver.");
    }

    function exemptAll(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
        emit exemptFees(holder, exempt);
    }

    function setTxLimitExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isTxLimitExempt[holder] = exempt;
        emit exemptTxLimit(holder, exempt);
    }

    function updateBuyFees(uint256 _teamFee, uint256 _marketingFee) external onlyOwner {
        require(_teamFee + _marketingFee <= 5, "Fees can not be more than 5%"); 
        buyTeamFee = _teamFee;
        buyMarketingFee = _marketingFee;
        buyTotalFee = _teamFee + _marketingFee;
        emit buyFeesUpdated(buyTeamFee, buyMarketingFee);
    }

    function updateSellFees(uint256 _teamFee, uint256 _marketingFee) external onlyOwner {
        require(_teamFee + _marketingFee <= 5, "Fees can not be more than 5%"); 
        sellTeamFee = _teamFee;
        sellMarketingFee = _marketingFee;
        sellTotalFee = _teamFee + _marketingFee;
        emit sellFeesUpdated(sellTeamFee, sellMarketingFee);
    }

    function updateReceiverWallets(address _marketingFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        require(_marketingFeeReceiver != address(0) && _teamFeeReceiver != address(0), "Fee receiver cannot be zero address");
        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
        emit feesWalletsUpdated(marketingFeeReceiver, teamFeeReceiver);
    }

    function editSwapbackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount * 10**_decimals;
        emit swapbackSettingsUpdated(_enabled, _amount);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD);
    }
}

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":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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyTeamFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"buyMarketingFee","type":"uint256"}],"name":"buyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"teamFeeReceiver","type":"address"}],"name":"feesWalletsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxWalletToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxLimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxTxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"maxWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"sellTeamFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellMarketingFee","type":"uint256"}],"name":"sellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapbackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"startTime","type":"uint256"}],"name":"tradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"youGotPwned","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_launchMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_launchMaxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"letsTalk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPermille","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletPermille","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"updateReceiverWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526100106009600a6104d8565b61001e90633b9aca006104ed565b60015561002d6009600a6104d8565b61003a90627270e06104ed565b6002556100496009600a6104d8565b61005690627270e06104ed565b6003556100656009600a6104d8565b610073906301312d006104ed565b6004556100826009600a6104d8565b610090906301312d006104ed565b600555600f600a818155600b8190556100a99190610504565b600c55600f600d55600a600e55600d54600e546100c69190610504565b600f555f6010556016805461ffff60a01b1916600160a81b1790556100ed6009600a6104d8565b6100fa90629896806104ed565b601755348015610108575f5ffd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156101ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101cf9190610517565b6001600160a01b039081166080526015546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801561021d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102419190610517565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af115801561028f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b39190610517565b6001600160a01b0390811660a0819052601680546001600160a01b03199081168317909155305f8181526007602090815260408083206015548816845282528083205f1990556013805486167389a7197d3f0c5f7c1abd90e0a763a13ebd764e1f178155601480549096167302e41219d7ea955c9de0c197c1337a997d28135c179095553380845260088352818420805460ff199081166001908117909255600985528386208054821683179055978552828520805489168217905595549097168352808320805487168617905592825282822080549095168417909455915484835260069093528082208390555190917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916103d291815260200190565b60405180910390a361053d565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561042e57808504811115610412576104126103df565b600184161561042057908102905b60019390931c9280026103f7565b935093915050565b5f82610444575060016104d2565b8161045057505f6104d2565b816001811461046657600281146104705761048c565b60019150506104d2565b60ff841115610481576104816103df565b50506001821b6104d2565b5060208310610133831016604e8410600b84101617156104af575081810a6104d2565b6104bb5f1984846103f3565b805f19048211156104ce576104ce6103df565b0290505b92915050565b5f6104e660ff841683610436565b9392505050565b80820281158282048414176104d2576104d26103df565b808201808211156104d2576104d26103df565b5f60208284031215610527575f5ffd5b81516001600160a01b03811681146104e6575f5ffd5b60805160a0516123566105815f395f81816105bc0152818161157301528181611749015281816117c501528181611ac50152611b1101525f611c6501526123565ff3fe60806040526004361061021f575f3560e01c80636ddd17131161011e57806395d89b41116100a8578063ccf8c0361161006d578063ccf8c0361461063a578063dd62ed3e14610659578063f2fde38b1461069d578063f6a78e17146106bc578063f887ea40146106d0575f5ffd5b806395d89b411461057d578063a8aa1b31146105ab578063a9059cbb146105de578063b2bdfa7b146105fd578063bc3371821461061b575f5ffd5b80637d1db4a5116100ee5780637d1db4a5146104e8578063893d20e8146104fd5780638d7a8ba71461052d5780638da5cb5b1461054c578063953fe8e914610568575f5ffd5b80636ddd17131461046157806370a0823114610481578063715018a6146104b557806377b54bad146104c9575f5ffd5b8063121555a6116101aa578063313ce5671161016f578063313ce567146103de5780633705b392146103f95780635d0044ca1461040e57806366ca9b831461042d5780636c0a24eb1461044c575f5ffd5b8063121555a61461036457806318160ddd1461038357806323b872dd146103975780632694fc29146103b65780632b112e49146103ca575f5ffd5b80630445b667116101f05780630445b667146102a75780630621472c146102bc57806306fdde03146102eb57806308fd3d0514610325578063095ea7b314610345575f5ffd5b8062afb3251461022a57806301945a761461025257806302dbd8f81461026757806304368f6514610288575f5ffd5b3661022657005b5f5ffd5b348015610235575f5ffd5b5061023f600f5481565b6040519081526020015b60405180910390f35b34801561025d575f5ffd5b5061023f60055481565b348015610272575f5ffd5b50610286610281366004611ec2565b6106ef565b005b348015610293575f5ffd5b506102866102a2366004611ef2565b6107c4565b3480156102b2575f5ffd5b5061023f60175481565b3480156102c7575f5ffd5b506102db6102d6366004611f37565b61084f565b6040519015158152602001610249565b3480156102f6575f5ffd5b5060408051808201909152600981526853706565636820414960b81b60208201525b6040516102499190611f50565b348015610330575f5ffd5b506016546102db90600160a01b900460ff1681565b348015610350575f5ffd5b506102db61035f366004611f85565b610861565b34801561036f575f5ffd5b5061028661037e366004611f9f565b61091b565b34801561038e575f5ffd5b5060015461023f565b3480156103a2575f5ffd5b506102db6103b1366004611fd0565b610a19565b3480156103c1575f5ffd5b50610286610b90565b3480156103d5575f5ffd5b5061023f610c6b565b3480156103e9575f5ffd5b5060405160098152602001610249565b348015610404575f5ffd5b5061023f600c5481565b348015610419575f5ffd5b5061028661042836600461200a565b610cab565b348015610438575f5ffd5b50610286610447366004611ec2565b610d2c565b348015610457575f5ffd5b5061023f60035481565b34801561046c575f5ffd5b506016546102db90600160a81b900460ff1681565b34801561048c575f5ffd5b5061023f61049b366004611f37565b6001600160a01b03165f9081526006602052604090205490565b3480156104c0575f5ffd5b50610286610df8565b3480156104d4575f5ffd5b506102db6104e3366004611f85565b610e69565b3480156104f3575f5ffd5b5061023f60025481565b348015610508575f5ffd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610249565b348015610538575f5ffd5b50610286610547366004612021565b610f88565b348015610557575f5ffd5b505f546001600160a01b0316610515565b348015610573575f5ffd5b5061023f60045481565b348015610588575f5ffd5b506040805180820190915260068152650a6a08a8a86960d31b6020820152610318565b3480156105b6575f5ffd5b506105157f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e9575f5ffd5b506102db6105f8366004611f85565b61105a565b348015610608575f5ffd5b505f54610515906001600160a01b031681565b348015610626575f5ffd5b5061028661063536600461200a565b6110bc565b348015610645575f5ffd5b50610286610654366004612021565b61113d565b348015610664575f5ffd5b5061023f610673366004611f9f565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b3480156106a8575f5ffd5b506102866106b7366004611f37565b611223565b3480156106c7575f5ffd5b5061028661130a565b3480156106db575f5ffd5b50601554610515906001600160a01b031681565b5f546001600160a01b031633146107215760405162461bcd60e51b815260040161071890612056565b60405180910390fd5b600561072d828461209f565b111561077b5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e203525000000006044820152606401610718565b600e829055600d81905561078f818361209f565b600f55600d54600e546040517f1568ae12a48f94971e72d93f8f5846cfda77ba2ba927d867f64e498835788138905f90a35050565b5f546001600160a01b031633146107ed5760405162461bcd60e51b815260040161071890612056565b6016805460ff60a81b1916600160a81b841515021790556108106009600a612195565b61081a90826121a3565b6017556040518190831515907fd896c9007bf8dc883f6b125322395dddc87bf825aed2e302315071c66e0d5dd9905f90a35050565b5f61085b825f19610861565b92915050565b5f6001600160a01b0383166108b85760405162461bcd60e51b815260206004820152601b60248201527f5370656e64657220697320746865207a65726f206164647265737300000000006044820152606401610718565b335f8181526007602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b5f546001600160a01b031633146109445760405162461bcd60e51b815260040161071890612056565b6001600160a01b0382161580159061096457506001600160a01b03811615155b6109bc5760405162461bcd60e51b815260206004820152602360248201527f4665652072656365697665722063616e6e6f74206265207a65726f206164647260448201526265737360e81b6064820152608401610718565b601380546001600160a01b03199081166001600160a01b03858116918217909355601480549092169284169283179091556040517f5b1b7727e42d2f1e9652d0af0d3b4f580a270e5d7ff9a47120c8602d4ec2def5905f90a35050565b5f6001600160a01b038416610a705760405162461bcd60e51b815260206004820152601a60248201527f53656e64657220697320746865207a65726f20616464726573730000000000006044820152606401610718565b6001600160a01b038316610ac65760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f20616464726573730000006044820152606401610718565b6001600160a01b0384165f9081526007602090815260408083203384529091529020545f198114610b7a5782811015610b525760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610718565b6001600160a01b0385165f908152600760209081526040808320338452909152902083820390555b610b8585858561136c565b9150505b9392505050565b5f546001600160a01b03163314610bb95760405162461bcd60e51b815260040161071890612056565b601654600160a01b900460ff1615610c135760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920456e61626c65642e00000000000000006044820152606401610718565b6016805460ff60a01b1916600160a01b90811791829055436011819055601281905560405190929190910460ff161515907f07c24843b569ea20bd3c266fb17047bdd751e44ea3afa2150f231b90bc669f4d905f90a3565b61dead5f90815260066020527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2254600154610ca691906121ba565b905090565b5f546001600160a01b03163314610cd45760405162461bcd60e51b815260040161071890612056565b6005811015610ce1575f5ffd5b6103e881600154610cf291906121a3565b610cfc91906121cd565b60038190556040517ff8c5ab682312267665fe2e7afb06ce5e015dae6e8e8b89ebf47de5312c153c35905f90a250565b5f546001600160a01b03163314610d555760405162461bcd60e51b815260040161071890612056565b6005610d61828461209f565b1115610daf5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e203525000000006044820152606401610718565b600b829055600a819055610dc3818361209f565b600c55600a54600b546040517f2816b76723f76e2768850694f4460c7c44a6592719ca811a201bd3087a872557905f90a35050565b5f546001600160a01b03163314610e215760405162461bcd60e51b815260040161071890612056565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6013545f906001600160a01b0316331480610e8e57506014546001600160a01b031633145b610e96575f5ffd5b306001600160a01b03841603610eaa575f5ffd5b815f03610f1a576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610ef3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1791906121ec565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610f64573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b899190612203565b5f546001600160a01b03163314610fb15760405162461bcd60e51b815260040161071890612056565b6001600160a01b0382166110075760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f20616464726573730000000000006044820152606401610718565b6001600160a01b0382165f81815260096020526040808220805460ff191685151590811790915590519092917f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377591a35050565b5f6001600160a01b0383166110b15760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f20616464726573730000006044820152606401610718565b610b8933848461136c565b5f546001600160a01b031633146110e55760405162461bcd60e51b815260040161071890612056565b60058110156110f2575f5ffd5b6103e88160015461110391906121a3565b61110d91906121cd565b60028190556040517f3e20d7489efd636786bf4e1e0eb2addeb10f5435dc95fff56528021af35c5041905f90a250565b5f546001600160a01b031633146111665760405162461bcd60e51b815260040161071890612056565b6001600160a01b0382166111bc5760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f20616464726573730000000000006044820152606401610718565b6001600160a01b0382165f818152600860209081526040808320805486151560ff199182168117909255600990935281842080549093168117909255519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b5f546001600160a01b0316331461124c5760405162461bcd60e51b815260040161071890612056565b6001600160a01b0381166112b15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610718565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146113335760405162461bcd60e51b815260040161071890612056565b6001546003819055600281905560405181907fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa9905f90a3565b6018545f9060ff161561138b57611384848484611991565b9050610b89565b5f546001600160a01b038581169116146113ef57601654600160a01b900460ff166113ef5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610718565b6012544314801561141857506001600160a01b0383165f9081526009602052604090205460ff16155b156114825760045482111561147d5760405162461bcd60e51b815260206004820152602560248201527f5478204c696d697420457863656564656420647572696e67206c61756e636820604482015264626c6f636b60d81b6064820152608401610718565b61148c565b61148c8483611a4d565b6001600160a01b0384165f90815260066020526040902054828110156114c45760405162461bcd60e51b81526004016107189061221e565b6001600160a01b0385165f9081526008602052604081205460ff168061150157506001600160a01b0385165f9081526008602052604090205460ff165b61151557611510868587611ab9565b611517565b835b905061152a5f546001600160a01b031690565b6001600160a01b0316866001600160a01b0316141580156115e657506001600160a01b038516301480159061156a57506001600160a01b03851661dead14155b80156115a857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156115c257506013546001600160a01b03868116911614155b80156115e657506001600160a01b0385165f9081526009602052604090205460ff16155b156116fa576001600160a01b0385165f90815260066020526040902054601254430361167757600554611619838361209f565b11156116725760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672065786365656473206c61756e636820626c6f604482015261636b60f01b6064820152608401610718565b6116f8565b600354611684838361209f565b11156116f85760405162461bcd60e51b815260206004820152603760248201527f546f74616c20486f6c64696e6720697320726573747269637465642c20796f7560448201527f2063616e206e6f74206275792074686174206d7563682e0000000000000000006064820152608401610718565b505b436011541415801561171c5750601754305f9081526006602052604090205410155b80156117315750601654600160a81b900460ff165b8015611740575060185460ff16155b801561177d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b1561178f5761178a611bd2565b436011555b6001600160a01b038087165f908152600660205260408082208786039055918716815220805482019055601254430361194b575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614801561180d57506001600160a01b0386163014155b801561182457506001600160a01b03861661dead14155b801561184857506001600160a01b0386165f9081526009602052604090205460ff16155b905080156119495760108054905f61185f83612264565b9190505550601b601054111561194957818015611947576001600160a01b0387165f908152600660205260408120805483929061189d9084906121ba565b909155505061dead5f90815260066020527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548392906118df90849061209f565b909155505060405181815230906001600160a01b038916905f5160206123015f395f51905f529060200160405180910390a360405181906001600160a01b038916907f39658beb138a6f1d0a3f7116700f088463e90e750674101493b20c83042f46b1905f90a35b505b505b846001600160a01b0316866001600160a01b03165f5160206123015f395f51905f528360405161197d91815260200190565b60405180910390a350600195945050505050565b6001600160a01b0383165f90815260066020526040812054828110156119c95760405162461bcd60e51b81526004016107189061221e565b6001600160a01b038086165f908152600660205260408082208054879003905591861681529081208054859290611a0190849061209f565b92505081905550836001600160a01b0316856001600160a01b03165f5160206123015f395f51905f5285604051611a3a91815260200190565b60405180910390a3506001949350505050565b60025481111580611a7557506001600160a01b0382165f9081526009602052604090205460ff165b611ab55760405162461bcd60e51b8152602060048201526011602482015270151e08131a5b5a5d08115e18d959591959607a1b6044820152606401610718565b5050565b5f806001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690841603611b0f576064600f5485611afe91906121a3565b611b0891906121cd565b9050611b71565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603611b58576064600c5485611afe91906121a3565b6064611b645f866121a3565b611b6e91906121cd565b90505b8015611bc857305f9081526006602052604081208054839290611b9590849061209f565b909155505060405181815230906001600160a01b038716905f5160206123015f395f51905f529060200160405180910390a35b610b8581856121ba565b6018805460ff19166001179055600f54600c545f91611bf09161209f565b90505f600e54600b54611c03919061209f565b6017546040805160028082526060820183529394505f938493928492919060208301908036833701905050905030815f81518110611c4357611c4361227c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611c9757611c9761227c565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac94790611cdc9085905f90869030904290600401612290565b5f604051808303815f87803b158015611cf3575f5ffd5b505af1158015611d05573d5f5f3e3d5ffd5b5047925050505f879003611d1b575f9450611d33565b86611d2687836121a3565b611d3091906121cd565b94505b611d3d85826121ba565b6014546040519195505f916001600160a01b039091169087908381818185875af1925050503d805f8114611d8c576040519150601f19603f3d011682016040523d82523d5f602084013e611d91565b606091505b5050905080611df55760405162461bcd60e51b815260206004820152602a60248201527f4661696c656420746f2073656e6420657468657220746f205465616d20466565604482015269102932b1b2b4bb32b91760b11b6064820152608401610718565b6013546040515f916001600160a01b03169087908381818185875af1925050503d805f8114611e3f576040519150601f19603f3d011682016040523d82523d5f602084013e611e44565b606091505b5050905080611ead5760405162461bcd60e51b815260206004820152602f60248201527f4661696c656420746f2073656e6420657468657220746f204d61726b6574696e60448201526e33902332b2902932b1b2b4bb32b91760891b6064820152608401610718565b50506018805460ff1916905550505050505050565b5f5f60408385031215611ed3575f5ffd5b50508035926020909101359150565b8015158114611eef575f5ffd5b50565b5f5f60408385031215611f03575f5ffd5b8235611f0e81611ee2565b946020939093013593505050565b80356001600160a01b0381168114611f32575f5ffd5b919050565b5f60208284031215611f47575f5ffd5b610b8982611f1c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215611f96575f5ffd5b611f0e83611f1c565b5f5f60408385031215611fb0575f5ffd5b611fb983611f1c565b9150611fc760208401611f1c565b90509250929050565b5f5f5f60608486031215611fe2575f5ffd5b611feb84611f1c565b9250611ff960208501611f1c565b929592945050506040919091013590565b5f6020828403121561201a575f5ffd5b5035919050565b5f5f60408385031215612032575f5ffd5b61203b83611f1c565b9150602083013561204b81611ee2565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561085b5761085b61208b565b6001815b60018411156120ed578085048111156120d1576120d161208b565b60018416156120df57908102905b60019390931c9280026120b6565b935093915050565b5f826121035750600161085b565b8161210f57505f61085b565b8160018114612125576002811461212f5761214b565b600191505061085b565b60ff8411156121405761214061208b565b50506001821b61085b565b5060208310610133831016604e8410600b841016171561216e575081810a61085b565b61217a5f1984846120b2565b805f190482111561218d5761218d61208b565b029392505050565b5f610b8960ff8416836120f5565b808202811582820484141761085b5761085b61208b565b8181038181111561085b5761085b61208b565b5f826121e757634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156121fc575f5ffd5b5051919050565b5f60208284031215612213575f5ffd5b8151610b8981611ee2565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b5f600182016122755761227561208b565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156122e05783516001600160a01b03168352602093840193909201916001016122b9565b50506001600160a01b03959095166060840152505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205f2cbea1ef1cd174c43c7ab298811d710a06d110e6f2df4fc7d10a886f394cec64736f6c634300081e0033

Deployed Bytecode

0x60806040526004361061021f575f3560e01c80636ddd17131161011e57806395d89b41116100a8578063ccf8c0361161006d578063ccf8c0361461063a578063dd62ed3e14610659578063f2fde38b1461069d578063f6a78e17146106bc578063f887ea40146106d0575f5ffd5b806395d89b411461057d578063a8aa1b31146105ab578063a9059cbb146105de578063b2bdfa7b146105fd578063bc3371821461061b575f5ffd5b80637d1db4a5116100ee5780637d1db4a5146104e8578063893d20e8146104fd5780638d7a8ba71461052d5780638da5cb5b1461054c578063953fe8e914610568575f5ffd5b80636ddd17131461046157806370a0823114610481578063715018a6146104b557806377b54bad146104c9575f5ffd5b8063121555a6116101aa578063313ce5671161016f578063313ce567146103de5780633705b392146103f95780635d0044ca1461040e57806366ca9b831461042d5780636c0a24eb1461044c575f5ffd5b8063121555a61461036457806318160ddd1461038357806323b872dd146103975780632694fc29146103b65780632b112e49146103ca575f5ffd5b80630445b667116101f05780630445b667146102a75780630621472c146102bc57806306fdde03146102eb57806308fd3d0514610325578063095ea7b314610345575f5ffd5b8062afb3251461022a57806301945a761461025257806302dbd8f81461026757806304368f6514610288575f5ffd5b3661022657005b5f5ffd5b348015610235575f5ffd5b5061023f600f5481565b6040519081526020015b60405180910390f35b34801561025d575f5ffd5b5061023f60055481565b348015610272575f5ffd5b50610286610281366004611ec2565b6106ef565b005b348015610293575f5ffd5b506102866102a2366004611ef2565b6107c4565b3480156102b2575f5ffd5b5061023f60175481565b3480156102c7575f5ffd5b506102db6102d6366004611f37565b61084f565b6040519015158152602001610249565b3480156102f6575f5ffd5b5060408051808201909152600981526853706565636820414960b81b60208201525b6040516102499190611f50565b348015610330575f5ffd5b506016546102db90600160a01b900460ff1681565b348015610350575f5ffd5b506102db61035f366004611f85565b610861565b34801561036f575f5ffd5b5061028661037e366004611f9f565b61091b565b34801561038e575f5ffd5b5060015461023f565b3480156103a2575f5ffd5b506102db6103b1366004611fd0565b610a19565b3480156103c1575f5ffd5b50610286610b90565b3480156103d5575f5ffd5b5061023f610c6b565b3480156103e9575f5ffd5b5060405160098152602001610249565b348015610404575f5ffd5b5061023f600c5481565b348015610419575f5ffd5b5061028661042836600461200a565b610cab565b348015610438575f5ffd5b50610286610447366004611ec2565b610d2c565b348015610457575f5ffd5b5061023f60035481565b34801561046c575f5ffd5b506016546102db90600160a81b900460ff1681565b34801561048c575f5ffd5b5061023f61049b366004611f37565b6001600160a01b03165f9081526006602052604090205490565b3480156104c0575f5ffd5b50610286610df8565b3480156104d4575f5ffd5b506102db6104e3366004611f85565b610e69565b3480156104f3575f5ffd5b5061023f60025481565b348015610508575f5ffd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610249565b348015610538575f5ffd5b50610286610547366004612021565b610f88565b348015610557575f5ffd5b505f546001600160a01b0316610515565b348015610573575f5ffd5b5061023f60045481565b348015610588575f5ffd5b506040805180820190915260068152650a6a08a8a86960d31b6020820152610318565b3480156105b6575f5ffd5b506105157f00000000000000000000000040cf0d9ddc369c5479b6baf894c000fa1215bb2381565b3480156105e9575f5ffd5b506102db6105f8366004611f85565b61105a565b348015610608575f5ffd5b505f54610515906001600160a01b031681565b348015610626575f5ffd5b5061028661063536600461200a565b6110bc565b348015610645575f5ffd5b50610286610654366004612021565b61113d565b348015610664575f5ffd5b5061023f610673366004611f9f565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b3480156106a8575f5ffd5b506102866106b7366004611f37565b611223565b3480156106c7575f5ffd5b5061028661130a565b3480156106db575f5ffd5b50601554610515906001600160a01b031681565b5f546001600160a01b031633146107215760405162461bcd60e51b815260040161071890612056565b60405180910390fd5b600561072d828461209f565b111561077b5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e203525000000006044820152606401610718565b600e829055600d81905561078f818361209f565b600f55600d54600e546040517f1568ae12a48f94971e72d93f8f5846cfda77ba2ba927d867f64e498835788138905f90a35050565b5f546001600160a01b031633146107ed5760405162461bcd60e51b815260040161071890612056565b6016805460ff60a81b1916600160a81b841515021790556108106009600a612195565b61081a90826121a3565b6017556040518190831515907fd896c9007bf8dc883f6b125322395dddc87bf825aed2e302315071c66e0d5dd9905f90a35050565b5f61085b825f19610861565b92915050565b5f6001600160a01b0383166108b85760405162461bcd60e51b815260206004820152601b60248201527f5370656e64657220697320746865207a65726f206164647265737300000000006044820152606401610718565b335f8181526007602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b5f546001600160a01b031633146109445760405162461bcd60e51b815260040161071890612056565b6001600160a01b0382161580159061096457506001600160a01b03811615155b6109bc5760405162461bcd60e51b815260206004820152602360248201527f4665652072656365697665722063616e6e6f74206265207a65726f206164647260448201526265737360e81b6064820152608401610718565b601380546001600160a01b03199081166001600160a01b03858116918217909355601480549092169284169283179091556040517f5b1b7727e42d2f1e9652d0af0d3b4f580a270e5d7ff9a47120c8602d4ec2def5905f90a35050565b5f6001600160a01b038416610a705760405162461bcd60e51b815260206004820152601a60248201527f53656e64657220697320746865207a65726f20616464726573730000000000006044820152606401610718565b6001600160a01b038316610ac65760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f20616464726573730000006044820152606401610718565b6001600160a01b0384165f9081526007602090815260408083203384529091529020545f198114610b7a5782811015610b525760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610718565b6001600160a01b0385165f908152600760209081526040808320338452909152902083820390555b610b8585858561136c565b9150505b9392505050565b5f546001600160a01b03163314610bb95760405162461bcd60e51b815260040161071890612056565b601654600160a01b900460ff1615610c135760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920456e61626c65642e00000000000000006044820152606401610718565b6016805460ff60a01b1916600160a01b90811791829055436011819055601281905560405190929190910460ff161515907f07c24843b569ea20bd3c266fb17047bdd751e44ea3afa2150f231b90bc669f4d905f90a3565b61dead5f90815260066020527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2254600154610ca691906121ba565b905090565b5f546001600160a01b03163314610cd45760405162461bcd60e51b815260040161071890612056565b6005811015610ce1575f5ffd5b6103e881600154610cf291906121a3565b610cfc91906121cd565b60038190556040517ff8c5ab682312267665fe2e7afb06ce5e015dae6e8e8b89ebf47de5312c153c35905f90a250565b5f546001600160a01b03163314610d555760405162461bcd60e51b815260040161071890612056565b6005610d61828461209f565b1115610daf5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e203525000000006044820152606401610718565b600b829055600a819055610dc3818361209f565b600c55600a54600b546040517f2816b76723f76e2768850694f4460c7c44a6592719ca811a201bd3087a872557905f90a35050565b5f546001600160a01b03163314610e215760405162461bcd60e51b815260040161071890612056565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6013545f906001600160a01b0316331480610e8e57506014546001600160a01b031633145b610e96575f5ffd5b306001600160a01b03841603610eaa575f5ffd5b815f03610f1a576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610ef3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1791906121ec565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610f64573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b899190612203565b5f546001600160a01b03163314610fb15760405162461bcd60e51b815260040161071890612056565b6001600160a01b0382166110075760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f20616464726573730000000000006044820152606401610718565b6001600160a01b0382165f81815260096020526040808220805460ff191685151590811790915590519092917f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377591a35050565b5f6001600160a01b0383166110b15760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f20616464726573730000006044820152606401610718565b610b8933848461136c565b5f546001600160a01b031633146110e55760405162461bcd60e51b815260040161071890612056565b60058110156110f2575f5ffd5b6103e88160015461110391906121a3565b61110d91906121cd565b60028190556040517f3e20d7489efd636786bf4e1e0eb2addeb10f5435dc95fff56528021af35c5041905f90a250565b5f546001600160a01b031633146111665760405162461bcd60e51b815260040161071890612056565b6001600160a01b0382166111bc5760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f20616464726573730000000000006044820152606401610718565b6001600160a01b0382165f818152600860209081526040808320805486151560ff199182168117909255600990935281842080549093168117909255519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b5f546001600160a01b0316331461124c5760405162461bcd60e51b815260040161071890612056565b6001600160a01b0381166112b15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610718565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146113335760405162461bcd60e51b815260040161071890612056565b6001546003819055600281905560405181907fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa9905f90a3565b6018545f9060ff161561138b57611384848484611991565b9050610b89565b5f546001600160a01b038581169116146113ef57601654600160a01b900460ff166113ef5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610718565b6012544314801561141857506001600160a01b0383165f9081526009602052604090205460ff16155b156114825760045482111561147d5760405162461bcd60e51b815260206004820152602560248201527f5478204c696d697420457863656564656420647572696e67206c61756e636820604482015264626c6f636b60d81b6064820152608401610718565b61148c565b61148c8483611a4d565b6001600160a01b0384165f90815260066020526040902054828110156114c45760405162461bcd60e51b81526004016107189061221e565b6001600160a01b0385165f9081526008602052604081205460ff168061150157506001600160a01b0385165f9081526008602052604090205460ff165b61151557611510868587611ab9565b611517565b835b905061152a5f546001600160a01b031690565b6001600160a01b0316866001600160a01b0316141580156115e657506001600160a01b038516301480159061156a57506001600160a01b03851661dead14155b80156115a857507f00000000000000000000000040cf0d9ddc369c5479b6baf894c000fa1215bb236001600160a01b0316856001600160a01b031614155b80156115c257506013546001600160a01b03868116911614155b80156115e657506001600160a01b0385165f9081526009602052604090205460ff16155b156116fa576001600160a01b0385165f90815260066020526040902054601254430361167757600554611619838361209f565b11156116725760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672065786365656473206c61756e636820626c6f604482015261636b60f01b6064820152608401610718565b6116f8565b600354611684838361209f565b11156116f85760405162461bcd60e51b815260206004820152603760248201527f546f74616c20486f6c64696e6720697320726573747269637465642c20796f7560448201527f2063616e206e6f74206275792074686174206d7563682e0000000000000000006064820152608401610718565b505b436011541415801561171c5750601754305f9081526006602052604090205410155b80156117315750601654600160a81b900460ff165b8015611740575060185460ff16155b801561177d57507f00000000000000000000000040cf0d9ddc369c5479b6baf894c000fa1215bb236001600160a01b0316856001600160a01b0316145b1561178f5761178a611bd2565b436011555b6001600160a01b038087165f908152600660205260408082208786039055918716815220805482019055601254430361194b575f7f00000000000000000000000040cf0d9ddc369c5479b6baf894c000fa1215bb236001600160a01b0316876001600160a01b031614801561180d57506001600160a01b0386163014155b801561182457506001600160a01b03861661dead14155b801561184857506001600160a01b0386165f9081526009602052604090205460ff16155b905080156119495760108054905f61185f83612264565b9190505550601b601054111561194957818015611947576001600160a01b0387165f908152600660205260408120805483929061189d9084906121ba565b909155505061dead5f90815260066020527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548392906118df90849061209f565b909155505060405181815230906001600160a01b038916905f5160206123015f395f51905f529060200160405180910390a360405181906001600160a01b038916907f39658beb138a6f1d0a3f7116700f088463e90e750674101493b20c83042f46b1905f90a35b505b505b846001600160a01b0316866001600160a01b03165f5160206123015f395f51905f528360405161197d91815260200190565b60405180910390a350600195945050505050565b6001600160a01b0383165f90815260066020526040812054828110156119c95760405162461bcd60e51b81526004016107189061221e565b6001600160a01b038086165f908152600660205260408082208054879003905591861681529081208054859290611a0190849061209f565b92505081905550836001600160a01b0316856001600160a01b03165f5160206123015f395f51905f5285604051611a3a91815260200190565b60405180910390a3506001949350505050565b60025481111580611a7557506001600160a01b0382165f9081526009602052604090205460ff165b611ab55760405162461bcd60e51b8152602060048201526011602482015270151e08131a5b5a5d08115e18d959591959607a1b6044820152606401610718565b5050565b5f806001600160a01b037f00000000000000000000000040cf0d9ddc369c5479b6baf894c000fa1215bb23811690841603611b0f576064600f5485611afe91906121a3565b611b0891906121cd565b9050611b71565b7f00000000000000000000000040cf0d9ddc369c5479b6baf894c000fa1215bb236001600160a01b0316856001600160a01b031603611b58576064600c5485611afe91906121a3565b6064611b645f866121a3565b611b6e91906121cd565b90505b8015611bc857305f9081526006602052604081208054839290611b9590849061209f565b909155505060405181815230906001600160a01b038716905f5160206123015f395f51905f529060200160405180910390a35b610b8581856121ba565b6018805460ff19166001179055600f54600c545f91611bf09161209f565b90505f600e54600b54611c03919061209f565b6017546040805160028082526060820183529394505f938493928492919060208301908036833701905050905030815f81518110611c4357611c4361227c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611c9757611c9761227c565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac94790611cdc9085905f90869030904290600401612290565b5f604051808303815f87803b158015611cf3575f5ffd5b505af1158015611d05573d5f5f3e3d5ffd5b5047925050505f879003611d1b575f9450611d33565b86611d2687836121a3565b611d3091906121cd565b94505b611d3d85826121ba565b6014546040519195505f916001600160a01b039091169087908381818185875af1925050503d805f8114611d8c576040519150601f19603f3d011682016040523d82523d5f602084013e611d91565b606091505b5050905080611df55760405162461bcd60e51b815260206004820152602a60248201527f4661696c656420746f2073656e6420657468657220746f205465616d20466565604482015269102932b1b2b4bb32b91760b11b6064820152608401610718565b6013546040515f916001600160a01b03169087908381818185875af1925050503d805f8114611e3f576040519150601f19603f3d011682016040523d82523d5f602084013e611e44565b606091505b5050905080611ead5760405162461bcd60e51b815260206004820152602f60248201527f4661696c656420746f2073656e6420657468657220746f204d61726b6574696e60448201526e33902332b2902932b1b2b4bb32b91760891b6064820152608401610718565b50506018805460ff1916905550505050505050565b5f5f60408385031215611ed3575f5ffd5b50508035926020909101359150565b8015158114611eef575f5ffd5b50565b5f5f60408385031215611f03575f5ffd5b8235611f0e81611ee2565b946020939093013593505050565b80356001600160a01b0381168114611f32575f5ffd5b919050565b5f60208284031215611f47575f5ffd5b610b8982611f1c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215611f96575f5ffd5b611f0e83611f1c565b5f5f60408385031215611fb0575f5ffd5b611fb983611f1c565b9150611fc760208401611f1c565b90509250929050565b5f5f5f60608486031215611fe2575f5ffd5b611feb84611f1c565b9250611ff960208501611f1c565b929592945050506040919091013590565b5f6020828403121561201a575f5ffd5b5035919050565b5f5f60408385031215612032575f5ffd5b61203b83611f1c565b9150602083013561204b81611ee2565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561085b5761085b61208b565b6001815b60018411156120ed578085048111156120d1576120d161208b565b60018416156120df57908102905b60019390931c9280026120b6565b935093915050565b5f826121035750600161085b565b8161210f57505f61085b565b8160018114612125576002811461212f5761214b565b600191505061085b565b60ff8411156121405761214061208b565b50506001821b61085b565b5060208310610133831016604e8410600b841016171561216e575081810a61085b565b61217a5f1984846120b2565b805f190482111561218d5761218d61208b565b029392505050565b5f610b8960ff8416836120f5565b808202811582820484141761085b5761085b61208b565b8181038181111561085b5761085b61208b565b5f826121e757634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156121fc575f5ffd5b5051919050565b5f60208284031215612213575f5ffd5b8151610b8981611ee2565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b5f600182016122755761227561208b565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156122e05783516001600160a01b03168352602093840193909201916001016122b9565b50506001600160a01b03959095166060840152505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205f2cbea1ef1cd174c43c7ab298811d710a06d110e6f2df4fc7d10a886f394cec64736f6c634300081e0033

Deployed Bytecode Sourcemap

3823:14204:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4852:60;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4852:60:0;;;;;;;;4340:64;;;;;;;;;;;;;;;;16874:362;;;;;;;;;;-1:-1:-1;16874:362:0;;;;;:::i;:::-;;:::i;:::-;;17668:230;;;;;;;;;;-1:-1:-1;17668:230:0;;;;;:::i;:::-;;:::i;5409:55::-;;;;;;;;;;;;;;;;8279:122;;;;;;;;;;-1:-1:-1;8279:122:0;;;;;:::i;:::-;;:::i;:::-;;;1570:14:1;;1563:22;1545:41;;1533:2;1518:18;8279:122:0;1405:187:1;7561:80:0;;;;;;;;;;-1:-1:-1;7633:5:0;;;;;;;;;;;;-1:-1:-1;;;7633:5:0;;;;7561:80;;;;;;;:::i;5328:31::-;;;;;;;;;;-1:-1:-1;5328:31:0;;;;-1:-1:-1;;;5328:31:0;;;;;;7983:288;;;;;;;;;;-1:-1:-1;7983:288:0;;;;;:::i;:::-;;:::i;17244:416::-;;;;;;;;;;-1:-1:-1;17244:416:0;;;;;:::i;:::-;;:::i;7291:88::-;;;;;;;;;;-1:-1:-1;7364:12:0;;7291:88;;8649:668;;;;;;;;;;-1:-1:-1;8649:668:0;;;;;:::i;:::-;;:::i;14480:267::-;;;;;;;;;;;;;:::i;17906:118::-;;;;;;;;;;;;;:::i;7385:80::-;;;;;;;;;;-1:-1:-1;7385:80:0;;4080:1;3111:36:1;;3099:2;3084:18;7385:80:0;2969:184:1;4703:57:0;;;;;;;;;;;;;;;;9325:247;;;;;;;;;;-1:-1:-1;9325:247:0;;;;;:::i;:::-;;:::i;16511:355::-;;;;;;;;;;-1:-1:-1;16511:355:0;;;;;:::i;:::-;;:::i;4209:57::-;;;;;;;;;;;;;;;;5372:30;;;;;;;;;;-1:-1:-1;5372:30:0;;;;-1:-1:-1;;;5372:30:0;;;;;;7731:105;;;;;;;;;;-1:-1:-1;7731:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7815:18:0;7797:7;7815:18;;;:9;:18;;;;;;;7731:105;1878:150;;;;;;;;;;;;;:::i;14061:411::-;;;;;;;;;;-1:-1:-1;14061:411:0;;;;;:::i;:::-;;:::i;4149:53::-;;;;;;;;;;;;;;;;7647:78;;;;;;;;;;-1:-1:-1;7699:7:0;1729:6;-1:-1:-1;;;;;1729:6:0;7647:78;;;-1:-1:-1;;;;;3553:32:1;;;3535:51;;3523:2;3508:18;7647:78:0;3389:203:1;16263:240:0;;;;;;;;;;-1:-1:-1;16263:240:0;;;;;:::i;:::-;;:::i;1664:79::-;;;;;;;;;;-1:-1:-1;1702:7:0;1729:6;-1:-1:-1;;;;;1729:6:0;1664:79;;4273:60;;;;;;;;;;;;;;;;7471:84;;;;;;;;;;-1:-1:-1;7545:7:0;;;;;;;;;;;;-1:-1:-1;;;7545:7:0;;;;7471:84;;5286:29;;;;;;;;;;;;;;;8409:232;;;;;;;;;;-1:-1:-1;8409:232:0;;;;;:::i;:::-;;:::i;1380:21::-;;;;;;;;;;-1:-1:-1;1380:21:0;;;;-1:-1:-1;;;;;1380:21:0;;;9580:213;;;;;;;;;;-1:-1:-1;9580:213:0;;;;;:::i;:::-;;:::i;15986:269::-;;;;;;;;;;-1:-1:-1;15986:269:0;;;;;:::i;:::-;;:::i;7842:133::-;;;;;;;;;;-1:-1:-1;7842:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7944:19:0;;;7926:7;7944:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7842:133;2036:244;;;;;;;;;;-1:-1:-1;2036:244:0;;;;;:::i;:::-;;:::i;13854:199::-;;;;;;;;;;;;;:::i;5216:24::-;;;;;;;;;;-1:-1:-1;5216:24:0;;;;-1:-1:-1;;;;;5216:24:0;;;16874:362;1791:6;;-1:-1:-1;;;;;1791:6:0;1319:10;1791:22;1783:67;;;;-1:-1:-1;;;1783:67:0;;;;;;;:::i;:::-;;;;;;;;;17005:1:::1;16977:24;16988:13:::0;16977:8;:24:::1;:::i;:::-;:29;;16969:70;;;::::0;-1:-1:-1;;;16969:70:0;;4968:2:1;16969:70:0::1;::::0;::::1;4950:21:1::0;5007:2;4987:18;;;4980:30;5046;5026:18;;;5019:58;5094:18;;16969:70:0::1;4766:352:1::0;16969:70:0::1;17051:11;:22:::0;;;17084:16:::1;:32:::0;;;17142:24:::1;17103:13:::0;17065:8;17142:24:::1;:::i;:::-;17127:12;:39:::0;17211:16:::1;::::0;17198:11:::1;::::0;17182:46:::1;::::0;::::1;::::0;;;::::1;16874:362:::0;;:::o;17668:230::-;1791:6;;-1:-1:-1;;;;;1791:6:0;1319:10;1791:22;1783:67;;;;-1:-1:-1;;;1783:67:0;;;;;;;:::i;:::-;17760:11:::1;:22:::0;;-1:-1:-1;;;;17760:22:0::1;-1:-1:-1::0;;;17760:22:0;::::1;;;;::::0;;17819:13:::1;4080:1;17819:2;:13;:::i;:::-;17809:23;::::0;:7;:23:::1;:::i;:::-;17793:13;:39:::0;17848:42:::1;::::0;17882:7;;17848:42;::::1;;::::0;::::1;::::0;;;::::1;17668:230:::0;;:::o;8279:122::-;8334:4;8358:35;8366:7;-1:-1:-1;;8358:7:0;:35::i;:::-;8351:42;8279:122;-1:-1:-1;;8279:122:0:o;7983:288::-;8058:4;-1:-1:-1;;;;;8083:21:0;;8075:61;;;;-1:-1:-1;;;8075:61:0;;6930:2:1;8075:61:0;;;6912:21:1;6969:2;6949:18;;;6942:30;7008:29;6988:18;;;6981:57;7055:18;;8075:61:0;6728:351:1;8075:61:0;8159:10;8147:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8147:32:0;;;;;;;;;;;;:41;;;8204:37;160:25:1;;;8147:32:0;;8159:10;8204:37;;133:18:1;8204:37:0;;;;;;;-1:-1:-1;8259:4:0;7983:288;;;;:::o;17244:416::-;1791:6;;-1:-1:-1;;;;;1791:6:0;1319:10;1791:22;1783:67;;;;-1:-1:-1;;;1783:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17370:35:0;::::1;::::0;;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;17409:30:0;::::1;::::0;::::1;17370:69;17362:117;;;::::0;-1:-1:-1;;;17362:117:0;;7286:2:1;17362:117:0::1;::::0;::::1;7268:21:1::0;7325:2;7305:18;;;7298:30;7364:34;7344:18;;;7337:62;-1:-1:-1;;;7415:18:1;;;7408:33;7458:19;;17362:117:0::1;7084:399:1::0;17362:117:0::1;17490:20;:44:::0;;-1:-1:-1;;;;;;17490:44:0;;::::1;-1:-1:-1::0;;;;;17490:44:0;;::::1;::::0;;::::1;::::0;;;17545:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;17595:57:::1;::::0;::::1;::::0;-1:-1:-1;;17595:57:0::1;17244:416:::0;;:::o;8649:668::-;8749:4;-1:-1:-1;;;;;8774:20:0;;8766:59;;;;-1:-1:-1;;;8766:59:0;;7690:2:1;8766:59:0;;;7672:21:1;7729:2;7709:18;;;7702:30;7768:28;7748:18;;;7741:56;7814:18;;8766:59:0;7488:350:1;8766:59:0;-1:-1:-1;;;;;8844:23:0;;8836:65;;;;-1:-1:-1;;;8836:65:0;;8045:2:1;8836:65:0;;;8027:21:1;8084:2;8064:18;;;8057:30;8123:31;8103:18;;;8096:59;8172:18;;8836:65:0;7843:353:1;8836:65:0;-1:-1:-1;;;;;8939:19:0;;8912:24;8939:19;;;:11;:19;;;;;;;;1319:10;8939:33;;;;;;;;-1:-1:-1;;8986:37:0;;8983:267;;9067:6;9047:16;:26;;9039:79;;;;-1:-1:-1;;;9039:79:0;;8403:2:1;9039:79:0;;;8385:21:1;8442:2;8422:18;;;8415:30;8481:34;8461:18;;;8454:62;-1:-1:-1;;;8532:18:1;;;8525:38;8580:19;;9039:79:0;8201:404:1;9039:79:0;-1:-1:-1;;;;;9162:19:0;;;;;;:11;:19;;;;;;;;1319:10;9162:33;;;;;;;9198:25;;;9162:61;;8983:267;9269:40;9283:6;9291:9;9302:6;9269:13;:40::i;:::-;9262:47;;;8649:668;;;;;;:::o;14480:267::-;1791:6;;-1:-1:-1;;;;;1791:6:0;1319:10;1791:22;1783:67;;;;-1:-1:-1;;;1783:67:0;;;;;;;:::i;:::-;14539:11:::1;::::0;-1:-1:-1;;;14539:11:0;::::1;;;14538:12;14530:48;;;::::0;-1:-1:-1;;;14530:48:0;;8812:2:1;14530:48:0::1;::::0;::::1;8794:21:1::0;8851:2;8831:18;;;8824:30;8890:26;8870:18;;;8863:54;8934:18;;14530:48:0::1;8610:348:1::0;14530:48:0::1;14589:11;:18:::0;;-1:-1:-1;;;;14589:18:0::1;-1:-1:-1::0;;;14589:18:0;;::::1;::::0;;;;14629:12:::1;14618:8;:23:::0;;;14652:19:::1;:34:::0;;;14702:37:::1;::::0;14629:12;;14717:11;;;::::1;14589:18;14717:11;14702:37;;::::0;::::1;::::0;14589:18;;14702:37:::1;14480:267::o:0;17906:118::-;3919:42;17959:7;7815:18;;;:9;:18;;;;17986:12;;:30;;;;:::i;:::-;17979:37;;17906:118;:::o;9325:247::-;1791:6;;-1:-1:-1;;;;;1791:6:0;1319:10;1791:22;1783:67;;;;-1:-1:-1;;;1783:67:0;;;;;;;:::i;:::-;9433:1:::1;9412:17;:22;;9404:31;;;;;;9503:4;9481:17;9466:12;;:32;;;;:::i;:::-;9465:42;;;;:::i;:::-;9446:16;:61:::0;;;9523:34:::1;::::0;::::1;::::0;;;::::1;9325:247:::0;:::o;16511:355::-;1791:6;;-1:-1:-1;;;;;1791:6:0;1319:10;1791:22;1783:67;;;;-1:-1:-1;;;1783:67:0;;;;;;;:::i;:::-;16641:1:::1;16613:24;16624:13:::0;16613:8;:24:::1;:::i;:::-;:29;;16605:70;;;::::0;-1:-1:-1;;;16605:70:0;;4968:2:1;16605:70:0::1;::::0;::::1;4950:21:1::0;5007:2;4987:18;;;4980:30;5046;5026:18;;;5019:58;5094:18;;16605:70:0::1;4766:352:1::0;16605:70:0::1;16687:10;:21:::0;;;16719:15:::1;:31:::0;;;16775:24:::1;16737:13:::0;16700:8;16775:24:::1;:::i;:::-;16761:11;:38:::0;16842:15:::1;::::0;16830:10:::1;::::0;16815:43:::1;::::0;::::1;::::0;;;::::1;16511:355:::0;;:::o;1878:150::-;1791:6;;-1:-1:-1;;;;;1791:6:0;1319:10;1791:22;1783:67;;;;-1:-1:-1;;;1783:67:0;;;;;;;:::i;:::-;1987:1:::1;1971:6:::0;;1950:40:::1;::::0;-1:-1:-1;;;;;1971:6:0;;::::1;::::0;1950:40:::1;::::0;1987:1;;1950:40:::1;2018:1;2001:19:::0;;-1:-1:-1;;;;;;2001:19:0::1;::::0;;1878:150::o;14061:411::-;14181:20;;14142:4;;-1:-1:-1;;;;;14181:20:0;14167:10;:34;;:67;;-1:-1:-1;14219:15:0;;-1:-1:-1;;;;;14219:15:0;14205:10;:29;14167:67;14159:76;;;;;;14287:4;-1:-1:-1;;;;;14254:38:0;;;14246:47;;;;;;14307:6;14317:1;14307:11;14304:95;;14343:44;;-1:-1:-1;;;14343:44:0;;14381:4;14343:44;;;3535:51:1;-1:-1:-1;;;;;14343:29:0;;;;;3508:18:1;;14343:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14334:53;;14304:95;14416:48;;-1:-1:-1;;;14416:48:0;;14445:10;14416:48;;;9681:51:1;9748:18;;;9741:34;;;-1:-1:-1;;;;;14416:28:0;;;;;9654:18:1;;14416:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16263:240::-;1791:6;;-1:-1:-1;;;;;1791:6:0;1319:10;1791:22;1783:67;;;;-1:-1:-1;;;1783:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16356:20:0;::::1;16348:59;;;::::0;-1:-1:-1;;;16348:59:0;;10238:2:1;16348:59:0::1;::::0;::::1;10220:21:1::0;10277:2;10257:18;;;10250:30;10316:28;10296:18;;;10289:56;10362:18;;16348:59:0::1;10036:350:1::0;16348:59:0::1;-1:-1:-1::0;;;;;16418:23:0;::::1;;::::0;;;:15:::1;:23;::::0;;;;;:32;;-1:-1:-1;;16418:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16466:29;;16418:32;;:23;16466:29:::1;::::0;::::1;16263:240:::0;;:::o;8409:232::-;8489:4;-1:-1:-1;;;;;8514:23:0;;8506:65;;;;-1:-1:-1;;;8506:65:0;;8045:2:1;8506:65:0;;;8027:21:1;8084:2;8064:18;;;8057:30;8123:31;8103:18;;;8096:59;8172:18;;8506:65:0;7843:353:1;8506:65:0;8589:44;8603:10;8615:9;8626:6;8589:13;:44::i;9580:213::-;1791:6;;-1:-1:-1;;;;;1791:6:0;1319:10;1791:22;1783:67;;;;-1:-1:-1;;;1783:67:0;;;;;;;:::i;:::-;9676:1:::1;9659:13;:18;;9651:27;;;;;;9739:4;9721:13;9706:12;;:28;;;;:::i;:::-;9705:38;;;;:::i;:::-;9690:12;:53:::0;;;9759:26:::1;::::0;::::1;::::0;;;::::1;9580:213:::0;:::o;15986:269::-;1791:6;;-1:-1:-1;;;;;1791:6:0;1319:10;1791:22;1783:67;;;;-1:-1:-1;;;1783:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16072:20:0;::::1;16064:59;;;::::0;-1:-1:-1;;;16064:59:0;;10238:2:1;16064:59:0::1;::::0;::::1;10220:21:1::0;10277:2;10257:18;;;10250:30;10316:28;10296:18;;;10289:56;10362:18;;16064:59:0::1;10036:350:1::0;16064:59:0::1;-1:-1:-1::0;;;;;16134:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:28;;;::::1;;-1:-1:-1::0;;16134:28:0;;::::1;::::0;::::1;::::0;;;16173:15:::1;:23:::0;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;16221:26;16134:28;;:19;16221:26:::1;::::0;::::1;15986:269:::0;;:::o;2036:244::-;1791:6;;-1:-1:-1;;;;;1791:6:0;1319:10;1791:22;1783:67;;;;-1:-1:-1;;;1783:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2125:22:0;::::1;2117:73;;;::::0;-1:-1:-1;;;2117:73:0;;10593:2:1;2117:73:0::1;::::0;::::1;10575:21:1::0;10632:2;10612:18;;;10605:30;10671:34;10651:18;;;10644:62;-1:-1:-1;;;10722:18:1;;;10715:36;10768:19;;2117:73:0::1;10391:402:1::0;2117:73:0::1;2227:6;::::0;;2206:38:::1;::::0;-1:-1:-1;;;;;2206:38:0;;::::1;::::0;2227:6;::::1;::::0;2206:38:::1;::::0;::::1;2255:6;:17:::0;;-1:-1:-1;;;;;;2255:17:0::1;-1:-1:-1::0;;;;;2255:17:0;;;::::1;::::0;;;::::1;::::0;;2036:244::o;13854:199::-;1791:6;;-1:-1:-1;;;;;1791:6:0;1319:10;1791:22;1783:67;;;;-1:-1:-1;;;1783:67:0;;;;;;;:::i;:::-;13931:12:::1;::::0;13912:16:::1;:31:::0;;;13954:12:::1;:27:::0;;;13997:48:::1;::::0;13931:12;;13997:48:::1;::::0;-1:-1:-1;;13997:48:0::1;13854:199::o:0;9801:2706::-;9913:6;;9893:4;;9913:6;;9910:63;;;9929:41;9944:6;9952:9;9963:6;9929:14;:41::i;:::-;9922:48;;;;9910:63;1702:7;1729:6;-1:-1:-1;;;;;9988:17:0;;;1729:6;;9988:17;9985:91;;10029:11;;-1:-1:-1;;;10029:11:0;;;;10021:43;;;;-1:-1:-1;;;10021:43:0;;11000:2:1;10021:43:0;;;10982:21:1;11039:2;11019:18;;;11012:30;-1:-1:-1;;;11058:18:1;;;11051:50;11118:18;;10021:43:0;10798:344:1;10021:43:0;10175:19;;10159:12;:35;:66;;;;-1:-1:-1;;;;;;10199:26:0;;;;;;:15;:26;;;;;;;;10198:27;10159:66;10155:238;;;10260:18;;10250:6;:28;;10242:78;;;;-1:-1:-1;;;10242:78:0;;11349:2:1;10242:78:0;;;11331:21:1;11388:2;11368:18;;;11361:30;11427:34;11407:18;;;11400:62;-1:-1:-1;;;11478:18:1;;;11471:35;11523:19;;10242:78:0;11147:401:1;10242:78:0;10155:238;;;10353:28;10366:6;10374;10353:12;:28::i;:::-;-1:-1:-1;;;;;10437:17:0;;10413:21;10437:17;;;:9;:17;;;;;;10473:23;;;;10465:74;;;;-1:-1:-1;;;10465:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10578:19:0;;10552:22;10578:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10601:22:0;;;;;;:11;:22;;;;;;;;10578:45;10577:93;;10636:34;10644:6;10652;10660:9;10636:7;:34::i;:::-;10577:93;;;10627:6;10577:93;10552:118;;10769:7;1702;1729:6;-1:-1:-1;;;;;1729:6:0;;1664:79;10769:7;-1:-1:-1;;;;;10759:17:0;:6;-1:-1:-1;;;;;10759:17:0;;;:168;;;;-1:-1:-1;;;;;;10781:26:0;;10802:4;10781:26;;;;:56;;-1:-1:-1;;;;;;10811:26:0;;3919:42;10811:26;;10781:56;:77;;;;;10854:4;-1:-1:-1;;;;;10841:17:0;:9;-1:-1:-1;;;;;10841:17:0;;;10781:77;:114;;;;-1:-1:-1;10875:20:0;;-1:-1:-1;;;;;10862:33:0;;;10875:20;;10862:33;;10781:114;:145;;;;-1:-1:-1;;;;;;10900:26:0;;;;;;:15;:26;;;;;;;;10899:27;10781:145;10755:592;;;-1:-1:-1;;;;;7815:18:0;;10944;7815;;;:9;:18;;;;;;11020:19;;11004:12;:35;11000:336;;11101:22;;11069:27;11082:14;11069:10;:27;:::i;:::-;11068:55;;11060:102;;;;-1:-1:-1;;;11060:102:0;;12162:2:1;11060:102:0;;;12144:21:1;12201:2;12181:18;;;12174:30;12240:34;12220:18;;;12213:62;-1:-1:-1;;;12291:18:1;;;12284:32;12333:19;;11060:102:0;11960:398:1;11060:102:0;11000:336;;;11244:16;;11212:27;11225:14;11212:10;:27;:::i;:::-;11211:49;;11203:117;;;;-1:-1:-1;;;11203:117:0;;12565:2:1;11203:117:0;;;12547:21:1;12604:2;12584:18;;;12577:30;12643:34;12623:18;;;12616:62;12714:25;12694:18;;;12687:53;12757:19;;11203:117:0;12363:419:1;11203:117:0;10929:418;10755:592;11375:12;11363:8;;:24;;:69;;;;-1:-1:-1;11419:13:0;;11409:4;11391:24;;;;:9;:24;;;;;;:41;;11363:69;:84;;;;-1:-1:-1;11436:11:0;;-1:-1:-1;;;11436:11:0;;;;11363:84;:95;;;;-1:-1:-1;11452:6:0;;;;11451:7;11363:95;:116;;;;;11475:4;-1:-1:-1;;;;;11462:17:0;:9;-1:-1:-1;;;;;11462:17:0;;11363:116;11359:197;;;11496:10;:8;:10::i;:::-;11532:12;11521:8;:23;11359:197;-1:-1:-1;;;;;11593:17:0;;;;;;;:9;:17;;;;;;11613:22;;;11593:42;;11650:20;;;;;;:38;;;;;;11732:19;;11716:12;:35;11712:705;;11768:10;11791:4;-1:-1:-1;;;;;11781:14:0;:6;-1:-1:-1;;;;;11781:14:0;;:44;;;;-1:-1:-1;;;;;;11799:26:0;;11820:4;11799:26;;11781:44;:65;;;;-1:-1:-1;;;;;;11829:17:0;;3919:42;11829:17;;11781:65;:96;;;;-1:-1:-1;;;;;;11851:26:0;;;;;;:15;:26;;;;;;;;11850:27;11781:96;11768:109;;11896:5;11892:514;;;11922:9;:11;;;:9;:11;;;:::i;:::-;;;;;;5045:2;11957:9;;:33;11953:438;;;12035:14;12076:13;;12072:300;;-1:-1:-1;;;;;12118:20:0;;;;;;:9;:20;;;;;:33;;12142:9;;12118:20;:33;;12142:9;;12118:33;:::i;:::-;;;;-1:-1:-1;;3919:42:0;12178:15;;;;:9;:15;;;:28;;12197:9;;12178:15;:28;;12197:9;;12178:28;:::i;:::-;;;;-1:-1:-1;;12238:45:0;;160:25:1;;;12266:4:0;;-1:-1:-1;;;;;12238:45:0;;;-1:-1:-1;;;;;;;;;;;12238:45:0;148:2:1;133:18;12238:45:0;;;;;;;12315:33;;12338:9;;-1:-1:-1;;;;;12315:33:0;;;;;;;;12072:300;11992:399;11953:438;11753:664;11712:705;12451:9;-1:-1:-1;;;;;12434:43:0;12443:6;-1:-1:-1;;;;;12434:43:0;-1:-1:-1;;;;;;;;;;;12462:14:0;12434:43;;;;160:25:1;;148:2;133:18;;14:177;12434:43:0;;;;;;;;-1:-1:-1;12495:4:0;;9801:2706;-1:-1:-1;;;;;9801:2706:0:o;12519:432::-;-1:-1:-1;;;;;12653:17:0;;12612:4;12653:17;;;:9;:17;;;;;;12689:23;;;;12681:74;;;;-1:-1:-1;;;12681:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12791:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;12840:20;;;;;;;;:30;;12812:6;;12791:17;12840:30;;12812:6;;12840:30;:::i;:::-;;;;;;;;12903:9;-1:-1:-1;;;;;12886:35:0;12895:6;-1:-1:-1;;;;;12886:35:0;-1:-1:-1;;;;;;;;;;;12914:6:0;12886:35;;;;160:25:1;;148:2;133:18;;14:177;12886:35:0;;;;;;;;-1:-1:-1;12939:4:0;;12519:432;-1:-1:-1;;;;12519:432:0:o;12959:166::-;13056:12;;13046:6;:22;;:49;;;-1:-1:-1;;;;;;13072:23:0;;;;;;:15;:23;;;;;;;;13046:49;13038:79;;;;-1:-1:-1;;;13038:79:0;;13129:2:1;13038:79:0;;;13111:21:1;13168:2;13148:18;;;13141:30;-1:-1:-1;;;13187:18:1;;;13180:47;13244:18;;13038:79:0;12927:341:1;13038:79:0;12959:166;;:::o;13255:591::-;13341:7;;-1:-1:-1;;;;;13413:4:0;13400:17;;;;;;13397:255;;13472:3;13456:12;;13447:6;:21;;;;:::i;:::-;13446:29;;;;:::i;:::-;13434:41;;13397:255;;;13506:4;-1:-1:-1;;;;;13496:14:0;:6;-1:-1:-1;;;;;13496:14:0;;13493:159;;13564:3;13549:11;;13540:6;:20;;;;:::i;13493:159::-;13637:3;13613:20;4952:1;13613:6;:20;:::i;:::-;13612:28;;;;:::i;:::-;13600:40;;13493:159;13668:13;;13664:137;;13712:4;13694:24;;;;:9;:24;;;;;:37;;13722:9;;13694:24;:37;;13722:9;;13694:37;:::i;:::-;;;;-1:-1:-1;;13747:42:0;;160:25:1;;;13772:4:0;;-1:-1:-1;;;;;13747:42:0;;;-1:-1:-1;;;;;;;;;;;13747:42:0;148:2:1;133:18;13747:42:0;;;;;;;13664:137;13820:18;13829:9;13820:6;:18;:::i;14755:1223::-;5512:6;:13;;-1:-1:-1;;5512:13:0;5521:4;5512:13;;;14837:12:::1;::::0;14823:11:::1;::::0;5512:6;;14823:26:::1;::::0;::::1;:::i;:::-;14804:45;;14860:15;14891:11;;14878:10;;:24;;;;:::i;:::-;15015:13;::::0;15065:16:::1;::::0;;15079:1:::1;15065:16:::0;;;;;::::1;::::0;;14860:42;;-1:-1:-1;14913:21:0::1;::::0;;;15015:13;14913:21;;15065:16;15079:1;15065:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15065:16:0::1;15041:40;;15110:4;15092;15097:1;15092:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;15092:23:0::1;;;-1:-1:-1::0;;;;;15092:23:0::1;;;::::0;::::1;15136:4;15126;15131:1;15126:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15126:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;15153:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;15153:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;15225:12;;15153:6:::1;::::0;15268:4;;15295::::1;::::0;15315:15:::1;::::0;15153:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15376:21:0::1;::::0;-1:-1:-1;;;15354:19:0::1;15413:13:::0;;;15410:145:::1;;15459:1;15443:17;;15410:145;;;15535:8:::0;15510:21:::1;15524:7:::0;15510:11;:21:::1;:::i;:::-;15509:34;;;;:::i;:::-;15493:50;;15410:145;15588:27;15602:13:::0;15588:11;:27:::1;:::i;:::-;15657:15;::::0;15649:55:::1;::::0;15567:48;;-1:-1:-1;15629:15:0::1;::::0;-1:-1:-1;;;;;15657:15:0;;::::1;::::0;15686:13;;15629:15;15649:55;15629:15;15649:55;15686:13;15657:15;15649:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15628:76;;;15723:10;15715:65;;;::::0;-1:-1:-1;;;15715:65:0;;14913:2:1;15715:65:0::1;::::0;::::1;14895:21:1::0;14952:2;14932:18;;;14925:30;14991:34;14971:18;;;14964:62;-1:-1:-1;;;15042:18:1;;;15035:40;15092:19;;15715:65:0::1;14711:406:1::0;15715:65:0::1;15831:20;::::0;15823:65:::1;::::0;15802:16:::1;::::0;-1:-1:-1;;;;;15831:20:0::1;::::0;15865:18;;15802:16;15823:65;15802:16;15823:65;15865:18;15831:20;15823:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15801:87;;;15907:11;15899:71;;;::::0;-1:-1:-1;;;15899:71:0;;15324:2:1;15899:71:0::1;::::0;::::1;15306:21:1::0;15363:2;15343:18;;;15336:30;15402:34;15382:18;;;15375:62;-1:-1:-1;;;15453:18:1;;;15446:45;15508:19;;15899:71:0::1;15122:411:1::0;15899:71:0::1;-1:-1:-1::0;;5530:6:0;:14;;-1:-1:-1;;5530:14:0;;;-1:-1:-1;;;;;;;14755:1223:0:o;196:346:1:-;264:6;272;325:2;313:9;304:7;300:23;296:32;293:52;;;341:1;338;331:12;293:52;-1:-1:-1;;386:23:1;;;506:2;491:18;;;478:32;;-1:-1:-1;196:346:1:o;547:118::-;633:5;626:13;619:21;612:5;609:32;599:60;;655:1;652;645:12;599:60;547:118;:::o;670:361::-;735:6;743;796:2;784:9;775:7;771:23;767:32;764:52;;;812:1;809;802:12;764:52;851:9;838:23;870:28;892:5;870:28;:::i;:::-;917:5;995:2;980:18;;;;967:32;;-1:-1:-1;;;670:361:1:o;1036:173::-;1104:20;;-1:-1:-1;;;;;1153:31:1;;1143:42;;1133:70;;1199:1;1196;1189:12;1133:70;1036:173;;;:::o;1214:186::-;1273:6;1326:2;1314:9;1305:7;1301:23;1297:32;1294:52;;;1342:1;1339;1332:12;1294:52;1365:29;1384:9;1365:29;:::i;1597:418::-;1746:2;1735:9;1728:21;1709:4;1778:6;1772:13;1821:6;1816:2;1805:9;1801:18;1794:34;1880:6;1875:2;1867:6;1863:15;1858:2;1847:9;1843:18;1837:50;1936:1;1931:2;1922:6;1911:9;1907:22;1903:31;1896:42;2006:2;1999;1995:7;1990:2;1982:6;1978:15;1974:29;1963:9;1959:45;1955:54;1947:62;;;1597:418;;;;:::o;2020:300::-;2088:6;2096;2149:2;2137:9;2128:7;2124:23;2120:32;2117:52;;;2165:1;2162;2155:12;2117:52;2188:29;2207:9;2188:29;:::i;2325:260::-;2393:6;2401;2454:2;2442:9;2433:7;2429:23;2425:32;2422:52;;;2470:1;2467;2460:12;2422:52;2493:29;2512:9;2493:29;:::i;:::-;2483:39;;2541:38;2575:2;2564:9;2560:18;2541:38;:::i;:::-;2531:48;;2325:260;;;;;:::o;2590:374::-;2667:6;2675;2683;2736:2;2724:9;2715:7;2711:23;2707:32;2704:52;;;2752:1;2749;2742:12;2704:52;2775:29;2794:9;2775:29;:::i;:::-;2765:39;;2823:38;2857:2;2846:9;2842:18;2823:38;:::i;:::-;2590:374;;2813:48;;-1:-1:-1;;;2930:2:1;2915:18;;;;2902:32;;2590:374::o;3158:226::-;3217:6;3270:2;3258:9;3249:7;3245:23;3241:32;3238:52;;;3286:1;3283;3276:12;3238:52;-1:-1:-1;3331:23:1;;3158:226;-1:-1:-1;3158:226:1:o;3597:315::-;3662:6;3670;3723:2;3711:9;3702:7;3698:23;3694:32;3691:52;;;3739:1;3736;3729:12;3691:52;3762:29;3781:9;3762:29;:::i;:::-;3752:39;;3841:2;3830:9;3826:18;3813:32;3854:28;3876:5;3854:28;:::i;:::-;3901:5;3891:15;;;3597:315;;;;;:::o;4143:356::-;4345:2;4327:21;;;4364:18;;;4357:30;4423:34;4418:2;4403:18;;4396:62;4490:2;4475:18;;4143:356::o;4504:127::-;4565:10;4560:3;4556:20;4553:1;4546:31;4596:4;4593:1;4586:15;4620:4;4617:1;4610:15;4636:125;4701:9;;;4722:10;;;4719:36;;;4735:18;;:::i;5123:375::-;5211:1;5229:5;5243:249;5264:1;5254:8;5251:15;5243:249;;;5314:4;5309:3;5305:14;5299:4;5296:24;5293:50;;;5323:18;;:::i;:::-;5373:1;5363:8;5359:16;5356:49;;;5387:16;;;;5356:49;5470:1;5466:16;;;;;5426:15;;5243:249;;;5123:375;;;;;;:::o;5503:902::-;5552:5;5582:8;5572:80;;-1:-1:-1;5623:1:1;5637:5;;5572:80;5671:4;5661:76;;-1:-1:-1;5708:1:1;5722:5;;5661:76;5753:4;5771:1;5766:59;;;;5839:1;5834:174;;;;5746:262;;5766:59;5796:1;5787:10;;5810:5;;;5834:174;5871:3;5861:8;5858:17;5855:43;;;5878:18;;:::i;:::-;-1:-1:-1;;5934:1:1;5920:16;;5993:5;;5746:262;;6092:2;6082:8;6079:16;6073:3;6067:4;6064:13;6060:36;6054:2;6044:8;6041:16;6036:2;6030:4;6027:12;6023:35;6020:77;6017:203;;;-1:-1:-1;6129:19:1;;;6205:5;;6017:203;6252:42;-1:-1:-1;;6277:8:1;6271:4;6252:42;:::i;:::-;6330:6;6326:1;6322:6;6318:19;6309:7;6306:32;6303:58;;;6341:18;;:::i;:::-;6379:20;;5503:902;-1:-1:-1;;;5503:902:1:o;6410:140::-;6468:5;6497:47;6538:4;6528:8;6524:19;6518:4;6497:47;:::i;6555:168::-;6628:9;;;6659;;6676:15;;;6670:22;;6656:37;6646:71;;6697:18;;:::i;8963:128::-;9030:9;;;9051:11;;;9048:37;;;9065:18;;:::i;9096:217::-;9136:1;9162;9152:132;;9206:10;9201:3;9197:20;9194:1;9187:31;9241:4;9238:1;9231:15;9269:4;9266:1;9259:15;9152:132;-1:-1:-1;9298:9:1;;9096:217::o;9318:184::-;9388:6;9441:2;9429:9;9420:7;9416:23;9412:32;9409:52;;;9457:1;9454;9447:12;9409:52;-1:-1:-1;9480:16:1;;9318:184;-1:-1:-1;9318:184:1:o;9786:245::-;9853:6;9906:2;9894:9;9885:7;9881:23;9877:32;9874:52;;;9922:1;9919;9912:12;9874:52;9954:9;9948:16;9973:28;9995:5;9973:28;:::i;11553:402::-;11755:2;11737:21;;;11794:2;11774:18;;;11767:30;11833:34;11828:2;11813:18;;11806:62;-1:-1:-1;;;11899:2:1;11884:18;;11877:36;11945:3;11930:19;;11553:402::o;12787:135::-;12826:3;12847:17;;;12844:43;;12867:18;;:::i;:::-;-1:-1:-1;12914:1:1;12903:13;;12787:135::o;13405:127::-;13466:10;13461:3;13457:20;13454:1;13447:31;13497:4;13494:1;13487:15;13521:4;13518:1;13511:15;13537:959;13799:4;13847:3;13836:9;13832:19;13878:6;13867:9;13860:25;13921:6;13916:2;13905:9;13901:18;13894:34;13964:3;13959:2;13948:9;13944:18;13937:31;13988:6;14023;14017:13;14054:6;14046;14039:22;14092:3;14081:9;14077:19;14070:26;;14131:2;14123:6;14119:15;14105:29;;14152:1;14162:195;14176:6;14173:1;14170:13;14162:195;;;14241:13;;-1:-1:-1;;;;;14237:39:1;14225:52;;14306:2;14332:15;;;;14297:12;;;;14273:1;14191:9;14162:195;;;-1:-1:-1;;;;;;;14413:32:1;;;;14408:2;14393:18;;14386:60;-1:-1:-1;;14477:3:1;14462:19;14455:35;14374:3;13537:959;-1:-1:-1;;;13537:959:1:o

Swarm Source

ipfs://5f2cbea1ef1cd174c43c7ab298811d710a06d110e6f2df4fc7d10a886f394cec

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.