ETH Price: $3,338.77 (-1.07%)
Gas: 8 Gwei

Token

NO NUT NOVEMBER (NUTS)
 

Overview

Max Total Supply

1,000,000 NUTS

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,518.758026340703953296 NUTS

Value
$0.00
0x37C5cC285D2Ce2EFA1eea597cd5163ca2D6B7e95
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:
NONUTNOVEMBER

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-01
*/

//SPDX-License-Identifier: UNLICENSED

/**

\\\  ///     .-.       \\\  ///  wWw  wWw  (o)__(o)   \\\  ///     .-.     wWw    wWw         \\\    ///  _              ))     
((O)(O))   c(O_O)c     ((O)(O))  (O)  (O)  (__  __)   ((O)(O))   c(O_O)c   (O)    (O)   wWw   ((O)  (O)) /||_     wWw   (Oo)-.  
 | \ ||   ,'.---.`,     | \ ||   / )  ( \    (  )      | \ ||   ,'.---.`,  ( \    / )   (O)_   | \  / |   /`_)    (O)_   | (_)) 
 ||\\||  / /|_|_|\ \    ||\\||  / /    \ \    )(       ||\\||  / /|_|_|\ \  \ \  / /   .' __)  ||\\//||  |  `.   .' __)  |  .'  
 || \ |  | \_____/ |    || \ |  | \____/ |   (  )      || \ |  | \_____/ |  /  \/  \  (  _)    || \/ ||  | (_)) (  _)    )|\\   
 ||  ||  '. `---' .`    ||  ||  '. `--' .`    )/       ||  ||  '. `---' .`  \ `--' /   `.__)   ||    ||  (.'-'   `.__)  (/  \)  
(_/  \_)   `-...-'     (_/  \_)   `-..-'     (        (_/  \_)   `-...-'     `-..-'           (_/    \_)  )              )      


TG : https://t.me/nonutnovember_eth

Website : https://nonutnov.net/

Twitter : https://twitter.com/NoNutNov_Eth

Join the movement and HODL strong this November..
Say NO to indulgence and YES to financial prosperity!!

**/

pragma solidity ^0.8.22;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function WETH() external pure returns (address);

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

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

contract NONUTNOVEMBER is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool private  providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 private  tokenLiquidityThreshold = 2500 * 10**18;
    uint256 public maxWalletLimit = 20000 * 10**18;

    uint256 private  genesis_block;
    uint256 private deadline = 5;
    uint256 private launchtax = 22;

    address private  marketingWallet = 0xF72442a1ba2dA935bf4aEB9aEE8b3DD70f152e56;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes public taxes = Taxes(10, 0);
    Taxes public sellTaxes = Taxes(20, 0);

    mapping(address => bool) public exemptFee;


    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("NO NUT NOVEMBER", "NUTS") {
        _tokengeneration(msg.sender, 1000000 * 10**decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[deadWallet] = true;
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex) {
           
            if (recipient != pair) {
                require(balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

	if(feeswap == 0){
            return;
        }	

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

        }
    }

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

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

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

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity);
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity);
    }

   function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }


    function AddExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = true;
    }

    function RemoveExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = false;
    }


    function updateMaxWalletLimit(uint256 maxWallet) external onlyOwner {
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }


    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"UpdateBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","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":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b1916905568878678326eac90000060085569043c33c19375648000006009556005600b556016600c55600d80546001600160a01b03191673f72442a1ba2da935bf4aeb9aee8b3dd70f152e56179055600a60808190525f60a0819052600e91909155600f819055610100604052601460c081905260e082905260105560115534801562000095575f80fd5b506040518060400160405280600f81526020016e272790272aaa102727ab22a6a122a960891b815250604051806040016040528060048152602001634e55545360e01b8152508160039081620000ec9190620004f7565b506004620000fb8282620004f7565b50505062000118620001126200034460201b60201c565b62000348565b62000140336200012b6012600a620006d2565b6200013a90620f4240620006e9565b62000399565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000196573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001bc919062000703565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000208573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022e919062000703565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000279573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029f919062000703565b600680546001600160a01b03199081166001600160a01b03958616179091556007805490911691841691909117905550305f90815260126020526040808220805460ff1990811660019081179092553384528284208054821683179055600d549094168352908220805484168217905561dead9091527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f780549092161790556200072b565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620004025760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b0382165f81815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200048357607f821691505b602082108103620004a257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200045557805f5260205f20601f840160051c81016020851015620004cf5750805b601f840160051c820191505b81811015620004f0575f8155600101620004db565b5050505050565b81516001600160401b038111156200051357620005136200045a565b6200052b816200052484546200046e565b84620004a8565b602080601f83116001811462000561575f8415620005495750858301515b5f19600386901b1c1916600185901b178555620005bb565b5f85815260208120601f198616915b82811015620005915788860151825594840194600190910190840162000570565b5085821015620005af57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200061757815f1904821115620005fb57620005fb620005c3565b808516156200060957918102915b93841c9390800290620005dc565b509250929050565b5f826200062f57506001620006cc565b816200063d57505f620006cc565b8160018114620006565760028114620006615762000681565b6001915050620006cc565b60ff841115620006755762000675620005c3565b50506001821b620006cc565b5060208310610133831016604e8410600b8410161715620006a6575081810a620006cc565b620006b28383620005d7565b805f1904821115620006c857620006c8620005c3565b0290505b92915050565b5f620006e260ff8416836200061f565b9392505050565b8082028115828204841417620006cc57620006cc620005c3565b5f6020828403121562000714575f80fd5b81516001600160a01b0381168114620006e2575f80fd5b611d2d80620007395f395ff3fe6080604052600436106101de575f3560e01c806385141a77116100fd578063aacebbe311610092578063f2fde38b11610062578063f2fde38b146105a0578063f52be97c146105bf578063f66895a3146105de578063f887ea40146105f8575f80fd5b8063aacebbe3146104f0578063c5d32bb21461050f578063d695609b1461053d578063dd62ed3e1461055c575f80fd5b80639e252f00116100cd5780639e252f0014610474578063a457c2d714610493578063a8aa1b31146104b2578063a9059cbb146104d1575f80fd5b806385141a77146104025780638a8c523c1461042f5780638da5cb5b1461044357806395d89b4114610460575f80fd5b80634324deae1161017357806370a082311161014357806370a082311461036c578063715018a6146103a0578063728f8eea146103b4578063832c2bd2146103e3575f80fd5b80634324deae146102f95780634ada218b146103185780635dbdb7e31461033857806366a88d9614610357575f80fd5b806323b872dd116101ae57806323b872dd14610281578063313ce567146102a057806339509351146102bb57806342b6fa11146102da575f80fd5b806306fdde03146101e9578063095ea7b3146102135780631340538f1461024257806318160ddd14610263575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b506101fd610617565b60405161020a91906118ea565b60405180910390f35b34801561021e575f80fd5b5061023261022d36600461194a565b6106a7565b604051901515815260200161020a565b34801561024d575f80fd5b5061026161025c366004611974565b6106bd565b005b34801561026e575f80fd5b506002545b60405190815260200161020a565b34801561028c575f80fd5b5061023261029b36600461199a565b61070e565b3480156102ab575f80fd5b506040516012815260200161020a565b3480156102c6575f80fd5b506102326102d536600461194a565b6107bd565b3480156102e5575f80fd5b506102616102f43660046119d8565b6107f3565b348015610304575f80fd5b506102616103133660046119d8565b610839565b348015610323575f80fd5b5060075461023290600160b01b900460ff1681565b348015610343575f80fd5b506102616103523660046119ef565b61087f565b348015610362575f80fd5b5061027360095481565b348015610377575f80fd5b506102736103863660046119ef565b6001600160a01b03165f9081526020819052604090205490565b3480156103ab575f80fd5b506102616108cc565b3480156103bf575f80fd5b50600e54600f546103ce919082565b6040805192835260208301919091520161020a565b3480156103ee575f80fd5b506102616103fd3660046119ef565b610901565b34801561040d575f80fd5b5061041761dead81565b6040516001600160a01b03909116815260200161020a565b34801561043a575f80fd5b5061026161094b565b34801561044e575f80fd5b506005546001600160a01b0316610417565b34801561046b575f80fd5b506101fd6109ea565b34801561047f575f80fd5b5061026161048e3660046119d8565b6109f9565b34801561049e575f80fd5b506102326104ad36600461194a565b610a5e565b3480156104bd575f80fd5b50600754610417906001600160a01b031681565b3480156104dc575f80fd5b506102326104eb36600461194a565b610af8565b3480156104fb575f80fd5b5061026161050a3660046119ef565b610b04565b34801561051a575f80fd5b506102326105293660046119ef565b60126020525f908152604090205460ff1681565b348015610548575f80fd5b50610261610557366004611a0a565b610b50565b348015610567575f80fd5b50610273610576366004611a2a565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156105ab575f80fd5b506102616105ba3660046119ef565b610b98565b3480156105ca575f80fd5b506102616105d9366004611a0a565b610c33565b3480156105e9575f80fd5b506010546011546103ce919082565b348015610603575f80fd5b50600654610417906001600160a01b031681565b60606003805461062690611a61565b80601f016020809104026020016040519081016040528092919081815260200182805461065290611a61565b801561069d5780601f106106745761010080835404028352916020019161069d565b820191905f5260205f20905b81548152906001019060200180831161068057829003601f168201915b5050505050905090565b5f6106b3338484610c7b565b5060015b92915050565b6005546001600160a01b031633146106f05760405162461bcd60e51b81526004016106e790611a99565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b5f61071a848484610d9e565b6001600160a01b0384165f9081526001602090815260408083203384529091529020548281101561079e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106e7565b6107b285336107ad8685611ae2565b610c7b565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916106b39185906107ad908690611af5565b6005546001600160a01b0316331461081d5760405162461bcd60e51b81526004016106e790611a99565b6108296012600a611be8565b6108339082611bf6565b60085550565b6005546001600160a01b031633146108635760405162461bcd60e51b81526004016106e790611a99565b61086f6012600a611be8565b6108799082611bf6565b60095550565b6005546001600160a01b031633146108a95760405162461bcd60e51b81526004016106e790611a99565b6001600160a01b03165f908152601260205260409020805460ff19166001179055565b6005546001600160a01b031633146108f65760405162461bcd60e51b81526004016106e790611a99565b6108ff5f611275565b565b6005546001600160a01b0316331461092b5760405162461bcd60e51b81526004016106e790611a99565b6001600160a01b03165f908152601260205260409020805460ff19169055565b6005546001600160a01b031633146109755760405162461bcd60e51b81526004016106e790611a99565b600754600160b01b900460ff16156109cf5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016106e7565b6007805461ffff60a81b191661010160a81b17905543600a55565b60606004805461062690611a61565b6005546001600160a01b03163314610a235760405162461bcd60e51b81526004016106e790611a99565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610a5a573d5f803e3d5ffd5b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610adf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106e7565b610aee33856107ad8685611ae2565b5060019392505050565b5f6106b3338484610d9e565b6005546001600160a01b03163314610b2e5760405162461bcd60e51b81526004016106e790611a99565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b7a5760405162461bcd60e51b81526004016106e790611a99565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610bc25760405162461bcd60e51b81526004016106e790611a99565b6001600160a01b038116610c275760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e7565b610c3081611275565b50565b6005546001600160a01b03163314610c5d5760405162461bcd60e51b81526004016106e790611a99565b60408051808201909152828152602001819052601091909155601155565b6001600160a01b038316610cdd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106e7565b6001600160a01b038216610d3e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106e7565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610dff5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106e7565b6001600160a01b0383165f9081526012602052604090205460ff16158015610e3f57506001600160a01b0382165f9081526012602052604090205460ff16155b15610e9357600754600160b01b900460ff16610e935760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016106e7565b6007546001600160a01b038481169116148015610ec857506001600160a01b0382165f9081526012602052604090205460ff16155b8015610ede5750600754600160a01b900460ff16155b15610f5d5760095481610f05846001600160a01b03165f9081526020819052604090205490565b610f0f9190611af5565b1115610f5d5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016106e7565b6007546001600160a01b03848116911614801590610f9357506001600160a01b0382165f9081526012602052604090205460ff16155b8015610fb757506001600160a01b0383165f9081526012602052604090205460ff16155b8015610fcd5750600754600160a01b900460ff16155b15611061576007546001600160a01b038381169116146110615760095481611009846001600160a01b03165f9081526020819052604090205490565b6110139190611af5565b11156110615760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016106e7565b5f805f61107f60405180604001604052805f81526020015f81525090565b6001600160a01b0387165f9081526012602052604081205460ff161580156110bf57506001600160a01b0387165f9081526012602052604090205460ff16155b80156110d95750600b54600a546110d69190611af5565b43105b600754909150600160a01b900460ff168061110b57506001600160a01b0388165f9081526012602052604090205460ff165b8061112d57506001600160a01b0387165f9081526012602052604090205460ff165b1561113a575f92506111d6565b6007546001600160a01b038881169116148015611155575080155b1561118e5760105460115461116a9190611af5565b604080518082019091526010548152601154602082015290955085945091506111d6565b806111c757600e54600f546111a39190611af5565b60408051808201909152600e548152600f54602082015290955085945091506111d6565b80156111d657600c5494508493505b60646111e28588611bf6565b6111ec9190611c0d565b600754909350600160a81b900460ff16801561121657506007546001600160a01b03898116911614155b156112255761122585836112c6565b6112398888611234868a611ae2565b6113fb565b821561126b57841561126b575f60646112528789611bf6565b61125c9190611c0d565b90506112698930836113fb565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16610a5a576007805460ff60a01b1916600160a01b17905581156113ea57305f9081526020819052604090205460085481106113e8576001600854111561131857506008545b5f611324846002611bf6565b90505f818460200151846113389190611bf6565b6113429190611c0d565b90505f61134f8285611ae2565b90504761135b826115d1565b5f6113668247611ae2565b90505f8760200151866113799190611ae2565b6113839083611c0d565b90505f8860200151826113969190611bf6565b905080156113a8576113a88682611721565b88515f906113b7846002611bf6565b6113c19190611bf6565b905080156113df57600d546113df906001600160a01b0316826117d0565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b03831661145f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106e7565b6001600160a01b0382166114c15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106e7565b6001600160a01b0383165f90815260208190526040902054818110156115385760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106e7565b6115428282611ae2565b6001600160a01b038086165f908152602081905260408082209390935590851681529081208054849290611577908490611af5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115c391815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061160457611604611c2c565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561165b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167f9190611c40565b8160018151811061169257611692611c2c565b6001600160a01b0392831660209182029290920101526006546116b89130911684610c7b565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906116f09085905f90869030904290600401611c5b565b5f604051808303815f87803b158015611707575f80fd5b505af1158015611719573d5f803e3d5ffd5b505050505050565b6006546117399030906001600160a01b031684610c7b565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156117a4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117c99190611ccc565b5050505050565b804710156118205760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106e7565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611869576040519150601f19603f3d011682016040523d82523d5f602084013e61186e565b606091505b50509050806118e55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106e7565b505050565b5f602080835283518060208501525f5b81811015611916578581018301518582016040015282016118fa565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c30575f80fd5b5f806040838503121561195b575f80fd5b823561196681611936565b946020939093013593505050565b5f60208284031215611984575f80fd5b81358015158114611993575f80fd5b9392505050565b5f805f606084860312156119ac575f80fd5b83356119b781611936565b925060208401356119c781611936565b929592945050506040919091013590565b5f602082840312156119e8575f80fd5b5035919050565b5f602082840312156119ff575f80fd5b813561199381611936565b5f8060408385031215611a1b575f80fd5b50508035926020909101359150565b5f8060408385031215611a3b575f80fd5b8235611a4681611936565b91506020830135611a5681611936565b809150509250929050565b600181811c90821680611a7557607f821691505b602082108103611a9357634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106b7576106b7611ace565b808201808211156106b7576106b7611ace565b600181815b80851115611b4257815f1904821115611b2857611b28611ace565b80851615611b3557918102915b93841c9390800290611b0d565b509250929050565b5f82611b58575060016106b7565b81611b6457505f6106b7565b8160018114611b7a5760028114611b8457611ba0565b60019150506106b7565b60ff841115611b9557611b95611ace565b50506001821b6106b7565b5060208310610133831016604e8410600b8410161715611bc3575081810a6106b7565b611bcd8383611b08565b805f1904821115611be057611be0611ace565b029392505050565b5f61199360ff841683611b4a565b80820281158282048414176106b7576106b7611ace565b5f82611c2757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611c50575f80fd5b815161199381611936565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611cab5784516001600160a01b031683529383019391830191600101611c86565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611cde575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e71ff34b29ca05b21dc3a13b72162693fe2da9a223a41cd8a57194d90bd71c2964736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101de575f3560e01c806385141a77116100fd578063aacebbe311610092578063f2fde38b11610062578063f2fde38b146105a0578063f52be97c146105bf578063f66895a3146105de578063f887ea40146105f8575f80fd5b8063aacebbe3146104f0578063c5d32bb21461050f578063d695609b1461053d578063dd62ed3e1461055c575f80fd5b80639e252f00116100cd5780639e252f0014610474578063a457c2d714610493578063a8aa1b31146104b2578063a9059cbb146104d1575f80fd5b806385141a77146104025780638a8c523c1461042f5780638da5cb5b1461044357806395d89b4114610460575f80fd5b80634324deae1161017357806370a082311161014357806370a082311461036c578063715018a6146103a0578063728f8eea146103b4578063832c2bd2146103e3575f80fd5b80634324deae146102f95780634ada218b146103185780635dbdb7e31461033857806366a88d9614610357575f80fd5b806323b872dd116101ae57806323b872dd14610281578063313ce567146102a057806339509351146102bb57806342b6fa11146102da575f80fd5b806306fdde03146101e9578063095ea7b3146102135780631340538f1461024257806318160ddd14610263575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b506101fd610617565b60405161020a91906118ea565b60405180910390f35b34801561021e575f80fd5b5061023261022d36600461194a565b6106a7565b604051901515815260200161020a565b34801561024d575f80fd5b5061026161025c366004611974565b6106bd565b005b34801561026e575f80fd5b506002545b60405190815260200161020a565b34801561028c575f80fd5b5061023261029b36600461199a565b61070e565b3480156102ab575f80fd5b506040516012815260200161020a565b3480156102c6575f80fd5b506102326102d536600461194a565b6107bd565b3480156102e5575f80fd5b506102616102f43660046119d8565b6107f3565b348015610304575f80fd5b506102616103133660046119d8565b610839565b348015610323575f80fd5b5060075461023290600160b01b900460ff1681565b348015610343575f80fd5b506102616103523660046119ef565b61087f565b348015610362575f80fd5b5061027360095481565b348015610377575f80fd5b506102736103863660046119ef565b6001600160a01b03165f9081526020819052604090205490565b3480156103ab575f80fd5b506102616108cc565b3480156103bf575f80fd5b50600e54600f546103ce919082565b6040805192835260208301919091520161020a565b3480156103ee575f80fd5b506102616103fd3660046119ef565b610901565b34801561040d575f80fd5b5061041761dead81565b6040516001600160a01b03909116815260200161020a565b34801561043a575f80fd5b5061026161094b565b34801561044e575f80fd5b506005546001600160a01b0316610417565b34801561046b575f80fd5b506101fd6109ea565b34801561047f575f80fd5b5061026161048e3660046119d8565b6109f9565b34801561049e575f80fd5b506102326104ad36600461194a565b610a5e565b3480156104bd575f80fd5b50600754610417906001600160a01b031681565b3480156104dc575f80fd5b506102326104eb36600461194a565b610af8565b3480156104fb575f80fd5b5061026161050a3660046119ef565b610b04565b34801561051a575f80fd5b506102326105293660046119ef565b60126020525f908152604090205460ff1681565b348015610548575f80fd5b50610261610557366004611a0a565b610b50565b348015610567575f80fd5b50610273610576366004611a2a565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156105ab575f80fd5b506102616105ba3660046119ef565b610b98565b3480156105ca575f80fd5b506102616105d9366004611a0a565b610c33565b3480156105e9575f80fd5b506010546011546103ce919082565b348015610603575f80fd5b50600654610417906001600160a01b031681565b60606003805461062690611a61565b80601f016020809104026020016040519081016040528092919081815260200182805461065290611a61565b801561069d5780601f106106745761010080835404028352916020019161069d565b820191905f5260205f20905b81548152906001019060200180831161068057829003601f168201915b5050505050905090565b5f6106b3338484610c7b565b5060015b92915050565b6005546001600160a01b031633146106f05760405162461bcd60e51b81526004016106e790611a99565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b5f61071a848484610d9e565b6001600160a01b0384165f9081526001602090815260408083203384529091529020548281101561079e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106e7565b6107b285336107ad8685611ae2565b610c7b565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916106b39185906107ad908690611af5565b6005546001600160a01b0316331461081d5760405162461bcd60e51b81526004016106e790611a99565b6108296012600a611be8565b6108339082611bf6565b60085550565b6005546001600160a01b031633146108635760405162461bcd60e51b81526004016106e790611a99565b61086f6012600a611be8565b6108799082611bf6565b60095550565b6005546001600160a01b031633146108a95760405162461bcd60e51b81526004016106e790611a99565b6001600160a01b03165f908152601260205260409020805460ff19166001179055565b6005546001600160a01b031633146108f65760405162461bcd60e51b81526004016106e790611a99565b6108ff5f611275565b565b6005546001600160a01b0316331461092b5760405162461bcd60e51b81526004016106e790611a99565b6001600160a01b03165f908152601260205260409020805460ff19169055565b6005546001600160a01b031633146109755760405162461bcd60e51b81526004016106e790611a99565b600754600160b01b900460ff16156109cf5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016106e7565b6007805461ffff60a81b191661010160a81b17905543600a55565b60606004805461062690611a61565b6005546001600160a01b03163314610a235760405162461bcd60e51b81526004016106e790611a99565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610a5a573d5f803e3d5ffd5b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610adf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106e7565b610aee33856107ad8685611ae2565b5060019392505050565b5f6106b3338484610d9e565b6005546001600160a01b03163314610b2e5760405162461bcd60e51b81526004016106e790611a99565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b7a5760405162461bcd60e51b81526004016106e790611a99565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610bc25760405162461bcd60e51b81526004016106e790611a99565b6001600160a01b038116610c275760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e7565b610c3081611275565b50565b6005546001600160a01b03163314610c5d5760405162461bcd60e51b81526004016106e790611a99565b60408051808201909152828152602001819052601091909155601155565b6001600160a01b038316610cdd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106e7565b6001600160a01b038216610d3e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106e7565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610dff5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106e7565b6001600160a01b0383165f9081526012602052604090205460ff16158015610e3f57506001600160a01b0382165f9081526012602052604090205460ff16155b15610e9357600754600160b01b900460ff16610e935760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016106e7565b6007546001600160a01b038481169116148015610ec857506001600160a01b0382165f9081526012602052604090205460ff16155b8015610ede5750600754600160a01b900460ff16155b15610f5d5760095481610f05846001600160a01b03165f9081526020819052604090205490565b610f0f9190611af5565b1115610f5d5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016106e7565b6007546001600160a01b03848116911614801590610f9357506001600160a01b0382165f9081526012602052604090205460ff16155b8015610fb757506001600160a01b0383165f9081526012602052604090205460ff16155b8015610fcd5750600754600160a01b900460ff16155b15611061576007546001600160a01b038381169116146110615760095481611009846001600160a01b03165f9081526020819052604090205490565b6110139190611af5565b11156110615760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016106e7565b5f805f61107f60405180604001604052805f81526020015f81525090565b6001600160a01b0387165f9081526012602052604081205460ff161580156110bf57506001600160a01b0387165f9081526012602052604090205460ff16155b80156110d95750600b54600a546110d69190611af5565b43105b600754909150600160a01b900460ff168061110b57506001600160a01b0388165f9081526012602052604090205460ff165b8061112d57506001600160a01b0387165f9081526012602052604090205460ff165b1561113a575f92506111d6565b6007546001600160a01b038881169116148015611155575080155b1561118e5760105460115461116a9190611af5565b604080518082019091526010548152601154602082015290955085945091506111d6565b806111c757600e54600f546111a39190611af5565b60408051808201909152600e548152600f54602082015290955085945091506111d6565b80156111d657600c5494508493505b60646111e28588611bf6565b6111ec9190611c0d565b600754909350600160a81b900460ff16801561121657506007546001600160a01b03898116911614155b156112255761122585836112c6565b6112398888611234868a611ae2565b6113fb565b821561126b57841561126b575f60646112528789611bf6565b61125c9190611c0d565b90506112698930836113fb565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16610a5a576007805460ff60a01b1916600160a01b17905581156113ea57305f9081526020819052604090205460085481106113e8576001600854111561131857506008545b5f611324846002611bf6565b90505f818460200151846113389190611bf6565b6113429190611c0d565b90505f61134f8285611ae2565b90504761135b826115d1565b5f6113668247611ae2565b90505f8760200151866113799190611ae2565b6113839083611c0d565b90505f8860200151826113969190611bf6565b905080156113a8576113a88682611721565b88515f906113b7846002611bf6565b6113c19190611bf6565b905080156113df57600d546113df906001600160a01b0316826117d0565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b03831661145f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106e7565b6001600160a01b0382166114c15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106e7565b6001600160a01b0383165f90815260208190526040902054818110156115385760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106e7565b6115428282611ae2565b6001600160a01b038086165f908152602081905260408082209390935590851681529081208054849290611577908490611af5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115c391815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061160457611604611c2c565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561165b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167f9190611c40565b8160018151811061169257611692611c2c565b6001600160a01b0392831660209182029290920101526006546116b89130911684610c7b565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906116f09085905f90869030904290600401611c5b565b5f604051808303815f87803b158015611707575f80fd5b505af1158015611719573d5f803e3d5ffd5b505050505050565b6006546117399030906001600160a01b031684610c7b565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156117a4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117c99190611ccc565b5050505050565b804710156118205760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106e7565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611869576040519150601f19603f3d011682016040523d82523d5f602084013e61186e565b606091505b50509050806118e55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106e7565b505050565b5f602080835283518060208501525f5b81811015611916578581018301518582016040015282016118fa565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c30575f80fd5b5f806040838503121561195b575f80fd5b823561196681611936565b946020939093013593505050565b5f60208284031215611984575f80fd5b81358015158114611993575f80fd5b9392505050565b5f805f606084860312156119ac575f80fd5b83356119b781611936565b925060208401356119c781611936565b929592945050506040919091013590565b5f602082840312156119e8575f80fd5b5035919050565b5f602082840312156119ff575f80fd5b813561199381611936565b5f8060408385031215611a1b575f80fd5b50508035926020909101359150565b5f8060408385031215611a3b575f80fd5b8235611a4681611936565b91506020830135611a5681611936565b809150509250929050565b600181811c90821680611a7557607f821691505b602082108103611a9357634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106b7576106b7611ace565b808201808211156106b7576106b7611ace565b600181815b80851115611b4257815f1904821115611b2857611b28611ace565b80851615611b3557918102915b93841c9390800290611b0d565b509250929050565b5f82611b58575060016106b7565b81611b6457505f6106b7565b8160018114611b7a5760028114611b8457611ba0565b60019150506106b7565b60ff841115611b9557611b95611ace565b50506001821b6106b7565b5060208310610133831016604e8410600b8410161715611bc3575081810a6106b7565b611bcd8383611b08565b805f1904821115611be057611be0611ace565b029392505050565b5f61199360ff841683611b4a565b80820281158282048414176106b7576106b7611ace565b5f82611c2757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611c50575f80fd5b815161199381611936565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611cab5784516001600160a01b031683529383019391830191600101611c86565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611cde575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e71ff34b29ca05b21dc3a13b72162693fe2da9a223a41cd8a57194d90bd71c2964736f6c63430008160033

Deployed Bytecode Sourcemap

9245:9643:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3176:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10884:161;;;;;;;;;;-1:-1:-1;10884:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10884:161:0;1023:187:1;17300:152:0;;;;;;;;;;-1:-1:-1;17300:152:0;;;;;:::i;:::-;;:::i;:::-;;3515:108;;;;;;;;;;-1:-1:-1;3603:12:0;;3515:108;;;1639:25:1;;;1627:2;1612:18;3515:108:0;1493:177:1;11053:448:0;;;;;;;;;;-1:-1:-1;11053:448:0;;;;;:::i;:::-;;:::i;3408:93::-;;;;;;;;;;-1:-1:-1;3408:93:0;;3491:2;2278:36:1;;2266:2;2251:18;3408:93:0;2136:184:1;11509:248:0;;;;;;;;;;-1:-1:-1;11509:248:0;;;;;:::i;:::-;;:::i;17460:177::-;;;;;;;;;;-1:-1:-1;17460:177:0;;;;;:::i;:::-;;:::i;18577:131::-;;;;;;;;;;-1:-1:-1;18577:131:0;;;;;:::i;:::-;;:::i;9481:34::-;;;;;;;;;;-1:-1:-1;9481:34:0;;;;-1:-1:-1;;;9481:34:0;;;;;;18347:104;;;;;;;;;;-1:-1:-1;18347:104:0;;;;;:::i;:::-;;:::i;9587:46::-;;;;;;;;;;;;;;;;3637:127;;;;;;;;;;-1:-1:-1;3637:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3738:18:0;3711:7;3738:18;;;;;;;;;;;;3637:127;7908:94;;;;;;;;;;;;;:::i;10007:33::-;;;;;;;;;;-1:-1:-1;10007:33:0;;;;;;;;;;;;;2936:25:1;;;2992:2;2977:18;;2970:34;;;;2909:18;10007:33:0;2762:248:1;18459:108:0;;;;;;;;;;-1:-1:-1;18459:108:0;;;;;:::i;:::-;;:::i;9834:79::-;;;;;;;;;;;;9871:42;9834:79;;;;;-1:-1:-1;;;;;3179:32:1;;;3161:51;;3149:2;3134:18;9834:79:0;3015:203:1;17990:224:0;;;;;;;;;;;;;:::i;7685:87::-;;;;;;;;;;-1:-1:-1;7758:6:0;;-1:-1:-1;;;;;7758:6:0;7685:87;;3290:104;;;;;;;;;;;;;:::i;18716:112::-;;;;;;;;;;-1:-1:-1;18716:112:0;;;;;:::i;:::-;;:::i;11765:410::-;;;;;;;;;;-1:-1:-1;11765:410:0;;;;;:::i;:::-;;:::i;9363:19::-;;;;;;;;;;-1:-1:-1;9363:19:0;;;;-1:-1:-1;;;;;9363:19:0;;;12183:165;;;;;;;;;;-1:-1:-1;12183:165:0;;;;;:::i;:::-;;:::i;18222:115::-;;;;;;;;;;-1:-1:-1;18222:115:0;;;;;:::i;:::-;;:::i;10093:41::-;;;;;;;;;;-1:-1:-1;10093:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17645:164;;;;;;;;;;-1:-1:-1;17645:164:0;;;;;:::i;:::-;;:::i;4008:201::-;;;;;;;;;;-1:-1:-1;4008:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4174:18:0;;;4142:7;4174:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4008:201;8010:192;;;;;;;;;;-1:-1:-1;8010:192:0;;;;;:::i;:::-;;:::i;17817:166::-;;;;;;;;;;-1:-1:-1;17817:166:0;;;;;:::i;:::-;;:::i;10047:37::-;;;;;;;;;;-1:-1:-1;10047:37:0;;;;;;;;;9335:21;;;;;;;;;;-1:-1:-1;9335:21:0;;;;-1:-1:-1;;;;;9335:21:0;;;3176:100;3230:13;3263:5;3256:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3176:100;:::o;10884:161::-;10959:4;10976:39;1339:10;10999:7;11008:6;10976:8;:39::i;:::-;-1:-1:-1;11033:4:0;10884:161;;;;;:::o;17300:152::-;7758:6;;-1:-1:-1;;;;;7758:6:0;1339:10;7820:23;7812:68;;;;-1:-1:-1;;;7812:68:0;;;;;;;:::i;:::-;;;;;;;;;17418:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17418:26:0::1;-1:-1:-1::0;;;;17418:26:0;;::::1;::::0;;;::::1;::::0;;17300:152::o;11053:448::-;11185:4;11202:36;11212:6;11220:9;11231:6;11202:9;:36::i;:::-;-1:-1:-1;;;;;11278:19:0;;11251:24;11278:19;;;:11;:19;;;;;;;;1339:10;11278:33;;;;;;;;11330:26;;;;11322:79;;;;-1:-1:-1;;;11322:79:0;;5040:2:1;11322:79:0;;;5022:21:1;5079:2;5059:18;;;5052:30;5118:34;5098:18;;;5091:62;-1:-1:-1;;;5169:18:1;;;5162:38;5217:19;;11322:79:0;4838:404:1;11322:79:0;11412:57;11421:6;1339:10;11443:25;11462:6;11443:16;:25;:::i;:::-;11412:8;:57::i;:::-;-1:-1:-1;11489:4:0;;11053:448;-1:-1:-1;;;;11053:448:0:o;11509:248::-;1339:10;11625:4;11679:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11679:34:0;;;;;;;;;;11625:4;;11647:80;;11670:7;;11679:47;;11716:10;;11679:47;:::i;17460:177::-;7758:6;;-1:-1:-1;;;;;7758:6:0;1339:10;7820:23;7812:68;;;;-1:-1:-1;;;7812:68:0;;;;;;;:::i;:::-;17615:14:::1;3491:2:::0;17615::::1;:14;:::i;:::-;17602:27;::::0;:10;:27:::1;:::i;:::-;17576:23;:53:::0;-1:-1:-1;17460:177:0:o;18577:131::-;7758:6;;-1:-1:-1;;;;;7758:6:0;1339:10;7820:23;7812:68;;;;-1:-1:-1;;;7812:68:0;;;;;;;:::i;:::-;18685:14:::1;3491:2:::0;18685::::1;:14;:::i;:::-;18673:26;::::0;:9;:26:::1;:::i;:::-;18656:14;:43:::0;-1:-1:-1;18577:131:0:o;18347:104::-;7758:6;;-1:-1:-1;;;;;7758:6:0;1339:10;7820:23;7812:68;;;;-1:-1:-1;;;7812:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18417:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;18417:26:0::1;18439:4;18417:26;::::0;;18347:104::o;7908:94::-;7758:6;;-1:-1:-1;;;;;7758:6:0;1339:10;7820:23;7812:68;;;;-1:-1:-1;;;7812:68:0;;;;;;;:::i;:::-;7973:21:::1;7991:1;7973:9;:21::i;:::-;7908:94::o:0;18459:108::-;7758:6;;-1:-1:-1;;;;;7758:6:0;1339:10;7820:23;7812:68;;;;-1:-1:-1;;;7812:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18532:19:0::1;18554:5;18532:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;18532:27:0::1;::::0;;18459:108::o;17990:224::-;7758:6;;-1:-1:-1;;;;;7758:6:0;1339:10;7820:23;7812:68;;;;-1:-1:-1;;;7812:68:0;;;;;;;:::i;:::-;18054:14:::1;::::0;-1:-1:-1;;;18054:14:0;::::1;;;18053:15;18045:54;;;::::0;-1:-1:-1;;;18045:54:0;;7394:2:1;18045:54:0::1;::::0;::::1;7376:21:1::0;7433:2;7413:18;;;7406:30;7472:28;7452:18;;;7445:56;7518:18;;18045:54:0::1;7192:350:1::0;18045:54:0::1;18110:14;:21:::0;;-1:-1:-1;;;;18142:25:0;-1:-1:-1;;;18142:25:0;;;18194:12:::1;18178:13;:28:::0;17990:224::o;3290:104::-;3346:13;3379:7;3372:14;;;;;:::i;18716:112::-;7758:6;;-1:-1:-1;;;;;7758:6:0;1339:10;7820:23;7812:68;;;;-1:-1:-1;;;7812:68:0;;;;;;;:::i;:::-;7758:6;;18784:36:::1;::::0;-1:-1:-1;;;;;7758:6:0;;;;18784:36;::::1;;;::::0;18810:9;;18784:36:::1;::::0;;;18810:9;7758:6;18784:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18716:112:::0;:::o;11765:410::-;1339:10;11886:4;11935:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11935:34:0;;;;;;;;;;11988:35;;;;11980:85;;;;-1:-1:-1;;;11980:85:0;;7749:2:1;11980:85:0;;;7731:21:1;7788:2;7768:18;;;7761:30;7827:34;7807:18;;;7800:62;-1:-1:-1;;;7878:18:1;;;7871:35;7923:19;;11980:85:0;7547:401:1;11980:85:0;12076:67;1339:10;12099:7;12108:34;12127:15;12108:16;:34;:::i;12076:67::-;-1:-1:-1;12163:4:0;;11765:410;-1:-1:-1;;;11765:410:0:o;12183:165::-;12261:4;12278:40;12288:10;12300:9;12311:6;12278:9;:40::i;18222:115::-;7758:6;;-1:-1:-1;;;;;7758:6:0;1339:10;7820:23;7812:68;;;;-1:-1:-1;;;7812:68:0;;;;;;;:::i;:::-;18302:15:::1;:27:::0;;-1:-1:-1;;;;;;18302:27:0::1;-1:-1:-1::0;;;;;18302:27:0;;;::::1;::::0;;;::::1;::::0;;18222:115::o;17645:164::-;7758:6;;-1:-1:-1;;;;;7758:6:0;1339:10;7820:23;7812:68;;;;-1:-1:-1;;;7812:68:0;;;;;;;:::i;:::-;17772:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;17764:5:::1;:37:::0;;;;;;17645:164::o;8010:192::-;7758:6;;-1:-1:-1;;;;;7758:6:0;1339:10;7820:23;7812:68;;;;-1:-1:-1;;;7812:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8099:22:0;::::1;8091:73;;;::::0;-1:-1:-1;;;8091:73:0;;8155:2:1;8091:73:0::1;::::0;::::1;8137:21:1::0;8194:2;8174:18;;;8167:30;8233:34;8213:18;;;8206:62;-1:-1:-1;;;8284:18:1;;;8277:36;8330:19;;8091:73:0::1;7953:402:1::0;8091:73:0::1;8175:19;8185:8;8175:9;:19::i;:::-;8010:192:::0;:::o;17817:166::-;7758:6;;-1:-1:-1;;;;;7758:6:0;1339:10;7820:23;7812:68;;;;-1:-1:-1;;;7812:68:0;;;;;;;:::i;:::-;17946:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;17934:9:::1;:41:::0;;;;;;17817:166::o;6579:380::-;-1:-1:-1;;;;;6715:19:0;;6707:68;;;;-1:-1:-1;;;6707:68:0;;8562:2:1;6707:68:0;;;8544:21:1;8601:2;8581:18;;;8574:30;8640:34;8620:18;;;8613:62;-1:-1:-1;;;8691:18:1;;;8684:34;8735:19;;6707:68:0;8360:400:1;6707:68:0;-1:-1:-1;;;;;6794:21:0;;6786:68;;;;-1:-1:-1;;;6786:68:0;;8967:2:1;6786:68:0;;;8949:21:1;9006:2;8986:18;;;8979:30;9045:34;9025:18;;;9018:62;-1:-1:-1;;;9096:18:1;;;9089:32;9138:19;;6786:68:0;8765:398:1;6786:68:0;-1:-1:-1;;;;;6867:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6919:32;;1639:25:1;;;6919:32:0;;1612:18:1;6919:32:0;;;;;;;6579:380;;;:::o;12356:2464::-;12506:1;12497:6;:10;12489:64;;;;-1:-1:-1;;;12489:64:0;;9370:2:1;12489:64:0;;;9352:21:1;9409:2;9389:18;;;9382:30;9448:34;9428:18;;;9421:62;-1:-1:-1;;;9499:18:1;;;9492:39;9548:19;;12489:64:0;9168:405:1;12489:64:0;-1:-1:-1;;;;;12571:17:0;;;;;;:9;:17;;;;;;;;12570:18;:43;;;;-1:-1:-1;;;;;;12593:20:0;;;;;;:9;:20;;;;;;;;12592:21;12570:43;12566:122;;;12638:14;;-1:-1:-1;;;12638:14:0;;;;12630:46;;;;-1:-1:-1;;;12630:46:0;;9780:2:1;12630:46:0;;;9762:21:1;9819:2;9799:18;;;9792:30;-1:-1:-1;;;9838:18:1;;;9831:49;9897:18;;12630:46:0;9578:343:1;12630:46:0;12714:4;;-1:-1:-1;;;;;12704:14:0;;;12714:4;;12704:14;:39;;;;-1:-1:-1;;;;;;12723:20:0;;;;;;:9;:20;;;;;;;;12722:21;12704:39;:59;;;;-1:-1:-1;12748:15:0;;-1:-1:-1;;;12748:15:0;;;;12747:16;12704:59;12700:215;;;12821:14;;12811:6;12788:20;12798:9;-1:-1:-1;;;;;3738:18:0;3711:7;3738:18;;;;;;;;;;;;3637:127;12788:20;:29;;;;:::i;:::-;:47;;12780:123;;;;-1:-1:-1;;;12780:123:0;;10128:2:1;12780:123:0;;;10110:21:1;;;10147:18;;;10140:30;10206:34;10186:18;;;10179:62;10258:18;;12780:123:0;9926:356:1;12780:123:0;12941:4;;-1:-1:-1;;;;;12931:14:0;;;12941:4;;12931:14;;;;:39;;-1:-1:-1;;;;;;12950:20:0;;;;;;:9;:20;;;;;;;;12949:21;12931:39;:61;;;;-1:-1:-1;;;;;;12975:17:0;;;;;;:9;:17;;;;;;;;12974:18;12931:61;:81;;;;-1:-1:-1;12997:15:0;;-1:-1:-1;;;12997:15:0;;;;12996:16;12931:81;12927:315;;;13059:4;;-1:-1:-1;;;;;13046:17:0;;;13059:4;;13046:17;13042:189;;13125:14;;13115:6;13092:20;13102:9;-1:-1:-1;;;;;3738:18:0;3711:7;3738:18;;;;;;;;;;;;3637:127;13092:20;:29;;;;:::i;:::-;:47;;13084:131;;;;-1:-1:-1;;;13084:131:0;;10128:2:1;13084:131:0;;;10110:21:1;;;10147:18;;;10140:30;10206:34;10186:18;;;10179:62;10258:18;;13084:131:0;9926:356:1;13084:131:0;13254:15;13280:14;13305:11;13327:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;13327:25:0;-1:-1:-1;;;;;13386:17:0;;13365;13386;;;:9;:17;;;;;;;;13385:18;:56;;;;-1:-1:-1;;;;;;13421:20:0;;;;;;:9;:20;;;;;;;;13420:21;13385:56;:112;;;;;13489:8;;13473:13;;:24;;;;:::i;:::-;13458:12;:39;13385:112;13585:15;;13365:132;;-1:-1:-1;;;;13585:15:0;;;;;:36;;-1:-1:-1;;;;;;13604:17:0;;;;;;:9;:17;;;;;;;;13585:36;:60;;;-1:-1:-1;;;;;;13625:20:0;;;;;;:9;:20;;;;;;;;13585:60;13581:655;;;13666:1;13660:7;;13581:655;;;13731:4;;-1:-1:-1;;;;;13718:17:0;;;13731:4;;13718:17;:34;;;;;13740:12;13739:13;13718:34;13714:522;;;13835:9;:19;13796;;:58;;13835:19;13796:58;:::i;:::-;13901:24;;;;;;;;;13916:9;13901:24;;;;;;;;;13769:85;;-1:-1:-1;13769:85:0;;-1:-1:-1;13901:24:0;-1:-1:-1;13714:522:0;;;13948:12;13943:293;;14039:5;:15;14004;;:50;;14039:15;14004:50;:::i;:::-;14101:20;;;;;;;;;14116:5;14101:20;;;;;;;;;13977:77;;-1:-1:-1;13977:77:0;;-1:-1:-1;14101:20:0;-1:-1:-1;13943:293:0;;;14143:12;14139:97;;;14182:9;;;-1:-1:-1;14182:9:0;;-1:-1:-1;14139:97:0;14274:3;14255:15;14264:6;14255;:15;:::i;:::-;14254:23;;;;:::i;:::-;14391:18;;14248:29;;-1:-1:-1;;;;14391:18:0;;;;:36;;;;-1:-1:-1;14423:4:0;;-1:-1:-1;;;;;14413:14:0;;;14423:4;;14413:14;;14391:36;14387:76;;;14429:34;14441:7;14450:12;14429:11;:34::i;:::-;14505:48;14521:6;14529:9;14540:12;14549:3;14540:6;:12;:::i;:::-;14505:15;:48::i;:::-;14568:7;;14564:249;;14640:11;;14636:164;;14672:17;14713:3;14693:16;14702:7;14693:6;:16;:::i;:::-;14692:24;;;;:::i;:::-;14672:44;;14735:49;14751:6;14767:4;14774:9;14735:15;:49::i;:::-;14653:147;14636:164;12478:2342;;;;;12356:2464;;;:::o;8210:173::-;8285:6;;;-1:-1:-1;;;;;8302:17:0;;;-1:-1:-1;;;;;;8302:17:0;;;;;;;8335:40;;8285:6;;;8302:17;8285:6;;8335:40;;8266:16;;8335:40;8255:128;8210:173;:::o;14828:1422::-;10182:15;;-1:-1:-1;;;10182:15:0;;;;10177:125;;10214:15;:22;;-1:-1:-1;;;;10214:22:0;-1:-1:-1;;;10214:22:0;;;14914:49;;14945:7:::1;14914:49;15020:4;14976:23;3738:18:::0;;;;;;;;;;;15060:23:::1;::::0;15041:42;::::1;15037:1206;;15130:1;15104:23;;:27;15100:109;;;-1:-1:-1::0;15170:23:0::1;::::0;15100:109:::1;15280:19;15302:11;:7:::0;15312:1:::1;15302:11;:::i;:::-;15280:33;;15328:32;15422:11;15382:9;:19;;;15364:15;:37;;;;:::i;:::-;15363:70;;;;:::i;:::-;15328:105:::0;-1:-1:-1;15448:14:0::1;15465:42;15328:105:::0;15465:15;:42:::1;:::i;:::-;15448:59:::0;-1:-1:-1;15549:21:0::1;15587:24;15448:59:::0;15587:16:::1;:24::i;:::-;15628:20;15651:38;15675:14:::0;15651:21:::1;:38;:::i;:::-;15628:61;;15704:19;15756:9;:19;;;15742:11;:33;;;;:::i;:::-;15726:50;::::0;:12;:50:::1;:::i;:::-;15704:72;;15791:29;15837:9;:19;;;15823:11;:33;;;;:::i;:::-;15791:65:::0;-1:-1:-1;15877:25:0;;15873:161:::1;;15957:61;15970:24;15996:21;15957:12;:61::i;:::-;16091:19:::0;;16050:20:::1;::::0;16073:15:::1;:11:::0;16087:1:::1;16073:15;:::i;:::-;:37;;;;:::i;:::-;16050:60:::0;-1:-1:-1;16129:16:0;;16125:105:::1;;16174:15;::::0;16166:48:::1;::::0;-1:-1:-1;;;;;16174:15:0::1;16201:12:::0;16166:34:::1;:48::i;:::-;15085:1158;;;;;;;;15037:1206;14908:1342;10251:1;10267:15:::0;:23;;-1:-1:-1;;;;10267:23:0;;;14828:1422;;:::o;5560:638::-;-1:-1:-1;;;;;5700:20:0;;5692:70;;;;-1:-1:-1;;;5692:70:0;;10711:2:1;5692:70:0;;;10693:21:1;10750:2;10730:18;;;10723:30;10789:34;10769:18;;;10762:62;-1:-1:-1;;;10840:18:1;;;10833:35;10885:19;;5692:70:0;10509:401:1;5692:70:0;-1:-1:-1;;;;;5781:23:0;;5773:71;;;;-1:-1:-1;;;5773:71:0;;11117:2:1;5773:71:0;;;11099:21:1;11156:2;11136:18;;;11129:30;11195:34;11175:18;;;11168:62;-1:-1:-1;;;11246:18:1;;;11239:33;11289:19;;5773:71:0;10915:399:1;5773:71:0;-1:-1:-1;;;;;5941:17:0;;5917:21;5941:17;;;;;;;;;;;5977:23;;;;5969:74;;;;-1:-1:-1;;;5969:74:0;;11521:2:1;5969:74:0;;;11503:21:1;11560:2;11540:18;;;11533:30;11599:34;11579:18;;;11572:62;-1:-1:-1;;;11650:18:1;;;11643:36;11696:19;;5969:74:0;11319:402:1;5969:74:0;6074:22;6090:6;6074:13;:22;:::i;:::-;-1:-1:-1;;;;;6054:17:0;;;:9;:17;;;;;;;;;;;:42;;;;6107:20;;;;;;;;:30;;6131:6;;6054:9;6107:30;;6131:6;;6107:30;:::i;:::-;;;;;;;;6172:9;-1:-1:-1;;;;;6155:35:0;6164:6;-1:-1:-1;;;;;6155:35:0;;6183:6;6155:35;;;;1639:25:1;;1627:2;1612:18;;1493:177;6155:35:0;;;;;;;;5681:517;5560:638;;;:::o;16258:526::-;16400:16;;;16414:1;16400:16;;;;;;;;16376:21;;16400:16;;;;;;;;;;-1:-1:-1;16400:16:0;16376:40;;16445:4;16427;16432:1;16427:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16427:23:0;;;:7;;;;;;;;;;:23;;;;16471:6;;:13;;;-1:-1:-1;;;16471:13:0;;;;:6;;;;;:11;;:13;;;;;16427:7;;16471:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16461:4;16466:1;16461:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16461:23:0;;;:7;;;;;;;;;:23;16529:6;;16497:53;;16514:4;;16529:6;16538:11;16497:8;:53::i;:::-;16589:6;;:187;;-1:-1:-1;;;16589:187:0;;-1:-1:-1;;;;;16589:6:0;;;;:57;;:187;;16661:11;;16589:6;;16703:4;;16730;;16750:15;;16589:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16313:471;16258:526;:::o;16792:500::-;16972:6;;16940:53;;16957:4;;-1:-1:-1;;;;;16972:6:0;16981:11;16940:8;:53::i;:::-;17036:6;;:248;;-1:-1:-1;;;17036:248:0;;17101:4;17036:248;;;13572:34:1;13622:18;;;13615:34;;;17036:6:0;13665:18:1;;;13658:34;;;13708:18;;;13701:34;9871:42:0;13751:19:1;;;13744:44;17258:15:0;13804:19:1;;;13797:35;-1:-1:-1;;;;;17036:6:0;;;;:22;;17067:9;;13506:19:1;;17036:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16792:500;;:::o;7128:319::-;7243:6;7218:21;:31;;7210:73;;;;-1:-1:-1;;;7210:73:0;;14356:2:1;7210:73:0;;;14338:21:1;14395:2;14375:18;;;14368:30;14434:31;14414:18;;;14407:59;14483:18;;7210:73:0;14154:353:1;7210:73:0;7297:12;7315:9;-1:-1:-1;;;;;7315:14:0;7338:6;7315:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7296:54;;;7369:7;7361:78;;;;-1:-1:-1;;;7361:78:0;;14924:2:1;7361:78:0;;;14906:21:1;14963:2;14943:18;;;14936:30;15002:34;14982:18;;;14975:62;15073:28;15053:18;;;15046:56;15119:19;;7361:78:0;14722:422:1;7361:78:0;7199:248;7128:319;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:273::-;1271:6;1324:2;1312:9;1303:7;1299:23;1295:32;1292:52;;;1340:1;1337;1330:12;1292:52;1379:9;1366:23;1432:5;1425:13;1418:21;1411:5;1408:32;1398:60;;1454:1;1451;1444:12;1398:60;1477:5;1215:273;-1:-1:-1;;;1215:273:1:o;1675:456::-;1752:6;1760;1768;1821:2;1809:9;1800:7;1796:23;1792:32;1789:52;;;1837:1;1834;1827:12;1789:52;1876:9;1863:23;1895:31;1920:5;1895:31;:::i;:::-;1945:5;-1:-1:-1;2002:2:1;1987:18;;1974:32;2015:33;1974:32;2015:33;:::i;:::-;1675:456;;2067:7;;-1:-1:-1;;;2121:2:1;2106:18;;;;2093:32;;1675:456::o;2325:180::-;2384:6;2437:2;2425:9;2416:7;2412:23;2408:32;2405:52;;;2453:1;2450;2443:12;2405:52;-1:-1:-1;2476:23:1;;2325:180;-1:-1:-1;2325:180:1:o;2510:247::-;2569:6;2622:2;2610:9;2601:7;2597:23;2593:32;2590:52;;;2638:1;2635;2628:12;2590:52;2677:9;2664:23;2696:31;2721:5;2696:31;:::i;3223:248::-;3291:6;3299;3352:2;3340:9;3331:7;3327:23;3323:32;3320:52;;;3368:1;3365;3358:12;3320:52;-1:-1:-1;;3391:23:1;;;3461:2;3446:18;;;3433:32;;-1:-1:-1;3223:248:1:o;3476:388::-;3544:6;3552;3605:2;3593:9;3584:7;3580:23;3576:32;3573:52;;;3621:1;3618;3611:12;3573:52;3660:9;3647:23;3679:31;3704:5;3679:31;:::i;:::-;3729:5;-1:-1:-1;3786:2:1;3771:18;;3758:32;3799:33;3758:32;3799:33;:::i;:::-;3851:7;3841:17;;;3476:388;;;;;:::o;4092:380::-;4171:1;4167:12;;;;4214;;;4235:61;;4289:4;4281:6;4277:17;4267:27;;4235:61;4342:2;4334:6;4331:14;4311:18;4308:38;4305:161;;4388:10;4383:3;4379:20;4376:1;4369:31;4423:4;4420:1;4413:15;4451:4;4448:1;4441:15;4305:161;;4092:380;;;:::o;4477:356::-;4679:2;4661:21;;;4698:18;;;4691:30;4757:34;4752:2;4737:18;;4730:62;4824:2;4809:18;;4477:356::o;5247:127::-;5308:10;5303:3;5299:20;5296:1;5289:31;5339:4;5336:1;5329:15;5363:4;5360:1;5353:15;5379:128;5446:9;;;5467:11;;;5464:37;;;5481:18;;:::i;5512:125::-;5577:9;;;5598:10;;;5595:36;;;5611:18;;:::i;5642:416::-;5731:1;5768:5;5731:1;5782:270;5803:7;5793:8;5790:21;5782:270;;;5862:4;5858:1;5854:6;5850:17;5844:4;5841:27;5838:53;;;5871:18;;:::i;:::-;5921:7;5911:8;5907:22;5904:55;;;5941:16;;;;5904:55;6020:22;;;;5980:15;;;;5782:270;;;5786:3;5642:416;;;;;:::o;6063:806::-;6112:5;6142:8;6132:80;;-1:-1:-1;6183:1:1;6197:5;;6132:80;6231:4;6221:76;;-1:-1:-1;6268:1:1;6282:5;;6221:76;6313:4;6331:1;6326:59;;;;6399:1;6394:130;;;;6306:218;;6326:59;6356:1;6347:10;;6370:5;;;6394:130;6431:3;6421:8;6418:17;6415:43;;;6438:18;;:::i;:::-;-1:-1:-1;;6494:1:1;6480:16;;6509:5;;6306:218;;6608:2;6598:8;6595:16;6589:3;6583:4;6580:13;6576:36;6570:2;6560:8;6557:16;6552:2;6546:4;6543:12;6539:35;6536:77;6533:159;;;-1:-1:-1;6645:19:1;;;6677:5;;6533:159;6724:34;6749:8;6743:4;6724:34;:::i;:::-;6794:6;6790:1;6786:6;6782:19;6773:7;6770:32;6767:58;;;6805:18;;:::i;:::-;6843:20;;6063:806;-1:-1:-1;;;6063:806:1:o;6874:140::-;6932:5;6961:47;7002:4;6992:8;6988:19;6982:4;6961:47;:::i;7019:168::-;7092:9;;;7123;;7140:15;;;7134:22;;7120:37;7110:71;;7161:18;;:::i;10287:217::-;10327:1;10353;10343:132;;10397:10;10392:3;10388:20;10385:1;10378:31;10432:4;10429:1;10422:15;10460:4;10457:1;10450:15;10343:132;-1:-1:-1;10489:9:1;;10287:217::o;11858:127::-;11919:10;11914:3;11910:20;11907:1;11900:31;11950:4;11947:1;11940:15;11974:4;11971:1;11964:15;11990:251;12060:6;12113:2;12101:9;12092:7;12088:23;12084:32;12081:52;;;12129:1;12126;12119:12;12081:52;12161:9;12155:16;12180:31;12205:5;12180:31;:::i;12246:980::-;12508:4;12556:3;12545:9;12541:19;12587:6;12576:9;12569:25;12613:2;12651:6;12646:2;12635:9;12631:18;12624:34;12694:3;12689:2;12678:9;12674:18;12667:31;12718:6;12753;12747:13;12784:6;12776;12769:22;12822:3;12811:9;12807:19;12800:26;;12861:2;12853:6;12849:15;12835:29;;12882:1;12892:195;12906:6;12903:1;12900:13;12892:195;;;12971:13;;-1:-1:-1;;;;;12967:39:1;12955:52;;13062:15;;;;13027:12;;;;13003:1;12921:9;12892:195;;;-1:-1:-1;;;;;;;13143:32:1;;;;13138:2;13123:18;;13116:60;-1:-1:-1;;;13207:3:1;13192:19;13185:35;13104:3;12246:980;-1:-1:-1;;;12246:980:1:o;13843:306::-;13931:6;13939;13947;14000:2;13988:9;13979:7;13975:23;13971:32;13968:52;;;14016:1;14013;14006:12;13968:52;14045:9;14039:16;14029:26;;14095:2;14084:9;14080:18;14074:25;14064:35;;14139:2;14128:9;14124:18;14118:25;14108:35;;13843:306;;;;;:::o

Swarm Source

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