ETH Price: $2,373.22 (-2.68%)

Token

FSOCIETY (FSOCIETY)
 

Overview

Max Total Supply

1,000,000,000 FSOCIETY

Holders

162

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
fire4effect.eth
Balance
0 FSOCIETY

Value
$0.00
0x85cdebb34b4c2edc66c0cf408afdb10213e414a9
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:
FSOCIETY

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-23
*/

/*
We are FSOCIETY. We are MANY.

Website: https://Fsociety.pro
Twitter: https://twitter.com/FsocietyERC20

𝙵𝚂𝙾𝙲𝙸𝙴𝚃𝚈 𝚑𝚊𝚜 𝚣𝚎𝚛𝚘 𝚝𝚘𝚕𝚎𝚛𝚊𝚗𝚌𝚎 𝚏𝚘𝚛 𝚝𝚑𝚎 𝚞𝚜𝚎 𝚘𝚏 𝚝𝚑𝚎 𝚌𝚘𝚛𝚙𝚘𝚛𝚊𝚝𝚎 𝚋𝚘𝚝𝚜 𝚘𝚏 𝚝𝚑𝚒𝚜 𝚠𝚘𝚛𝚕𝚍. 𝙱𝚘𝚝𝚜 𝚠𝚒𝚕𝚕 𝚋𝚎 𝚘𝚜𝚝𝚛𝚊𝚌𝚒𝚣𝚎𝚍. You have been warned.
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.1;

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) {
        return msg.sender;
    }

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

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

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

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

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

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

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

// pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

// pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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

    function WETH() external pure returns (address);

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

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

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

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        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 swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

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

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

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

// pragma solidity >=0.6.2;

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

    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;
}

contract FSOCIETY is Context, IERC20, Ownable {
    using Address for address;

    string private _name = "FSOCIETY";
    string private _symbol = "FSOCIETY";
    uint8 private _decimals = 9;
    uint256 private initialsupply = 1_000_000_000;
    uint256 private _tTotal = initialsupply * 10**_decimals;

    address payable public _marketingWallet;
    address public _liquidityWallet;

    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) private buycooldown;
    mapping(address => uint256) private sellcooldown;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public _isExcludedFromFee;
    mapping(address => bool) public _isBlacklisted;

    struct Icooldown {
        bool buycooldownEnabled;
        bool sellcooldownEnabled;
        uint256 cooldown;
        uint256 cooldownLimit;
    }
    Icooldown public cooldownInfo =
        Icooldown({
            buycooldownEnabled: true,
            sellcooldownEnabled: true,
            cooldown: 30 seconds,
            cooldownLimit: 60 seconds
        });
    struct ILaunch {
        uint256 launchedAt;
        bool launched;
        bool launchProtection;
    }
    ILaunch public wenLaunch =
        ILaunch({
            launchedAt: 0, 
            launched: false, 
            launchProtection: true
        });

    struct ItxSettings {
        uint256 maxTxAmount;
        uint256 maxWalletAmount;
        uint256 numTokensToSwap;
        bool limited;
    }

    ItxSettings public txSettings;

    uint256 public _liquidityFee;
    uint256 public _marketingFee;
    uint256 public _buyLiquidityFee;
    uint256 public _buyMarketingFee;
    uint256 public _sellLiquidityFee;
    uint256 public _sellMarketingFee;

    uint256 public _lpFeeAccumulated;
    uint256 public _marketingFeeAccumulated;

    uint256 public _antiBlocks = 3;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled;
    bool public lpOrMarketing;

    bool public tradeEnabled;
    mapping(address => bool) public tradeAllowedList;

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

    event SniperStatus(address account, bool blacklisted);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event ToMarketing(uint256 marketingBalance);
    event SwapAndLiquify(uint256 liquidityTokens, uint256 liquidityFees);
    event Launch();

    constructor(address marketingWallet) {        
        _marketingWallet = payable(marketingWallet);
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E); // bsc pancake router 
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); //bsc test net router kiem
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //eth unisawp router

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

        _approve(_msgSender(), address(_uniswapV2Router), type(uint256).max);
        _approve(address(this), address(_uniswapV2Router), type(uint256).max);

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        setSellFee(10,50);
        setBuyFee(10,50);
        setTransferFee(10,30);
        setTxSettings(1,100,2,100,1,1000,true);

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

        tradeEnabled = false;
        tradeAllowedList[owner()] = true;
        tradeAllowedList[address(this)] = true;

        lpOrMarketing = true;

        _liquidityWallet = _msgSender();
    }

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

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

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

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

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

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

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

    function setSellFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 250);
        _sellLiquidityFee = liquidityFee;
        _sellMarketingFee = marketingFee;
    }

    function setBuyFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 250);
        _buyMarketingFee = marketingFee;
        _buyLiquidityFee = liquidityFee;
    }

    function setTransferFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 250);
        _liquidityFee = liquidityFee;
        _marketingFee = marketingFee;
    }

    function setLiquidityFees(uint256 newTransfer, uint256 newBuy, uint256 newSell) public onlyOwner {
        _liquidityFee = newTransfer;
        _buyLiquidityFee = newBuy;
        _sellLiquidityFee = newSell;
    }

    function setMarketingFees(uint256 newTransfer, uint256 newBuy, uint256 newSell) public onlyOwner {
        _marketingFee = newTransfer;
        _buyMarketingFee = newBuy;
        _sellMarketingFee = newSell;
    }

    function setCooldown(uint256 amount) external onlyOwner {
        require(amount <= cooldownInfo.cooldownLimit);
        cooldownInfo.cooldown = amount;
    }

    function setMarketingWallet(address payable newMarketingWallet) external onlyOwner {
        _marketingWallet = payable(newMarketingWallet);
    }

    function setLiquidityWallet(address newLpWallet) external onlyOwner {
        _liquidityWallet = newLpWallet;
    }

    function setTxSettings(uint256 txp, uint256 txd, uint256 mwp, uint256 mwd, uint256 sp, uint256 sd, bool limiter) public onlyOwner {
        require((_tTotal * txp) / txd >= (_tTotal / 1000), "Max Transaction must be above 0.1% of total supply.");
        require((_tTotal * mwp) / mwd >= (_tTotal / 1000), "Max Wallet must be above 0.1% of total supply.");
        uint256 newTx = (_tTotal * txp) / (txd);
        uint256 newMw = (_tTotal * mwp) / mwd;
        uint256 swapAmount = (_tTotal * sp) / (sd);
        txSettings = ItxSettings ({
            numTokensToSwap: swapAmount,
            maxTxAmount: newTx,
            maxWalletAmount: newMw,
            limited: limiter
        });
    }

    function setTradeEnabled(bool onoff) external onlyOwner {
        if (!wenLaunch.launched) {
            wenLaunch.launchedAt = block.number;
            wenLaunch.launched = true;
            swapAndLiquifyEnabled = true;            
        }

        tradeEnabled = onoff;

        if (!wenLaunch.launched) {
            emit Launch();
        }
    }

    function setAntiBlocks(uint256 _block) external onlyOwner {
        _antiBlocks = _block;
    }

    function setTradeAllowedAddress(address who, bool status) external onlyOwner {
        tradeAllowedList[who] = status;
    }

    function setLpOrMarketingStatus(bool status) external onlyOwner {
        lpOrMarketing = status;
    }

    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 setBlacklistStatus(address account, bool blacklisted) external onlyOwner {
        if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
        if (blacklisted == true) {
            _isBlacklisted[account] = true;
        } else if (blacklisted == false) {
            _isBlacklisted[account] = false;
        }
    }

    function Ox64b2c4f9(address [] calldata accounts, bool blacklisted) external onlyOwner {
        for (uint256 i; i < accounts.length; i++) {
            address account = accounts[i];
            if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
            if (blacklisted == true) {
                _isBlacklisted[account] = true;
            } else if (blacklisted == false) {
                _isBlacklisted[account] = false;
            }        
        }
    }

    function unblacklist(address account) external onlyOwner {
        _isBlacklisted[account] = false;
    }
    
    function setSniperStatus(address account, bool blacklisted) private{
        if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
        
        if (blacklisted == true) {
            _isBlacklisted[account] = true;
            emit SniperStatus(account, blacklisted);
        } 
    }

    function limits(bool onoff) public onlyOwner {
        txSettings.limited = onoff;
    }

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

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

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

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

    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 swapAndLiquify(uint256 tokenBalance) private lockTheSwap {
        uint256 initialBalance = address(this).balance;
        uint256 tokensToSwap = tokenBalance / 2;
        uint256 liquidityTokens = tokenBalance - tokensToSwap;

        if (tokensToSwap > 0) {
            swapTokensForEth(tokensToSwap);
        }

        uint256 newBalance = address(this).balance;
        uint256 liquidityBalance = uint256(newBalance - initialBalance);

        if (liquidityTokens > 0 && liquidityBalance > 0) {
            addLiquidity(liquidityTokens, liquidityBalance);
            emit SwapAndLiquify(liquidityTokens, liquidityBalance);
        }

        _lpFeeAccumulated -= tokenBalance;

        if (_lpFeeAccumulated < txSettings.numTokensToSwap && (_marketingFee + _buyMarketingFee + _sellMarketingFee) > 0) {
            lpOrMarketing = false;
        }
    }

    function swapAndMarketing(uint256 tokenBalance) private lockTheSwap {
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }

        uint256 marketingBalance = address(this).balance;
        if (marketingBalance > 0) {
            _marketingWallet.transfer(marketingBalance);
            emit ToMarketing(marketingBalance);
        }

        _marketingFeeAccumulated -= tokenBalance;

        if (_marketingFeeAccumulated < txSettings.numTokensToSwap && (_liquidityFee + _buyLiquidityFee + _sellLiquidityFee > 0)) {
            lpOrMarketing = true;
        }
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        require(amountPercentage <= 100);
        uint256 amountETH = address(this).balance;
        payable(_marketingWallet).transfer(
            (amountETH * (amountPercentage)) / (100)
        );
    }

    function clearStuckToken(address to) external onlyOwner {
        uint256 _balance = balanceOf(address(this));
        _transfer(address(this), to, _balance);
    }

    function clearStuckTokens(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0));
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        if(_allowances[address(this)][address(uniswapV2Router)] < tokenAmount) {
            _approve(address(this), address(uniswapV2Router), type(uint256).max);
        }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        if(_allowances[address(this)][address(uniswapV2Router)] < tokenAmount) {
            _approve(address(this), address(uniswapV2Router), type(uint256).max);
        }

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

    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 _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(_isBlacklisted[from] == false, "Hehe");
        require(_isBlacklisted[to] == false, "Hehe");

        if (!tradeEnabled) {
            require(tradeAllowedList[from] || tradeAllowedList[to], "Transfer: not allowed");
            require(balanceOf(uniswapV2Pair) == 0 || to != uniswapV2Pair, "Transfer: no body can sell now");
        }

        if (txSettings.limited) {
            if(from != owner() && to != owner() || to != address(0xdead) && to != address(0)) 
            {
                if (from == uniswapV2Pair || to == uniswapV2Pair
                ) {
                    if(!_isExcludedFromFee[to] && !_isExcludedFromFee[from]) {
                        require(amount <= txSettings.maxTxAmount);
                    }
                }
                if(to != address(uniswapV2Router) && to != uniswapV2Pair) {
                    if(!_isExcludedFromFee[to]) {
                        require(balanceOf(to) + amount <= txSettings.maxWalletAmount);
                    }
                }
            }
        }

        if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]
            ) {
                if (cooldownInfo.buycooldownEnabled) {
                    require(buycooldown[to] < block.timestamp);
                    buycooldown[to] = block.timestamp + (cooldownInfo.cooldown);
                }
            } else if (from != uniswapV2Pair && !_isExcludedFromFee[from]){
                if (cooldownInfo.sellcooldownEnabled) {
                    require(sellcooldown[from] <= block.timestamp);
                    sellcooldown[from] = block.timestamp + (cooldownInfo.cooldown);
                }
            }

        if (
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if (lpOrMarketing && contractTokenBalance >= _lpFeeAccumulated && _lpFeeAccumulated >= txSettings.numTokensToSwap) {
                swapAndLiquify(txSettings.numTokensToSwap);
            } else if (!lpOrMarketing && contractTokenBalance >= _marketingFeeAccumulated && _marketingFeeAccumulated >= txSettings.numTokensToSwap) {
                swapAndMarketing(txSettings.numTokensToSwap);
            }
        }

        //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]) {
            takeFee = false;
        }

        //transfer amount, it will take tax, marketing, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

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

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private {
        uint256 feeAmount = 0;
        uint256 liquidityFeeValue;
        uint256 marketingFeeValue;
        bool highFee = false;

        if (wenLaunch.launchProtection) {
            if (wenLaunch.launched && wenLaunch.launchedAt > 0 && block.number > (wenLaunch.launchedAt + _antiBlocks)) {
                wenLaunch.launchProtection = false;
            } else {
                if (
                    sender == uniswapV2Pair &&
                    recipient != address(uniswapV2Router) &&
                    !_isExcludedFromFee[recipient]
                ) {
                    setSniperStatus(recipient, true); 
                    highFee = true;
                }
            }
        }

        if (takeFee) {
            if (sender == uniswapV2Pair) {
                liquidityFeeValue = _buyLiquidityFee;
                marketingFeeValue = _buyMarketingFee;
            } else if (recipient == uniswapV2Pair) {
                liquidityFeeValue = _sellLiquidityFee;
                marketingFeeValue = _sellMarketingFee;
            } else {
                liquidityFeeValue = _liquidityFee;
                marketingFeeValue = _marketingFee;
            }

            if (highFee) {
                liquidityFeeValue = 450;
                marketingFeeValue = 450;   
            }

            feeAmount = (amount * (liquidityFeeValue + marketingFeeValue)) / (1000);

            if ((liquidityFeeValue + marketingFeeValue) > 0) {
                uint256 _liquidityFeeAmount = (feeAmount * liquidityFeeValue / (liquidityFeeValue + marketingFeeValue));
                _lpFeeAccumulated += _liquidityFeeAmount;
                _marketingFeeAccumulated += (feeAmount - _liquidityFeeAmount);
            }
        }
        
        uint256 tAmount = amount - feeAmount;
        _tOwned[sender] -= amount;
        _tOwned[address(this)] += feeAmount;
        emit Transfer(sender, address(this), feeAmount);
        _tOwned[recipient] += tAmount;
        emit Transfer(sender, recipient, tAmount);
    }

    function setCooldownEnabled(bool onoff, bool offon) external onlyOwner {
        cooldownInfo.buycooldownEnabled = onoff;
        cooldownInfo.sellcooldownEnabled = offon;
    }
}

/*
19111863
*/

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"Launch","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":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"SniperStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityFees","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":false,"internalType":"uint256","name":"marketingBalance","type":"uint256"}],"name":"ToMarketing","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":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"Ox64b2c4f9","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_antiBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","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":"_liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lpFeeAccumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeAccumulated","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":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"clearStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownInfo","outputs":[{"internalType":"bool","name":"buycooldownEnabled","type":"bool"},{"internalType":"bool","name":"sellcooldownEnabled","type":"bool"},{"internalType":"uint256","name":"cooldown","type":"uint256"},{"internalType":"uint256","name":"cooldownLimit","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":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":"bool","name":"onoff","type":"bool"}],"name":"limits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpOrMarketing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_block","type":"uint256"}],"name":"setAntiBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"setBlacklistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"},{"internalType":"bool","name":"offon","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTransfer","type":"uint256"},{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"}],"name":"setLiquidityFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLpWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setLpOrMarketingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTransfer","type":"uint256"},{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"}],"name":"setMarketingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setTradeAllowedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setTradeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txp","type":"uint256"},{"internalType":"uint256","name":"txd","type":"uint256"},{"internalType":"uint256","name":"mwp","type":"uint256"},{"internalType":"uint256","name":"mwd","type":"uint256"},{"internalType":"uint256","name":"sp","type":"uint256"},{"internalType":"uint256","name":"sd","type":"uint256"},{"internalType":"bool","name":"limiter","type":"bool"}],"name":"setTxSettings","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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tradeAllowedList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txSettings","outputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"numTokensToSwap","type":"uint256"},{"internalType":"bool","name":"limited","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wenLaunch","outputs":[{"internalType":"uint256","name":"launchedAt","type":"uint256"},{"internalType":"bool","name":"launched","type":"bool"},{"internalType":"bool","name":"launchProtection","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

610100604052600860c08190526746534f434945545960c01b60e09081526200002c91600391906200099a565b506040805180820190915260088082526746534f434945545960c01b60209092019182526200005e916004916200099a565b506005805460ff19166009908117909155633b9aca006006556200008490600a62000af9565b60065462000093919062000bba565b6007556040805160808101825260018082526020808301829052601e838501819052603c60609485018190526010805461010161ffff199182161790915560119290925560125584519384018552600080855291840182905292909301526013919091556014805490911661010017905560036021553480156200011657600080fd5b506040516200405d3803806200405d833981016040819052620001399162000a40565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600880546001600160a01b0319166001600160a01b0383161790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b158015620001e457600080fd5b505afa158015620001f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021f919062000a40565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026857600080fd5b505afa1580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000a40565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002ec57600080fd5b505af115801562000301573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000327919062000a40565b6001600160601b0319606091821b811660a0529082901b16608052620003586200034e3390565b82600019620004f3565b620003673082600019620004f3565b6001600e6000620003806000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600e909252902080549091166001179055620003ce600a60326200061f565b620003dc600a60326200068f565b620003ea600a601e620006fc565b6200040060016064600281836103e8816200076c565b600754336000818152600a6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36022805463ff00000019169055600160236000620004716000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260239092529020805490911660011790556022805462ff0000191662010000179055620004ca3390565b600980546001600160a01b0319166001600160a01b03929092169190911790555062000c2f9050565b6001600160a01b0383166200055b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000552565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b031633146200066a5760405162461bcd60e51b815260206004820181905260248201526000805160206200403d833981519152604482015260640162000552565b60fa62000678828462000a72565b11156200068457600080fd5b601d91909155601e55565b6000546001600160a01b03163314620006da5760405162461bcd60e51b815260206004820181905260248201526000805160206200403d833981519152604482015260640162000552565b60fa620006e8828462000a72565b1115620006f457600080fd5b601c55601b55565b6000546001600160a01b03163314620007475760405162461bcd60e51b815260206004820181905260248201526000805160206200403d833981519152604482015260640162000552565b60fa62000755828462000a72565b11156200076157600080fd5b601991909155601a55565b6000546001600160a01b03163314620007b75760405162461bcd60e51b815260206004820181905260248201526000805160206200403d833981519152604482015260640162000552565b6103e8600754620007c9919062000a8d565b8688600754620007da919062000bba565b620007e6919062000a8d565b10156200085c5760405162461bcd60e51b815260206004820152603360248201527f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60448201527f3125206f6620746f74616c20737570706c792e00000000000000000000000000606482015260840162000552565b6103e86007546200086e919062000a8d565b84866007546200087f919062000bba565b6200088b919062000a8d565b1015620008f25760405162461bcd60e51b815260206004820152602e60248201527f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660448201526d103a37ba30b61039bab838363c9760911b606482015260840162000552565b6000868860075462000905919062000bba565b62000911919062000a8d565b90506000858760075462000926919062000bba565b62000932919062000a8d565b90506000848660075462000947919062000bba565b62000953919062000a8d565b60408051608081018252858152602081018590529081018290529415156060909501859052601593909355506016556017556018805460ff19169091179055505050505050565b828054620009a89062000bdc565b90600052602060002090601f016020900481019282620009cc576000855562000a17565b82601f10620009e757805160ff191683800117855562000a17565b8280016001018555821562000a17579182015b8281111562000a17578251825591602001919060010190620009fa565b5062000a2592915062000a29565b5090565b5b8082111562000a25576000815560010162000a2a565b60006020828403121562000a5357600080fd5b81516001600160a01b038116811462000a6b57600080fd5b9392505050565b6000821982111562000a885762000a8862000c19565b500190565b60008262000aab57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111562000af157816000190482111562000ad55762000ad562000c19565b8085161562000ae357918102915b93841c939080029062000ab5565b509250929050565b600062000a6b60ff84168360008262000b155750600162000bb4565b8162000b245750600062000bb4565b816001811462000b3d576002811462000b485762000b68565b600191505062000bb4565b60ff84111562000b5c5762000b5c62000c19565b50506001821b62000bb4565b5060208310610133831016604e8410600b841016171562000b8d575081810a62000bb4565b62000b99838362000ab0565b806000190482111562000bb05762000bb062000c19565b0290505b92915050565b600081600019048311821515161562000bd75762000bd762000c19565b500290565b600181811c9082168062000bf157607f821691505b6020821081141562000c1357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c60a05160601c61332562000d186000396000818161068f01528181610c2d01528181610e9d01528181611e6501528181611e9d01528181611f8501528181611fc00152818161208e015281816121220152818161221a015281816122e40152818161267c0152818161272e015281816127770152612ce501526000818161047601528181610c7b01528181610eeb015281816120510152818161215e015281816126b8015281816129eb01528181612ab801528181612aef01528181612b2d01528181612bb501528181612bf201528181612c5c0152612d3301526133256000f3fe60806040526004361061039b5760003560e01c806370a08231116101dc578063b18e984011610102578063d621e813116100a0578063ea2f0b371161006f578063ea2f0b3714610b78578063f23175ff14610b98578063f2fde38b14610bb8578063fb0ecfa414610bd857600080fd5b8063d621e81314610ab3578063d8913ae314610ad4578063dc44b6a014610b1c578063dd62ed3e14610b3257600080fd5b8063c49b9a80116100dc578063c49b9a8014610a51578063c5d2418914610a71578063c61276b514610a87578063c860795214610a9d57600080fd5b8063b18e9840146109f1578063b5ec194114610a11578063c40fedc614610a3157600080fd5b8063934930a11161017a5780639be953b3116101495780639be953b314610971578063a16df9d814610991578063a457c2d7146109b1578063a9059cbb146109d157600080fd5b8063934930a1146108cf57806395d89b41146108ef57806395f93d4814610904578063962dfc751461095157600080fd5b806375e3661e116101b657806375e3661e1461084b578063768dc7101461086b57806388790a681461089b5780638da5cb5b146108b157600080fd5b806370a08231146107e0578063715018a6146108165780637261d6661461082b57600080fd5b8063313ce567116102c15780634fc3f41a1161025f5780635db447571161022e5780635db4475714610746578063645b25711461078a5780636ac9a870146107aa5780636bc87c3a146107ca57600080fd5b80634fc3f41a146106d0578063514ec803146106f05780635b8138f6146107065780635d098b381461072657600080fd5b80633bec2bf31161029b5780633bec2bf31461063d578063437823ec1461065d57806349bd5a5e1461067d5780634a74bb02146106b157600080fd5b8063313ce567146105e5578063382b238114610607578063395093511461061d57600080fd5b806318160ddd1161033957806322976e0d1161030857806322976e0d1461056f57806323b872dd14610585578063243a7e31146105a5578063296f0a0c146105c557600080fd5b806318160ddd146104d05780631c66cb6d146104ef5780631cdd3be31461051f5780631da1db5e1461054f57600080fd5b8063098b306611610375578063098b306614610424578063110bcc7c146104445780631694505e14610464578063169e5763146104b057600080fd5b806303d29d28146103a757806306fdde03146103c9578063095ea7b3146103f457600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103c76103c2366004612e99565b610bf8565b005b3480156103d557600080fd5b506103de610d15565b6040516103eb91906130df565b60405180910390f35b34801561040057600080fd5b5061041461040f366004612ec7565b610da7565b60405190151581526020016103eb565b34801561043057600080fd5b506103c761043f366004613025565b610dbd565b34801561045057600080fd5b506103c761045f366004612f79565b610df5565b34801561047057600080fd5b506104987f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103eb565b3480156104bc57600080fd5b506103c76104cb366004612ef3565b610e3b565b3480156104dc57600080fd5b506007545b6040519081526020016103eb565b3480156104fb57600080fd5b5061041461050a366004612dde565b60236020526000908152604090205460ff1681565b34801561052b57600080fd5b5061041461053a366004612dde565b600f6020526000908152604090205460ff1681565b34801561055b57600080fd5b506103c761056a366004612fd1565b610f9b565b34801561057b57600080fd5b506104e1601a5481565b34801561059157600080fd5b506104146105a0366004612e58565b611027565b3480156105b157600080fd5b50600954610498906001600160a01b031681565b3480156105d157600080fd5b506103c76105e0366004612dde565b611079565b3480156105f157600080fd5b5060055460405160ff90911681526020016103eb565b34801561061357600080fd5b506104e160215481565b34801561062957600080fd5b50610414610638366004612ec7565b6110c5565b34801561064957600080fd5b506103c7610658366004612f79565b6110fc565b34801561066957600080fd5b506103c7610678366004612dde565b61119f565b34801561068957600080fd5b506104987f000000000000000000000000000000000000000000000000000000000000000081565b3480156106bd57600080fd5b5060225461041490610100900460ff1681565b3480156106dc57600080fd5b506103c76106eb366004612fd1565b6111ed565b3480156106fc57600080fd5b506104e1601f5481565b34801561071257600080fd5b506103c7610721366004612e99565b61122b565b34801561073257600080fd5b506103c7610741366004612dde565b611280565b34801561075257600080fd5b5060135460145461076d919060ff8082169161010090041683565b6040805193845291151560208401521515908201526060016103eb565b34801561079657600080fd5b506103c76107a5366004613025565b6112cc565b3480156107b657600080fd5b506103c76107c5366004613003565b611304565b3480156107d657600080fd5b506104e160195481565b3480156107ec57600080fd5b506104e16107fb366004612dde565b6001600160a01b03166000908152600a602052604090205490565b34801561082257600080fd5b506103c7611350565b34801561083757600080fd5b506022546104149062010000900460ff1681565b34801561085757600080fd5b506103c7610866366004612dde565b6113c4565b34801561087757600080fd5b50610414610886366004612dde565b600e6020526000908152604090205460ff1681565b3480156108a757600080fd5b506104e1601d5481565b3480156108bd57600080fd5b506000546001600160a01b0316610498565b3480156108db57600080fd5b506103c76108ea366004613003565b61140f565b3480156108fb57600080fd5b506103de61145b565b34801561091057600080fd5b5060105460115460125461092f9260ff80821693610100909204169184565b60408051941515855292151560208501529183015260608201526080016103eb565b34801561095d57600080fd5b50600854610498906001600160a01b031681565b34801561097d57600080fd5b506103c761098c366004612dde565b61146a565b34801561099d57600080fd5b506103c76109ac36600461307f565b6114b0565b3480156109bd57600080fd5b506104146109cc366004612ec7565b611697565b3480156109dd57600080fd5b506104146109ec366004612ec7565b6116ce565b3480156109fd57600080fd5b506103c7610a0c366004612fd1565b6116db565b348015610a1d57600080fd5b506103c7610a2c366004612f79565b61170a565b348015610a3d57600080fd5b50610414610a4c366004612e1f565b611747565b348015610a5d57600080fd5b506103c7610a6c366004612f79565b61188d565b348015610a7d57600080fd5b506104e1601c5481565b348015610a9357600080fd5b506104e160205481565b348015610aa957600080fd5b506104e1601e5481565b348015610abf57600080fd5b50602254610414906301000000900460ff1681565b348015610ae057600080fd5b50601554601654601754601854610afa9392919060ff1684565b60408051948552602085019390935291830152151560608201526080016103eb565b348015610b2857600080fd5b506104e1601b5481565b348015610b3e57600080fd5b506104e1610b4d366004612e1f565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b348015610b8457600080fd5b506103c7610b93366004612dde565b61190b565b348015610ba457600080fd5b506103c7610bb3366004612fb3565b611956565b348015610bc457600080fd5b506103c7610bd3366004612dde565b6119a4565b348015610be457600080fd5b506103c7610bf3366004613003565b611a8e565b6000546001600160a01b03163314610c2b5760405162461bcd60e51b8152600401610c2290613134565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610c7357506001600160a01b03821630145b80610caf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15610cb957600080fd5b60018115151415610ceb576001600160a01b0382166000908152600f60205260409020805460ff191660011790555050565b80610d11576001600160a01b0382166000908152600f60205260409020805460ff191690555b5050565b606060038054610d249061324a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d509061324a565b8015610d9d5780601f10610d7257610100808354040283529160200191610d9d565b820191906000526020600020905b815481529060010190602001808311610d8057829003601f168201915b5050505050905090565b6000610db4338484611ad7565b50600192915050565b6000546001600160a01b03163314610de75760405162461bcd60e51b8152600401610c2290613134565b601992909255601b55601d55565b6000546001600160a01b03163314610e1f5760405162461bcd60e51b8152600401610c2290613134565b60228054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314610e655760405162461bcd60e51b8152600401610c2290613134565b60005b82811015610f95576000848483818110610e8457610e846132b6565b9050602002016020810190610e999190612dde565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161480610ee357506001600160a01b03811630145b80610f1f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15610f2957600080fd5b60018315151415610f5c576001600160a01b0381166000908152600f60205260409020805460ff19166001179055610f82565b82610f82576001600160a01b0381166000908152600f60205260409020805460ff191690555b5080610f8d81613285565b915050610e68565b50505050565b6000546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610c2290613134565b6064811115610fd357600080fd5b60085447906001600160a01b03166108fc6064610ff08585613214565b610ffa91906131f2565b6040518115909202916000818181858888f19350505050158015611022573d6000803e3d6000fd5b505050565b6000611034848484611bfb565b6001600160a01b0384166000908152600d602090815260408083203380855292529091205461106f91869161106a908690613233565b611ad7565b5060019392505050565b6000546001600160a01b031633146110a35760405162461bcd60e51b8152600401610c2290613134565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610db491859061106a9086906131da565b6000546001600160a01b031633146111265760405162461bcd60e51b8152600401610c2290613134565b60145460ff1661115157436013556014805460ff191660011790556022805461ff0019166101001790555b6022805463ff000000191663010000008315150217905560145460ff1661119c576040517f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266990600090a15b50565b6000546001600160a01b031633146111c95760405162461bcd60e51b8152600401610c2290613134565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b031633146112175760405162461bcd60e51b8152600401610c2290613134565b60125481111561122657600080fd5b601155565b6000546001600160a01b031633146112555760405162461bcd60e51b8152600401610c2290613134565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112aa5760405162461bcd60e51b8152600401610c2290613134565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112f65760405162461bcd60e51b8152600401610c2290613134565b601a92909255601c55601e55565b6000546001600160a01b0316331461132e5760405162461bcd60e51b8152600401610c2290613134565b60fa61133a82846131da565b111561134557600080fd5b601d91909155601e55565b6000546001600160a01b0316331461137a5760405162461bcd60e51b8152600401610c2290613134565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113ee5760405162461bcd60e51b8152600401610c2290613134565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b031633146114395760405162461bcd60e51b8152600401610c2290613134565b60fa61144582846131da565b111561145057600080fd5b601991909155601a55565b606060048054610d249061324a565b6000546001600160a01b031633146114945760405162461bcd60e51b8152600401610c2290613134565b306000818152600a602052604090205490610d11908383611bfb565b6000546001600160a01b031633146114da5760405162461bcd60e51b8152600401610c2290613134565b6103e86007546114ea91906131f2565b86886007546114f99190613214565b61150391906131f2565b101561156d5760405162461bcd60e51b815260206004820152603360248201527f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60448201527218929037b3103a37ba30b61039bab838363c9760691b6064820152608401610c22565b6103e860075461157d91906131f2565b848660075461158c9190613214565b61159691906131f2565b10156115fb5760405162461bcd60e51b815260206004820152602e60248201527f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610c22565b6000868860075461160c9190613214565b61161691906131f2565b9050600085876007546116299190613214565b61163391906131f2565b9050600084866007546116469190613214565b61165091906131f2565b60408051608081018252858152602081018590529081018290529415156060909501859052601593909355506016556017556018805460ff19169091179055505050505050565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610db491859061106a908690613233565b6000610db4338484611bfb565b6000546001600160a01b031633146117055760405162461bcd60e51b8152600401610c2290613134565b602155565b6000546001600160a01b031633146117345760405162461bcd60e51b8152600401610c2290613134565b6018805460ff1916911515919091179055565b600080546001600160a01b031633146117725760405162461bcd60e51b8152600401610c2290613134565b6001600160a01b03831661178557600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b1580156117c757600080fd5b505afa1580156117db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ff9190612fea565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561184d57600080fd5b505af1158015611861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118859190612f96565b949350505050565b6000546001600160a01b031633146118b75760405162461bcd60e51b8152600401610c2290613134565b602280548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061190090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146119355760405162461bcd60e51b8152600401610c2290613134565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000546001600160a01b031633146119805760405162461bcd60e51b8152600401610c2290613134565b6010805461ffff191692151561ff0019169290921761010091151591909102179055565b6000546001600160a01b031633146119ce5760405162461bcd60e51b8152600401610c2290613134565b6001600160a01b038116611a335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c22565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611ab85760405162461bcd60e51b8152600401610c2290613134565b60fa611ac482846131da565b1115611acf57600080fd5b601c55601b55565b6001600160a01b038316611b395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c22565b6001600160a01b038216611b9a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c22565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c5f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c22565b6001600160a01b038216611cc15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c22565b60008111611d235760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c22565b6001600160a01b0383166000908152600f602052604090205460ff1615611d755760405162461bcd60e51b8152600401610c22906020808252600490820152634865686560e01b604082015260600190565b6001600160a01b0382166000908152600f602052604090205460ff1615611dc75760405162461bcd60e51b8152600401610c22906020808252600490820152634865686560e01b604082015260600190565b6022546301000000900460ff16611f1e576001600160a01b03831660009081526023602052604090205460ff1680611e1757506001600160a01b03821660009081526023602052604090205460ff165b611e5b5760405162461bcd60e51b8152602060048201526015602482015274151c985b9cd9995c8e881b9bdd08185b1b1bddd959605a1b6044820152606401610c22565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600a60205260409020541580611ed257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b611f1e5760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665723a206e6f20626f64792063616e2073656c6c206e6f7700006044820152606401610c22565b60185460ff1615612120576000546001600160a01b03848116911614801590611f5557506000546001600160a01b03838116911614155b80611f7e57506001600160a01b03821661dead14801590611f7e57506001600160a01b03821615155b15612120577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480611ff457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b1561204f576001600160a01b0382166000908152600e602052604090205460ff1615801561203b57506001600160a01b0383166000908152600e602052604090205460ff16155b1561204f5760155481111561204f57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141580156120c357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15612120576001600160a01b0382166000908152600e602052604090205460ff16612120576016548161210b846001600160a01b03166000908152600a602052604090205490565b61211591906131da565b111561212057600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614801561219357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156121b857506001600160a01b0382166000908152600e602052604090205460ff16155b156122185760105460ff1615612213576001600160a01b0382166000908152600b602052604090205442116121ec57600080fd5b6011546121f990426131da565b6001600160a01b0383166000908152600b60205260409020555b6122d4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561227357506001600160a01b0383166000908152600e602052604090205460ff16155b156122d457601054610100900460ff16156122d4576001600160a01b0383166000908152600c60205260409020544210156122ad57600080fd5b6011546122ba90426131da565b6001600160a01b0384166000908152600c60205260409020555b60225460ff1615801561231957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b801561232c5750602254610100900460ff165b156123bf57306000908152600a602052604090205460225462010000900460ff16801561235b5750601f548110155b801561236b5750601754601f5410155b156123815760175461237c90612416565b6123bd565b60225462010000900460ff1615801561239c57506020548110155b80156123ac575060175460205410155b156123bd576017546123bd90612522565b505b6001600160a01b0383166000908152600e602052604090205460019060ff168061240157506001600160a01b0383166000908152600e602052604090205460ff165b1561240a575060005b610f958484848461261f565b6022805460ff191660011790554760006124316002846131f2565b9050600061243f8285613233565b905081156124505761245082612994565b47600061245d8583613233565b905060008311801561246f5750600081115b156124b85761247e8382612ba1565b60408051848152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b85601f60008282546124ca9190613233565b9091555050601754601f541080156124fe57506000601e54601c54601a546124f291906131da565b6124fc91906131da565b115b15612510576022805462ff0000191690555b50506022805460ff1916905550505050565b6022805460ff19166001179055801561253e5761253e81612994565b4780156125b4576008546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561257f573d6000803e3d6000fd5b506040518181527f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b9060200160405180910390a15b81602060008282546125c69190613233565b90915550506017546020541080156125fa57506000601d54601b546019546125ee91906131da565b6125f891906131da565b115b15612611576022805462ff00001916620100001790555b50506022805460ff19169055565b601454600090819081908190610100900460ff16156127265760145460ff16801561264b575060135415155b8015612665575060215460135461266291906131da565b43115b1561267a576014805461ff0019169055612726565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b03161480156126ed57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614155b801561271257506001600160a01b0387166000908152600e602052604090205460ff16155b1561272657612722876001612ce3565b5060015b841561286b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b0316141561277557601b549250601c5491506127c9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614156127be57601d549250601e5491506127c9565b6019549250601a5491505b80156127da576101c292506101c291505b6103e86127e783856131da565b6127f19088613214565b6127fb91906131f2565b9350600061280983856131da565b111561286b57600061281b83856131da565b6128258587613214565b61282f91906131f2565b905080601f600082825461284391906131da565b9091555061285390508186613233565b6020600082825461286491906131da565b9091555050505b60006128778588613233565b6001600160a01b038a166000908152600a60205260408120805492935089929091906128a4908490613233565b9091555050306000908152600a6020526040812080548792906128c89084906131da565b909155505060405185815230906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36001600160a01b0388166000908152600a6020526040812080548392906129359084906131da565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161298191815260200190565b60405180910390a3505050505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129c9576129c96132b6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a4257600080fd5b505afa158015612a56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7a9190612e02565b81600181518110612a8d57612a8d6132b6565b6001600160a01b03928316602091820292909201810191909152306000908152600d825260408082207f00000000000000000000000000000000000000000000000000000000000000009094168252929091522054821115612b1657612b16307f0000000000000000000000000000000000000000000000000000000000000000600019611ad7565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612b6b908590600090869030904290600401613169565b600060405180830381600087803b158015612b8557600080fd5b505af1158015612b99573d6000803e3d6000fd5b505050505050565b306000908152600d602090815260408083207f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168452909152902054821115612c1957612c19307f0000000000000000000000000000000000000000000000000000000000000000600019611ad7565b60095460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c4016060604051808303818588803b158015612ca357600080fd5b505af1158015612cb7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612cdc9190613051565b5050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480612d2b57506001600160a01b03821630145b80612d6757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612d7157600080fd5b60018115151415610d11576001600160a01b0382166000818152600f6020908152604091829020805460ff191660011790558151928352831515908301527f2a435d5b7631d89e0f8a99c9c5b5cf1a1e49e467b6a14ab37d5891cdeabde6a5910160405180910390a15050565b600060208284031215612df057600080fd5b8135612dfb816132cc565b9392505050565b600060208284031215612e1457600080fd5b8151612dfb816132cc565b60008060408385031215612e3257600080fd5b8235612e3d816132cc565b91506020830135612e4d816132cc565b809150509250929050565b600080600060608486031215612e6d57600080fd5b8335612e78816132cc565b92506020840135612e88816132cc565b929592945050506040919091013590565b60008060408385031215612eac57600080fd5b8235612eb7816132cc565b91506020830135612e4d816132e1565b60008060408385031215612eda57600080fd5b8235612ee5816132cc565b946020939093013593505050565b600080600060408486031215612f0857600080fd5b833567ffffffffffffffff80821115612f2057600080fd5b818601915086601f830112612f3457600080fd5b813581811115612f4357600080fd5b8760208260051b8501011115612f5857600080fd5b60209283019550935050840135612f6e816132e1565b809150509250925092565b600060208284031215612f8b57600080fd5b8135612dfb816132e1565b600060208284031215612fa857600080fd5b8151612dfb816132e1565b60008060408385031215612fc657600080fd5b8235612eb7816132e1565b600060208284031215612fe357600080fd5b5035919050565b600060208284031215612ffc57600080fd5b5051919050565b6000806040838503121561301657600080fd5b50508035926020909101359150565b60008060006060848603121561303a57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561306657600080fd5b8351925060208401519150604084015190509250925092565b600080600080600080600060e0888a03121561309a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a0880135915060c08801356130cf816132e1565b8091505092959891949750929550565b600060208083528351808285015260005b8181101561310c578581018301518582016040015282016130f0565b8181111561311e576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131b95784516001600160a01b031683529383019391830191600101613194565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156131ed576131ed6132a0565b500190565b60008261320f57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561322e5761322e6132a0565b500290565b600082821015613245576132456132a0565b500390565b600181811c9082168061325e57607f821691505b6020821081141561327f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613299576132996132a0565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461119c57600080fd5b801515811461119c57600080fdfea26469706673582212200ede723fb3abd759ff7bd708a9acab383a1cb77f52e7a25a27b8d708fd92a6b764736f6c634300080700334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000106a4821eef5d786fb4253909652910c59bc7765

Deployed Bytecode

0x60806040526004361061039b5760003560e01c806370a08231116101dc578063b18e984011610102578063d621e813116100a0578063ea2f0b371161006f578063ea2f0b3714610b78578063f23175ff14610b98578063f2fde38b14610bb8578063fb0ecfa414610bd857600080fd5b8063d621e81314610ab3578063d8913ae314610ad4578063dc44b6a014610b1c578063dd62ed3e14610b3257600080fd5b8063c49b9a80116100dc578063c49b9a8014610a51578063c5d2418914610a71578063c61276b514610a87578063c860795214610a9d57600080fd5b8063b18e9840146109f1578063b5ec194114610a11578063c40fedc614610a3157600080fd5b8063934930a11161017a5780639be953b3116101495780639be953b314610971578063a16df9d814610991578063a457c2d7146109b1578063a9059cbb146109d157600080fd5b8063934930a1146108cf57806395d89b41146108ef57806395f93d4814610904578063962dfc751461095157600080fd5b806375e3661e116101b657806375e3661e1461084b578063768dc7101461086b57806388790a681461089b5780638da5cb5b146108b157600080fd5b806370a08231146107e0578063715018a6146108165780637261d6661461082b57600080fd5b8063313ce567116102c15780634fc3f41a1161025f5780635db447571161022e5780635db4475714610746578063645b25711461078a5780636ac9a870146107aa5780636bc87c3a146107ca57600080fd5b80634fc3f41a146106d0578063514ec803146106f05780635b8138f6146107065780635d098b381461072657600080fd5b80633bec2bf31161029b5780633bec2bf31461063d578063437823ec1461065d57806349bd5a5e1461067d5780634a74bb02146106b157600080fd5b8063313ce567146105e5578063382b238114610607578063395093511461061d57600080fd5b806318160ddd1161033957806322976e0d1161030857806322976e0d1461056f57806323b872dd14610585578063243a7e31146105a5578063296f0a0c146105c557600080fd5b806318160ddd146104d05780631c66cb6d146104ef5780631cdd3be31461051f5780631da1db5e1461054f57600080fd5b8063098b306611610375578063098b306614610424578063110bcc7c146104445780631694505e14610464578063169e5763146104b057600080fd5b806303d29d28146103a757806306fdde03146103c9578063095ea7b3146103f457600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103c76103c2366004612e99565b610bf8565b005b3480156103d557600080fd5b506103de610d15565b6040516103eb91906130df565b60405180910390f35b34801561040057600080fd5b5061041461040f366004612ec7565b610da7565b60405190151581526020016103eb565b34801561043057600080fd5b506103c761043f366004613025565b610dbd565b34801561045057600080fd5b506103c761045f366004612f79565b610df5565b34801561047057600080fd5b506104987f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103eb565b3480156104bc57600080fd5b506103c76104cb366004612ef3565b610e3b565b3480156104dc57600080fd5b506007545b6040519081526020016103eb565b3480156104fb57600080fd5b5061041461050a366004612dde565b60236020526000908152604090205460ff1681565b34801561052b57600080fd5b5061041461053a366004612dde565b600f6020526000908152604090205460ff1681565b34801561055b57600080fd5b506103c761056a366004612fd1565b610f9b565b34801561057b57600080fd5b506104e1601a5481565b34801561059157600080fd5b506104146105a0366004612e58565b611027565b3480156105b157600080fd5b50600954610498906001600160a01b031681565b3480156105d157600080fd5b506103c76105e0366004612dde565b611079565b3480156105f157600080fd5b5060055460405160ff90911681526020016103eb565b34801561061357600080fd5b506104e160215481565b34801561062957600080fd5b50610414610638366004612ec7565b6110c5565b34801561064957600080fd5b506103c7610658366004612f79565b6110fc565b34801561066957600080fd5b506103c7610678366004612dde565b61119f565b34801561068957600080fd5b506104987f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb64481565b3480156106bd57600080fd5b5060225461041490610100900460ff1681565b3480156106dc57600080fd5b506103c76106eb366004612fd1565b6111ed565b3480156106fc57600080fd5b506104e1601f5481565b34801561071257600080fd5b506103c7610721366004612e99565b61122b565b34801561073257600080fd5b506103c7610741366004612dde565b611280565b34801561075257600080fd5b5060135460145461076d919060ff8082169161010090041683565b6040805193845291151560208401521515908201526060016103eb565b34801561079657600080fd5b506103c76107a5366004613025565b6112cc565b3480156107b657600080fd5b506103c76107c5366004613003565b611304565b3480156107d657600080fd5b506104e160195481565b3480156107ec57600080fd5b506104e16107fb366004612dde565b6001600160a01b03166000908152600a602052604090205490565b34801561082257600080fd5b506103c7611350565b34801561083757600080fd5b506022546104149062010000900460ff1681565b34801561085757600080fd5b506103c7610866366004612dde565b6113c4565b34801561087757600080fd5b50610414610886366004612dde565b600e6020526000908152604090205460ff1681565b3480156108a757600080fd5b506104e1601d5481565b3480156108bd57600080fd5b506000546001600160a01b0316610498565b3480156108db57600080fd5b506103c76108ea366004613003565b61140f565b3480156108fb57600080fd5b506103de61145b565b34801561091057600080fd5b5060105460115460125461092f9260ff80821693610100909204169184565b60408051941515855292151560208501529183015260608201526080016103eb565b34801561095d57600080fd5b50600854610498906001600160a01b031681565b34801561097d57600080fd5b506103c761098c366004612dde565b61146a565b34801561099d57600080fd5b506103c76109ac36600461307f565b6114b0565b3480156109bd57600080fd5b506104146109cc366004612ec7565b611697565b3480156109dd57600080fd5b506104146109ec366004612ec7565b6116ce565b3480156109fd57600080fd5b506103c7610a0c366004612fd1565b6116db565b348015610a1d57600080fd5b506103c7610a2c366004612f79565b61170a565b348015610a3d57600080fd5b50610414610a4c366004612e1f565b611747565b348015610a5d57600080fd5b506103c7610a6c366004612f79565b61188d565b348015610a7d57600080fd5b506104e1601c5481565b348015610a9357600080fd5b506104e160205481565b348015610aa957600080fd5b506104e1601e5481565b348015610abf57600080fd5b50602254610414906301000000900460ff1681565b348015610ae057600080fd5b50601554601654601754601854610afa9392919060ff1684565b60408051948552602085019390935291830152151560608201526080016103eb565b348015610b2857600080fd5b506104e1601b5481565b348015610b3e57600080fd5b506104e1610b4d366004612e1f565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b348015610b8457600080fd5b506103c7610b93366004612dde565b61190b565b348015610ba457600080fd5b506103c7610bb3366004612fb3565b611956565b348015610bc457600080fd5b506103c7610bd3366004612dde565b6119a4565b348015610be457600080fd5b506103c7610bf3366004613003565b611a8e565b6000546001600160a01b03163314610c2b5760405162461bcd60e51b8152600401610c2290613134565b60405180910390fd5b7f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316826001600160a01b03161480610c7357506001600160a01b03821630145b80610caf57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b0316145b15610cb957600080fd5b60018115151415610ceb576001600160a01b0382166000908152600f60205260409020805460ff191660011790555050565b80610d11576001600160a01b0382166000908152600f60205260409020805460ff191690555b5050565b606060038054610d249061324a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d509061324a565b8015610d9d5780601f10610d7257610100808354040283529160200191610d9d565b820191906000526020600020905b815481529060010190602001808311610d8057829003601f168201915b5050505050905090565b6000610db4338484611ad7565b50600192915050565b6000546001600160a01b03163314610de75760405162461bcd60e51b8152600401610c2290613134565b601992909255601b55601d55565b6000546001600160a01b03163314610e1f5760405162461bcd60e51b8152600401610c2290613134565b60228054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314610e655760405162461bcd60e51b8152600401610c2290613134565b60005b82811015610f95576000848483818110610e8457610e846132b6565b9050602002016020810190610e999190612dde565b90507f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316816001600160a01b03161480610ee357506001600160a01b03811630145b80610f1f57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316816001600160a01b0316145b15610f2957600080fd5b60018315151415610f5c576001600160a01b0381166000908152600f60205260409020805460ff19166001179055610f82565b82610f82576001600160a01b0381166000908152600f60205260409020805460ff191690555b5080610f8d81613285565b915050610e68565b50505050565b6000546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610c2290613134565b6064811115610fd357600080fd5b60085447906001600160a01b03166108fc6064610ff08585613214565b610ffa91906131f2565b6040518115909202916000818181858888f19350505050158015611022573d6000803e3d6000fd5b505050565b6000611034848484611bfb565b6001600160a01b0384166000908152600d602090815260408083203380855292529091205461106f91869161106a908690613233565b611ad7565b5060019392505050565b6000546001600160a01b031633146110a35760405162461bcd60e51b8152600401610c2290613134565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610db491859061106a9086906131da565b6000546001600160a01b031633146111265760405162461bcd60e51b8152600401610c2290613134565b60145460ff1661115157436013556014805460ff191660011790556022805461ff0019166101001790555b6022805463ff000000191663010000008315150217905560145460ff1661119c576040517f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266990600090a15b50565b6000546001600160a01b031633146111c95760405162461bcd60e51b8152600401610c2290613134565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b031633146112175760405162461bcd60e51b8152600401610c2290613134565b60125481111561122657600080fd5b601155565b6000546001600160a01b031633146112555760405162461bcd60e51b8152600401610c2290613134565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112aa5760405162461bcd60e51b8152600401610c2290613134565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112f65760405162461bcd60e51b8152600401610c2290613134565b601a92909255601c55601e55565b6000546001600160a01b0316331461132e5760405162461bcd60e51b8152600401610c2290613134565b60fa61133a82846131da565b111561134557600080fd5b601d91909155601e55565b6000546001600160a01b0316331461137a5760405162461bcd60e51b8152600401610c2290613134565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113ee5760405162461bcd60e51b8152600401610c2290613134565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b031633146114395760405162461bcd60e51b8152600401610c2290613134565b60fa61144582846131da565b111561145057600080fd5b601991909155601a55565b606060048054610d249061324a565b6000546001600160a01b031633146114945760405162461bcd60e51b8152600401610c2290613134565b306000818152600a602052604090205490610d11908383611bfb565b6000546001600160a01b031633146114da5760405162461bcd60e51b8152600401610c2290613134565b6103e86007546114ea91906131f2565b86886007546114f99190613214565b61150391906131f2565b101561156d5760405162461bcd60e51b815260206004820152603360248201527f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60448201527218929037b3103a37ba30b61039bab838363c9760691b6064820152608401610c22565b6103e860075461157d91906131f2565b848660075461158c9190613214565b61159691906131f2565b10156115fb5760405162461bcd60e51b815260206004820152602e60248201527f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610c22565b6000868860075461160c9190613214565b61161691906131f2565b9050600085876007546116299190613214565b61163391906131f2565b9050600084866007546116469190613214565b61165091906131f2565b60408051608081018252858152602081018590529081018290529415156060909501859052601593909355506016556017556018805460ff19169091179055505050505050565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610db491859061106a908690613233565b6000610db4338484611bfb565b6000546001600160a01b031633146117055760405162461bcd60e51b8152600401610c2290613134565b602155565b6000546001600160a01b031633146117345760405162461bcd60e51b8152600401610c2290613134565b6018805460ff1916911515919091179055565b600080546001600160a01b031633146117725760405162461bcd60e51b8152600401610c2290613134565b6001600160a01b03831661178557600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b1580156117c757600080fd5b505afa1580156117db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ff9190612fea565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561184d57600080fd5b505af1158015611861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118859190612f96565b949350505050565b6000546001600160a01b031633146118b75760405162461bcd60e51b8152600401610c2290613134565b602280548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061190090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146119355760405162461bcd60e51b8152600401610c2290613134565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000546001600160a01b031633146119805760405162461bcd60e51b8152600401610c2290613134565b6010805461ffff191692151561ff0019169290921761010091151591909102179055565b6000546001600160a01b031633146119ce5760405162461bcd60e51b8152600401610c2290613134565b6001600160a01b038116611a335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c22565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611ab85760405162461bcd60e51b8152600401610c2290613134565b60fa611ac482846131da565b1115611acf57600080fd5b601c55601b55565b6001600160a01b038316611b395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c22565b6001600160a01b038216611b9a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c22565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c5f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c22565b6001600160a01b038216611cc15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c22565b60008111611d235760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c22565b6001600160a01b0383166000908152600f602052604090205460ff1615611d755760405162461bcd60e51b8152600401610c22906020808252600490820152634865686560e01b604082015260600190565b6001600160a01b0382166000908152600f602052604090205460ff1615611dc75760405162461bcd60e51b8152600401610c22906020808252600490820152634865686560e01b604082015260600190565b6022546301000000900460ff16611f1e576001600160a01b03831660009081526023602052604090205460ff1680611e1757506001600160a01b03821660009081526023602052604090205460ff165b611e5b5760405162461bcd60e51b8152602060048201526015602482015274151c985b9cd9995c8e881b9bdd08185b1b1bddd959605a1b6044820152606401610c22565b6001600160a01b037f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb644166000908152600a60205260409020541580611ed257507f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316826001600160a01b031614155b611f1e5760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665723a206e6f20626f64792063616e2073656c6c206e6f7700006044820152606401610c22565b60185460ff1615612120576000546001600160a01b03848116911614801590611f5557506000546001600160a01b03838116911614155b80611f7e57506001600160a01b03821661dead14801590611f7e57506001600160a01b03821615155b15612120577f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316836001600160a01b03161480611ff457507f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316826001600160a01b0316145b1561204f576001600160a01b0382166000908152600e602052604090205460ff1615801561203b57506001600160a01b0383166000908152600e602052604090205460ff16155b1561204f5760155481111561204f57600080fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b0316141580156120c357507f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316826001600160a01b031614155b15612120576001600160a01b0382166000908152600e602052604090205460ff16612120576016548161210b846001600160a01b03166000908152600a602052604090205490565b61211591906131da565b111561212057600080fd5b7f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316836001600160a01b031614801561219357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b80156121b857506001600160a01b0382166000908152600e602052604090205460ff16155b156122185760105460ff1615612213576001600160a01b0382166000908152600b602052604090205442116121ec57600080fd5b6011546121f990426131da565b6001600160a01b0383166000908152600b60205260409020555b6122d4565b7f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316836001600160a01b03161415801561227357506001600160a01b0383166000908152600e602052604090205460ff16155b156122d457601054610100900460ff16156122d4576001600160a01b0383166000908152600c60205260409020544210156122ad57600080fd5b6011546122ba90426131da565b6001600160a01b0384166000908152600c60205260409020555b60225460ff1615801561231957507f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316836001600160a01b031614155b801561232c5750602254610100900460ff165b156123bf57306000908152600a602052604090205460225462010000900460ff16801561235b5750601f548110155b801561236b5750601754601f5410155b156123815760175461237c90612416565b6123bd565b60225462010000900460ff1615801561239c57506020548110155b80156123ac575060175460205410155b156123bd576017546123bd90612522565b505b6001600160a01b0383166000908152600e602052604090205460019060ff168061240157506001600160a01b0383166000908152600e602052604090205460ff165b1561240a575060005b610f958484848461261f565b6022805460ff191660011790554760006124316002846131f2565b9050600061243f8285613233565b905081156124505761245082612994565b47600061245d8583613233565b905060008311801561246f5750600081115b156124b85761247e8382612ba1565b60408051848152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b85601f60008282546124ca9190613233565b9091555050601754601f541080156124fe57506000601e54601c54601a546124f291906131da565b6124fc91906131da565b115b15612510576022805462ff0000191690555b50506022805460ff1916905550505050565b6022805460ff19166001179055801561253e5761253e81612994565b4780156125b4576008546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561257f573d6000803e3d6000fd5b506040518181527f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b9060200160405180910390a15b81602060008282546125c69190613233565b90915550506017546020541080156125fa57506000601d54601b546019546125ee91906131da565b6125f891906131da565b115b15612611576022805462ff00001916620100001790555b50506022805460ff19169055565b601454600090819081908190610100900460ff16156127265760145460ff16801561264b575060135415155b8015612665575060215460135461266291906131da565b43115b1561267a576014805461ff0019169055612726565b7f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316886001600160a01b03161480156126ed57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316876001600160a01b031614155b801561271257506001600160a01b0387166000908152600e602052604090205460ff16155b1561272657612722876001612ce3565b5060015b841561286b577f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316886001600160a01b0316141561277557601b549250601c5491506127c9565b7f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316876001600160a01b031614156127be57601d549250601e5491506127c9565b6019549250601a5491505b80156127da576101c292506101c291505b6103e86127e783856131da565b6127f19088613214565b6127fb91906131f2565b9350600061280983856131da565b111561286b57600061281b83856131da565b6128258587613214565b61282f91906131f2565b905080601f600082825461284391906131da565b9091555061285390508186613233565b6020600082825461286491906131da565b9091555050505b60006128778588613233565b6001600160a01b038a166000908152600a60205260408120805492935089929091906128a4908490613233565b9091555050306000908152600a6020526040812080548792906128c89084906131da565b909155505060405185815230906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36001600160a01b0388166000908152600a6020526040812080548392906129359084906131da565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161298191815260200190565b60405180910390a3505050505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129c9576129c96132b6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a4257600080fd5b505afa158015612a56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7a9190612e02565b81600181518110612a8d57612a8d6132b6565b6001600160a01b03928316602091820292909201810191909152306000908152600d825260408082207f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9094168252929091522054821115612b1657612b16307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600019611ad7565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612b6b908590600090869030904290600401613169565b600060405180830381600087803b158015612b8557600080fd5b505af1158015612b99573d6000803e3d6000fd5b505050505050565b306000908152600d602090815260408083207f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03168452909152902054821115612c1957612c19307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600019611ad7565b60095460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c4016060604051808303818588803b158015612ca357600080fd5b505af1158015612cb7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612cdc9190613051565b5050505050565b7f000000000000000000000000d63929e8ba7943907bfc43c35a9e109c33fdb6446001600160a01b0316826001600160a01b03161480612d2b57506001600160a01b03821630145b80612d6757507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b0316145b15612d7157600080fd5b60018115151415610d11576001600160a01b0382166000818152600f6020908152604091829020805460ff191660011790558151928352831515908301527f2a435d5b7631d89e0f8a99c9c5b5cf1a1e49e467b6a14ab37d5891cdeabde6a5910160405180910390a15050565b600060208284031215612df057600080fd5b8135612dfb816132cc565b9392505050565b600060208284031215612e1457600080fd5b8151612dfb816132cc565b60008060408385031215612e3257600080fd5b8235612e3d816132cc565b91506020830135612e4d816132cc565b809150509250929050565b600080600060608486031215612e6d57600080fd5b8335612e78816132cc565b92506020840135612e88816132cc565b929592945050506040919091013590565b60008060408385031215612eac57600080fd5b8235612eb7816132cc565b91506020830135612e4d816132e1565b60008060408385031215612eda57600080fd5b8235612ee5816132cc565b946020939093013593505050565b600080600060408486031215612f0857600080fd5b833567ffffffffffffffff80821115612f2057600080fd5b818601915086601f830112612f3457600080fd5b813581811115612f4357600080fd5b8760208260051b8501011115612f5857600080fd5b60209283019550935050840135612f6e816132e1565b809150509250925092565b600060208284031215612f8b57600080fd5b8135612dfb816132e1565b600060208284031215612fa857600080fd5b8151612dfb816132e1565b60008060408385031215612fc657600080fd5b8235612eb7816132e1565b600060208284031215612fe357600080fd5b5035919050565b600060208284031215612ffc57600080fd5b5051919050565b6000806040838503121561301657600080fd5b50508035926020909101359150565b60008060006060848603121561303a57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561306657600080fd5b8351925060208401519150604084015190509250925092565b600080600080600080600060e0888a03121561309a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a0880135915060c08801356130cf816132e1565b8091505092959891949750929550565b600060208083528351808285015260005b8181101561310c578581018301518582016040015282016130f0565b8181111561311e576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131b95784516001600160a01b031683529383019391830191600101613194565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156131ed576131ed6132a0565b500190565b60008261320f57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561322e5761322e6132a0565b500290565b600082821015613245576132456132a0565b500390565b600181811c9082168061325e57607f821691505b6020821081141561327f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613299576132996132a0565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461119c57600080fd5b801515811461119c57600080fdfea26469706673582212200ede723fb3abd759ff7bd708a9acab383a1cb77f52e7a25a27b8d708fd92a6b764736f6c63430008070033

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

000000000000000000000000106a4821eef5d786fb4253909652910c59bc7765

-----Decoded View---------------
Arg [0] : marketingWallet (address): 0x106a4821EeF5D786Fb4253909652910C59bc7765

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000106a4821eef5d786fb4253909652910c59bc7765


Deployed Bytecode Sourcemap

14978:20457:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23458:389;;;;;;;;;;-1:-1:-1;23458:389:0;;;;;:::i;:::-;;:::i;:::-;;19028:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19684:161;;;;;;;;;;-1:-1:-1;19684:161:0;;;;;:::i;:::-;;:::i;:::-;;;7669:14:1;;7662:22;7644:41;;7632:2;7617:18;19684:161:0;7504:187:1;20557:217:0;;;;;;;;;;-1:-1:-1;20557:217:0;;;;;:::i;:::-;;:::i;22786:105::-;;;;;;;;;;-1:-1:-1;22786:105:0;;;;;:::i;:::-;;:::i;16933:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6056:32:1;;;6038:51;;6026:2;6011:18;16933:51:0;5892:203:1;23855:534:0;;;;;;;;;;-1:-1:-1;23855:534:0;;;;;:::i;:::-;;:::i;19305:95::-;;;;;;;;;;-1:-1:-1;19385:7:0;;19305:95;;;13767:25:1;;;13755:2;13740:18;19305:95:0;13621:177:1;17177:48:0;;;;;;;;;;-1:-1:-1;17177:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15673:46;;;;;;;;;;-1:-1:-1;15673:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;27343:286;;;;;;;;;;-1:-1:-1;27343:286:0;;;;;:::i;:::-;;:::i;16616:28::-;;;;;;;;;;;;;;;;29373:348;;;;;;;;;;-1:-1:-1;29373:348:0;;;;;:::i;:::-;;:::i;15343:31::-;;;;;;;;;;-1:-1:-1;15343:31:0;;;;-1:-1:-1;;;;;15343:31:0;;;21332:117;;;;;;;;;;-1:-1:-1;21332:117:0;;;;;:::i;:::-;;:::i;19214:83::-;;;;;;;;;;-1:-1:-1;19280:9:0;;19214:83;;19280:9;;;;15933:36:1;;15921:2;15906:18;19214:83:0;15791:184:1;16894:30:0;;;;;;;;;;;;;;;;22899:266;;;;;;;;;;-1:-1:-1;22899:266:0;;;;;:::i;:::-;;:::i;22173:366::-;;;;;;;;;;-1:-1:-1;22173:366:0;;;;;:::i;:::-;;:::i;24971:111::-;;;;;;;;;;-1:-1:-1;24971:111:0;;;;;:::i;:::-;;:::i;16991:38::-;;;;;;;;;;;;;;;17072:33;;;;;;;;;;-1:-1:-1;17072:33:0;;;;;;;;;;;21007:161;;;;;;;;;;-1:-1:-1;21007:161:0;;;;;:::i;:::-;;:::i;16807:32::-;;;;;;;;;;;;;;;;22652:126;;;;;;;;;;-1:-1:-1;22652:126:0;;;;;:::i;:::-;;:::i;21176:148::-;;;;;;;;;;-1:-1:-1;21176:148:0;;;;;:::i;:::-;;:::i;16225:153::-;;;;;;;;;;-1:-1:-1;16225:153:0;;;;;;;;;;;;;;;;;;;;;;13993:25:1;;;14061:14;;14054:22;14049:2;14034:18;;14027:50;14120:14;14113:22;14093:18;;;14086:50;13981:2;13966:18;16225:153:0;13803:339:1;20782:217:0;;;;;;;;;;-1:-1:-1;20782:217:0;;;;;:::i;:::-;;:::i;19853:229::-;;;;;;;;;;-1:-1:-1;19853:229:0;;;;;:::i;:::-;;:::i;16581:28::-;;;;;;;;;;;;;;;;19559:117;;;;;;;;;;-1:-1:-1;19559:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;19652:16:0;19625:7;19652:16;;;:7;:16;;;;;;;19559:117;5067:148;;;;;;;;;;;;;:::i;17112:25::-;;;;;;;;;;-1:-1:-1;17112:25:0;;;;;;;;;;;24397:107;;;;;;;;;;-1:-1:-1;24397:107:0;;;;;:::i;:::-;;:::i;15616:50::-;;;;;;;;;;-1:-1:-1;15616:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16727:32;;;;;;;;;;;;;;;;4853:79;;;;;;;;;;-1:-1:-1;4891:7:0;4918:6;-1:-1:-1;;;;;4918:6:0;4853:79;;20324:225;;;;;;;;;;-1:-1:-1;20324:225:0;;;;;:::i;:::-;;:::i;19119:87::-;;;;;;;;;;;;;:::i;15887:217::-;;;;;;;;;;-1:-1:-1;15887:217:0;;;;;;;;;;;;;;;;;;;;;;;;;7940:14:1;;7933:22;7915:41;;7999:14;;7992:22;7987:2;7972:18;;7965:50;8031:18;;;8024:34;8089:2;8074:18;;8067:34;7902:3;7887:19;15887:217:0;7696:411:1;15297:39:0;;;;;;;;;;-1:-1:-1;15297:39:0;;;;-1:-1:-1;;;;;15297:39:0;;;27637:167;;;;;;;;;;-1:-1:-1;27637:167:0;;;;;:::i;:::-;;:::i;21457:708::-;;;;;;;;;;-1:-1:-1;21457:708:0;;;;;:::i;:::-;;:::i;23173:277::-;;;;;;;;;;-1:-1:-1;23173:277:0;;;;;:::i;:::-;;:::i;32825:167::-;;;;;;;;;;-1:-1:-1;32825:167:0;;;;;:::i;:::-;;:::i;22547:97::-;;;;;;;;;;-1:-1:-1;22547:97:0;;;;;:::i;:::-;;:::i;24873:90::-;;;;;;;;;;-1:-1:-1;24873:90:0;;;;;:::i;:::-;;:::i;27812:285::-;;;;;;;;;;-1:-1:-1;27812:285:0;;;;;:::i;:::-;;:::i;25208:171::-;;;;;;;;;;-1:-1:-1;25208:171:0;;;;;:::i;:::-;;:::i;16689:31::-;;;;;;;;;;;;;;;;16846:39;;;;;;;;;;;;;;;;16766:32;;;;;;;;;;;;;;;;17146:24;;;;;;;;;;-1:-1:-1;17146:24:0;;;;;;;;;;;16543:29;;;;;;;;;;-1:-1:-1;16543:29:0;;;;;;;;;;;;;;;;;;;;;15610:25:1;;;15666:2;15651:18;;15644:34;;;;15694:18;;;15687:34;15764:14;15757:22;15752:2;15737:18;;15730:50;15597:3;15582:19;16543:29:0;15385:401:1;16651:31:0;;;;;;;;;;;;;;;;19408:143;;;;;;;;;;-1:-1:-1;19408:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19516:18:0;;;19489:7;19516:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19408:143;25090:110;;;;;;;;;;-1:-1:-1;25090:110:0;;;;;:::i;:::-;;:::i;35252:180::-;;;;;;;;;;-1:-1:-1;35252:180:0;;;;;:::i;:::-;;:::i;5223:281::-;;;;;;;;;;-1:-1:-1;5223:281:0;;;;;:::i;:::-;;:::i;20090:226::-;;;;;;;;;;-1:-1:-1;20090:226:0;;;;;:::i;:::-;;:::i;23458:389::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;;;;;;;;;23565:13:::1;-1:-1:-1::0;;;;;23554:24:0::1;:7;-1:-1:-1::0;;;;;23554:24:0::1;;:52;;;-1:-1:-1::0;;;;;;23582:24:0;::::1;23601:4;23582:24;23554:52;:91;;;;23629:15;-1:-1:-1::0;;;;;23610:35:0::1;:7;-1:-1:-1::0;;;;;23610:35:0::1;;23554:91;23551:107;;;23648:8;::::0;::::1;23551:107;23687:4;23672:19:::0;::::1;;;23668:172;;;-1:-1:-1::0;;;;;23708:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;23708:30:0::1;23734:4;23708:30;::::0;;23458:389;;:::o;23668:172::-:1;23760:20:::0;23756:84:::1;;-1:-1:-1::0;;;;;23797:23:0;::::1;23823:5;23797:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;23797:31:0::1;::::0;;23756:84:::1;23458:389:::0;;:::o;19028:83::-;19065:13;19098:5;19091:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19028:83;:::o;19684:161::-;19759:4;19776:39;1470:10;19799:7;19808:6;19776:8;:39::i;:::-;-1:-1:-1;19833:4:0;19684:161;;;;:::o;20557:217::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;20665:13:::1;:27:::0;;;;20703:16:::1;:25:::0;20739:17:::1;:27:::0;20557:217::o;22786:105::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;22861:13:::1;:22:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;22861:22:0;;::::1;::::0;;;::::1;::::0;;22786:105::o;23855:534::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;23958:9:::1;23953:429;23969:19:::0;;::::1;23953:429;;;24010:15;24028:8;;24037:1;24028:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;24010:29;;24068:13;-1:-1:-1::0;;;;;24057:24:0::1;:7;-1:-1:-1::0;;;;;24057:24:0::1;;:52;;;-1:-1:-1::0;;;;;;24085:24:0;::::1;24104:4;24085:24;24057:52;:91;;;;24132:15;-1:-1:-1::0;;;;;24113:35:0::1;:7;-1:-1:-1::0;;;;;24113:35:0::1;;24057:91;24054:107;;;24151:8;::::0;::::1;24054:107;24194:4;24179:19:::0;::::1;;;24175:188;;;-1:-1:-1::0;;;;;24219:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;24219:30:0::1;24245:4;24219:30;::::0;;24175:188:::1;;;24275:20:::0;24271:92:::1;;-1:-1:-1::0;;;;;24316:23:0;::::1;24342:5;24316:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;24316:31:0::1;::::0;;24271:92:::1;-1:-1:-1::0;23990:3:0;::::1;::::0;::::1;:::i;:::-;;;;23953:429;;;;23855:534:::0;;;:::o;27343:286::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;27454:3:::1;27434:16;:23;;27426:32;;;::::0;::::1;;27529:16;::::0;27489:21:::1;::::0;-1:-1:-1;;;;;27529:16:0::1;27521:100;27606:3;27571:30;27584:16:::0;27489:21;27571:30:::1;:::i;:::-;27570:40;;;;:::i;:::-;27521:100;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27415:214;27343:286:::0;:::o;29373:348::-;29469:4;29486:36;29496:6;29504:9;29515:6;29486:9;:36::i;:::-;-1:-1:-1;;;;;29604:19:0;;;;;;:11;:19;;;;;;;;1470:10;29604:33;;;;;;;;;29533:158;;29556:6;;29604:76;;29659:6;;29604:76;:::i;:::-;29533:8;:158::i;:::-;-1:-1:-1;29709:4:0;29373:348;;;;;:::o;21332:117::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;21411:16:::1;:30:::0;;-1:-1:-1;;;;;;21411:30:0::1;-1:-1:-1::0;;;;;21411:30:0;;;::::1;::::0;;;::::1;::::0;;21332:117::o;22899:266::-;1470:10;22987:4;23075:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23075:34:0;;;;;;;;;;22987:4;;23003:132;;23053:7;;23075:49;;23113:10;;23075:49;:::i;22173:366::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;22245:18;;::::1;;22240:182;;22303:12;22280:9;:35:::0;22330:18;:25;;-1:-1:-1;;22330:25:0::1;22351:4;22330:25;::::0;;22370:21:::1;:28:::0;;-1:-1:-1;;22370:28:0::1;22330:25;22370:28;::::0;;22240:182:::1;22434:12;:20:::0;;-1:-1:-1;;22434:20:0::1;::::0;;::::1;;;;::::0;;22472:18;;22434:20:::1;22472:18;22467:65;;22512:8;::::0;::::1;::::0;;;::::1;22467:65;22173:366:::0;:::o;24971:111::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25040:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;25040:34:0::1;25070:4;25040:34;::::0;;24971:111::o;21007:161::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;21092:26;;21082:36;::::1;;21074:45;;;::::0;::::1;;21130:21:::0;:30;21007:161::o;22652:126::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22740:21:0;;;::::1;;::::0;;;:16:::1;:21;::::0;;;;:30;;-1:-1:-1;;22740:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22652:126::o;21176:148::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;21270:16:::1;:46:::0;;-1:-1:-1;;;;;;21270:46:0::1;-1:-1:-1::0;;;;;21270:46:0;;;::::1;::::0;;;::::1;::::0;;21176:148::o;20782:217::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;20890:13:::1;:27:::0;;;;20928:16:::1;:25:::0;20964:17:::1;:27:::0;20782:217::o;19853:229::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;19984:3:::1;19953:27;19968:12:::0;19953;:27:::1;:::i;:::-;:34;;19945:43;;;::::0;::::1;;19999:17;:32:::0;;;;20042:17:::1;:32:::0;19853:229::o;5067:148::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;5174:1:::1;5158:6:::0;;5137:40:::1;::::0;-1:-1:-1;;;;;5158:6:0;;::::1;::::0;5137:40:::1;::::0;5174:1;;5137:40:::1;5205:1;5188:19:::0;;-1:-1:-1;;;;;;5188:19:0::1;::::0;;5067:148::o;24397:107::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24465:23:0::1;24491:5;24465:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;24465:31:0::1;::::0;;24397:107::o;20324:225::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;20459:3:::1;20428:27;20443:12:::0;20428;:27:::1;:::i;:::-;:34;;20420:43;;;::::0;::::1;;20474:13;:28:::0;;;;20513:13:::1;:28:::0;20324:225::o;19119:87::-;19158:13;19191:7;19184:14;;;;;:::i;27637:167::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;27741:4:::1;27704:16;19652::::0;;;:7;:16;;;;;;;27758:38:::1;::::0;27783:2;19652:16;27758:9:::1;:38::i;21457:708::-:0;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;21642:4:::1;21632:7;;:14;;;;:::i;:::-;21624:3;21617;21607:7;;:13;;;;:::i;:::-;21606:21;;;;:::i;:::-;:41;;21598:105;;;::::0;-1:-1:-1;;;21598:105:0;;12233:2:1;21598:105:0::1;::::0;::::1;12215:21:1::0;12272:2;12252:18;;;12245:30;12311:34;12291:18;;;12284:62;-1:-1:-1;;;12362:18:1;;;12355:49;12421:19;;21598:105:0::1;12031:415:1::0;21598:105:0::1;21758:4;21748:7;;:14;;;;:::i;:::-;21740:3;21733;21723:7;;:13;;;;:::i;:::-;21722:21;;;;:::i;:::-;:41;;21714:100;;;::::0;-1:-1:-1;;;21714:100:0;;10365:2:1;21714:100:0::1;::::0;::::1;10347:21:1::0;10404:2;10384:18;;;10377:30;10443:34;10423:18;;;10416:62;-1:-1:-1;;;10494:18:1;;;10487:44;10548:19;;21714:100:0::1;10163:410:1::0;21714:100:0::1;21825:13;21860:3;21852;21842:7;;:13;;;;:::i;:::-;21841:23;;;;:::i;:::-;21825:39;;21875:13;21909:3;21902;21892:7;;:13;;;;:::i;:::-;21891:21;;;;:::i;:::-;21875:37;;21923:18;21962:2;21955;21945:7;;:12;;;;:::i;:::-;21944:21;;;;:::i;:::-;21989:168;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;::::1;;::::0;;;;;;;21976:10:::1;:181:::0;;;;-1:-1:-1;21976:181:0;;;;;;;-1:-1:-1;;21976:181:0::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;21457:708:0:o;23173:277::-;1470:10;23266:4;23355:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23355:34:0;;;;;;;;;;23266:4;;23283:137;;23333:7;;23355:54;;23393:15;;23355:54;:::i;32825:167::-;32903:4;32920:42;1470:10;32944:9;32955:6;32920:9;:42::i;22547:97::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;22616:11:::1;:20:::0;22547:97::o;24873:90::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;24929:18;:26;;-1:-1:-1;;24929:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24873:90::o;27812:285::-;27895:10;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27926:20:0;::::1;27918:29;;;::::0;::::1;;27985:39;::::0;-1:-1:-1;;;27985:39:0;;28018:4:::1;27985:39;::::0;::::1;6038:51:1::0;27958:24:0::1;::::0;-1:-1:-1;;;;;27985:24:0;::::1;::::0;::::1;::::0;6011:18:1;;27985:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28043:46;::::0;-1:-1:-1;;;28043:46:0;;-1:-1:-1;;;;;6805:32:1;;;28043:46:0::1;::::0;::::1;6787:51:1::0;6854:18;;;6847:34;;;27958:66:0;;-1:-1:-1;28043:23:0;;::::1;::::0;::::1;::::0;6760:18:1;;28043:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28035:54:::0;27812:285;-1:-1:-1;;;;27812:285:0:o;25208:171::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;25285:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;25285:32:0;;::::1;;::::0;;25333:38:::1;::::0;::::1;::::0;::::1;::::0;25309:8;7669:14:1;7662:22;7644:41;;7632:2;7617:18;;7504:187;25333:38:0::1;;;;;;;;25208:171:::0;:::o;25090:110::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25157:27:0::1;25187:5;25157:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;25157:35:0::1;::::0;;25090:110::o;35252:180::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;35334:12:::1;:39:::0;;-1:-1:-1;;35384:40:0;35334:39;::::1;;-1:-1:-1::0;;35384:40:0;;;;;35334:39:::1;35384:40:::0;::::1;;::::0;;;::::1;;::::0;;35252:180::o;5223:281::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5326:22:0;::::1;5304:110;;;::::0;-1:-1:-1;;;5304:110:0;;9555:2:1;5304:110:0::1;::::0;::::1;9537:21:1::0;9594:2;9574:18;;;9567:30;9633:34;9613:18;;;9606:62;-1:-1:-1;;;9684:18:1;;;9677:36;9730:19;;5304:110:0::1;9353:402:1::0;5304:110:0::1;5451:6;::::0;;5430:38:::1;::::0;-1:-1:-1;;;;;5430:38:0;;::::1;::::0;5451:6;::::1;::::0;5430:38:::1;::::0;::::1;5479:6;:17:::0;;-1:-1:-1;;;;;;5479:17:0::1;-1:-1:-1::0;;;;;5479:17:0;;;::::1;::::0;;;::::1;::::0;;5223:281::o;20090:226::-;4980:6;;-1:-1:-1;;;;;4980:6:0;1470:10;4980:22;4972:67;;;;-1:-1:-1;;;4972:67:0;;;;;;;:::i;:::-;20220:3:::1;20189:27;20204:12:::0;20189;:27:::1;:::i;:::-;:34;;20181:43;;;::::0;::::1;;20235:16;:31:::0;20277:16:::1;:31:::0;20090:226::o;25481:335::-;-1:-1:-1;;;;;25572:19:0;;25564:68;;;;-1:-1:-1;;;25564:68:0;;13059:2:1;25564:68:0;;;13041:21:1;13098:2;13078:18;;;13071:30;13137:34;13117:18;;;13110:62;-1:-1:-1;;;13188:18:1;;;13181:34;13232:19;;25564:68:0;12857:400:1;25564:68:0;-1:-1:-1;;;;;25651:21:0;;25643:68;;;;-1:-1:-1;;;25643:68:0;;9962:2:1;25643:68:0;;;9944:21:1;10001:2;9981:18;;;9974:30;10040:34;10020:18;;;10013:62;-1:-1:-1;;;10091:18:1;;;10084:32;10133:19;;25643:68:0;9760:398:1;25643:68:0;-1:-1:-1;;;;;25724:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;25776:32;;13767:25:1;;;25776:32:0;;13740:18:1;25776:32:0;;;;;;;25481:335;;;:::o;29733:3084::-;-1:-1:-1;;;;;29821:18:0;;29813:68;;;;-1:-1:-1;;;29813:68:0;;12653:2:1;29813:68:0;;;12635:21:1;12692:2;12672:18;;;12665:30;12731:34;12711:18;;;12704:62;-1:-1:-1;;;12782:18:1;;;12775:35;12827:19;;29813:68:0;12451:401:1;29813:68:0;-1:-1:-1;;;;;29900:16:0;;29892:64;;;;-1:-1:-1;;;29892:64:0;;9151:2:1;29892:64:0;;;9133:21:1;9190:2;9170:18;;;9163:30;9229:34;9209:18;;;9202:62;-1:-1:-1;;;9280:18:1;;;9273:33;9323:19;;29892:64:0;8949:399:1;29892:64:0;29984:1;29975:6;:10;29967:64;;;;-1:-1:-1;;;29967:64:0;;11491:2:1;29967:64:0;;;11473:21:1;11530:2;11510:18;;;11503:30;11569:34;11549:18;;;11542:62;-1:-1:-1;;;11620:18:1;;;11613:39;11669:19;;29967:64:0;11289:405:1;29967:64:0;-1:-1:-1;;;;;30050:20:0;;;;;;:14;:20;;;;;;;;:29;30042:46;;;;-1:-1:-1;;;30042:46:0;;;;;;11901:2:1;11883:21;;;11940:1;11920:18;;;11913:29;-1:-1:-1;;;11973:2:1;11958:18;;11951:34;12017:2;12002:18;;11699:327;30042:46:0;-1:-1:-1;;;;;30107:18:0;;;;;;:14;:18;;;;;;;;:27;30099:44;;;;-1:-1:-1;;;30099:44:0;;;;;;11901:2:1;11883:21;;;11940:1;11920:18;;;11913:29;-1:-1:-1;;;11973:2:1;11958:18;;11951:34;12017:2;12002:18;;11699:327;30099:44:0;30161:12;;;;;;;30156:236;;-1:-1:-1;;;;;30198:22:0;;;;;;:16;:22;;;;;;;;;:46;;-1:-1:-1;;;;;;30224:20:0;;;;;;:16;:20;;;;;;;;30198:46;30190:80;;;;-1:-1:-1;;;30190:80:0;;11141:2:1;30190:80:0;;;11123:21:1;11180:2;11160:18;;;11153:30;-1:-1:-1;;;11199:18:1;;;11192:51;11260:18;;30190:80:0;10939:345:1;30190:80:0;-1:-1:-1;;;;;30303:13:0;19652:16;19625:7;19652:16;;;:7;:16;;;;;;30293:29;;:52;;;30332:13;-1:-1:-1;;;;;30326:19:0;:2;-1:-1:-1;;;;;30326:19:0;;;30293:52;30285:95;;;;-1:-1:-1;;;30285:95:0;;13464:2:1;30285:95:0;;;13446:21:1;13503:2;13483:18;;;13476:30;13542:32;13522:18;;;13515:60;13592:18;;30285:95:0;13262:354:1;30285:95:0;30408:18;;;;30404:697;;;4891:7;4918:6;-1:-1:-1;;;;;30446:15:0;;;4918:6;;30446:15;;;;:32;;-1:-1:-1;4891:7:0;4918:6;-1:-1:-1;;;;;30465:13:0;;;4918:6;;30465:13;;30446:32;:77;;;-1:-1:-1;;;;;;30482:21:0;;30496:6;30482:21;;;;:41;;-1:-1:-1;;;;;;30507:16:0;;;;30482:41;30443:647;;;30570:13;-1:-1:-1;;;;;30562:21:0;:4;-1:-1:-1;;;;;30562:21:0;;:44;;;;30593:13;-1:-1:-1;;;;;30587:19:0;:2;-1:-1:-1;;;;;30587:19:0;;30562:44;30558:259;;;-1:-1:-1;;;;;30653:22:0;;;;;;:18;:22;;;;;;;;30652:23;:52;;;;-1:-1:-1;;;;;;30680:24:0;;;;;;:18;:24;;;;;;;;30679:25;30652:52;30649:149;;;30751:10;:22;30741:32;;;30733:41;;;;;;30852:15;-1:-1:-1;;;;;30838:30:0;:2;-1:-1:-1;;;;;30838:30:0;;;:53;;;;;30878:13;-1:-1:-1;;;;;30872:19:0;:2;-1:-1:-1;;;;;30872:19:0;;;30838:53;30835:240;;;-1:-1:-1;;;;;30920:22:0;;;;;;:18;:22;;;;;;;;30916:140;;31005:26;;30995:6;30979:13;30989:2;-1:-1:-1;;;;;19652:16:0;19625:7;19652:16;;;:7;:16;;;;;;;19559:117;30979:13;:22;;;;:::i;:::-;:52;;30971:61;;;;;;31125:13;-1:-1:-1;;;;;31117:21:0;:4;-1:-1:-1;;;;;31117:21:0;;:55;;;;;31156:15;-1:-1:-1;;;;;31142:30:0;:2;-1:-1:-1;;;;;31142:30:0;;;31117:55;:82;;;;-1:-1:-1;;;;;;31177:22:0;;;;;;:18;:22;;;;;;;;31176:23;31117:82;31113:647;;;31238:12;:31;;;31234:204;;;-1:-1:-1;;;;;31302:15:0;;;;;;:11;:15;;;;;;31320;-1:-1:-1;31294:42:0;;;;;;31396:21;;31377:41;;:15;:41;:::i;:::-;-1:-1:-1;;;;;31359:15:0;;;;;;:11;:15;;;;;:59;31234:204;31113:647;;;31471:13;-1:-1:-1;;;;;31463:21:0;:4;-1:-1:-1;;;;;31463:21:0;;;:50;;;;-1:-1:-1;;;;;;31489:24:0;;;;;;:18;:24;;;;;;;;31488:25;31463:50;31459:301;;;31537:12;:32;;;;;;31533:212;;;-1:-1:-1;;;;;31602:18:0;;;;;;:12;:18;;;;;;31624:15;-1:-1:-1;31602:37:0;31594:46;;;;;;31703:21;;31684:41;;:15;:41;:::i;:::-;-1:-1:-1;;;;;31663:18:0;;;;;;:12;:18;;;;;:62;31533:212;31791:16;;;;31790:17;:55;;;;;31832:13;-1:-1:-1;;;;;31824:21:0;:4;-1:-1:-1;;;;;31824:21:0;;;31790:55;:93;;;;-1:-1:-1;31862:21:0;;;;;;;31790:93;31772:626;;;31959:4;31910:28;19652:16;;;:7;:16;;;;;;31984:13;;;;;;;:58;;;;;32025:17;;32001:20;:41;;31984:58;:109;;;;-1:-1:-1;32067:26:0;;32046:17;;:47;;31984:109;31980:407;;;32129:26;;32114:42;;:14;:42::i;:::-;31980:407;;;32183:13;;;;;;;32182:14;:66;;;;;32224:24;;32200:20;:48;;32182:66;:124;;;;-1:-1:-1;32280:26:0;;32252:24;;:54;;32182:124;32178:209;;;32344:26;;32327:44;;:16;:44::i;:::-;31895:503;31772:626;-1:-1:-1;;;;;32591:24:0;;32471:12;32591:24;;;:18;:24;;;;;;32486:4;;32591:24;;;:50;;-1:-1:-1;;;;;;32619:22:0;;;;;;:18;:22;;;;;;;;32591:50;32587:98;;;-1:-1:-1;32668:5:0;32587:98;32768:41;32783:4;32789:2;32793:6;32801:7;32768:14;:41::i;25824:889::-;17268:16;:23;;-1:-1:-1;;17268:23:0;17287:4;17268:23;;;25926:21:::1;17268:16:::0;25981::::1;25996:1;25981:12:::0;:16:::1;:::i;:::-;25958:39:::0;-1:-1:-1;26008:23:0::1;26034:27;25958:39:::0;26034:12;:27:::1;:::i;:::-;26008:53:::0;-1:-1:-1;26078:16:0;;26074:79:::1;;26111:30;26128:12;26111:16;:30::i;:::-;26186:21;26165:18;26253:27;26266:14:::0;26186:21;26253:27:::1;:::i;:::-;26218:63;;26316:1;26298:15;:19;:43;;;;;26340:1;26321:16;:20;26298:43;26294:192;;;26358:47;26371:15;26388:16;26358:12;:47::i;:::-;26425:49;::::0;;15306:25:1;;;15362:2;15347:18;;15340:34;;;26425:49:0::1;::::0;15279:18:1;26425:49:0::1;;;;;;;26294:192;26519:12;26498:17;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;26568:26:0;;26548:17:::1;::::0;:46:::1;:108:::0;::::1;;;;26655:1;26634:17;;26615:16;;26599:13;;:32;;;;:::i;:::-;:52;;;;:::i;:::-;26598:58;26548:108;26544:162;;;26673:13;:21:::0;;-1:-1:-1;;26673:21:0::1;::::0;;26544:162:::1;-1:-1:-1::0;;17314:16:0;:24;;-1:-1:-1;;17314:24:0;;;-1:-1:-1;;;;25824:889:0:o;26721:614::-;17268:16;:23;;-1:-1:-1;;17268:23:0;17287:4;17268:23;;;26804:16;;26800:79:::1;;26837:30;26854:12;26837:16;:30::i;:::-;26918:21;26954:20:::0;;26950:145:::1;;26991:16;::::0;:43:::1;::::0;-1:-1:-1;;;;;26991:16:0;;::::1;::::0;:43;::::1;;;::::0;27017:16;;26991::::1;:43:::0;:16;:43;27017:16;26991;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;27054:29:0::1;::::0;13767:25:1;;;27054:29:0::1;::::0;13755:2:1;13740:18;27054:29:0::1;;;;;;;26950:145;27135:12;27107:24;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;27191:26:0;;27164:24:::1;::::0;:53:::1;:115:::0;::::1;;;;27277:1;27257:17;;27238:16;;27222:13;;:32;;;;:::i;:::-;:52;;;;:::i;:::-;:56;27164:115;27160:168;;;27296:13;:20:::0;;-1:-1:-1;;27296:20:0::1;::::0;::::1;::::0;;27160:168:::1;-1:-1:-1::0;;17314:16:0;:24;;-1:-1:-1;;17314:24:0;;;26721:614::o;33073:2171::-;33319:26;;33178:17;;;;;;;;33319:26;;;;;33315:573;;;33366:18;;;;:46;;;;-1:-1:-1;33388:9:0;:20;:24;;33366:46;:101;;;;-1:-1:-1;33455:11:0;;33432:9;:20;:34;;33455:11;33432:34;:::i;:::-;33416:12;:51;33366:101;33362:515;;;33488:26;:34;;-1:-1:-1;;33488:34:0;;;33362:515;;;33599:13;-1:-1:-1;;;;;33589:23:0;:6;-1:-1:-1;;;;;33589:23:0;;:85;;;;;33658:15;-1:-1:-1;;;;;33637:37:0;:9;-1:-1:-1;;;;;33637:37:0;;;33589:85;:140;;;;-1:-1:-1;;;;;;33700:29:0;;;;;;:18;:29;;;;;;;;33699:30;33589:140;33563:299;;;33772:32;33788:9;33799:4;33772:15;:32::i;:::-;-1:-1:-1;33838:4:0;33563:299;33904:7;33900:1048;;;33942:13;-1:-1:-1;;;;;33932:23:0;:6;-1:-1:-1;;;;;33932:23:0;;33928:447;;;33996:16;;33976:36;;34051:16;;34031:36;;33928:447;;;34106:13;-1:-1:-1;;;;;34093:26:0;:9;-1:-1:-1;;;;;34093:26:0;;34089:286;;;34160:17;;34140:37;;34216:17;;34196:37;;34089:286;;;34294:13;;34274:33;;34346:13;;34326:33;;34089:286;34395:7;34391:116;;;34443:3;34423:23;;34485:3;34465:23;;34391:116;34589:4;34546:37;34566:17;34546;:37;:::i;:::-;34536:48;;:6;:48;:::i;:::-;34535:59;;;;:::i;:::-;34523:71;-1:-1:-1;34657:1:0;34616:37;34636:17;34616;:37;:::i;:::-;34615:43;34611:326;;;34679:27;34743:37;34763:17;34743;:37;:::i;:::-;34710:29;34722:17;34710:9;:29;:::i;:::-;:71;;;;:::i;:::-;34679:103;;34822:19;34801:17;;:40;;;;;;;:::i;:::-;;;;-1:-1:-1;34889:31:0;;-1:-1:-1;34901:19:0;34889:9;:31;:::i;:::-;34860:24;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;;34611:326:0;34968:15;34986:18;34995:9;34986:6;:18;:::i;:::-;-1:-1:-1;;;;;35015:15:0;;;;;;:7;:15;;;;;:25;;34968:36;;-1:-1:-1;35034:6:0;;35015:15;;;:25;;35034:6;;35015:25;:::i;:::-;;;;-1:-1:-1;;35067:4:0;35051:22;;;;:7;:22;;;;;:35;;35077:9;;35051:22;:35;;35077:9;;35051:35;:::i;:::-;;;;-1:-1:-1;;35102:42:0;;13767:25:1;;;35127:4:0;;-1:-1:-1;;;;;35102:42:0;;;;;13755:2:1;13740:18;35102:42:0;;;;;;;-1:-1:-1;;;;;35155:18:0;;;;;;:7;:18;;;;;:29;;35177:7;;35155:18;:29;;35177:7;;35155:29;:::i;:::-;;;;;;;;35217:9;-1:-1:-1;;;;;35200:36:0;35209:6;-1:-1:-1;;;;;35200:36:0;;35228:7;35200:36;;;;13767:25:1;;13755:2;13740:18;;13621:177;35200:36:0;;;;;;;;33167:2077;;;;;33073:2171;;;;:::o;28105:692::-;28255:16;;;28269:1;28255:16;;;;;;;;28231:21;;28255:16;;;;;;;;;;-1:-1:-1;28255:16:0;28231:40;;28300:4;28282;28287:1;28282:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;28282:23:0;;;-1:-1:-1;;;;;28282:23:0;;;;;28326:15;-1:-1:-1;;;;;28326:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28316:4;28321:1;28316:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28316:32:0;;;:7;;;;;;;;;;:32;;;;28384:4;28364:26;;;;:11;:26;;;;;;28399:15;28364:52;;;;;;;;;;;:66;-1:-1:-1;28361:166:0;;;28447:68;28464:4;28479:15;-1:-1:-1;;28447:8:0;:68::i;:::-;28565:224;;-1:-1:-1;;;28565:224:0;;-1:-1:-1;;;;;28565:15:0;:66;;;;:224;;28646:11;;28672:1;;28716:4;;28743;;28763:15;;28565:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28160:637;28105:692;:::o;28805:560::-;28911:4;28891:26;;;;:11;:26;;;;;;;;28926:15;-1:-1:-1;;;;;28891:52:0;;;;;;;;;:66;-1:-1:-1;28888:166:0;;;28974:68;28991:4;29006:15;-1:-1:-1;;28974:8:0;:68::i;:::-;29300:16;;29096:261;;-1:-1:-1;;;29096:261:0;;29168:4;29096:261;;;7233:34:1;7283:18;;;7276:34;;;29214:1:0;7326:18:1;;;7319:34;;;7369:18;;;7362:34;-1:-1:-1;;;;;29300:16:0;;;7412:19:1;;;7405:44;29331:15:0;7465:19:1;;;7458:35;29096:15:0;:31;;;;;;29135:9;;7167:19:1;;29096:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28805:560;;:::o;24516:349::-;24608:13;-1:-1:-1;;;;;24597:24:0;:7;-1:-1:-1;;;;;24597:24:0;;:52;;;-1:-1:-1;;;;;;24625:24:0;;24644:4;24625:24;24597:52;:91;;;;24672:15;-1:-1:-1;;;;;24653:35:0;:7;-1:-1:-1;;;;;24653:35:0;;24597:91;24594:107;;;24691:8;;;24594:107;24740:4;24725:19;;;;24721:136;;;-1:-1:-1;;;;;24761:23:0;;;;;;:14;:23;;;;;;;;;:30;;-1:-1:-1;;24761:30:0;24787:4;24761:30;;;24811:34;;6492:51:1;;;6586:14;;6579:22;6559:18;;;6552:50;24811:34:0;;6465:18:1;24811:34:0;;;;;;;24516:349;;:::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;:::-;250:5;14:247;-1:-1:-1;;;14:247:1:o;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;782:388::-;850:6;858;911:2;899:9;890:7;886:23;882:32;879:52;;;927:1;924;917:12;879:52;966:9;953:23;985:31;1010:5;985:31;:::i;:::-;1035:5;-1:-1:-1;1092:2:1;1077:18;;1064:32;1105:33;1064:32;1105:33;:::i;:::-;1157:7;1147:17;;;782:388;;;;;:::o;1175:456::-;1252:6;1260;1268;1321:2;1309:9;1300:7;1296:23;1292:32;1289:52;;;1337:1;1334;1327:12;1289:52;1376:9;1363:23;1395:31;1420:5;1395:31;:::i;:::-;1445:5;-1:-1:-1;1502:2:1;1487:18;;1474:32;1515:33;1474:32;1515:33;:::i;:::-;1175:456;;1567:7;;-1:-1:-1;;;1621:2:1;1606:18;;;;1593:32;;1175:456::o;1636:382::-;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1817:9;1804:23;1836:31;1861:5;1836:31;:::i;:::-;1886:5;-1:-1:-1;1943:2:1;1928:18;;1915:32;1956:30;1915:32;1956:30;:::i;2023:315::-;2091:6;2099;2152:2;2140:9;2131:7;2127:23;2123:32;2120:52;;;2168:1;2165;2158:12;2120:52;2207:9;2194:23;2226:31;2251:5;2226:31;:::i;:::-;2276:5;2328:2;2313:18;;;;2300:32;;-1:-1:-1;;;2023:315:1:o;2343:750::-;2435:6;2443;2451;2504:2;2492:9;2483:7;2479:23;2475:32;2472:52;;;2520:1;2517;2510:12;2472:52;2560:9;2547:23;2589:18;2630:2;2622:6;2619:14;2616:34;;;2646:1;2643;2636:12;2616:34;2684:6;2673:9;2669:22;2659:32;;2729:7;2722:4;2718:2;2714:13;2710:27;2700:55;;2751:1;2748;2741:12;2700:55;2791:2;2778:16;2817:2;2809:6;2806:14;2803:34;;;2833:1;2830;2823:12;2803:34;2888:7;2881:4;2871:6;2868:1;2864:14;2860:2;2856:23;2852:34;2849:47;2846:67;;;2909:1;2906;2899:12;2846:67;2940:4;2932:13;;;;-1:-1:-1;2964:6:1;-1:-1:-1;;3005:20:1;;2992:34;3035:28;2992:34;3035:28;:::i;:::-;3082:5;3072:15;;;2343:750;;;;;:::o;3098:241::-;3154:6;3207:2;3195:9;3186:7;3182:23;3178:32;3175:52;;;3223:1;3220;3213:12;3175:52;3262:9;3249:23;3281:28;3303:5;3281:28;:::i;3344:245::-;3411:6;3464:2;3452:9;3443:7;3439:23;3435:32;3432:52;;;3480:1;3477;3470:12;3432:52;3512:9;3506:16;3531:28;3553:5;3531:28;:::i;3594:376::-;3656:6;3664;3717:2;3705:9;3696:7;3692:23;3688:32;3685:52;;;3733:1;3730;3723:12;3685:52;3772:9;3759:23;3791:28;3813:5;3791:28;:::i;3975:180::-;4034:6;4087:2;4075:9;4066:7;4062:23;4058:32;4055:52;;;4103:1;4100;4093:12;4055:52;-1:-1:-1;4126:23:1;;3975:180;-1:-1:-1;3975:180:1:o;4160:184::-;4230:6;4283:2;4271:9;4262:7;4258:23;4254:32;4251:52;;;4299:1;4296;4289:12;4251:52;-1:-1:-1;4322:16:1;;4160:184;-1:-1:-1;4160:184:1:o;4349:248::-;4417:6;4425;4478:2;4466:9;4457:7;4453:23;4449:32;4446:52;;;4494:1;4491;4484:12;4446:52;-1:-1:-1;;4517:23:1;;;4587:2;4572:18;;;4559:32;;-1:-1:-1;4349:248:1:o;4602:316::-;4679:6;4687;4695;4748:2;4736:9;4727:7;4723:23;4719:32;4716:52;;;4764:1;4761;4754:12;4716:52;-1:-1:-1;;4787:23:1;;;4857:2;4842:18;;4829:32;;-1:-1:-1;4908:2:1;4893:18;;;4880:32;;4602:316;-1:-1:-1;4602:316:1:o;4923:306::-;5011:6;5019;5027;5080:2;5068:9;5059:7;5055:23;5051:32;5048:52;;;5096:1;5093;5086:12;5048:52;5125:9;5119:16;5109:26;;5175:2;5164:9;5160:18;5154:25;5144:35;;5219:2;5208:9;5204:18;5198:25;5188:35;;4923:306;;;;;:::o;5234:653::-;5344:6;5352;5360;5368;5376;5384;5392;5445:3;5433:9;5424:7;5420:23;5416:33;5413:53;;;5462:1;5459;5452:12;5413:53;5498:9;5485:23;5475:33;;5555:2;5544:9;5540:18;5527:32;5517:42;;5606:2;5595:9;5591:18;5578:32;5568:42;;5657:2;5646:9;5642:18;5629:32;5619:42;;5708:3;5697:9;5693:19;5680:33;5670:43;;5760:3;5749:9;5745:19;5732:33;5722:43;;5815:3;5804:9;5800:19;5787:33;5829:28;5851:5;5829:28;:::i;:::-;5876:5;5866:15;;;5234:653;;;;;;;;;;:::o;8347:597::-;8459:4;8488:2;8517;8506:9;8499:21;8549:6;8543:13;8592:6;8587:2;8576:9;8572:18;8565:34;8617:1;8627:140;8641:6;8638:1;8635:13;8627:140;;;8736:14;;;8732:23;;8726:30;8702:17;;;8721:2;8698:26;8691:66;8656:10;;8627:140;;;8785:6;8782:1;8779:13;8776:91;;;8855:1;8850:2;8841:6;8830:9;8826:22;8822:31;8815:42;8776:91;-1:-1:-1;8928:2:1;8907:15;-1:-1:-1;;8903:29:1;8888:45;;;;8935:2;8884:54;;8347:597;-1:-1:-1;;;8347:597:1:o;10578:356::-;10780:2;10762:21;;;10799:18;;;10792:30;10858:34;10853:2;10838:18;;10831:62;10925:2;10910:18;;10578:356::o;14147:980::-;14409:4;14457:3;14446:9;14442:19;14488:6;14477:9;14470:25;14514:2;14552:6;14547:2;14536:9;14532:18;14525:34;14595:3;14590:2;14579:9;14575:18;14568:31;14619:6;14654;14648:13;14685:6;14677;14670:22;14723:3;14712:9;14708:19;14701:26;;14762:2;14754:6;14750:15;14736:29;;14783:1;14793:195;14807:6;14804:1;14801:13;14793:195;;;14872:13;;-1:-1:-1;;;;;14868:39:1;14856:52;;14963:15;;;;14928:12;;;;14904:1;14822:9;14793:195;;;-1:-1:-1;;;;;;;15044:32:1;;;;15039:2;15024:18;;15017:60;-1:-1:-1;;;15108:3:1;15093:19;15086:35;15005:3;14147:980;-1:-1:-1;;;14147:980:1:o;15980:128::-;16020:3;16051:1;16047:6;16044:1;16041:13;16038:39;;;16057:18;;:::i;:::-;-1:-1:-1;16093:9:1;;15980:128::o;16113:217::-;16153:1;16179;16169:132;;16223:10;16218:3;16214:20;16211:1;16204:31;16258:4;16255:1;16248:15;16286:4;16283:1;16276:15;16169:132;-1:-1:-1;16315:9:1;;16113:217::o;16335:168::-;16375:7;16441:1;16437;16433:6;16429:14;16426:1;16423:21;16418:1;16411:9;16404:17;16400:45;16397:71;;;16448:18;;:::i;:::-;-1:-1:-1;16488:9:1;;16335:168::o;16508:125::-;16548:4;16576:1;16573;16570:8;16567:34;;;16581:18;;:::i;:::-;-1:-1:-1;16618:9:1;;16508:125::o;16638:380::-;16717:1;16713:12;;;;16760;;;16781:61;;16835:4;16827:6;16823:17;16813:27;;16781:61;16888:2;16880:6;16877:14;16857:18;16854:38;16851:161;;;16934:10;16929:3;16925:20;16922:1;16915:31;16969:4;16966:1;16959:15;16997:4;16994:1;16987:15;16851:161;;16638:380;;;:::o;17023:135::-;17062:3;-1:-1:-1;;17083:17:1;;17080:43;;;17103:18;;:::i;:::-;-1:-1:-1;17150:1:1;17139:13;;17023:135::o;17163:127::-;17224:10;17219:3;17215:20;17212:1;17205:31;17255:4;17252:1;17245:15;17279:4;17276:1;17269:15;17295:127;17356:10;17351:3;17347:20;17344:1;17337:31;17387:4;17384:1;17377:15;17411:4;17408:1;17401:15;17559:131;-1:-1:-1;;;;;17634:31:1;;17624:42;;17614:70;;17680:1;17677;17670:12;17695:118;17781:5;17774:13;17767:21;17760:5;17757:32;17747:60;;17803:1;17800;17793:12

Swarm Source

ipfs://0ede723fb3abd759ff7bd708a9acab383a1cb77f52e7a25a27b8d708fd92a6b7
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.