ETH Price: $3,903.72 (+1.16%)

Token

ERC-20: TomAI (TOMAI)
 

Overview

Max Total Supply

1,000,000,000 TOMAI

Holders

51

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
16,105,955.857932854782917787 TOMAI

Value
$0.00
0x1f7876299b7479471ffbf9c19c50ae87bd64f6ba
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:
TOMAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

Website: https://tomai.app
Twitter: https://twitter.com/Tom_AI_Chat
Telegram: https://t.me/Tom_AI_Chat

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

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

interface IRouter {
    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);

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

contract TOMAI is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'TomAI';
    string private constant _symbol = 'TOMAI';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isForTomAI;
    mapping (address => bool) private _isFeeXempt;
    IRouter router;
    address public pair;
    bool private tradingEnabled = false;
    bool private swapEnabled = true;
    bool private swapping;
    uint256 private _thresTokens = ( _totalSupply * 1000 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private feeForLP = 0;
    uint256 private feeForMkt = 2450;
    uint256 private feeForDev = 0;
    uint256 private feeForBurn = 0;
    uint256 private feeForBuy = 2450;
    uint256 private feeForSell = 2450;
    uint256 private feeForTrans = 0;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal _tomWallet = 0xd150bc2Df82F0fb599812C40E6D72003132A7B69; 
    uint256 private _maxHoldingTokens = ( _totalSupply * 200 ) / 10000;

    constructor() {
        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _isFeeXempt[_tomWallet] = true;
        _isForTomAI[address(this)] = true;
        _isForTomAI[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function openTrading() external onlyOwner {tradingEnabled = true; _thresTokens = _totalSupply * 8 / 1000000; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function createUniPair() external onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        addLiquidity(balanceOf(address(this)), address(this).balance);
    }

    function disableMaxHolding() external onlyOwner {
        _maxHoldingTokens = _totalSupply;
    }

    function setTaxFees(uint256 _tFee) external onlyOwner {
        feeForMkt = _tFee;
        feeForBuy = _tFee;
        feeForSell = _tFee;
        require(_tFee <= 500);
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _thresTokens;
        bool aboveThreshold = balanceOf(address(this)) >= _thresTokens;
        return !swapping && swapEnabled && tradingEnabled && aboveMin && !_isForTomAI[sender] && recipient == pair && aboveThreshold;
    }

    function swapBack() private lockTheSwap {
        uint256 tokensForSwap = balanceOf(address(this));
        uint256 _denominator = (feeForLP.add(1).add(feeForMkt).add(feeForDev)).mul(2);
        uint256 tokensToAddLiquidityWith = tokensForSwap.mul(feeForLP).div(_denominator);
        uint256 toSwap = tokensForSwap.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(feeForLP));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(feeForLP);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(feeForMkt);
        if(marketingAmt > 0){payable(_tomWallet).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(_tomWallet).transfer(contractBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldTakeFees(address sender, address recipient) internal view returns (bool) {
        return !_isForTomAI[sender] && !_isForTomAI[recipient];
    }

    function getTotalFees(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return feeForSell;}
        if(sender == pair){return feeForBuy;}
        return feeForTrans;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFees(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFees(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(feeForBurn > uint256(0) && getTotalFees(sender, recipient) > feeForBurn){_transfer(address(this), address(DEAD), amount.div(denominator).mul(feeForBurn));}
        return amount.sub(feeAmount);} return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(!_isForTomAI[sender] && !_isForTomAI[recipient]){require(tradingEnabled, "tradingEnabled");}
        if(recipient == pair && _isFeeXempt[sender]){_balances[recipient]+=amount;return;}
        if(!_isForTomAI[sender] && !_isForTomAI[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxHoldingTokens, "Exceeds maximum wallet amount.");}
        if(shouldSwapBack(sender, recipient, amount)){swapBack();}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFees(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        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);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createUniPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tFee","type":"uint256"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000306565b6200002290633b9aca006200031e565b60018190556007805461ffff60a01b1916600160a81b179055620186a0906200004e906103e86200031e565b6200005a919062000338565b60085560006009819055610992600a819055600b829055600c829055600d819055600e55600f556127106010819055601180546001600160a01b03191673d150bc2df82f0fb599812c40e6d72003132a7b69179055600154620000bf9060c86200031e565b620000cb919062000338565b601255348015620000db57600080fd5b50620000e733620001a1565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556011546001600160a01b03166000908152600560209081526040808320805460ff1990811660019081179092553085526004845282852080548216831790553380865283862080549092168317909155905460028452828520819055915191825292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200035b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002485781600019048211156200022c576200022c620001f1565b808516156200023a57918102915b93841c93908002906200020c565b509250929050565b600082620002615750600162000300565b81620002705750600062000300565b81600181146200028957600281146200029457620002b4565b600191505062000300565b60ff841115620002a857620002a8620001f1565b50506001821b62000300565b5060208310610133831016604e8410600b8410161715620002d9575081810a62000300565b620002e5838362000207565b8060001904821115620002fc57620002fc620001f1565b0290505b92915050565b60006200031760ff84168362000250565b9392505050565b8082028115828204841417620003005762000300620001f1565b6000826200035657634e487b7160e01b600052601260045260246000fd5b500490565b6116c6806200036b6000396000f3fe6080604052600436106101025760003560e01c80637a26d23011610095578063a8aa1b3111610064578063a8aa1b31146102d4578063a9059cbb146102f4578063c9567bf914610314578063dd62ed3e14610329578063f2fde38b1461036f57600080fd5b80637a26d2301461023f57806382cb35d91461025f5780638da5cb5b1461027457806395d89b41146102a657600080fd5b8063313ce567116100d1578063313ce567146101c1578063383f79be146101dd57806370a08231146101f4578063715018a61461022a57600080fd5b806306fdde031461010e578063095ea7b31461014e57806318160ddd1461017e57806323b872dd146101a157600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b50604080518082019091526005815264546f6d414960d81b60208201525b60405161014591906113ad565b60405180910390f35b34801561015a57600080fd5b5061016e610169366004611410565b61038f565b6040519015158152602001610145565b34801561018a57600080fd5b506101936103a6565b604051908152602001610145565b3480156101ad57600080fd5b5061016e6101bc36600461143c565b610417565b3480156101cd57600080fd5b5060405160128152602001610145565b3480156101e957600080fd5b506101f2610481565b005b34801561020057600080fd5b5061019361020f36600461147d565b6001600160a01b031660009081526002602052604090205490565b34801561023657600080fd5b506101f26104bc565b34801561024b57600080fd5b506101f261025a36600461149a565b6104f2565b34801561026b57600080fd5b506101f261053d565b34801561028057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610145565b3480156102b257600080fd5b50604080518082019091526005815264544f4d414960d81b6020820152610138565b3480156102e057600080fd5b5060075461028e906001600160a01b031681565b34801561030057600080fd5b5061016e61030f366004611410565b61070f565b34801561032057600080fd5b506101f261071c565b34801561033557600080fd5b506101936103443660046114b3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561037b57600080fd5b506101f261038a36600461147d565b61077b565b600061039c338484610813565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261041292909161040c9190610937565b90610937565b905090565b6000610424848484610943565b610476843361047185604051806060016040528060288152602001611669602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610cf0565b610813565b5060015b9392505050565b6000546001600160a01b031633146104b45760405162461bcd60e51b81526004016104ab906114ec565b60405180910390fd5b600154601255565b6000546001600160a01b031633146104e65760405162461bcd60e51b81526004016104ab906114ec565b6104f06000610d1c565b565b6000546001600160a01b0316331461051c5760405162461bcd60e51b81526004016104ab906114ec565b600a819055600d819055600e8190556101f481111561053a57600080fd5b50565b6000546001600160a01b031633146105675760405162461bcd60e51b81526004016104ab906114ec565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105de9190611521565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611521565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d59190611521565b600780546001600160a01b0319166001600160a01b0392909216919091179055306000908152600260205260409020546104f09047610d6c565b600061039c338484610943565b6000546001600160a01b031633146107465760405162461bcd60e51b81526004016104ab906114ec565b6007805460ff60a01b1916600160a01b179055600154620f42409061076c906008611554565b610776919061156b565b600855565b6000546001600160a01b031633146107a55760405162461bcd60e51b81526004016104ab906114ec565b6001600160a01b03811661080a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104ab565b61053a81610d1c565b6001600160a01b0383166108755760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104ab565b6001600160a01b0382166108d65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104ab565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061047a828461158d565b6001600160a01b0383166109a75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104ab565b6001600160a01b038216610a095760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104ab565b6001600160a01b03831660009081526004602052604090205460ff16158015610a4b57506001600160a01b03821660009081526004602052604090205460ff16155b15610a9a57600754600160a01b900460ff16610a9a5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d15b98589b195960921b60448201526064016104ab565b6007546001600160a01b038381169116148015610acf57506001600160a01b03831660009081526005602052604090205460ff165b15610b06576001600160a01b03821660009081526002602052604081208054839290610afc9084906115a0565b9091555050505050565b6001600160a01b03831660009081526004602052604090205460ff16158015610b4857506001600160a01b03821660009081526004602052604090205460ff16155b8015610b6257506007546001600160a01b03838116911614155b8015610b7957506001600160a01b03821661dead14155b15610bf2576012546001600160a01b038316600090815260026020526040902054610ba49083610e41565b1115610bf25760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104ab565b610bfd838383610e4d565b15610c0a57610c0a610efd565b6001600160a01b038316600090815260026020526040902054610c2d9082610937565b6001600160a01b038416600090815260026020526040812091909155610c5384846110a3565b610c5d5781610c68565b610c688484846110e9565b6001600160a01b038416600090815260026020526040902054909150610c8e9082610e41565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ce29085815260200190565b60405180910390a350505050565b60008184841115610d145760405162461bcd60e51b81526004016104ab91906113ad565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600654610d849030906001600160a01b031684610813565b6006546001600160a01b031663f305d719823085600080610dad6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e15573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e3a91906115b3565b5050505050565b600061047a82846115a0565b600854306000908152600260205260408120546007549192808510159291101590600160b01b900460ff16158015610e8e5750600754600160a81b900460ff165b8015610ea35750600754600160a01b900460ff165b8015610eac5750815b8015610ed157506001600160a01b03861660009081526004602052604090205460ff16155b8015610eea57506007546001600160a01b038681169116145b8015610ef35750805b9695505050505050565b6007805460ff60b01b1916600160b01b1790553060009081526002602052604081205490506000610f576002610f51600b54610f4b600a54610f4b6001600954610e4190919063ffffffff16565b90610e41565b906111f0565b90506000610f7a82610f74600954866111f090919063ffffffff16565b906111fc565b90506000610f888483610937565b905047610f9482611208565b6000610fa04783610937565b90506000610fc3610fbc6009548861093790919063ffffffff16565b83906111fc565b90506000610fdc600954836111f090919063ffffffff16565b90508015610fee57610fee8682610d6c565b600a5460009061100390610f518560026111f0565b90508015611047576011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611045573d6000803e3d6000fd5b505b47801561108a576011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611088573d6000803e3d6000fd5b505b50506007805460ff60b01b191690555050505050505050565b6001600160a01b03821660009081526004602052604081205460ff1615801561047a5750506001600160a01b031660009081526004602052604090205460ff1615919050565b6000806110f68585611362565b11156111e957600061111961110b8686611362565b601054610f519086906111fc565b306000908152600260205260409020549091506111369082610e41565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111879085815260200190565b60405180910390a36000600c541180156111ab5750600c546111a98686611362565b115b156111d7576111d73061dead6111d2600c54610f51601054896111fc90919063ffffffff16565b610943565b6111e18382610937565b91505061047a565b5092915050565b600061047a8284611554565b600061047a828461156b565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061123d5761123d6115e1565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba9190611521565b816001815181106112cd576112cd6115e1565b6001600160a01b0392831660209182029290920101526006546112f39130911684610813565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061132c9085906000908690309042906004016115f7565b600060405180830381600087803b15801561134657600080fd5b505af115801561135a573d6000803e3d6000fd5b505050505050565b6007546000906001600160a01b03908116908316036113845750600e546103a0565b6007546001600160a01b03908116908416036113a35750600d546103a0565b50600f5492915050565b600060208083528351808285015260005b818110156113da578581018301518582016040015282016113be565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461053a57600080fd5b6000806040838503121561142357600080fd5b823561142e816113fb565b946020939093013593505050565b60008060006060848603121561145157600080fd5b833561145c816113fb565b9250602084013561146c816113fb565b929592945050506040919091013590565b60006020828403121561148f57600080fd5b813561047a816113fb565b6000602082840312156114ac57600080fd5b5035919050565b600080604083850312156114c657600080fd5b82356114d1816113fb565b915060208301356114e1816113fb565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561153357600080fd5b815161047a816113fb565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103a0576103a061153e565b60008261158857634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156103a0576103a061153e565b808201808211156103a0576103a061153e565b6000806000606084860312156115c857600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116475784516001600160a01b031683529383019391830191600101611622565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206b508160cbbc5b2a07ed010ba3fdf0980b72ab5aa7b45587ba7c6f56070e435964736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101025760003560e01c80637a26d23011610095578063a8aa1b3111610064578063a8aa1b31146102d4578063a9059cbb146102f4578063c9567bf914610314578063dd62ed3e14610329578063f2fde38b1461036f57600080fd5b80637a26d2301461023f57806382cb35d91461025f5780638da5cb5b1461027457806395d89b41146102a657600080fd5b8063313ce567116100d1578063313ce567146101c1578063383f79be146101dd57806370a08231146101f4578063715018a61461022a57600080fd5b806306fdde031461010e578063095ea7b31461014e57806318160ddd1461017e57806323b872dd146101a157600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b50604080518082019091526005815264546f6d414960d81b60208201525b60405161014591906113ad565b60405180910390f35b34801561015a57600080fd5b5061016e610169366004611410565b61038f565b6040519015158152602001610145565b34801561018a57600080fd5b506101936103a6565b604051908152602001610145565b3480156101ad57600080fd5b5061016e6101bc36600461143c565b610417565b3480156101cd57600080fd5b5060405160128152602001610145565b3480156101e957600080fd5b506101f2610481565b005b34801561020057600080fd5b5061019361020f36600461147d565b6001600160a01b031660009081526002602052604090205490565b34801561023657600080fd5b506101f26104bc565b34801561024b57600080fd5b506101f261025a36600461149a565b6104f2565b34801561026b57600080fd5b506101f261053d565b34801561028057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610145565b3480156102b257600080fd5b50604080518082019091526005815264544f4d414960d81b6020820152610138565b3480156102e057600080fd5b5060075461028e906001600160a01b031681565b34801561030057600080fd5b5061016e61030f366004611410565b61070f565b34801561032057600080fd5b506101f261071c565b34801561033557600080fd5b506101936103443660046114b3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561037b57600080fd5b506101f261038a36600461147d565b61077b565b600061039c338484610813565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261041292909161040c9190610937565b90610937565b905090565b6000610424848484610943565b610476843361047185604051806060016040528060288152602001611669602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610cf0565b610813565b5060015b9392505050565b6000546001600160a01b031633146104b45760405162461bcd60e51b81526004016104ab906114ec565b60405180910390fd5b600154601255565b6000546001600160a01b031633146104e65760405162461bcd60e51b81526004016104ab906114ec565b6104f06000610d1c565b565b6000546001600160a01b0316331461051c5760405162461bcd60e51b81526004016104ab906114ec565b600a819055600d819055600e8190556101f481111561053a57600080fd5b50565b6000546001600160a01b031633146105675760405162461bcd60e51b81526004016104ab906114ec565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105de9190611521565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611521565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d59190611521565b600780546001600160a01b0319166001600160a01b0392909216919091179055306000908152600260205260409020546104f09047610d6c565b600061039c338484610943565b6000546001600160a01b031633146107465760405162461bcd60e51b81526004016104ab906114ec565b6007805460ff60a01b1916600160a01b179055600154620f42409061076c906008611554565b610776919061156b565b600855565b6000546001600160a01b031633146107a55760405162461bcd60e51b81526004016104ab906114ec565b6001600160a01b03811661080a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104ab565b61053a81610d1c565b6001600160a01b0383166108755760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104ab565b6001600160a01b0382166108d65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104ab565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061047a828461158d565b6001600160a01b0383166109a75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104ab565b6001600160a01b038216610a095760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104ab565b6001600160a01b03831660009081526004602052604090205460ff16158015610a4b57506001600160a01b03821660009081526004602052604090205460ff16155b15610a9a57600754600160a01b900460ff16610a9a5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d15b98589b195960921b60448201526064016104ab565b6007546001600160a01b038381169116148015610acf57506001600160a01b03831660009081526005602052604090205460ff165b15610b06576001600160a01b03821660009081526002602052604081208054839290610afc9084906115a0565b9091555050505050565b6001600160a01b03831660009081526004602052604090205460ff16158015610b4857506001600160a01b03821660009081526004602052604090205460ff16155b8015610b6257506007546001600160a01b03838116911614155b8015610b7957506001600160a01b03821661dead14155b15610bf2576012546001600160a01b038316600090815260026020526040902054610ba49083610e41565b1115610bf25760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104ab565b610bfd838383610e4d565b15610c0a57610c0a610efd565b6001600160a01b038316600090815260026020526040902054610c2d9082610937565b6001600160a01b038416600090815260026020526040812091909155610c5384846110a3565b610c5d5781610c68565b610c688484846110e9565b6001600160a01b038416600090815260026020526040902054909150610c8e9082610e41565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ce29085815260200190565b60405180910390a350505050565b60008184841115610d145760405162461bcd60e51b81526004016104ab91906113ad565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600654610d849030906001600160a01b031684610813565b6006546001600160a01b031663f305d719823085600080610dad6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e15573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e3a91906115b3565b5050505050565b600061047a82846115a0565b600854306000908152600260205260408120546007549192808510159291101590600160b01b900460ff16158015610e8e5750600754600160a81b900460ff165b8015610ea35750600754600160a01b900460ff165b8015610eac5750815b8015610ed157506001600160a01b03861660009081526004602052604090205460ff16155b8015610eea57506007546001600160a01b038681169116145b8015610ef35750805b9695505050505050565b6007805460ff60b01b1916600160b01b1790553060009081526002602052604081205490506000610f576002610f51600b54610f4b600a54610f4b6001600954610e4190919063ffffffff16565b90610e41565b906111f0565b90506000610f7a82610f74600954866111f090919063ffffffff16565b906111fc565b90506000610f888483610937565b905047610f9482611208565b6000610fa04783610937565b90506000610fc3610fbc6009548861093790919063ffffffff16565b83906111fc565b90506000610fdc600954836111f090919063ffffffff16565b90508015610fee57610fee8682610d6c565b600a5460009061100390610f518560026111f0565b90508015611047576011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611045573d6000803e3d6000fd5b505b47801561108a576011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611088573d6000803e3d6000fd5b505b50506007805460ff60b01b191690555050505050505050565b6001600160a01b03821660009081526004602052604081205460ff1615801561047a5750506001600160a01b031660009081526004602052604090205460ff1615919050565b6000806110f68585611362565b11156111e957600061111961110b8686611362565b601054610f519086906111fc565b306000908152600260205260409020549091506111369082610e41565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111879085815260200190565b60405180910390a36000600c541180156111ab5750600c546111a98686611362565b115b156111d7576111d73061dead6111d2600c54610f51601054896111fc90919063ffffffff16565b610943565b6111e18382610937565b91505061047a565b5092915050565b600061047a8284611554565b600061047a828461156b565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061123d5761123d6115e1565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba9190611521565b816001815181106112cd576112cd6115e1565b6001600160a01b0392831660209182029290920101526006546112f39130911684610813565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061132c9085906000908690309042906004016115f7565b600060405180830381600087803b15801561134657600080fd5b505af115801561135a573d6000803e3d6000fd5b505050505050565b6007546000906001600160a01b03908116908316036113845750600e546103a0565b6007546001600160a01b03908116908416036113a35750600d546103a0565b50600f5492915050565b600060208083528351808285015260005b818110156113da578581018301518582016040015282016113be565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461053a57600080fd5b6000806040838503121561142357600080fd5b823561142e816113fb565b946020939093013593505050565b60008060006060848603121561145157600080fd5b833561145c816113fb565b9250602084013561146c816113fb565b929592945050506040919091013590565b60006020828403121561148f57600080fd5b813561047a816113fb565b6000602082840312156114ac57600080fd5b5035919050565b600080604083850312156114c657600080fd5b82356114d1816113fb565b915060208301356114e1816113fb565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561153357600080fd5b815161047a816113fb565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103a0576103a061153e565b60008261158857634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156103a0576103a061153e565b808201808211156103a0576103a061153e565b6000806000606084860312156115c857600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116475784516001600160a01b031683529383019391830191600101611622565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206b508160cbbc5b2a07ed010ba3fdf0980b72ab5aa7b45587ba7c6f56070e435964736f6c63430008130033

Deployed Bytecode Sourcemap

6409:8192:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8119:67;;;;;;;;;;-1:-1:-1;8179:5:0;;;;;;;;;;;;-1:-1:-1;;;8179:5:0;;;;8119:67;;;;;;;:::i;:::-;;;;;;;;8845:133;;;;;;;;;;-1:-1:-1;8845:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8845:133:0;1023:187:1;8984:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;8984:132:0;1215:177:1;13946:309:0;;;;;;;;;;-1:-1:-1;13946:309:0;;;;;:::i;:::-;;:::i;8269:67::-;;;;;;;;;;-1:-1:-1;8269:67:0;;6612:2;2000:36:1;;1988:2;1973:18;8269:67:0;1858:184:1;9341:99:0;;;;;;;;;;;;;:::i;:::-;;8458:103;;;;;;;;;;-1:-1:-1;8458:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;8541:18:0;8524:7;8541:18;;;:9;:18;;;;;;;8458:103;3909;;;;;;;;;;;;;:::i;9448:179::-;;;;;;;;;;-1:-1:-1;9448:179:0;;;;;:::i;:::-;;:::i;9124:209::-;;;;;;;;;;;;;:::i;3258:87::-;;;;;;;;;;-1:-1:-1;3304:7:0;3331:6;-1:-1:-1;;;;;3331:6:0;3258:87;;;-1:-1:-1;;;;;2648:32:1;;;2630:51;;2618:2;2603:18;3258:87:0;2484:203:1;8192:71:0;;;;;;;;;;-1:-1:-1;8254:7:0;;;;;;;;;;;;-1:-1:-1;;;8254:7:0;;;;8192:71;;6935:19;;;;;;;;;;-1:-1:-1;6935:19:0;;;;-1:-1:-1;;;;;6935:19:0;;;8567:139;;;;;;;;;;-1:-1:-1;8567:139:0;;;;;:::i;:::-;;:::i;8342:110::-;;;;;;;;;;;;;:::i;8712:127::-;;;;;;;;;;-1:-1:-1;8712:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8810:18:0;;;8793:7;8810:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8712:127;4167:201;;;;;;;;;;-1:-1:-1;4167:201:0;;;;;:::i;:::-;;:::i;8845:133::-;8920:4;8927:37;8936:10;8948:7;8957:6;8927:8;:37::i;:::-;-1:-1:-1;8972:4:0;8845:133;;;;;:::o;8984:132::-;8541:9;:18;;;;7544:42;9037:7;8541:18;;;;;9054:12;;9037:7;;9054:60;;8541:18;;9054:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9047:67;;8984:132;:::o;13946:309::-;14044:4;14061:36;14071:6;14079:9;14090:6;14061:9;:36::i;:::-;14108:117;14117:6;14125:10;14137:87;14173:6;14137:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14137:19:0;;;;;;:11;:19;;;;;;;;14157:10;14137:31;;;;;;;;;:87;:35;:87::i;:::-;14108:8;:117::i;:::-;-1:-1:-1;14243:4:0;13946:309;;;;;;:::o;9341:99::-;3304:7;3331:6;-1:-1:-1;;;;;3331:6:0;2712:10;3478:23;3470:68;;;;-1:-1:-1;;;3470:68:0;;;;;;;:::i;:::-;;;;;;;;;9420:12:::1;::::0;9400:17:::1;:32:::0;9341:99::o;3909:103::-;3304:7;3331:6;-1:-1:-1;;;;;3331:6:0;2712:10;3478:23;3470:68;;;;-1:-1:-1;;;3470:68:0;;;;;;;:::i;:::-;3974:30:::1;4001:1;3974:18;:30::i;:::-;3909:103::o:0;9448:179::-;3304:7;3331:6;-1:-1:-1;;;;;3331:6:0;2712:10;3478:23;3470:68;;;;-1:-1:-1;;;3470:68:0;;;;;;;:::i;:::-;9513:9:::1;:17:::0;;;9541:9:::1;:17:::0;;;9569:10:::1;:18:::0;;;9615:3:::1;9606:12:::0;::::1;;9598:21;;;::::0;::::1;;9448:179:::0;:::o;9124:209::-;3304:7;3331:6;-1:-1:-1;;;;;3331:6:0;2712:10;3478:23;3470:68;;;;-1:-1:-1;;;3470:68:0;;;;;;;:::i;:::-;9195:6:::1;;;;;;;;;-1:-1:-1::0;;;;;9195:6:0::1;-1:-1:-1::0;;;;;9195:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9186:37:0::1;;9232:4;9239:6;;;;;;;;;-1:-1:-1::0;;;;;9239:6:0::1;-1:-1:-1::0;;;;;9239:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9186:67;::::0;-1:-1:-1;;;;;;9186:67:0::1;::::0;;;;;;-1:-1:-1;;;;;3932:15:1;;;9186:67:0::1;::::0;::::1;3914:34:1::0;3984:15;;3964:18;;;3957:43;3849:18;;9186:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9179:4;:74:::0;;-1:-1:-1;;;;;;9179:74:0::1;-1:-1:-1::0;;;;;9179:74:0;;;::::1;::::0;;;::::1;::::0;;9295:4:::1;-1:-1:-1::0;8541:18:0;;;:9;:18;;;;;;9264:61:::1;::::0;9303:21:::1;9264:12;:61::i;8567:139::-:0;8645:4;8652:40;8662:10;8674:9;8685:6;8652:9;:40::i;8342:110::-;3304:7;3331:6;-1:-1:-1;;;;;3331:6:0;2712:10;3478:23;3470:68;;;;-1:-1:-1;;;3470:68:0;;;;;;;:::i;:::-;8385:14:::1;:21:::0;;-1:-1:-1;;;;8385:21:0::1;-1:-1:-1::0;;;8385:21:0::1;::::0;;8402:4:::1;8423:12:::0;8442:7:::1;::::0;8423:16:::1;::::0;8438:1:::1;8423:16;:::i;:::-;:26;;;;:::i;:::-;8408:12;:41:::0;8342:110::o;4167:201::-;3304:7;3331:6;-1:-1:-1;;;;;3331:6:0;2712:10;3478:23;3470:68;;;;-1:-1:-1;;;3470:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4256:22:0;::::1;4248:73;;;::::0;-1:-1:-1;;;4248:73:0;;4740:2:1;4248:73:0::1;::::0;::::1;4722:21:1::0;4779:2;4759:18;;;4752:30;4818:34;4798:18;;;4791:62;-1:-1:-1;;;4869:18:1;;;4862:36;4915:19;;4248:73:0::1;4538:402:1::0;4248:73:0::1;4332:28;4351:8;4332:18;:28::i;14263:335::-:0;-1:-1:-1;;;;;14356:19:0;;14348:68;;;;-1:-1:-1;;;14348:68:0;;5147:2:1;14348:68:0;;;5129:21:1;5186:2;5166:18;;;5159:30;5225:34;5205:18;;;5198:62;-1:-1:-1;;;5276:18:1;;;5269:34;5320:19;;14348:68:0;4945:400:1;14348:68:0;-1:-1:-1;;;;;14435:21:0;;14427:68;;;;-1:-1:-1;;;14427:68:0;;5552:2:1;14427:68:0;;;5534:21:1;5591:2;5571:18;;;5564:30;5630:34;5610:18;;;5603:62;-1:-1:-1;;;5681:18:1;;;5674:32;5723:19;;14427:68:0;5350:398:1;14427:68:0;-1:-1:-1;;;;;14506:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14558:32;;1361:25:1;;;14558:32:0;;1334:18:1;14558:32:0;;;;;;;14263:335;;;:::o;1434:98::-;1492:7;1519:5;1523:1;1519;:5;:::i;12884:1054::-;-1:-1:-1;;;;;12981:20:0;;12973:70;;;;-1:-1:-1;;;12973:70:0;;6088:2:1;12973:70:0;;;6070:21:1;6127:2;6107:18;;;6100:30;6166:34;6146:18;;;6139:62;-1:-1:-1;;;6217:18:1;;;6210:35;6262:19;;12973:70:0;5886:401:1;12973:70:0;-1:-1:-1;;;;;13062:23:0;;13054:71;;;;-1:-1:-1;;;13054:71:0;;6494:2:1;13054:71:0;;;6476:21:1;6533:2;6513:18;;;6506:30;6572:34;6552:18;;;6545:62;-1:-1:-1;;;6623:18:1;;;6616:33;6666:19;;13054:71:0;6292:399:1;13054:71:0;-1:-1:-1;;;;;13140:19:0;;;;;;:11;:19;;;;;;;;13139:20;:47;;;;-1:-1:-1;;;;;;13164:22:0;;;;;;:11;:22;;;;;;;;13163:23;13139:47;13136:95;;;13196:14;;-1:-1:-1;;;13196:14:0;;;;13188:41;;;;-1:-1:-1;;;13188:41:0;;6898:2:1;13188:41:0;;;6880:21:1;6937:2;6917:18;;;6910:30;-1:-1:-1;;;6956:18:1;;;6949:44;7010:18;;13188:41:0;6696:338:1;13188:41:0;13257:4;;-1:-1:-1;;;;;13244:17:0;;;13257:4;;13244:17;:40;;;;-1:-1:-1;;;;;;13265:19:0;;;;;;:11;:19;;;;;;;;13244:40;13241:82;;;-1:-1:-1;;;;;13286:20:0;;;;;;:9;:20;;;;;:28;;13308:6;;13286:20;:28;;13308:6;;13286:28;:::i;:::-;;;;-1:-1:-1;;;;;12884:1054:0:o;13241:82::-;-1:-1:-1;;;;;13337:19:0;;;;;;:11;:19;;;;;;;;13336:20;:47;;;;-1:-1:-1;;;;;;13361:22:0;;;;;;:11;:22;;;;;;;;13360:23;13336:47;:77;;;;-1:-1:-1;13408:4:0;;-1:-1:-1;;;;;13387:26:0;;;13408:4;;13387:26;;13336:77;:107;;;;-1:-1:-1;;;;;;13417:26:0;;7544:42;13417:26;;13336:107;13333:222;;;13501:17;;-1:-1:-1;;;;;13464:20:0;;;;;;:9;:20;;;;;;:32;;13489:6;13464:24;:32::i;:::-;13463:55;;13455:98;;;;-1:-1:-1;;;13455:98:0;;7371:2:1;13455:98:0;;;7353:21:1;7410:2;7390:18;;;7383:30;7449:32;7429:18;;;7422:60;7499:18;;13455:98:0;7169:354:1;13455:98:0;13568:41;13583:6;13591:9;13602:6;13568:14;:41::i;:::-;13565:58;;;13611:10;:8;:10::i;:::-;-1:-1:-1;;;;;13653:17:0;;;;;;:9;:17;;;;;;:29;;13675:6;13653:21;:29::i;:::-;-1:-1:-1;;;;;13633:17:0;;;;;;:9;:17;;;;;:49;;;;13718:33;13643:6;13741:9;13718:14;:33::i;:::-;:79;;13791:6;13718:79;;;13754:34;13762:6;13770:9;13781:6;13754:7;:34::i;:::-;-1:-1:-1;;;;;13831:20:0;;;;;;:9;:20;;;;;;13693:104;;-1:-1:-1;13831:40:0;;13693:104;13831:24;:40::i;:::-;-1:-1:-1;;;;;13808:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13887:43;;;;;;;;;;13915:14;1361:25:1;;1349:2;1334:18;;1215:177;13887:43:0;;;;;;;;12962:976;12884:1054;;;:::o;1858:240::-;1978:7;2039:12;2031:6;;;;2023:29;;;;-1:-1:-1;;;2023:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2074:5:0;;;1858:240::o;4528:191::-;4602:16;4621:6;;-1:-1:-1;;;;;4638:17:0;;;-1:-1:-1;;;;;;4638:17:0;;;;;;4671:40;;4621:6;;;;;;;4671:40;;4602:16;4671:40;4591:128;4528:191;:::o;11091:332::-;11204:6;;11172:53;;11189:4;;-1:-1:-1;;;;;11204:6:0;11213:11;11172:8;:53::i;:::-;11236:6;;-1:-1:-1;;;;;11236:6:0;:22;11266:9;11299:4;11319:11;11236:6;;11377:7;3304;3331:6;-1:-1:-1;;;;;3331:6:0;;3258:87;11377:7;11236:179;;;;;;-1:-1:-1;;;;;;11236:179:0;;;-1:-1:-1;;;;;7887:15:1;;;11236:179:0;;;7869:34:1;7919:18;;;7912:34;;;;7962:18;;;7955:34;;;;8005:18;;;7998:34;8069:15;;;8048:19;;;8041:44;11399:15:0;8101:19:1;;;8094:35;7803:19;;11236:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11091:332;;:::o;1328:98::-;1386:7;1413:5;1417:1;1413;:5;:::i;9635:369::-;9776:12;;9839:4;9733;8541:18;;;:9;:18;;;;;;9880:8;;9733:4;;9766:22;;;;;-1:-1:-1;;9821:40:0;;-1:-1:-1;;;9880:8:0;;;;9879:9;:24;;;;-1:-1:-1;9892:11:0;;-1:-1:-1;;;9892:11:0;;;;9879:24;:42;;;;-1:-1:-1;9907:14:0;;-1:-1:-1;;;9907:14:0;;;;9879:42;:54;;;;;9925:8;9879:54;:78;;;;-1:-1:-1;;;;;;9938:19:0;;;;;;:11;:19;;;;;;;;9937:20;9879:78;:99;;;;-1:-1:-1;9974:4:0;;-1:-1:-1;;;;;9961:17:0;;;9974:4;;9961:17;9879:99;:117;;;;;9982:14;9879:117;9872:124;9635:369;-1:-1:-1;;;;;;9635:369:0:o;10012:1071::-;7161:8;:15;;-1:-1:-1;;;;7161:15:0;-1:-1:-1;;;7161:15:0;;;10105:4:::1;-1:-1:-1::0;8541:18:0;;;:9;:18;;;;;;10063:48:::1;;10122:20;10145:54;10197:1;10146:45;10181:9;;10146:30;10166:9;;10146:15;10159:1;10146:8;;:12;;:15;;;;:::i;:::-;:19:::0;::::1;:30::i;:45::-;10145:51:::0;::::1;:54::i;:::-;10122:77;;10210:32;10245:45;10277:12;10245:27;10263:8;;10245:13;:17;;:27;;;;:::i;:::-;:31:::0;::::1;:45::i;:::-;10210:80:::0;-1:-1:-1;10301:14:0::1;10318:43;:13:::0;10210:80;10318:17:::1;:43::i;:::-;10301:60:::0;-1:-1:-1;10397:21:0::1;10429:24;10301:60:::0;10429:16:::1;:24::i;:::-;10464:20;10487:41;:21;10513:14:::0;10487:25:::1;:41::i;:::-;10464:64;;10539:19;10560:44;10577:26;10594:8;;10577:12;:16;;:26;;;;:::i;:::-;10560:12:::0;;:16:::1;:44::i;:::-;10539:65;;10615:29;10647:25;10663:8;;10647:11;:15;;:25;;;;:::i;:::-;10615:57:::0;-1:-1:-1;10686:34:0;;10683:103:::1;;10722:61;10735:24;10761:21;10722:12;:61::i;:::-;10842:9;::::0;10796:20:::1;::::0;10819:33:::1;::::0;:18:::1;:11:::0;10835:1:::1;10819:15;:18::i;:33::-;10796:56:::0;-1:-1:-1;10866:16:0;;10863:65:::1;;10892:10;::::0;10884:42:::1;::::0;-1:-1:-1;;;;;10892:10:0;;::::1;::::0;10884:42;::::1;;;::::0;10913:12;;10892:10:::1;10884:42:::0;10892:10;10884:42;10913:12;10892:10;10884:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10863:65;10964:21;10999:28:::0;;10996:80:::1;;11037:10;::::0;11029:45:::1;::::0;-1:-1:-1;;;;;11037:10:0;;::::1;::::0;11029:45;::::1;;;::::0;11058:15;;11037:10:::1;11029:45:::0;11037:10;11029:45;11058:15;11037:10;11029:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10996:80;-1:-1:-1::0;;7181:8:0;:16;;-1:-1:-1;;;;7181:16:0;;;-1:-1:-1;;;;;;;;10012:1071:0:o;11873:161::-;-1:-1:-1;;;;;11980:19:0;;11955:4;11980:19;;;:11;:19;;;;;;;;11979:20;:47;;;;-1:-1:-1;;;;;;;12004:22:0;;;;;:11;:22;;;;;;;;12003:23;;11873:161;-1:-1:-1;11873:161:0:o;12274:602::-;12360:7;12417:1;12383:31;12396:6;12404:9;12383:12;:31::i;:::-;:35;12380:474;;;12430:17;12450:60;12478:31;12491:6;12499:9;12478:12;:31::i;:::-;12461:11;;12450:23;;:6;;:10;:23::i;:60::-;12566:4;12548:24;;;;:9;:24;;;;;;12430:80;;-1:-1:-1;12548:39:0;;12430:80;12548:28;:39::i;:::-;12539:4;12521:24;;;;:9;:24;;;;;;;:66;;;;12603:42;;-1:-1:-1;;;;;12603:42:0;;;;;;;12635:9;1361:25:1;;1349:2;1334:18;;1215:177;12603:42:0;;;;;;;;12680:1;12659:10;;:23;:71;;;;;12720:10;;12686:31;12699:6;12707:9;12686:12;:31::i;:::-;:44;12659:71;12656:158;;;12732:80;12750:4;7544:42;12772:39;12800:10;;12772:23;12783:11;;12772:6;:10;;:23;;;;:::i;:39::-;12732:9;:80::i;:::-;12831:21;:6;12842:9;12831:10;:21::i;:::-;12824:28;;;;;12380:474;-1:-1:-1;12862:6:0;12274:602;-1:-1:-1;;12274:602:0:o;1540:98::-;1598:7;1625:5;1629:1;1625;:5;:::i;1646:98::-;1704:7;1731:5;1735:1;1731;:5;:::i;11431:434::-;11521:16;;;11535:1;11521:16;;;;;;;;11497:21;;11521:16;;;;;;;;;;-1:-1:-1;11521:16:0;11497:40;;11566:4;11548;11553:1;11548:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11548:23:0;;;:7;;;;;;;;;;:23;;;;11592:6;;:13;;;-1:-1:-1;;;11592:13:0;;;;:6;;;;;:11;;:13;;;;;11548:7;;11592:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11582:4;11587:1;11582:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11582:23:0;;;:7;;;;;;;;;:23;11648:6;;11616:53;;11633:4;;11648:6;11657:11;11616:8;:53::i;:::-;11680:6;;:177;;-1:-1:-1;;;11680:177:0;;-1:-1:-1;;;;;11680:6:0;;;;:57;;:177;;11752:11;;11680:6;;11794:4;;11821;;11841:15;;11680:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11486:379;11431:434;:::o;12042:224::-;12158:4;;12122:7;;-1:-1:-1;;;;;12158:4:0;;;12145:17;;;;12142:41;;-1:-1:-1;12171:10:0;;12164:17;;12142:41;12206:4;;-1:-1:-1;;;;;12206:4:0;;;12196:14;;;;12193:37;;-1:-1:-1;12219:9:0;;12212:16;;12193:37;-1:-1:-1;12247:11:0;;12042:224;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2299:180::-;2358:6;2411:2;2399:9;2390:7;2386:23;2382:32;2379:52;;;2427:1;2424;2417:12;2379:52;-1:-1:-1;2450:23:1;;2299:180;-1:-1:-1;2299:180:1:o;2692:388::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;3002:2:1;2987:18;;2974:32;3015:33;2974:32;3015:33;:::i;:::-;3067:7;3057:17;;;2692:388;;;;;:::o;3085:356::-;3287:2;3269:21;;;3306:18;;;3299:30;3365:34;3360:2;3345:18;;3338:62;3432:2;3417:18;;3085:356::o;3446:251::-;3516:6;3569:2;3557:9;3548:7;3544:23;3540:32;3537:52;;;3585:1;3582;3575:12;3537:52;3617:9;3611:16;3636:31;3661:5;3636:31;:::i;4011:127::-;4072:10;4067:3;4063:20;4060:1;4053:31;4103:4;4100:1;4093:15;4127:4;4124:1;4117:15;4143:168;4216:9;;;4247;;4264:15;;;4258:22;;4244:37;4234:71;;4285:18;;:::i;4316:217::-;4356:1;4382;4372:132;;4426:10;4421:3;4417:20;4414:1;4407:31;4461:4;4458:1;4451:15;4489:4;4486:1;4479:15;4372:132;-1:-1:-1;4518:9:1;;4316:217::o;5753:128::-;5820:9;;;5841:11;;;5838:37;;;5855:18;;:::i;7039:125::-;7104:9;;;7125:10;;;7122:36;;;7138:18;;:::i;8140:306::-;8228:6;8236;8244;8297:2;8285:9;8276:7;8272:23;8268:32;8265:52;;;8313:1;8310;8303:12;8265:52;8342:9;8336:16;8326:26;;8392:2;8381:9;8377:18;8371:25;8361:35;;8436:2;8425:9;8421:18;8415:25;8405:35;;8140:306;;;;;:::o;8583:127::-;8644:10;8639:3;8635:20;8632:1;8625:31;8675:4;8672:1;8665:15;8699:4;8696:1;8689:15;8715:980;8977:4;9025:3;9014:9;9010:19;9056:6;9045:9;9038:25;9082:2;9120:6;9115:2;9104:9;9100:18;9093:34;9163:3;9158:2;9147:9;9143:18;9136:31;9187:6;9222;9216:13;9253:6;9245;9238:22;9291:3;9280:9;9276:19;9269:26;;9330:2;9322:6;9318:15;9304:29;;9351:1;9361:195;9375:6;9372:1;9369:13;9361:195;;;9440:13;;-1:-1:-1;;;;;9436:39:1;9424:52;;9531:15;;;;9496:12;;;;9472:1;9390:9;9361:195;;;-1:-1:-1;;;;;;;9612:32:1;;;;9607:2;9592:18;;9585:60;-1:-1:-1;;;9676:3:1;9661:19;9654:35;9573:3;8715:980;-1:-1:-1;;;8715:980:1:o

Swarm Source

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