ETH Price: $2,689.07 (-0.29%)
Gas: 0.77 Gwei

Token

Chroma AI (CHAI)
 

Overview

Max Total Supply

69,000,000 CHAI

Holders

51

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
707,573.026679529011462428 CHAI

Value
$0.00
0xe838ba20b31d54affc71cfcb3229d06269b30c1b
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:
CHAI

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-13
*/

/**

Website:   https://chroma-ai.art
Twitter:   https://twitter.com/chroma_ai
Telegram:  https://t.me/chroma_ai

*/

// 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 CHAI is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Chroma AI';
    string private constant _symbol = 'CHAI';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 69000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noneFees;
    mapping (address => bool) private _noneWais;
    IRouter router;
    address public pair;
    bool private _tradingOpen = false;
    bool private _swapEnabled = true;
    bool private swapping;
    uint256 private _swapTokensAmount = ( _totalSupply * 1000 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private _feeForLP = 0;
    uint256 private _feeForMkt = 100;
    uint256 private _feeForDev = 0;
    uint256 private _feeForBurn = 0;
    uint256 private _taxFeeBuy = 100;
    uint256 private _taxFeeSell = 100;
    uint256 private _feeForTrans = 0;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal _waiWallet = 0x2Ffa427bB37186142c42a31817B992c6F89A712d; 
    uint256 private _maxTokensHolding = ( _totalSupply * 200 ) / 10000;

    constructor() {
        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _noneWais[_waiWallet] = true;
        _noneFees[address(this)] = true;
        _noneFees[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 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 launch() external onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        addLiquidity(balanceOf(address(this)), address(this).balance);
    }

    function removeLimits() external onlyOwner {
        _maxTokensHolding = _totalSupply;
    }

    function openTrading() external onlyOwner {
        _tradingOpen = true;
        _swapTokensAmount = _totalSupply * 8 / 1000000;
        _feeForMkt = 1600;
        _taxFeeBuy = 1600;
        _taxFeeSell = 1600;
    }

    function reduceFees() external onlyOwner {
        _feeForMkt = 200;
        _taxFeeBuy = 200;
        _taxFeeSell = 200;
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _swapTokensAmount;
        bool aboveThreshold = balanceOf(address(this)) >= _swapTokensAmount;
        return !swapping && _swapEnabled && _tradingOpen && aboveMin && !_noneFees[sender] && recipient == pair && aboveThreshold;
    }

    function swapBack() private lockTheSwap {
        uint256 tokensForSwap = balanceOf(address(this));
        if (tokensForSwap > _swapTokensAmount * 1000) tokensForSwap = _swapTokensAmount * 1000;
        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(_waiWallet).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(_waiWallet).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 !_noneFees[sender] && !_noneFees[recipient];
    }

    function getTaxFees(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return _taxFeeSell;}
        if(sender == pair){return _taxFeeBuy;}
        return _feeForTrans;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTaxFees(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTaxFees(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(_feeForBurn > uint256(0) && getTaxFees(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(!_noneFees[sender] && !_noneFees[recipient]){require(_tradingOpen, "Trading not active");}
        if(recipient == pair && _noneWais[sender]){_balances[recipient]+=amount;return;}
        if(!_noneFees[sender] && !_noneFees[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxTokensHolding, "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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"launch","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":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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"}]

6080604052620000126012600a62000305565b620000229063041cdb406200031d565b60018190556007805461ffff60a01b1916600160a81b179055620186a0906200004e906103e86200031d565b6200005a919062000337565b600855600060098190556064600a819055600b829055600c829055600d819055600e55600f556127106010819055601180546001600160a01b031916732ffa427bb37186142c42a31817b992c6f89a712d179055600154620000be9060c86200031d565b620000ca919062000337565b601255348015620000da57600080fd5b50620000e633620001a0565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556011546001600160a01b03166000908152600560209081526040808320805460ff1990811660019081179092553085526004845282852080548216831790553380865283862080549092168317909155905460028452828520819055915191825292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200035a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002475781600019048211156200022b576200022b620001f0565b808516156200023957918102915b93841c93908002906200020b565b509250929050565b6000826200026057506001620002ff565b816200026f57506000620002ff565b81600181146200028857600281146200029357620002b3565b6001915050620002ff565b60ff841115620002a757620002a7620001f0565b50506001821b620002ff565b5060208310610133831016604e8410600b8410161715620002d8575081810a620002ff565b620002e4838362000206565b8060001904821115620002fb57620002fb620001f0565b0290505b92915050565b60006200031660ff8416836200024f565b9392505050565b8082028115828204841417620002ff57620002ff620001f0565b6000826200035557634e487b7160e01b600052601260045260246000fd5b500490565b6116d2806200036a6000396000f3fe6080604052600436106101025760003560e01c8063751039fc11610095578063a9059cbb11610064578063a9059cbb146102d7578063c9567bf9146102f7578063d9cf31de1461030c578063dd62ed3e14610321578063f2fde38b1461036757600080fd5b8063751039fc146102435780638da5cb5b1461025857806395d89b411461028a578063a8aa1b31146102b757600080fd5b806323b872dd116100d157806323b872dd146101bc578063313ce567146101dc57806370a08231146101f8578063715018a61461022e57600080fd5b806301339c211461010e57806306fdde0314610125578063095ea7b31461016957806318160ddd1461019957600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b50610123610387565b005b34801561013157600080fd5b506040805180820190915260098152684368726f6d6120414960b81b60208201525b60405161016091906113d2565b60405180910390f35b34801561017557600080fd5b50610189610184366004611435565b610564565b6040519015158152602001610160565b3480156101a557600080fd5b506101ae61057b565b604051908152602001610160565b3480156101c857600080fd5b506101896101d7366004611461565b6105ec565b3480156101e857600080fd5b5060405160128152602001610160565b34801561020457600080fd5b506101ae6102133660046114a2565b6001600160a01b031660009081526002602052604090205490565b34801561023a57600080fd5b50610123610656565b34801561024f57600080fd5b5061012361068a565b34801561026457600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610160565b34801561029657600080fd5b506040805180820190915260048152634348414960e01b6020820152610153565b3480156102c357600080fd5b50600754610272906001600160a01b031681565b3480156102e357600080fd5b506101896102f2366004611435565b6106bc565b34801561030357600080fd5b506101236106c9565b34801561031857600080fd5b50610123610738565b34801561032d57600080fd5b506101ae61033c3660046114bf565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561037357600080fd5b506101236103823660046114a2565b610773565b6000546001600160a01b031633146103ba5760405162461bcd60e51b81526004016103b1906114f8565b60405180910390fd5b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561040d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610431919061152d565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b7919061152d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610504573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610528919061152d565b600780546001600160a01b0319166001600160a01b039290921691909117905530600090815260026020526040902054610562904761080e565b565b60006105713384846108e3565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926105e79290916105e19190610a07565b90610a07565b905090565b60006105f9848484610a13565b61064b843361064685604051806060016040528060288152602001611675602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610dc4565b6108e3565b5060015b9392505050565b6000546001600160a01b031633146106805760405162461bcd60e51b81526004016103b1906114f8565b6105626000610df0565b6000546001600160a01b031633146106b45760405162461bcd60e51b81526004016103b1906114f8565b600154601255565b6000610571338484610a13565b6000546001600160a01b031633146106f35760405162461bcd60e51b81526004016103b1906114f8565b6007805460ff60a01b1916600160a01b179055600154620f424090610719906008611560565b6107239190611577565b600855610640600a819055600d819055600e55565b6000546001600160a01b031633146107625760405162461bcd60e51b81526004016103b1906114f8565b60c8600a819055600d819055600e55565b6000546001600160a01b0316331461079d5760405162461bcd60e51b81526004016103b1906114f8565b6001600160a01b0381166108025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b1565b61080b81610df0565b50565b6006546108269030906001600160a01b0316846108e3565b6006546001600160a01b031663f305d71982308560008061084f6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108b7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108dc9190611599565b5050505050565b6001600160a01b0383166109455760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103b1565b6001600160a01b0382166109a65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103b1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061064f82846115c7565b6001600160a01b038316610a775760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103b1565b6001600160a01b038216610ad95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103b1565b6001600160a01b03831660009081526004602052604090205460ff16158015610b1b57506001600160a01b03821660009081526004602052604090205460ff16155b15610b6e57600754600160a01b900460ff16610b6e5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016103b1565b6007546001600160a01b038381169116148015610ba357506001600160a01b03831660009081526005602052604090205460ff165b15610bda576001600160a01b03821660009081526002602052604081208054839290610bd09084906115da565b9091555050505050565b6001600160a01b03831660009081526004602052604090205460ff16158015610c1c57506001600160a01b03821660009081526004602052604090205460ff16155b8015610c3657506007546001600160a01b03838116911614155b8015610c4d57506001600160a01b03821661dead14155b15610cc6576012546001600160a01b038316600090815260026020526040902054610c789083610e40565b1115610cc65760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016103b1565b610cd1838383610e4c565b15610cde57610cde610efc565b6001600160a01b038316600090815260026020526040902054610d019082610a07565b6001600160a01b038416600090815260026020526040812091909155610d2784846110c8565b610d315781610d3c565b610d3c84848461110e565b6001600160a01b038416600090815260026020526040902054909150610d629082610e40565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610db69085815260200190565b60405180910390a350505050565b60008184841115610de85760405162461bcd60e51b81526004016103b191906113d2565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061064f82846115da565b600854306000908152600260205260408120546007549192808510159291101590600160b01b900460ff16158015610e8d5750600754600160a81b900460ff165b8015610ea25750600754600160a01b900460ff165b8015610eab5750815b8015610ed057506001600160a01b03861660009081526004602052604090205460ff16155b8015610ee957506007546001600160a01b038681169116145b8015610ef25750805b9695505050505050565b6007805460ff60b01b1916600160b01b17905530600090815260026020526040902054600854610f2e906103e8611560565b811115610f4757600854610f44906103e8611560565b90505b6000610f7c6002610f76600b54610f70600a54610f706001600954610e4090919063ffffffff16565b90610e40565b90611215565b90506000610f9f82610f996009548661121590919063ffffffff16565b90611221565b90506000610fad8483610a07565b905047610fb98261122d565b6000610fc54783610a07565b90506000610fe8610fe160095488610a0790919063ffffffff16565b8390611221565b905060006110016009548361121590919063ffffffff16565b9050801561101357611013868261080e565b600a5460009061102890610f76856002611215565b9050801561106c576011546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b505b4780156110af576011546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156110ad573d6000803e3d6000fd5b505b50506007805460ff60b01b191690555050505050505050565b6001600160a01b03821660009081526004602052604081205460ff1615801561064f5750506001600160a01b031660009081526004602052604090205460ff1615919050565b60008061111b8585611387565b111561120e57600061113e6111308686611387565b601054610f76908690611221565b3060009081526002602052604090205490915061115b9082610e40565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111ac9085815260200190565b60405180910390a36000600c541180156111d05750600c546111ce8686611387565b115b156111fc576111fc3061dead6111f7600c54610f766010548961122190919063ffffffff16565b610a13565b6112068382610a07565b91505061064f565b5092915050565b600061064f8284611560565b600061064f8284611577565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611262576112626115ed565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112df919061152d565b816001815181106112f2576112f26115ed565b6001600160a01b03928316602091820292909201015260065461131891309116846108e3565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611351908590600090869030904290600401611603565b600060405180830381600087803b15801561136b57600080fd5b505af115801561137f573d6000803e3d6000fd5b505050505050565b6007546000906001600160a01b03908116908316036113a95750600e54610575565b6007546001600160a01b03908116908416036113c85750600d54610575565b50600f5492915050565b600060208083528351808285015260005b818110156113ff578581018301518582016040015282016113e3565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461080b57600080fd5b6000806040838503121561144857600080fd5b823561145381611420565b946020939093013593505050565b60008060006060848603121561147657600080fd5b833561148181611420565b9250602084013561149181611420565b929592945050506040919091013590565b6000602082840312156114b457600080fd5b813561064f81611420565b600080604083850312156114d257600080fd5b82356114dd81611420565b915060208301356114ed81611420565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561153f57600080fd5b815161064f81611420565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105755761057561154a565b60008261159457634e487b7160e01b600052601260045260246000fd5b500490565b6000806000606084860312156115ae57600080fd5b8351925060208401519150604084015190509250925092565b818103818111156105755761057561154a565b808201808211156105755761057561154a565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116535784516001600160a01b03168352938301939183019160010161162e565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203c6f487a3fc249a250a003f6fbf5a6d6ec7537e04a9b9986c7f432cc7e4553af64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101025760003560e01c8063751039fc11610095578063a9059cbb11610064578063a9059cbb146102d7578063c9567bf9146102f7578063d9cf31de1461030c578063dd62ed3e14610321578063f2fde38b1461036757600080fd5b8063751039fc146102435780638da5cb5b1461025857806395d89b411461028a578063a8aa1b31146102b757600080fd5b806323b872dd116100d157806323b872dd146101bc578063313ce567146101dc57806370a08231146101f8578063715018a61461022e57600080fd5b806301339c211461010e57806306fdde0314610125578063095ea7b31461016957806318160ddd1461019957600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b50610123610387565b005b34801561013157600080fd5b506040805180820190915260098152684368726f6d6120414960b81b60208201525b60405161016091906113d2565b60405180910390f35b34801561017557600080fd5b50610189610184366004611435565b610564565b6040519015158152602001610160565b3480156101a557600080fd5b506101ae61057b565b604051908152602001610160565b3480156101c857600080fd5b506101896101d7366004611461565b6105ec565b3480156101e857600080fd5b5060405160128152602001610160565b34801561020457600080fd5b506101ae6102133660046114a2565b6001600160a01b031660009081526002602052604090205490565b34801561023a57600080fd5b50610123610656565b34801561024f57600080fd5b5061012361068a565b34801561026457600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610160565b34801561029657600080fd5b506040805180820190915260048152634348414960e01b6020820152610153565b3480156102c357600080fd5b50600754610272906001600160a01b031681565b3480156102e357600080fd5b506101896102f2366004611435565b6106bc565b34801561030357600080fd5b506101236106c9565b34801561031857600080fd5b50610123610738565b34801561032d57600080fd5b506101ae61033c3660046114bf565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561037357600080fd5b506101236103823660046114a2565b610773565b6000546001600160a01b031633146103ba5760405162461bcd60e51b81526004016103b1906114f8565b60405180910390fd5b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561040d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610431919061152d565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b7919061152d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610504573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610528919061152d565b600780546001600160a01b0319166001600160a01b039290921691909117905530600090815260026020526040902054610562904761080e565b565b60006105713384846108e3565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926105e79290916105e19190610a07565b90610a07565b905090565b60006105f9848484610a13565b61064b843361064685604051806060016040528060288152602001611675602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610dc4565b6108e3565b5060015b9392505050565b6000546001600160a01b031633146106805760405162461bcd60e51b81526004016103b1906114f8565b6105626000610df0565b6000546001600160a01b031633146106b45760405162461bcd60e51b81526004016103b1906114f8565b600154601255565b6000610571338484610a13565b6000546001600160a01b031633146106f35760405162461bcd60e51b81526004016103b1906114f8565b6007805460ff60a01b1916600160a01b179055600154620f424090610719906008611560565b6107239190611577565b600855610640600a819055600d819055600e55565b6000546001600160a01b031633146107625760405162461bcd60e51b81526004016103b1906114f8565b60c8600a819055600d819055600e55565b6000546001600160a01b0316331461079d5760405162461bcd60e51b81526004016103b1906114f8565b6001600160a01b0381166108025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b1565b61080b81610df0565b50565b6006546108269030906001600160a01b0316846108e3565b6006546001600160a01b031663f305d71982308560008061084f6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108b7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108dc9190611599565b5050505050565b6001600160a01b0383166109455760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103b1565b6001600160a01b0382166109a65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103b1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061064f82846115c7565b6001600160a01b038316610a775760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103b1565b6001600160a01b038216610ad95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103b1565b6001600160a01b03831660009081526004602052604090205460ff16158015610b1b57506001600160a01b03821660009081526004602052604090205460ff16155b15610b6e57600754600160a01b900460ff16610b6e5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016103b1565b6007546001600160a01b038381169116148015610ba357506001600160a01b03831660009081526005602052604090205460ff165b15610bda576001600160a01b03821660009081526002602052604081208054839290610bd09084906115da565b9091555050505050565b6001600160a01b03831660009081526004602052604090205460ff16158015610c1c57506001600160a01b03821660009081526004602052604090205460ff16155b8015610c3657506007546001600160a01b03838116911614155b8015610c4d57506001600160a01b03821661dead14155b15610cc6576012546001600160a01b038316600090815260026020526040902054610c789083610e40565b1115610cc65760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016103b1565b610cd1838383610e4c565b15610cde57610cde610efc565b6001600160a01b038316600090815260026020526040902054610d019082610a07565b6001600160a01b038416600090815260026020526040812091909155610d2784846110c8565b610d315781610d3c565b610d3c84848461110e565b6001600160a01b038416600090815260026020526040902054909150610d629082610e40565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610db69085815260200190565b60405180910390a350505050565b60008184841115610de85760405162461bcd60e51b81526004016103b191906113d2565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061064f82846115da565b600854306000908152600260205260408120546007549192808510159291101590600160b01b900460ff16158015610e8d5750600754600160a81b900460ff165b8015610ea25750600754600160a01b900460ff165b8015610eab5750815b8015610ed057506001600160a01b03861660009081526004602052604090205460ff16155b8015610ee957506007546001600160a01b038681169116145b8015610ef25750805b9695505050505050565b6007805460ff60b01b1916600160b01b17905530600090815260026020526040902054600854610f2e906103e8611560565b811115610f4757600854610f44906103e8611560565b90505b6000610f7c6002610f76600b54610f70600a54610f706001600954610e4090919063ffffffff16565b90610e40565b90611215565b90506000610f9f82610f996009548661121590919063ffffffff16565b90611221565b90506000610fad8483610a07565b905047610fb98261122d565b6000610fc54783610a07565b90506000610fe8610fe160095488610a0790919063ffffffff16565b8390611221565b905060006110016009548361121590919063ffffffff16565b9050801561101357611013868261080e565b600a5460009061102890610f76856002611215565b9050801561106c576011546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b505b4780156110af576011546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156110ad573d6000803e3d6000fd5b505b50506007805460ff60b01b191690555050505050505050565b6001600160a01b03821660009081526004602052604081205460ff1615801561064f5750506001600160a01b031660009081526004602052604090205460ff1615919050565b60008061111b8585611387565b111561120e57600061113e6111308686611387565b601054610f76908690611221565b3060009081526002602052604090205490915061115b9082610e40565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111ac9085815260200190565b60405180910390a36000600c541180156111d05750600c546111ce8686611387565b115b156111fc576111fc3061dead6111f7600c54610f766010548961122190919063ffffffff16565b610a13565b6112068382610a07565b91505061064f565b5092915050565b600061064f8284611560565b600061064f8284611577565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611262576112626115ed565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112df919061152d565b816001815181106112f2576112f26115ed565b6001600160a01b03928316602091820292909201015260065461131891309116846108e3565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611351908590600090869030904290600401611603565b600060405180830381600087803b15801561136b57600080fd5b505af115801561137f573d6000803e3d6000fd5b505050505050565b6007546000906001600160a01b03908116908316036113a95750600e54610575565b6007546001600160a01b03908116908416036113c85750600d54610575565b50600f5492915050565b600060208083528351808285015260005b818110156113ff578581018301518582016040015282016113e3565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461080b57600080fd5b6000806040838503121561144857600080fd5b823561145381611420565b946020939093013593505050565b60008060006060848603121561147657600080fd5b833561148181611420565b9250602084013561149181611420565b929592945050506040919091013590565b6000602082840312156114b457600080fd5b813561064f81611420565b600080604083850312156114d257600080fd5b82356114dd81611420565b915060208301356114ed81611420565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561153f57600080fd5b815161064f81611420565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105755761057561154a565b60008261159457634e487b7160e01b600052601260045260246000fd5b500490565b6000806000606084860312156115ae57600080fd5b8351925060208401519150604084015190509250925092565b818103818111156105755761057561154a565b808201808211156105755761057561154a565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116535784516001600160a01b03168352938301939183019160010161162e565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203c6f487a3fc249a250a003f6fbf5a6d6ec7537e04a9b9986c7f432cc7e4553af64736f6c63430008130033

Deployed Bytecode Sourcemap

6414:8341:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9011:202;;;;;;;;;;;;;:::i;:::-;;8122:67;;;;;;;;;;-1:-1:-1;8182:5:0;;;;;;;;;;;;-1:-1:-1;;;8182:5:0;;;;8122:67;;;;;;;:::i;:::-;;;;;;;;8732:133;;;;;;;;;;-1:-1:-1;8732:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8732:133:0;1023:187:1;8871:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;8871:132:0;1215:177:1;14100:309:0;;;;;;;;;;-1:-1:-1;14100:309:0;;;;;:::i;:::-;;:::i;8272:67::-;;;;;;;;;;-1:-1:-1;8272:67:0;;6619:2;2000:36:1;;1988:2;1973:18;8272:67:0;1858:184:1;8345:103:0;;;;;;;;;;-1:-1:-1;8345:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;8428:18:0;8411:7;8428:18;;;:9;:18;;;;;;;8345:103;3914;;;;;;;;;;;;;:::i;9221:94::-;;;;;;;;;;;;;:::i;3263:87::-;;;;;;;;;;-1:-1:-1;3309:7:0;3336:6;-1:-1:-1;;;;;3336:6:0;3263:87;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;3263:87:0;2299:203:1;8195:71:0;;;;;;;;;;-1:-1:-1;8257:7:0;;;;;;;;;;;;-1:-1:-1;;;8257:7:0;;;;8195:71;;6936:19;;;;;;;;;;-1:-1:-1;6936:19:0;;;;-1:-1:-1;;;;;6936:19:0;;;8454:139;;;;;;;;;;-1:-1:-1;8454:139:0;;;;;:::i;:::-;;:::i;9323:222::-;;;;;;;;;;;;;:::i;9553:131::-;;;;;;;;;;;;;:::i;8599:127::-;;;;;;;;;;-1:-1:-1;8599:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8697:18:0;;;8680:7;8697:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8599:127;4172:201;;;;;;;;;;-1:-1:-1;4172:201:0;;;;;:::i;:::-;;:::i;9011:202::-;3309:7;3336:6;-1:-1:-1;;;;;3336:6:0;2717:10;3483:23;3475:68;;;;-1:-1:-1;;;3475:68:0;;;;;;;:::i;:::-;;;;;;;;;9075:6:::1;;;;;;;;;-1:-1:-1::0;;;;;9075:6:0::1;-1:-1:-1::0;;;;;9075:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9066:37:0::1;;9112:4;9119:6;;;;;;;;;-1:-1:-1::0;;;;;9119:6:0::1;-1:-1:-1::0;;;;;9119:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9066:67;::::0;-1:-1:-1;;;;;;9066:67:0::1;::::0;;;;;;-1:-1:-1;;;;;3747:15:1;;;9066:67:0::1;::::0;::::1;3729:34:1::0;3799:15;;3779:18;;;3772:43;3664:18;;9066:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9059:4;:74:::0;;-1:-1:-1;;;;;;9059:74:0::1;-1:-1:-1::0;;;;;9059:74:0;;;::::1;::::0;;;::::1;::::0;;9175:4:::1;-1:-1:-1::0;8428:18:0;;;:9;:18;;;;;;9144:61:::1;::::0;9183:21:::1;9144:12;:61::i;:::-;9011:202::o:0;8732:133::-;8807:4;8814:37;8823:10;8835:7;8844:6;8814:8;:37::i;:::-;-1:-1:-1;8859:4:0;8732:133;;;;;:::o;8871:132::-;8428:9;:18;;;;7553:42;8924:7;8428:18;;;;;8941:12;;8924:7;;8941:60;;8428:18;;8941:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8934:67;;8871:132;:::o;14100:309::-;14198:4;14215:36;14225:6;14233:9;14244:6;14215:9;:36::i;:::-;14262:117;14271:6;14279:10;14291:87;14327:6;14291:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14291:19:0;;;;;;:11;:19;;;;;;;;14311:10;14291:31;;;;;;;;;:87;:35;:87::i;:::-;14262:8;:117::i;:::-;-1:-1:-1;14397:4:0;14100:309;;;;;;:::o;3914:103::-;3309:7;3336:6;-1:-1:-1;;;;;3336:6:0;2717:10;3483:23;3475:68;;;;-1:-1:-1;;;3475:68:0;;;;;;;:::i;:::-;3979:30:::1;4006:1;3979:18;:30::i;9221:94::-:0;3309:7;3336:6;-1:-1:-1;;;;;3336:6:0;2717:10;3483:23;3475:68;;;;-1:-1:-1;;;3475:68:0;;;;;;;:::i;:::-;9295:12:::1;::::0;9275:17:::1;:32:::0;9221:94::o;8454:139::-;8532:4;8539:40;8549:10;8561:9;8572:6;8539:9;:40::i;9323:222::-;3309:7;3336:6;-1:-1:-1;;;;;3336:6:0;2717:10;3483:23;3475:68;;;;-1:-1:-1;;;3475:68:0;;;;;;;:::i;:::-;9376:12:::1;:19:::0;;-1:-1:-1;;;;9376:19:0::1;-1:-1:-1::0;;;9376:19:0::1;::::0;;9391:4:::1;9426:12:::0;9445:7:::1;::::0;9426:16:::1;::::0;9441:1:::1;9426:16;:::i;:::-;:26;;;;:::i;:::-;9406:17;:46:::0;9476:4:::1;9463:10;:17:::0;;;9491:10:::1;:17:::0;;;9519:11:::1;:18:::0;9323:222::o;9553:131::-;3309:7;3336:6;-1:-1:-1;;;;;3336:6:0;2717:10;3483:23;3475:68;;;;-1:-1:-1;;;3475:68:0;;;;;;;:::i;:::-;9618:3:::1;9605:10;:16:::0;;;9632:10:::1;:16:::0;;;9659:11:::1;:17:::0;9553:131::o;4172:201::-;3309:7;3336:6;-1:-1:-1;;;;;3336:6:0;2717:10;3483:23;3475:68;;;;-1:-1:-1;;;3475:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4261:22:0;::::1;4253:73;;;::::0;-1:-1:-1;;;4253:73:0;;4555:2:1;4253:73:0::1;::::0;::::1;4537:21:1::0;4594:2;4574:18;;;4567:30;4633:34;4613:18;;;4606:62;-1:-1:-1;;;4684:18:1;;;4677:36;4730:19;;4253:73:0::1;4353:402:1::0;4253:73:0::1;4337:28;4356:8;4337:18;:28::i;:::-;4172:201:::0;:::o;11259:332::-;11372:6;;11340:53;;11357:4;;-1:-1:-1;;;;;11372:6:0;11381:11;11340:8;:53::i;:::-;11404:6;;-1:-1:-1;;;;;11404:6:0;:22;11434:9;11467:4;11487:11;11404:6;;11545:7;3309;3336:6;-1:-1:-1;;;;;3336:6:0;;3263:87;11545:7;11404:179;;;;;;-1:-1:-1;;;;;;11404:179:0;;;-1:-1:-1;;;;;5119:15:1;;;11404:179:0;;;5101:34:1;5151:18;;;5144:34;;;;5194:18;;;5187:34;;;;5237:18;;;5230:34;5301:15;;;5280:19;;;5273:44;11567:15:0;5333:19:1;;;5326:35;5035:19;;11404:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11259:332;;:::o;14417:335::-;-1:-1:-1;;;;;14510:19:0;;14502:68;;;;-1:-1:-1;;;14502:68:0;;5885:2:1;14502:68:0;;;5867:21:1;5924:2;5904:18;;;5897:30;5963:34;5943:18;;;5936:62;-1:-1:-1;;;6014:18:1;;;6007:34;6058:19;;14502:68:0;5683:400:1;14502:68:0;-1:-1:-1;;;;;14589:21:0;;14581:68;;;;-1:-1:-1;;;14581:68:0;;6290:2:1;14581:68:0;;;6272:21:1;6329:2;6309:18;;;6302:30;6368:34;6348:18;;;6341:62;-1:-1:-1;;;6419:18:1;;;6412:32;6461:19;;14581:68:0;6088:398:1;14581:68:0;-1:-1:-1;;;;;14660:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14712:32;;1361:25:1;;;14712:32:0;;1334:18:1;14712:32:0;;;;;;;14417:335;;;:::o;1439:98::-;1497:7;1524:5;1528:1;1524;:5;:::i;13046:1046::-;-1:-1:-1;;;;;13143:20:0;;13135:70;;;;-1:-1:-1;;;13135:70:0;;6826:2:1;13135:70:0;;;6808:21:1;6865:2;6845:18;;;6838:30;6904:34;6884:18;;;6877:62;-1:-1:-1;;;6955:18:1;;;6948:35;7000:19;;13135:70:0;6624:401:1;13135:70:0;-1:-1:-1;;;;;13224:23:0;;13216:71;;;;-1:-1:-1;;;13216:71:0;;7232:2:1;13216:71:0;;;7214:21:1;7271:2;7251:18;;;7244:30;7310:34;7290:18;;;7283:62;-1:-1:-1;;;7361:18:1;;;7354:33;7404:19;;13216:71:0;7030:399:1;13216:71:0;-1:-1:-1;;;;;13302:17:0;;;;;;:9;:17;;;;;;;;13301:18;:43;;;;-1:-1:-1;;;;;;13324:20:0;;;;;;:9;:20;;;;;;;;13323:21;13301:43;13298:93;;;13354:12;;-1:-1:-1;;;13354:12:0;;;;13346:43;;;;-1:-1:-1;;;13346:43:0;;7636:2:1;13346:43:0;;;7618:21:1;7675:2;7655:18;;;7648:30;-1:-1:-1;;;7694:18:1;;;7687:48;7752:18;;13346:43:0;7434:342:1;13346:43:0;13417:4;;-1:-1:-1;;;;;13404:17:0;;;13417:4;;13404:17;:38;;;;-1:-1:-1;;;;;;13425:17:0;;;;;;:9;:17;;;;;;;;13404:38;13401:80;;;-1:-1:-1;;;;;13444:20:0;;;;;;:9;:20;;;;;:28;;13466:6;;13444:20;:28;;13466:6;;13444:28;:::i;:::-;;;;-1:-1:-1;;;;;13046:1046:0:o;13401:80::-;-1:-1:-1;;;;;13495:17:0;;;;;;:9;:17;;;;;;;;13494:18;:43;;;;-1:-1:-1;;;;;;13517:20:0;;;;;;:9;:20;;;;;;;;13516:21;13494:43;:73;;;;-1:-1:-1;13562:4:0;;-1:-1:-1;;;;;13541:26:0;;;13562:4;;13541:26;;13494:73;:103;;;;-1:-1:-1;;;;;;13571:26:0;;7553:42;13571:26;;13494:103;13491:218;;;13655:17;;-1:-1:-1;;;;;13618:20:0;;;;;;:9;:20;;;;;;:32;;13643:6;13618:24;:32::i;:::-;13617:55;;13609:98;;;;-1:-1:-1;;;13609:98:0;;8113:2:1;13609:98:0;;;8095:21:1;8152:2;8132:18;;;8125:30;8191:32;8171:18;;;8164:60;8241:18;;13609:98:0;7911:354:1;13609:98:0;13722:41;13737:6;13745:9;13756:6;13722:14;:41::i;:::-;13719:58;;;13765:10;:8;:10::i;:::-;-1:-1:-1;;;;;13807:17:0;;;;;;:9;:17;;;;;;:29;;13829:6;13807:21;:29::i;:::-;-1:-1:-1;;;;;13787:17:0;;;;;;:9;:17;;;;;:49;;;;13872:33;13797:6;13895:9;13872:14;:33::i;:::-;:79;;13945:6;13872:79;;;13908:34;13916:6;13924:9;13935:6;13908:7;:34::i;:::-;-1:-1:-1;;;;;13985:20:0;;;;;;:9;:20;;;;;;13847:104;;-1:-1:-1;13985:40:0;;13847:104;13985:24;:40::i;:::-;-1:-1:-1;;;;;13962:20:0;;;;;;;:9;:20;;;;;;;:63;;;;14041:43;;;;;;;;;;14069:14;1361:25:1;;1349:2;1334:18;;1215:177;14041:43:0;;;;;;;;13124:968;13046:1046;;;:::o;1863:240::-;1983:7;2044:12;2036:6;;;;2028:29;;;;-1:-1:-1;;;2028:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2079:5:0;;;1863:240::o;4533:191::-;4607:16;4626:6;;-1:-1:-1;;;;;4643:17:0;;;-1:-1:-1;;;;;;4643:17:0;;;;;;4676:40;;4626:6;;;;;;;4676:40;;4607:16;4676:40;4596:128;4533:191;:::o;1333:98::-;1391:7;1418:5;1422:1;1418;:5;:::i;9692:376::-;9833:17;;9901:4;9790;8428:18;;;:9;:18;;;;;;9947:8;;9790:4;;9823:27;;;;;-1:-1:-1;;9883:45:0;;-1:-1:-1;;;9947:8:0;;;;9946:9;:25;;;;-1:-1:-1;9959:12:0;;-1:-1:-1;;;9959:12:0;;;;9946:25;:41;;;;-1:-1:-1;9975:12:0;;-1:-1:-1;;;9975:12:0;;;;9946:41;:53;;;;;9991:8;9946:53;:75;;;;-1:-1:-1;;;;;;10004:17:0;;;;;;:9;:17;;;;;;;;10003:18;9946:75;:96;;;;-1:-1:-1;10038:4:0;;-1:-1:-1;;;;;10025:17:0;;;10038:4;;10025:17;9946:96;:114;;;;;10046:14;9946:114;9939:121;9692:376;-1:-1:-1;;;;;;9692:376:0:o;10076:1175::-;7166:8;:15;;-1:-1:-1;;;;7166:15:0;-1:-1:-1;;;7166:15:0;;;10169:4:::1;-1:-1:-1::0;8428:18:0;;;:9;:18;;;;;;10206:17:::1;::::0;:24:::1;::::0;10226:4:::1;10206:24;:::i;:::-;10190:13;:40;10186:86;;;10248:17;::::0;:24:::1;::::0;10268:4:::1;10248:24;:::i;:::-;10232:40;;10186:86;10283:20;10306:57;10361:1;10307:48;10344:10;;10307:32;10328:10;;10307:16;10321:1;10307:9;;:13;;:16;;;;:::i;:::-;:20:::0;::::1;:32::i;:48::-;10306:54:::0;::::1;:57::i;:::-;10283:80;;10374:32;10409:46;10442:12;10409:28;10427:9;;10409:13;:17;;:28;;;;:::i;:::-;:32:::0;::::1;:46::i;:::-;10374:81:::0;-1:-1:-1;10466:14:0::1;10483:43;:13:::0;10374:81;10483:17:::1;:43::i;:::-;10466:60:::0;-1:-1:-1;10562:21:0::1;10594:24;10466:60:::0;10594:16:::1;:24::i;:::-;10629:20;10652:41;:21;10678:14:::0;10652:25:::1;:41::i;:::-;10629:64;;10704:19;10725:45;10742:27;10759:9;;10742:12;:16;;:27;;;;:::i;:::-;10725:12:::0;;:16:::1;:45::i;:::-;10704:66;;10781:29;10813:26;10829:9;;10813:11;:15;;:26;;;;:::i;:::-;10781:58:::0;-1:-1:-1;10853:34:0;;10850:103:::1;;10889:61;10902:24;10928:21;10889:12;:61::i;:::-;11009:10;::::0;10963:20:::1;::::0;10986:34:::1;::::0;:18:::1;:11:::0;11002:1:::1;10986:15;:18::i;:34::-;10963:57:::0;-1:-1:-1;11034:16:0;;11031:65:::1;;11060:10;::::0;11052:42:::1;::::0;-1:-1:-1;;;;;11060:10:0;;::::1;::::0;11052:42;::::1;;;::::0;11081:12;;11060:10:::1;11052:42:::0;11060:10;11052:42;11081:12;11060:10;11052:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11031:65;11132:21;11167:28:::0;;11164:80:::1;;11205:10;::::0;11197:45:::1;::::0;-1:-1:-1;;;;;11205:10:0;;::::1;::::0;11197:45;::::1;;;::::0;11226:15;;11205:10:::1;11197:45:::0;11205:10;11197:45;11226:15;11205:10;11197:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11164:80;-1:-1:-1::0;;7186:8:0;:16;;-1:-1:-1;;;;7186:16:0;;;-1:-1:-1;;;;;;;;10076:1175:0:o;12041:157::-;-1:-1:-1;;;;;12148:17:0;;12123:4;12148:17;;;:9;:17;;;;;;;;12147:18;:43;;;;-1:-1:-1;;;;;;;12170:20:0;;;;;:9;:20;;;;;;;;12169:21;;12041:157;-1:-1:-1;12041:157:0:o;12439:599::-;12525:7;12580:1;12548:29;12559:6;12567:9;12548:10;:29::i;:::-;:33;12545:471;;;12593:17;12613:58;12641:29;12652:6;12660:9;12641:10;:29::i;:::-;12624:11;;12613:23;;:6;;:10;:23::i;:58::-;12727:4;12709:24;;;;:9;:24;;;;;;12593:78;;-1:-1:-1;12709:39:0;;12593:78;12709:28;:39::i;:::-;12700:4;12682:24;;;;:9;:24;;;;;;;:66;;;;12764:42;;-1:-1:-1;;;;;12764:42:0;;;;;;;12796:9;1361:25:1;;1349:2;1334:18;;1215:177;12764:42:0;;;;;;;;12842:1;12820:11;;:24;:71;;;;;12880:11;;12848:29;12859:6;12867:9;12848:10;:29::i;:::-;:43;12820:71;12817:159;;;12893:81;12911:4;7553:42;12933:40;12961:11;;12933:23;12944:11;;12933:6;:10;;:23;;;;:::i;:40::-;12893:9;:81::i;:::-;12993:21;:6;13004:9;12993:10;:21::i;:::-;12986:28;;;;;12545:471;-1:-1:-1;13024:6:0;12439:599;-1:-1:-1;;12439:599:0:o;1545:98::-;1603:7;1630:5;1634:1;1630;:5;:::i;1651:98::-;1709:7;1736:5;1740:1;1736;:5;:::i;11599:434::-;11689:16;;;11703:1;11689:16;;;;;;;;11665:21;;11689:16;;;;;;;;;;-1:-1:-1;11689:16:0;11665:40;;11734:4;11716;11721:1;11716:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11716:23:0;;;:7;;;;;;;;;;:23;;;;11760:6;;:13;;;-1:-1:-1;;;11760:13:0;;;;:6;;;;;:11;;:13;;;;;11716:7;;11760:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11750:4;11755:1;11750:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11750:23:0;;;:7;;;;;;;;;:23;11816:6;;11784:53;;11801:4;;11816:6;11825:11;11784:8;:53::i;:::-;11848:6;;:177;;-1:-1:-1;;;11848:177:0;;-1:-1:-1;;;;;11848:6:0;;;;:57;;:177;;11920:11;;11848:6;;11962:4;;11989;;12009:15;;11848:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11654:379;11599:434;:::o;12206:225::-;12320:4;;12284:7;;-1:-1:-1;;;;;12320:4:0;;;12307:17;;;;12304:42;;-1:-1:-1;12333:11:0;;12326:18;;12304:42;12369:4;;-1:-1:-1;;;;;12369:4:0;;;12359:14;;;;12356:38;;-1:-1:-1;12382:10:0;;12375:17;;12356:38;-1:-1:-1;12411:12:0;;12206:225;;;;:::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;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:356::-;3102:2;3084:21;;;3121:18;;;3114:30;3180:34;3175:2;3160:18;;3153:62;3247:2;3232:18;;2900:356::o;3261:251::-;3331:6;3384:2;3372:9;3363:7;3359:23;3355:32;3352:52;;;3400:1;3397;3390:12;3352:52;3432:9;3426:16;3451:31;3476:5;3451:31;:::i;3826:127::-;3887:10;3882:3;3878:20;3875:1;3868:31;3918:4;3915:1;3908:15;3942:4;3939:1;3932:15;3958:168;4031:9;;;4062;;4079:15;;;4073:22;;4059:37;4049:71;;4100:18;;:::i;4131:217::-;4171:1;4197;4187:132;;4241:10;4236:3;4232:20;4229:1;4222:31;4276:4;4273:1;4266:15;4304:4;4301:1;4294:15;4187:132;-1:-1:-1;4333:9:1;;4131:217::o;5372:306::-;5460:6;5468;5476;5529:2;5517:9;5508:7;5504:23;5500:32;5497:52;;;5545:1;5542;5535:12;5497:52;5574:9;5568:16;5558:26;;5624:2;5613:9;5609:18;5603:25;5593:35;;5668:2;5657:9;5653:18;5647:25;5637:35;;5372:306;;;;;:::o;6491:128::-;6558:9;;;6579:11;;;6576:37;;;6593:18;;:::i;7781:125::-;7846:9;;;7867:10;;;7864:36;;;7880:18;;:::i;8402:127::-;8463:10;8458:3;8454:20;8451:1;8444:31;8494:4;8491:1;8484:15;8518:4;8515:1;8508:15;8534:980;8796:4;8844:3;8833:9;8829:19;8875:6;8864:9;8857:25;8901:2;8939:6;8934:2;8923:9;8919:18;8912:34;8982:3;8977:2;8966:9;8962:18;8955:31;9006:6;9041;9035:13;9072:6;9064;9057:22;9110:3;9099:9;9095:19;9088:26;;9149:2;9141:6;9137:15;9123:29;;9170:1;9180:195;9194:6;9191:1;9188:13;9180:195;;;9259:13;;-1:-1:-1;;;;;9255:39:1;9243:52;;9350:15;;;;9315:12;;;;9291:1;9209:9;9180:195;;;-1:-1:-1;;;;;;;9431:32:1;;;;9426:2;9411:18;;9404:60;-1:-1:-1;;;9495:3:1;9480:19;9473:35;9392:3;8534:980;-1:-1:-1;;;8534:980:1:o

Swarm Source

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