ETH Price: $2,400.95 (-0.87%)

Token

Wiggly Willy (WIWI)
 

Overview

Max Total Supply

690,000,000,000 WIWI

Holders

291

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
172,611,056.102482739269851356 WIWI

Value
$0.00
0x8aBDb98fe692Dbc9ad34c66931Db6C320a9c3F2C
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:
WIWI

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 2024-08-24
*/

// 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 _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 WIWI is Ownable, ERC20 {
    using SafeERC20 for IERC20;
    mapping(address => bool) public whiteList;
    bool public isLaunch = false;
    bool public isLP = false;

    constructor() ERC20("Wiggly Willy", "WIWI") {
        address ownerAddress = 0x346ecD235F58208982e79F7B1F0EcAffaCe316af;
        _transferOwnership(ownerAddress);
        _mint(ownerAddress, 690000000000 * (10**18));

        whiteList[ownerAddress] = true;
        whiteList[address(this)] = true;
    }

    receive() external payable {}

    fallback() external payable {}

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

        if (!isLP) {
            if (!(whiteList[sender] || whiteList[recipient]) && !isLaunch) {
                revert("Swap not open");
            }
        } else {
            if (!(whiteList[sender] && whiteList[recipient]) && !isLaunch) {
                revert("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 setLaunched() public onlyOwner {
        isLaunch = true;
    }

    function setLP() public onlyOwner {
        isLP = true;
    }

    function setwhiteList(address[] calldata addresses, bool status)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < addresses.length; i++) {
            whiteList[addresses[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":[{"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":"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":"isLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLaunched","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setwhiteList","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526007805461ffff191690553480156200001c57600080fd5b506040518060400160405280600c81526020016b576967676c792057696c6c7960a01b815250604051806040016040528060048152602001635749574960e01b81525062000079620000736200011260201b60201c565b62000116565b6004620000878382620002d7565b506005620000968282620002d7565b5073346ecd235f58208982e79f7b1f0ecafface316af9150620000bb90508162000116565b620000d4816c08b5829f66bff9a4295000000062000166565b6001600160a01b03166000908152600660205260408082208054600160ff1991821681179092553084529190922080549091169091179055620003cb565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620001c15760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060036000828254620001d59190620003a3565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200025e57607f821691505b6020821081036200027f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022e57600081815260208120601f850160051c81016020861015620002ae5750805b601f850160051c820191505b81811015620002cf57828155600101620002ba565b505050505050565b81516001600160401b03811115620002f357620002f362000233565b6200030b8162000304845462000249565b8462000285565b602080601f8311600181146200034357600084156200032a5750858301515b600019600386901b1c1916600185901b178555620002cf565b600085815260208120601f198616915b82811015620003745788860151825594840194600190910190840162000353565b5085821015620003935787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620003c557634e487b7160e01b600052601160045260246000fd5b92915050565b6112ba80620003db6000396000f3fe6080604052600436106101225760003560e01c806370a08231116100a5578063a457c2d71161006c578063a457c2d714610322578063a9059cbb14610342578063dd62ed3e14610362578063f2fde38b14610382578063f5d588f5146103a2578063f9d0831a146103bc57005b806370a0823114610285578063715018a6146102bb5780638da5cb5b146102d05780639507b19b146102f857806395d89b411461030d57005b806323b872dd116100e957806323b872dd146101e45780632f44688d14610204578063313ce56714610219578063372c12b114610235578063395093511461026557005b806302f6b5801461012b57806306fdde031461014b578063095ea7b31461017657806318160ddd146101a65780631a88447b146101c557005b3661012957005b005b34801561013757600080fd5b50610129610146366004610fec565b6103dc565b34801561015757600080fd5b5061016061045b565b60405161016d9190611096565b60405180910390f35b34801561018257600080fd5b506101966101913660046110e5565b6104ed565b604051901515815260200161016d565b3480156101b257600080fd5b506003545b60405190815260200161016d565b3480156101d157600080fd5b5060075461019690610100900460ff1681565b3480156101f057600080fd5b506101966101ff36600461110f565b610507565b34801561021057600080fd5b5061012961052b565b34801561022557600080fd5b506040516012815260200161016d565b34801561024157600080fd5b5061019661025036600461114b565b60066020526000908152604090205460ff1681565b34801561027157600080fd5b506101966102803660046110e5565b610544565b34801561029157600080fd5b506101b76102a036600461114b565b6001600160a01b031660009081526001602052604090205490565b3480156102c757600080fd5b50610129610566565b3480156102dc57600080fd5b506000546040516001600160a01b03909116815260200161016d565b34801561030457600080fd5b5061012961057a565b34801561031957600080fd5b50610160610591565b34801561032e57600080fd5b5061019661033d3660046110e5565b6105a0565b34801561034e57600080fd5b5061019661035d3660046110e5565b610620565b34801561036e57600080fd5b506101b761037d36600461116d565b61062e565b34801561038e57600080fd5b5061012961039d36600461114b565b610659565b3480156103ae57600080fd5b506007546101969060ff1681565b3480156103c857600080fd5b506101296103d736600461114b565b6106d2565b6103e46107a0565b60005b82811015610455578160066000868685818110610406576104066111a0565b905060200201602081019061041b919061114b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061044d816111cc565b9150506103e7565b50505050565b60606004805461046a906111e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610496906111e5565b80156104e35780601f106104b8576101008083540402835291602001916104e3565b820191906000526020600020905b8154815290600101906020018083116104c657829003601f168201915b5050505050905090565b6000336104fb8185856107fa565b60019150505b92915050565b60003361051585828561091e565b610520858585610992565b506001949350505050565b6105336107a0565b6007805461ff001916610100179055565b6000336104fb818585610557838361062e565b610561919061121f565b6107fa565b61056e6107a0565b6105786000610b2c565b565b6105826107a0565b6007805460ff19166001179055565b60606005805461046a906111e5565b600033816105ae828661062e565b9050838110156106135760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61052082868684036107fa565b6000336104fb818585610992565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6106616107a0565b6001600160a01b0381166106c65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060a565b6106cf81610b2c565b50565b6106da6107a0565b6001600160a01b0381166107185760405133904780156108fc02916000818181858888f19350505050158015610714573d6000803e3d6000fd5b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107859190611232565b905061079b6001600160a01b0383163383610b7c565b505050565b6000546001600160a01b031633146105785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060a565b6001600160a01b03831661085c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060a565b6001600160a01b0382166108bd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060a565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061092a848461062e565b9050600019811461045557818110156109855760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060a565b61045584848484036107fa565b600081116109f45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161060a565b600754610100900460ff16610a94576001600160a01b03831660009081526006602052604090205460ff1680610a4257506001600160a01b03821660009081526006602052604090205460ff165b158015610a52575060075460ff16155b15610a8f5760405162461bcd60e51b815260206004820152600d60248201526c29bbb0b8103737ba1037b832b760991b604482015260640161060a565b610b21565b6001600160a01b03831660009081526006602052604090205460ff168015610ad457506001600160a01b03821660009081526006602052604090205460ff165b158015610ae4575060075460ff16155b15610b215760405162461bcd60e51b815260206004820152600d60248201526c29bbb0b8103737ba1037b832b760991b604482015260640161060a565b61079b838383610bce565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261079b908490610d79565b6001600160a01b038316610c325760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060a565b6001600160a01b038216610c945760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060a565b6001600160a01b03831660009081526001602052604090205481811015610d0c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060a565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d6c9086815260200190565b60405180910390a3610455565b6000610dce826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610e4e9092919063ffffffff16565b9050805160001480610def575080806020019051810190610def919061124b565b61079b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161060a565b6060610e5d8484600085610e65565b949350505050565b606082471015610ec65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161060a565b600080866001600160a01b03168587604051610ee29190611268565b60006040518083038185875af1925050503d8060008114610f1f576040519150601f19603f3d011682016040523d82523d6000602084013e610f24565b606091505b5091509150610f3587838387610f40565b979650505050505050565b60608315610faf578251600003610fa8576001600160a01b0385163b610fa85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161060a565b5081610e5d565b610e5d8383815115610fc45781518083602001fd5b8060405162461bcd60e51b815260040161060a9190611096565b80151581146106cf57600080fd5b60008060006040848603121561100157600080fd5b833567ffffffffffffffff8082111561101957600080fd5b818601915086601f83011261102d57600080fd5b81358181111561103c57600080fd5b8760208260051b850101111561105157600080fd5b6020928301955093505084013561106781610fde565b809150509250925092565b60005b8381101561108d578181015183820152602001611075565b50506000910152565b60208152600082518060208401526110b5816040850160208701611072565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146110e057600080fd5b919050565b600080604083850312156110f857600080fd5b611101836110c9565b946020939093013593505050565b60008060006060848603121561112457600080fd5b61112d846110c9565b925061113b602085016110c9565b9150604084013590509250925092565b60006020828403121561115d57600080fd5b611166826110c9565b9392505050565b6000806040838503121561118057600080fd5b611189836110c9565b9150611197602084016110c9565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016111de576111de6111b6565b5060010190565b600181811c908216806111f957607f821691505b60208210810361121957634e487b7160e01b600052602260045260246000fd5b50919050565b80820180821115610501576105016111b6565b60006020828403121561124457600080fd5b5051919050565b60006020828403121561125d57600080fd5b815161116681610fde565b6000825161127a818460208701611072565b919091019291505056fea26469706673582212203e55de783ce9c824454adccb62cb32871c0820ac57f0323bb9c0a085927cf0c064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101225760003560e01c806370a08231116100a5578063a457c2d71161006c578063a457c2d714610322578063a9059cbb14610342578063dd62ed3e14610362578063f2fde38b14610382578063f5d588f5146103a2578063f9d0831a146103bc57005b806370a0823114610285578063715018a6146102bb5780638da5cb5b146102d05780639507b19b146102f857806395d89b411461030d57005b806323b872dd116100e957806323b872dd146101e45780632f44688d14610204578063313ce56714610219578063372c12b114610235578063395093511461026557005b806302f6b5801461012b57806306fdde031461014b578063095ea7b31461017657806318160ddd146101a65780631a88447b146101c557005b3661012957005b005b34801561013757600080fd5b50610129610146366004610fec565b6103dc565b34801561015757600080fd5b5061016061045b565b60405161016d9190611096565b60405180910390f35b34801561018257600080fd5b506101966101913660046110e5565b6104ed565b604051901515815260200161016d565b3480156101b257600080fd5b506003545b60405190815260200161016d565b3480156101d157600080fd5b5060075461019690610100900460ff1681565b3480156101f057600080fd5b506101966101ff36600461110f565b610507565b34801561021057600080fd5b5061012961052b565b34801561022557600080fd5b506040516012815260200161016d565b34801561024157600080fd5b5061019661025036600461114b565b60066020526000908152604090205460ff1681565b34801561027157600080fd5b506101966102803660046110e5565b610544565b34801561029157600080fd5b506101b76102a036600461114b565b6001600160a01b031660009081526001602052604090205490565b3480156102c757600080fd5b50610129610566565b3480156102dc57600080fd5b506000546040516001600160a01b03909116815260200161016d565b34801561030457600080fd5b5061012961057a565b34801561031957600080fd5b50610160610591565b34801561032e57600080fd5b5061019661033d3660046110e5565b6105a0565b34801561034e57600080fd5b5061019661035d3660046110e5565b610620565b34801561036e57600080fd5b506101b761037d36600461116d565b61062e565b34801561038e57600080fd5b5061012961039d36600461114b565b610659565b3480156103ae57600080fd5b506007546101969060ff1681565b3480156103c857600080fd5b506101296103d736600461114b565b6106d2565b6103e46107a0565b60005b82811015610455578160066000868685818110610406576104066111a0565b905060200201602081019061041b919061114b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061044d816111cc565b9150506103e7565b50505050565b60606004805461046a906111e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610496906111e5565b80156104e35780601f106104b8576101008083540402835291602001916104e3565b820191906000526020600020905b8154815290600101906020018083116104c657829003601f168201915b5050505050905090565b6000336104fb8185856107fa565b60019150505b92915050565b60003361051585828561091e565b610520858585610992565b506001949350505050565b6105336107a0565b6007805461ff001916610100179055565b6000336104fb818585610557838361062e565b610561919061121f565b6107fa565b61056e6107a0565b6105786000610b2c565b565b6105826107a0565b6007805460ff19166001179055565b60606005805461046a906111e5565b600033816105ae828661062e565b9050838110156106135760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61052082868684036107fa565b6000336104fb818585610992565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6106616107a0565b6001600160a01b0381166106c65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060a565b6106cf81610b2c565b50565b6106da6107a0565b6001600160a01b0381166107185760405133904780156108fc02916000818181858888f19350505050158015610714573d6000803e3d6000fd5b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107859190611232565b905061079b6001600160a01b0383163383610b7c565b505050565b6000546001600160a01b031633146105785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060a565b6001600160a01b03831661085c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060a565b6001600160a01b0382166108bd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060a565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061092a848461062e565b9050600019811461045557818110156109855760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060a565b61045584848484036107fa565b600081116109f45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161060a565b600754610100900460ff16610a94576001600160a01b03831660009081526006602052604090205460ff1680610a4257506001600160a01b03821660009081526006602052604090205460ff165b158015610a52575060075460ff16155b15610a8f5760405162461bcd60e51b815260206004820152600d60248201526c29bbb0b8103737ba1037b832b760991b604482015260640161060a565b610b21565b6001600160a01b03831660009081526006602052604090205460ff168015610ad457506001600160a01b03821660009081526006602052604090205460ff165b158015610ae4575060075460ff16155b15610b215760405162461bcd60e51b815260206004820152600d60248201526c29bbb0b8103737ba1037b832b760991b604482015260640161060a565b61079b838383610bce565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261079b908490610d79565b6001600160a01b038316610c325760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060a565b6001600160a01b038216610c945760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060a565b6001600160a01b03831660009081526001602052604090205481811015610d0c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060a565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d6c9086815260200190565b60405180910390a3610455565b6000610dce826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610e4e9092919063ffffffff16565b9050805160001480610def575080806020019051810190610def919061124b565b61079b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161060a565b6060610e5d8484600085610e65565b949350505050565b606082471015610ec65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161060a565b600080866001600160a01b03168587604051610ee29190611268565b60006040518083038185875af1925050503d8060008114610f1f576040519150601f19603f3d011682016040523d82523d6000602084013e610f24565b606091505b5091509150610f3587838387610f40565b979650505050505050565b60608315610faf578251600003610fa8576001600160a01b0385163b610fa85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161060a565b5081610e5d565b610e5d8383815115610fc45781518083602001fd5b8060405162461bcd60e51b815260040161060a9190611096565b80151581146106cf57600080fd5b60008060006040848603121561100157600080fd5b833567ffffffffffffffff8082111561101957600080fd5b818601915086601f83011261102d57600080fd5b81358181111561103c57600080fd5b8760208260051b850101111561105157600080fd5b6020928301955093505084013561106781610fde565b809150509250925092565b60005b8381101561108d578181015183820152602001611075565b50506000910152565b60208152600082518060208401526110b5816040850160208701611072565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146110e057600080fd5b919050565b600080604083850312156110f857600080fd5b611101836110c9565b946020939093013593505050565b60008060006060848603121561112457600080fd5b61112d846110c9565b925061113b602085016110c9565b9150604084013590509250925092565b60006020828403121561115d57600080fd5b611166826110c9565b9392505050565b6000806040838503121561118057600080fd5b611189836110c9565b9150611197602084016110c9565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016111de576111de6111b6565b5060010190565b600181811c908216806111f957607f821691505b60208210810361121957634e487b7160e01b600052602260045260246000fd5b50919050565b80820180821115610501576105016111b6565b60006020828403121561124457600080fd5b5051919050565b60006020828403121561125d57600080fd5b815161116681610fde565b6000825161127a818460208701611072565b919091019291505056fea26469706673582212203e55de783ce9c824454adccb62cb32871c0820ac57f0323bb9c0a085927cf0c064736f6c63430008130033

Deployed Bytecode Sourcemap

16770:1940:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18476:231;;;;;;;;;;-1:-1:-1;18476:231:0;;;;;:::i;:::-;;:::i;10898:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11971:242;;;;;;;;;;-1:-1:-1;11971:242:0;;;;;:::i;:::-;;:::i;:::-;;;2150:14:1;;2143:22;2125:41;;2113:2;2098:18;11971:242:0;1985:187:1;11219:108:0;;;;;;;;;;-1:-1:-1;11307:12:0;;11219:108;;;2323:25:1;;;2311:2;2296:18;11219:108:0;2177:177:1;16925:24:0;;;;;;;;;;-1:-1:-1;16925:24:0;;;;;;;;;;;12221:295;;;;;;;;;;-1:-1:-1;12221:295:0;;;;;:::i;:::-;;:::i;18404:64::-;;;;;;;;;;;;;:::i;11118:93::-;;;;;;;;;;-1:-1:-1;11118:93:0;;11201:2;2834:36:1;;2822:2;2807:18;11118:93:0;2692:184:1;16842:41:0;;;;;;;;;;-1:-1:-1;16842:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12524:270;;;;;;;;;;-1:-1:-1;12524:270:0;;;;;:::i;:::-;;:::i;11335:177::-;;;;;;;;;;-1:-1:-1;11335:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;11486:18:0;11454:7;11486:18;;;:9;:18;;;;;;;11335:177;16215:103;;;;;;;;;;;;;:::i;15980:87::-;;;;;;;;;;-1:-1:-1;16026:7:0;16053:6;15980:87;;-1:-1:-1;;;;;16053:6:0;;;3218:51:1;;3206:2;3191:18;15980:87:0;3072:203:1;18322:74:0;;;;;;;;;;;;;:::i;11006:104::-;;;;;;;;;;;;;:::i;12802:505::-;;;;;;;;;;-1:-1:-1;12802:505:0;;;;;:::i;:::-;;:::i;11520:234::-;;;;;;;;;;-1:-1:-1;11520:234:0;;;;;:::i;:::-;;:::i;11762:201::-;;;;;;;;;;-1:-1:-1;11762:201:0;;;;;:::i;:::-;;:::i;16326:238::-;;;;;;;;;;-1:-1:-1;16326:238:0;;;;;:::i;:::-;;:::i;16890:28::-;;;;;;;;;;-1:-1:-1;16890:28:0;;;;;;;;17943:371;;;;;;;;;;-1:-1:-1;17943:371:0;;;;;:::i;:::-;;:::i;18476:231::-;15939:13;:11;:13::i;:::-;18599:9:::1;18594:106;18614:20:::0;;::::1;18594:106;;;18682:6;18656:9;:23;18666:9;;18676:1;18666:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18656:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18656:23:0;:32;;-1:-1:-1;;18656:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18636:3;::::1;::::0;::::1;:::i;:::-;;;;18594:106;;;;18476:231:::0;;;:::o;10898:100::-;10952:13;10985:5;10978:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10898:100;:::o;11971:242::-;12090:4;10358:10;12151:32;10358:10;12167:7;12176:6;12151:8;:32::i;:::-;12201:4;12194:11;;;11971:242;;;;;:::o;12221:295::-;12352:4;10358:10;12410:38;12426:4;10358:10;12441:6;12410:15;:38::i;:::-;12459:27;12469:4;12475:2;12479:6;12459:9;:27::i;:::-;-1:-1:-1;12504:4:0;;12221:295;-1:-1:-1;;;;12221:295:0:o;18404:64::-;15939:13;:11;:13::i;:::-;18449:4:::1;:11:::0;;-1:-1:-1;;18449:11:0::1;;;::::0;;18404:64::o;12524:270::-;12639:4;10358:10;12700:64;10358:10;12716:7;12753:10;12725:25;10358:10;12716:7;12725:9;:25::i;:::-;:38;;;;:::i;:::-;12700:8;:64::i;16215:103::-;15939:13;:11;:13::i;:::-;16280:30:::1;16307:1;16280:18;:30::i;:::-;16215:103::o:0;18322:74::-;15939:13;:11;:13::i;:::-;18373:8:::1;:15:::0;;-1:-1:-1;;18373:15:0::1;18384:4;18373:15;::::0;;18322:74::o;11006:104::-;11062:13;11095:7;11088:14;;;;;:::i;12802:505::-;12922:4;10358:10;12922:4;13010:25;10358:10;13027:7;13010:9;:25::i;:::-;12983:52;;13088:15;13068:16;:35;;13046:122;;;;-1:-1:-1;;;13046:122:0;;4666:2:1;13046:122:0;;;4648:21:1;4705:2;4685:18;;;4678:30;4744:34;4724:18;;;4717:62;-1:-1:-1;;;4795:18:1;;;4788:35;4840:19;;13046:122:0;;;;;;;;;13204:60;13213:5;13220:7;13248:15;13229:16;:34;13204:8;:60::i;11520:234::-;11635:4;10358:10;11696:28;10358:10;11713:2;11717:6;11696:9;:28::i;11762:201::-;-1:-1:-1;;;;;11928:18:0;;;11896:7;11928:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11762:201::o;16326:238::-;15939:13;:11;:13::i;:::-;-1:-1:-1;;;;;16429:22:0;::::1;16407:110;;;::::0;-1:-1:-1;;;16407:110:0;;5072:2:1;16407:110:0::1;::::0;::::1;5054:21:1::0;5111:2;5091:18;;;5084:30;5150:34;5130:18;;;5123:62;-1:-1:-1;;;5201:18:1;;;5194:36;5247:19;;16407:110:0::1;4870:402:1::0;16407:110:0::1;16528:28;16547:8;16528:18;:28::i;:::-;16326:238:::0;:::o;17943:371::-;15939:13;:11;:13::i;:::-;-1:-1:-1;;;;;18018:21:0;::::1;18014:128;;18056:53;::::0;10358:10;;18087:21:::1;18056:53:::0;::::1;;;::::0;::::1;::::0;;;18087:21;10358:10;18056:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16326:238:::0;:::o;18014:128::-:1;18214:35;::::0;-1:-1:-1;;;18214:35:0;;18243:4:::1;18214:35;::::0;::::1;3218:51:1::0;18179:5:0;;18152:17:::1;::::0;-1:-1:-1;;;;;18214:20:0;::::1;::::0;::::1;::::0;3191:18:1;;18214:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18196:53:::0;-1:-1:-1;18260:46:0::1;-1:-1:-1::0;;;;;18260:23:0;::::1;10358:10:::0;18196:53;18260:23:::1;:46::i;:::-;18003:311;;17943:371:::0;:::o;16075:132::-;16026:7;16053:6;-1:-1:-1;;;;;16053:6:0;10358:10;16139:23;16131:68;;;;-1:-1:-1;;;16131:68:0;;5668:2:1;16131:68:0;;;5650:21:1;;;5687:18;;;5680:30;5746:34;5726:18;;;5719:62;5798:18;;16131:68:0;5466:356:1;14480:380:0;-1:-1:-1;;;;;14616:19:0;;14608:68;;;;-1:-1:-1;;;14608:68:0;;6029:2:1;14608:68:0;;;6011:21:1;6068:2;6048:18;;;6041:30;6107:34;6087:18;;;6080:62;-1:-1:-1;;;6158:18:1;;;6151:34;6202:19;;14608:68:0;5827:400:1;14608:68:0;-1:-1:-1;;;;;14695:21:0;;14687:68;;;;-1:-1:-1;;;14687:68:0;;6434:2:1;14687:68:0;;;6416:21:1;6473:2;6453:18;;;6446:30;6512:34;6492:18;;;6485:62;-1:-1:-1;;;6563:18:1;;;6556:32;6605:19;;14687:68:0;6232:398:1;14687:68:0;-1:-1:-1;;;;;14768:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14820:32;;2323:25:1;;;14820:32:0;;2296:18:1;14820:32:0;;;;;;;14480:380;;;:::o;14868:502::-;15003:24;15030:25;15040:5;15047:7;15030:9;:25::i;:::-;15003:52;;-1:-1:-1;;15070:16:0;:37;15066:297;;15170:6;15150:16;:26;;15124:117;;;;-1:-1:-1;;;15124:117:0;;6837:2:1;15124:117:0;;;6819:21:1;6876:2;6856:18;;;6849:30;6915:31;6895:18;;;6888:59;6964:18;;15124:117:0;6635:353:1;15124:117:0;15285:51;15294:5;15301:7;15329:6;15310:16;:25;15285:8;:51::i;17352:583::-;17502:1;17493:6;:10;17485:64;;;;-1:-1:-1;;;17485:64:0;;7195:2:1;17485:64:0;;;7177:21:1;7234:2;7214:18;;;7207:30;7273:34;7253:18;;;7246:62;-1:-1:-1;;;7324:18:1;;;7317:39;7373:19;;17485:64:0;6993:405:1;17485:64:0;17567:4;;;;;;;17562:311;;-1:-1:-1;;;;;17594:17:0;;;;;;:9;:17;;;;;;;;;:41;;-1:-1:-1;;;;;;17615:20:0;;;;;;:9;:20;;;;;;;;17594:41;17592:44;:57;;;;-1:-1:-1;17641:8:0;;;;17640:9;17592:57;17588:121;;;17670:23;;-1:-1:-1;;;17670:23:0;;7605:2:1;17670:23:0;;;7587:21:1;7644:2;7624:18;;;7617:30;-1:-1:-1;;;7663:18:1;;;7656:43;7716:18;;17670:23:0;7403:337:1;17588:121:0;17562:311;;;-1:-1:-1;;;;;17747:17:0;;;;;;:9;:17;;;;;;;;:41;;;;-1:-1:-1;;;;;;17768:20:0;;;;;;:9;:20;;;;;;;;17747:41;17745:44;:57;;;;-1:-1:-1;17794:8:0;;;;17793:9;17745:57;17741:121;;;17823:23;;-1:-1:-1;;;17823:23:0;;7605:2:1;17823:23:0;;;7587:21:1;7644:2;7624:18;;;7617:30;-1:-1:-1;;;7663:18:1;;;7656:43;7716:18;;17823:23:0;7403:337:1;17741:121:0;17885:42;17901:6;17909:9;17920:6;17885:15;:42::i;16572:191::-;16646:16;16665:6;;-1:-1:-1;;;;;16682:17:0;;;-1:-1:-1;;;;;;16682:17:0;;;;;;16715:40;;16665:6;;;;;;;16715:40;;16646:16;16715:40;16635:128;16572:191;:::o;6121:248::-;6292:58;;;-1:-1:-1;;;;;7937:32:1;;6292:58:0;;;7919:51:1;7986:18;;;;7979:34;;;6292:58:0;;;;;;;;;;7892:18:1;;;;6292:58:0;;;;;;;;-1:-1:-1;;;;;6292:58:0;-1:-1:-1;;;6292:58:0;;;6238:123;;6272:5;;6238:19;:123::i;13315:714::-;-1:-1:-1;;;;;13446:18:0;;13438:68;;;;-1:-1:-1;;;13438:68:0;;8226:2:1;13438:68:0;;;8208:21:1;8265:2;8245:18;;;8238:30;8304:34;8284:18;;;8277:62;-1:-1:-1;;;8355:18:1;;;8348:35;8400:19;;13438:68:0;8024:401:1;13438:68:0;-1:-1:-1;;;;;13525:16:0;;13517:64;;;;-1:-1:-1;;;13517:64:0;;8632:2:1;13517:64:0;;;8614:21:1;8671:2;8651:18;;;8644:30;8710:34;8690:18;;;8683:62;-1:-1:-1;;;8761:18:1;;;8754:33;8804:19;;13517:64:0;8430:399:1;13517:64:0;-1:-1:-1;;;;;13667:15:0;;13645:19;13667:15;;;:9;:15;;;;;;13715:21;;;;13693:109;;;;-1:-1:-1;;;13693:109:0;;9036:2:1;13693:109:0;;;9018:21:1;9075:2;9055:18;;;9048:30;9114:34;9094:18;;;9087:62;-1:-1:-1;;;9165:18:1;;;9158:36;9211:19;;13693:109:0;8834:402:1;13693:109:0;-1:-1:-1;;;;;13838:15:0;;;;;;;:9;:15;;;;;;13856:20;;;13838:38;;13893:13;;;;;;;;;;:23;;;;;;13945:26;;;;;;13870:6;2323:25:1;;2311:2;2296:18;;2177:177;13945:26:0;;;;;;;;13984:37;17943:371;9263:380;9344:23;9370:106;9412:4;9370:106;;;;;;;;;;;;;;;;;9378:5;-1:-1:-1;;;;;9370:27:0;;;:106;;;;;:::i;:::-;9344:132;;9509:10;:17;9530:1;9509:22;:56;;;;9546:10;9535:30;;;;;;;;;;;;:::i;:::-;9487:148;;;;-1:-1:-1;;;9487:148:0;;9693:2:1;9487:148:0;;;9675:21:1;9732:2;9712:18;;;9705:30;9771:34;9751:18;;;9744:62;-1:-1:-1;;;9822:18:1;;;9815:40;9872:19;;9487:148:0;9491:406:1;921:229:0;1058:12;1090:52;1112:6;1120:4;1126:1;1129:12;1090:21;:52::i;:::-;1083:59;921:229;-1:-1:-1;;;;921:229:0:o;1522:612::-;1692:12;1764:5;1739:21;:30;;1717:118;;;;-1:-1:-1;;;1717:118:0;;10104:2:1;1717:118:0;;;10086:21:1;10143:2;10123:18;;;10116:30;10182:34;10162:18;;;10155:62;-1:-1:-1;;;10233:18:1;;;10226:36;10279:19;;1717:118:0;9902:402:1;1717:118:0;1847:12;1861:23;1888:6;-1:-1:-1;;;;;1888:11:0;1907:5;1928:4;1888:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1846:97;;;;1974:152;2019:6;2044:7;2070:10;2099:12;1974:26;:152::i;:::-;1954:172;1522:612;-1:-1:-1;;;;;;;1522:612:0:o;3643:477::-;3828:12;3857:7;3853:260;;;3885:10;:17;3906:1;3885:22;3881:123;;-1:-1:-1;;;;;169:19:0;;;3928:60;;;;-1:-1:-1;;;3928:60:0;;10803:2:1;3928:60:0;;;10785:21:1;10842:2;10822:18;;;10815:30;10881:31;10861:18;;;10854:59;10930:18;;3928:60:0;10601:353:1;3928:60:0;-1:-1:-1;4025:10:0;4018:17;;3853:260;4068:33;4076:10;4088:12;4562:17;;:21;4558:299;;4705:10;4699:17;4762:15;4749:10;4745:2;4741:19;4734:44;4558:299;4832:12;4825:20;;-1:-1:-1;;;4825:20:0;;;;;;;;:::i;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:750;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;892:250::-;977:1;987:113;1001:6;998:1;995:13;987:113;;;1077:11;;;1071:18;1058:11;;;1051:39;1023:2;1016:10;987:113;;;-1:-1:-1;;1134:1:1;1116:16;;1109:27;892:250::o;1147:396::-;1296:2;1285:9;1278:21;1259:4;1328:6;1322:13;1371:6;1366:2;1355:9;1351:18;1344:34;1387:79;1459:6;1454:2;1443:9;1439:18;1434:2;1426:6;1422:15;1387:79;:::i;:::-;1527:2;1506:15;-1:-1:-1;;1502:29:1;1487:45;;;;1534:2;1483:54;;1147:396;-1:-1:-1;;1147:396:1:o;1548:173::-;1616:20;;-1:-1:-1;;;;;1665:31:1;;1655:42;;1645:70;;1711:1;1708;1701:12;1645:70;1548:173;;;:::o;1726:254::-;1794:6;1802;1855:2;1843:9;1834:7;1830:23;1826:32;1823:52;;;1871:1;1868;1861:12;1823:52;1894:29;1913:9;1894:29;:::i;:::-;1884:39;1970:2;1955:18;;;;1942:32;;-1:-1:-1;;;1726:254:1:o;2359:328::-;2436:6;2444;2452;2505:2;2493:9;2484:7;2480:23;2476:32;2473:52;;;2521:1;2518;2511:12;2473:52;2544:29;2563:9;2544:29;:::i;:::-;2534:39;;2592:38;2626:2;2615:9;2611:18;2592:38;:::i;:::-;2582:48;;2677:2;2666:9;2662:18;2649:32;2639:42;;2359:328;;;;;:::o;2881:186::-;2940:6;2993:2;2981:9;2972:7;2968:23;2964:32;2961:52;;;3009:1;3006;2999:12;2961:52;3032:29;3051:9;3032:29;:::i;:::-;3022:39;2881:186;-1:-1:-1;;;2881:186:1:o;3280:260::-;3348:6;3356;3409:2;3397:9;3388:7;3384:23;3380:32;3377:52;;;3425:1;3422;3415:12;3377:52;3448:29;3467:9;3448:29;:::i;:::-;3438:39;;3496:38;3530:2;3519:9;3515:18;3496:38;:::i;:::-;3486:48;;3280:260;;;;;:::o;3545:127::-;3606:10;3601:3;3597:20;3594:1;3587:31;3637:4;3634:1;3627:15;3661:4;3658:1;3651:15;3677:127;3738:10;3733:3;3729:20;3726:1;3719:31;3769:4;3766:1;3759:15;3793:4;3790:1;3783:15;3809:135;3848:3;3869:17;;;3866:43;;3889:18;;:::i;:::-;-1:-1:-1;3936:1:1;3925:13;;3809:135::o;3949:380::-;4028:1;4024:12;;;;4071;;;4092:61;;4146:4;4138:6;4134:17;4124:27;;4092:61;4199:2;4191:6;4188:14;4168:18;4165:38;4162:161;;4245:10;4240:3;4236:20;4233:1;4226:31;4280:4;4277:1;4270:15;4308:4;4305:1;4298:15;4162:161;;3949:380;;;:::o;4334:125::-;4399:9;;;4420:10;;;4417:36;;;4433:18;;:::i;5277:184::-;5347:6;5400:2;5388:9;5379:7;5375:23;5371:32;5368:52;;;5416:1;5413;5406:12;5368:52;-1:-1:-1;5439:16:1;;5277:184;-1:-1:-1;5277:184:1:o;9241:245::-;9308:6;9361:2;9349:9;9340:7;9336:23;9332:32;9329:52;;;9377:1;9374;9367:12;9329:52;9409:9;9403:16;9428:28;9450:5;9428:28;:::i;10309:287::-;10438:3;10476:6;10470:13;10492:66;10551:6;10546:3;10539:4;10531:6;10527:17;10492:66;:::i;:::-;10574:16;;;;;10309:287;-1:-1:-1;;10309:287:1:o

Swarm Source

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