ETH Price: $3,684.20 (+2.32%)

Token

ERC-20: CATSX (CATSX)
 

Overview

Max Total Supply

315,800,000,000 CATSX

Holders

498

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
12,636.842105 CATSX

Value
$0.00
0x87566e3d46ff1a571e9ca1f7d905f145123e5334
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:
CATSX

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

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

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

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

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

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

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

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

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

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(
        bytes memory returndata,
        string memory errorMessage
    ) private pure {
        if (returndata.length > 0) {
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

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

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

    // solhint-disable-next-line func-name-mixedcase
    function DOMAIN_SEPARATOR() external view returns (bytes32);
}

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

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

    function totalSupply() external view returns (uint256);

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

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

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

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

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

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transfer.selector, to, value)
        );
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
        );
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.approve.selector, spender, value)
        );
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 oldAllowance = token.allowance(address(this), spender);
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                oldAllowance + value
            )
        );
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(
                oldAllowance >= value,
                "SafeERC20: decreased allowance below zero"
            );
            _callOptionalReturn(
                token,
                abi.encodeWithSelector(
                    token.approve.selector,
                    spender,
                    oldAllowance - value
                )
            );
        }
    }

    function forceApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        bytes memory approvalCall = abi.encodeWithSelector(
            token.approve.selector,
            spender,
            value
        );

        if (!_callOptionalReturnBool(token, approvalCall)) {
            _callOptionalReturn(
                token,
                abi.encodeWithSelector(token.approve.selector, spender, 0)
            );
            _callOptionalReturn(token, approvalCall);
        }
    }

    function safePermit(
        IERC20Permit token,
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal {
        uint256 nonceBefore = token.nonces(owner);
        token.permit(owner, spender, value, deadline, v, r, s);
        uint256 nonceAfter = token.nonces(owner);
        require(
            nonceAfter == nonceBefore + 1,
            "SafeERC20: permit did not succeed"
        );
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(
            data,
            "SafeERC20: low-level call failed"
        );
        require(
            returndata.length == 0 || abi.decode(returndata, (bool)),
            "SafeERC20: ERC20 operation did not succeed"
        );
    }

    function _callOptionalReturnBool(
        IERC20 token,
        bytes memory data
    ) private returns (bool) {
        (bool success, bytes memory returndata) = address(token).call(data);
        return
            success &&
            (returndata.length == 0 || abi.decode(returndata, (bool))) &&
            Address.isContract(address(token));
    }
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

            _totalSupply -= amount;
        }

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

contract CATSX is Ownable, ERC20 {
    using SafeERC20 for IERC20;
    mapping (address => bool) public _feeWhiteList;
    mapping(address => bool) public _blackList;
    bool public isLaunch = false;

    constructor() ERC20("CATSX", "CATSX") {
        address onwer = 0x178d5F81b0A2AE7E231f0705C1725e62Cf457E85;
        _transferOwnership(onwer);
        _mint(onwer, 315800000000 * (10 ** 18));

        _feeWhiteList[onwer] = true;
        _feeWhiteList[address(this)] = true;
    }

    receive() external payable {}

    fallback() external payable {}

    function burn(uint256 amount) external {
        super._burn(_msgSender(), amount);
    }

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

        if (!_feeWhiteList[sender] && !_feeWhiteList[recipient]) {
            require(isLaunch, "Swap not open");
        }

        super._transfer(sender, recipient, amount);
    }

    function claimStuckTokens(address token) external onlyOwner {
        if (token == address(0x0)) {
            payable(_msgSender()).transfer(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.safeTransfer(_msgSender(), balance);
    }

    function Launch() public onlyOwner {
        isLaunch = true;
    }

    function setWList(address[] calldata addrs, bool status) external onlyOwner {
        for (uint256 i; i < addrs.length; ++i) {
            _feeWhiteList[addrs[i]] = status;
        }
    }

    function setBList(address[] calldata addrs, bool status) external onlyOwner {
        for (uint256 i; i < addrs.length; ++i) {
            _blackList[addrs[i]] = status;
        }
    }
}

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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"Launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isLaunch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setBList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setWList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526008805460ff191690553480156200001b57600080fd5b506040518060400160405280600581526020016408682a8a6b60db1b8152506040518060400160405280600581526020016408682a8a6b60db1b815250620000726200006c6200010b60201b60201c565b6200010f565b6004620000808382620002d0565b5060056200008f8282620002d0565b5073178d5f81b0a2ae7e231f0705c1725e62cf457e859150620000b49050816200010f565b620000cd816c03fc67a32f8bce3188980000006200015f565b6001600160a01b03166000908152600660205260408082208054600160ff1991821681179092553084529190922080549091169091179055620003c4565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620001ba5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060036000828254620001ce91906200039c565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200025757607f821691505b6020821081036200027857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022757600081815260208120601f850160051c81016020861015620002a75750805b601f850160051c820191505b81811015620002c857828155600101620002b3565b505050505050565b81516001600160401b03811115620002ec57620002ec6200022c565b6200030481620002fd845462000242565b846200027e565b602080601f8311600181146200033c5760008415620003235750858301515b600019600386901b1c1916600185901b178555620002c8565b600085815260208120601f198616915b828110156200036d578886015182559484019460019091019084016200034c565b50858210156200038c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620003be57634e487b7160e01b600052601160045260246000fd5b92915050565b61146580620003d46000396000f3fe60806040526004361061012d5760003560e01c8063715018a6116100a5578063a9059cbb1161006c578063a9059cbb14610365578063d5e9452414610385578063dd62ed3e146103a5578063f2fde38b146103c5578063f5d588f5146103e5578063f9d0831a146103ff57005b8063715018a6146102d357806375674291146102e85780638da5cb5b1461030857806395d89b4114610330578063a457c2d71461034557005b806323b872dd116100f457806323b872dd146101f1578063313ce56714610211578063395093511461022d57806342966c681461024d578063595dec3c1461026d57806370a082311461029d57005b806301986fad1461013657806302ac81681461017b57806306fdde0314610190578063095ea7b3146101b257806318160ddd146101d257005b3661013457005b005b34801561014257600080fd5b5061016661015136600461118c565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561018757600080fd5b5061013461041f565b34801561019c57600080fd5b506101a5610436565b60405161017291906111d2565b3480156101be57600080fd5b506101666101cd366004611205565b6104c8565b3480156101de57600080fd5b506003545b604051908152602001610172565b3480156101fd57600080fd5b5061016661020c36600461122f565b6104e2565b34801561021d57600080fd5b5060405160128152602001610172565b34801561023957600080fd5b50610166610248366004611205565b610506565b34801561025957600080fd5b5061013461026836600461126b565b610528565b34801561027957600080fd5b5061016661028836600461118c565b60076020526000908152604090205460ff1681565b3480156102a957600080fd5b506101e36102b836600461118c565b6001600160a01b031660009081526001602052604090205490565b3480156102df57600080fd5b50610134610535565b3480156102f457600080fd5b50610134610303366004611292565b610549565b34801561031457600080fd5b506000546040516001600160a01b039091168152602001610172565b34801561033c57600080fd5b506101a56105c6565b34801561035157600080fd5b50610166610360366004611205565b6105d5565b34801561037157600080fd5b50610166610380366004611205565b610655565b34801561039157600080fd5b506101346103a0366004611292565b610663565b3480156103b157600080fd5b506101e36103c0366004611318565b6106da565b3480156103d157600080fd5b506101346103e036600461118c565b610705565b3480156103f157600080fd5b506008546101669060ff1681565b34801561040b57600080fd5b5061013461041a36600461118c565b61077b565b610427610849565b6008805460ff19166001179055565b6060600480546104459061134b565b80601f01602080910402602001604051908101604052809291908181526020018280546104719061134b565b80156104be5780601f10610493576101008083540402835291602001916104be565b820191906000526020600020905b8154815290600101906020018083116104a157829003601f168201915b5050505050905090565b6000336104d68185856108a3565b60019150505b92915050565b6000336104f08582856109c7565b6104fb858585610a3b565b506001949350505050565b6000336104d681858561051983836106da565b610523919061139b565b6108a3565b6105323382610b8a565b50565b61053d610849565b6105476000610cbe565b565b610551610849565b60005b828110156105c0578160076000868685818110610573576105736113ae565b9050602002016020810190610588919061118c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556105b9816113c4565b9050610554565b50505050565b6060600580546104459061134b565b600033816105e382866106da565b9050838110156106485760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6104fb82868684036108a3565b6000336104d6818585610a3b565b61066b610849565b60005b828110156105c057816006600086868581811061068d5761068d6113ae565b90506020020160208101906106a2919061118c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556106d3816113c4565b905061066e565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61070d610849565b6001600160a01b0381166107725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161063f565b61053281610cbe565b610783610849565b6001600160a01b0381166107c15760405133904780156108fc02916000818181858888f193505050501580156107bd573d6000803e3d6000fd5b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561080a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082e91906113dd565b90506108446001600160a01b0383163383610d0e565b505050565b6000546001600160a01b031633146105475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161063f565b6001600160a01b0383166109055760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161063f565b6001600160a01b0382166109665760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161063f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006109d384846106da565b905060001981146105c05781811015610a2e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161063f565b6105c084848484036108a3565b60008111610a9d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161063f565b6001600160a01b03831660009081526007602052604090205460ff1615610af65760405162461bcd60e51b815260206004820152600d60248201526c626c61636b206164647265737360981b604482015260640161063f565b6001600160a01b03831660009081526006602052604090205460ff16158015610b3857506001600160a01b03821660009081526006602052604090205460ff16155b15610b7f5760085460ff16610b7f5760405162461bcd60e51b815260206004820152600d60248201526c29bbb0b8103737ba1037b832b760991b604482015260640161063f565b610844838383610d60565b6001600160a01b038216610bea5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161063f565b6001600160a01b03821660009081526001602052604090205481811015610c5e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161063f565b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610844908490610f0b565b6001600160a01b038316610dc45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161063f565b6001600160a01b038216610e265760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161063f565b6001600160a01b03831660009081526001602052604090205481811015610e9e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161063f565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610efe9086815260200190565b60405180910390a36105c0565b6000610f60826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610fe09092919063ffffffff16565b9050805160001480610f81575080806020019051810190610f8191906113f6565b6108445760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161063f565b6060610fef8484600085610ff7565b949350505050565b6060824710156110585760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161063f565b600080866001600160a01b031685876040516110749190611413565b60006040518083038185875af1925050503d80600081146110b1576040519150601f19603f3d011682016040523d82523d6000602084013e6110b6565b606091505b50915091506110c7878383876110d2565b979650505050505050565b6060831561114157825160000361113a576001600160a01b0385163b61113a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161063f565b5081610fef565b610fef83838151156111565781518083602001fd5b8060405162461bcd60e51b815260040161063f91906111d2565b80356001600160a01b038116811461118757600080fd5b919050565b60006020828403121561119e57600080fd5b6111a782611170565b9392505050565b60005b838110156111c95781810151838201526020016111b1565b50506000910152565b60208152600082518060208401526111f18160408501602087016111ae565b601f01601f19169190910160400192915050565b6000806040838503121561121857600080fd5b61122183611170565b946020939093013593505050565b60008060006060848603121561124457600080fd5b61124d84611170565b925061125b60208501611170565b9150604084013590509250925092565b60006020828403121561127d57600080fd5b5035919050565b801515811461053257600080fd5b6000806000604084860312156112a757600080fd5b833567ffffffffffffffff808211156112bf57600080fd5b818601915086601f8301126112d357600080fd5b8135818111156112e257600080fd5b8760208260051b85010111156112f757600080fd5b6020928301955093505084013561130d81611284565b809150509250925092565b6000806040838503121561132b57600080fd5b61133483611170565b915061134260208401611170565b90509250929050565b600181811c9082168061135f57607f821691505b60208210810361137f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104dc576104dc611385565b634e487b7160e01b600052603260045260246000fd5b6000600182016113d6576113d6611385565b5060010190565b6000602082840312156113ef57600080fd5b5051919050565b60006020828403121561140857600080fd5b81516111a781611284565b600082516114258184602087016111ae565b919091019291505056fea2646970667358221220b8080bfa639c11d7a2d6fd4deb2123a83e55de92e56b8852297c7a60d601d7e264736f6c63430008130033

Deployed Bytecode

0x60806040526004361061012d5760003560e01c8063715018a6116100a5578063a9059cbb1161006c578063a9059cbb14610365578063d5e9452414610385578063dd62ed3e146103a5578063f2fde38b146103c5578063f5d588f5146103e5578063f9d0831a146103ff57005b8063715018a6146102d357806375674291146102e85780638da5cb5b1461030857806395d89b4114610330578063a457c2d71461034557005b806323b872dd116100f457806323b872dd146101f1578063313ce56714610211578063395093511461022d57806342966c681461024d578063595dec3c1461026d57806370a082311461029d57005b806301986fad1461013657806302ac81681461017b57806306fdde0314610190578063095ea7b3146101b257806318160ddd146101d257005b3661013457005b005b34801561014257600080fd5b5061016661015136600461118c565b60066020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561018757600080fd5b5061013461041f565b34801561019c57600080fd5b506101a5610436565b60405161017291906111d2565b3480156101be57600080fd5b506101666101cd366004611205565b6104c8565b3480156101de57600080fd5b506003545b604051908152602001610172565b3480156101fd57600080fd5b5061016661020c36600461122f565b6104e2565b34801561021d57600080fd5b5060405160128152602001610172565b34801561023957600080fd5b50610166610248366004611205565b610506565b34801561025957600080fd5b5061013461026836600461126b565b610528565b34801561027957600080fd5b5061016661028836600461118c565b60076020526000908152604090205460ff1681565b3480156102a957600080fd5b506101e36102b836600461118c565b6001600160a01b031660009081526001602052604090205490565b3480156102df57600080fd5b50610134610535565b3480156102f457600080fd5b50610134610303366004611292565b610549565b34801561031457600080fd5b506000546040516001600160a01b039091168152602001610172565b34801561033c57600080fd5b506101a56105c6565b34801561035157600080fd5b50610166610360366004611205565b6105d5565b34801561037157600080fd5b50610166610380366004611205565b610655565b34801561039157600080fd5b506101346103a0366004611292565b610663565b3480156103b157600080fd5b506101e36103c0366004611318565b6106da565b3480156103d157600080fd5b506101346103e036600461118c565b610705565b3480156103f157600080fd5b506008546101669060ff1681565b34801561040b57600080fd5b5061013461041a36600461118c565b61077b565b610427610849565b6008805460ff19166001179055565b6060600480546104459061134b565b80601f01602080910402602001604051908101604052809291908181526020018280546104719061134b565b80156104be5780601f10610493576101008083540402835291602001916104be565b820191906000526020600020905b8154815290600101906020018083116104a157829003601f168201915b5050505050905090565b6000336104d68185856108a3565b60019150505b92915050565b6000336104f08582856109c7565b6104fb858585610a3b565b506001949350505050565b6000336104d681858561051983836106da565b610523919061139b565b6108a3565b6105323382610b8a565b50565b61053d610849565b6105476000610cbe565b565b610551610849565b60005b828110156105c0578160076000868685818110610573576105736113ae565b9050602002016020810190610588919061118c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556105b9816113c4565b9050610554565b50505050565b6060600580546104459061134b565b600033816105e382866106da565b9050838110156106485760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6104fb82868684036108a3565b6000336104d6818585610a3b565b61066b610849565b60005b828110156105c057816006600086868581811061068d5761068d6113ae565b90506020020160208101906106a2919061118c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556106d3816113c4565b905061066e565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61070d610849565b6001600160a01b0381166107725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161063f565b61053281610cbe565b610783610849565b6001600160a01b0381166107c15760405133904780156108fc02916000818181858888f193505050501580156107bd573d6000803e3d6000fd5b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561080a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082e91906113dd565b90506108446001600160a01b0383163383610d0e565b505050565b6000546001600160a01b031633146105475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161063f565b6001600160a01b0383166109055760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161063f565b6001600160a01b0382166109665760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161063f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006109d384846106da565b905060001981146105c05781811015610a2e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161063f565b6105c084848484036108a3565b60008111610a9d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161063f565b6001600160a01b03831660009081526007602052604090205460ff1615610af65760405162461bcd60e51b815260206004820152600d60248201526c626c61636b206164647265737360981b604482015260640161063f565b6001600160a01b03831660009081526006602052604090205460ff16158015610b3857506001600160a01b03821660009081526006602052604090205460ff16155b15610b7f5760085460ff16610b7f5760405162461bcd60e51b815260206004820152600d60248201526c29bbb0b8103737ba1037b832b760991b604482015260640161063f565b610844838383610d60565b6001600160a01b038216610bea5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161063f565b6001600160a01b03821660009081526001602052604090205481811015610c5e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161063f565b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610844908490610f0b565b6001600160a01b038316610dc45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161063f565b6001600160a01b038216610e265760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161063f565b6001600160a01b03831660009081526001602052604090205481811015610e9e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161063f565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610efe9086815260200190565b60405180910390a36105c0565b6000610f60826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610fe09092919063ffffffff16565b9050805160001480610f81575080806020019051810190610f8191906113f6565b6108445760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161063f565b6060610fef8484600085610ff7565b949350505050565b6060824710156110585760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161063f565b600080866001600160a01b031685876040516110749190611413565b60006040518083038185875af1925050503d80600081146110b1576040519150601f19603f3d011682016040523d82523d6000602084013e6110b6565b606091505b50915091506110c7878383876110d2565b979650505050505050565b6060831561114157825160000361113a576001600160a01b0385163b61113a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161063f565b5081610fef565b610fef83838151156111565781518083602001fd5b8060405162461bcd60e51b815260040161063f91906111d2565b80356001600160a01b038116811461118757600080fd5b919050565b60006020828403121561119e57600080fd5b6111a782611170565b9392505050565b60005b838110156111c95781810151838201526020016111b1565b50506000910152565b60208152600082518060208401526111f18160408501602087016111ae565b601f01601f19169190910160400192915050565b6000806040838503121561121857600080fd5b61122183611170565b946020939093013593505050565b60008060006060848603121561124457600080fd5b61124d84611170565b925061125b60208501611170565b9150604084013590509250925092565b60006020828403121561127d57600080fd5b5035919050565b801515811461053257600080fd5b6000806000604084860312156112a757600080fd5b833567ffffffffffffffff808211156112bf57600080fd5b818601915086601f8301126112d357600080fd5b8135818111156112e257600080fd5b8760208260051b85010111156112f757600080fd5b6020928301955093505084013561130d81611284565b809150509250925092565b6000806040838503121561132b57600080fd5b61133483611170565b915061134260208401611170565b90509250929050565b600181811c9082168061135f57607f821691505b60208210810361137f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104dc576104dc611385565b634e487b7160e01b600052603260045260246000fd5b6000600182016113d6576113d6611385565b5060010190565b6000602082840312156113ef57600080fd5b5051919050565b60006020828403121561140857600080fd5b81516111a781611284565b600082516114258184602087016111ae565b919091019291505056fea2646970667358221220b8080bfa639c11d7a2d6fd4deb2123a83e55de92e56b8852297c7a60d601d7e264736f6c63430008130033

Deployed Bytecode Sourcemap

17235:1949:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17308:46;;;;;;;;;;-1:-1:-1;17308:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;548:14:1;;541:22;523:41;;511:2;496:18;17308:46:0;;;;;;;;18715:69;;;;;;;;;;;;;:::i;10863:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11861:226::-;;;;;;;;;;-1:-1:-1;11861:226:0;;;;;:::i;:::-;;:::i;11184:108::-;;;;;;;;;;-1:-1:-1;11272:12:0;;11184:108;;;1636:25:1;;;1624:2;1609:18;11184:108:0;1490:177:1;12095:295:0;;;;;;;;;;-1:-1:-1;12095:295:0;;;;;:::i;:::-;;:::i;11083:93::-;;;;;;;;;;-1:-1:-1;11083:93:0;;11166:2;2147:36:1;;2135:2;2120:18;11083:93:0;2005:184:1;12398:263:0;;;;;;;;;;-1:-1:-1;12398:263:0;;;;;:::i;:::-;;:::i;17817:91::-;;;;;;;;;;-1:-1:-1;17817:91:0;;;;;:::i;:::-;;:::i;17361:42::-;;;;;;;;;;-1:-1:-1;17361:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11300:143;;;;;;;;;;-1:-1:-1;11300:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;11417:18:0;11390:7;11417:18;;;:9;:18;;;;;;;11300:143;16680:103;;;;;;;;;;;;;:::i;18992:189::-;;;;;;;;;;-1:-1:-1;18992:189:0;;;;;:::i;:::-;;:::i;16445:87::-;;;;;;;;;;-1:-1:-1;16491:7:0;16518:6;16445:87;;-1:-1:-1;;;;;16518:6:0;;;3403:51:1;;3391:2;3376:18;16445:87:0;3257:203:1;10971:104:0;;;;;;;;;;;;;:::i;12669:498::-;;;;;;;;;;-1:-1:-1;12669:498:0;;;;;:::i;:::-;;:::i;11451:218::-;;;;;;;;;;-1:-1:-1;11451:218:0;;;;;:::i;:::-;;:::i;18792:192::-;;;;;;;;;;-1:-1:-1;18792:192:0;;;;;:::i;:::-;;:::i;11677:176::-;;;;;;;;;;-1:-1:-1;11677:176:0;;;;;:::i;:::-;;:::i;16791:238::-;;;;;;;;;;-1:-1:-1;16791:238:0;;;;;:::i;:::-;;:::i;17410:28::-;;;;;;;;;;-1:-1:-1;17410:28:0;;;;;;;;18336:371;;;;;;;;;;-1:-1:-1;18336:371:0;;;;;:::i;:::-;;:::i;18715:69::-;16404:13;:11;:13::i;:::-;18761:8:::1;:15:::0;;-1:-1:-1;;18761:15:0::1;18772:4;18761:15;::::0;;18715:69::o;10863:100::-;10917:13;10950:5;10943:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10863:100;:::o;11861:226::-;11969:4;10323:10;12025:32;10323:10;12041:7;12050:6;12025:8;:32::i;:::-;12075:4;12068:11;;;11861:226;;;;;:::o;12095:295::-;12226:4;10323:10;12284:38;12300:4;10323:10;12315:6;12284:15;:38::i;:::-;12333:27;12343:4;12349:2;12353:6;12333:9;:27::i;:::-;-1:-1:-1;12378:4:0;;12095:295;-1:-1:-1;;;;12095:295:0:o;12398:263::-;12511:4;10323:10;12567:64;10323:10;12583:7;12620:10;12592:25;10323:10;12583:7;12592:9;:25::i;:::-;:38;;;;:::i;:::-;12567:8;:64::i;17817:91::-;17867:33;10323:10;17893:6;17867:11;:33::i;:::-;17817:91;:::o;16680:103::-;16404:13;:11;:13::i;:::-;16745:30:::1;16772:1;16745:18;:30::i;:::-;16680:103::o:0;18992:189::-;16404:13;:11;:13::i;:::-;19084:9:::1;19079:95;19095:16:::0;;::::1;19079:95;;;19156:6;19133:10;:20;19144:5;;19150:1;19144:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19133:20:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19133:20:0;:29;;-1:-1:-1;;19133:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19113:3:::1;::::0;::::1;:::i;:::-;;;19079:95;;;;18992:189:::0;;;:::o;10971:104::-;11027:13;11060:7;11053:14;;;;;:::i;12669:498::-;12787:4;10323:10;12787:4;12870:25;10323:10;12887:7;12870:9;:25::i;:::-;12843:52;;12948:15;12928:16;:35;;12906:122;;;;-1:-1:-1;;;12906:122:0;;4851:2:1;12906:122:0;;;4833:21:1;4890:2;4870:18;;;4863:30;4929:34;4909:18;;;4902:62;-1:-1:-1;;;4980:18:1;;;4973:35;5025:19;;12906:122:0;;;;;;;;;13064:60;13073:5;13080:7;13108:15;13089:16;:34;13064:8;:60::i;11451:218::-;11555:4;10323:10;11611:28;10323:10;11628:2;11632:6;11611:9;:28::i;18792:192::-;16404:13;:11;:13::i;:::-;18884:9:::1;18879:98;18895:16:::0;;::::1;18879:98;;;18959:6;18933:13;:23;18947:5;;18953:1;18947:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18933:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18933:23:0;:32;;-1:-1:-1;;18933:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18913:3:::1;::::0;::::1;:::i;:::-;;;18879:98;;11677:176:::0;-1:-1:-1;;;;;11818:18:0;;;11791:7;11818:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11677:176::o;16791:238::-;16404:13;:11;:13::i;:::-;-1:-1:-1;;;;;16894:22:0;::::1;16872:110;;;::::0;-1:-1:-1;;;16872:110:0;;5257:2:1;16872:110:0::1;::::0;::::1;5239:21:1::0;5296:2;5276:18;;;5269:30;5335:34;5315:18;;;5308:62;-1:-1:-1;;;5386:18:1;;;5379:36;5432:19;;16872:110:0::1;5055:402:1::0;16872:110:0::1;16993:28;17012:8;16993:18;:28::i;18336:371::-:0;16404:13;:11;:13::i;:::-;-1:-1:-1;;;;;18411:21:0;::::1;18407:128;;18449:53;::::0;10323:10;;18480:21:::1;18449:53:::0;::::1;;;::::0;::::1;::::0;;;18480:21;10323:10;18449:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17817:91:::0;:::o;18407:128::-:1;18607:35;::::0;-1:-1:-1;;;18607:35:0;;18636:4:::1;18607:35;::::0;::::1;3403:51:1::0;18572:5:0;;18545:17:::1;::::0;-1:-1:-1;;;;;18607:20:0;::::1;::::0;::::1;::::0;3376:18:1;;18607:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18589:53:::0;-1:-1:-1;18653:46:0::1;-1:-1:-1::0;;;;;18653:23:0;::::1;10323:10:::0;18589:53;18653:23:::1;:46::i;:::-;18396:311;;18336:371:::0;:::o;16540:132::-;16491:7;16518:6;-1:-1:-1;;;;;16518:6:0;10323:10;16604:23;16596:68;;;;-1:-1:-1;;;16596:68:0;;5853:2:1;16596:68:0;;;5835:21:1;;;5872:18;;;5865:30;5931:34;5911:18;;;5904:62;5983:18;;16596:68:0;5651:356:1;14945:380:0;-1:-1:-1;;;;;15081:19:0;;15073:68;;;;-1:-1:-1;;;15073:68:0;;6214:2:1;15073:68:0;;;6196:21:1;6253:2;6233:18;;;6226:30;6292:34;6272:18;;;6265:62;-1:-1:-1;;;6343:18:1;;;6336:34;6387:19;;15073:68:0;6012:400:1;15073:68:0;-1:-1:-1;;;;;15160:21:0;;15152:68;;;;-1:-1:-1;;;15152:68:0;;6619:2:1;15152:68:0;;;6601:21:1;6658:2;6638:18;;;6631:30;6697:34;6677:18;;;6670:62;-1:-1:-1;;;6748:18:1;;;6741:32;6790:19;;15152:68:0;6417:398:1;15152:68:0;-1:-1:-1;;;;;15233:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15285:32;;1636:25:1;;;15285:32:0;;1609:18:1;15285:32:0;;;;;;;14945:380;;;:::o;15333:502::-;15468:24;15495:25;15505:5;15512:7;15495:9;:25::i;:::-;15468:52;;-1:-1:-1;;15535:16:0;:37;15531:297;;15635:6;15615:16;:26;;15589:117;;;;-1:-1:-1;;;15589:117:0;;7022:2:1;15589:117:0;;;7004:21:1;7061:2;7041:18;;;7034:30;7100:31;7080:18;;;7073:59;7149:18;;15589:117:0;6820:353:1;15589:117:0;15750:51;15759:5;15766:7;15794:6;15775:16;:25;15750:8;:51::i;17916:412::-;18032:1;18023:6;:10;18015:64;;;;-1:-1:-1;;;18015:64:0;;7380:2:1;18015:64:0;;;7362:21:1;7419:2;7399:18;;;7392:30;7458:34;7438:18;;;7431:62;-1:-1:-1;;;7509:18:1;;;7502:39;7558:19;;18015:64:0;7178:405:1;18015:64:0;-1:-1:-1;;;;;18099:18:0;;;;;;:10;:18;;;;;;;;18098:19;18090:45;;;;-1:-1:-1;;;18090:45:0;;7790:2:1;18090:45:0;;;7772:21:1;7829:2;7809:18;;;7802:30;-1:-1:-1;;;7848:18:1;;;7841:43;7901:18;;18090:45:0;7588:337:1;18090:45:0;-1:-1:-1;;;;;18153:21:0;;;;;;:13;:21;;;;;;;;18152:22;:51;;;;-1:-1:-1;;;;;;18179:24:0;;;;;;:13;:24;;;;;;;;18178:25;18152:51;18148:118;;;18228:8;;;;18220:34;;;;-1:-1:-1;;;18220:34:0;;8132:2:1;18220:34:0;;;8114:21:1;8171:2;8151:18;;;8144:30;-1:-1:-1;;;8190:18:1;;;8183:43;8243:18;;18220:34:0;7930:337:1;18220:34:0;18278:42;18294:6;18302:9;18313:6;18278:15;:42::i;14340:597::-;-1:-1:-1;;;;;14424:21:0;;14416:67;;;;-1:-1:-1;;;14416:67:0;;8474:2:1;14416:67:0;;;8456:21:1;8513:2;8493:18;;;8486:30;8552:34;8532:18;;;8525:62;-1:-1:-1;;;8603:18:1;;;8596:31;8644:19;;14416:67:0;8272:397:1;14416:67:0;-1:-1:-1;;;;;14583:18:0;;14558:22;14583:18;;;:9;:18;;;;;;14620:24;;;;14612:71;;;;-1:-1:-1;;;14612:71:0;;8876:2:1;14612:71:0;;;8858:21:1;8915:2;8895:18;;;8888:30;8954:34;8934:18;;;8927:62;-1:-1:-1;;;9005:18:1;;;8998:32;9047:19;;14612:71:0;8674:398:1;14612:71:0;-1:-1:-1;;;;;14719:18:0;;;;;;:9;:18;;;;;;;;14740:23;;;14719:44;;14780:12;:22;;;;;;;14831:37;1636:25:1;;;14719:18:0;;;14831:37;;1609:18:1;14831:37:0;;;;;;;18396:311:::1;;18336:371:::0;:::o;17037:191::-;17111:16;17130:6;;-1:-1:-1;;;;;17147:17:0;;;-1:-1:-1;;;;;;17147:17:0;;;;;;17180:40;;17130:6;;;;;;;17180:40;;17111:16;17180:40;17100:128;17037:191;:::o;6118:214::-;6255:58;;;-1:-1:-1;;;;;9269:32:1;;6255:58:0;;;9251:51:1;9318:18;;;;9311:34;;;6255:58:0;;;;;;;;;;9224:18:1;;;;6255:58:0;;;;;;;;-1:-1:-1;;;;;6255:58:0;-1:-1:-1;;;6255:58:0;;;6201:123;;6235:5;;6201:19;:123::i;13175:714::-;-1:-1:-1;;;;;13306:18:0;;13298:68;;;;-1:-1:-1;;;13298:68:0;;9558:2:1;13298:68:0;;;9540:21:1;9597:2;9577:18;;;9570:30;9636:34;9616:18;;;9609:62;-1:-1:-1;;;9687:18:1;;;9680:35;9732:19;;13298:68:0;9356:401:1;13298:68:0;-1:-1:-1;;;;;13385:16:0;;13377:64;;;;-1:-1:-1;;;13377:64:0;;9964:2:1;13377:64:0;;;9946:21:1;10003:2;9983:18;;;9976:30;10042:34;10022:18;;;10015:62;-1:-1:-1;;;10093:18:1;;;10086:33;10136:19;;13377:64:0;9762:399:1;13377:64:0;-1:-1:-1;;;;;13527:15:0;;13505:19;13527:15;;;:9;:15;;;;;;13575:21;;;;13553:109;;;;-1:-1:-1;;;13553:109:0;;10368:2:1;13553:109:0;;;10350:21:1;10407:2;10387:18;;;10380:30;10446:34;10426:18;;;10419:62;-1:-1:-1;;;10497:18:1;;;10490:36;10543:19;;13553:109:0;10166:402:1;13553:109:0;-1:-1:-1;;;;;13698:15:0;;;;;;;:9;:15;;;;;;13716:20;;;13698:38;;13753:13;;;;;;;;;;:23;;;;;;13805:26;;;;;;13730:6;1636:25:1;;1624:2;1609:18;;1490:177;13805:26:0;;;;;;;;13844:37;18336:371;9226:380;9307:23;9333:106;9375:4;9333:106;;;;;;;;;;;;;;;;;9341:5;-1:-1:-1;;;;;9333:27:0;;;:106;;;;;:::i;:::-;9307:132;;9472:10;:17;9493:1;9472:22;:56;;;;9509:10;9498:30;;;;;;;;;;;;:::i;:::-;9450:148;;;;-1:-1:-1;;;9450:148:0;;11025:2:1;9450:148:0;;;11007:21:1;11064:2;11044:18;;;11037:30;11103:34;11083:18;;;11076:62;-1:-1:-1;;;11154:18:1;;;11147:40;11204:19;;9450:148:0;10823:406:1;923:229:0;1060:12;1092:52;1114:6;1122:4;1128:1;1131:12;1092:21;:52::i;:::-;1085:59;923:229;-1:-1:-1;;;;923:229:0:o;1524:612::-;1694:12;1766:5;1741:21;:30;;1719:118;;;;-1:-1:-1;;;1719:118:0;;11436:2:1;1719:118:0;;;11418:21:1;11475:2;11455:18;;;11448:30;11514:34;11494:18;;;11487:62;-1:-1:-1;;;11565:18:1;;;11558:36;11611:19;;1719:118:0;11234:402:1;1719:118:0;1849:12;1863:23;1890:6;-1:-1:-1;;;;;1890:11:0;1909:5;1930:4;1890:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1848:97;;;;1976:152;2021:6;2046:7;2072:10;2101:12;1976:26;:152::i;:::-;1956:172;1524:612;-1:-1:-1;;;;;;;1524:612:0:o;3640:477::-;3825:12;3854:7;3850:260;;;3882:10;:17;3903:1;3882:22;3878:123;;-1:-1:-1;;;;;169:19:0;;;3925:60;;;;-1:-1:-1;;;3925:60:0;;12135:2:1;3925:60:0;;;12117:21:1;12174:2;12154:18;;;12147:30;12213:31;12193:18;;;12186:59;12262:18;;3925:60:0;11933:353:1;3925:60:0;-1:-1:-1;4022:10:0;4015:17;;3850:260;4065:33;4073:10;4085:12;4561:17;;:21;4557:299;;4704:10;4698:17;4761:15;4748:10;4744:2;4740:19;4733:44;4557:299;4831:12;4824:20;;-1:-1:-1;;;4824:20:0;;;;;;;;:::i;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;575:250::-;660:1;670:113;684:6;681:1;678:13;670:113;;;760:11;;;754:18;741:11;;;734:39;706:2;699:10;670:113;;;-1:-1:-1;;817:1:1;799:16;;792:27;575:250::o;830:396::-;979:2;968:9;961:21;942:4;1011:6;1005:13;1054:6;1049:2;1038:9;1034:18;1027:34;1070:79;1142:6;1137:2;1126:9;1122:18;1117:2;1109:6;1105:15;1070:79;:::i;:::-;1210:2;1189:15;-1:-1:-1;;1185:29:1;1170:45;;;;1217:2;1166:54;;830:396;-1:-1:-1;;830:396:1:o;1231:254::-;1299:6;1307;1360:2;1348:9;1339:7;1335:23;1331:32;1328:52;;;1376:1;1373;1366:12;1328:52;1399:29;1418:9;1399:29;:::i;:::-;1389:39;1475:2;1460:18;;;;1447:32;;-1:-1:-1;;;1231:254:1:o;1672:328::-;1749:6;1757;1765;1818:2;1806:9;1797:7;1793:23;1789:32;1786:52;;;1834:1;1831;1824:12;1786:52;1857:29;1876:9;1857:29;:::i;:::-;1847:39;;1905:38;1939:2;1928:9;1924:18;1905:38;:::i;:::-;1895:48;;1990:2;1979:9;1975:18;1962:32;1952:42;;1672:328;;;;;:::o;2194:180::-;2253:6;2306:2;2294:9;2285:7;2281:23;2277:32;2274:52;;;2322:1;2319;2312:12;2274:52;-1:-1:-1;2345:23:1;;2194:180;-1:-1:-1;2194:180:1:o;2379:118::-;2465:5;2458:13;2451:21;2444:5;2441:32;2431:60;;2487:1;2484;2477:12;2502:750;2594:6;2602;2610;2663:2;2651:9;2642:7;2638:23;2634:32;2631:52;;;2679:1;2676;2669:12;2631:52;2719:9;2706:23;2748:18;2789:2;2781:6;2778:14;2775:34;;;2805:1;2802;2795:12;2775:34;2843:6;2832:9;2828:22;2818:32;;2888:7;2881:4;2877:2;2873:13;2869:27;2859:55;;2910:1;2907;2900:12;2859:55;2950:2;2937:16;2976:2;2968:6;2965:14;2962:34;;;2992:1;2989;2982:12;2962:34;3047:7;3040:4;3030:6;3027:1;3023:14;3019:2;3015:23;3011:34;3008:47;3005:67;;;3068:1;3065;3058:12;3005:67;3099:4;3091:13;;;;-1:-1:-1;3123:6:1;-1:-1:-1;;3164:20:1;;3151:34;3194:28;3151:34;3194:28;:::i;:::-;3241:5;3231:15;;;2502:750;;;;;:::o;3465:260::-;3533:6;3541;3594:2;3582:9;3573:7;3569:23;3565:32;3562:52;;;3610:1;3607;3600:12;3562:52;3633:29;3652:9;3633:29;:::i;:::-;3623:39;;3681:38;3715:2;3704:9;3700:18;3681:38;:::i;:::-;3671:48;;3465:260;;;;;:::o;3730:380::-;3809:1;3805:12;;;;3852;;;3873:61;;3927:4;3919:6;3915:17;3905:27;;3873:61;3980:2;3972:6;3969:14;3949:18;3946:38;3943:161;;4026:10;4021:3;4017:20;4014:1;4007:31;4061:4;4058:1;4051:15;4089:4;4086:1;4079:15;3943:161;;3730:380;;;:::o;4115:127::-;4176:10;4171:3;4167:20;4164:1;4157:31;4207:4;4204:1;4197:15;4231:4;4228:1;4221:15;4247:125;4312:9;;;4333:10;;;4330:36;;;4346:18;;:::i;4377:127::-;4438:10;4433:3;4429:20;4426:1;4419:31;4469:4;4466:1;4459:15;4493:4;4490:1;4483:15;4509:135;4548:3;4569:17;;;4566:43;;4589:18;;:::i;:::-;-1:-1:-1;4636:1:1;4625:13;;4509:135::o;5462:184::-;5532:6;5585:2;5573:9;5564:7;5560:23;5556:32;5553:52;;;5601:1;5598;5591:12;5553:52;-1:-1:-1;5624:16:1;;5462:184;-1:-1:-1;5462:184:1:o;10573:245::-;10640:6;10693:2;10681:9;10672:7;10668:23;10664:32;10661:52;;;10709:1;10706;10699:12;10661:52;10741:9;10735:16;10760:28;10782:5;10760:28;:::i;11641:287::-;11770:3;11808:6;11802:13;11824:66;11883:6;11878:3;11871:4;11863:6;11859:17;11824:66;:::i;:::-;11906:16;;;;;11641:287;-1:-1:-1;;11641:287:1:o

Swarm Source

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