ETH Price: $2,865.85 (-9.47%)
Gas: 10 Gwei

Contract

0x4366BCCab3aFa203eC657FFe4112e6dC3835B249
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve201861352024-06-27 22:53:477 days ago1719528827IN
0x4366BCCa...C3835B249
0 ETH0.000192174.08452479
Approve200398752024-06-07 12:12:3527 days ago1717762355IN
0x4366BCCa...C3835B249
0 ETH0.0007097615.17042697
Approve199194112024-05-21 16:15:4744 days ago1716308147IN
0x4366BCCa...C3835B249
0 ETH0.0017380436.89340212
Approve199194112024-05-21 16:15:4744 days ago1716308147IN
0x4366BCCa...C3835B249
0 ETH0.0017380436.89340212
Approve199194112024-05-21 16:15:4744 days ago1716308147IN
0x4366BCCa...C3835B249
0 ETH0.0017380436.89340212
Approve199194112024-05-21 16:15:4744 days ago1716308147IN
0x4366BCCa...C3835B249
0 ETH0.0017380436.89340212
Approve199194112024-05-21 16:15:4744 days ago1716308147IN
0x4366BCCa...C3835B249
0 ETH0.0017380436.89340212
Approve199194112024-05-21 16:15:4744 days ago1716308147IN
0x4366BCCa...C3835B249
0 ETH0.0017380436.89340212
Approve198967412024-05-18 12:10:5947 days ago1716034259IN
0x4366BCCa...C3835B249
0 ETH0.000144753.07658095
Approve198507002024-05-12 1:34:4754 days ago1715477687IN
0x4366BCCa...C3835B249
0 ETH0.000153883.26647026
Approve198506502024-05-12 1:24:4754 days ago1715477087IN
0x4366BCCa...C3835B249
0 ETH0.000169643.60106154
Approve198499242024-05-11 22:58:3554 days ago1715468315IN
0x4366BCCa...C3835B249
0 ETH0.000148793.15851578
Approve198499222024-05-11 22:58:1154 days ago1715468291IN
0x4366BCCa...C3835B249
0 ETH0.000255195.41707882
Approve197837102024-05-02 16:44:2363 days ago1714668263IN
0x4366BCCa...C3835B249
0 ETH0.0006442513.77028516
Approve197811952024-05-02 8:18:2364 days ago1714637903IN
0x4366BCCa...C3835B249
0 ETH0.000461159.80144132
Approve195047712024-03-24 13:42:59102 days ago1711287779IN
0x4366BCCa...C3835B249
0 ETH0.0012007225.52018514
Approve195047632024-03-24 13:41:11102 days ago1711287671IN
0x4366BCCa...C3835B249
0 ETH0.00094320.04255396
Approve194492862024-03-16 18:39:11110 days ago1710614351IN
0x4366BCCa...C3835B249
0 ETH0.0019893742.28205995
Approve194302542024-03-14 2:21:35113 days ago1710382895IN
0x4366BCCa...C3835B249
0 ETH0.0021592145.89196255
Approve193798492024-03-07 0:55:11120 days ago1709772911IN
0x4366BCCa...C3835B249
0 ETH0.0029766663.18543742
Approve193798382024-03-07 0:52:59120 days ago1709772779IN
0x4366BCCa...C3835B249
0 ETH0.0032676369.36191624
Approve193797402024-03-07 0:33:23120 days ago1709771603IN
0x4366BCCa...C3835B249
0 ETH0.0034345572.90508507
Approve193793482024-03-06 23:14:47120 days ago1709766887IN
0x4366BCCa...C3835B249
0 ETH0.0031025165.94086819
Approve193761492024-03-06 12:31:59120 days ago1709728319IN
0x4366BCCa...C3835B249
0 ETH0.0041525288.25761757
Approve193761062024-03-06 12:23:23120 days ago1709727803IN
0x4366BCCa...C3835B249
0 ETH0.0041391887.86207877
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
201861382024-06-27 22:54:237 days ago1719528863
0x4366BCCa...C3835B249
0.00121886 ETH
201861382024-06-27 22:54:237 days ago1719528863
0x4366BCCa...C3835B249
0.00121886 ETH
200398782024-06-07 12:13:1127 days ago1717762391
0x4366BCCa...C3835B249
0.00212522 ETH
200398782024-06-07 12:13:1127 days ago1717762391
0x4366BCCa...C3835B249
0.00212522 ETH
199267192024-05-22 16:49:4743 days ago1716396587
0x4366BCCa...C3835B249
0.00212747 ETH
199267192024-05-22 16:49:4743 days ago1716396587
0x4366BCCa...C3835B249
0.00212747 ETH
199194122024-05-21 16:15:5944 days ago1716308159
0x4366BCCa...C3835B249
0.00235662 ETH
199194122024-05-21 16:15:5944 days ago1716308159
0x4366BCCa...C3835B249
0.00235662 ETH
199194122024-05-21 16:15:5944 days ago1716308159
0x4366BCCa...C3835B249
0.00245634 ETH
199194122024-05-21 16:15:5944 days ago1716308159
0x4366BCCa...C3835B249
0.00245634 ETH
199194122024-05-21 16:15:5944 days ago1716308159
0x4366BCCa...C3835B249
0.00239832 ETH
199194122024-05-21 16:15:5944 days ago1716308159
0x4366BCCa...C3835B249
0.00239832 ETH
199194122024-05-21 16:15:5944 days ago1716308159
0x4366BCCa...C3835B249
0.00263444 ETH
199194122024-05-21 16:15:5944 days ago1716308159
0x4366BCCa...C3835B249
0.00263444 ETH
199194122024-05-21 16:15:5944 days ago1716308159
0x4366BCCa...C3835B249
0.00263647 ETH
199194122024-05-21 16:15:5944 days ago1716308159
0x4366BCCa...C3835B249
0.00263647 ETH
199194122024-05-21 16:15:5944 days ago1716308159
0x4366BCCa...C3835B249
0.00177536 ETH
199194122024-05-21 16:15:5944 days ago1716308159
0x4366BCCa...C3835B249
0.00177536 ETH
199194112024-05-21 16:15:4744 days ago1716308147
0x4366BCCa...C3835B249
0.00324508 ETH
199194112024-05-21 16:15:4744 days ago1716308147
0x4366BCCa...C3835B249
0.00324508 ETH
199193982024-05-21 16:13:1144 days ago1716307991
0x4366BCCa...C3835B249
0.0027557 ETH
199193982024-05-21 16:13:1144 days ago1716307991
0x4366BCCa...C3835B249
0.0027557 ETH
199193982024-05-21 16:13:1144 days ago1716307991
0x4366BCCa...C3835B249
0.00271203 ETH
199193982024-05-21 16:13:1144 days ago1716307991
0x4366BCCa...C3835B249
0.00271203 ETH
199193982024-05-21 16:13:1144 days ago1716307991
0x4366BCCa...C3835B249
0.00357339 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OxChat

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-27
*/

/**
 *Submitted for verification at Etherscan.io on 2024-02-27
*/

/**
                                                                            
Telegram Bot: https://t.me/xchat_ai
Telegram: https://t.me/xchat_ai
Twitter: https://twitter.com/0xChat_AI
Website: https://0xchat.ai/

*/

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


interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;


    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }


    function name() public view virtual override returns (string memory) {
        return _name;
    }

 
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

  
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

 
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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


    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }


    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }


    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

  
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

 
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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


    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

   
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}



abstract contract Ownable is Context {
    address private _owner;

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


    constructor() {
        _transferOwnership(_msgSender());
    }

  
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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


    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

 
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

   
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

contract OxChat is IERC20, Ownable {
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);


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

    IUniswapV2Router02 public constant UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable UNISWAP_V2_PAIR;

    struct Fee {
        uint8 reflection;
        uint8 dev;
        uint128 total;
    }

    string _name = "0xChat";
    string _symbol = "OxC"; 

    uint256 _totalSupply = 10000000 * 10 ** 18;
    address private marketingWallet;

    uint256 public _maxTxAmount = (_totalSupply * 2) / 100;
    uint256 public _maxWalletSize =  (_totalSupply * 2) / 100; 
    mapping(address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

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

    bool public limitsEnabled = true;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;

    Fee public initialBuyFee = Fee({ reflection: 0, dev: 33, total: 33});
    Fee public initialSellFee = Fee({ reflection: 0, dev: 33, total: 33});
    Fee public finalBuyFee = Fee({ reflection: 1, dev: 4, total: 5});
    Fee public finalSellFee =  Fee({ reflection: 1, dev: 4, total: 5});
    Fee public buyFee;
    Fee public sellFee;
    address private devWallet;

    bool public claimingFees = true;
    uint256 public swapThreshold = (_totalSupply * 5) / 10000; // 0.05%
    uint256 public customMultiplier = 20;
    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }


    constructor(address _devWallet, address _marketingWallet) {
        buyFee = initialBuyFee;
        sellFee = initialSellFee;
        address _uniswapPair =
            IUniswapV2Factory(UNISWAP_V2_ROUTER.factory()).createPair(address(this), UNISWAP_V2_ROUTER.WETH());
        UNISWAP_V2_PAIR = _uniswapPair;
      
        _allowances[address(this)][address(UNISWAP_V2_ROUTER)] = type(uint256).max;
        _allowances[address(this)][tx.origin] = type(uint256).max;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(UNISWAP_V2_ROUTER)] = true;
        isTxLimitExempt[_uniswapPair] = true;
        isTxLimitExempt[tx.origin] = true;
        isFeeExempt[tx.origin] = true;
        isFeeExempt[address(this)] = true;
        marketingWallet = _marketingWallet;

        isFeeExempt[marketingWallet] = true;
        isTxLimitExempt[marketingWallet] = true;

        devWallet = _devWallet;
    uint256 marketingWalletSupply = _totalSupply / 3; // 3% of total supply
    _rOwned[marketingWallet] = marketingWalletSupply;

    // Allocate the remaining supply to the tx.origin
    _rOwned[tx.origin] = _totalSupply - marketingWalletSupply;

    // Emit transfer events
    emit Transfer(address(0), marketingWallet, marketingWalletSupply);
    emit Transfer(address(0), tx.origin, _rOwned[tx.origin]);
}

    receive() external payable {}

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

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }
    function setFees(uint8 buyReflection, uint8 buyDev, uint8 sellReflection, uint8 sellDev) public onlyOwner {
        buyFee = Fee({reflection: buyReflection, dev: buyDev, total: uint128(buyReflection) + uint128(buyDev)});
        sellFee = Fee({reflection: sellReflection, dev: sellDev, total: uint128(sellReflection) + uint128(sellDev)});
    }

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

        return _transferFrom(sender, recipient, amount);
    }


    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function decimals() external pure returns (uint8) {
        return 18;
    }

    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

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

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

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens * _totalProportion / _totalSupply;
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion * _totalSupply / _totalProportion;
    }

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


    function clearStuckBalance() external onlyOwner {
        (bool success,) = payable(msg.sender).call{value: address(this).balance}("");
        require(success);
    }

    function clearStuckToken() external onlyOwner {
        _transferFrom(address(this), msg.sender, balanceOf(address(this)));
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        claimingFees = _enabled;
        swapThreshold =  (_totalSupply * _amount) / 10000;
    }

  function setCustomMultiplier(uint256 _customMultiplier) public onlyOwner {
        customMultiplier = _customMultiplier;
    }

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

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

    function setFeeReceivers(address m_) external onlyOwner {
        devWallet = m_;
    }

    function setMaxTxBasisPoint(uint256 p_) external onlyOwner {
        _maxTxAmount = _totalSupply * p_ / 10000;
    }

    function removeLimits() external onlyOwner {
        limitsEnabled = false;
        buyFee = finalBuyFee;
        sellFee = finalSellFee;
    }

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


    if (limitsEnabled && sender == UNISWAP_V2_PAIR && !isTxLimitExempt[recipient]) {
        require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            require(balanceOf(recipient) + amount <= _maxWalletSize, "Exceeds maxWalletSize.");
        }
    if (_shouldSwapBack()) {
        _swapBack();
    }

    uint256 proportionAmount = tokensToProportion(amount);
    require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
    _rOwned[sender] = _rOwned[sender] - proportionAmount;


    uint256 proportionReceived = _shouldTakeFee(sender, recipient)
        ? _takeFeeInProportions(sender == UNISWAP_V2_PAIR ? true : false, sender, proportionAmount)
        : proportionAmount;
    _rOwned[recipient] = _rOwned[recipient] + proportionReceived;

    emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
    return true;
    }
 
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    
    function _takeFeeInProportions(bool buying, address sender, uint256 proportionAmount) internal returns (uint256) {
        Fee memory __buyFee = buyFee;
        Fee memory __sellFee = sellFee;

        uint256 proportionFeeAmount =
            buying == true ? proportionAmount * __buyFee.total / 100 : proportionAmount * __sellFee.total / 100;


        uint256 proportionReflected = buying == true
            ? proportionFeeAmount * __buyFee.reflection / __buyFee.total
            : proportionFeeAmount * __sellFee.reflection / __sellFee.total;

        _totalProportion = _totalProportion - proportionReflected;

       
        uint256 _proportionToContract = proportionFeeAmount - proportionReflected;
        if (_proportionToContract > 0) {
            _rOwned[address(this)] = _rOwned[address(this)] + _proportionToContract;

            emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        }
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount - proportionFeeAmount;
    }

    function _shouldSwapBack() internal view returns (bool) {
        return msg.sender != UNISWAP_V2_PAIR && !inSwap && claimingFees && balanceOf(address(this)) >= swapThreshold;
    }

    function _swapBack() internal swapping {
        Fee memory __sellFee = sellFee;
        uint256 contractBalance = balanceOf(address(this));
        uint256 __swapThreshold = swapThreshold;
        uint256 amountToSwap = __swapThreshold;

        if (contractBalance == 0 || amountToSwap == 0) {
            return;
        }

        if (contractBalance > swapThreshold * customMultiplier) {
            contractBalance = swapThreshold * customMultiplier;
        }
        approve(address(UNISWAP_V2_ROUTER), contractBalance);


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

        UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractBalance, 0, path, address(this), block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 totalSwapFee = __sellFee.total - __sellFee.reflection;
        uint256 devcash = amountETH * __sellFee.dev / totalSwapFee;


     (bool tmpSuccess,) = payable(devWallet).call{value: devcash}("");
    require(tmpSuccess, "Transfer failed.");

    }

    function _shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"address","name":"_marketingWallet","type":"address"}],"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":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"UNISWAP_V2_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V2_ROUTER","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"customMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"finalBuyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalSellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialBuyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialSellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_customMultiplier","type":"uint256"}],"name":"setCustomMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"m_","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyReflection","type":"uint8"},{"internalType":"uint8","name":"buyDev","type":"uint8"},{"internalType":"uint8","name":"sellReflection","type":"uint8"},{"internalType":"uint8","name":"sellDev","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"p_","type":"uint256"}],"name":"setMaxTxBasisPoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600681526020017f3078436861740000000000000000000000000000000000000000000000000000815250600190816200004a919062001207565b506040518060400160405280600381526020017f4f784300000000000000000000000000000000000000000000000000000000008152506002908162000091919062001207565b506a084595161401484a00000060035560646002600354620000b491906200131d565b620000c0919062001397565b60055560646002600354620000d691906200131d565b620000e2919062001397565b6006556003546008556001600a60006101000a81548160ff0219169083151502179055506040518060600160405280600060ff168152602001602160ff16815260200160216fffffffffffffffffffffffffffffffff16815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506040518060600160405280600060ff168152602001602160ff16815260200160216fffffffffffffffffffffffffffffffff16815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506040518060600160405280600160ff168152602001600460ff16815260200160056fffffffffffffffffffffffffffffffff16815250600f60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506040518060600160405280600160ff168152602001600460ff16815260200160056fffffffffffffffffffffffffffffffff16815250601060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506001601360146101000a81548160ff02191690831515021790555061271060056003546200042191906200131d565b6200042d919062001397565b60145560146015553480156200044257600080fd5b5060405162004c7d38038062004c7d833981810160405281019062000468919062001439565b620004886200047c62000ec160201b60201c565b62000ec960201b60201c565b600d60116000820160009054906101000a900460ff168160000160006101000a81548160ff021916908360ff1602179055506000820160019054906101000a900460ff168160000160016101000a81548160ff021916908360ff1602179055506000820160029054906101000a90046fffffffffffffffffffffffffffffffff168160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050600e60126000820160009054906101000a900460ff168160000160006101000a81548160ff021916908360ff1602179055506000820160019054906101000a900460ff168160000160016101000a81548160ff021916908360ff1602179055506000820160029054906101000a90046fffffffffffffffffffffffffffffffff168160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000666573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200068c919062001480565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000708573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200072e919062001480565b6040518363ffffffff1660e01b81526004016200074d929190620014c3565b6020604051808303816000875af11580156200076d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000793919062001480565b90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006003805462000ccb919062001397565b90508060076000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060035462000d439190620014f0565b600760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000e0891906200153c565b60405180910390a33273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000eaf91906200153c565b60405180910390a35050505062001559565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200100f57607f821691505b60208210810362001025576200102462000fc7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200108f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001050565b6200109b868362001050565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620010e8620010e2620010dc84620010b3565b620010bd565b620010b3565b9050919050565b6000819050919050565b6200110483620010c7565b6200111c6200111382620010ef565b8484546200105d565b825550505050565b600090565b6200113362001124565b62001140818484620010f9565b505050565b5b8181101562001168576200115c60008262001129565b60018101905062001146565b5050565b601f821115620011b75762001181816200102b565b6200118c8462001040565b810160208510156200119c578190505b620011b4620011ab8562001040565b83018262001145565b50505b505050565b600082821c905092915050565b6000620011dc60001984600802620011bc565b1980831691505092915050565b6000620011f78383620011c9565b9150826002028217905092915050565b620012128262000f8d565b67ffffffffffffffff8111156200122e576200122d62000f98565b5b6200123a825462000ff6565b620012478282856200116c565b600060209050601f8311600181146200127f57600084156200126a578287015190505b620012768582620011e9565b865550620012e6565b601f1984166200128f866200102b565b60005b82811015620012b95784890151825560018201915060208501945060208101905062001292565b86831015620012d95784890151620012d5601f891682620011c9565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200132a82620010b3565b91506200133783620010b3565b92508282026200134781620010b3565b91508282048414831517620013615762001360620012ee565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620013a482620010b3565b9150620013b183620010b3565b925082620013c457620013c362001368565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200140182620013d4565b9050919050565b6200141381620013f4565b81146200141f57600080fd5b50565b600081519050620014338162001408565b92915050565b60008060408385031215620014535762001452620013cf565b5b6000620014638582860162001422565b9250506020620014768582860162001422565b9150509250929050565b600060208284031215620014995762001498620013cf565b5b6000620014a98482850162001422565b91505092915050565b620014bd81620013f4565b82525050565b6000604082019050620014da6000830185620014b2565b620014e96020830184620014b2565b9392505050565b6000620014fd82620010b3565b91506200150a83620010b3565b9250828203905081811115620015255762001524620012ee565b5b92915050565b6200153681620010b3565b82525050565b60006020820190506200155360008301846200152b565b92915050565b6080516136f36200158a60003960008181611822015281816118e901528181611b7e015261204f01526136f36000f3fe6080604052600436106102555760003560e01c8063751039fc11610139578063b0f7ec38116100b6578063e186ec741161007a578063e186ec74146108bd578063e6990a90146108e6578063e6d40d6014610913578063f2fde38b14610940578063f40acc3d14610969578063f84ba65d146109945761025c565b8063b0f7ec38146107ec578063d85a282814610817578063dd62ed3e1461082e578063df20fd491461086b578063e01bb688146108945761025c565b80638f9a55c0116100fd5780638f9a55c01461070557806395d89b41146107305780639faa7cfd1461075b578063a82ed9ec14610784578063a9059cbb146107af5761025c565b8063751039fc1461064457806378de607b1461065b5780637d1db4a514610686578063875fa085146106b15780638da5cb5b146106da5761025c565b80632d838119116101d257806345ce53651161019657806345ce536514610520578063470624021461055d578063571ac8b01461058a578063658d4b7f146105c757806370a08231146105f0578063715018a61461062d5761025c565b80632d83811914610449578063313ce5671461048657806331e02e0b146104b15780633582ad23146104de578063364333f4146105095761025c565b806318160ddd1161021957806318160ddd1461035c57806323b872dd146103875780632b112e49146103c45780632b14ca56146103ef5780632b36a6d21461041c5761025c565b80630445b6671461026157806306fdde031461028c578063095ea7b3146102b75780630cfc15f9146102f457806317800287146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109bd565b60405161028391906129bf565b60405180910390f35b34801561029857600080fd5b506102a16109c3565b6040516102ae9190612a6a565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612b1b565b610a55565b6040516102eb9190612b76565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612b91565b610b47565b60405161032891906129bf565b60405180910390f35b34801561033d57600080fd5b50610346610b5f565b60405161035391906129bf565b60405180910390f35b34801561036857600080fd5b50610371610b65565b60405161037e91906129bf565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190612bbe565b610b6f565b6040516103bb9190612b76565b60405180910390f35b3480156103d057600080fd5b506103d9610df0565b6040516103e691906129bf565b60405180910390f35b3480156103fb57600080fd5b50610404610e23565b60405161041393929190612c58565b60405180910390f35b34801561042857600080fd5b50610431610e71565b60405161044093929190612c58565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190612c8f565b610ebf565b60405161047d91906129bf565b60405180910390f35b34801561049257600080fd5b5061049b610ee3565b6040516104a89190612cbc565b60405180910390f35b3480156104bd57600080fd5b506104c6610eec565b6040516104d593929190612c58565b60405180910390f35b3480156104ea57600080fd5b506104f3610f3a565b6040516105009190612b76565b60405180910390f35b34801561051557600080fd5b5061051e610f4d565b005b34801561052c57600080fd5b5061054760048036038101906105429190612c8f565b610fce565b60405161055491906129bf565b60405180910390f35b34801561056957600080fd5b50610572610ff2565b60405161058193929190612c58565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac9190612b91565b611040565b6040516105be9190612b76565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190612d03565b611073565b005b3480156105fc57600080fd5b5061061760048036038101906106129190612b91565b6110d6565b60405161062491906129bf565b60405180910390f35b34801561063957600080fd5b50610642611127565b005b34801561065057600080fd5b5061065961113b565b005b34801561066757600080fd5b506106706112dc565b60405161067d91906129bf565b60405180910390f35b34801561069257600080fd5b5061069b6112e2565b6040516106a891906129bf565b60405180910390f35b3480156106bd57600080fd5b506106d860048036038101906106d39190612c8f565b6112e8565b005b3480156106e657600080fd5b506106ef6112fa565b6040516106fc9190612d52565b60405180910390f35b34801561071157600080fd5b5061071a611323565b60405161072791906129bf565b60405180910390f35b34801561073c57600080fd5b50610745611329565b6040516107529190612a6a565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d9190612d99565b6113bb565b005b34801561079057600080fd5b5061079961155d565b6040516107a69190612e5f565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d19190612b1b565b611575565b6040516107e39190612b76565b60405180910390f35b3480156107f857600080fd5b5061080161158a565b60405161080e9190612b76565b60405180910390f35b34801561082357600080fd5b5061082c61159d565b005b34801561083a57600080fd5b5061085560048036038101906108509190612e7a565b6115bb565b60405161086291906129bf565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d9190612eba565b611642565b005b3480156108a057600080fd5b506108bb60048036038101906108b69190612b91565b611689565b005b3480156108c957600080fd5b506108e460048036038101906108df9190612c8f565b6116d5565b005b3480156108f257600080fd5b506108fb611701565b60405161090a93929190612c58565b60405180910390f35b34801561091f57600080fd5b5061092861174f565b60405161093793929190612c58565b60405180910390f35b34801561094c57600080fd5b5061096760048036038101906109629190612b91565b61179d565b005b34801561097557600080fd5b5061097e611820565b60405161098b9190612d52565b60405180910390f35b3480156109a057600080fd5b506109bb60048036038101906109b69190612d03565b611844565b005b60145481565b6060600180546109d290612f29565b80601f01602080910402602001604051908101604052809291908181526020018280546109fe90612f29565b8015610a4b5780601f10610a2057610100808354040283529160200191610a4b565b820191906000526020600020905b815481529060010190602001808311610a2e57829003601f168201915b5050505050905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b3591906129bf565b60405180910390a36001905092915050565b60076020528060005260406000206000915090505481565b60085481565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ddc5781600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca90612fa6565b60405180910390fd5b81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5b9190612ff5565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610de78484846118a7565b90509392505050565b6000610dfc60006110d6565b610e0761dead6110d6565b600354610e149190612ff5565b610e1e9190612ff5565b905090565b60128060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600e8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600060085460035483610ed29190613029565b610edc919061309a565b9050919050565b60006012905090565b600d8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600a60009054906101000a900460ff1681565b610f55611cec565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610f7b906130fc565b60006040518083038185875af1925050503d8060008114610fb8576040519150601f19603f3d011682016040523d82523d6000602084013e610fbd565b606091505b5050905080610fcb57600080fd5b50565b600060035460085483610fe19190613029565b610feb919061309a565b9050919050565b60118060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600061106c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a55565b9050919050565b61107b611cec565b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611120600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ebf565b9050919050565b61112f611cec565b6111396000611d6a565b565b611143611cec565b6000600a60006101000a81548160ff021916908315150217905550600f60116000820160009054906101000a900460ff168160000160006101000a81548160ff021916908360ff1602179055506000820160019054906101000a900460ff168160000160016101000a81548160ff021916908360ff1602179055506000820160029054906101000a90046fffffffffffffffffffffffffffffffff168160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050601060126000820160009054906101000a900460ff168160000160006101000a81548160ff021916908360ff1602179055506000820160019054906101000a900460ff168160000160016101000a81548160ff021916908360ff1602179055506000820160029054906101000a90046fffffffffffffffffffffffffffffffff168160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050565b60155481565b60055481565b6112f0611cec565b8060158190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b60606002805461133890612f29565b80601f016020809104026020016040519081016040528092919081815260200182805461136490612f29565b80156113b15780601f10611386576101008083540402835291602001916113b1565b820191906000526020600020905b81548152906001019060200180831161139457829003601f168201915b5050505050905090565b6113c3611cec565b60405180606001604052808560ff1681526020018460ff1681526020018460ff168660ff166113f29190613111565b6fffffffffffffffffffffffffffffffff16815250601160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180606001604052808360ff1681526020018260ff1681526020018260ff168460ff166114bc9190613111565b6fffffffffffffffffffffffffffffffff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505050505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006115823384846118a7565b905092915050565b601360149054906101000a900460ff1681565b6115a5611cec565b6115b830336115b3306110d6565b6118a7565b50565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61164a611cec565b81601360146101000a81548160ff021916908315150217905550612710816003546116759190613029565b61167f919061309a565b6014819055505050565b611691611cec565b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116dd611cec565b612710816003546116ee9190613029565b6116f8919061309a565b60058190555050565b60108060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600f8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b6117a5611cec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b906131c7565b60405180910390fd5b61181d81611d6a565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b61184c611cec565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601660009054906101000a900460ff16156118d0576118c9848484611e2e565b9050611ce5565b600a60009054906101000a900460ff16801561193757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561198d5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a30576005548211156119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce90613259565b60405180910390fd5b600654826119e4856110d6565b6119ee9190613279565b1115611a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a26906132f9565b60405180910390fd5b5b611a3861204b565b15611a4657611a456120e9565b5b6000611a5183610fce565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc90613365565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b209190612ff5565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611b6f8686612557565b611b795781611be1565b611be07f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611bd6576000611bd9565b60015b8784612605565b5b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2e9190613279565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611cc984610ebf565b604051611cd691906129bf565b60405180910390a36001925050505b9392505050565b611cf461299e565b73ffffffffffffffffffffffffffffffffffffffff16611d126112fa565b73ffffffffffffffffffffffffffffffffffffffff1614611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f906133d1565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611e3a83610fce565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb590613365565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f099190612ff5565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f979190613279565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161203791906129bf565b60405180910390a360019150509392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156120b65750601660009054906101000a900460ff16155b80156120ce5750601360149054906101000a900460ff165b80156120e457506014546120e1306110d6565b10155b905090565b6001601660006101000a81548160ff021916908315150217905550600060126040518060600160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060006121a4306110d6565b905060006014549050600081905060008314806121c15750600081145b156121cf575050505061253a565b6015546014546121df9190613029565b8311156121f9576015546014546121f69190613029565b92505b612217737a250d5630b4cf539739df2c5dacb4c659f2488d84610a55565b506000600267ffffffffffffffff811115612235576122346133f1565b5b6040519080825280602002602001820160405280156122635781602001602082028036833780820191505090505b509050308160008151811061227b5761227a613420565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612314573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123389190613464565b8160018151811061234c5761234b613420565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b81526004016123dc95949392919061358a565b600060405180830381600087803b1580156123f657600080fd5b505af115801561240a573d6000803e3d6000fd5b5050505060004790506000866000015160ff16876040015161242c91906135e4565b6fffffffffffffffffffffffffffffffff169050600081886020015160ff16846124569190613029565b612460919061309a565b90506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516124aa906130fc565b60006040518083038185875af1925050503d80600081146124e7576040519150601f19603f3d011682016040523d82523d6000602084013e6124ec565b606091505b5050905080612530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252790613674565b60405180910390fd5b5050505050505050505b6000601660006101000a81548160ff021916908315150217905550565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125fd5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008060116040518060600160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509050600060126040518060600160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000600115158715151461277157606482604001516fffffffffffffffffffffffffffffffff16866127629190613029565b61276c919061309a565b6127a0565b606483604001516fffffffffffffffffffffffffffffffff16866127959190613029565b61279f919061309a565b5b9050600060011515881515146127e95782604001516fffffffffffffffffffffffffffffffff16836000015160ff16836127da9190613029565b6127e4919061309a565b61281e565b83604001516fffffffffffffffffffffffffffffffff16846000015160ff16836128139190613029565b61281d919061309a565b5b90508060085461282e9190612ff5565b600881905550600081836128429190612ff5565b905060008111156129495780600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128989190613279565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61293384610ebf565b60405161294091906129bf565b60405180910390a35b7fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac8260085460405161297c929190613694565b60405180910390a182876129909190612ff5565b955050505050509392505050565b600033905090565b6000819050919050565b6129b9816129a6565b82525050565b60006020820190506129d460008301846129b0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a145780820151818401526020810190506129f9565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a3c826129da565b612a4681856129e5565b9350612a568185602086016129f6565b612a5f81612a20565b840191505092915050565b60006020820190508181036000830152612a848184612a31565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612abc82612a91565b9050919050565b612acc81612ab1565b8114612ad757600080fd5b50565b600081359050612ae981612ac3565b92915050565b612af8816129a6565b8114612b0357600080fd5b50565b600081359050612b1581612aef565b92915050565b60008060408385031215612b3257612b31612a8c565b5b6000612b4085828601612ada565b9250506020612b5185828601612b06565b9150509250929050565b60008115159050919050565b612b7081612b5b565b82525050565b6000602082019050612b8b6000830184612b67565b92915050565b600060208284031215612ba757612ba6612a8c565b5b6000612bb584828501612ada565b91505092915050565b600080600060608486031215612bd757612bd6612a8c565b5b6000612be586828701612ada565b9350506020612bf686828701612ada565b9250506040612c0786828701612b06565b9150509250925092565b600060ff82169050919050565b612c2781612c11565b82525050565b60006fffffffffffffffffffffffffffffffff82169050919050565b612c5281612c2d565b82525050565b6000606082019050612c6d6000830186612c1e565b612c7a6020830185612c1e565b612c876040830184612c49565b949350505050565b600060208284031215612ca557612ca4612a8c565b5b6000612cb384828501612b06565b91505092915050565b6000602082019050612cd16000830184612c1e565b92915050565b612ce081612b5b565b8114612ceb57600080fd5b50565b600081359050612cfd81612cd7565b92915050565b60008060408385031215612d1a57612d19612a8c565b5b6000612d2885828601612ada565b9250506020612d3985828601612cee565b9150509250929050565b612d4c81612ab1565b82525050565b6000602082019050612d676000830184612d43565b92915050565b612d7681612c11565b8114612d8157600080fd5b50565b600081359050612d9381612d6d565b92915050565b60008060008060808587031215612db357612db2612a8c565b5b6000612dc187828801612d84565b9450506020612dd287828801612d84565b9350506040612de387828801612d84565b9250506060612df487828801612d84565b91505092959194509250565b6000819050919050565b6000612e25612e20612e1b84612a91565b612e00565b612a91565b9050919050565b6000612e3782612e0a565b9050919050565b6000612e4982612e2c565b9050919050565b612e5981612e3e565b82525050565b6000602082019050612e746000830184612e50565b92915050565b60008060408385031215612e9157612e90612a8c565b5b6000612e9f85828601612ada565b9250506020612eb085828601612ada565b9150509250929050565b60008060408385031215612ed157612ed0612a8c565b5b6000612edf85828601612cee565b9250506020612ef085828601612b06565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f4157607f821691505b602082108103612f5457612f53612efa565b5b50919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612f90601d836129e5565b9150612f9b82612f5a565b602082019050919050565b60006020820190508181036000830152612fbf81612f83565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613000826129a6565b915061300b836129a6565b925082820390508181111561302357613022612fc6565b5b92915050565b6000613034826129a6565b915061303f836129a6565b925082820261304d816129a6565b9150828204841483151761306457613063612fc6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130a5826129a6565b91506130b0836129a6565b9250826130c0576130bf61306b565b5b828204905092915050565b600081905092915050565b50565b60006130e66000836130cb565b91506130f1826130d6565b600082019050919050565b6000613107826130d9565b9150819050919050565b600061311c82612c2d565b915061312783612c2d565b925082820190506fffffffffffffffffffffffffffffffff81111561314f5761314e612fc6565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131b16026836129e5565b91506131bc82613155565b604082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006132436028836129e5565b915061324e826131e7565b604082019050919050565b6000602082019050818103600083015261327281613236565b9050919050565b6000613284826129a6565b915061328f836129a6565b92508282019050808211156132a7576132a6612fc6565b5b92915050565b7f45786365656473206d617857616c6c657453697a652e00000000000000000000600082015250565b60006132e36016836129e5565b91506132ee826132ad565b602082019050919050565b60006020820190508181036000830152613312816132d6565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b600061334f6014836129e5565b915061335a82613319565b602082019050919050565b6000602082019050818103600083015261337e81613342565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006133bb6020836129e5565b91506133c682613385565b602082019050919050565b600060208201905081810360008301526133ea816133ae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061345e81612ac3565b92915050565b60006020828403121561347a57613479612a8c565b5b60006134888482850161344f565b91505092915050565b6000819050919050565b60006134b66134b16134ac84613491565b612e00565b6129a6565b9050919050565b6134c68161349b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61350181612ab1565b82525050565b600061351383836134f8565b60208301905092915050565b6000602082019050919050565b6000613537826134cc565b61354181856134d7565b935061354c836134e8565b8060005b8381101561357d5781516135648882613507565b975061356f8361351f565b925050600181019050613550565b5085935050505092915050565b600060a08201905061359f60008301886129b0565b6135ac60208301876134bd565b81810360408301526135be818661352c565b90506135cd6060830185612d43565b6135da60808301846129b0565b9695505050505050565b60006135ef82612c2d565b91506135fa83612c2d565b925082820390506fffffffffffffffffffffffffffffffff81111561362257613621612fc6565b5b92915050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b600061365e6010836129e5565b915061366982613628565b602082019050919050565b6000602082019050818103600083015261368d81613651565b9050919050565b60006040820190506136a960008301856129b0565b6136b660208301846129b0565b939250505056fea2646970667358221220d21b32cbe47bf666b53d86c0bcf7e1180a19acd4286ec6b16d6a1674be6287a064736f6c63430008130033000000000000000000000000b2696b335e7824e2ade5b098cb69ff055b155231000000000000000000000000fee700916eb949fd402f897a22b65f52578031cf

Deployed Bytecode

0x6080604052600436106102555760003560e01c8063751039fc11610139578063b0f7ec38116100b6578063e186ec741161007a578063e186ec74146108bd578063e6990a90146108e6578063e6d40d6014610913578063f2fde38b14610940578063f40acc3d14610969578063f84ba65d146109945761025c565b8063b0f7ec38146107ec578063d85a282814610817578063dd62ed3e1461082e578063df20fd491461086b578063e01bb688146108945761025c565b80638f9a55c0116100fd5780638f9a55c01461070557806395d89b41146107305780639faa7cfd1461075b578063a82ed9ec14610784578063a9059cbb146107af5761025c565b8063751039fc1461064457806378de607b1461065b5780637d1db4a514610686578063875fa085146106b15780638da5cb5b146106da5761025c565b80632d838119116101d257806345ce53651161019657806345ce536514610520578063470624021461055d578063571ac8b01461058a578063658d4b7f146105c757806370a08231146105f0578063715018a61461062d5761025c565b80632d83811914610449578063313ce5671461048657806331e02e0b146104b15780633582ad23146104de578063364333f4146105095761025c565b806318160ddd1161021957806318160ddd1461035c57806323b872dd146103875780632b112e49146103c45780632b14ca56146103ef5780632b36a6d21461041c5761025c565b80630445b6671461026157806306fdde031461028c578063095ea7b3146102b75780630cfc15f9146102f457806317800287146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109bd565b60405161028391906129bf565b60405180910390f35b34801561029857600080fd5b506102a16109c3565b6040516102ae9190612a6a565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612b1b565b610a55565b6040516102eb9190612b76565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612b91565b610b47565b60405161032891906129bf565b60405180910390f35b34801561033d57600080fd5b50610346610b5f565b60405161035391906129bf565b60405180910390f35b34801561036857600080fd5b50610371610b65565b60405161037e91906129bf565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190612bbe565b610b6f565b6040516103bb9190612b76565b60405180910390f35b3480156103d057600080fd5b506103d9610df0565b6040516103e691906129bf565b60405180910390f35b3480156103fb57600080fd5b50610404610e23565b60405161041393929190612c58565b60405180910390f35b34801561042857600080fd5b50610431610e71565b60405161044093929190612c58565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190612c8f565b610ebf565b60405161047d91906129bf565b60405180910390f35b34801561049257600080fd5b5061049b610ee3565b6040516104a89190612cbc565b60405180910390f35b3480156104bd57600080fd5b506104c6610eec565b6040516104d593929190612c58565b60405180910390f35b3480156104ea57600080fd5b506104f3610f3a565b6040516105009190612b76565b60405180910390f35b34801561051557600080fd5b5061051e610f4d565b005b34801561052c57600080fd5b5061054760048036038101906105429190612c8f565b610fce565b60405161055491906129bf565b60405180910390f35b34801561056957600080fd5b50610572610ff2565b60405161058193929190612c58565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac9190612b91565b611040565b6040516105be9190612b76565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190612d03565b611073565b005b3480156105fc57600080fd5b5061061760048036038101906106129190612b91565b6110d6565b60405161062491906129bf565b60405180910390f35b34801561063957600080fd5b50610642611127565b005b34801561065057600080fd5b5061065961113b565b005b34801561066757600080fd5b506106706112dc565b60405161067d91906129bf565b60405180910390f35b34801561069257600080fd5b5061069b6112e2565b6040516106a891906129bf565b60405180910390f35b3480156106bd57600080fd5b506106d860048036038101906106d39190612c8f565b6112e8565b005b3480156106e657600080fd5b506106ef6112fa565b6040516106fc9190612d52565b60405180910390f35b34801561071157600080fd5b5061071a611323565b60405161072791906129bf565b60405180910390f35b34801561073c57600080fd5b50610745611329565b6040516107529190612a6a565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d9190612d99565b6113bb565b005b34801561079057600080fd5b5061079961155d565b6040516107a69190612e5f565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d19190612b1b565b611575565b6040516107e39190612b76565b60405180910390f35b3480156107f857600080fd5b5061080161158a565b60405161080e9190612b76565b60405180910390f35b34801561082357600080fd5b5061082c61159d565b005b34801561083a57600080fd5b5061085560048036038101906108509190612e7a565b6115bb565b60405161086291906129bf565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d9190612eba565b611642565b005b3480156108a057600080fd5b506108bb60048036038101906108b69190612b91565b611689565b005b3480156108c957600080fd5b506108e460048036038101906108df9190612c8f565b6116d5565b005b3480156108f257600080fd5b506108fb611701565b60405161090a93929190612c58565b60405180910390f35b34801561091f57600080fd5b5061092861174f565b60405161093793929190612c58565b60405180910390f35b34801561094c57600080fd5b5061096760048036038101906109629190612b91565b61179d565b005b34801561097557600080fd5b5061097e611820565b60405161098b9190612d52565b60405180910390f35b3480156109a057600080fd5b506109bb60048036038101906109b69190612d03565b611844565b005b60145481565b6060600180546109d290612f29565b80601f01602080910402602001604051908101604052809291908181526020018280546109fe90612f29565b8015610a4b5780601f10610a2057610100808354040283529160200191610a4b565b820191906000526020600020905b815481529060010190602001808311610a2e57829003601f168201915b5050505050905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b3591906129bf565b60405180910390a36001905092915050565b60076020528060005260406000206000915090505481565b60085481565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ddc5781600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca90612fa6565b60405180910390fd5b81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5b9190612ff5565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610de78484846118a7565b90509392505050565b6000610dfc60006110d6565b610e0761dead6110d6565b600354610e149190612ff5565b610e1e9190612ff5565b905090565b60128060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600e8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600060085460035483610ed29190613029565b610edc919061309a565b9050919050565b60006012905090565b600d8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600a60009054906101000a900460ff1681565b610f55611cec565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610f7b906130fc565b60006040518083038185875af1925050503d8060008114610fb8576040519150601f19603f3d011682016040523d82523d6000602084013e610fbd565b606091505b5050905080610fcb57600080fd5b50565b600060035460085483610fe19190613029565b610feb919061309a565b9050919050565b60118060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600061106c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a55565b9050919050565b61107b611cec565b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611120600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ebf565b9050919050565b61112f611cec565b6111396000611d6a565b565b611143611cec565b6000600a60006101000a81548160ff021916908315150217905550600f60116000820160009054906101000a900460ff168160000160006101000a81548160ff021916908360ff1602179055506000820160019054906101000a900460ff168160000160016101000a81548160ff021916908360ff1602179055506000820160029054906101000a90046fffffffffffffffffffffffffffffffff168160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050601060126000820160009054906101000a900460ff168160000160006101000a81548160ff021916908360ff1602179055506000820160019054906101000a900460ff168160000160016101000a81548160ff021916908360ff1602179055506000820160029054906101000a90046fffffffffffffffffffffffffffffffff168160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050565b60155481565b60055481565b6112f0611cec565b8060158190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b60606002805461133890612f29565b80601f016020809104026020016040519081016040528092919081815260200182805461136490612f29565b80156113b15780601f10611386576101008083540402835291602001916113b1565b820191906000526020600020905b81548152906001019060200180831161139457829003601f168201915b5050505050905090565b6113c3611cec565b60405180606001604052808560ff1681526020018460ff1681526020018460ff168660ff166113f29190613111565b6fffffffffffffffffffffffffffffffff16815250601160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180606001604052808360ff1681526020018260ff1681526020018260ff168460ff166114bc9190613111565b6fffffffffffffffffffffffffffffffff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505050505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006115823384846118a7565b905092915050565b601360149054906101000a900460ff1681565b6115a5611cec565b6115b830336115b3306110d6565b6118a7565b50565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61164a611cec565b81601360146101000a81548160ff021916908315150217905550612710816003546116759190613029565b61167f919061309a565b6014819055505050565b611691611cec565b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116dd611cec565b612710816003546116ee9190613029565b6116f8919061309a565b60058190555050565b60108060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600f8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b6117a5611cec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b906131c7565b60405180910390fd5b61181d81611d6a565b50565b7f000000000000000000000000a2004ebf0ac531430825661fa4264fe656a1548a81565b61184c611cec565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601660009054906101000a900460ff16156118d0576118c9848484611e2e565b9050611ce5565b600a60009054906101000a900460ff16801561193757507f000000000000000000000000a2004ebf0ac531430825661fa4264fe656a1548a73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561198d5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a30576005548211156119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce90613259565b60405180910390fd5b600654826119e4856110d6565b6119ee9190613279565b1115611a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a26906132f9565b60405180910390fd5b5b611a3861204b565b15611a4657611a456120e9565b5b6000611a5183610fce565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc90613365565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b209190612ff5565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611b6f8686612557565b611b795781611be1565b611be07f000000000000000000000000a2004ebf0ac531430825661fa4264fe656a1548a73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611bd6576000611bd9565b60015b8784612605565b5b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2e9190613279565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611cc984610ebf565b604051611cd691906129bf565b60405180910390a36001925050505b9392505050565b611cf461299e565b73ffffffffffffffffffffffffffffffffffffffff16611d126112fa565b73ffffffffffffffffffffffffffffffffffffffff1614611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f906133d1565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611e3a83610fce565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb590613365565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f099190612ff5565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f979190613279565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161203791906129bf565b60405180910390a360019150509392505050565b60007f000000000000000000000000a2004ebf0ac531430825661fa4264fe656a1548a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156120b65750601660009054906101000a900460ff16155b80156120ce5750601360149054906101000a900460ff165b80156120e457506014546120e1306110d6565b10155b905090565b6001601660006101000a81548160ff021916908315150217905550600060126040518060600160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060006121a4306110d6565b905060006014549050600081905060008314806121c15750600081145b156121cf575050505061253a565b6015546014546121df9190613029565b8311156121f9576015546014546121f69190613029565b92505b612217737a250d5630b4cf539739df2c5dacb4c659f2488d84610a55565b506000600267ffffffffffffffff811115612235576122346133f1565b5b6040519080825280602002602001820160405280156122635781602001602082028036833780820191505090505b509050308160008151811061227b5761227a613420565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612314573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123389190613464565b8160018151811061234c5761234b613420565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b81526004016123dc95949392919061358a565b600060405180830381600087803b1580156123f657600080fd5b505af115801561240a573d6000803e3d6000fd5b5050505060004790506000866000015160ff16876040015161242c91906135e4565b6fffffffffffffffffffffffffffffffff169050600081886020015160ff16846124569190613029565b612460919061309a565b90506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516124aa906130fc565b60006040518083038185875af1925050503d80600081146124e7576040519150601f19603f3d011682016040523d82523d6000602084013e6124ec565b606091505b5050905080612530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252790613674565b60405180910390fd5b5050505050505050505b6000601660006101000a81548160ff021916908315150217905550565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125fd5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008060116040518060600160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509050600060126040518060600160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000600115158715151461277157606482604001516fffffffffffffffffffffffffffffffff16866127629190613029565b61276c919061309a565b6127a0565b606483604001516fffffffffffffffffffffffffffffffff16866127959190613029565b61279f919061309a565b5b9050600060011515881515146127e95782604001516fffffffffffffffffffffffffffffffff16836000015160ff16836127da9190613029565b6127e4919061309a565b61281e565b83604001516fffffffffffffffffffffffffffffffff16846000015160ff16836128139190613029565b61281d919061309a565b5b90508060085461282e9190612ff5565b600881905550600081836128429190612ff5565b905060008111156129495780600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128989190613279565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61293384610ebf565b60405161294091906129bf565b60405180910390a35b7fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac8260085460405161297c929190613694565b60405180910390a182876129909190612ff5565b955050505050509392505050565b600033905090565b6000819050919050565b6129b9816129a6565b82525050565b60006020820190506129d460008301846129b0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a145780820151818401526020810190506129f9565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a3c826129da565b612a4681856129e5565b9350612a568185602086016129f6565b612a5f81612a20565b840191505092915050565b60006020820190508181036000830152612a848184612a31565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612abc82612a91565b9050919050565b612acc81612ab1565b8114612ad757600080fd5b50565b600081359050612ae981612ac3565b92915050565b612af8816129a6565b8114612b0357600080fd5b50565b600081359050612b1581612aef565b92915050565b60008060408385031215612b3257612b31612a8c565b5b6000612b4085828601612ada565b9250506020612b5185828601612b06565b9150509250929050565b60008115159050919050565b612b7081612b5b565b82525050565b6000602082019050612b8b6000830184612b67565b92915050565b600060208284031215612ba757612ba6612a8c565b5b6000612bb584828501612ada565b91505092915050565b600080600060608486031215612bd757612bd6612a8c565b5b6000612be586828701612ada565b9350506020612bf686828701612ada565b9250506040612c0786828701612b06565b9150509250925092565b600060ff82169050919050565b612c2781612c11565b82525050565b60006fffffffffffffffffffffffffffffffff82169050919050565b612c5281612c2d565b82525050565b6000606082019050612c6d6000830186612c1e565b612c7a6020830185612c1e565b612c876040830184612c49565b949350505050565b600060208284031215612ca557612ca4612a8c565b5b6000612cb384828501612b06565b91505092915050565b6000602082019050612cd16000830184612c1e565b92915050565b612ce081612b5b565b8114612ceb57600080fd5b50565b600081359050612cfd81612cd7565b92915050565b60008060408385031215612d1a57612d19612a8c565b5b6000612d2885828601612ada565b9250506020612d3985828601612cee565b9150509250929050565b612d4c81612ab1565b82525050565b6000602082019050612d676000830184612d43565b92915050565b612d7681612c11565b8114612d8157600080fd5b50565b600081359050612d9381612d6d565b92915050565b60008060008060808587031215612db357612db2612a8c565b5b6000612dc187828801612d84565b9450506020612dd287828801612d84565b9350506040612de387828801612d84565b9250506060612df487828801612d84565b91505092959194509250565b6000819050919050565b6000612e25612e20612e1b84612a91565b612e00565b612a91565b9050919050565b6000612e3782612e0a565b9050919050565b6000612e4982612e2c565b9050919050565b612e5981612e3e565b82525050565b6000602082019050612e746000830184612e50565b92915050565b60008060408385031215612e9157612e90612a8c565b5b6000612e9f85828601612ada565b9250506020612eb085828601612ada565b9150509250929050565b60008060408385031215612ed157612ed0612a8c565b5b6000612edf85828601612cee565b9250506020612ef085828601612b06565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f4157607f821691505b602082108103612f5457612f53612efa565b5b50919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612f90601d836129e5565b9150612f9b82612f5a565b602082019050919050565b60006020820190508181036000830152612fbf81612f83565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613000826129a6565b915061300b836129a6565b925082820390508181111561302357613022612fc6565b5b92915050565b6000613034826129a6565b915061303f836129a6565b925082820261304d816129a6565b9150828204841483151761306457613063612fc6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130a5826129a6565b91506130b0836129a6565b9250826130c0576130bf61306b565b5b828204905092915050565b600081905092915050565b50565b60006130e66000836130cb565b91506130f1826130d6565b600082019050919050565b6000613107826130d9565b9150819050919050565b600061311c82612c2d565b915061312783612c2d565b925082820190506fffffffffffffffffffffffffffffffff81111561314f5761314e612fc6565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131b16026836129e5565b91506131bc82613155565b604082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006132436028836129e5565b915061324e826131e7565b604082019050919050565b6000602082019050818103600083015261327281613236565b9050919050565b6000613284826129a6565b915061328f836129a6565b92508282019050808211156132a7576132a6612fc6565b5b92915050565b7f45786365656473206d617857616c6c657453697a652e00000000000000000000600082015250565b60006132e36016836129e5565b91506132ee826132ad565b602082019050919050565b60006020820190508181036000830152613312816132d6565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b600061334f6014836129e5565b915061335a82613319565b602082019050919050565b6000602082019050818103600083015261337e81613342565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006133bb6020836129e5565b91506133c682613385565b602082019050919050565b600060208201905081810360008301526133ea816133ae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061345e81612ac3565b92915050565b60006020828403121561347a57613479612a8c565b5b60006134888482850161344f565b91505092915050565b6000819050919050565b60006134b66134b16134ac84613491565b612e00565b6129a6565b9050919050565b6134c68161349b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61350181612ab1565b82525050565b600061351383836134f8565b60208301905092915050565b6000602082019050919050565b6000613537826134cc565b61354181856134d7565b935061354c836134e8565b8060005b8381101561357d5781516135648882613507565b975061356f8361351f565b925050600181019050613550565b5085935050505092915050565b600060a08201905061359f60008301886129b0565b6135ac60208301876134bd565b81810360408301526135be818661352c565b90506135cd6060830185612d43565b6135da60808301846129b0565b9695505050505050565b60006135ef82612c2d565b91506135fa83612c2d565b925082820390506fffffffffffffffffffffffffffffffff81111561362257613621612fc6565b5b92915050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b600061365e6010836129e5565b915061366982613628565b602082019050919050565b6000602082019050818103600083015261368d81613651565b9050919050565b60006040820190506136a960008301856129b0565b6136b660208301846129b0565b939250505056fea2646970667358221220d21b32cbe47bf666b53d86c0bcf7e1180a19acd4286ec6b16d6a1674be6287a064736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000b2696b335e7824e2ade5b098cb69ff055b155231000000000000000000000000fee700916eb949fd402f897a22b65f52578031cf

-----Decoded View---------------
Arg [0] : _devWallet (address): 0xb2696b335e7824e2AdE5B098cb69Ff055B155231
Arg [1] : _marketingWallet (address): 0xFEe700916Eb949fD402f897a22b65F52578031cf

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000b2696b335e7824e2ade5b098cb69ff055b155231
Arg [1] : 000000000000000000000000fee700916eb949fd402f897a22b65f52578031cf


Deployed Bytecode Sourcemap

8314:11127:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9857:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13015:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11497:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9138:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9187:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12819:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12368:441;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13811:136;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9760:18;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;9516:69;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13654:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12929:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9441:68;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;9310:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13957:170;;;;;;;;;;;;;:::i;:::-;;13506:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9736:17;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;11721:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14598:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13205:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7284:103;;;;;;;;;;;;;:::i;:::-;;15083:147;;;;;;;;;;;;;:::i;:::-;;9930:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9012:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14462:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7044:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9073:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13108:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12013:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8581:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11851:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9819:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14135:131;;;;;;;;;;;;;:::i;:::-;;13351:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14274:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14860:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14957:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9663:66;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;9592:64;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7395:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8714:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14725:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9857:57;;;;:::o;13015:85::-;13054:13;13087:5;13080:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13015:85;:::o;11497:216::-;11572:4;11624:6;11589:11;:23;11601:10;11589:23;;;;;;;;;;;;;;;:32;11613:7;11589:32;;;;;;;;;;;;;;;:41;;;;11667:7;11646:37;;11655:10;11646:37;;;11676:6;11646:37;;;;;;:::i;:::-;;;;;;;;11701:4;11694:11;;11497:216;;;;:::o;9138:42::-;;;;;;;;;;;;;;;;;:::o;9187:46::-;;;;:::o;12819:102::-;12874:7;12901:12;;12894:19;;12819:102;:::o;12368:441::-;12468:4;12524:17;12489:11;:19;12501:6;12489:19;;;;;;;;;;;;;;;:31;12509:10;12489:31;;;;;;;;;;;;;;;;:52;12485:257;;12601:6;12566:11;:19;12578:6;12566:19;;;;;;;;;;;;;;;:31;12586:10;12566:31;;;;;;;;;;;;;;;;:41;;12558:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;12724:6;12690:11;:19;12702:6;12690:19;;;;;;;;;;;;;;;:31;12710:10;12690:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;12656:11;:19;12668:6;12656:19;;;;;;;;;;;;;;;:31;12676:10;12656:31;;;;;;;;;;;;;;;:74;;;;12485:257;12761:40;12775:6;12783:9;12794:6;12761:13;:40::i;:::-;12754:47;;12368:441;;;;;:::o;13811:136::-;13864:7;13924:15;8530:42;13924:9;:15::i;:::-;13906;8457:42;13906:9;:15::i;:::-;13891:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;13884:55;;13811:136;:::o;9760:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9516:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13654:149::-;13724:7;13779:16;;13764:12;;13751:10;:25;;;;:::i;:::-;:44;;;;:::i;:::-;13744:51;;13654:149;;;:::o;12929:78::-;12972:5;12997:2;12990:9;;12929:78;:::o;9441:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9310:32::-;;;;;;;;;;;;;:::o;13957:170::-;6999:13;:11;:13::i;:::-;14017:12:::1;14042:10;14034:24;;14066:21;14034:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14016:76;;;14111:7;14103:16;;;::::0;::::1;;14005:122;13957:170::o:0;13506:140::-;13571:7;13626:12;;13607:16;;13598:6;:25;;;;:::i;:::-;:40;;;;:::i;:::-;13591:47;;13506:140;;;:::o;9736:17::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11721:122::-;11776:4;11800:35;11808:7;11817:17;11800:7;:35::i;:::-;11793:42;;11721:122;;;:::o;14598:119::-;6999:13;:11;:13::i;:::-;14703:6:::1;14681:11;:19;14693:6;14681:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14598:119:::0;;:::o;13205:138::-;13271:7;13298:37;13318:7;:16;13326:7;13318:16;;;;;;;;;;;;;;;;13298:19;:37::i;:::-;13291:44;;13205:138;;;:::o;7284:103::-;6999:13;:11;:13::i;:::-;7349:30:::1;7376:1;7349:18;:30::i;:::-;7284:103::o:0;15083:147::-;6999:13;:11;:13::i;:::-;15153:5:::1;15137:13;;:21;;;;;;;;;;;;;;;;;;15178:11;15169:6;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15210:12;15200:7;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15083:147::o:0;9930:36::-;;;;:::o;9012:54::-;;;;:::o;14462:128::-;6999:13;:11;:13::i;:::-;14565:17:::1;14546:16;:36;;;;14462:128:::0;:::o;7044:87::-;7090:7;7117:6;;;;;;;;;;;7110:13;;7044:87;:::o;9073:57::-;;;;:::o;13108:89::-;13149:13;13182:7;13175:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13108:89;:::o;12013:347::-;6999:13;:11;:13::i;:::-;12139:94:::1;;;;;;;;12156:13;12139:94;;;;;;12176:6;12139:94;;;;;;12224:6;12216:15;;12199:13;12191:22;;:40;;;;:::i;:::-;12139:94;;;;::::0;12130:6:::1;:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12254:98;;;;;;;;12271:14;12254:98;;;;;;12292:7;12254:98;;;;;;12342:7;12334:16;;12316:14;12308:23;;:42;;;;:::i;:::-;12254:98;;;;::::0;12244:7:::1;:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12013:347:::0;;;;:::o;8581:126::-;8664:42;8581:126;:::o;11851:156::-;11931:4;11955:44;11969:10;11981:9;11992:6;11955:13;:44::i;:::-;11948:51;;11851:156;;;;:::o;9819:31::-;;;;;;;;;;;;;:::o;14135:131::-;6999:13;:11;:13::i;:::-;14192:66:::1;14214:4;14221:10;14233:24;14251:4;14233:9;:24::i;:::-;14192:13;:66::i;:::-;;14135:131::o:0;13351:147::-;13435:7;13462:11;:19;13474:6;13462:19;;;;;;;;;;;;;;;:28;13482:7;13462:28;;;;;;;;;;;;;;;;13455:35;;13351:147;;;;:::o;14274:182::-;6999:13;:11;:13::i;:::-;14380:8:::1;14365:12;;:23;;;;;;;;;;;;;;;;;;14443:5;14432:7;14417:12;;:22;;;;:::i;:::-;14416:32;;;;:::i;:::-;14399:13;:49;;;;14274:182:::0;;:::o;14860:89::-;6999:13;:11;:13::i;:::-;14939:2:::1;14927:9;;:14;;;;;;;;;;;;;;;;;;14860:89:::0;:::o;14957:118::-;6999:13;:11;:13::i;:::-;15062:5:::1;15057:2;15042:12;;:17;;;;:::i;:::-;:25;;;;:::i;:::-;15027:12;:40;;;;14957:118:::0;:::o;9663:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9592:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7395:201::-;6999:13;:11;:13::i;:::-;7504:1:::1;7484:22;;:8;:22;;::::0;7476:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7560:28;7579:8;7560:18;:28::i;:::-;7395:201:::0;:::o;8714:40::-;;;:::o;14725:127::-;6999:13;:11;:13::i;:::-;14838:6:::1;14812:15;:23;14828:6;14812:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14725:127:::0;;:::o;15243:1099::-;15335:4;15352:6;;;;;;;;;;;15348:79;;;15378:41;15393:6;15401:9;15412:6;15378:14;:41::i;:::-;15371:48;;;;15348:79;15441:13;;;;;;;;;;;:42;;;;;15468:15;15458:25;;:6;:25;;;15441:42;:73;;;;;15488:15;:26;15504:9;15488:26;;;;;;;;;;;;;;;;;;;;;;;;;15487:27;15441:73;15437:274;;;15545:12;;15535:6;:22;;15527:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15658:14;;15648:6;15625:20;15635:9;15625;:20::i;:::-;:29;;;;:::i;:::-;:47;;15617:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;15437:274;15721:17;:15;:17::i;:::-;15717:53;;;15751:11;:9;:11::i;:::-;15717:53;15778:24;15805:26;15824:6;15805:18;:26::i;:::-;15778:53;;15865:16;15846:7;:15;15854:6;15846:15;;;;;;;;;;;;;;;;:35;;15838:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15949:16;15931:7;:15;15939:6;15931:15;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;15913:7;:15;15921:6;15913:15;;;;;;;;;;;;;;;:52;;;;15976:26;16005:33;16020:6;16028:9;16005:14;:33::i;:::-;:162;;16151:16;16005:162;;;16050:89;16082:15;16072:25;;:6;:25;;;:40;;16107:5;16072:40;;;16100:4;16072:40;16114:6;16122:16;16050:21;:89::i;:::-;16005:162;15976:191;;16216:18;16195:7;:18;16203:9;16195:18;;;;;;;;;;;;;;;;:39;;;;:::i;:::-;16174:7;:18;16182:9;16174:18;;;;;;;;;;;;;;;:60;;;;16265:9;16248:68;;16257:6;16248:68;;;16276:39;16296:18;16276:19;:39::i;:::-;16248:68;;;;;;:::i;:::-;;;;;;;;16330:4;16323:11;;;;15243:1099;;;;;;:::o;7141:132::-;7216:12;:10;:12::i;:::-;7205:23;;:7;:5;:7::i;:::-;:23;;;7197:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7141:132::o;7609:191::-;7683:16;7702:6;;;;;;;;;;;7683:25;;7728:8;7719:6;;:17;;;;;;;;;;;;;;;;;;7783:8;7752:40;;7773:8;7752:40;;;;;;;;;;;;7672:128;7609:191;:::o;16351:455::-;16444:4;16461:24;16488:26;16507:6;16488:18;:26::i;:::-;16461:53;;16552:16;16533:7;:15;16541:6;16533:15;;;;;;;;;;;;;;;;:35;;16525:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16640:16;16622:7;:15;16630:6;16622:15;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;16604:7;:15;16612:6;16604:15;;;;;;;;;;;;;;;:52;;;;16709:16;16688:7;:18;16696:9;16688:18;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;16667:7;:18;16675:9;16667:18;;;;;;;;;;;;;;;:58;;;;16758:9;16741:35;;16750:6;16741:35;;;16769:6;16741:35;;;;;;:::i;:::-;;;;;;;;16794:4;16787:11;;;16351:455;;;;;:::o;17912:183::-;17962:4;18000:15;17986:29;;:10;:29;;;;:40;;;;;18020:6;;;;;;;;;;;18019:7;17986:40;:56;;;;;18030:12;;;;;;;;;;;17986:56;:101;;;;;18074:13;;18046:24;18064:4;18046:9;:24::i;:::-;:41;;17986:101;17979:108;;17912:183;:::o;18103:1166::-;10033:4;10024:6;;:13;;;;;;;;;;;;;;;;;;18153:20:::1;18176:7;18153:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;18194:23;18220:24;18238:4;18220:9;:24::i;:::-;18194:50;;18255:23;18281:13;;18255:39;;18305:20;18328:15;18305:38;;18379:1;18360:15;:20;:41;;;;18400:1;18384:12;:17;18360:41;18356:80;;;18418:7;;;;;;18356:80;18486:16;;18470:13;;:32;;;;:::i;:::-;18452:15;:50;18448:133;;;18553:16;;18537:13;;:32;;;;:::i;:::-;18519:50;;18448:133;18591:52;8664:42;18627:15;18591:7;:52::i;:::-;;18658:21;18696:1;18682:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18658:40;;18727:4;18709;18714:1;18709:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;8664:42;18753:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18743:4;18748:1;18743:7;;;;;;;;:::i;:::-;;;;;;;:34;;;;;;;;;::::0;::::1;8664:42;18790:68;;;18873:15;18890:1;18893:4;18907;18914:15;18790:150;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18953:17;18973:21;18953:41;;19007:20;19048:9;:20;;;19030:38;;:9;:15;;;:38;;;;:::i;:::-;19007:61;;;;19079:15;19125:12;19109:9;:13;;;19097:25;;:9;:25;;;;:::i;:::-;:40;;;;:::i;:::-;19079:58;;19150:15;19178:9;;;;;;;;;;;19170:23;;19201:7;19170:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19149:64;;;19228:10;19220:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;18142:1127;;;;;;;;;10048:1;10069:5:::0;10060:6;;:14;;;;;;;;;;;;;;;;;;18103:1166::o;19277:161::-;19359:4;19384:11;:19;19396:6;19384:19;;;;;;;;;;;;;;;;;;;;;;;;;19383:20;:47;;;;;19408:11;:22;19420:9;19408:22;;;;;;;;;;;;;;;;;;;;;;;;;19407:23;19383:47;19376:54;;19277:161;;;;:::o;16820:1084::-;16924:7;16944:19;16966:6;16944:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16983:20;17006:7;16983:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17026:27;17079:4;17069:14;;:6;:14;;;:99;;17165:3;17147:9;:15;;;17128:34;;:16;:34;;;;:::i;:::-;:40;;;;:::i;:::-;17069:99;;;17122:3;17105:8;:14;;;17086:33;;:16;:33;;;;:::i;:::-;:39;;;;:::i;:::-;17069:99;17026:142;;17183:27;17223:4;17213:14;;:6;:14;;;:164;;17362:9;:15;;;17317:60;;17339:9;:20;;;17317:42;;:19;:42;;;;:::i;:::-;:60;;;;:::i;:::-;17213:164;;;17287:8;:14;;;17243:58;;17265:8;:19;;;17243:41;;:19;:41;;;;:::i;:::-;:58;;;;:::i;:::-;17213:164;17183:194;;17428:19;17409:16;;:38;;;;:::i;:::-;17390:16;:57;;;;17469:29;17523:19;17501;:41;;;;:::i;:::-;17469:73;;17581:1;17557:21;:25;17553:226;;;17649:21;17624:7;:22;17640:4;17624:22;;;;;;;;;;;;;;;;:46;;;;:::i;:::-;17599:7;:22;17615:4;17599:22;;;;;;;;;;;;;;;:71;;;;17717:4;17692:75;;17701:6;17692:75;;;17724:42;17744:21;17724:19;:42::i;:::-;17692:75;;;;;;:::i;:::-;;;;;;;;17553:226;17794:46;17802:19;17823:16;;17794:46;;;;;;;:::i;:::-;;;;;;;;17877:19;17858:16;:38;;;;:::i;:::-;17851:45;;;;;;;16820:1084;;;;;:::o;1277:98::-;1330:7;1357:10;1350:17;;1277:98;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:118::-;5005:7;5045:34;5038:5;5034:46;5023:57;;4968:118;;;:::o;5092:::-;5179:24;5197:5;5179:24;:::i;:::-;5174:3;5167:37;5092:118;;:::o;5216:426::-;5357:4;5395:2;5384:9;5380:18;5372:26;;5408:67;5472:1;5461:9;5457:17;5448:6;5408:67;:::i;:::-;5485:68;5549:2;5538:9;5534:18;5525:6;5485:68;:::i;:::-;5563:72;5631:2;5620:9;5616:18;5607:6;5563:72;:::i;:::-;5216:426;;;;;;:::o;5648:329::-;5707:6;5756:2;5744:9;5735:7;5731:23;5727:32;5724:119;;;5762:79;;:::i;:::-;5724:119;5882:1;5907:53;5952:7;5943:6;5932:9;5928:22;5907:53;:::i;:::-;5897:63;;5853:117;5648:329;;;;:::o;5983:214::-;6072:4;6110:2;6099:9;6095:18;6087:26;;6123:67;6187:1;6176:9;6172:17;6163:6;6123:67;:::i;:::-;5983:214;;;;:::o;6203:116::-;6273:21;6288:5;6273:21;:::i;:::-;6266:5;6263:32;6253:60;;6309:1;6306;6299:12;6253:60;6203:116;:::o;6325:133::-;6368:5;6406:6;6393:20;6384:29;;6422:30;6446:5;6422:30;:::i;:::-;6325:133;;;;:::o;6464:468::-;6529:6;6537;6586:2;6574:9;6565:7;6561:23;6557:32;6554:119;;;6592:79;;:::i;:::-;6554:119;6712:1;6737:53;6782:7;6773:6;6762:9;6758:22;6737:53;:::i;:::-;6727:63;;6683:117;6839:2;6865:50;6907:7;6898:6;6887:9;6883:22;6865:50;:::i;:::-;6855:60;;6810:115;6464:468;;;;;:::o;6938:118::-;7025:24;7043:5;7025:24;:::i;:::-;7020:3;7013:37;6938:118;;:::o;7062:222::-;7155:4;7193:2;7182:9;7178:18;7170:26;;7206:71;7274:1;7263:9;7259:17;7250:6;7206:71;:::i;:::-;7062:222;;;;:::o;7290:118::-;7361:22;7377:5;7361:22;:::i;:::-;7354:5;7351:33;7341:61;;7398:1;7395;7388:12;7341:61;7290:118;:::o;7414:135::-;7458:5;7496:6;7483:20;7474:29;;7512:31;7537:5;7512:31;:::i;:::-;7414:135;;;;:::o;7555:749::-;7633:6;7641;7649;7657;7706:3;7694:9;7685:7;7681:23;7677:33;7674:120;;;7713:79;;:::i;:::-;7674:120;7833:1;7858:51;7901:7;7892:6;7881:9;7877:22;7858:51;:::i;:::-;7848:61;;7804:115;7958:2;7984:51;8027:7;8018:6;8007:9;8003:22;7984:51;:::i;:::-;7974:61;;7929:116;8084:2;8110:51;8153:7;8144:6;8133:9;8129:22;8110:51;:::i;:::-;8100:61;;8055:116;8210:2;8236:51;8279:7;8270:6;8259:9;8255:22;8236:51;:::i;:::-;8226:61;;8181:116;7555:749;;;;;;;:::o;8310:60::-;8338:3;8359:5;8352:12;;8310:60;;;:::o;8376:142::-;8426:9;8459:53;8477:34;8486:24;8504:5;8486:24;:::i;:::-;8477:34;:::i;:::-;8459:53;:::i;:::-;8446:66;;8376:142;;;:::o;8524:126::-;8574:9;8607:37;8638:5;8607:37;:::i;:::-;8594:50;;8524:126;;;:::o;8656:152::-;8732:9;8765:37;8796:5;8765:37;:::i;:::-;8752:50;;8656:152;;;:::o;8814:183::-;8927:63;8984:5;8927:63;:::i;:::-;8922:3;8915:76;8814:183;;:::o;9003:274::-;9122:4;9160:2;9149:9;9145:18;9137:26;;9173:97;9267:1;9256:9;9252:17;9243:6;9173:97;:::i;:::-;9003:274;;;;:::o;9283:474::-;9351:6;9359;9408:2;9396:9;9387:7;9383:23;9379:32;9376:119;;;9414:79;;:::i;:::-;9376:119;9534:1;9559:53;9604:7;9595:6;9584:9;9580:22;9559:53;:::i;:::-;9549:63;;9505:117;9661:2;9687:53;9732:7;9723:6;9712:9;9708:22;9687:53;:::i;:::-;9677:63;;9632:118;9283:474;;;;;:::o;9763:468::-;9828:6;9836;9885:2;9873:9;9864:7;9860:23;9856:32;9853:119;;;9891:79;;:::i;:::-;9853:119;10011:1;10036:50;10078:7;10069:6;10058:9;10054:22;10036:50;:::i;:::-;10026:60;;9982:114;10135:2;10161:53;10206:7;10197:6;10186:9;10182:22;10161:53;:::i;:::-;10151:63;;10106:118;9763:468;;;;;:::o;10237:180::-;10285:77;10282:1;10275:88;10382:4;10379:1;10372:15;10406:4;10403:1;10396:15;10423:320;10467:6;10504:1;10498:4;10494:12;10484:22;;10551:1;10545:4;10541:12;10572:18;10562:81;;10628:4;10620:6;10616:17;10606:27;;10562:81;10690:2;10682:6;10679:14;10659:18;10656:38;10653:84;;10709:18;;:::i;:::-;10653:84;10474:269;10423:320;;;:::o;10749:179::-;10889:31;10885:1;10877:6;10873:14;10866:55;10749:179;:::o;10934:366::-;11076:3;11097:67;11161:2;11156:3;11097:67;:::i;:::-;11090:74;;11173:93;11262:3;11173:93;:::i;:::-;11291:2;11286:3;11282:12;11275:19;;10934:366;;;:::o;11306:419::-;11472:4;11510:2;11499:9;11495:18;11487:26;;11559:9;11553:4;11549:20;11545:1;11534:9;11530:17;11523:47;11587:131;11713:4;11587:131;:::i;:::-;11579:139;;11306:419;;;:::o;11731:180::-;11779:77;11776:1;11769:88;11876:4;11873:1;11866:15;11900:4;11897:1;11890:15;11917:194;11957:4;11977:20;11995:1;11977:20;:::i;:::-;11972:25;;12011:20;12029:1;12011:20;:::i;:::-;12006:25;;12055:1;12052;12048:9;12040:17;;12079:1;12073:4;12070:11;12067:37;;;12084:18;;:::i;:::-;12067:37;11917:194;;;;:::o;12117:410::-;12157:7;12180:20;12198:1;12180:20;:::i;:::-;12175:25;;12214:20;12232:1;12214:20;:::i;:::-;12209:25;;12269:1;12266;12262:9;12291:30;12309:11;12291:30;:::i;:::-;12280:41;;12470:1;12461:7;12457:15;12454:1;12451:22;12431:1;12424:9;12404:83;12381:139;;12500:18;;:::i;:::-;12381:139;12165:362;12117:410;;;;:::o;12533:180::-;12581:77;12578:1;12571:88;12678:4;12675:1;12668:15;12702:4;12699:1;12692:15;12719:185;12759:1;12776:20;12794:1;12776:20;:::i;:::-;12771:25;;12810:20;12828:1;12810:20;:::i;:::-;12805:25;;12849:1;12839:35;;12854:18;;:::i;:::-;12839:35;12896:1;12893;12889:9;12884:14;;12719:185;;;;:::o;12910:147::-;13011:11;13048:3;13033:18;;12910:147;;;;:::o;13063:114::-;;:::o;13183:398::-;13342:3;13363:83;13444:1;13439:3;13363:83;:::i;:::-;13356:90;;13455:93;13544:3;13455:93;:::i;:::-;13573:1;13568:3;13564:11;13557:18;;13183:398;;;:::o;13587:379::-;13771:3;13793:147;13936:3;13793:147;:::i;:::-;13786:154;;13957:3;13950:10;;13587:379;;;:::o;13972:224::-;14012:3;14031:20;14049:1;14031:20;:::i;:::-;14026:25;;14065:20;14083:1;14065:20;:::i;:::-;14060:25;;14108:1;14105;14101:9;14094:16;;14131:34;14126:3;14123:43;14120:69;;;14169:18;;:::i;:::-;14120:69;13972:224;;;;:::o;14202:225::-;14342:34;14338:1;14330:6;14326:14;14319:58;14411:8;14406:2;14398:6;14394:15;14387:33;14202:225;:::o;14433:366::-;14575:3;14596:67;14660:2;14655:3;14596:67;:::i;:::-;14589:74;;14672:93;14761:3;14672:93;:::i;:::-;14790:2;14785:3;14781:12;14774:19;;14433:366;;;:::o;14805:419::-;14971:4;15009:2;14998:9;14994:18;14986:26;;15058:9;15052:4;15048:20;15044:1;15033:9;15029:17;15022:47;15086:131;15212:4;15086:131;:::i;:::-;15078:139;;14805:419;;;:::o;15230:227::-;15370:34;15366:1;15358:6;15354:14;15347:58;15439:10;15434:2;15426:6;15422:15;15415:35;15230:227;:::o;15463:366::-;15605:3;15626:67;15690:2;15685:3;15626:67;:::i;:::-;15619:74;;15702:93;15791:3;15702:93;:::i;:::-;15820:2;15815:3;15811:12;15804:19;;15463:366;;;:::o;15835:419::-;16001:4;16039:2;16028:9;16024:18;16016:26;;16088:9;16082:4;16078:20;16074:1;16063:9;16059:17;16052:47;16116:131;16242:4;16116:131;:::i;:::-;16108:139;;15835:419;;;:::o;16260:191::-;16300:3;16319:20;16337:1;16319:20;:::i;:::-;16314:25;;16353:20;16371:1;16353:20;:::i;:::-;16348:25;;16396:1;16393;16389:9;16382:16;;16417:3;16414:1;16411:10;16408:36;;;16424:18;;:::i;:::-;16408:36;16260:191;;;;:::o;16457:172::-;16597:24;16593:1;16585:6;16581:14;16574:48;16457:172;:::o;16635:366::-;16777:3;16798:67;16862:2;16857:3;16798:67;:::i;:::-;16791:74;;16874:93;16963:3;16874:93;:::i;:::-;16992:2;16987:3;16983:12;16976:19;;16635:366;;;:::o;17007:419::-;17173:4;17211:2;17200:9;17196:18;17188:26;;17260:9;17254:4;17250:20;17246:1;17235:9;17231:17;17224:47;17288:131;17414:4;17288:131;:::i;:::-;17280:139;;17007:419;;;:::o;17432:170::-;17572:22;17568:1;17560:6;17556:14;17549:46;17432:170;:::o;17608:366::-;17750:3;17771:67;17835:2;17830:3;17771:67;:::i;:::-;17764:74;;17847:93;17936:3;17847:93;:::i;:::-;17965:2;17960:3;17956:12;17949:19;;17608:366;;;:::o;17980:419::-;18146:4;18184:2;18173:9;18169:18;18161:26;;18233:9;18227:4;18223:20;18219:1;18208:9;18204:17;18197:47;18261:131;18387:4;18261:131;:::i;:::-;18253:139;;17980:419;;;:::o;18405:182::-;18545:34;18541:1;18533:6;18529:14;18522:58;18405:182;:::o;18593:366::-;18735:3;18756:67;18820:2;18815:3;18756:67;:::i;:::-;18749:74;;18832:93;18921:3;18832:93;:::i;:::-;18950:2;18945:3;18941:12;18934:19;;18593:366;;;:::o;18965:419::-;19131:4;19169:2;19158:9;19154:18;19146:26;;19218:9;19212:4;19208:20;19204:1;19193:9;19189:17;19182:47;19246:131;19372:4;19246:131;:::i;:::-;19238:139;;18965:419;;;:::o;19390:180::-;19438:77;19435:1;19428:88;19535:4;19532:1;19525:15;19559:4;19556:1;19549:15;19576:180;19624:77;19621:1;19614:88;19721:4;19718:1;19711:15;19745:4;19742:1;19735:15;19762:143;19819:5;19850:6;19844:13;19835:22;;19866:33;19893:5;19866:33;:::i;:::-;19762:143;;;;:::o;19911:351::-;19981:6;20030:2;20018:9;20009:7;20005:23;20001:32;19998:119;;;20036:79;;:::i;:::-;19998:119;20156:1;20181:64;20237:7;20228:6;20217:9;20213:22;20181:64;:::i;:::-;20171:74;;20127:128;19911:351;;;;:::o;20268:85::-;20313:7;20342:5;20331:16;;20268:85;;;:::o;20359:158::-;20417:9;20450:61;20468:42;20477:32;20503:5;20477:32;:::i;:::-;20468:42;:::i;:::-;20450:61;:::i;:::-;20437:74;;20359:158;;;:::o;20523:147::-;20618:45;20657:5;20618:45;:::i;:::-;20613:3;20606:58;20523:147;;:::o;20676:114::-;20743:6;20777:5;20771:12;20761:22;;20676:114;;;:::o;20796:184::-;20895:11;20929:6;20924:3;20917:19;20969:4;20964:3;20960:14;20945:29;;20796:184;;;;:::o;20986:132::-;21053:4;21076:3;21068:11;;21106:4;21101:3;21097:14;21089:22;;20986:132;;;:::o;21124:108::-;21201:24;21219:5;21201:24;:::i;:::-;21196:3;21189:37;21124:108;;:::o;21238:179::-;21307:10;21328:46;21370:3;21362:6;21328:46;:::i;:::-;21406:4;21401:3;21397:14;21383:28;;21238:179;;;;:::o;21423:113::-;21493:4;21525;21520:3;21516:14;21508:22;;21423:113;;;:::o;21572:732::-;21691:3;21720:54;21768:5;21720:54;:::i;:::-;21790:86;21869:6;21864:3;21790:86;:::i;:::-;21783:93;;21900:56;21950:5;21900:56;:::i;:::-;21979:7;22010:1;21995:284;22020:6;22017:1;22014:13;21995:284;;;22096:6;22090:13;22123:63;22182:3;22167:13;22123:63;:::i;:::-;22116:70;;22209:60;22262:6;22209:60;:::i;:::-;22199:70;;22055:224;22042:1;22039;22035:9;22030:14;;21995:284;;;21999:14;22295:3;22288:10;;21696:608;;;21572:732;;;;:::o;22310:831::-;22573:4;22611:3;22600:9;22596:19;22588:27;;22625:71;22693:1;22682:9;22678:17;22669:6;22625:71;:::i;:::-;22706:80;22782:2;22771:9;22767:18;22758:6;22706:80;:::i;:::-;22833:9;22827:4;22823:20;22818:2;22807:9;22803:18;22796:48;22861:108;22964:4;22955:6;22861:108;:::i;:::-;22853:116;;22979:72;23047:2;23036:9;23032:18;23023:6;22979:72;:::i;:::-;23061:73;23129:3;23118:9;23114:19;23105:6;23061:73;:::i;:::-;22310:831;;;;;;;;:::o;23147:227::-;23187:4;23207:20;23225:1;23207:20;:::i;:::-;23202:25;;23241:20;23259:1;23241:20;:::i;:::-;23236:25;;23285:1;23282;23278:9;23270:17;;23309:34;23303:4;23300:44;23297:70;;;23347:18;;:::i;:::-;23297:70;23147:227;;;;:::o;23380:166::-;23520:18;23516:1;23508:6;23504:14;23497:42;23380:166;:::o;23552:366::-;23694:3;23715:67;23779:2;23774:3;23715:67;:::i;:::-;23708:74;;23791:93;23880:3;23791:93;:::i;:::-;23909:2;23904:3;23900:12;23893:19;;23552:366;;;:::o;23924:419::-;24090:4;24128:2;24117:9;24113:18;24105:26;;24177:9;24171:4;24167:20;24163:1;24152:9;24148:17;24141:47;24205:131;24331:4;24205:131;:::i;:::-;24197:139;;23924:419;;;:::o;24349:332::-;24470:4;24508:2;24497:9;24493:18;24485:26;;24521:71;24589:1;24578:9;24574:17;24565:6;24521:71;:::i;:::-;24602:72;24670:2;24659:9;24655:18;24646:6;24602:72;:::i;:::-;24349:332;;;;;:::o

Swarm Source

ipfs://d21b32cbe47bf666b53d86c0bcf7e1180a19acd4286ec6b16d6a1674be6287a0

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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