ETH Price: $2,295.64 (-2.64%)

Token

GrokGEN (GROKG)
 

Overview

Max Total Supply

1,000,000,000 GROKG

Holders

86

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.094455704362392955 GROKG

Value
$0.00
0x1ccd4611931ec4e8670ec6d139cec96832fc93ed
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:
GrokGEN

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

// Unleashing your potential pixel by pixel
// Driven by xAI Grok LLM

// Ticker: $GROKG
// Name: GrokGEN

// W: grokgen.co
// X: x.com/grokgen
// T: t.me/grokgen

pragma solidity 0.8.19;

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, " multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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 IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
    external
    returns (address pair);
}

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract GrokGEN is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _balance;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedWallet;
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = "GrokGEN";
    string private constant _symbol = "GROKG";

    uint256 private constant onePercent = _totalSupply / 100;

    uint256 public buyFee = 0;
    uint256 public sellFee = 0;
    uint256 public maxAmountPerTx = 0;
    uint256 public maxAmountPerWallet = 0;

    uint256 private maxSwapTokenAmount = 0;

    IUniswapV2Router02 private constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2Pair;

    address[] public holders;

    address payable private taxWallet;

    bool private swapEnabled = false;
    bool private inSwapAndLiquify = false;

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

    constructor() {
        taxWallet = payable(0xdcD1AD91d5067407851B4722F28ec083fA4cd5b1);

        _isExcludedWallet[_msgSender()] = true;
        _isExcludedWallet[address(this)] = true;
        _isExcludedWallet[taxWallet] = true;

        _allowances[address(this)][address(uniswapV2Router)] = type(uint).max;
        _allowances[_msgSender()][address(uniswapV2Router)] = type(uint).max;

        _balance[_msgSender()] = onePercent * 6;
        _balance[address(this)] = onePercent * 94;

        emit Transfer(address(0), _msgSender(), onePercent * 6);
        emit Transfer(address(0), address(this), onePercent * 94);
    }

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

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

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

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

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

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

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

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0) && spender != address(0), "approve zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

        uint256 _tax = 0;
        if (!_isExcludedWallet[from] && !_isExcludedWallet[to]) {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                require(balanceOf(to) + amount <= maxAmountPerWallet || maxAmountPerWallet == 0, "Exceed max amount per wallet");
                require(amount <= maxAmountPerTx || maxAmountPerTx == 0, "Exceed max amount per tx");
                _tax = buyFee;
            } else if (to == uniswapV2Pair) {
                require(amount <= maxAmountPerTx || maxAmountPerTx == 0, "Exceed max amount per tx");
                _tax = sellFee;
            } else {
                _tax = 0;
            }
        }

        uint256 taxAmount = (amount * _tax) / 100;
        uint256 transferAmount = amount - taxAmount;

        _balance[from] = _balance[from] - amount;
        _balance[address(this)] = _balance[address(this)] + taxAmount;

        uint256 cAmount = _balance[address(this)];
        if (!inSwapAndLiquify && from != uniswapV2Pair && to == uniswapV2Pair && swapEnabled) {
            if (cAmount >= maxSwapTokenAmount) {
                swapTokensForEth(cAmount);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) {
                    sendETHToFee(ethBalance);
                }
            }
        }

        if (!_isExcludedWallet[to] && to != uniswapV2Pair && _balance[to] == 0) {
            holders.push(to);
        }

        _balance[to] = _balance[to] + transferAmount;

        if (taxAmount > 0) {
            emit Transfer(from, address(this), taxAmount);
        }

        if (!_isExcludedWallet[from] && from != uniswapV2Pair && _balance[from] == 0) {
            for (uint256 i = 0; i < holders.length; i ++) {
                if (holders[i] == from) {
                    holders[i] = holders[holders.length - 1];
                    holders.pop();
                    break;
                }
            }
        }

        emit Transfer(from, to, transferAmount);
    }

    function swapTokensForEth(uint256 _tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 _amount) private {
        uint256 feeAmount = _amount;
        taxWallet.transfer(feeAmount);
    }

    function manualSwap() external {
        require(_msgSender() == owner() || _msgSender() == taxWallet, "Invalid permission");

        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }

        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }

    function _setFee(uint256 _buyFee, uint256 _sellFee) private {
        buyFee = _buyFee;
        sellFee = _sellFee;
    }

    function _setMaxAmountPerTx(uint256 _maxAmountPerTx) private {
        maxAmountPerTx = _maxAmountPerTx;
    }

    function _setMaxAmountPerWallet(uint256 _maxAmountPerWallet) private {
        maxAmountPerWallet = _maxAmountPerWallet;
    }

    function _setMaxSwapTokenAmount(uint256 _maxSwapTokenAmount) private {
        maxSwapTokenAmount = _maxSwapTokenAmount;
    }

    function openTrade(
        uint256 _buyFee,
        uint256 _sellFee,
        uint256 _maxAmountPerTx,
        uint256 _maxAmountPerWallet,
        uint256 _maxSwapTokenAmount
    ) external payable onlyOwner {
        require(!swapEnabled, "token is already enabled for trading");

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

        _setFee(_buyFee, _sellFee);
        _setMaxAmountPerTx(_maxAmountPerTx);
        _setMaxAmountPerWallet(_maxAmountPerWallet);
        _setMaxSwapTokenAmount(_maxSwapTokenAmount);

        swapEnabled = true;
    }

    function setFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        _setFee(_buyFee, _sellFee);
    }

    function setLimits(uint256 _maxAmountPerTx, uint256 _maxAmountPerWallet) external onlyOwner {
        _setMaxAmountPerTx(_maxAmountPerTx);
        _setMaxAmountPerWallet(_maxAmountPerWallet);
    }

    function setMaxSwapTokenAmount(uint256 _maxSwapTokenAmount) external onlyOwner {
        _setMaxSwapTokenAmount(_maxSwapTokenAmount);
    }

    function setTaxWallet(address _taxWallet) external onlyOwner {
        taxWallet = payable(_taxWallet);
    }

    function getHoldersCount() public view returns(uint256) {
        return holders.length;
    }

    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":"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":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getHoldersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxAmountPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_maxAmountPerTx","type":"uint256"},{"internalType":"uint256","name":"_maxAmountPerWallet","type":"uint256"},{"internalType":"uint256","name":"_maxSwapTokenAmount","type":"uint256"}],"name":"openTrade","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxAmountPerTx","type":"uint256"},{"internalType":"uint256","name":"_maxAmountPerWallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSwapTokenAmount","type":"uint256"}],"name":"setMaxSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006004819055600581905560068190556007819055600855600b805461ffff60a01b191690553480156200003857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b03191673dcd1ad91d5067407851b4722f28ec083fa4cd5b1179055600160036000620000ae3390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553080825260038552838220805487166001908117909155600b549093168252838220805490961690921790945583526002808352818420737a250d5630b4cf539739df2c5dacb4c659f2488d8552909252822060001990819055916200013f3390565b6001600160a01b0316815260208082019290925260409081016000908120737a250d5630b4cf539739df2c5dacb4c659f2488d825290925290205560646200018a6012600a620003ea565b6200019a90633b9aca0062000402565b620001a691906200041c565b620001b390600662000402565b336000908152600160205260409020556064620001d36012600a620003ea565b620001e390633b9aca0062000402565b620001ef91906200041c565b620001fc90605e62000402565b30600090815260016020526040902055336001600160a01b0316600060008051602062001f278339815191526064620002386012600a620003ea565b6200024890633b9aca0062000402565b6200025491906200041c565b6200026190600662000402565b60405190815260200160405180910390a330600060008051602062001f278339815191526064620002956012600a620003ea565b620002a590633b9aca0062000402565b620002b191906200041c565b620002be90605e62000402565b60405190815260200160405180910390a36200043f565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200032c578160001904821115620003105762000310620002d5565b808516156200031e57918102915b93841c9390800290620002f0565b509250929050565b6000826200034557506001620003e4565b816200035457506000620003e4565b81600181146200036d5760028114620003785762000398565b6001915050620003e4565b60ff8411156200038c576200038c620002d5565b50506001821b620003e4565b5060208310610133831016604e8410600b8410161715620003bd575081810a620003e4565b620003c98383620002eb565b8060001904821115620003e057620003e0620002d5565b0290505b92915050565b6000620003fb60ff84168362000334565b9392505050565b8082028115828204841417620003e457620003e4620002d5565b6000826200043a57634e487b7160e01b600052601260045260246000fd5b500490565b611ad8806200044f6000396000f3fe60806040526004361061016a5760003560e01c806364998def116100d157806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e1461043a578063e21bbe6b14610480578063ea414b2814610493578063f2fde38b146104b357600080fd5b806395d89b41146103cc578063a9059cbb146103fa578063c4590d3f1461041a57600080fd5b806364998def1461031857806370a0823114610338578063715018a61461036e57806373889f4a1461038357806385b27c85146103985780638da5cb5b146103ae57600080fd5b8063313ce56711610123578063313ce5671461027957806336db71291461029557806347062402146102ab57806349bd5a5e146102c157806351bc3c85146102e157806352f7c988146102f857600080fd5b806306fdde0314610176578063095ea7b3146101b857806318160ddd146101e857806323b872dd1461020b5780632a11ced01461022b5780632b14ca561461026357600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5060408051808201909152600781526623b937b5a3a2a760c91b60208201525b6040516101af919061163d565b60405180910390f35b3480156101c457600080fd5b506101d86101d33660046116a0565b6104d3565b60405190151581526020016101af565b3480156101f457600080fd5b506101fd6104ea565b6040519081526020016101af565b34801561021757600080fd5b506101d86102263660046116cc565b61050b565b34801561023757600080fd5b5061024b61024636600461170d565b6105a5565b6040516001600160a01b0390911681526020016101af565b34801561026f57600080fd5b506101fd60055481565b34801561028557600080fd5b50604051601281526020016101af565b3480156102a157600080fd5b506101fd60075481565b3480156102b757600080fd5b506101fd60045481565b3480156102cd57600080fd5b5060095461024b906001600160a01b031681565b3480156102ed57600080fd5b506102f66105cf565b005b34801561030457600080fd5b506102f6610313366004611726565b610674565b34801561032457600080fd5b506102f661033336600461170d565b6106a9565b34801561034457600080fd5b506101fd610353366004611748565b6001600160a01b031660009081526001602052604090205490565b34801561037a57600080fd5b506102f66106df565b34801561038f57600080fd5b50600a546101fd565b3480156103a457600080fd5b506101fd60065481565b3480156103ba57600080fd5b506000546001600160a01b031661024b565b3480156103d857600080fd5b5060408051808201909152600581526447524f4b4760d81b60208201526101a2565b34801561040657600080fd5b506101d86104153660046116a0565b610753565b34801561042657600080fd5b506102f6610435366004611726565b610760565b34801561044657600080fd5b506101fd61045536600461176c565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102f661048e3660046117a5565b61079c565b34801561049f57600080fd5b506102f66104ae366004611748565b610b56565b3480156104bf57600080fd5b506102f66104ce366004611748565b610ba2565b60006104e0338484610c6d565b5060015b92915050565b60006104f86012600a6118da565b61050690633b9aca006118e9565b905090565b6000610518848484610d31565b61059b8433610596856040518060400160405280600d81526020016c6c6f7720616c6c6f77616e636560981b815250600260008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006105753390565b6001600160a01b031681526020810191909152604001600020549190611438565b610c6d565b5060019392505050565b600a81815481106105b557600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314806105fb5750600b546001600160a01b0316336001600160a01b0316145b6106415760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b2103832b936b4b9b9b4b7b760711b60448201526064015b60405180910390fd5b3060009081526001602052604090205480156106605761066081611472565b47801561067057610670816115fe565b5050565b6000546001600160a01b0316331461069e5760405162461bcd60e51b815260040161063890611900565b600491909155600555565b6000546001600160a01b031633146106d35760405162461bcd60e51b815260040161063890611900565b6106dc81600855565b50565b6000546001600160a01b031633146107095760405162461bcd60e51b815260040161063890611900565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006104e0338484610d31565b6000546001600160a01b0316331461078a5760405162461bcd60e51b815260040161063890611900565b61079382600655565b61067081600755565b6000546001600160a01b031633146107c65760405162461bcd60e51b815260040161063890611900565b600b54600160a01b900460ff161561082c5760405162461bcd60e51b8152602060048201526024808201527f746f6b656e20697320616c726561647920656e61626c656420666f722074726160448201526364696e6760e01b6064820152608401610638565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a29190611937565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109279190611937565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109989190611937565b600980546001600160a01b0319166001600160a01b039290921691909117905530600081815260016020526040902054737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d719913491906000806109fc6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a64573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a899190611954565b505060095460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d600482015260001960248201526001600160a01b03909116915063095ea7b3906044016020604051808303816000875af1158015610af2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b169190611982565b5060048590556005849055610b2a83600655565b610b3382600755565b610b3c81600855565b5050600b805460ff60a01b1916600160a01b179055505050565b6000546001600160a01b03163314610b805760405162461bcd60e51b815260040161063890611900565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bcc5760405162461bcd60e51b815260040161063890611900565b6001600160a01b038116610c225760405162461bcd60e51b815260206004820152601960248201527f6e6577206f776e6572206973207a65726f2061646472657373000000000000006044820152606401610638565b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b03831615801590610c8d57506001600160a01b03821615155b610cd05760405162461bcd60e51b8152602060048201526014602482015273617070726f7665207a65726f206164647265737360601b6044820152606401610638565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610638565b6001600160a01b038216610df75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610638565b60008111610e595760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610638565b6001600160a01b03831660009081526003602052604081205460ff16158015610e9b57506001600160a01b03831660009081526003602052604090205460ff16155b15611041576009546001600160a01b038581169116148015610eda57506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15610fc65760075482610f02856001600160a01b031660009081526001602052604090205490565b610f0c91906119a4565b111580610f195750600754155b610f655760405162461bcd60e51b815260206004820152601c60248201527f457863656564206d617820616d6f756e74207065722077616c6c6574000000006044820152606401610638565b60065482111580610f765750600654155b610fbd5760405162461bcd60e51b815260206004820152601860248201527708af0c6cacac840dac2f040c2dadeeadce840e0cae440e8f60431b6044820152606401610638565b50600454611041565b6009546001600160a01b039081169084160361103d5760065482111580610fed5750600654155b6110345760405162461bcd60e51b815260206004820152601860248201527708af0c6cacac840dac2f040c2dadeeadce840e0cae440e8f60431b6044820152606401610638565b50600554611041565b5060005b6000606461104f83856118e9565b61105991906119b7565b9050600061106782856119d9565b6001600160a01b03871660009081526001602052604090205490915061108e9085906119d9565b6001600160a01b0387166000908152600160205260408082209290925530815220546110bb9083906119a4565b306000908152600160205260409020819055600b54600160a81b900460ff161580156110f557506009546001600160a01b03888116911614155b801561110e57506009546001600160a01b038781169116145b80156111235750600b54600160a01b900460ff165b1561114c57600854811061114c5761113a81611472565b47801561114a5761114a816115fe565b505b6001600160a01b03861660009081526003602052604090205460ff1615801561118357506009546001600160a01b03878116911614155b80156111a557506001600160a01b038616600090815260016020526040902054155b156111f657600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b0388161790555b6001600160a01b03861660009081526001602052604090205461121a9083906119a4565b6001600160a01b038716600090815260016020526040902055821561127a5760405183815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b03871660009081526003602052604090205460ff161580156112b157506009546001600160a01b03888116911614155b80156112d357506001600160a01b038716600090815260016020526040902054155b156113e25760005b600a548110156113e057876001600160a01b0316600a8281548110611302576113026119ec565b6000918252602090912001546001600160a01b0316036113ce57600a805461132c906001906119d9565b8154811061133c5761133c6119ec565b600091825260209091200154600a80546001600160a01b039092169183908110611368576113686119ec565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a8054806113a7576113a7611a02565b600082815260209020810160001990810180546001600160a01b03191690550190556113e0565b806113d881611a18565b9150506112db565b505b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161142791815260200190565b60405180910390a350505050505050565b6000818484111561145c5760405162461bcd60e51b8152600401610638919061163d565b50600061146984866119d9565b95945050505050565b600b805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114ba576114ba6119ec565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561152c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115509190611937565b81600181518110611563576115636119ec565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906115bb908590600090869030904290600401611a31565b600060405180830381600087803b1580156115d557600080fd5b505af11580156115e9573d6000803e3d6000fd5b5050600b805460ff60a81b1916905550505050565b600b5460405182916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611638573d6000803e3d6000fd5b505050565b600060208083528351808285015260005b8181101561166a5785810183015185820160400152820161164e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106dc57600080fd5b600080604083850312156116b357600080fd5b82356116be8161168b565b946020939093013593505050565b6000806000606084860312156116e157600080fd5b83356116ec8161168b565b925060208401356116fc8161168b565b929592945050506040919091013590565b60006020828403121561171f57600080fd5b5035919050565b6000806040838503121561173957600080fd5b50508035926020909101359150565b60006020828403121561175a57600080fd5b81356117658161168b565b9392505050565b6000806040838503121561177f57600080fd5b823561178a8161168b565b9150602083013561179a8161168b565b809150509250929050565b600080600080600060a086880312156117bd57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611831578160001904821115611817576118176117e0565b8085161561182457918102915b93841c93908002906117fb565b509250929050565b600082611848575060016104e4565b81611855575060006104e4565b816001811461186b576002811461187557611891565b60019150506104e4565b60ff841115611886576118866117e0565b50506001821b6104e4565b5060208310610133831016604e8410600b84101617156118b4575081810a6104e4565b6118be83836117f6565b80600019048211156118d2576118d26117e0565b029392505050565b600061176560ff841683611839565b80820281158282048414176104e4576104e46117e0565b60208082526017908201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b60006020828403121561194957600080fd5b81516117658161168b565b60008060006060848603121561196957600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561199457600080fd5b8151801515811461176557600080fd5b808201808211156104e4576104e46117e0565b6000826119d457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104e4576104e46117e0565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201611a2a57611a2a6117e0565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a815784516001600160a01b031683529383019391830191600101611a5c565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209d679d71b6cfc2b9ac0cf604fb3a6aa713a88de074871b51ac41741d447258c664736f6c63430008130033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806364998def116100d157806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e1461043a578063e21bbe6b14610480578063ea414b2814610493578063f2fde38b146104b357600080fd5b806395d89b41146103cc578063a9059cbb146103fa578063c4590d3f1461041a57600080fd5b806364998def1461031857806370a0823114610338578063715018a61461036e57806373889f4a1461038357806385b27c85146103985780638da5cb5b146103ae57600080fd5b8063313ce56711610123578063313ce5671461027957806336db71291461029557806347062402146102ab57806349bd5a5e146102c157806351bc3c85146102e157806352f7c988146102f857600080fd5b806306fdde0314610176578063095ea7b3146101b857806318160ddd146101e857806323b872dd1461020b5780632a11ced01461022b5780632b14ca561461026357600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5060408051808201909152600781526623b937b5a3a2a760c91b60208201525b6040516101af919061163d565b60405180910390f35b3480156101c457600080fd5b506101d86101d33660046116a0565b6104d3565b60405190151581526020016101af565b3480156101f457600080fd5b506101fd6104ea565b6040519081526020016101af565b34801561021757600080fd5b506101d86102263660046116cc565b61050b565b34801561023757600080fd5b5061024b61024636600461170d565b6105a5565b6040516001600160a01b0390911681526020016101af565b34801561026f57600080fd5b506101fd60055481565b34801561028557600080fd5b50604051601281526020016101af565b3480156102a157600080fd5b506101fd60075481565b3480156102b757600080fd5b506101fd60045481565b3480156102cd57600080fd5b5060095461024b906001600160a01b031681565b3480156102ed57600080fd5b506102f66105cf565b005b34801561030457600080fd5b506102f6610313366004611726565b610674565b34801561032457600080fd5b506102f661033336600461170d565b6106a9565b34801561034457600080fd5b506101fd610353366004611748565b6001600160a01b031660009081526001602052604090205490565b34801561037a57600080fd5b506102f66106df565b34801561038f57600080fd5b50600a546101fd565b3480156103a457600080fd5b506101fd60065481565b3480156103ba57600080fd5b506000546001600160a01b031661024b565b3480156103d857600080fd5b5060408051808201909152600581526447524f4b4760d81b60208201526101a2565b34801561040657600080fd5b506101d86104153660046116a0565b610753565b34801561042657600080fd5b506102f6610435366004611726565b610760565b34801561044657600080fd5b506101fd61045536600461176c565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102f661048e3660046117a5565b61079c565b34801561049f57600080fd5b506102f66104ae366004611748565b610b56565b3480156104bf57600080fd5b506102f66104ce366004611748565b610ba2565b60006104e0338484610c6d565b5060015b92915050565b60006104f86012600a6118da565b61050690633b9aca006118e9565b905090565b6000610518848484610d31565b61059b8433610596856040518060400160405280600d81526020016c6c6f7720616c6c6f77616e636560981b815250600260008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006105753390565b6001600160a01b031681526020810191909152604001600020549190611438565b610c6d565b5060019392505050565b600a81815481106105b557600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314806105fb5750600b546001600160a01b0316336001600160a01b0316145b6106415760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b2103832b936b4b9b9b4b7b760711b60448201526064015b60405180910390fd5b3060009081526001602052604090205480156106605761066081611472565b47801561067057610670816115fe565b5050565b6000546001600160a01b0316331461069e5760405162461bcd60e51b815260040161063890611900565b600491909155600555565b6000546001600160a01b031633146106d35760405162461bcd60e51b815260040161063890611900565b6106dc81600855565b50565b6000546001600160a01b031633146107095760405162461bcd60e51b815260040161063890611900565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006104e0338484610d31565b6000546001600160a01b0316331461078a5760405162461bcd60e51b815260040161063890611900565b61079382600655565b61067081600755565b6000546001600160a01b031633146107c65760405162461bcd60e51b815260040161063890611900565b600b54600160a01b900460ff161561082c5760405162461bcd60e51b8152602060048201526024808201527f746f6b656e20697320616c726561647920656e61626c656420666f722074726160448201526364696e6760e01b6064820152608401610638565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a29190611937565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109279190611937565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109989190611937565b600980546001600160a01b0319166001600160a01b039290921691909117905530600081815260016020526040902054737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d719913491906000806109fc6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a64573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a899190611954565b505060095460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d600482015260001960248201526001600160a01b03909116915063095ea7b3906044016020604051808303816000875af1158015610af2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b169190611982565b5060048590556005849055610b2a83600655565b610b3382600755565b610b3c81600855565b5050600b805460ff60a01b1916600160a01b179055505050565b6000546001600160a01b03163314610b805760405162461bcd60e51b815260040161063890611900565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bcc5760405162461bcd60e51b815260040161063890611900565b6001600160a01b038116610c225760405162461bcd60e51b815260206004820152601960248201527f6e6577206f776e6572206973207a65726f2061646472657373000000000000006044820152606401610638565b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b03831615801590610c8d57506001600160a01b03821615155b610cd05760405162461bcd60e51b8152602060048201526014602482015273617070726f7665207a65726f206164647265737360601b6044820152606401610638565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610638565b6001600160a01b038216610df75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610638565b60008111610e595760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610638565b6001600160a01b03831660009081526003602052604081205460ff16158015610e9b57506001600160a01b03831660009081526003602052604090205460ff16155b15611041576009546001600160a01b038581169116148015610eda57506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15610fc65760075482610f02856001600160a01b031660009081526001602052604090205490565b610f0c91906119a4565b111580610f195750600754155b610f655760405162461bcd60e51b815260206004820152601c60248201527f457863656564206d617820616d6f756e74207065722077616c6c6574000000006044820152606401610638565b60065482111580610f765750600654155b610fbd5760405162461bcd60e51b815260206004820152601860248201527708af0c6cacac840dac2f040c2dadeeadce840e0cae440e8f60431b6044820152606401610638565b50600454611041565b6009546001600160a01b039081169084160361103d5760065482111580610fed5750600654155b6110345760405162461bcd60e51b815260206004820152601860248201527708af0c6cacac840dac2f040c2dadeeadce840e0cae440e8f60431b6044820152606401610638565b50600554611041565b5060005b6000606461104f83856118e9565b61105991906119b7565b9050600061106782856119d9565b6001600160a01b03871660009081526001602052604090205490915061108e9085906119d9565b6001600160a01b0387166000908152600160205260408082209290925530815220546110bb9083906119a4565b306000908152600160205260409020819055600b54600160a81b900460ff161580156110f557506009546001600160a01b03888116911614155b801561110e57506009546001600160a01b038781169116145b80156111235750600b54600160a01b900460ff165b1561114c57600854811061114c5761113a81611472565b47801561114a5761114a816115fe565b505b6001600160a01b03861660009081526003602052604090205460ff1615801561118357506009546001600160a01b03878116911614155b80156111a557506001600160a01b038616600090815260016020526040902054155b156111f657600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b0388161790555b6001600160a01b03861660009081526001602052604090205461121a9083906119a4565b6001600160a01b038716600090815260016020526040902055821561127a5760405183815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b03871660009081526003602052604090205460ff161580156112b157506009546001600160a01b03888116911614155b80156112d357506001600160a01b038716600090815260016020526040902054155b156113e25760005b600a548110156113e057876001600160a01b0316600a8281548110611302576113026119ec565b6000918252602090912001546001600160a01b0316036113ce57600a805461132c906001906119d9565b8154811061133c5761133c6119ec565b600091825260209091200154600a80546001600160a01b039092169183908110611368576113686119ec565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a8054806113a7576113a7611a02565b600082815260209020810160001990810180546001600160a01b03191690550190556113e0565b806113d881611a18565b9150506112db565b505b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161142791815260200190565b60405180910390a350505050505050565b6000818484111561145c5760405162461bcd60e51b8152600401610638919061163d565b50600061146984866119d9565b95945050505050565b600b805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114ba576114ba6119ec565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561152c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115509190611937565b81600181518110611563576115636119ec565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906115bb908590600090869030904290600401611a31565b600060405180830381600087803b1580156115d557600080fd5b505af11580156115e9573d6000803e3d6000fd5b5050600b805460ff60a81b1916905550505050565b600b5460405182916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611638573d6000803e3d6000fd5b505050565b600060208083528351808285015260005b8181101561166a5785810183015185820160400152820161164e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106dc57600080fd5b600080604083850312156116b357600080fd5b82356116be8161168b565b946020939093013593505050565b6000806000606084860312156116e157600080fd5b83356116ec8161168b565b925060208401356116fc8161168b565b929592945050506040919091013590565b60006020828403121561171f57600080fd5b5035919050565b6000806040838503121561173957600080fd5b50508035926020909101359150565b60006020828403121561175a57600080fd5b81356117658161168b565b9392505050565b6000806040838503121561177f57600080fd5b823561178a8161168b565b9150602083013561179a8161168b565b809150509250929050565b600080600080600060a086880312156117bd57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611831578160001904821115611817576118176117e0565b8085161561182457918102915b93841c93908002906117fb565b509250929050565b600082611848575060016104e4565b81611855575060006104e4565b816001811461186b576002811461187557611891565b60019150506104e4565b60ff841115611886576118866117e0565b50506001821b6104e4565b5060208310610133831016604e8410600b84101617156118b4575081810a6104e4565b6118be83836117f6565b80600019048211156118d2576118d26117e0565b029392505050565b600061176560ff841683611839565b80820281158282048414176104e4576104e46117e0565b60208082526017908201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b60006020828403121561194957600080fd5b81516117658161168b565b60008060006060848603121561196957600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561199457600080fd5b8151801515811461176557600080fd5b808201808211156104e4576104e46117e0565b6000826119d457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104e4576104e46117e0565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201611a2a57611a2a6117e0565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a815784516001600160a01b031683529383019391830191600101611a5c565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209d679d71b6cfc2b9ac0cf604fb3a6aa713a88de074871b51ac41741d447258c664736f6c63430008130033

Deployed Bytecode Sourcemap

3887:9007:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5729:83;;;;;;;;;;-1:-1:-1;5799:5:0;;;;;;;;;;;;-1:-1:-1;;;5799:5:0;;;;5729:83;;;;;;;:::i;:::-;;;;;;;;6564:160;;;;;;;;;;-1:-1:-1;6564:160:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6564:160:0;1023:187:1;6006:100:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6006:100:0;1215:177:1;6732:286:0;;;;;;;;;;-1:-1:-1;6732:286:0;;;;;:::i;:::-;;:::i;4799:24::-;;;;;;;;;;-1:-1:-1;4799:24:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2207:32:1;;;2189:51;;2177:2;2162:18;4799:24:0;2043:203:1;4473:26:0;;;;;;;;;;;;;;;;5915:83;;;;;;;;;;-1:-1:-1;5915:83:0;;4191:2;2393:36:1;;2381:2;2366:18;5915:83:0;2251:184:1;4546:37:0;;;;;;;;;;;;;;;;4441:25;;;;;;;;;;;;;;;;4762:28;;;;;;;;;;-1:-1:-1;4762:28:0;;;;-1:-1:-1;;;;;4762:28:0;;;10254:418;;;;;;;;;;;;;:::i;:::-;;12159:115;;;;;;;;;;-1:-1:-1;12159:115:0;;;;;:::i;:::-;;:::i;12490:141::-;;;;;;;;;;-1:-1:-1;12490:141:0;;;;;:::i;:::-;;:::i;6114:118::-;;;;;;;;;;-1:-1:-1;6114:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;6207:17:0;6180:7;6207:17;;;:8;:17;;;;;;;6114:118;2265:148;;;;;;;;;;;;;:::i;12758:96::-;;;;;;;;;;-1:-1:-1;12832:7:0;:14;12758:96;;4506:33;;;;;;;;;;;;;;;;1829:79;;;;;;;;;;-1:-1:-1;1867:7:0;1894:6;-1:-1:-1;;;;;1894:6:0;1829:79;;5820:87;;;;;;;;;;-1:-1:-1;5892:7:0;;;;;;;;;;;;-1:-1:-1;;;5892:7:0;;;;5820:87;;6240:166;;;;;;;;;;-1:-1:-1;6240:166:0;;;;;:::i;:::-;;:::i;12282:200::-;;;;;;;;;;-1:-1:-1;12282:200:0;;;;;:::i;:::-;;:::i;6414:142::-;;;;;;;;;;-1:-1:-1;6414:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;6521:18:0;;;6495:7;6521:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6414:142;11204:947;;;;;;:::i;:::-;;:::i;12639:111::-;;;;;;;;;;-1:-1:-1;12639:111:0;;;;;:::i;:::-;;:::i;2034:223::-;;;;;;;;;;-1:-1:-1;2034:223:0;;;;;:::i;:::-;;:::i;6564:160::-;6639:4;6655:39;356:10;6678:7;6687:6;6655:8;:39::i;:::-;-1:-1:-1;6712:4:0;6564:160;;;;;:::o;6006:100::-;6059:7;4256:15;4191:2;4256;:15;:::i;:::-;4240:31;;:13;:31;:::i;:::-;6079:19;;6006:100;:::o;6732:286::-;6830:4;6847:36;6857:6;6865:9;6876:6;6847:9;:36::i;:::-;6894:94;6903:6;356:10;6925:62;6963:6;6925:62;;;;;;;;;;;;;-1:-1:-1;;;6925:62:0;;;:11;:19;6937:6;-1:-1:-1;;;;;6925:19:0;-1:-1:-1;;;;;6925:19:0;;;;;;;;;;;;:33;6945:12;356:10;;276:98;6945:12;-1:-1:-1;;;;;6925:33:0;;;;;;;;;;;;-1:-1:-1;6925:33:0;;;:62;:37;:62::i;:::-;6894:8;:94::i;:::-;-1:-1:-1;7006:4:0;6732:286;;;;;:::o;4799:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4799:24:0;;-1:-1:-1;4799:24:0;:::o;10254:418::-;1867:7;1894:6;-1:-1:-1;;;;;1894:6:0;356:10;10304:23;;:52;;-1:-1:-1;10347:9:0;;-1:-1:-1;;;;;10347:9:0;356:10;-1:-1:-1;;;;;10331:25:0;;10304:52;10296:83;;;;-1:-1:-1;;;10296:83:0;;5687:2:1;10296:83:0;;;5669:21:1;5726:2;5706:18;;;5699:30;-1:-1:-1;;;5745:18:1;;;5738:48;5803:18;;10296:83:0;;;;;;;;;10433:4;10392:20;6207:17;;;:8;:17;;;;;;10454:16;;10450:79;;10487:30;10504:12;10487:16;:30::i;:::-;10562:21;10598:14;;10594:71;;10629:24;10642:10;10629:12;:24::i;:::-;10285:387;;10254:418::o;12159:115::-;1956:6;;-1:-1:-1;;;;;1956:6:0;356:10;1956:22;1948:58;;;;-1:-1:-1;;;1948:58:0;;;;;;;:::i;:::-;10751:6;:16;;;;10778:7;:18;10254:418::o;12490:141::-;1956:6;;-1:-1:-1;;;;;1956:6:0;356:10;1956:22;1948:58;;;;-1:-1:-1;;;1948:58:0;;;;;;;:::i;:::-;12580:43:::1;12603:19;11148:18:::0;:40;11068:128;12580:43:::1;12490:141:::0;:::o;2265:148::-;1956:6;;-1:-1:-1;;;;;1956:6:0;356:10;1956:22;1948:58;;;;-1:-1:-1;;;1948:58:0;;;;;;;:::i;:::-;2372:1:::1;2356:6:::0;;2335:40:::1;::::0;-1:-1:-1;;;;;2356:6:0;;::::1;::::0;2335:40:::1;::::0;2372:1;;2335:40:::1;2403:1;2386:19:::0;;-1:-1:-1;;;;;;2386:19:0::1;::::0;;2265:148::o;6240:166::-;6318:4;6334:42;356:10;6358:9;6369:6;6334:9;:42::i;12282:200::-;1956:6;;-1:-1:-1;;;;;1956:6:0;356:10;1956:22;1948:58;;;;-1:-1:-1;;;1948:58:0;;;;;;;:::i;:::-;12385:35:::1;12404:15;10884:14:::0;:32;10812:112;12385:35:::1;12431:43;12454:19;11012:18:::0;:40;10932:128;11204:947;1956:6;;-1:-1:-1;;;;;1956:6:0;356:10;1956:22;1948:58;;;;-1:-1:-1;;;1948:58:0;;;;;;;:::i;:::-;11440:11:::1;::::0;-1:-1:-1;;;11440:11:0;::::1;;;11439:12;11431:61;;;::::0;-1:-1:-1;;;11431:61:0;;6386:2:1;11431:61:0::1;::::0;::::1;6368:21:1::0;6425:2;6405:18;;;6398:30;6464:34;6444:18;;;6437:62;-1:-1:-1;;;6515:18:1;;;6508:34;6559:19;;11431:61:0::1;6184:400:1::0;11431:61:0::1;4712:42;-1:-1:-1::0;;;;;11539:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11521:55:0::1;;11585:4;4712:42;-1:-1:-1::0;;;;;11592:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11521:94;::::0;-1:-1:-1;;;;;;11521:94:0::1;::::0;;;;;;-1:-1:-1;;;;;7075:15:1;;;11521:94:0::1;::::0;::::1;7057:34:1::0;7127:15;;7107:18;;;7100:43;6992:18;;11521:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11505:13;:110:::0;;-1:-1:-1;;;;;;11505:110:0::1;-1:-1:-1::0;;;;;11505:110:0;;;::::1;::::0;;;::::1;::::0;;11698:4:::1;-1:-1:-1::0;6207:17:0;;;-1:-1:-1;6207:17:0;;;;;;4712:42:::1;::::0;11626:31:::1;::::0;11665:9:::1;::::0;11698:4;11757:1:::1;11773::::0;11789:7:::1;1867::::0;1894:6;-1:-1:-1;;;;;1894:6:0;;1829:79;11789:7:::1;11626:211;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11626:211:0;;;-1:-1:-1;;;;;7513:15:1;;;11626:211:0::1;::::0;::::1;7495:34:1::0;7545:18;;;7538:34;;;;7588:18;;;7581:34;;;;7631:18;;;7624:34;7695:15;;;7674:19;;;7667:44;11811:15:0::1;7727:19:1::0;;;7720:35;7429:19;;11626:211:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11855:13:0::1;::::0;11848:71:::1;::::0;-1:-1:-1;;;11848:71:0;;4712:42:::1;11848:71;::::0;::::1;8251:51:1::0;-1:-1:-1;;8318:18:1;;;8311:34;-1:-1:-1;;;;;11855:13:0;;::::1;::::0;-1:-1:-1;11848:29:0::1;::::0;8224:18:1;;11848:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;10751:6:0;:16;;;10778:7;:18;;;11969:35:::1;11988:15;10884:14:::0;:32;10812:112;11969:35:::1;12015:43;12038:19;11012:18:::0;:40;10932:128;12015:43:::1;12069;12092:19;11148:18:::0;:40;11068:128;12069:43:::1;-1:-1:-1::0;;12125:11:0::1;:18:::0;;-1:-1:-1;;;;12125:18:0::1;-1:-1:-1::0;;;12125:18:0::1;::::0;;-1:-1:-1;;;11204:947:0:o;12639:111::-;1956:6;;-1:-1:-1;;;;;1956:6:0;356:10;1956:22;1948:58;;;;-1:-1:-1;;;1948:58:0;;;;;;;:::i;:::-;12711:9:::1;:31:::0;;-1:-1:-1;;;;;;12711:31:0::1;-1:-1:-1::0;;;;;12711:31:0;;;::::1;::::0;;;::::1;::::0;;12639:111::o;2034:223::-;1956:6;;-1:-1:-1;;;;;1956:6:0;356:10;1956:22;1948:58;;;;-1:-1:-1;;;1948:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2115:22:0;::::1;2107:60;;;::::0;-1:-1:-1;;;2107:60:0;;8840:2:1;2107:60:0::1;::::0;::::1;8822:21:1::0;8879:2;8859:18;;;8852:30;8918:27;8898:18;;;8891:55;8963:18;;2107:60:0::1;8638:349:1::0;2107:60:0::1;2178:6;:17:::0;;-1:-1:-1;;;;;;2178:17:0::1;-1:-1:-1::0;;;;;2178:17:0;::::1;::::0;;::::1;::::0;;2211:38:::1;::::0;2178:17;;;;2211:38:::1;::::0;2178:6;2211:38:::1;2034:223:::0;:::o;7026:265::-;-1:-1:-1;;;;;7119:19:0;;;;;;:44;;-1:-1:-1;;;;;;7142:21:0;;;;7119:44;7111:77;;;;-1:-1:-1;;;7111:77:0;;9194:2:1;7111:77:0;;;9176:21:1;9233:2;9213:18;;;9206:30;-1:-1:-1;;;9252:18:1;;;9245:50;9312:18;;7111:77:0;8992:344:1;7111:77:0;-1:-1:-1;;;;;7199:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7251:32;;1361:25:1;;;7251:32:0;;1334:18:1;7251:32:0;;;;;;;7026:265;;;:::o;7299:2378::-;-1:-1:-1;;;;;7387:18:0;;7379:68;;;;-1:-1:-1;;;7379:68:0;;9543:2:1;7379:68:0;;;9525:21:1;9582:2;9562:18;;;9555:30;9621:34;9601:18;;;9594:62;-1:-1:-1;;;9672:18:1;;;9665:35;9717:19;;7379:68:0;9341:401:1;7379:68:0;-1:-1:-1;;;;;7466:16:0;;7458:64;;;;-1:-1:-1;;;7458:64:0;;9949:2:1;7458:64:0;;;9931:21:1;9988:2;9968:18;;;9961:30;10027:34;10007:18;;;10000:62;-1:-1:-1;;;10078:18:1;;;10071:33;10121:19;;7458:64:0;9747:399:1;7458:64:0;7550:1;7541:6;:10;7533:64;;;;-1:-1:-1;;;7533:64:0;;10353:2:1;7533:64:0;;;10335:21:1;10392:2;10372:18;;;10365:30;10431:34;10411:18;;;10404:62;-1:-1:-1;;;10482:18:1;;;10475:39;10531:19;;7533:64:0;10151:405:1;7533:64:0;-1:-1:-1;;;;;7642:23:0;;7610:12;7642:23;;;:17;:23;;;;;;;;7641:24;:50;;;;-1:-1:-1;;;;;;7670:21:0;;;;;;:17;:21;;;;;;;;7669:22;7641:50;7637:657;;;7720:13;;-1:-1:-1;;;;;7712:21:0;;;7720:13;;7712:21;:55;;;;-1:-1:-1;;;;;;7737:30:0;;4712:42;7737:30;;7712:55;7708:575;;;7822:18;;7812:6;7796:13;7806:2;-1:-1:-1;;;;;6207:17:0;6180:7;6207:17;;;:8;:17;;;;;;;6114:118;7796:13;:22;;;;:::i;:::-;:44;;:71;;;-1:-1:-1;7844:18:0;;:23;7796:71;7788:112;;;;-1:-1:-1;;;7788:112:0;;10893:2:1;7788:112:0;;;10875:21:1;10932:2;10912:18;;;10905:30;10971;10951:18;;;10944:58;11019:18;;7788:112:0;10691:352:1;7788:112:0;7937:14;;7927:6;:24;;:47;;;-1:-1:-1;7955:14:0;;:19;7927:47;7919:84;;;;-1:-1:-1;;;7919:84:0;;11250:2:1;7919:84:0;;;11232:21:1;11289:2;11269:18;;;11262:30;-1:-1:-1;;;11308:18:1;;;11301:54;11372:18;;7919:84:0;11048:348:1;7919:84:0;-1:-1:-1;8029:6:0;;7708:575;;;8067:13;;-1:-1:-1;;;;;8067:13:0;;;8061:19;;;;8057:226;;8119:14;;8109:6;:24;;:47;;;-1:-1:-1;8137:14:0;;:19;8109:47;8101:84;;;;-1:-1:-1;;;8101:84:0;;11250:2:1;8101:84:0;;;11232:21:1;11289:2;11269:18;;;11262:30;-1:-1:-1;;;11308:18:1;;;11301:54;11372:18;;8101:84:0;11048:348:1;8101:84:0;-1:-1:-1;8211:7:0;;8057:226;;;-1:-1:-1;8266:1:0;8057:226;8306:17;8344:3;8327:13;8336:4;8327:6;:13;:::i;:::-;8326:21;;;;:::i;:::-;8306:41;-1:-1:-1;8358:22:0;8383:18;8306:41;8383:6;:18;:::i;:::-;-1:-1:-1;;;;;8431:14:0;;;;;;:8;:14;;;;;;8358:43;;-1:-1:-1;8431:23:0;;8448:6;;8431:23;:::i;:::-;-1:-1:-1;;;;;8414:14:0;;;;;;:8;:14;;;;;;:40;;;;8508:4;8491:23;;;;:35;;8517:9;;8491:35;:::i;:::-;8482:4;8465:23;;;;:8;:23;;;;;:61;;;8596:16;;-1:-1:-1;;;8596:16:0;;;;8595:17;:42;;;;-1:-1:-1;8624:13:0;;-1:-1:-1;;;;;8616:21:0;;;8624:13;;8616:21;;8595:42;:65;;;;-1:-1:-1;8647:13:0;;-1:-1:-1;;;;;8641:19:0;;;8647:13;;8641:19;8595:65;:80;;;;-1:-1:-1;8664:11:0;;-1:-1:-1;;;8664:11:0;;;;8595:80;8591:373;;;8707:18;;8696:7;:29;8692:261;;8746:25;8763:7;8746:16;:25::i;:::-;8811:21;8855:14;;8851:87;;8894:24;8907:10;8894:12;:24::i;:::-;8727:226;8692:261;-1:-1:-1;;;;;8981:21:0;;;;;;:17;:21;;;;;;;;8980:22;:45;;;;-1:-1:-1;9012:13:0;;-1:-1:-1;;;;;9006:19:0;;;9012:13;;9006:19;;8980:45;:66;;;;-1:-1:-1;;;;;;9029:12:0;;;;;;:8;:12;;;;;;:17;8980:66;8976:115;;;9063:7;:16;;;;;;;-1:-1:-1;9063:16:0;;;;;;;;-1:-1:-1;;;;;;9063:16:0;-1:-1:-1;;;;;9063:16:0;;;;;8976:115;-1:-1:-1;;;;;9118:12:0;;;;;;:8;:12;;;;;;:29;;9133:14;;9118:29;:::i;:::-;-1:-1:-1;;;;;9103:12:0;;;;;;:8;:12;;;;;:44;9164:13;;9160:91;;9199:40;;1361:25:1;;;9222:4:0;;-1:-1:-1;;;;;9199:40:0;;;;;1349:2:1;1334:18;9199:40:0;;;;;;;9160:91;-1:-1:-1;;;;;9268:23:0;;;;;;:17;:23;;;;;;;;9267:24;:49;;;;-1:-1:-1;9303:13:0;;-1:-1:-1;;;;;9295:21:0;;;9303:13;;9295:21;;9267:49;:72;;;;-1:-1:-1;;;;;;9320:14:0;;;;;;:8;:14;;;;;;:19;9267:72;9263:355;;;9361:9;9356:251;9380:7;:14;9376:18;;9356:251;;;9439:4;-1:-1:-1;;;;;9425:18:0;:7;9433:1;9425:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;9425:10:0;:18;9421:171;;9481:7;9489:14;;:18;;9506:1;;9489:18;:::i;:::-;9481:27;;;;;;;;:::i;:::-;;;;;;;;;;;9468:7;:10;;-1:-1:-1;;;;;9481:27:0;;;;9476:1;;9468:10;;;;;;:::i;:::-;;;;;;;;;:40;;;;;-1:-1:-1;;;;;9468:40:0;;;;;-1:-1:-1;;;;;9468:40:0;;;;;;9531:7;:13;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;9531:13:0;;;;;-1:-1:-1;;;;;;9531:13:0;;;;;;9567:5;;9421:171;9396:4;;;;:::i;:::-;;;;9356:251;;;;9263:355;9650:2;-1:-1:-1;;;;;9635:34:0;9644:4;-1:-1:-1;;;;;9635:34:0;;9654:14;9635:34;;;;1361:25:1;;1349:2;1334:18;;1215:177;9635:34:0;;;;;;;;7368:2309;;;;7299:2378;;;:::o;716:190::-;802:7;838:12;830:6;;;;822:29;;;;-1:-1:-1;;;822:29:0;;;;;;;;:::i;:::-;-1:-1:-1;862:9:0;874:5;878:1;874;:5;:::i;:::-;862:17;716:190;-1:-1:-1;;;;;716:190:0:o;9685:412::-;4991:16;:23;;-1:-1:-1;;;;4991:23:0;-1:-1:-1;;;4991:23:0;;;9788:16:::1;::::0;;9802:1:::1;9788:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9788:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9788:16:0::1;9764:40;;9833:4;9815;9820:1;9815:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;9815:23:0::1;;;-1:-1:-1::0;;;;;9815:23:0::1;;;::::0;::::1;4712:42;-1:-1:-1::0;;;;;9859:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9849:4;9854:1;9849:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9849:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:32;9892:197:::1;::::0;-1:-1:-1;;;9892:197:0;;4712:42:::1;::::0;9892:66:::1;::::0;:197:::1;::::0;9973:12;;10000:1:::1;::::0;10016:4;;10043::::1;::::0;10063:15:::1;::::0;9892:197:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5037:16:0;:24;;-1:-1:-1;;;;5037:24:0;;;-1:-1:-1;;;;9685:412:0:o;10113:133::-;10209:9;;:29;;10191:7;;-1:-1:-1;;;;;10209:9:0;;:29;;;;;10191:7;;10171:17;10209:29;10171:17;10209:29;10191:7;10209:9;:29;;;;;;;;;;;;;;;;;;;;;10160:86;10113:133;:::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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;-1:-1:-1;2009:23:1;;1858:180;-1:-1:-1;1858:180:1:o;2440:248::-;2508:6;2516;2569:2;2557:9;2548:7;2544:23;2540:32;2537:52;;;2585:1;2582;2575:12;2537:52;-1:-1:-1;;2608:23:1;;;2678:2;2663:18;;;2650:32;;-1:-1:-1;2440:248:1:o;2693:247::-;2752:6;2805:2;2793:9;2784:7;2780:23;2776:32;2773:52;;;2821:1;2818;2811:12;2773:52;2860:9;2847:23;2879:31;2904:5;2879:31;:::i;:::-;2929:5;2693:247;-1:-1:-1;;;2693:247:1:o;2945:388::-;3013:6;3021;3074:2;3062:9;3053:7;3049:23;3045:32;3042:52;;;3090:1;3087;3080:12;3042:52;3129:9;3116:23;3148:31;3173:5;3148:31;:::i;:::-;3198:5;-1:-1:-1;3255:2:1;3240:18;;3227:32;3268:33;3227:32;3268:33;:::i;:::-;3320:7;3310:17;;;2945:388;;;;;:::o;3338:454::-;3433:6;3441;3449;3457;3465;3518:3;3506:9;3497:7;3493:23;3489:33;3486:53;;;3535:1;3532;3525:12;3486:53;-1:-1:-1;;3558:23:1;;;3628:2;3613:18;;3600:32;;-1:-1:-1;3679:2:1;3664:18;;3651:32;;3730:2;3715:18;;3702:32;;-1:-1:-1;3781:3:1;3766:19;3753:33;;-1:-1:-1;3338:454:1;-1:-1:-1;3338:454:1:o;3797:127::-;3858:10;3853:3;3849:20;3846:1;3839:31;3889:4;3886:1;3879:15;3913:4;3910:1;3903:15;3929:422;4018:1;4061:5;4018:1;4075:270;4096:7;4086:8;4083:21;4075:270;;;4155:4;4151:1;4147:6;4143:17;4137:4;4134:27;4131:53;;;4164:18;;:::i;:::-;4214:7;4204:8;4200:22;4197:55;;;4234:16;;;;4197:55;4313:22;;;;4273:15;;;;4075:270;;;4079:3;3929:422;;;;;:::o;4356:806::-;4405:5;4435:8;4425:80;;-1:-1:-1;4476:1:1;4490:5;;4425:80;4524:4;4514:76;;-1:-1:-1;4561:1:1;4575:5;;4514:76;4606:4;4624:1;4619:59;;;;4692:1;4687:130;;;;4599:218;;4619:59;4649:1;4640:10;;4663:5;;;4687:130;4724:3;4714:8;4711:17;4708:43;;;4731:18;;:::i;:::-;-1:-1:-1;;4787:1:1;4773:16;;4802:5;;4599:218;;4901:2;4891:8;4888:16;4882:3;4876:4;4873:13;4869:36;4863:2;4853:8;4850:16;4845:2;4839:4;4836:12;4832:35;4829:77;4826:159;;;-1:-1:-1;4938:19:1;;;4970:5;;4826:159;5017:34;5042:8;5036:4;5017:34;:::i;:::-;5087:6;5083:1;5079:6;5075:19;5066:7;5063:32;5060:58;;;5098:18;;:::i;:::-;5136:20;;4356:806;-1:-1:-1;;;4356:806:1:o;5167:140::-;5225:5;5254:47;5295:4;5285:8;5281:19;5275:4;5254:47;:::i;5312:168::-;5385:9;;;5416;;5433:15;;;5427:22;;5413:37;5403:71;;5454:18;;:::i;5832:347::-;6034:2;6016:21;;;6073:2;6053:18;;;6046:30;6112:25;6107:2;6092:18;;6085:53;6170:2;6155:18;;5832:347::o;6589:251::-;6659:6;6712:2;6700:9;6691:7;6687:23;6683:32;6680:52;;;6728:1;6725;6718:12;6680:52;6760:9;6754:16;6779:31;6804:5;6779:31;:::i;7766:306::-;7854:6;7862;7870;7923:2;7911:9;7902:7;7898:23;7894:32;7891:52;;;7939:1;7936;7929:12;7891:52;7968:9;7962:16;7952:26;;8018:2;8007:9;8003:18;7997:25;7987:35;;8062:2;8051:9;8047:18;8041:25;8031:35;;7766:306;;;;;:::o;8356:277::-;8423:6;8476:2;8464:9;8455:7;8451:23;8447:32;8444:52;;;8492:1;8489;8482:12;8444:52;8524:9;8518:16;8577:5;8570:13;8563:21;8556:5;8553:32;8543:60;;8599:1;8596;8589:12;10561:125;10626:9;;;10647:10;;;10644:36;;;10660:18;;:::i;11401:217::-;11441:1;11467;11457:132;;11511:10;11506:3;11502:20;11499:1;11492:31;11546:4;11543:1;11536:15;11574:4;11571:1;11564:15;11457:132;-1:-1:-1;11603:9:1;;11401:217::o;11623:128::-;11690:9;;;11711:11;;;11708:37;;;11725:18;;:::i;11756:127::-;11817:10;11812:3;11808:20;11805:1;11798:31;11848:4;11845:1;11838:15;11872:4;11869:1;11862:15;11888:127;11949:10;11944:3;11940:20;11937:1;11930:31;11980:4;11977:1;11970:15;12004:4;12001:1;11994:15;12020:135;12059:3;12080:17;;;12077:43;;12100:18;;:::i;:::-;-1:-1:-1;12147:1:1;12136:13;;12020:135::o;12292:980::-;12554:4;12602:3;12591:9;12587:19;12633:6;12622:9;12615:25;12659:2;12697:6;12692:2;12681:9;12677:18;12670:34;12740:3;12735:2;12724:9;12720:18;12713:31;12764:6;12799;12793:13;12830:6;12822;12815:22;12868:3;12857:9;12853:19;12846:26;;12907:2;12899:6;12895:15;12881:29;;12928:1;12938:195;12952:6;12949:1;12946:13;12938:195;;;13017:13;;-1:-1:-1;;;;;13013:39:1;13001:52;;13108:15;;;;13073:12;;;;13049:1;12967:9;12938:195;;;-1:-1:-1;;;;;;;13189:32:1;;;;13184:2;13169:18;;13162:60;-1:-1:-1;;;13253:3:1;13238:19;13231:35;13150:3;12292:980;-1:-1:-1;;;12292:980:1:o

Swarm Source

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