ETH Price: $2,488.20 (-0.88%)

Token

NML (NML)
 

Overview

Max Total Supply

1,000,000,000,000 NML

Holders

229

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 NML

Value
$0.00
0x50b85ca8343ab4d4f1e6f4d7ef211d23627de04d
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
NML

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-16
*/

pragma solidity ^0.8.17;
pragma experimental ABIEncoderV2;

// SPDX-License-Identifier:MIT

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

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

contract Ownable is Context {
    address payable private _owner;
    address payable private _previousOwner;
    uint256 private _lockTime;

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

    constructor() {
        _owner = payable(0xE8ad74b7d646F733c3d7E293D75a18Cd8499Da65);
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

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

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

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

interface IDEXRouter01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);
}

interface IDEXRouter02 is IDEXRouter01 {
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

// change contract name with token name
contract NML is Context, IERC20, Ownable {
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isBlacklisted;
    mapping(address => bool) private _antiBot;

    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcludeFromMaxWallet;
    mapping(address => bool) private _isExcluded;

    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1_000_000_000_000 ether; // 1 trillion total supply
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    // change this when changing token name
    string private _name = "NML"; // token name
    string private _symbol = "NML"; // token ticker
    uint8 private _decimals = 18; // token decimals

    IDEXRouter02 public DEXRouter;
    address public DEXPair;
    address payable public wheelWallet;
    address payable public creatorWallet;
    address payable public marketingWallet;
    address payable public developmentWallet;
    address public burnAddress = 0x000000000000000000000000000000000000dEaD;

    uint256 minTokenNumberToSell = 10000 ether; // 10000 max tx amount will trigger swap and add liquidity
    uint256 public maxFee = 150; // 15% max fees limit per transaction
    uint256 public maxWhaleFee = 490; // 49% max fees limit per transaction for whales
    uint256 public maxTxAmountBuy = (_tTotal * 1) / 100; // 1% max transaction amount for buy
    uint256 public maxTxAmountSell = (_tTotal * 1) / 100; // 1% max transaction amount for sell

    uint256 public burned = 0;
    uint256 public maxBurn = 0;
    uint256 public maxWallet;

    bool public swapAndLiquifyEnabled = false; // should be true to turn on to liquidate the pool
    bool public reflectionFeesdiabled = false; // should be false to charge fee
    bool inSwapAndLiquify = false;

    // buy tax fee
    uint256 public reflectionFeeOnBuying = 50; // 5% will be distributed among holder as token divideneds
    uint256 public liquidityFeeOnBuying = 50; // 5% will be added to the liquidity pool
    uint256 public wheelWalletFeeOnBuying = 30; // 3% will go to the wheelWallet address
    uint256 public creatorwalletFeeOnBuying = 10; // 1% will go to the creatorWallet address
    uint256 public autoburnFeeOnBuying = 10; // 10% will go to the earth burn wallet address

    // sell tax fee
    uint256 public reflectionFeeOnSelling = 50; // 5% will be distributed among holder as token divideneds
    uint256 public liquidityFeeOnSelling = 50; // 5% will be added to the liquidity pool
    uint256 public wheelWalletFeeOnSelling = 30; // 3% will go to the market address\
    uint256 public creatorwalletFeeOnSelling = 10; // 1% will go to the creatorWallet address
    uint256 public autoburnFeeOnSelling = 10; // 1% will go to the earth autoburn wallet address

    // whale tax fee
    uint256 public reflectionFeeOnWhale = 50; // 5% will be distributed among holder as token divideneds
    uint256 public liquidityFeeOnWhale = 150; // 15% will be added to the liquidity pool
    uint256 public wheelWalletFeeOnWhale = 200; // 20% will go to the wheelWallet address
    uint256 public creatorwalletFeeOnWhale = 10; // 1% will go to the creatorWallet address
    uint256 public autoburnFeeOnWhale = 10; // 1% will go to the earth autoburn wallet address

    // normal tax fee
    uint256 public reflectionFee = 0; // 0% will be distributed among holder as token divideneds
    uint256 public liquidityFee = 0; // 0% will be added to the liquidity pool
    uint256 public wheelWalletFee = 0; // 0% will go to the market address
    uint256 public creatorwalletFee = 0; // 0% will go to the creatorWallet address
    uint256 public autoburnFee = 0; // 0% will go to the earth autoburn wallet address

    // for smart contract use
    uint256 private _currentreflectionFee;
    uint256 private _currentLiquidityFee;
    uint256 private _currentwheelWalletFee;
    uint256 private _currentcreatorwalletFee;
    uint256 private _currentautoburnFee;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() {
        maxBurn = (730 days) * (1 ether);
        _rOwned[owner()] = _rTotal;
        maxWallet = _tTotal / 100;


        wheelWallet = payable(0xE0611f566d3a2658633C2475d5c5Bd8D0d1d74E7);
        creatorWallet = payable(0x4C2bdCC7c534B72cd9E461523f89a0CEe29A425e);
        marketingWallet = payable(0x0d92B793b5f006eb972888b67f9d71752CE3997d);
        developmentWallet = payable(0xe453a97dE724E80890F454DfbC3e327Cc4740B1f);


        IDEXRouter02 _DEXRouter = IDEXRouter02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D  // no change required
        ); //testnet and mainnet
        // Create a DEX pair for this new token
        DEXPair = IDEXFactory(_DEXRouter.factory()).createPair(
            address(this),
            _DEXRouter.WETH()
        );

        // set the rest of the contract variables
        DEXRouter = _DEXRouter;

        _isExcludeFromMaxWallet[owner()] = true;
        _isExcludeFromMaxWallet[address(this)] = true;
        _isExcludeFromMaxWallet[wheelWallet] = true;
        _isExcludeFromMaxWallet[creatorWallet] = true;
        _isExcludeFromMaxWallet[address(DEXRouter)] = true;
        _isExcludeFromMaxWallet[address(DEXPair)] = true;
        _isExcludeFromMaxWallet[address(0)] = true;
        _isExcludeFromMaxWallet[address(0xdead)] = true;
        _isExcludeFromMaxWallet[address(marketingWallet)] = true;
        _isExcludeFromMaxWallet[address(developmentWallet)] = true;



        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

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

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

    function decimals() external view returns (uint8) {
        return _decimals;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - (amount)
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + (addedValue)
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - (subtractedValue)
        );
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(
            !_isExcluded[sender],
            "Excluded addresses cannot call this function"
        );
        uint256 rAmount = tAmount * (_getRate());
        _rOwned[sender] = _rOwned[sender] - (rAmount);
        _rTotal = _rTotal - (rAmount);
        _tFeeTotal = _tFeeTotal + (tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            uint256 rAmount = tAmount * (_getRate());
            return rAmount;
        } else {
            uint256 rAmount = tAmount * (_getRate());
            uint256 rTransferAmount = rAmount -
                (totalFeePerTx(tAmount) * (_getRate()));
            return rTransferAmount;
        }
    }

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

    function excludeFromReward(address account) external onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _rOwned[account] = _tOwned[account] * (_getRate());
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function setCreatorWallet(address newadd) external onlyOwner {
        require(newadd != address(0), "cannot be 0");
        creatorWallet = payable(newadd);
    }
    
    function setWheelWallet(address newadd) external onlyOwner {
        require(newadd != address(0), "cannot be 0");
        wheelWallet = payable(newadd);
    }


    function blacklist(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isBlacklisted[accounts[i]] = true;
        }
    }

    function addBot(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _antiBot[accounts[i]] = true;
        }
    }

    function removeBot(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _antiBot[accounts[i]] = false;
        }
    }

    function removeBlacklist(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isBlacklisted[accounts[i]] = false;
        }
    }

    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setMinTokenNumberToSell(uint256 _amount) external onlyOwner {
        minTokenNumberToSell = _amount;
    }

    function setmaxTxAmountBuy(uint256 _amount) external onlyOwner {
        maxTxAmountBuy = _amount;
    }

    function setmaxTxAmountSell(uint256 _amount) external onlyOwner {
        maxTxAmountSell = _amount;
    }

    function setSwapAndLiquifyEnabled(bool _state) external onlyOwner {
        swapAndLiquifyEnabled = _state;
        emit SwapAndLiquifyEnabledUpdated(_state);
    }

    function setReflectionFees(bool _state) external onlyOwner {
        reflectionFeesdiabled = _state;
    }

    function setwheelWallet(address payable _wheelWallet) external onlyOwner {
        require(
            _wheelWallet != address(0),
            "Market wallet cannot be address zero"
        );
        wheelWallet = _wheelWallet;
    }

    function ExcludeMAXWallet(address payable _newWallet) external onlyOwner {
        _isExcludeFromMaxWallet[_newWallet] = true;
    }

    function includeMAXWallet(address payable _newWallet) external onlyOwner {
        _isExcludeFromMaxWallet[_newWallet] = false;
    }

    function setRoute(IDEXRouter02 _router, address _pair) external onlyOwner {
        require(
            address(_router) != address(0),
            "Router adress cannot be address zero"
        );
        require(_pair != address(0), "Pair adress cannot be address zero");
        DEXRouter = _router;
        DEXPair = _pair;
    }

    function withdrawETH(uint256 _amount) external onlyOwner {
        require(address(this).balance >= _amount, "Invalid Amount");
        payable(msg.sender).transfer(_amount);
    }

    function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner {
        require(_token.balanceOf(address(this)) >= _amount, "Invalid Amount");
        _token.transfer(msg.sender, _amount);
    }

    //to receive ETH from DEXRouter when swapping
    receive() external payable {}

    function totalFeePerTx(uint256 tAmount) internal view returns (uint256) {
        uint256 percentage = (tAmount *
            (_currentreflectionFee +
                (_currentLiquidityFee) +
                (_currentwheelWalletFee) +
                (_currentcreatorwalletFee) +
                (_currentautoburnFee))) / (1e3);

        return percentage;
    }

    function _reflectFee(uint256 tAmount) private {
        uint256 tFee = (tAmount * (_currentreflectionFee)) / (1e3);
        uint256 rFee = tFee * (_getRate());
        _rTotal = _rTotal - (rFee);
        _tFeeTotal = _tFeeTotal + (tFee);
    }

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply - (_rOwned[_excluded[i]]);
            tSupply = tSupply - (_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal / (_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidityPoolFee(uint256 tAmount, uint256 currentRate)
        internal
    {
        uint256 tPoolFee = (tAmount * (_currentLiquidityFee)) / (1e3);
        uint256 rPoolFee = tPoolFee * (currentRate);
        _rOwned[address(this)] = _rOwned[address(this)] + (rPoolFee);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)] + (tPoolFee);
        emit Transfer(_msgSender(), address(this), tPoolFee);
    }

    function _takeWheelFee(uint256 tAmount, uint256 currentRate) internal {
        uint256 tWheelFee = (tAmount * (_currentwheelWalletFee)) / (1e3);
        uint256 rWheelFee = tWheelFee * (currentRate);
        _rOwned[wheelWallet] = _rOwned[wheelWallet] + (rWheelFee);
        if (_isExcluded[wheelWallet])
            _tOwned[wheelWallet] = _tOwned[wheelWallet] + (tWheelFee);
        emit Transfer(_msgSender(), wheelWallet, tWheelFee);
    }

    function _takecreatorFee(uint256 tAmount, uint256 currentRate) internal {
        uint256 tcreatorFee = (tAmount * (_currentcreatorwalletFee)) / (1e3);
        uint256 rcreatorFee = tcreatorFee * (currentRate);
        _rOwned[creatorWallet] = _rOwned[creatorWallet] + (rcreatorFee);
        if (_isExcluded[creatorWallet])
            _tOwned[creatorWallet] = _tOwned[creatorWallet] + (tcreatorFee);
        emit Transfer(_msgSender(), creatorWallet, tcreatorFee);
    }

    function _takeBurnFee(uint256 tAmount, uint256 currentRate) internal {
        uint256 burnFee = (tAmount * (_currentautoburnFee)) / (1e3);
        uint256 rBurnFee = burnFee * (currentRate);
        _rOwned[burnAddress] = _rOwned[burnAddress] + (rBurnFee);
        if (_isExcluded[burnAddress]) {
            _tOwned[burnAddress] = _tOwned[burnAddress] + (burnFee);
        }
        burned = burned + burnFee;
        emit Transfer(_msgSender(), burnAddress, burnFee);
    }

    function Burn(uint256 tAmount) external onlyOwner {
        uint256 currentRate = _getRate();
        uint256 burnAmount = (tAmount);
        uint256 rBurnAmount = burnAmount * (currentRate);
        _rOwned[msg.sender] = _rOwned[msg.sender] - rBurnAmount;
        if (_isExcluded[msg.sender]) {
            _tOwned[msg.sender] = _tOwned[msg.sender] - (burnAmount);
        }
        _rOwned[burnAddress] = _rOwned[burnAddress] + (rBurnAmount);
        if (_isExcluded[burnAddress]) {
            _tOwned[burnAddress] = _tOwned[burnAddress] + (burnAmount);
        }
        burned = burned + tAmount;
        emit Transfer(_msgSender(), burnAddress, burnAmount);
    }

    function removeAllFee() private {
        _currentreflectionFee = 0;
        _currentLiquidityFee = 0;
        _currentwheelWalletFee = 0;
        _currentcreatorwalletFee = 0;
        _currentautoburnFee = 0;
    }

    function setBuyFee() private {
        _currentreflectionFee = reflectionFeeOnBuying;
        _currentLiquidityFee = liquidityFeeOnBuying;
        _currentwheelWalletFee = wheelWalletFeeOnBuying;
        _currentcreatorwalletFee = creatorwalletFeeOnBuying;
        _currentautoburnFee = autoburnFeeOnBuying;
    }

    function setSellFee() private {
        _currentreflectionFee = reflectionFeeOnSelling;
        _currentLiquidityFee = liquidityFeeOnSelling;
        _currentwheelWalletFee = wheelWalletFeeOnSelling;
        _currentcreatorwalletFee = creatorwalletFeeOnSelling;
        _currentautoburnFee = autoburnFeeOnSelling;
    }

    function setWhaleFee() private {
        _currentreflectionFee = reflectionFeeOnWhale;
        _currentLiquidityFee = liquidityFeeOnWhale;
        _currentwheelWalletFee = wheelWalletFeeOnWhale;
        _currentcreatorwalletFee = creatorwalletFeeOnWhale;
        _currentautoburnFee = autoburnFeeOnWhale;
    }

    function setNormalFee() private {
        _currentreflectionFee = reflectionFee;
        _currentLiquidityFee = liquidityFee;
        _currentwheelWalletFee = wheelWalletFee;
        _currentcreatorwalletFee = creatorwalletFee;
        _currentautoburnFee = autoburnFee;
    }

    //only owner can change BuyFeePercentages any time after deployment
    function setBuyFeePercent(
        uint256 _reflectionFee,
        uint256 _liquidityFee,
        uint256 _wheelWalletFee,
        uint256 _creatorwalletFee,
        uint256 _autoburnFee
    ) external onlyOwner {
        reflectionFeeOnBuying = _reflectionFee;
        liquidityFeeOnBuying = _liquidityFee;
        wheelWalletFeeOnBuying = _wheelWalletFee;
        creatorwalletFeeOnBuying = _creatorwalletFee;
        autoburnFeeOnBuying = _autoburnFee;
        require(
            reflectionFeeOnBuying +
                (liquidityFeeOnBuying) +
                (wheelWalletFeeOnBuying) +
                (creatorwalletFeeOnBuying) +
                (autoburnFeeOnBuying) <=
                maxFee,
            "ERC20: Can not be greater than max fee"
        );
    }

    //only owner can change SellFeePercentages any time after deployment
    function setSellFeePercent(
        uint256 _reflectionFee,
        uint256 _liquidityFee,
        uint256 _wheelWalletFee,
        uint256 _creatorwalletFee,
        uint256 _autoburnFee
    ) external onlyOwner {
        reflectionFeeOnSelling = _reflectionFee;
        liquidityFeeOnSelling = _liquidityFee;
        wheelWalletFeeOnSelling = _wheelWalletFee;
        creatorwalletFeeOnSelling = _creatorwalletFee;
        autoburnFeeOnSelling = _autoburnFee;
        require(
            reflectionFeeOnSelling +
                (liquidityFeeOnSelling) +
                (creatorwalletFeeOnSelling) +
                (wheelWalletFeeOnSelling) +
                (autoburnFeeOnSelling) <=
                maxFee,
            "ERC20: Can not be greater than max fee"
        );
    }

    function setWhaleFeePercent(
        uint256 _reflectionFee,
        uint256 _liquidityFee,
        uint256 _wheelWalletFee,
        uint256 _creatorwalletFee,
        uint256 _autoburnFee
    ) external onlyOwner {
        reflectionFeeOnWhale = _reflectionFee;
        liquidityFeeOnWhale = _liquidityFee;
        wheelWalletFeeOnWhale = _wheelWalletFee;
        creatorwalletFeeOnWhale = _creatorwalletFee;
        autoburnFeeOnWhale = _autoburnFee;
        require(
            reflectionFeeOnWhale +
                (liquidityFeeOnWhale) +
                (creatorwalletFeeOnWhale) +
                (wheelWalletFeeOnWhale) +
                (autoburnFeeOnWhale) <=
                maxWhaleFee,
            "ERC20: Can not be greater than max fee"
        );
    }

    //only owner can change NormalFeePercent any time after deployment
    function setNormalFeePercent(
        uint256 _reflectionFee,
        uint256 _liquidityFee,
        uint256 _wheelWalletFee,
        uint256 _creatorwalletFee,
        uint256 _autoburnFee
    ) external onlyOwner {
        reflectionFee = _reflectionFee;
        liquidityFee = _liquidityFee;
        wheelWalletFee = _wheelWalletFee;
        creatorwalletFee = _creatorwalletFee;
        autoburnFee = _autoburnFee;
        require(
            reflectionFee +
                (liquidityFee) +
                (wheelWalletFee) +
                (creatorwalletFee) +
                (autoburnFee) <=
                maxFee,
            "ERC20: Can not be greater than max fee"
        );
    }

    function setMaxBurn(uint256 Amount) external onlyOwner {
        maxBurn = Amount;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function isBlacklisted(address account) public view returns (bool) {
        return _isBlacklisted[account];
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "ERC20: Transfer amount must be greater than zero");
        require(!_isBlacklisted[from], "ERC20: Sender is blacklisted");
        require(!_isBlacklisted[to], "ERC20: Recipient is blacklisted");

        // swap and liquify
        swapAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if (
            _isExcludedFromFee[from] ||
            _isExcludedFromFee[to] ||
            reflectionFeesdiabled
        ) {
            takeFee = false;
        }
        if (!takeFee) {
            removeAllFee();
        }
        // buying handler
        else if (from == DEXPair) {
            if (amount > maxTxAmountBuy) {
                setWhaleFee();
            } else {
                setBuyFee();
            }
        }
        // selling handler
        else if (to == DEXPair) {
            //anti Dump
            if (_antiBot[from]) {
                setWhaleFee();
            } else {
                if (amount > maxTxAmountSell) {
                    setWhaleFee();
                } else {
                    setSellFee();
                }
            }
        }
        // normal transaction handler
        else {
            setNormalFee();
        }

        if (burned >= maxBurn) {
            _currentautoburnFee = 0;
        }
        //transfer amount, it will take tax
        if (!_isExcludeFromMaxWallet[to]) {
            require(
                balanceOf(to) + amount <= maxWallet,
                "Max Wallet limit reached"
            );
        }
        _tokenTransfer(from, to, amount);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount - (totalFeePerTx(tAmount));
        uint256 rAmount = tAmount * (currentRate);
        uint256 rTransferAmount = rAmount -
            (totalFeePerTx(tAmount) * (currentRate));
        _rOwned[sender] = _rOwned[sender] - (rAmount);
        _rOwned[recipient] = _rOwned[recipient] + (rTransferAmount);
        if (_currentLiquidityFee > 0) {
            _takeLiquidityPoolFee(tAmount, currentRate);
        }
        if (_currentreflectionFee > 0) {
            _reflectFee(tAmount);
        }
        if (_currentwheelWalletFee > 0) {
            _takeWheelFee(tAmount, currentRate);
        }

        if (_currentcreatorwalletFee > 0) {
            _takecreatorFee(tAmount, currentRate);
        }
        if (_currentautoburnFee > 0) {
            _takeBurnFee(tAmount, currentRate);
        }

        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount - (totalFeePerTx(tAmount));
        uint256 rAmount = tAmount * (currentRate);
        uint256 rTransferAmount = rAmount -
            (totalFeePerTx(tAmount) * (currentRate));
        _rOwned[sender] = _rOwned[sender] - (rAmount);
        _tOwned[recipient] = _tOwned[recipient] + (tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient] + (rTransferAmount);
        if (_currentLiquidityFee > 0) {
            _takeLiquidityPoolFee(tAmount, currentRate);
        }
        if (_currentwheelWalletFee > 0) {
            _takeWheelFee(tAmount, currentRate);
        }
        if (_currentcreatorwalletFee > 0) {
            _takecreatorFee(tAmount, currentRate);
        }
        if (_currentreflectionFee > 0) {
            _reflectFee(tAmount);
        }
        if (_currentautoburnFee > 0) {
            _takeBurnFee(tAmount, currentRate);
        }
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount - (totalFeePerTx(tAmount));
        uint256 rAmount = tAmount * (currentRate);
        uint256 rTransferAmount = rAmount -
            (totalFeePerTx(tAmount) * (currentRate));
        _tOwned[sender] = _tOwned[sender] - (tAmount);
        _rOwned[sender] = _rOwned[sender] - (rAmount);
        _rOwned[recipient] = _rOwned[recipient] + (rTransferAmount);
        if (_currentLiquidityFee > 0) {
            _takeLiquidityPoolFee(tAmount, currentRate);
        }
        if (_currentwheelWalletFee > 0) {
            _takeWheelFee(tAmount, currentRate);
        }
        if (_currentcreatorwalletFee > 0) {
            _takecreatorFee(tAmount, currentRate);
        }
        if (_currentreflectionFee > 0) {
            _reflectFee(tAmount);
        }
        if (_currentautoburnFee > 0) {
            _takeBurnFee(tAmount, currentRate);
        }
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount - (totalFeePerTx(tAmount));
        uint256 rAmount = tAmount * (currentRate);
        uint256 rTransferAmount = rAmount -
            (totalFeePerTx(tAmount) * (currentRate));
        _tOwned[sender] = _tOwned[sender] - (tAmount);
        _rOwned[sender] = _rOwned[sender] - (rAmount);
        _tOwned[recipient] = _tOwned[recipient] + (tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient] + (rTransferAmount);
        if (_currentLiquidityFee > 0) {
            _takeLiquidityPoolFee(tAmount, currentRate);
        }
        if (_currentwheelWalletFee > 0) {
            _takeWheelFee(tAmount, currentRate);
        }
        if (_currentcreatorwalletFee > 0) {
            _takecreatorFee(tAmount, currentRate);
        }
        if (_currentreflectionFee > 0) {
            _reflectFee(tAmount);
        }
        if (_currentautoburnFee > 0) {
            _takeBurnFee(tAmount, currentRate);
        }
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function swapAndLiquify(address from, address to) private {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is DEX pair.
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenNumberToSell;

        if (
            !inSwapAndLiquify &&
            shouldSell &&
            from != DEXPair &&
            swapAndLiquifyEnabled &&
            !(from == address(this) && to == address(DEXPair)) // swap 1 time
        ) {
            // only sell for minTokenNumberToSell, decouple from _maxTxAmount
            // split the contract balance into 4 pieces

            contractTokenBalance = minTokenNumberToSell;
            // approve contract
            _approve(address(this), address(DEXRouter), contractTokenBalance);

            // add liquidity
            // split the contract balance into 2 pieces

            uint256 otherPiece = contractTokenBalance / (2);
            uint256 tokenAmountToBeSwapped = contractTokenBalance -
                (otherPiece);

            uint256 initialBalance = address(this).balance;

            // now is to lock into staking pool
            Utils.swapTokensForEth(address(DEXRouter), tokenAmountToBeSwapped);

            // how much ETH did we just swap into?

            // capture the contract's current ETH balance.
            // this is so that we can capture exactly the amount of ETH that the
            // swap creates, and not make the liquidity event include any ETH that
            // has been manually sent to the contract

            uint256 ETHToBeAddedToLiquidity = address(this).balance -
                (initialBalance);

            // add liquidity to DEX
            Utils.addLiquidity(
                address(DEXRouter),
                owner(),
                otherPiece,
                ETHToBeAddedToLiquidity
            );

            emit SwapAndLiquify(
                tokenAmountToBeSwapped,
                ETHToBeAddedToLiquidity,
                otherPiece
            );
        }
    }
}

library Utils {
    function swapTokensForEth(address routerAddress, uint256 tokenAmount)
        internal
    {
        IDEXRouter02 DEXRouter = IDEXRouter02(routerAddress);

        // generate the DEX pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = DEXRouter.WETH();

        // make the swap
        DEXRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp + 300
        );
    }

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IDEXRouter02 DEXRouter = IDEXRouter02(routerAddress);

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"Burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEXPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEXRouter","outputs":[{"internalType":"contract IDEXRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newWallet","type":"address"}],"name":"ExcludeMAXWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoburnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoburnFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoburnFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoburnFeeOnWhale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorwalletFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorwalletFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorwalletFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorwalletFeeOnWhale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newWallet","type":"address"}],"name":"includeMAXWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnWhale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWhaleFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeOnWhale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeesdiabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_wheelWalletFee","type":"uint256"},{"internalType":"uint256","name":"_creatorwalletFee","type":"uint256"},{"internalType":"uint256","name":"_autoburnFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newadd","type":"address"}],"name":"setCreatorWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"setMaxBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenNumberToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_wheelWalletFee","type":"uint256"},{"internalType":"uint256","name":"_creatorwalletFee","type":"uint256"},{"internalType":"uint256","name":"_autoburnFee","type":"uint256"}],"name":"setNormalFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setReflectionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IDEXRouter02","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"setRoute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_wheelWalletFee","type":"uint256"},{"internalType":"uint256","name":"_creatorwalletFee","type":"uint256"},{"internalType":"uint256","name":"_autoburnFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_wheelWalletFee","type":"uint256"},{"internalType":"uint256","name":"_creatorwalletFee","type":"uint256"},{"internalType":"uint256","name":"_autoburnFee","type":"uint256"}],"name":"setWhaleFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newadd","type":"address"}],"name":"setWheelWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setmaxTxAmountBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setmaxTxAmountSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_wheelWallet","type":"address"}],"name":"setwheelWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","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 payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wheelWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wheelWalletFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wheelWalletFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wheelWalletFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wheelWalletFeeOnWhale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526c0c9f2c9cd04674edea40000000600c8190556200002590600019620005e6565b620000339060001962000613565b600d5560408051808201909152600381526213935360ea1b6020820152600f906200005f9082620006d4565b5060408051808201909152600381526213935360ea1b6020820152601090620000899082620006d4565b506011805460ff19166012179055601780546001600160a01b03191661dead17905569021e19e0c9bab240000060185560966019556101ea601a55600c54606490620000d7906001620007a0565b620000e39190620007ba565b601b556064600c546001620000f99190620007a0565b620001059190620007ba565b601c556000601d819055601e8181556020805462ffffff191690556032602181905560228190556023829055600a60248190556025819055602682905560278290556028929092556029829055602a829055602b8190556096602c5560c8602d55602e829055602f919091556030829055603182905581905560338190556034553480156200019357600080fd5b50600080546001600160a01b03191673e8ad74b7d646f733c3d7e293d75a18cd8499da6590811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36a342c03f89d4e213c000000601e55600d5460036000620002106000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055600c546200023b90606490620007ba565b601f55601380546001600160a01b031990811673e0611f566d3a2658633c2475d5c5bd8d0d1d74e717909155601480548216734c2bdcc7c534b72cd9e461523f89a0cee29a425e179055601580548216730d92b793b5f006eb972888b67f9d71752ce3997d1790556016805490911673e453a97de724e80890f454dfbc3e327cc4740b1f1790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa15801562000316573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033c9190620007d1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b09190620007d1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004249190620007d1565b601280546001600160a01b0319166001600160a01b0392831617815560118054610100600160a81b03191661010085851681029190911782556000805485168152600960209081526040808320805460ff1990811660019081179092553080865283862080548316841790556013548a16865283862080548316841790556014548a168652838620805483168417905596549590950488168452818420805486168217905595548716835280832080548516871790557fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b80548516871790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb193075003785805485168717905560155487168352808320805485168717905560165487168352808320805485168717905582548716835260089091528082208054841686179055928152918220805490911690921790915554166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620005c191815260200190565b60405180910390a35062000803565b634e487b7160e01b600052601260045260246000fd5b600082620005f857620005f8620005d0565b500690565b634e487b7160e01b600052601160045260246000fd5b81810381811115620006295762000629620005fd565b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200065a57607f821691505b6020821081036200067b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006cf57600081815260208120601f850160051c81016020861015620006aa5750805b601f850160051c820191505b81811015620006cb57828155600101620006b6565b5050505b505050565b81516001600160401b03811115620006f057620006f06200062f565b620007088162000701845462000645565b8462000681565b602080601f831160018114620007405760008415620007275750858301515b600019600386901b1c1916600185901b178555620006cb565b600085815260208120601f198616915b82811015620007715788860151825594840194600190910190840162000750565b5085821015620007905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082028115828204841417620006295762000629620005fd565b600082620007cc57620007cc620005d0565b500490565b600060208284031215620007e457600080fd5b81516001600160a01b0381168114620007fc57600080fd5b9392505050565b613d5980620008136000396000f3fe6080604052600436106104a25760003560e01c80636c473ee711610260578063a9e36f3611610144578063dd62ed3e116100c1578063f14210a611610085578063f14210a614610dd4578063f2fde38b14610df4578063f783d4d414610e14578063f8b45b0514610e34578063fc6f4cbb14610e4a578063fe575a8714610e6957600080fd5b8063dd62ed3e14610d2c578063e1d2aa4614610d72578063e316c3eb14610d88578063e6c84dc614610d9e578063ea2f0b3714610db457600080fd5b8063c49b9a8011610108578063c49b9a8014610caa578063cd78e45c14610cca578063d44e586e14610cea578063d6c180bf14610d00578063dd07382914610d1657600080fd5b8063a9e36f3614610c14578063aa5bb5c714610c2a578063b90306ad14610c4a578063bddf96a614610c6a578063c04a541414610c8a57600080fd5b806383ad7994116101dd57806396e1e7aa116101a157806396e1e7aa14610b6857806398118cb414610b7e5780639e281a9814610b94578063a390618b14610bb4578063a457c2d714610bd4578063a9059cbb14610bf457600080fd5b806383ad799414610ad057806388f8202014610ae65780638da5cb5b14610b1f578063902cd93014610b3d57806395d89b4114610b5357600080fd5b806375f0a8741161022457806375f0a87414610a3a5780637702873514610a5a5780637911ef9d14610a7a5780637bfd375714610a9a5780637cdc65f214610ab057600080fd5b80636c473ee7146109af57806370a08231146109cf57806370d5ae05146109ef578063715018a614610a0f57806373f4256114610a2457600080fd5b80633211a83d116103875780634549b039116103045780635342acb4116102c85780635342acb4146108e057806359c615cd146109195780635e97f0cf1461093957806365d60e561461094f5780636c04b1511461096f5780636c33983a1461098f57600080fd5b80634549b039146108465780634940730b146108665780634a74bb02146108865780634bcc2616146108a057806352390c02146108c057600080fd5b8063395093511161034b57806339509351146107b05780633bd5d173146107d057806342fe1be1146107f0578063437823ec14610806578063438fb3951461082657600080fd5b80633211a83d146107295780633326d7f21461074e57806335fae9e2146107645780633685d4191461077a578063377cbe4a1461079a57600080fd5b806311ff1b8b116104205780631a95b47d116103e45780631a95b47d1461067b57806320ea5c4b1461069157806321bbcbb1146106a757806323b872dd146106c75780632d838119146106e7578063313ce5671461070757600080fd5b806311ff1b8b146105e357806313114a9d146105f95780631646b1fb1461060e578063179795dd1461064657806318160ddd1461066657600080fd5b806306fdde031161046757806306fdde0314610545578063095ea7b3146105675780630a74430a1461059757806310f355a4146105ad57806311e887ac146105cd57600080fd5b8062281dc1146104ae57806301f59d16146104d7578063041a64d1146104ed578063041f173f146105035780630505e94d1461052557600080fd5b366104a957005b600080fd5b3480156104ba57600080fd5b506104c460265481565b6040519081526020015b60405180910390f35b3480156104e357600080fd5b506104c460195481565b3480156104f957600080fd5b506104c460345481565b34801561050f57600080fd5b5061052361051e36600461388e565b610ea2565b005b34801561053157600080fd5b50610523610540366004613953565b610f41565b34801561055157600080fd5b5061055a611066565b6040516104ce919061398c565b34801561057357600080fd5b506105876105823660046139da565b6110f8565b60405190151581526020016104ce565b3480156105a357600080fd5b506104c460295481565b3480156105b957600080fd5b506105236105c8366004613a06565b61110f565b3480156105d957600080fd5b506104c460235481565b3480156105ef57600080fd5b506104c4602c5481565b34801561060557600080fd5b50600e546104c4565b34801561061a57600080fd5b5060135461062e906001600160a01b031681565b6040516001600160a01b0390911681526020016104ce565b34801561065257600080fd5b5060125461062e906001600160a01b031681565b34801561067257600080fd5b50600c546104c4565b34801561068757600080fd5b506104c460255481565b34801561069d57600080fd5b506104c4602f5481565b3480156106b357600080fd5b506105236106c236600461388e565b61113e565b3480156106d357600080fd5b506105876106e2366004613a1f565b6111d0565b3480156106f357600080fd5b506104c4610702366004613a06565b611222565b34801561071357600080fd5b5060115460405160ff90911681526020016104ce565b34801561073557600080fd5b5060115461062e9061010090046001600160a01b031681565b34801561075a57600080fd5b506104c460225481565b34801561077057600080fd5b506104c460325481565b34801561078657600080fd5b50610523610795366004613a60565b6112a6565b3480156107a657600080fd5b506104c460335481565b3480156107bc57600080fd5b506105876107cb3660046139da565b6114a0565b3480156107dc57600080fd5b506105236107eb366004613a06565b6114d7565b3480156107fc57600080fd5b506104c460245481565b34801561081257600080fd5b50610523610821366004613a60565b6115c7565b34801561083257600080fd5b50610523610841366004613a7d565b611615565b34801561085257600080fd5b506104c4610861366004613ac6565b6116ea565b34801561087257600080fd5b50610523610881366004613a60565b6117a7565b34801561089257600080fd5b506020546105879060ff1681565b3480156108ac57600080fd5b506105236108bb366004613a06565b611837565b3480156108cc57600080fd5b506105236108db366004613a60565b611866565b3480156108ec57600080fd5b506105876108fb366004613a60565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561092557600080fd5b5061052361093436600461388e565b6119b9565b34801561094557600080fd5b506104c4602b5481565b34801561095b57600080fd5b5061052361096a366004613aeb565b611a4b565b34801561097b57600080fd5b5061052361098a366004613a7d565b611a8f565b34801561099b57600080fd5b506105236109aa366004613a60565b611ae2565b3480156109bb57600080fd5b506105236109ca366004613a60565b611b2d565b3480156109db57600080fd5b506104c46109ea366004613a60565b611bdb565b3480156109fb57600080fd5b5060175461062e906001600160a01b031681565b348015610a1b57600080fd5b50610523611c3a565b348015610a3057600080fd5b506104c4601d5481565b348015610a4657600080fd5b5060155461062e906001600160a01b031681565b348015610a6657600080fd5b50610523610a75366004613a7d565b611cae565b348015610a8657600080fd5b50610523610a9536600461388e565b611d01565b348015610aa657600080fd5b506104c4602e5481565b348015610abc57600080fd5b5060145461062e906001600160a01b031681565b348015610adc57600080fd5b506104c460305481565b348015610af257600080fd5b50610587610b01366004613a60565b6001600160a01b03166000908152600a602052604090205460ff1690565b348015610b2b57600080fd5b506000546001600160a01b031661062e565b348015610b4957600080fd5b506104c4602a5481565b348015610b5f57600080fd5b5061055a611d93565b348015610b7457600080fd5b506104c4601a5481565b348015610b8a57600080fd5b506104c460315481565b348015610ba057600080fd5b50610523610baf3660046139da565b611da2565b348015610bc057600080fd5b50610523610bcf366004613a06565b611eeb565b348015610be057600080fd5b50610587610bef3660046139da565b611f1a565b348015610c0057600080fd5b50610587610c0f3660046139da565b611f51565b348015610c2057600080fd5b506104c4602d5481565b348015610c3657600080fd5b50610523610c45366004613a06565b611f5e565b348015610c5657600080fd5b50610523610c65366004613a06565b611f8d565b348015610c7657600080fd5b50610523610c85366004613a60565b612147565b348015610c9657600080fd5b5060165461062e906001600160a01b031681565b348015610cb657600080fd5b50610523610cc5366004613aeb565b6121b5565b348015610cd657600080fd5b50610523610ce5366004613a60565b612223565b348015610cf657600080fd5b506104c4601c5481565b348015610d0c57600080fd5b506104c4601b5481565b348015610d2257600080fd5b506104c460215481565b348015610d3857600080fd5b506104c4610d47366004613953565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610d7e57600080fd5b506104c460285481565b348015610d9457600080fd5b506104c4601e5481565b348015610daa57600080fd5b506104c460275481565b348015610dc057600080fd5b50610523610dcf366004613a60565b612271565b348015610de057600080fd5b50610523610def366004613a06565b6122bc565b348015610e0057600080fd5b50610523610e0f366004613a60565b612354565b348015610e2057600080fd5b50610523610e2f366004613a7d565b61243e565b348015610e4057600080fd5b506104c4601f5481565b348015610e5657600080fd5b5060205461058790610100900460ff1681565b348015610e7557600080fd5b50610587610e84366004613a60565b6001600160a01b031660009081526006602052604090205460ff1690565b6000546001600160a01b03163314610ed55760405162461bcd60e51b8152600401610ecc90613b08565b60405180910390fd5b60005b8151811015610f3d57600160066000848481518110610ef957610ef9613b3d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f3581613b69565b915050610ed8565b5050565b6000546001600160a01b03163314610f6b5760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b038216610fcd5760405162461bcd60e51b8152602060048201526024808201527f526f75746572206164726573732063616e6e6f742062652061646472657373206044820152637a65726f60e01b6064820152608401610ecc565b6001600160a01b03811661102e5760405162461bcd60e51b815260206004820152602260248201527f50616972206164726573732063616e6e6f742062652061646472657373207a65604482015261726f60f01b6064820152608401610ecc565b60118054610100600160a81b0319166101006001600160a01b0394851602179055601280546001600160a01b03191691909216179055565b6060600f805461107590613b82565b80601f01602080910402602001604051908101604052809291908181526020018280546110a190613b82565b80156110ee5780601f106110c3576101008083540402835291602001916110ee565b820191906000526020600020905b8154815290600101906020018083116110d157829003601f168201915b5050505050905090565b6000611105338484612491565b5060015b92915050565b6000546001600160a01b031633146111395760405162461bcd60e51b8152600401610ecc90613b08565b601c55565b6000546001600160a01b031633146111685760405162461bcd60e51b8152600401610ecc90613b08565b60005b8151811015610f3d5760016007600084848151811061118c5761118c613b3d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111c881613b69565b91505061116b565b60006111dd8484846125b5565b6001600160a01b038416600090815260056020908152604080832033808552925290912054611218918691611213908690613bbc565b612491565b5060019392505050565b6000600d548211156112895760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ecc565b6000611293612a1f565b905061129f8184613bcf565b9392505050565b6000546001600160a01b031633146112d05760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b0381166000908152600a602052604090205460ff166113385760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ecc565b60005b600b54811015610f3d57816001600160a01b0316600b828154811061136257611362613b3d565b6000918252602090912001546001600160a01b03160361148e57600b805461138c90600190613bbc565b8154811061139c5761139c613b3d565b600091825260209091200154600b80546001600160a01b0390921691839081106113c8576113c8613b3d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506113fe612a1f565b6001600160a01b0383166000908152600460205260409020546114219190613bf1565b6001600160a01b03831660009081526003602090815260408083209390935560048152828220829055600a905220805460ff19169055600b80548061146857611468613c08565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061149881613b69565b91505061133b565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091611105918590611213908690613c1e565b336000818152600a602052604090205460ff161561154c5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610ecc565b6000611556612a1f565b6115609084613bf1565b6001600160a01b038316600090815260036020526040902054909150611587908290613bbc565b6001600160a01b038316600090815260036020526040902055600d546115ae908290613bbc565b600d55600e546115bf908490613c1e565b600e55505050565b6000546001600160a01b031633146115f15760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b0316331461163f5760405162461bcd60e51b8152600401610ecc90613b08565b60308590556031849055603283905560338290556034819055601954818385611668888a613c1e565b6116729190613c1e565b61167c9190613c1e565b6116869190613c1e565b11156116e35760405162461bcd60e51b815260206004820152602660248201527f45524332303a2043616e206e6f742062652067726561746572207468616e206d60448201526561782066656560d01b6064820152608401610ecc565b5050505050565b6000600c5483111561173e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ecc565b8161176057600061174d612a1f565b6117579085613bf1565b91506111099050565b600061176a612a1f565b6117749085613bf1565b90506000611780612a1f565b61178986612a42565b6117939190613bf1565b61179d9083613bbc565b9250611109915050565b6000546001600160a01b031633146117d15760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b0381166118155760405162461bcd60e51b815260206004820152600b60248201526a063616e6e6f7420626520360ac1b6044820152606401610ecc565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118615760405162461bcd60e51b8152600401610ecc90613b08565b601855565b6000546001600160a01b031633146118905760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b0381166000908152600a602052604090205460ff16156118f95760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ecc565b6001600160a01b03811660009081526003602052604090205415611953576001600160a01b03811660009081526003602052604090205461193990611222565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146119e35760405162461bcd60e51b8152600401610ecc90613b08565b60005b8151811015610f3d57600060076000848481518110611a0757611a07613b3d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611a4381613b69565b9150506119e6565b6000546001600160a01b03163314611a755760405162461bcd60e51b8152600401610ecc90613b08565b602080549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314611ab95760405162461bcd60e51b8152600401610ecc90613b08565b602b859055602c849055602d839055602e829055602f819055601a54818484611668888a613c1e565b6000546001600160a01b03163314611b0c5760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314611b575760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b038116611bb95760405162461bcd60e51b8152602060048201526024808201527f4d61726b65742077616c6c65742063616e6e6f742062652061646472657373206044820152637a65726f60e01b6064820152608401610ecc565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600a602052604081205460ff1615611c1857506001600160a01b031660009081526004602052604090205490565b6001600160a01b03821660009081526003602052604090205461110990611222565b6000546001600160a01b03163314611c645760405162461bcd60e51b8152600401610ecc90613b08565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611cd85760405162461bcd60e51b8152600401610ecc90613b08565b6026859055602784905560288390556029829055602a819055601954818484611668888a613c1e565b6000546001600160a01b03163314611d2b5760405162461bcd60e51b8152600401610ecc90613b08565b60005b8151811015610f3d57600060066000848481518110611d4f57611d4f613b3d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611d8b81613b69565b915050611d2e565b60606010805461107590613b82565b6000546001600160a01b03163314611dcc5760405162461bcd60e51b8152600401610ecc90613b08565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e369190613c31565b1015611e755760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b6044820152606401610ecc565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee69190613c4a565b505050565b6000546001600160a01b03163314611f155760405162461bcd60e51b8152600401610ecc90613b08565b601e55565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091611105918590611213908690613bbc565b60006111053384846125b5565b6000546001600160a01b03163314611f885760405162461bcd60e51b8152600401610ecc90613b08565b601b55565b6000546001600160a01b03163314611fb75760405162461bcd60e51b8152600401610ecc90613b08565b6000611fc1612a1f565b9050816000611fd08383613bf1565b33600090815260036020526040902054909150611fee908290613bbc565b33600090815260036020908152604080832093909355600a9052205460ff161561203e573360009081526004602052604090205461202d908390613bbc565b336000908152600460205260409020555b6017546001600160a01b0316600090815260036020526040902054612064908290613c1e565b601780546001600160a01b0390811660009081526003602090815260408083209590955592549091168152600a909152205460ff16156120e0576017546001600160a01b03166000908152600460205260409020546120c4908390613c1e565b6017546001600160a01b03166000908152600460205260409020555b83601d546120ee9190613c1e565b601d556017546001600160a01b0316335b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161213991815260200190565b60405180910390a350505050565b6000546001600160a01b031633146121715760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b038116611bb95760405162461bcd60e51b815260206004820152600b60248201526a063616e6e6f7420626520360ac1b6044820152606401610ecc565b6000546001600160a01b031633146121df5760405162461bcd60e51b8152600401610ecc90613b08565b6020805460ff191682151590811782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a150565b6000546001600160a01b0316331461224d5760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000546001600160a01b0316331461229b5760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146122e65760405162461bcd60e51b8152600401610ecc90613b08565b804710156123275760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b6044820152606401610ecc565b604051339082156108fc029083906000818181858888f19350505050158015610f3d573d6000803e3d6000fd5b6000546001600160a01b0316331461237e5760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b0381166123e35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ecc565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146124685760405162461bcd60e51b8152600401610ecc90613b08565b60218590556022849055602383905560248290556025819055601954818385611668888a613c1e565b6001600160a01b0383166124f35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ecc565b6001600160a01b0382166125545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ecc565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166126195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ecc565b6001600160a01b03821661267b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ecc565b600081116126e45760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610ecc565b6001600160a01b03831660009081526006602052604090205460ff161561274d5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a2053656e64657220697320626c61636b6c6973746564000000006044820152606401610ecc565b6001600160a01b03821660009081526006602052604090205460ff16156127b65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a20526563697069656e7420697320626c61636b6c6973746564006044820152606401610ecc565b6127c08383612a93565b6001600160a01b03831660009081526008602052604090205460019060ff168061280257506001600160a01b03831660009081526008602052604090205460ff165b806128145750602054610100900460ff165b1561281d575060005b806128455761284060006035819055603681905560378190556038819055603955565b612978565b6012546001600160a01b03908116908516036128ab57601b5482111561288857612840602b54603555602c54603655602d54603755602e54603855602f54603955565b612840602154603555602254603655602354603755602454603855602554603955565b6012546001600160a01b0390811690841603612955576001600160a01b03841660009081526007602052604090205460ff161561290557612840602b54603555602c54603655602d54603755602e54603855602f54603955565b601c5482111561293257612840602b54603555602c54603655602d54603755602e54603855602f54603955565b612840602654603555602754603655602854603755602954603855602a54603955565b612978603054603555603154603655603254603755603354603855603454603955565b601e54601d54106129895760006039555b6001600160a01b03831660009081526009602052604090205460ff16612a0e57601f54826129b685611bdb565b6129c09190613c1e565b1115612a0e5760405162461bcd60e51b815260206004820152601860248201527f4d61782057616c6c6574206c696d6974207265616368656400000000000000006044820152606401610ecc565b612a19848484612c02565b50505050565b6000806000612a2c612cff565b9092509050612a3b8183613bcf565b9250505090565b6000806103e8603954603854603754603654603554612a619190613c1e565b612a6b9190613c1e565b612a759190613c1e565b612a7f9190613c1e565b612a899085613bf1565b61129f9190613bcf565b6000612a9e30611bdb565b6018546020549192508210159062010000900460ff16158015612abe5750805b8015612ad857506012546001600160a01b03858116911614155b8015612ae6575060205460ff165b8015612b1457506001600160a01b03841630148015612b1257506012546001600160a01b038481169116145b155b15612a19576018549150612b3e30601160019054906101000a90046001600160a01b031684612491565b6000612b4b600284613bcf565b90506000612b598285613bbc565b6011549091504790612b799061010090046001600160a01b031683612e82565b6000612b858247613bbc565b601154909150612bb7906001600160a01b0361010090910416612bb06000546001600160a01b031690565b8684612fd6565b60408051848152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050505050565b6001600160a01b0383166000908152600a602052604090205460ff168015612c4357506001600160a01b0382166000908152600a602052604090205460ff16155b15612c5357611ee683838361308b565b6001600160a01b0383166000908152600a602052604090205460ff16158015612c9457506001600160a01b0382166000908152600a602052604090205460ff165b15612ca457611ee683838361322b565b6001600160a01b0383166000908152600a602052604090205460ff168015612ce457506001600160a01b0382166000908152600a602052604090205460ff165b15612cf457611ee683838361330a565b611ee68383836133b2565b600d54600c546000918291825b600b54811015612e51578260036000600b8481548110612d2e57612d2e613b3d565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612d9957508160046000600b8481548110612d7257612d72613b3d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612daf57600d54600c54945094505050509091565b60036000600b8381548110612dc657612dc6613b3d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612df59084613bbc565b925060046000600b8381548110612e0e57612e0e613b3d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612e3d9083613bbc565b915080612e4981613b69565b915050612d0c565b50600c54600d54612e629190613bcf565b821015612e7957600d54600c549350935050509091565b90939092509050565b604080516002808252606082018352849260009291906020830190803683370190505090503081600081518110612ebb57612ebb613b3d565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3d9190613c67565b81600181518110612f5057612f50613b3d565b6001600160a01b039283166020918202929092010152821663791ac9478460008430612f7e4261012c613c1e565b6040518663ffffffff1660e01b8152600401612f9e959493929190613c84565b600060405180830381600087803b158015612fb857600080fd5b505af1158015612fcc573d6000803e3d6000fd5b5050505050505050565b836001600160a01b03811663f305d7198330866000808a612ff94261012c613c1e565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015613066573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fcc9190613cf5565b6000613095612a1f565b905060006130a283612a42565b6130ac9084613bbc565b905060006130ba8385613bf1565b90506000836130c886612a42565b6130d29190613bf1565b6130dc9083613bbc565b6001600160a01b038816600090815260046020526040902054909150613103908690613bbc565b6001600160a01b038816600090815260046020908152604080832093909355600390522054613133908390613bbc565b6001600160a01b038089166000908152600360205260408082209390935590881681522054613163908290613c1e565b6001600160a01b0387166000908152600360205260409020556036541561318e5761318e85856134ba565b603754156131a0576131a0858561355a565b603854156131b2576131b2858561363c565b603554156131c3576131c38561371e565b603954156131d5576131d58585613772565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161321a91815260200190565b60405180910390a350505050505050565b6000613235612a1f565b9050600061324283612a42565b61324c9084613bbc565b9050600061325a8385613bf1565b905060008361326886612a42565b6132729190613bf1565b61327c9083613bbc565b6001600160a01b0388166000908152600360205260409020549091506132a3908390613bbc565b6001600160a01b038089166000908152600360209081526040808320949094559189168152600490915220546132da908490613c1e565b6001600160a01b038716600090815260046020908152604080832093909355600390522054613163908290613c1e565b6000613314612a1f565b9050600061332183612a42565b61332b9084613bbc565b905060006133398385613bf1565b905060008361334786612a42565b6133519190613bf1565b61335b9083613bbc565b6001600160a01b038816600090815260046020526040902054909150613382908690613bbc565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546132a3908390613bbc565b60006133bc612a1f565b905060006133c983612a42565b6133d39084613bbc565b905060006133e18385613bf1565b90506000836133ef86612a42565b6133f99190613bf1565b6134039083613bbc565b6001600160a01b03881660009081526003602052604090205490915061342a908390613bbc565b6001600160a01b03808916600090815260036020526040808220939093559088168152205461345a908290613c1e565b6001600160a01b038716600090815260036020526040902055603654156134855761348585856134ba565b60355415613496576134968561371e565b603754156134a8576134a8858561355a565b603854156131c3576131c3858561363c565b60006103e8603654846134cd9190613bf1565b6134d79190613bcf565b905060006134e58383613bf1565b30600090815260036020526040902054909150613503908290613c1e565b30600090815260036020908152604080832093909355600a9052205460ff16156135535730600090815260046020526040902054613542908390613c1e565b306000908152600460205260409020555b30336120ff565b60006103e86037548461356d9190613bf1565b6135779190613bcf565b905060006135858383613bf1565b6013546001600160a01b03166000908152600360205260409020549091506135ae908290613c1e565b601380546001600160a01b0390811660009081526003602090815260408083209590955592549091168152600a909152205460ff161561362a576013546001600160a01b031660009081526004602052604090205461360e908390613c1e565b6013546001600160a01b03166000908152600460205260409020555b6013546001600160a01b0316336120ff565b60006103e86038548461364f9190613bf1565b6136599190613bcf565b905060006136678383613bf1565b6014546001600160a01b0316600090815260036020526040902054909150613690908290613c1e565b601480546001600160a01b0390811660009081526003602090815260408083209590955592549091168152600a909152205460ff161561370c576014546001600160a01b03166000908152600460205260409020546136f0908390613c1e565b6014546001600160a01b03166000908152600460205260409020555b6014546001600160a01b0316336120ff565b60006103e8603554836137319190613bf1565b61373b9190613bcf565b90506000613747612a1f565b6137519083613bf1565b905080600d546137619190613bbc565b600d55600e546115bf908390613c1e565b60006103e8603954846137859190613bf1565b61378f9190613bcf565b9050600061379d8383613bf1565b6017546001600160a01b03166000908152600360205260409020549091506137c6908290613c1e565b601780546001600160a01b0390811660009081526003602090815260408083209590955592549091168152600a909152205460ff1615613842576017546001600160a01b0316600090815260046020526040902054613826908390613c1e565b6017546001600160a01b03166000908152600460205260409020555b81601d546120ee9190613c1e565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461387b57600080fd5b50565b803561388981613866565b919050565b600060208083850312156138a157600080fd5b823567ffffffffffffffff808211156138b957600080fd5b818501915085601f8301126138cd57600080fd5b8135818111156138df576138df613850565b8060051b604051601f19603f8301168101818110858211171561390457613904613850565b60405291825284820192508381018501918883111561392257600080fd5b938501935b82851015613947576139388561387e565b84529385019392850192613927565b98975050505050505050565b6000806040838503121561396657600080fd5b823561397181613866565b9150602083013561398181613866565b809150509250929050565b600060208083528351808285015260005b818110156139b95785810183015185820160400152820161399d565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156139ed57600080fd5b82356139f881613866565b946020939093013593505050565b600060208284031215613a1857600080fd5b5035919050565b600080600060608486031215613a3457600080fd5b8335613a3f81613866565b92506020840135613a4f81613866565b929592945050506040919091013590565b600060208284031215613a7257600080fd5b813561129f81613866565b600080600080600060a08688031215613a9557600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b801515811461387b57600080fd5b60008060408385031215613ad957600080fd5b82359150602083013561398181613ab8565b600060208284031215613afd57600080fd5b813561129f81613ab8565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613b7b57613b7b613b53565b5060010190565b600181811c90821680613b9657607f821691505b602082108103613bb657634e487b7160e01b600052602260045260246000fd5b50919050565b8181038181111561110957611109613b53565b600082613bec57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761110957611109613b53565b634e487b7160e01b600052603160045260246000fd5b8082018082111561110957611109613b53565b600060208284031215613c4357600080fd5b5051919050565b600060208284031215613c5c57600080fd5b815161129f81613ab8565b600060208284031215613c7957600080fd5b815161129f81613866565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613cd45784516001600160a01b031683529383019391830191600101613caf565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613d0a57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207d3d7e91ccde80fb3a09cfe315c47d9552a1e1bb4ddc5bbd19eaeff2a9128cde64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106104a25760003560e01c80636c473ee711610260578063a9e36f3611610144578063dd62ed3e116100c1578063f14210a611610085578063f14210a614610dd4578063f2fde38b14610df4578063f783d4d414610e14578063f8b45b0514610e34578063fc6f4cbb14610e4a578063fe575a8714610e6957600080fd5b8063dd62ed3e14610d2c578063e1d2aa4614610d72578063e316c3eb14610d88578063e6c84dc614610d9e578063ea2f0b3714610db457600080fd5b8063c49b9a8011610108578063c49b9a8014610caa578063cd78e45c14610cca578063d44e586e14610cea578063d6c180bf14610d00578063dd07382914610d1657600080fd5b8063a9e36f3614610c14578063aa5bb5c714610c2a578063b90306ad14610c4a578063bddf96a614610c6a578063c04a541414610c8a57600080fd5b806383ad7994116101dd57806396e1e7aa116101a157806396e1e7aa14610b6857806398118cb414610b7e5780639e281a9814610b94578063a390618b14610bb4578063a457c2d714610bd4578063a9059cbb14610bf457600080fd5b806383ad799414610ad057806388f8202014610ae65780638da5cb5b14610b1f578063902cd93014610b3d57806395d89b4114610b5357600080fd5b806375f0a8741161022457806375f0a87414610a3a5780637702873514610a5a5780637911ef9d14610a7a5780637bfd375714610a9a5780637cdc65f214610ab057600080fd5b80636c473ee7146109af57806370a08231146109cf57806370d5ae05146109ef578063715018a614610a0f57806373f4256114610a2457600080fd5b80633211a83d116103875780634549b039116103045780635342acb4116102c85780635342acb4146108e057806359c615cd146109195780635e97f0cf1461093957806365d60e561461094f5780636c04b1511461096f5780636c33983a1461098f57600080fd5b80634549b039146108465780634940730b146108665780634a74bb02146108865780634bcc2616146108a057806352390c02146108c057600080fd5b8063395093511161034b57806339509351146107b05780633bd5d173146107d057806342fe1be1146107f0578063437823ec14610806578063438fb3951461082657600080fd5b80633211a83d146107295780633326d7f21461074e57806335fae9e2146107645780633685d4191461077a578063377cbe4a1461079a57600080fd5b806311ff1b8b116104205780631a95b47d116103e45780631a95b47d1461067b57806320ea5c4b1461069157806321bbcbb1146106a757806323b872dd146106c75780632d838119146106e7578063313ce5671461070757600080fd5b806311ff1b8b146105e357806313114a9d146105f95780631646b1fb1461060e578063179795dd1461064657806318160ddd1461066657600080fd5b806306fdde031161046757806306fdde0314610545578063095ea7b3146105675780630a74430a1461059757806310f355a4146105ad57806311e887ac146105cd57600080fd5b8062281dc1146104ae57806301f59d16146104d7578063041a64d1146104ed578063041f173f146105035780630505e94d1461052557600080fd5b366104a957005b600080fd5b3480156104ba57600080fd5b506104c460265481565b6040519081526020015b60405180910390f35b3480156104e357600080fd5b506104c460195481565b3480156104f957600080fd5b506104c460345481565b34801561050f57600080fd5b5061052361051e36600461388e565b610ea2565b005b34801561053157600080fd5b50610523610540366004613953565b610f41565b34801561055157600080fd5b5061055a611066565b6040516104ce919061398c565b34801561057357600080fd5b506105876105823660046139da565b6110f8565b60405190151581526020016104ce565b3480156105a357600080fd5b506104c460295481565b3480156105b957600080fd5b506105236105c8366004613a06565b61110f565b3480156105d957600080fd5b506104c460235481565b3480156105ef57600080fd5b506104c4602c5481565b34801561060557600080fd5b50600e546104c4565b34801561061a57600080fd5b5060135461062e906001600160a01b031681565b6040516001600160a01b0390911681526020016104ce565b34801561065257600080fd5b5060125461062e906001600160a01b031681565b34801561067257600080fd5b50600c546104c4565b34801561068757600080fd5b506104c460255481565b34801561069d57600080fd5b506104c4602f5481565b3480156106b357600080fd5b506105236106c236600461388e565b61113e565b3480156106d357600080fd5b506105876106e2366004613a1f565b6111d0565b3480156106f357600080fd5b506104c4610702366004613a06565b611222565b34801561071357600080fd5b5060115460405160ff90911681526020016104ce565b34801561073557600080fd5b5060115461062e9061010090046001600160a01b031681565b34801561075a57600080fd5b506104c460225481565b34801561077057600080fd5b506104c460325481565b34801561078657600080fd5b50610523610795366004613a60565b6112a6565b3480156107a657600080fd5b506104c460335481565b3480156107bc57600080fd5b506105876107cb3660046139da565b6114a0565b3480156107dc57600080fd5b506105236107eb366004613a06565b6114d7565b3480156107fc57600080fd5b506104c460245481565b34801561081257600080fd5b50610523610821366004613a60565b6115c7565b34801561083257600080fd5b50610523610841366004613a7d565b611615565b34801561085257600080fd5b506104c4610861366004613ac6565b6116ea565b34801561087257600080fd5b50610523610881366004613a60565b6117a7565b34801561089257600080fd5b506020546105879060ff1681565b3480156108ac57600080fd5b506105236108bb366004613a06565b611837565b3480156108cc57600080fd5b506105236108db366004613a60565b611866565b3480156108ec57600080fd5b506105876108fb366004613a60565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561092557600080fd5b5061052361093436600461388e565b6119b9565b34801561094557600080fd5b506104c4602b5481565b34801561095b57600080fd5b5061052361096a366004613aeb565b611a4b565b34801561097b57600080fd5b5061052361098a366004613a7d565b611a8f565b34801561099b57600080fd5b506105236109aa366004613a60565b611ae2565b3480156109bb57600080fd5b506105236109ca366004613a60565b611b2d565b3480156109db57600080fd5b506104c46109ea366004613a60565b611bdb565b3480156109fb57600080fd5b5060175461062e906001600160a01b031681565b348015610a1b57600080fd5b50610523611c3a565b348015610a3057600080fd5b506104c4601d5481565b348015610a4657600080fd5b5060155461062e906001600160a01b031681565b348015610a6657600080fd5b50610523610a75366004613a7d565b611cae565b348015610a8657600080fd5b50610523610a9536600461388e565b611d01565b348015610aa657600080fd5b506104c4602e5481565b348015610abc57600080fd5b5060145461062e906001600160a01b031681565b348015610adc57600080fd5b506104c460305481565b348015610af257600080fd5b50610587610b01366004613a60565b6001600160a01b03166000908152600a602052604090205460ff1690565b348015610b2b57600080fd5b506000546001600160a01b031661062e565b348015610b4957600080fd5b506104c4602a5481565b348015610b5f57600080fd5b5061055a611d93565b348015610b7457600080fd5b506104c4601a5481565b348015610b8a57600080fd5b506104c460315481565b348015610ba057600080fd5b50610523610baf3660046139da565b611da2565b348015610bc057600080fd5b50610523610bcf366004613a06565b611eeb565b348015610be057600080fd5b50610587610bef3660046139da565b611f1a565b348015610c0057600080fd5b50610587610c0f3660046139da565b611f51565b348015610c2057600080fd5b506104c4602d5481565b348015610c3657600080fd5b50610523610c45366004613a06565b611f5e565b348015610c5657600080fd5b50610523610c65366004613a06565b611f8d565b348015610c7657600080fd5b50610523610c85366004613a60565b612147565b348015610c9657600080fd5b5060165461062e906001600160a01b031681565b348015610cb657600080fd5b50610523610cc5366004613aeb565b6121b5565b348015610cd657600080fd5b50610523610ce5366004613a60565b612223565b348015610cf657600080fd5b506104c4601c5481565b348015610d0c57600080fd5b506104c4601b5481565b348015610d2257600080fd5b506104c460215481565b348015610d3857600080fd5b506104c4610d47366004613953565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610d7e57600080fd5b506104c460285481565b348015610d9457600080fd5b506104c4601e5481565b348015610daa57600080fd5b506104c460275481565b348015610dc057600080fd5b50610523610dcf366004613a60565b612271565b348015610de057600080fd5b50610523610def366004613a06565b6122bc565b348015610e0057600080fd5b50610523610e0f366004613a60565b612354565b348015610e2057600080fd5b50610523610e2f366004613a7d565b61243e565b348015610e4057600080fd5b506104c4601f5481565b348015610e5657600080fd5b5060205461058790610100900460ff1681565b348015610e7557600080fd5b50610587610e84366004613a60565b6001600160a01b031660009081526006602052604090205460ff1690565b6000546001600160a01b03163314610ed55760405162461bcd60e51b8152600401610ecc90613b08565b60405180910390fd5b60005b8151811015610f3d57600160066000848481518110610ef957610ef9613b3d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f3581613b69565b915050610ed8565b5050565b6000546001600160a01b03163314610f6b5760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b038216610fcd5760405162461bcd60e51b8152602060048201526024808201527f526f75746572206164726573732063616e6e6f742062652061646472657373206044820152637a65726f60e01b6064820152608401610ecc565b6001600160a01b03811661102e5760405162461bcd60e51b815260206004820152602260248201527f50616972206164726573732063616e6e6f742062652061646472657373207a65604482015261726f60f01b6064820152608401610ecc565b60118054610100600160a81b0319166101006001600160a01b0394851602179055601280546001600160a01b03191691909216179055565b6060600f805461107590613b82565b80601f01602080910402602001604051908101604052809291908181526020018280546110a190613b82565b80156110ee5780601f106110c3576101008083540402835291602001916110ee565b820191906000526020600020905b8154815290600101906020018083116110d157829003601f168201915b5050505050905090565b6000611105338484612491565b5060015b92915050565b6000546001600160a01b031633146111395760405162461bcd60e51b8152600401610ecc90613b08565b601c55565b6000546001600160a01b031633146111685760405162461bcd60e51b8152600401610ecc90613b08565b60005b8151811015610f3d5760016007600084848151811061118c5761118c613b3d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111c881613b69565b91505061116b565b60006111dd8484846125b5565b6001600160a01b038416600090815260056020908152604080832033808552925290912054611218918691611213908690613bbc565b612491565b5060019392505050565b6000600d548211156112895760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ecc565b6000611293612a1f565b905061129f8184613bcf565b9392505050565b6000546001600160a01b031633146112d05760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b0381166000908152600a602052604090205460ff166113385760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ecc565b60005b600b54811015610f3d57816001600160a01b0316600b828154811061136257611362613b3d565b6000918252602090912001546001600160a01b03160361148e57600b805461138c90600190613bbc565b8154811061139c5761139c613b3d565b600091825260209091200154600b80546001600160a01b0390921691839081106113c8576113c8613b3d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506113fe612a1f565b6001600160a01b0383166000908152600460205260409020546114219190613bf1565b6001600160a01b03831660009081526003602090815260408083209390935560048152828220829055600a905220805460ff19169055600b80548061146857611468613c08565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061149881613b69565b91505061133b565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091611105918590611213908690613c1e565b336000818152600a602052604090205460ff161561154c5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610ecc565b6000611556612a1f565b6115609084613bf1565b6001600160a01b038316600090815260036020526040902054909150611587908290613bbc565b6001600160a01b038316600090815260036020526040902055600d546115ae908290613bbc565b600d55600e546115bf908490613c1e565b600e55505050565b6000546001600160a01b031633146115f15760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b0316331461163f5760405162461bcd60e51b8152600401610ecc90613b08565b60308590556031849055603283905560338290556034819055601954818385611668888a613c1e565b6116729190613c1e565b61167c9190613c1e565b6116869190613c1e565b11156116e35760405162461bcd60e51b815260206004820152602660248201527f45524332303a2043616e206e6f742062652067726561746572207468616e206d60448201526561782066656560d01b6064820152608401610ecc565b5050505050565b6000600c5483111561173e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ecc565b8161176057600061174d612a1f565b6117579085613bf1565b91506111099050565b600061176a612a1f565b6117749085613bf1565b90506000611780612a1f565b61178986612a42565b6117939190613bf1565b61179d9083613bbc565b9250611109915050565b6000546001600160a01b031633146117d15760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b0381166118155760405162461bcd60e51b815260206004820152600b60248201526a063616e6e6f7420626520360ac1b6044820152606401610ecc565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118615760405162461bcd60e51b8152600401610ecc90613b08565b601855565b6000546001600160a01b031633146118905760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b0381166000908152600a602052604090205460ff16156118f95760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ecc565b6001600160a01b03811660009081526003602052604090205415611953576001600160a01b03811660009081526003602052604090205461193990611222565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146119e35760405162461bcd60e51b8152600401610ecc90613b08565b60005b8151811015610f3d57600060076000848481518110611a0757611a07613b3d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611a4381613b69565b9150506119e6565b6000546001600160a01b03163314611a755760405162461bcd60e51b8152600401610ecc90613b08565b602080549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314611ab95760405162461bcd60e51b8152600401610ecc90613b08565b602b859055602c849055602d839055602e829055602f819055601a54818484611668888a613c1e565b6000546001600160a01b03163314611b0c5760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314611b575760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b038116611bb95760405162461bcd60e51b8152602060048201526024808201527f4d61726b65742077616c6c65742063616e6e6f742062652061646472657373206044820152637a65726f60e01b6064820152608401610ecc565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600a602052604081205460ff1615611c1857506001600160a01b031660009081526004602052604090205490565b6001600160a01b03821660009081526003602052604090205461110990611222565b6000546001600160a01b03163314611c645760405162461bcd60e51b8152600401610ecc90613b08565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611cd85760405162461bcd60e51b8152600401610ecc90613b08565b6026859055602784905560288390556029829055602a819055601954818484611668888a613c1e565b6000546001600160a01b03163314611d2b5760405162461bcd60e51b8152600401610ecc90613b08565b60005b8151811015610f3d57600060066000848481518110611d4f57611d4f613b3d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611d8b81613b69565b915050611d2e565b60606010805461107590613b82565b6000546001600160a01b03163314611dcc5760405162461bcd60e51b8152600401610ecc90613b08565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e369190613c31565b1015611e755760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b6044820152606401610ecc565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee69190613c4a565b505050565b6000546001600160a01b03163314611f155760405162461bcd60e51b8152600401610ecc90613b08565b601e55565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091611105918590611213908690613bbc565b60006111053384846125b5565b6000546001600160a01b03163314611f885760405162461bcd60e51b8152600401610ecc90613b08565b601b55565b6000546001600160a01b03163314611fb75760405162461bcd60e51b8152600401610ecc90613b08565b6000611fc1612a1f565b9050816000611fd08383613bf1565b33600090815260036020526040902054909150611fee908290613bbc565b33600090815260036020908152604080832093909355600a9052205460ff161561203e573360009081526004602052604090205461202d908390613bbc565b336000908152600460205260409020555b6017546001600160a01b0316600090815260036020526040902054612064908290613c1e565b601780546001600160a01b0390811660009081526003602090815260408083209590955592549091168152600a909152205460ff16156120e0576017546001600160a01b03166000908152600460205260409020546120c4908390613c1e565b6017546001600160a01b03166000908152600460205260409020555b83601d546120ee9190613c1e565b601d556017546001600160a01b0316335b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161213991815260200190565b60405180910390a350505050565b6000546001600160a01b031633146121715760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b038116611bb95760405162461bcd60e51b815260206004820152600b60248201526a063616e6e6f7420626520360ac1b6044820152606401610ecc565b6000546001600160a01b031633146121df5760405162461bcd60e51b8152600401610ecc90613b08565b6020805460ff191682151590811782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a150565b6000546001600160a01b0316331461224d5760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000546001600160a01b0316331461229b5760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146122e65760405162461bcd60e51b8152600401610ecc90613b08565b804710156123275760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b6044820152606401610ecc565b604051339082156108fc029083906000818181858888f19350505050158015610f3d573d6000803e3d6000fd5b6000546001600160a01b0316331461237e5760405162461bcd60e51b8152600401610ecc90613b08565b6001600160a01b0381166123e35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ecc565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146124685760405162461bcd60e51b8152600401610ecc90613b08565b60218590556022849055602383905560248290556025819055601954818385611668888a613c1e565b6001600160a01b0383166124f35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ecc565b6001600160a01b0382166125545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ecc565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166126195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ecc565b6001600160a01b03821661267b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ecc565b600081116126e45760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610ecc565b6001600160a01b03831660009081526006602052604090205460ff161561274d5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a2053656e64657220697320626c61636b6c6973746564000000006044820152606401610ecc565b6001600160a01b03821660009081526006602052604090205460ff16156127b65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a20526563697069656e7420697320626c61636b6c6973746564006044820152606401610ecc565b6127c08383612a93565b6001600160a01b03831660009081526008602052604090205460019060ff168061280257506001600160a01b03831660009081526008602052604090205460ff165b806128145750602054610100900460ff165b1561281d575060005b806128455761284060006035819055603681905560378190556038819055603955565b612978565b6012546001600160a01b03908116908516036128ab57601b5482111561288857612840602b54603555602c54603655602d54603755602e54603855602f54603955565b612840602154603555602254603655602354603755602454603855602554603955565b6012546001600160a01b0390811690841603612955576001600160a01b03841660009081526007602052604090205460ff161561290557612840602b54603555602c54603655602d54603755602e54603855602f54603955565b601c5482111561293257612840602b54603555602c54603655602d54603755602e54603855602f54603955565b612840602654603555602754603655602854603755602954603855602a54603955565b612978603054603555603154603655603254603755603354603855603454603955565b601e54601d54106129895760006039555b6001600160a01b03831660009081526009602052604090205460ff16612a0e57601f54826129b685611bdb565b6129c09190613c1e565b1115612a0e5760405162461bcd60e51b815260206004820152601860248201527f4d61782057616c6c6574206c696d6974207265616368656400000000000000006044820152606401610ecc565b612a19848484612c02565b50505050565b6000806000612a2c612cff565b9092509050612a3b8183613bcf565b9250505090565b6000806103e8603954603854603754603654603554612a619190613c1e565b612a6b9190613c1e565b612a759190613c1e565b612a7f9190613c1e565b612a899085613bf1565b61129f9190613bcf565b6000612a9e30611bdb565b6018546020549192508210159062010000900460ff16158015612abe5750805b8015612ad857506012546001600160a01b03858116911614155b8015612ae6575060205460ff165b8015612b1457506001600160a01b03841630148015612b1257506012546001600160a01b038481169116145b155b15612a19576018549150612b3e30601160019054906101000a90046001600160a01b031684612491565b6000612b4b600284613bcf565b90506000612b598285613bbc565b6011549091504790612b799061010090046001600160a01b031683612e82565b6000612b858247613bbc565b601154909150612bb7906001600160a01b0361010090910416612bb06000546001600160a01b031690565b8684612fd6565b60408051848152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050505050565b6001600160a01b0383166000908152600a602052604090205460ff168015612c4357506001600160a01b0382166000908152600a602052604090205460ff16155b15612c5357611ee683838361308b565b6001600160a01b0383166000908152600a602052604090205460ff16158015612c9457506001600160a01b0382166000908152600a602052604090205460ff165b15612ca457611ee683838361322b565b6001600160a01b0383166000908152600a602052604090205460ff168015612ce457506001600160a01b0382166000908152600a602052604090205460ff165b15612cf457611ee683838361330a565b611ee68383836133b2565b600d54600c546000918291825b600b54811015612e51578260036000600b8481548110612d2e57612d2e613b3d565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612d9957508160046000600b8481548110612d7257612d72613b3d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612daf57600d54600c54945094505050509091565b60036000600b8381548110612dc657612dc6613b3d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612df59084613bbc565b925060046000600b8381548110612e0e57612e0e613b3d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612e3d9083613bbc565b915080612e4981613b69565b915050612d0c565b50600c54600d54612e629190613bcf565b821015612e7957600d54600c549350935050509091565b90939092509050565b604080516002808252606082018352849260009291906020830190803683370190505090503081600081518110612ebb57612ebb613b3d565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3d9190613c67565b81600181518110612f5057612f50613b3d565b6001600160a01b039283166020918202929092010152821663791ac9478460008430612f7e4261012c613c1e565b6040518663ffffffff1660e01b8152600401612f9e959493929190613c84565b600060405180830381600087803b158015612fb857600080fd5b505af1158015612fcc573d6000803e3d6000fd5b5050505050505050565b836001600160a01b03811663f305d7198330866000808a612ff94261012c613c1e565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015613066573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fcc9190613cf5565b6000613095612a1f565b905060006130a283612a42565b6130ac9084613bbc565b905060006130ba8385613bf1565b90506000836130c886612a42565b6130d29190613bf1565b6130dc9083613bbc565b6001600160a01b038816600090815260046020526040902054909150613103908690613bbc565b6001600160a01b038816600090815260046020908152604080832093909355600390522054613133908390613bbc565b6001600160a01b038089166000908152600360205260408082209390935590881681522054613163908290613c1e565b6001600160a01b0387166000908152600360205260409020556036541561318e5761318e85856134ba565b603754156131a0576131a0858561355a565b603854156131b2576131b2858561363c565b603554156131c3576131c38561371e565b603954156131d5576131d58585613772565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161321a91815260200190565b60405180910390a350505050505050565b6000613235612a1f565b9050600061324283612a42565b61324c9084613bbc565b9050600061325a8385613bf1565b905060008361326886612a42565b6132729190613bf1565b61327c9083613bbc565b6001600160a01b0388166000908152600360205260409020549091506132a3908390613bbc565b6001600160a01b038089166000908152600360209081526040808320949094559189168152600490915220546132da908490613c1e565b6001600160a01b038716600090815260046020908152604080832093909355600390522054613163908290613c1e565b6000613314612a1f565b9050600061332183612a42565b61332b9084613bbc565b905060006133398385613bf1565b905060008361334786612a42565b6133519190613bf1565b61335b9083613bbc565b6001600160a01b038816600090815260046020526040902054909150613382908690613bbc565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546132a3908390613bbc565b60006133bc612a1f565b905060006133c983612a42565b6133d39084613bbc565b905060006133e18385613bf1565b90506000836133ef86612a42565b6133f99190613bf1565b6134039083613bbc565b6001600160a01b03881660009081526003602052604090205490915061342a908390613bbc565b6001600160a01b03808916600090815260036020526040808220939093559088168152205461345a908290613c1e565b6001600160a01b038716600090815260036020526040902055603654156134855761348585856134ba565b60355415613496576134968561371e565b603754156134a8576134a8858561355a565b603854156131c3576131c3858561363c565b60006103e8603654846134cd9190613bf1565b6134d79190613bcf565b905060006134e58383613bf1565b30600090815260036020526040902054909150613503908290613c1e565b30600090815260036020908152604080832093909355600a9052205460ff16156135535730600090815260046020526040902054613542908390613c1e565b306000908152600460205260409020555b30336120ff565b60006103e86037548461356d9190613bf1565b6135779190613bcf565b905060006135858383613bf1565b6013546001600160a01b03166000908152600360205260409020549091506135ae908290613c1e565b601380546001600160a01b0390811660009081526003602090815260408083209590955592549091168152600a909152205460ff161561362a576013546001600160a01b031660009081526004602052604090205461360e908390613c1e565b6013546001600160a01b03166000908152600460205260409020555b6013546001600160a01b0316336120ff565b60006103e86038548461364f9190613bf1565b6136599190613bcf565b905060006136678383613bf1565b6014546001600160a01b0316600090815260036020526040902054909150613690908290613c1e565b601480546001600160a01b0390811660009081526003602090815260408083209590955592549091168152600a909152205460ff161561370c576014546001600160a01b03166000908152600460205260409020546136f0908390613c1e565b6014546001600160a01b03166000908152600460205260409020555b6014546001600160a01b0316336120ff565b60006103e8603554836137319190613bf1565b61373b9190613bcf565b90506000613747612a1f565b6137519083613bf1565b905080600d546137619190613bbc565b600d55600e546115bf908390613c1e565b60006103e8603954846137859190613bf1565b61378f9190613bcf565b9050600061379d8383613bf1565b6017546001600160a01b03166000908152600360205260409020549091506137c6908290613c1e565b601780546001600160a01b0390811660009081526003602090815260408083209590955592549091168152600a909152205460ff1615613842576017546001600160a01b0316600090815260046020526040902054613826908390613c1e565b6017546001600160a01b03166000908152600460205260409020555b81601d546120ee9190613c1e565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461387b57600080fd5b50565b803561388981613866565b919050565b600060208083850312156138a157600080fd5b823567ffffffffffffffff808211156138b957600080fd5b818501915085601f8301126138cd57600080fd5b8135818111156138df576138df613850565b8060051b604051601f19603f8301168101818110858211171561390457613904613850565b60405291825284820192508381018501918883111561392257600080fd5b938501935b82851015613947576139388561387e565b84529385019392850192613927565b98975050505050505050565b6000806040838503121561396657600080fd5b823561397181613866565b9150602083013561398181613866565b809150509250929050565b600060208083528351808285015260005b818110156139b95785810183015185820160400152820161399d565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156139ed57600080fd5b82356139f881613866565b946020939093013593505050565b600060208284031215613a1857600080fd5b5035919050565b600080600060608486031215613a3457600080fd5b8335613a3f81613866565b92506020840135613a4f81613866565b929592945050506040919091013590565b600060208284031215613a7257600080fd5b813561129f81613866565b600080600080600060a08688031215613a9557600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b801515811461387b57600080fd5b60008060408385031215613ad957600080fd5b82359150602083013561398181613ab8565b600060208284031215613afd57600080fd5b813561129f81613ab8565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613b7b57613b7b613b53565b5060010190565b600181811c90821680613b9657607f821691505b602082108103613bb657634e487b7160e01b600052602260045260246000fd5b50919050565b8181038181111561110957611109613b53565b600082613bec57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761110957611109613b53565b634e487b7160e01b600052603160045260246000fd5b8082018082111561110957611109613b53565b600060208284031215613c4357600080fd5b5051919050565b600060208284031215613c5c57600080fd5b815161129f81613ab8565b600060208284031215613c7957600080fd5b815161129f81613866565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613cd45784516001600160a01b031683529383019391830191600101613caf565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613d0a57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207d3d7e91ccde80fb3a09cfe315c47d9552a1e1bb4ddc5bbd19eaeff2a9128cde64736f6c63430008110033

Deployed Bytecode Sourcemap

4034:33611:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6611:42;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6611:42:0;;;;;;;;5424:27;;;;;;;;;;;;;;;;7953:30;;;;;;;;;;;;;;;;15385:190;;;;;;;;;;-1:-1:-1;15385:190:0;;;;;:::i;:::-;;:::i;:::-;;17471:342;;;;;;;;;;-1:-1:-1;17471:342:0;;;;;:::i;:::-;;:::i;10305:85::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11298:193::-;;;;;;;;;;-1:-1:-1;11298:193:0;;;;;:::i;:::-;;:::i;:::-;;;3180:14:1;;3173:22;3155:41;;3143:2;3128:18;11298:193:0;3015:187:1;6896:45:0;;;;;;;;;;;;;;;;16530:108;;;;;;;;;;-1:-1:-1;16530:108:0;;;;;:::i;:::-;;:::i;6310:42::-;;;;;;;;;;;;;;;;7219:40;;;;;;;;;;;;;;;;12611:87;;;;;;;;;;-1:-1:-1;12680:10:0;;12611:87;;5060:34;;;;;;;;;;-1:-1:-1;5060:34:0;;;;-1:-1:-1;;;;;5060:34:0;;;;;;-1:-1:-1;;;;;3572:32:1;;;3554:51;;3542:2;3527:18;5060:34:0;3392:219:1;5031:22:0;;;;;;;;;;-1:-1:-1;5031:22:0;;;;-1:-1:-1;;;;;5031:22:0;;;10588:97;;;;;;;;;;-1:-1:-1;10670:7:0;;10588:97;;6494:39;;;;;;;;;;;;;;;;7493:38;;;;;;;;;;;;;;;;15583:181;;;;;;;;;;-1:-1:-1;15583:181:0;;;;;:::i;:::-;;:::i;11499:352::-;;;;;;;;;;-1:-1:-1;11499:352:0;;;;;:::i;:::-;;:::i;13689:321::-;;;;;;;;;;-1:-1:-1;13689:321:0;;;;;:::i;:::-;;:::i;10495:85::-;;;;;;;;;;-1:-1:-1;10563:9:0;;10495:85;;10563:9;;;;4427:36:1;;4415:2;4400:18;10495:85:0;4285:184:1;4995:29:0;;;;;;;;;;-1:-1:-1;4995:29:0;;;;;;;-1:-1:-1;;;;;4995:29:0;;;6221:40;;;;;;;;;;;;;;;;7792:33;;;;;;;;;;;;;;;;14360:546;;;;;;;;;;-1:-1:-1;14360:546:0;;;;;:::i;:::-;;:::i;7868:35::-;;;;;;;;;;;;;;;;11859:299;;;;;;;;;;-1:-1:-1;11859:299:0;;;;;:::i;:::-;;:::i;12706:407::-;;;;;;;;;;-1:-1:-1;12706:407:0;;;;;:::i;:::-;;:::i;6400:44::-;;;;;;;;;;;;;;;;14914:113;;;;;;;;;;-1:-1:-1;14914:113:0;;;;;:::i;:::-;;:::i;26478:716::-;;;;;;;;;;-1:-1:-1;26478:716:0;;;;;:::i;:::-;;:::i;13121:560::-;;;;;;;;;;-1:-1:-1;13121:560:0;;;;;:::i;:::-;;:::i;15035:166::-;;;;;;;;;;-1:-1:-1;15035:166:0;;;;;:::i;:::-;;:::i;5876:41::-;;;;;;;;;;-1:-1:-1;5876:41:0;;;;;;;;16290:118;;;;;;;;;;-1:-1:-1;16290:118:0;;;;;:::i;:::-;;:::i;14018:334::-;;;;;;;;;;-1:-1:-1;14018:334:0;;;;;:::i;:::-;;:::i;27300:124::-;;;;;;;;;;-1:-1:-1;27300:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;27389:27:0;27365:4;27389:27;;;:18;:27;;;;;;;;;27300:124;15772:185;;;;;;;;;;-1:-1:-1;15772:185:0;;;;;:::i;:::-;;:::i;7113:40::-;;;;;;;;;;;;;;;;16821:108;;;;;;;;;;-1:-1:-1;16821:108:0;;;;;:::i;:::-;;:::i;25608:790::-;;;;;;;;;;-1:-1:-1;25608:790:0;;;;;:::i;:::-;;:::i;17328:135::-;;;;;;;;;;-1:-1:-1;17328:135:0;;;;;:::i;:::-;;:::i;16937:241::-;;;;;;;;;;-1:-1:-1;16937:241:0;;;;;:::i;:::-;;:::i;10693:198::-;;;;;;;;;;-1:-1:-1;10693:198:0;;;;;:::i;:::-;;:::i;5236:71::-;;;;;;;;;;-1:-1:-1;5236:71:0;;;;-1:-1:-1;;;;;5236:71:0;;;1695:157;;;;;;;;;;;;;:::i;5778:25::-;;;;;;;;;;;;;;;;5144:38;;;;;;;;;;-1:-1:-1;5144:38:0;;;;-1:-1:-1;;;;;5144:38:0;;;24796:804;;;;;;;;;;-1:-1:-1;24796:804:0;;;;;:::i;:::-;;:::i;15965:197::-;;;;;;;;;;-1:-1:-1;15965:197:0;;;;;:::i;:::-;;:::i;7400:43::-;;;;;;;;;;;;;;;;5101:36;;;;;;;;;;-1:-1:-1;5101:36:0;;;;-1:-1:-1;;;;;5101:36:0;;;7614:32;;;;;;;;;;;;;;;;12483:120;;;;;;;;;;-1:-1:-1;12483:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;12575:20:0;12551:4;12575:20;;;:11;:20;;;;;;;;;12483:120;1481:79;;;;;;;;;;-1:-1:-1;1519:7:0;1546:6;-1:-1:-1;;;;;1546:6:0;1481:79;;6991:40;;;;;;;;;;;;;;;;10398:89;;;;;;;;;;;;;:::i;5496:32::-;;;;;;;;;;;;;;;;7712:31;;;;;;;;;;;;;;;;18012:209;;;;;;;;;;-1:-1:-1;18012:209:0;;;;;:::i;:::-;;:::i;27202:90::-;;;;;;;;;;-1:-1:-1;27202:90:0;;;;;:::i;:::-;;:::i;12166:309::-;;;;;;;;;;-1:-1:-1;12166:309:0;;;;;:::i;:::-;;:::i;10899:199::-;;;;;;;;;;-1:-1:-1;10899:199:0;;;;;:::i;:::-;;:::i;7309:42::-;;;;;;;;;;;;;;;;16416:106;;;;;;;;;;-1:-1:-1;16416:106:0;;;;;:::i;:::-;;:::i;21654:683::-;;;;;;;;;;-1:-1:-1;21654:683:0;;;;;:::i;:::-;;:::i;15213:162::-;;;;;;;;;;-1:-1:-1;15213:162:0;;;;;:::i;:::-;;:::i;5189:40::-;;;;;;;;;;-1:-1:-1;5189:40:0;;;;-1:-1:-1;;;;;5189:40:0;;;16646:167;;;;;;;;;;-1:-1:-1;16646:167:0;;;;;:::i;:::-;;:::i;17186:134::-;;;;;;;;;;-1:-1:-1;17186:134:0;;;;;:::i;:::-;;:::i;5679:52::-;;;;;;;;;;;;;;;;5584:51;;;;;;;;;;;;;;;;6114:41;;;;;;;;;;;;;;;;11106:184;;;;;;;;;;-1:-1:-1;11106:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;11255:18:0;;;11223:7;11255:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11106:184;6809:43;;;;;;;;;;;;;;;;5810:26;;;;;;;;;;;;;;;;6719:41;;;;;;;;;;;;;;;;16170:112;;;;;;;;;;-1:-1:-1;16170:112:0;;;;;:::i;:::-;;:::i;17821:183::-;;;;;;;;;;-1:-1:-1;17821:183:0;;;;;:::i;:::-;;:::i;1860:321::-;;;;;;;;;;-1:-1:-1;1860:321:0;;;;;:::i;:::-;;:::i;23921:793::-;;;;;;;;;;-1:-1:-1;23921:793:0;;;;;:::i;:::-;;:::i;5843:24::-;;;;;;;;;;;;;;;;5975:41;;;;;;;;;;-1:-1:-1;5975:41:0;;;;;;;;;;;27432:116;;;;;;;;;;-1:-1:-1;27432:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;27517:23:0;27493:4;27517:23;;;:14;:23;;;;;;;;;27432:116;15385:190;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;;;;;;;;;15466:9:::1;15461:107;15485:8;:15;15481:1;:19;15461:107;;;15552:4;15522:14;:27;15537:8;15546:1;15537:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;15522:27:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;15522:27:0;:34;;-1:-1:-1;;15522:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15502:3;::::1;::::0;::::1;:::i;:::-;;;;15461:107;;;;15385:190:::0;:::o;17471:342::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17578:30:0;::::1;17556:116;;;::::0;-1:-1:-1;;;17556:116:0;;8049:2:1;17556:116:0::1;::::0;::::1;8031:21:1::0;8088:2;8068:18;;;8061:30;8127:34;8107:18;;;8100:62;-1:-1:-1;;;8178:18:1;;;8171:34;8222:19;;17556:116:0::1;7847:400:1::0;17556:116:0::1;-1:-1:-1::0;;;;;17691:19:0;::::1;17683:66;;;::::0;-1:-1:-1;;;17683:66:0;;8454:2:1;17683:66:0::1;::::0;::::1;8436:21:1::0;8493:2;8473:18;;;8466:30;8532:34;8512:18;;;8505:62;-1:-1:-1;;;8583:18:1;;;8576:32;8625:19;;17683:66:0::1;8252:398:1::0;17683:66:0::1;17760:9;:19:::0;;-1:-1:-1;;;;;;17760:19:0::1;;-1:-1:-1::0;;;;;17760:19:0;;::::1;;;::::0;;17790:7:::1;:15:::0;;-1:-1:-1;;;;;;17790:15:0::1;::::0;;;::::1;;::::0;;17471:342::o;10305:85::-;10344:13;10377:5;10370:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10305:85;:::o;11298:193::-;11400:4;11422:39;1030:10;11445:7;11454:6;11422:8;:39::i;:::-;-1:-1:-1;11479:4:0;11298:193;;;;;:::o;16530:108::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;16605:15:::1;:25:::0;16530:108::o;15583:181::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;15661:9:::1;15656:101;15680:8;:15;15676:1;:19;15656:101;;;15741:4;15717:8;:21;15726:8;15735:1;15726:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;15717:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;15717:21:0;:28;;-1:-1:-1;;15717:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15697:3;::::1;::::0;::::1;:::i;:::-;;;;15656:101;;11499:352:::0;11631:4;11648:36;11658:6;11666:9;11677:6;11648:9;:36::i;:::-;-1:-1:-1;;;;;11766:19:0;;;;;;:11;:19;;;;;;;;1030:10;11766:33;;;;;;;;;11695:126;;11718:6;;11766:44;;11803:6;;11766:44;:::i;:::-;11695:8;:126::i;:::-;-1:-1:-1;11839:4:0;11499:352;;;;;:::o;13689:321::-;13783:7;13841;;13830;:18;;13808:110;;;;-1:-1:-1;;;13808:110:0;;9375:2:1;13808:110:0;;;9357:21:1;9414:2;9394:18;;;9387:30;9453:34;9433:18;;;9426:62;-1:-1:-1;;;9504:18:1;;;9497:40;9554:19;;13808:110:0;9173:406:1;13808:110:0;13929:19;13951:10;:8;:10::i;:::-;13929:32;-1:-1:-1;13979:23:0;13929:32;13979:7;:23;:::i;:::-;13972:30;13689:321;-1:-1:-1;;;13689:321:0:o;14360:546::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14440:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;14432:60;;;::::0;-1:-1:-1;;;14432:60:0;;10008:2:1;14432:60:0::1;::::0;::::1;9990:21:1::0;10047:2;10027:18;;;10020:30;10086:29;10066:18;;;10059:57;10133:18;;14432:60:0::1;9806:351:1::0;14432:60:0::1;14508:9;14503:396;14527:9;:16:::0;14523:20;::::1;14503:396;;;14585:7;-1:-1:-1::0;;;;;14569:23:0::1;:9;14579:1;14569:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;14569:12:0::1;:23:::0;14565:323:::1;;14628:9;14638:16:::0;;:20:::1;::::0;14657:1:::1;::::0;14638:20:::1;:::i;:::-;14628:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;14613:9:::1;:12:::0;;-1:-1:-1;;;;;14628:31:0;;::::1;::::0;14623:1;;14613:12;::::1;;;;;:::i;:::-;;;;;;;;;:46;;;;;-1:-1:-1::0;;;;;14613:46:0::1;;;;;-1:-1:-1::0;;;;;14613:46:0::1;;;;;;14717:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;14697:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:31:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;14678:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:50;;;;14747:7:::1;:16:::0;;;;;:20;;;14786:11:::1;:20:::0;;;:28;;-1:-1:-1;;14786:28:0::1;::::0;;14833:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;14833:15:0;;;;;-1:-1:-1;;;;;;14833:15:0::1;::::0;;;;;15461:107:::1;15385:190:::0;:::o;14565:323::-:1;14545:3:::0;::::1;::::0;::::1;:::i;:::-;;;;14503:396;;11859:299:::0;1030:10;11974:4;12068:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12068:34:0;;;;;;;;;;11974:4;;11996:132;;12046:7;;12068:49;;12106:10;;12068:49;:::i;12706:407::-;1030:10;12758:14;12821:19;;;:11;:19;;;;;;;;12820:20;12798:114;;;;-1:-1:-1;;;12798:114:0;;10799:2:1;12798:114:0;;;10781:21:1;10838:2;10818:18;;;10811:30;10877:34;10857:18;;;10850:62;-1:-1:-1;;;10928:18:1;;;10921:42;10980:19;;12798:114:0;10597:408:1;12798:114:0;12923:15;12952:10;:8;:10::i;:::-;12941:22;;:7;:22;:::i;:::-;-1:-1:-1;;;;;12992:15:0;;;;;;:7;:15;;;;;;12923:40;;-1:-1:-1;12992:27:0;;12923:40;;12992:27;:::i;:::-;-1:-1:-1;;;;;12974:15:0;;;;;;:7;:15;;;;;:45;13040:7;;:19;;13051:7;;13040:19;:::i;:::-;13030:7;:29;13083:10;;:22;;13097:7;;13083:22;:::i;:::-;13070:10;:35;-1:-1:-1;;;12706:407:0:o;14914:113::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14985:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;14985:34:0::1;15015:4;14985:34;::::0;;14914:113::o;26478:716::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;26710:13:::1;:30:::0;;;26751:12:::1;:28:::0;;;26790:14:::1;:32:::0;;;26833:16:::1;:36:::0;;;26880:11:::1;:26:::0;;;27114:6:::1;::::0;26894:12;26852:17;26807:15;26939:47:::1;26766:13:::0;26726:14;26939:47:::1;:::i;:::-;:83;;;;:::i;:::-;:121;;;;:::i;:::-;:154;;;;:::i;:::-;:181;;26917:269;;;::::0;-1:-1:-1;;;26917:269:0;;11212:2:1;26917:269:0::1;::::0;::::1;11194:21:1::0;11251:2;11231:18;;;11224:30;11290:34;11270:18;;;11263:62;-1:-1:-1;;;11341:18:1;;;11334:36;11387:19;;26917:269:0::1;11010:402:1::0;26917:269:0::1;26478:716:::0;;;;;:::o;13121:560::-;13239:7;13283;;13272;:18;;13264:62;;;;-1:-1:-1;;;13264:62:0;;11619:2:1;13264:62:0;;;11601:21:1;11658:2;11638:18;;;11631:30;11697:33;11677:18;;;11670:61;11748:18;;13264:62:0;11417:355:1;13264:62:0;13342:17;13337:337;;13376:15;13405:10;:8;:10::i;:::-;13394:22;;:7;:22;:::i;:::-;13376:40;-1:-1:-1;13431:14:0;;-1:-1:-1;13431:14:0;13337:337;13478:15;13507:10;:8;:10::i;:::-;13496:22;;:7;:22;:::i;:::-;13478:40;;13533:23;13613:10;:8;:10::i;:::-;13587:22;13601:7;13587:13;:22::i;:::-;:37;;;;:::i;:::-;13559:66;;:7;:66;:::i;:::-;13533:92;-1:-1:-1;13640:22:0;;-1:-1:-1;;13640:22:0;15035:166;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15115:20:0;::::1;15107:44;;;::::0;-1:-1:-1;;;15107:44:0;;11979:2:1;15107:44:0::1;::::0;::::1;11961:21:1::0;12018:2;11998:18;;;11991:30;-1:-1:-1;;;12037:18:1;;;12030:41;12088:18;;15107:44:0::1;11777:335:1::0;15107:44:0::1;15162:13;:31:::0;;-1:-1:-1;;;;;;15162:31:0::1;-1:-1:-1::0;;;;;15162:31:0;;;::::1;::::0;;;::::1;::::0;;15035:166::o;16290:118::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;16370:20:::1;:30:::0;16290:118::o;14018:334::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14101:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;14100:21;14092:61;;;::::0;-1:-1:-1;;;14092:61:0;;10008:2:1;14092:61:0::1;::::0;::::1;9990:21:1::0;10047:2;10027:18;;;10020:30;10086:29;10066:18;;;10059:57;10133:18;;14092:61:0::1;9806:351:1::0;14092:61:0::1;-1:-1:-1::0;;;;;14168:16:0;::::1;14187:1;14168:16:::0;;;:7:::1;:16;::::0;;;;;:20;14164:109:::1;;-1:-1:-1::0;;;;;14244:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;14224:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;14205:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;14164:109:::1;-1:-1:-1::0;;;;;14283:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;14283:27:0::1;14306:4;14283:27:::0;;::::1;::::0;;;14321:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;14321:23:0::1;::::0;;::::1;::::0;;14018:334::o;15772:185::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;15853:9:::1;15848:102;15872:8;:15;15868:1;:19;15848:102;;;15933:5;15909:8;:21;15918:8;15927:1;15918:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;15909:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;15909:21:0;:29;;-1:-1:-1;;15909:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15889:3;::::1;::::0;::::1;:::i;:::-;;;;15848:102;;16821:108:::0;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;16891:21:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;16891:30:0;;::::1;::::0;;;::::1;::::0;;16821:108::o;25608:790::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;25839:20:::1;:37:::0;;;25887:19:::1;:35:::0;;;25933:21:::1;:39:::0;;;25983:23:::1;:43:::0;;;26037:18:::1;:33:::0;;;26313:11:::1;::::0;26058:12;25957:15;26009:17;26103:61:::1;25909:13:::0;25862:14;26103:61:::1;:::i;17328:135::-:0;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17412:35:0::1;17450:5;17412:35:::0;;;:23:::1;:35;::::0;;;;:43;;-1:-1:-1;;17412:43:0::1;::::0;;17328:135::o;16937:241::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17043:26:0;::::1;17021:112;;;::::0;-1:-1:-1;;;17021:112:0;;12319:2:1;17021:112:0::1;::::0;::::1;12301:21:1::0;12358:2;12338:18;;;12331:30;12397:34;12377:18;;;12370:62;-1:-1:-1;;;12448:18:1;;;12441:34;12492:19;;17021:112:0::1;12117:400:1::0;17021:112:0::1;17144:11;:26:::0;;-1:-1:-1;;;;;;17144:26:0::1;-1:-1:-1::0;;;;;17144:26:0;;;::::1;::::0;;;::::1;::::0;;16937:241::o;10693:198::-;-1:-1:-1;;;;;10783:20:0;;10759:7;10783:20;;;:11;:20;;;;;;;;10779:49;;;-1:-1:-1;;;;;;10812:16:0;;;;;:7;:16;;;;;;;10693:198::o;10779:49::-;-1:-1:-1;;;;;10866:16:0;;;;;;:7;:16;;;;;;10846:37;;:19;:37::i;1695:157::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;1802:1:::1;1786:6:::0;;1765:40:::1;::::0;-1:-1:-1;;;;;1786:6:0;;::::1;::::0;1765:40:::1;::::0;1802:1;;1765:40:::1;1841:1;1816:28:::0;;-1:-1:-1;;;;;;1816:28:0::1;::::0;;1695:157::o;24796:804::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;25026:22:::1;:39:::0;;;25076:21:::1;:37:::0;;;25124:23:::1;:41:::0;;;25176:25:::1;:45:::0;;;25232:20:::1;:35:::0;;;25520:6:::1;::::0;25255:12;25150:15;25204:17;25300:65:::1;25100:13:::0;25051:14;25300:65:::1;:::i;15965:197::-:0;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;16052:9:::1;16047:108;16071:8;:15;16067:1;:19;16047:108;;;16138:5;16108:14;:27;16123:8;16132:1;16123:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;16108:27:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;16108:27:0;:35;;-1:-1:-1;;16108:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16088:3;::::1;::::0;::::1;:::i;:::-;;;;16047:108;;10398:89:::0;10439:13;10472:7;10465:14;;;;;:::i;18012:209::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;18105:31:::1;::::0;-1:-1:-1;;;18105:31:0;;18130:4:::1;18105:31;::::0;::::1;3554:51:1::0;18140:7:0;;-1:-1:-1;;;;;18105:16:0;::::1;::::0;::::1;::::0;3527:18:1;;18105:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;18097:69;;;::::0;-1:-1:-1;;;18097:69:0;;12913:2:1;18097:69:0::1;::::0;::::1;12895:21:1::0;12952:2;12932:18;;;12925:30;-1:-1:-1;;;12971:18:1;;;12964:44;13025:18;;18097:69:0::1;12711:338:1::0;18097:69:0::1;18177:36;::::0;-1:-1:-1;;;18177:36:0;;18193:10:::1;18177:36;::::0;::::1;13228:51:1::0;13295:18;;;13288:34;;;-1:-1:-1;;;;;18177:15:0;::::1;::::0;::::1;::::0;13201:18:1;;18177:36:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18012:209:::0;;:::o;27202:90::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;27268:7:::1;:16:::0;27202:90::o;12166:309::-;1030:10;12286:4;12380:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12380:34:0;;;;;;;;;;12286:4;;12308:137;;12358:7;;12380:54;;12418:15;;12380:54;:::i;10899:199::-;11004:4;11026:42;1030:10;11050:9;11061:6;11026:9;:42::i;16416:106::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;16490:14:::1;:24:::0;16416:106::o;21654:683::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;21715:19:::1;21737:10;:8;:10::i;:::-;21715:32:::0;-1:-1:-1;21780:7:0;21758:18:::1;21821:26;21715:32:::0;21780:7;21821:26:::1;:::i;:::-;21888:10;21880:19;::::0;;;:7:::1;:19;::::0;;;;;21799:48;;-1:-1:-1;21880:33:0::1;::::0;21799:48;;21880:33:::1;:::i;:::-;21866:10;21858:19;::::0;;;:7:::1;:19;::::0;;;;;;;:55;;;;21928:11:::1;:23:::0;;;;::::1;;21924:112;;;21998:10;21990:19;::::0;;;:7:::1;:19;::::0;;;;;:34:::1;::::0;22013:10;;21990:34:::1;:::i;:::-;21976:10;21968:19;::::0;;;:7:::1;:19;::::0;;;;:56;21924:112:::1;22077:11;::::0;-1:-1:-1;;;;;22077:11:0::1;22069:20;::::0;;;:7:::1;:20;::::0;;;;;:36:::1;::::0;22093:11;;22069:36:::1;:::i;:::-;22054:11;::::0;;-1:-1:-1;;;;;22054:11:0;;::::1;22046:20;::::0;;;:7:::1;:20;::::0;;;;;;;:59;;;;22132:11;;;;::::1;22120:24:::0;;:11:::1;:24:::0;;;;;::::1;;22116:115;;;22192:11;::::0;-1:-1:-1;;;;;22192:11:0::1;22184:20;::::0;;;:7:::1;:20;::::0;;;;;:35:::1;::::0;22208:10;;22184:35:::1;:::i;:::-;22169:11;::::0;-1:-1:-1;;;;;22169:11:0::1;22161:20;::::0;;;:7:::1;:20;::::0;;;;:58;22116:115:::1;22259:7;22250:6;;:16;;;;:::i;:::-;22241:6;:25:::0;22305:11:::1;::::0;-1:-1:-1;;;;;22305:11:0::1;1030:10:::0;22291:12:::1;-1:-1:-1::0;;;;;22282:47:0::1;;22318:10;22282:47;;;;160:25:1::0;;148:2;133:18;;14:177;22282:47:0::1;;;;;;;;21704:633;;;21654:683:::0;:::o;15213:162::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15291:20:0;::::1;15283:44;;;::::0;-1:-1:-1;;;15283:44:0;;11979:2:1;15283:44:0::1;::::0;::::1;11961:21:1::0;12018:2;11998:18;;;11991:30;-1:-1:-1;;;12037:18:1;;;12030:41;12088:18;;15283:44:0::1;11777:335:1::0;16646:167:0;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;16723:21:::1;:30:::0;;-1:-1:-1;;16723:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;16769:36:::1;::::0;3155:41:1;;;16769:36:0::1;::::0;3128:18:1;16769:36:0::1;;;;;;;16646:167:::0;:::o;17186:134::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17270:35:0::1;;::::0;;;:23:::1;:35;::::0;;;;:42;;-1:-1:-1;;17270:42:0::1;17308:4;17270:42;::::0;;17186:134::o;16170:112::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16239:27:0::1;16269:5;16239:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;16239:35:0::1;::::0;;16170:112::o;17821:183::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;17922:7:::1;17897:21;:32;;17889:59;;;::::0;-1:-1:-1;;;17889:59:0;;12913:2:1;17889:59:0::1;::::0;::::1;12895:21:1::0;12952:2;12932:18;;;12925:30;-1:-1:-1;;;12971:18:1;;;12964:44;13025:18;;17889:59:0::1;12711:338:1::0;17889:59:0::1;17959:37;::::0;17967:10:::1;::::0;17959:37;::::1;;;::::0;17988:7;;17959:37:::1;::::0;;;17988:7;17967:10;17959:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;1860:321:::0;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2003:22:0;::::1;1981:110;;;::::0;-1:-1:-1;;;1981:110:0;;13785:2:1;1981:110:0::1;::::0;::::1;13767:21:1::0;13824:2;13804:18;;;13797:30;13863:34;13843:18;;;13836:62;-1:-1:-1;;;13914:18:1;;;13907:36;13960:19;;1981:110:0::1;13583:402:1::0;1981:110:0::1;2128:6;::::0;;2107:38:::1;::::0;-1:-1:-1;;;;;2107:38:0;;::::1;::::0;2128:6;::::1;::::0;2107:38:::1;::::0;::::1;2156:6;:17:::0;;-1:-1:-1;;;;;;2156:17:0::1;-1:-1:-1::0;;;;;2156:17:0;;;::::1;::::0;;;::::1;::::0;;1860:321::o;23921:793::-;1608:6;;-1:-1:-1;;;;;1608:6:0;1030:10;1608:22;1600:67;;;;-1:-1:-1;;;1600:67:0;;;;;;;:::i;:::-;24150:21:::1;:38:::0;;;24199:20:::1;:36:::0;;;24246:22:::1;:40:::0;;;24297:24:::1;:44:::0;;;24352:19:::1;:34:::0;;;24634:6:::1;::::0;24374:12;24324:17;24271:15;24419:63:::1;24222:13:::0;24174:14;24419:63:::1;:::i;27556:371::-:0;-1:-1:-1;;;;;27683:19:0;;27675:68;;;;-1:-1:-1;;;27675:68:0;;14192:2:1;27675:68:0;;;14174:21:1;14231:2;14211:18;;;14204:30;14270:34;14250:18;;;14243:62;-1:-1:-1;;;14321:18:1;;;14314:34;14365:19;;27675:68:0;13990:400:1;27675:68:0;-1:-1:-1;;;;;27762:21:0;;27754:68;;;;-1:-1:-1;;;27754:68:0;;14597:2:1;27754:68:0;;;14579:21:1;14636:2;14616:18;;;14609:30;14675:34;14655:18;;;14648:62;-1:-1:-1;;;14726:18:1;;;14719:32;14768:19;;27754:68:0;14395:398:1;27754:68:0;-1:-1:-1;;;;;27835:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;27887:32;;160:25:1;;;27887:32:0;;133:18:1;27887:32:0;;;;;;;27556:371;;;:::o;27935:2033::-;-1:-1:-1;;;;;28057:18:0;;28049:68;;;;-1:-1:-1;;;28049:68:0;;15000:2:1;28049:68:0;;;14982:21:1;15039:2;15019:18;;;15012:30;15078:34;15058:18;;;15051:62;-1:-1:-1;;;15129:18:1;;;15122:35;15174:19;;28049:68:0;14798:401:1;28049:68:0;-1:-1:-1;;;;;28136:16:0;;28128:64;;;;-1:-1:-1;;;28128:64:0;;15406:2:1;28128:64:0;;;15388:21:1;15445:2;15425:18;;;15418:30;15484:34;15464:18;;;15457:62;-1:-1:-1;;;15535:18:1;;;15528:33;15578:19;;28128:64:0;15204:399:1;28128:64:0;28220:1;28211:6;:10;28203:71;;;;-1:-1:-1;;;28203:71:0;;15810:2:1;28203:71:0;;;15792:21:1;15849:2;15829:18;;;15822:30;15888:34;15868:18;;;15861:62;-1:-1:-1;;;15939:18:1;;;15932:46;15995:19;;28203:71:0;15608:412:1;28203:71:0;-1:-1:-1;;;;;28294:20:0;;;;;;:14;:20;;;;;;;;28293:21;28285:62;;;;-1:-1:-1;;;28285:62:0;;16227:2:1;28285:62:0;;;16209:21:1;16266:2;16246:18;;;16239:30;16305;16285:18;;;16278:58;16353:18;;28285:62:0;16025:352:1;28285:62:0;-1:-1:-1;;;;;28367:18:0;;;;;;:14;:18;;;;;;;;28366:19;28358:63;;;;-1:-1:-1;;;28358:63:0;;16584:2:1;28358:63:0;;;16566:21:1;16623:2;16603:18;;;16596:30;16662:33;16642:18;;;16635:61;16713:18;;28358:63:0;16382:355:1;28358:63:0;28463:24;28478:4;28484:2;28463:14;:24::i;:::-;-1:-1:-1;;;;;28695:24:0;;28561:12;28695:24;;;:18;:24;;;;;;28576:4;;28695:24;;;:63;;-1:-1:-1;;;;;;28736:22:0;;;;;;:18;:22;;;;;;;;28695:63;:101;;;-1:-1:-1;28775:21:0;;;;;;;28695:101;28677:173;;;-1:-1:-1;28833:5:0;28677:173;28865:7;28860:736;;28889:14;22412:1;22388:21;:25;;;22424:20;:24;;;22459:22;:26;;;22496:24;:28;;;22535:19;:23;22345:221;28889:14;28860:736;;;28969:7;;-1:-1:-1;;;;;28969:7:0;;;28961:15;;;;28957:639;;29006:14;;28997:6;:23;28993:129;;;29041:13;23300:20;;23276:21;:44;23354:19;;23331:20;:42;23409:21;;23384:22;:46;23468:23;;23441:24;:50;23524:18;;23502:19;:40;23234:316;28993:129;29095:11;22638:21;;22614;:45;22693:20;;22670;:43;22749:22;;22724;:47;22809:24;;22782;:51;22866:19;;22844;:41;22574:319;28957:639;29186:7;;-1:-1:-1;;;;;29186:7:0;;;29180:13;;;;29176:420;;-1:-1:-1;;;;;29239:14:0;;;;;;:8;:14;;;;;;;;29235:255;;;29274:13;23300:20;;23276:21;:44;23354:19;;23331:20;:42;23409:21;;23384:22;:46;23468:23;;23441:24;:50;23524:18;;23502:19;:40;23234:316;29235:255;29341:15;;29332:6;:24;29328:147;;;29381:13;23300:20;;23276:21;:44;23354:19;;23331:20;:42;23409:21;;23384:22;:46;23468:23;;23441:24;:50;23524:18;;23502:19;:40;23234:316;29328:147;29443:12;22966:22;;22942:21;:46;23022:21;;22999:20;:44;23079:23;;23054:22;:48;23140:25;;23113:24;:52;23198:20;;23176:19;:42;22901:325;29176:420;29570:14;23625:13;;23601:21;:37;23672:12;;23649:20;:35;23720:14;;23695:22;:39;23772:16;;23745:24;:43;23821:11;;23799:19;:33;23558:282;29570:14;29622:7;;29612:6;;:17;29608:73;;29668:1;29646:19;:23;29608:73;-1:-1:-1;;;;;29741:27:0;;;;;;:23;:27;;;;;;;;29736:182;;29837:9;;29827:6;29811:13;29821:2;29811:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;29785:121;;;;-1:-1:-1;;;29785:121:0;;16944:2:1;29785:121:0;;;16926:21:1;16983:2;16963:18;;;16956:30;17022:26;17002:18;;;16995:54;17066:18;;29785:121:0;16742:348:1;29785:121:0;29928:32;29943:4;29949:2;29953:6;29928:14;:32::i;:::-;28038:1930;27935:2033;;;:::o;18952:163::-;18994:7;19015:15;19032;19051:19;:17;:19::i;:::-;19014:56;;-1:-1:-1;19014:56:0;-1:-1:-1;19088:19:0;19014:56;;19088:19;:::i;:::-;19081:26;;;;18952:163;:::o;18317:371::-;18380:7;18400:18;18646:3;18620:19;;18574:24;;18530:22;;18488:20;;18446:21;;:63;;;;:::i;:::-;:107;;;;:::i;:::-;:153;;;;:::i;:::-;:194;;;;:::i;:::-;18422:219;;:7;:219;:::i;:::-;18421:229;;;;:::i;35321:2321::-;35668:28;35699:24;35717:4;35699:9;:24::i;:::-;35778:20;;35830:16;;35668:55;;-1:-1:-1;35754:44:0;;;;35830:16;;;;;35829:17;:44;;;;;35863:10;35829:44;:76;;;;-1:-1:-1;35898:7:0;;-1:-1:-1;;;;;35890:15:0;;;35898:7;;35890:15;;35829:76;:114;;;;-1:-1:-1;35922:21:0;;;;35829:114;:181;;;;-1:-1:-1;;;;;;35962:21:0;;35978:4;35962:21;:47;;;;-1:-1:-1;36001:7:0;;-1:-1:-1;;;;;35987:22:0;;;36001:7;;35987:22;35962:47;35960:50;35829:181;35811:1824;;;36213:20;;36190:43;;36281:65;36298:4;36313:9;;;;;;;;;-1:-1:-1;;;;;36313:9:0;36325:20;36281:8;:65::i;:::-;36452:18;36473:26;36497:1;36473:20;:26;:::i;:::-;36452:47;-1:-1:-1;36514:30:0;36547:52;36452:47;36547:20;:52;:::i;:::-;36759:9;;36514:85;;-1:-1:-1;36641:21:0;;36728:66;;36759:9;;;-1:-1:-1;;;;;36759:9:0;36514:85;36728:22;:66::i;:::-;37148:31;37182:57;37224:14;37182:21;:57;:::i;:::-;37338:9;;37148:91;;-1:-1:-1;37293:167:0;;-1:-1:-1;;;;;37338:9:0;;;;;37367:7;1519;1546:6;-1:-1:-1;;;;;1546:6:0;;1481:79;37367:7;37393:10;37422:23;37293:18;:167::i;:::-;37482:141;;;17297:25:1;;;17353:2;17338:18;;17331:34;;;17381:18;;;17374:34;;;37482:141:0;;17285:2:1;17270:18;37482:141:0;;;;;;;36037:1598;;;;35379:2263;;35321:2321;;:::o;30049:602::-;-1:-1:-1;;;;;30181:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;30205:22:0;;;;;;:11;:22;;;;;;;;30204:23;30181:46;30177:467;;;30244:48;30266:6;30274:9;30285:6;30244:21;:48::i;30177:467::-;-1:-1:-1;;;;;30315:19:0;;;;;;:11;:19;;;;;;;;30314:20;:46;;;;-1:-1:-1;;;;;;30338:22:0;;;;;;:11;:22;;;;;;;;30314:46;30310:334;;;30377:46;30397:6;30405:9;30416:6;30377:19;:46::i;30310:334::-;-1:-1:-1;;;;;30445:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;30468:22:0;;;;;;:11;:22;;;;;;;;30445:45;30441:203;;;30507:48;30529:6;30537:9;30548:6;30507:21;:48::i;30441:203::-;30588:44;30606:6;30614:9;30625:6;30588:17;:44::i;19123:602::-;19221:7;;19257;;19174;;;;;19275:336;19299:9;:16;19295:20;;19275:336;;;19383:7;19359;:21;19367:9;19377:1;19367:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19367:12:0;19359:21;;;;;;;;;;;;;:31;;:83;;;19435:7;19411;:21;19419:9;19429:1;19419:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19419:12:0;19411:21;;;;;;;;;;;;;:31;19359:83;19337:146;;;19466:7;;19475;;19458:25;;;;;;;19123:602;;:::o;19337:146::-;19519:7;:21;19527:9;19537:1;19527:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19527:12:0;19519:21;;;;;;;;;;;;;19508:33;;:7;:33;:::i;:::-;19498:43;;19577:7;:21;19585:9;19595:1;19585:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19585:12:0;19577:21;;;;;;;;;;;;;19566:33;;:7;:33;:::i;:::-;19556:43;-1:-1:-1;19317:3:0;;;;:::i;:::-;;;;19275:336;;;;19646:7;;19635;;:19;;;;:::i;:::-;19625:7;:29;19621:60;;;19664:7;;19673;;19656:25;;;;;;19123:602;;:::o;19621:60::-;19700:7;;19709;;-1:-1:-1;19123:602:0;-1:-1:-1;19123:602:0:o;37670:607::-;37919:16;;;37933:1;37919:16;;;;;;;;37812:13;;37774:22;;37919:16;37933:1;37919:16;;;;;;;;;;-1:-1:-1;37919:16:0;37895:40;;37964:4;37946;37951:1;37946:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;37946:23:0;;;-1:-1:-1;;;;;37946:23:0;;;;;37990:9;-1:-1:-1;;;;;37990:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37980:4;37985:1;37980:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;37980:26:0;;;:7;;;;;;;;;:26;38045:60;;;38120:11;38146:1;38190:4;38217;38237:21;:15;38255:3;38237:21;:::i;:::-;38045:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37763:514;;37670:607;;:::o;38285:516::-;38486:13;-1:-1:-1;;;;;38543:25:0;;;38576:9;38609:4;38629:11;38448:22;;38741:5;38761:21;:15;38779:3;38761:21;:::i;:::-;38543:250;;;;;;-1:-1:-1;;;;;;38543:250:0;;;-1:-1:-1;;;;;19019:15:1;;;38543:250:0;;;19001:34:1;19051:18;;;19044:34;;;;19094:18;;;19087:34;;;;19137:18;;;19130:34;;;;19201:15;;;19180:19;;;19173:44;19233:19;;;19226:35;;;;18935:19;;38543:250:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32933:1151::-;33069:19;33091:10;:8;:10::i;:::-;33069:32;;33112:23;33149:22;33163:7;33149:13;:22::i;:::-;33138:34;;:7;:34;:::i;:::-;33112:60;-1:-1:-1;33183:15:0;33201:23;33212:11;33201:7;:23;:::i;:::-;33183:41;;33235:23;33311:11;33285:22;33299:7;33285:13;:22::i;:::-;:38;;;;:::i;:::-;33261:63;;:7;:63;:::i;:::-;-1:-1:-1;;;;;33353:15:0;;;;;;:7;:15;;;;;;33235:89;;-1:-1:-1;33353:27:0;;33372:7;;33353:27;:::i;:::-;-1:-1:-1;;;;;33335:15:0;;;;;;:7;:15;;;;;;;;:45;;;;33409:7;:15;;;;:27;;33428:7;;33409:27;:::i;:::-;-1:-1:-1;;;;;33391:15:0;;;;;;;:7;:15;;;;;;:45;;;;33468:18;;;;;;;:38;;33490:15;;33468:38;:::i;:::-;-1:-1:-1;;;;;33447:18:0;;;;;;:7;:18;;;;;:59;33521:20;;:24;33517:100;;33562:43;33584:7;33593:11;33562:21;:43::i;:::-;33631:22;;:26;33627:94;;33674:35;33688:7;33697:11;33674:13;:35::i;:::-;33735:24;;:28;33731:98;;33780:37;33796:7;33805:11;33780:15;:37::i;:::-;33843:21;;:25;33839:78;;33885:20;33897:7;33885:11;:20::i;:::-;33931:19;;:23;33927:90;;33971:34;33984:7;33993:11;33971:12;:34::i;:::-;34049:9;-1:-1:-1;;;;;34032:44:0;34041:6;-1:-1:-1;;;;;34032:44:0;;34060:15;34032:44;;;;160:25:1;;148:2;133:18;;14:177;34032:44:0;;;;;;;;33058:1026;;;;32933:1151;;;:::o;31762:1163::-;31896:19;31918:10;:8;:10::i;:::-;31896:32;;31939:23;31976:22;31990:7;31976:13;:22::i;:::-;31965:34;;:7;:34;:::i;:::-;31939:60;-1:-1:-1;32010:15:0;32028:23;32039:11;32028:7;:23;:::i;:::-;32010:41;;32062:23;32138:11;32112:22;32126:7;32112:13;:22::i;:::-;:38;;;;:::i;:::-;32088:63;;:7;:63;:::i;:::-;-1:-1:-1;;;;;32180:15:0;;;;;;:7;:15;;;;;;32062:89;;-1:-1:-1;32180:27:0;;32199:7;;32180:27;:::i;:::-;-1:-1:-1;;;;;32162:15:0;;;;;;;:7;:15;;;;;;;;:45;;;;32239:18;;;;;:7;:18;;;;;:38;;32261:15;;32239:38;:::i;:::-;-1:-1:-1;;;;;32218:18:0;;;;;;:7;:18;;;;;;;;:59;;;;32309:7;:18;;;;:38;;32331:15;;32309:38;:::i;34092:1221::-;34228:19;34250:10;:8;:10::i;:::-;34228:32;;34271:23;34308:22;34322:7;34308:13;:22::i;:::-;34297:34;;:7;:34;:::i;:::-;34271:60;-1:-1:-1;34342:15:0;34360:23;34371:11;34360:7;:23;:::i;:::-;34342:41;;34394:23;34470:11;34444:22;34458:7;34444:13;:22::i;:::-;:38;;;;:::i;:::-;34420:63;;:7;:63;:::i;:::-;-1:-1:-1;;;;;34512:15:0;;;;;;:7;:15;;;;;;34394:89;;-1:-1:-1;34512:27:0;;34531:7;;34512:27;:::i;:::-;-1:-1:-1;;;;;34494:15:0;;;;;;:7;:15;;;;;;;;:45;;;;34568:7;:15;;;;:27;;34587:7;;34568:27;:::i;30659:1095::-;30791:19;30813:10;:8;:10::i;:::-;30791:32;;30834:23;30871:22;30885:7;30871:13;:22::i;:::-;30860:34;;:7;:34;:::i;:::-;30834:60;-1:-1:-1;30905:15:0;30923:23;30934:11;30923:7;:23;:::i;:::-;30905:41;;30957:23;31033:11;31007:22;31021:7;31007:13;:22::i;:::-;:38;;;;:::i;:::-;30983:63;;:7;:63;:::i;:::-;-1:-1:-1;;;;;31075:15:0;;;;;;:7;:15;;;;;;30957:89;;-1:-1:-1;31075:27:0;;31094:7;;31075:27;:::i;:::-;-1:-1:-1;;;;;31057:15:0;;;;;;;:7;:15;;;;;;:45;;;;31134:18;;;;;;;:38;;31156:15;;31134:38;:::i;:::-;-1:-1:-1;;;;;31113:18:0;;;;;;:7;:18;;;;;:59;31187:20;;:24;31183:100;;31228:43;31250:7;31259:11;31228:21;:43::i;:::-;31297:21;;:25;31293:78;;31339:20;31351:7;31339:11;:20::i;:::-;31385:22;;:26;31381:94;;31428:35;31442:7;31451:11;31428:13;:35::i;:::-;31491:24;;:28;31487:98;;31536:37;31552:7;31561:11;31536:15;:37::i;19733:476::-;19836:16;19893:3;19867:20;;19856:7;:32;;;;:::i;:::-;19855:42;;;;:::i;:::-;19836:61;-1:-1:-1;19908:16:0;19927:24;19939:11;19836:61;19927:24;:::i;:::-;20003:4;19987:22;;;;:7;:22;;;;;;19908:43;;-1:-1:-1;19987:35:0;;19908:43;;19987:35;:::i;:::-;19978:4;19962:22;;;;:7;:22;;;;;;;;:60;;;;20037:11;:26;;;;;;20033:105;;;20119:4;20103:22;;;;:7;:22;;;;;;:35;;20129:8;;20103:35;:::i;:::-;20094:4;20078:22;;;;:7;:22;;;;;:60;20033:105;20185:4;1030:10;20163:12;934:115;20217:450;20298:17;20358:3;20330:22;;20319:7;:34;;;;:::i;:::-;20318:44;;;;:::i;:::-;20298:64;-1:-1:-1;20373:17:0;20393:25;20406:11;20298:64;20393:25;:::i;:::-;20460:11;;-1:-1:-1;;;;;20460:11:0;20452:20;;;;:7;:20;;;;;;20373:45;;-1:-1:-1;20452:34:0;;20373:45;;20452:34;:::i;:::-;20437:11;;;-1:-1:-1;;;;;20437:11:0;;;20429:20;;;;:7;:20;;;;;;;;:57;;;;20513:11;;;;;20501:24;;:11;:24;;;;;;;20497:100;;;20571:11;;-1:-1:-1;;;;;20571:11:0;20563:20;;;;:7;:20;;;;;;:34;;20587:9;;20563:34;:::i;:::-;20548:11;;-1:-1:-1;;;;;20548:11:0;20540:20;;;;:7;:20;;;;;:57;20497:100;20636:11;;-1:-1:-1;;;;;20636:11:0;1030:10;20622:12;934:115;20675:478;20758:19;20822:3;20792:24;;20781:7;:36;;;;:::i;:::-;20780:46;;;;:::i;:::-;20758:68;-1:-1:-1;20837:19:0;20859:27;20874:11;20758:68;20859:27;:::i;:::-;20930:13;;-1:-1:-1;;;;;20930:13:0;20922:22;;;;:7;:22;;;;;;20837:49;;-1:-1:-1;20922:38:0;;20837:49;;20922:38;:::i;:::-;20905:13;;;-1:-1:-1;;;;;20905:13:0;;;20897:22;;;;:7;:22;;;;;;;;:63;;;;20987:13;;;;;20975:26;;:11;:26;;;;;;;20971:108;;;21049:13;;-1:-1:-1;;;;;21049:13:0;21041:22;;;;:7;:22;;;;;;:38;;21067:11;;21041:38;:::i;:::-;21024:13;;-1:-1:-1;;;;;21024:13:0;21016:22;;;;:7;:22;;;;;:63;20971:108;21118:13;;-1:-1:-1;;;;;21118:13:0;1030:10;21104:12;934:115;18696:248;18753:12;18807:3;18780:21;;18769:7;:33;;;;:::i;:::-;18768:43;;;;:::i;:::-;18753:58;;18822:12;18845:10;:8;:10::i;:::-;18837:19;;:4;:19;:::i;:::-;18822:34;;18888:4;18877:7;;:16;;;;:::i;:::-;18867:7;:26;18917:10;;:19;;18931:4;;18917:19;:::i;21161:485::-;21241:15;21296:3;21271:19;;21260:7;:31;;;;:::i;:::-;21259:41;;;;:::i;:::-;21241:59;-1:-1:-1;21311:16:0;21330:23;21341:11;21241:59;21330:23;:::i;:::-;21395:11;;-1:-1:-1;;;;;21395:11:0;21387:20;;;;:7;:20;;;;;;21311:42;;-1:-1:-1;21387:33:0;;21311:42;;21387:33;:::i;:::-;21372:11;;;-1:-1:-1;;;;;21372:11:0;;;21364:20;;;;:7;:20;;;;;;;;:56;;;;21447:11;;;;;21435:24;;:11;:24;;;;;;;21431:112;;;21507:11;;-1:-1:-1;;;;;21507:11:0;21499:20;;;;:7;:20;;;;;;:32;;21523:7;;21499:32;:::i;:::-;21484:11;;-1:-1:-1;;;;;21484:11:0;21476:20;;;;:7;:20;;;;;:55;21431:112;21571:7;21562:6;;:16;;;;:::i;196:127:1:-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:131;-1:-1:-1;;;;;403:31:1;;393:42;;383:70;;449:1;446;439:12;383:70;328:131;:::o;464:134::-;532:20;;561:31;532:20;561:31;:::i;:::-;464:134;;;:::o;603:1121::-;687:6;718:2;761;749:9;740:7;736:23;732:32;729:52;;;777:1;774;767:12;729:52;817:9;804:23;846:18;887:2;879:6;876:14;873:34;;;903:1;900;893:12;873:34;941:6;930:9;926:22;916:32;;986:7;979:4;975:2;971:13;967:27;957:55;;1008:1;1005;998:12;957:55;1044:2;1031:16;1066:2;1062;1059:10;1056:36;;;1072:18;;:::i;:::-;1118:2;1115:1;1111:10;1150:2;1144:9;1213:2;1209:7;1204:2;1200;1196:11;1192:25;1184:6;1180:38;1268:6;1256:10;1253:22;1248:2;1236:10;1233:18;1230:46;1227:72;;;1279:18;;:::i;:::-;1315:2;1308:22;1365:18;;;1399:15;;;;-1:-1:-1;1441:11:1;;;1437:20;;;1469:19;;;1466:39;;;1501:1;1498;1491:12;1466:39;1525:11;;;;1545:148;1561:6;1556:3;1553:15;1545:148;;;1627:23;1646:3;1627:23;:::i;:::-;1615:36;;1578:12;;;;1671;;;;1545:148;;;1712:6;603:1121;-1:-1:-1;;;;;;;;603:1121:1:o;1729:408::-;1817:6;1825;1878:2;1866:9;1857:7;1853:23;1849:32;1846:52;;;1894:1;1891;1884:12;1846:52;1933:9;1920:23;1952:31;1977:5;1952:31;:::i;:::-;2002:5;-1:-1:-1;2059:2:1;2044:18;;2031:32;2072:33;2031:32;2072:33;:::i;:::-;2124:7;2114:17;;;1729:408;;;;;:::o;2142:548::-;2254:4;2283:2;2312;2301:9;2294:21;2344:6;2338:13;2387:6;2382:2;2371:9;2367:18;2360:34;2412:1;2422:140;2436:6;2433:1;2430:13;2422:140;;;2531:14;;;2527:23;;2521:30;2497:17;;;2516:2;2493:26;2486:66;2451:10;;2422:140;;;2426:3;2611:1;2606:2;2597:6;2586:9;2582:22;2578:31;2571:42;2681:2;2674;2670:7;2665:2;2657:6;2653:15;2649:29;2638:9;2634:45;2630:54;2622:62;;;;2142:548;;;;:::o;2695:315::-;2763:6;2771;2824:2;2812:9;2803:7;2799:23;2795:32;2792:52;;;2840:1;2837;2830:12;2792:52;2879:9;2866:23;2898:31;2923:5;2898:31;:::i;:::-;2948:5;3000:2;2985:18;;;;2972:32;;-1:-1:-1;;;2695:315:1:o;3207:180::-;3266:6;3319:2;3307:9;3298:7;3294:23;3290:32;3287:52;;;3335:1;3332;3325:12;3287:52;-1:-1:-1;3358:23:1;;3207:180;-1:-1:-1;3207:180:1:o;3824:456::-;3901:6;3909;3917;3970:2;3958:9;3949:7;3945:23;3941:32;3938:52;;;3986:1;3983;3976:12;3938:52;4025:9;4012:23;4044:31;4069:5;4044:31;:::i;:::-;4094:5;-1:-1:-1;4151:2:1;4136:18;;4123:32;4164:33;4123:32;4164:33;:::i;:::-;3824:456;;4216:7;;-1:-1:-1;;;4270:2:1;4255:18;;;;4242:32;;3824:456::o;4702:247::-;4761:6;4814:2;4802:9;4793:7;4789:23;4785:32;4782:52;;;4830:1;4827;4820:12;4782:52;4869:9;4856:23;4888:31;4913:5;4888:31;:::i;4954:454::-;5049:6;5057;5065;5073;5081;5134:3;5122:9;5113:7;5109:23;5105:33;5102:53;;;5151:1;5148;5141:12;5102:53;-1:-1:-1;;5174:23:1;;;5244:2;5229:18;;5216:32;;-1:-1:-1;5295:2:1;5280:18;;5267:32;;5346:2;5331:18;;5318:32;;-1:-1:-1;5397:3:1;5382:19;5369:33;;-1:-1:-1;4954:454:1;-1:-1:-1;4954:454:1:o;5413:118::-;5499:5;5492:13;5485:21;5478:5;5475:32;5465:60;;5521:1;5518;5511:12;5536:309;5601:6;5609;5662:2;5650:9;5641:7;5637:23;5633:32;5630:52;;;5678:1;5675;5668:12;5630:52;5714:9;5701:23;5691:33;;5774:2;5763:9;5759:18;5746:32;5787:28;5809:5;5787:28;:::i;5850:241::-;5906:6;5959:2;5947:9;5938:7;5934:23;5930:32;5927:52;;;5975:1;5972;5965:12;5927:52;6014:9;6001:23;6033:28;6055:5;6033:28;:::i;7082:356::-;7284:2;7266:21;;;7303:18;;;7296:30;7362:34;7357:2;7342:18;;7335:62;7429:2;7414:18;;7082:356::o;7443:127::-;7504:10;7499:3;7495:20;7492:1;7485:31;7535:4;7532:1;7525:15;7559:4;7556:1;7549:15;7575:127;7636:10;7631:3;7627:20;7624:1;7617:31;7667:4;7664:1;7657:15;7691:4;7688:1;7681:15;7707:135;7746:3;7767:17;;;7764:43;;7787:18;;:::i;:::-;-1:-1:-1;7834:1:1;7823:13;;7707:135::o;8655:380::-;8734:1;8730:12;;;;8777;;;8798:61;;8852:4;8844:6;8840:17;8830:27;;8798:61;8905:2;8897:6;8894:14;8874:18;8871:38;8868:161;;8951:10;8946:3;8942:20;8939:1;8932:31;8986:4;8983:1;8976:15;9014:4;9011:1;9004:15;8868:161;;8655:380;;;:::o;9040:128::-;9107:9;;;9128:11;;;9125:37;;;9142:18;;:::i;9584:217::-;9624:1;9650;9640:132;;9694:10;9689:3;9685:20;9682:1;9675:31;9729:4;9726:1;9719:15;9757:4;9754:1;9747:15;9640:132;-1:-1:-1;9786:9:1;;9584:217::o;10162:168::-;10235:9;;;10266;;10283:15;;;10277:22;;10263:37;10253:71;;10304:18;;:::i;10335:127::-;10396:10;10391:3;10387:20;10384:1;10377:31;10427:4;10424:1;10417:15;10451:4;10448:1;10441:15;10467:125;10532:9;;;10553:10;;;10550:36;;;10566:18;;:::i;12522:184::-;12592:6;12645:2;12633:9;12624:7;12620:23;12616:32;12613:52;;;12661:1;12658;12651:12;12613:52;-1:-1:-1;12684:16:1;;12522:184;-1:-1:-1;12522:184:1:o;13333:245::-;13400:6;13453:2;13441:9;13432:7;13428:23;13424:32;13421:52;;;13469:1;13466;13459:12;13421:52;13501:9;13495:16;13520:28;13542:5;13520:28;:::i;17419:251::-;17489:6;17542:2;17530:9;17521:7;17517:23;17513:32;17510:52;;;17558:1;17555;17548:12;17510:52;17590:9;17584:16;17609:31;17634:5;17609:31;:::i;17675:980::-;17937:4;17985:3;17974:9;17970:19;18016:6;18005:9;17998:25;18042:2;18080:6;18075:2;18064:9;18060:18;18053:34;18123:3;18118:2;18107:9;18103:18;18096:31;18147:6;18182;18176:13;18213:6;18205;18198:22;18251:3;18240:9;18236:19;18229:26;;18290:2;18282:6;18278:15;18264:29;;18311:1;18321:195;18335:6;18332:1;18329:13;18321:195;;;18400:13;;-1:-1:-1;;;;;18396:39:1;18384:52;;18491:15;;;;18456:12;;;;18432:1;18350:9;18321:195;;;-1:-1:-1;;;;;;;18572:32:1;;;;18567:2;18552:18;;18545:60;-1:-1:-1;;;18636:3:1;18621:19;18614:35;18533:3;17675:980;-1:-1:-1;;;17675:980:1:o;19272:306::-;19360:6;19368;19376;19429:2;19417:9;19408:7;19404:23;19400:32;19397:52;;;19445:1;19442;19435:12;19397:52;19474:9;19468:16;19458:26;;19524:2;19513:9;19509:18;19503:25;19493:35;;19568:2;19557:9;19553:18;19547:25;19537:35;;19272:306;;;;;:::o

Swarm Source

ipfs://7d3d7e91ccde80fb3a09cfe315c47d9552a1e1bb4ddc5bbd19eaeff2a9128cde
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.