ETH Price: $2,993.88 (-1.88%)
Gas: 2 Gwei

Token

Viridian AI (VIRAI)
 

Overview

Max Total Supply

100,000,000 VIRAI

Holders

153

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,268,415.209821254 VIRAI

Value
$0.00
0xfb59cf97a5e2544a22ec974d15d56395ef8f0881
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:
VIRAI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-11
*/

/**

Website: https://viridianfi.com
Twitter:  https://twitter.com/viridian_ai
Telegram: https://t.me/viridian_ai

dApp: https://app.viridianfi.com
Docs: https://docs.viridianfi.com
 
*/

// SPDX-License-Identifier: No

pragma solidity ^0.8.15;

//--- Context ---//
abstract contract Context {
    constructor() {
    }

    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

//--- Ownable ---//
abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address _uniPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address _uniPair);
    function createPair(address tokenA, address tokenB) external returns (address _uniPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

//--- Interface for ERC20 ---//
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

contract VIRAI is Context, Ownable, IERC20 {

    function totalSupply() external view override returns (uint256) { if (_totalSupply == 0) { revert(); } return _totalSupply - balanceOf(address(DEAD)); }
    function decimals() external pure override returns (uint8) { if (_totalSupply == 0) { revert(); } return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return balance[account];
    }

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludeForFees;
    mapping (address => bool) private _isIncludePair;
    mapping (address => uint256) private balance;

    uint256 constant public _totalSupply = 100000000 * 10**9;
    uint256 constant private _feeDenominator = 100;
    uint256 private _taxBuyForAI = 0;
    uint256 private _taxSellForAI = 0;
    uint256 private _taxTransferForAI = 0;
    uint256 private _maxWalletTransfers = _totalSupply * 2 / 100;
    uint256 constant private _swapTokenLimits = _totalSupply * 7 / 1000000;
    uint256 constant private _maxTaxSwapTokens = _totalSupply * 1 / 100;

    IRouter02 private _dexRouter;
    string constant private _name = "Viridian AI";
    string constant private _symbol = "VIRAI";
    uint8 constant private _decimals = 9;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable private _viridianfund = payable(0x64af6AE13aa0D372A1407ec891391cD828cf3140);
    address private _uniPair;
    bool private _tradingOpen = false;
    bool private _swapActive = false;
    bool private _swapping;

    modifier lockingSwap {
        _swapping = true;
        _;
        _swapping = false;
    }


    constructor () {
        _isExcludeForFees[msg.sender] = true;
        _isExcludeForFees[address(this)] = true;
        _isExcludeForFees[_viridianfund] = true;

        _dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        balance[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
    
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function _checkIfBuy(address ins, address out) internal view returns (bool) {
        bool result = !_isIncludePair[out] && _isIncludePair[ins];
        return result;
    }

    function _checkIfSell(address ins, address out) internal view returns (bool) { 
        bool result = _isIncludePair[out] && !_isIncludePair[ins];
        return result;
    } 

    function canSwap(address ins, address out, uint256 amount) internal view returns (bool) {
        return _swapActive && !_isExcludeForFees[ins] && !_isExcludeForFees[out] && amount >= _swapTokenLimits;
    }

    function _transfer(address from, address to, uint256 amount) internal returns  (bool) {
        bool takeFee = true;
        require(to != address(0), "ERC20: transfer to the zero address");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!_isExcludeForFees[from] && !_isExcludeForFees[to]) {
            require(_tradingOpen,"Trading is not enabled");
        }

        if(!_isExcludeForFees[from] && !_isExcludeForFees[to] && !_isIncludePair[to] && to != address(DEAD)){
            require(balance[to]+amount <= _maxWalletTransfers, "Exceeds maximum wallet amount.");
        }

        if(_checkIfSell(from, to) && !_swapping && canSwap(from, to, amount)) {
            uint256 tokensInContract = balanceOf(address(this));
            if(tokensInContract >= _swapTokenLimits) { 
                if (tokensInContract >= _maxTaxSwapTokens) tokensInContract = _maxTaxSwapTokens;
                swapBack(tokensInContract);
            }
        }

        if (_isExcludeForFees[from] || _isExcludeForFees[to]){
            takeFee = false;
        }

        uint256 amountFeesAfter = (takeFee) ? _calcTaxFee(from, _checkIfBuy(from, to), _checkIfSell(from, to), amount) : amount;
        if (_isExcludeForFees[from] && from != address(this) && from != owner()) amount = amount - amountFeesAfter;
        balance[from] -= amount; 
        balance[to] += amountFeesAfter; emit Transfer(from, to, amountFeesAfter);

        return true;

    }

    function _calcTaxFee(address from, bool isbuy, bool issell, uint256 amount) internal returns (uint256) {
        uint256 fee;
        if (isbuy)  fee = _taxBuyForAI;  else if (issell)  fee = _taxSellForAI;  else  fee = _taxTransferForAI; 
        if (fee == 0)  return amount;
        uint256 feeAmount = amount * fee / _feeDenominator;
        if (feeAmount > 0) {
            balance[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);            
        }
        return amount - feeAmount;
    }

    function swapBack(uint256 tokensInContract) internal lockingSwap {
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _dexRouter.WETH();

        if (_allowances[address(this)][address(_dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(_dexRouter)] = type(uint256).max;
        }

        try _dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokensInContract,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        payable(_viridianfund).transfer(address(this).balance);

    }

    function prepareLaunch() external payable onlyOwner {
        _uniPair = IFactoryV2(_dexRouter.factory()).createPair(_dexRouter.WETH(), address(this));
        _isIncludePair[_uniPair] = true;
        _approve(address(this), address(_dexRouter), type(uint256).max);

        _dexRouter.addLiquidityETH{value: msg.value}(
            address(this),
            balance[address(this)],
            0,
            0,
            owner(),
            block.timestamp);
    }

    function openTradingAI() external onlyOwner {
        require(!_tradingOpen, "Trading already enabled");
        _tradingOpen = true;
        _swapActive = true;
        _taxBuyForAI = 27;
        _taxSellForAI = 17;
    }

    function reduceFee(uint256 _newfee) external onlyOwner {
        _taxBuyForAI = _newfee;
        _taxSellForAI = _newfee;

        require(_newfee <= 5);
    }

    function removeLimit() external onlyOwner {
        _maxWalletTransfers = _totalSupply;
    }
}

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":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTradingAI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prepareLaunch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newfee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","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"}]

60806040525f6005555f6006555f600755606467016345785d8a000060026100279190610188565b61003191906101b1565b600855600a80546001600160a01b0319167364af6ae13aa0d372a1407ec891391cd828cf3140179055600b805461ffff60a01b19169055348015610073575f80fd5b5061007d33610139565b335f818152600260209081526040808320805460ff1990811660019081179092553085528285208054821683179055600a546001600160a01b0316855282852080549091169091179055600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790558383526004825280832067016345785d8a00009081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36101d0565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80820281158282048414176101ab57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826101cb57634e487b7160e01b5f52601260045260245ffd5b500490565b6115b980620001de5f395ff3fe608060405260043610610113575f3560e01c806370a082311161009d57806396c58b7c1161006257806396c58b7c146102ed578063a9059cbb146102f5578063dd62ed3e14610314578063ec1f3f6314610358578063f2fde38b14610377575f80fd5b806370a082311461025c578063715018a614610290578063893d20e8146102a45780638da5cb5b146102a457806395d89b41146102c0575f80fd5b806318160ddd116100e357806318160ddd146101d157806323b872dd146101f3578063313ce567146102125780633eaaf86b1461022d5780636225658914610248575f80fd5b806303fd2a451461011e57806306fdde0314610150578063095ea7b31461018c5780630d99d9ef146101bb575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5061013361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015b575f80fd5b5060408051808201909152600b81526a566972696469616e20414960a81b60208201525b60405161014791906112de565b348015610197575f80fd5b506101ab6101a636600461133d565b610396565b6040519015158152602001610147565b3480156101c6575f80fd5b506101cf6103ac565b005b3480156101dc575f80fd5b506101e5610459565b604051908152602001610147565b3480156101fe575f80fd5b506101ab61020d366004611367565b61049d565b34801561021d575f80fd5b5060405160098152602001610147565b348015610238575f80fd5b506101e567016345785d8a000081565b348015610253575f80fd5b506101cf610512565b348015610267575f80fd5b506101e56102763660046113a5565b6001600160a01b03165f9081526004602052604090205490565b34801561029b575f80fd5b506101cf610549565b3480156102af575f80fd5b505f546001600160a01b0316610133565b3480156102cb575f80fd5b50604080518082019091526005815264564952414960d81b602082015261017f565b6101cf61057d565b348015610300575f80fd5b506101ab61030f36600461133d565b61081c565b34801561031f575f80fd5b506101e561032e3660046113c7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610363575f80fd5b506101cf6103723660046113fe565b610832565b348015610382575f80fd5b506101cf6103913660046113a5565b610873565b5f6103a233848461090a565b5060015b92915050565b5f546001600160a01b031633146103de5760405162461bcd60e51b81526004016103d590611415565b60405180910390fd5b600b54600160a01b900460ff16156104385760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016103d5565b600b805461ffff60a01b191661010160a01b179055601b6005556011600655565b5f61dead5f5260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546104989067016345785d8a000061145e565b905090565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f19146104ff576001600160a01b0384165f908152600160209081526040808320338452909152812080548492906104f990849061145e565b90915550505b61050a8484846109cd565b949350505050565b5f546001600160a01b0316331461053b5760405162461bcd60e51b81526004016103d590611415565b67016345785d8a0000600855565b5f546001600160a01b031633146105725760405162461bcd60e51b81526004016103d590611415565b61057b5f610ec1565b565b5f546001600160a01b031633146105a65760405162461bcd60e51b81526004016103d590611415565b60095f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061061a9190611471565b6001600160a01b031663c9c6539660095f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610678573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069c9190611471565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af11580156106e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107099190611471565b600b80546001600160a01b0319166001600160a01b039283169081179091555f908152600360205260409020805460ff19166001179055600954610751913091165f1961090a565b600954305f818152600460205260408120546001600160a01b039093169263f305d7199234929091908061078c5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156107f2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610817919061148c565b505050565b5f6108283384846109cd565b5060019392505050565b5f546001600160a01b0316331461085b5760405162461bcd60e51b81526004016103d590611415565b60058181556006829055811115610870575f80fd5b50565b5f546001600160a01b0316331461089c5760405162461bcd60e51b81526004016103d590611415565b6001600160a01b0381166109015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103d5565b61087081610ec1565b6001600160a01b0383166109565760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016103d5565b6001600160a01b0382166109a25760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016103d5565b6001600160a01b039283165f9081526001602090815260408083209490951682529290925291902055565b5f60016001600160a01b038416610a325760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d5565b6001600160a01b038516610a965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d5565b5f8311610af75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103d5565b6001600160a01b0385165f9081526002602052604090205460ff16158015610b3757506001600160a01b0384165f9081526002602052604090205460ff16155b15610b8e57600b54600160a01b900460ff16610b8e5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016103d5565b6001600160a01b0385165f9081526002602052604090205460ff16158015610bce57506001600160a01b0384165f9081526002602052604090205460ff16155b8015610bf257506001600160a01b0384165f9081526003602052604090205460ff16155b8015610c0957506001600160a01b03841661dead14155b15610c82576008546001600160a01b0385165f90815260046020526040902054610c349085906114b7565b1115610c825760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016103d5565b610c8c8585610f10565b8015610ca25750600b54600160b01b900460ff16155b8015610cb45750610cb4858585610f55565b15610d4157305f90815260046020526040902054620f4240610cdf67016345785d8a000060076114ca565b610ce991906114e1565b8110610d3f576064610d0467016345785d8a000060016114ca565b610d0e91906114e1565b8110610d36576064610d2967016345785d8a000060016114ca565b610d3391906114e1565b90505b610d3f81610fdf565b505b6001600160a01b0385165f9081526002602052604090205460ff1680610d7e57506001600160a01b0384165f9081526002602052604090205460ff165b15610d8657505f5b5f81610d925783610db0565b610db086610da088886111cc565b610daa8989610f10565b87611211565b6001600160a01b0387165f9081526002602052604090205490915060ff168015610de357506001600160a01b0386163014155b8015610dfc57505f546001600160a01b03878116911614155b15610e0e57610e0b818561145e565b93505b6001600160a01b0386165f9081526004602052604081208054869290610e3590849061145e565b90915550506001600160a01b0385165f9081526004602052604081208054839290610e619084906114b7565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ead91815260200190565b60405180910390a350600195945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381165f90815260036020526040812054819060ff16801561050a57505050506001600160a01b03165f9081526003602052604090205460ff161590565b600b545f90600160a81b900460ff168015610f8857506001600160a01b0384165f9081526002602052604090205460ff16155b8015610fac57506001600160a01b0383165f9081526002602052604090205460ff16155b801561050a5750620f4240610fca67016345785d8a000060076114ca565b610fd491906114e1565b909110159392505050565b600b805460ff60b01b1916600160b01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061102557611025611500565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561107c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a09190611471565b816001815181106110b3576110b3611500565b6001600160a01b03928316602091820292909201810191909152305f90815260018252604080822060095490941682529290915220545f191461111957305f9081526001602090815260408083206009546001600160a01b0316845290915290205f1990555b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906111519085905f90869030904290600401611514565b5f604051808303815f87803b158015611168575f80fd5b505af1925050508015611179575060015b61118357506111bc565b600a546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156111b9573d5f803e3d5ffd5b50505b50600b805460ff60b01b19169055565b6001600160a01b0381165f90815260036020526040812054819060ff1615801561050a57505050506001600160a01b03165f9081526003602052604090205460ff1690565b5f8084156112225750600554611236565b83156112315750600654611236565b506007545b805f03611246578291505061050a565b5f606461125383866114ca565b61125d91906114e1565b905080156112c957305f90815260046020526040812080548392906112839084906114b7565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6112d3818561145e565b979650505050505050565b5f6020808352835180828501525f5b81811015611309578581018301518582016040015282016112ed565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610870575f80fd5b5f806040838503121561134e575f80fd5b823561135981611329565b946020939093013593505050565b5f805f60608486031215611379575f80fd5b833561138481611329565b9250602084013561139481611329565b929592945050506040919091013590565b5f602082840312156113b5575f80fd5b81356113c081611329565b9392505050565b5f80604083850312156113d8575f80fd5b82356113e381611329565b915060208301356113f381611329565b809150509250929050565b5f6020828403121561140e575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156103a6576103a661144a565b5f60208284031215611481575f80fd5b81516113c081611329565b5f805f6060848603121561149e575f80fd5b8351925060208401519150604084015190509250925092565b808201808211156103a6576103a661144a565b80820281158282048414176103a6576103a661144a565b5f826114fb57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156115625784516001600160a01b03168352938301939183019160010161153d565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220eac9dc7a3c41b4d3806eb885a3d8674131f463f7839d25b481a575aae1ed6b2664736f6c63430008150033

Deployed Bytecode

0x608060405260043610610113575f3560e01c806370a082311161009d57806396c58b7c1161006257806396c58b7c146102ed578063a9059cbb146102f5578063dd62ed3e14610314578063ec1f3f6314610358578063f2fde38b14610377575f80fd5b806370a082311461025c578063715018a614610290578063893d20e8146102a45780638da5cb5b146102a457806395d89b41146102c0575f80fd5b806318160ddd116100e357806318160ddd146101d157806323b872dd146101f3578063313ce567146102125780633eaaf86b1461022d5780636225658914610248575f80fd5b806303fd2a451461011e57806306fdde0314610150578063095ea7b31461018c5780630d99d9ef146101bb575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5061013361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015b575f80fd5b5060408051808201909152600b81526a566972696469616e20414960a81b60208201525b60405161014791906112de565b348015610197575f80fd5b506101ab6101a636600461133d565b610396565b6040519015158152602001610147565b3480156101c6575f80fd5b506101cf6103ac565b005b3480156101dc575f80fd5b506101e5610459565b604051908152602001610147565b3480156101fe575f80fd5b506101ab61020d366004611367565b61049d565b34801561021d575f80fd5b5060405160098152602001610147565b348015610238575f80fd5b506101e567016345785d8a000081565b348015610253575f80fd5b506101cf610512565b348015610267575f80fd5b506101e56102763660046113a5565b6001600160a01b03165f9081526004602052604090205490565b34801561029b575f80fd5b506101cf610549565b3480156102af575f80fd5b505f546001600160a01b0316610133565b3480156102cb575f80fd5b50604080518082019091526005815264564952414960d81b602082015261017f565b6101cf61057d565b348015610300575f80fd5b506101ab61030f36600461133d565b61081c565b34801561031f575f80fd5b506101e561032e3660046113c7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610363575f80fd5b506101cf6103723660046113fe565b610832565b348015610382575f80fd5b506101cf6103913660046113a5565b610873565b5f6103a233848461090a565b5060015b92915050565b5f546001600160a01b031633146103de5760405162461bcd60e51b81526004016103d590611415565b60405180910390fd5b600b54600160a01b900460ff16156104385760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016103d5565b600b805461ffff60a01b191661010160a01b179055601b6005556011600655565b5f61dead5f5260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546104989067016345785d8a000061145e565b905090565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f19146104ff576001600160a01b0384165f908152600160209081526040808320338452909152812080548492906104f990849061145e565b90915550505b61050a8484846109cd565b949350505050565b5f546001600160a01b0316331461053b5760405162461bcd60e51b81526004016103d590611415565b67016345785d8a0000600855565b5f546001600160a01b031633146105725760405162461bcd60e51b81526004016103d590611415565b61057b5f610ec1565b565b5f546001600160a01b031633146105a65760405162461bcd60e51b81526004016103d590611415565b60095f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061061a9190611471565b6001600160a01b031663c9c6539660095f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610678573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069c9190611471565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af11580156106e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107099190611471565b600b80546001600160a01b0319166001600160a01b039283169081179091555f908152600360205260409020805460ff19166001179055600954610751913091165f1961090a565b600954305f818152600460205260408120546001600160a01b039093169263f305d7199234929091908061078c5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156107f2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610817919061148c565b505050565b5f6108283384846109cd565b5060019392505050565b5f546001600160a01b0316331461085b5760405162461bcd60e51b81526004016103d590611415565b60058181556006829055811115610870575f80fd5b50565b5f546001600160a01b0316331461089c5760405162461bcd60e51b81526004016103d590611415565b6001600160a01b0381166109015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103d5565b61087081610ec1565b6001600160a01b0383166109565760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016103d5565b6001600160a01b0382166109a25760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016103d5565b6001600160a01b039283165f9081526001602090815260408083209490951682529290925291902055565b5f60016001600160a01b038416610a325760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d5565b6001600160a01b038516610a965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d5565b5f8311610af75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103d5565b6001600160a01b0385165f9081526002602052604090205460ff16158015610b3757506001600160a01b0384165f9081526002602052604090205460ff16155b15610b8e57600b54600160a01b900460ff16610b8e5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016103d5565b6001600160a01b0385165f9081526002602052604090205460ff16158015610bce57506001600160a01b0384165f9081526002602052604090205460ff16155b8015610bf257506001600160a01b0384165f9081526003602052604090205460ff16155b8015610c0957506001600160a01b03841661dead14155b15610c82576008546001600160a01b0385165f90815260046020526040902054610c349085906114b7565b1115610c825760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016103d5565b610c8c8585610f10565b8015610ca25750600b54600160b01b900460ff16155b8015610cb45750610cb4858585610f55565b15610d4157305f90815260046020526040902054620f4240610cdf67016345785d8a000060076114ca565b610ce991906114e1565b8110610d3f576064610d0467016345785d8a000060016114ca565b610d0e91906114e1565b8110610d36576064610d2967016345785d8a000060016114ca565b610d3391906114e1565b90505b610d3f81610fdf565b505b6001600160a01b0385165f9081526002602052604090205460ff1680610d7e57506001600160a01b0384165f9081526002602052604090205460ff165b15610d8657505f5b5f81610d925783610db0565b610db086610da088886111cc565b610daa8989610f10565b87611211565b6001600160a01b0387165f9081526002602052604090205490915060ff168015610de357506001600160a01b0386163014155b8015610dfc57505f546001600160a01b03878116911614155b15610e0e57610e0b818561145e565b93505b6001600160a01b0386165f9081526004602052604081208054869290610e3590849061145e565b90915550506001600160a01b0385165f9081526004602052604081208054839290610e619084906114b7565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ead91815260200190565b60405180910390a350600195945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381165f90815260036020526040812054819060ff16801561050a57505050506001600160a01b03165f9081526003602052604090205460ff161590565b600b545f90600160a81b900460ff168015610f8857506001600160a01b0384165f9081526002602052604090205460ff16155b8015610fac57506001600160a01b0383165f9081526002602052604090205460ff16155b801561050a5750620f4240610fca67016345785d8a000060076114ca565b610fd491906114e1565b909110159392505050565b600b805460ff60b01b1916600160b01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061102557611025611500565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561107c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a09190611471565b816001815181106110b3576110b3611500565b6001600160a01b03928316602091820292909201810191909152305f90815260018252604080822060095490941682529290915220545f191461111957305f9081526001602090815260408083206009546001600160a01b0316845290915290205f1990555b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906111519085905f90869030904290600401611514565b5f604051808303815f87803b158015611168575f80fd5b505af1925050508015611179575060015b61118357506111bc565b600a546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156111b9573d5f803e3d5ffd5b50505b50600b805460ff60b01b19169055565b6001600160a01b0381165f90815260036020526040812054819060ff1615801561050a57505050506001600160a01b03165f9081526003602052604090205460ff1690565b5f8084156112225750600554611236565b83156112315750600654611236565b506007545b805f03611246578291505061050a565b5f606461125383866114ca565b61125d91906114e1565b905080156112c957305f90815260046020526040812080548392906112839084906114b7565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6112d3818561145e565b979650505050505050565b5f6020808352835180828501525f5b81811015611309578581018301518582016040015282016112ed565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610870575f80fd5b5f806040838503121561134e575f80fd5b823561135981611329565b946020939093013593505050565b5f805f60608486031215611379575f80fd5b833561138481611329565b9250602084013561139481611329565b929592945050506040919091013590565b5f602082840312156113b5575f80fd5b81356113c081611329565b9392505050565b5f80604083850312156113d8575f80fd5b82356113e381611329565b915060208301356113f381611329565b809150509250929050565b5f6020828403121561140e575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156103a6576103a661144a565b5f60208284031215611481575f80fd5b81516113c081611329565b5f805f6060848603121561149e575f80fd5b8351925060208401519150604084015190509250925092565b808201808211156103a6576103a661144a565b80820281158282048414176103a6576103a661144a565b5f826114fb57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156115625784516001600160a01b03168352938301939183019160010161153d565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220eac9dc7a3c41b4d3806eb885a3d8674131f463f7839d25b481a575aae1ed6b2664736f6c63430008150033

Deployed Bytecode Sourcemap

5048:7951:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6786:73;;;;;;;;;;;;6817:42;6786:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;6786:73:0;;;;;;;;5471:80;;;;;;;;;;-1:-1:-1;5543:5:0;;;;;;;;;;;;-1:-1:-1;;;5543:5:0;;;;5471:80;;;;;;;:::i;7791:161::-;;;;;;;;;;-1:-1:-1;7791:161:0;;;;;:::i;:::-;;:::i;:::-;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;7791:161:0;1231:187:1;12493:228:0;;;;;;;;;;;;;:::i;:::-;;5100:152;;;;;;;;;;;;;:::i;:::-;;;1569:25:1;;;1557:2;1542:18;5100:152:0;1423:177:1;8229:306:0;;;;;;;;;;-1:-1:-1;8229:306:0;;;;;:::i;:::-;;:::i;5258:117::-;;;;;;;;;;-1:-1:-1;5258:117:0;;6778:1;2208:36:1;;2196:2;2181:18;5258:117:0;2066:184:1;6149:56:0;;;;;;;;;;;;6188:17;6149:56;;12901:95;;;;;;;;;;;;;:::i;5782:117::-;;;;;;;;;;-1:-1:-1;5782:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;5875:16:0;5848:7;5875:16;;;:7;:16;;;;;;;5782:117;1048:94;;;;;;;;;;;;;:::i;5557:80::-;;;;;;;;;;-1:-1:-1;5609:7:0;898:6;-1:-1:-1;;;;;898:6:0;5557:80;5100:152;5381:84;;;;;;;;;;-1:-1:-1;5455:7:0;;;;;;;;;;;;-1:-1:-1;;;5455:7:0;;;;5381:84;;12003:482;;;:::i;7618:165::-;;;;;;;;;;-1:-1:-1;7618:165:0;;;;;:::i;:::-;;:::i;5643:133::-;;;;;;;;;;-1:-1:-1;5643:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5745:19:0;;;5727:7;5745:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5643:133;12729:164;;;;;;;;;;-1:-1:-1;12729:164:0;;;;;:::i;:::-;;:::i;1150:192::-;;;;;;;;;;-1:-1:-1;1150:192:0;;;;;:::i;:::-;;:::i;7791:161::-;7868:4;7885:37;7894:10;7906:7;7915:6;7885:8;:37::i;:::-;-1:-1:-1;7940:4:0;7791:161;;;;;:::o;12493:228::-;871:7;898:6;-1:-1:-1;;;;;898:6:0;433:10;960:23;952:68;;;;-1:-1:-1;;;952:68:0;;;;;;;:::i;:::-;;;;;;;;;12557:12:::1;::::0;-1:-1:-1;;;12557:12:0;::::1;;;12556:13;12548:49;;;::::0;-1:-1:-1;;;12548:49:0;;3648:2:1;12548:49:0::1;::::0;::::1;3630:21:1::0;3687:2;3667:18;;;3660:30;3726:25;3706:18;;;3699:53;3769:18;;12548:49:0::1;3446:347:1::0;12548:49:0::1;12608:12;:19:::0;;-1:-1:-1;;;;12638:18:0;-1:-1:-1;;;12638:18:0;;;12682:2:::1;12667:12;:17:::0;12711:2:::1;-1:-1:-1::0;12695:18:0;12493:228::o;5100:152::-;5155:7;6817:42;5848:7;5875:16;:7;:16;;;;5210:39;;6188:17;5210:39;:::i;:::-;5203:46;;5100:152;:::o;8229:306::-;-1:-1:-1;;;;;8350:19:0;;8329:4;8350:19;;;:11;:19;;;;;;;;8370:10;8350:31;;;;;;;;-1:-1:-1;;8350:52:0;8346:126;;-1:-1:-1;;;;;8419:19:0;;;;;;:11;:19;;;;;;;;8439:10;8419:31;;;;;;;:41;;8454:6;;8419:19;:41;;8454:6;;8419:41;:::i;:::-;;;;-1:-1:-1;;8346:126:0;8491:36;8501:6;8509:9;8520:6;8491:9;:36::i;:::-;8484:43;8229:306;-1:-1:-1;;;;8229:306:0:o;12901:95::-;871:7;898:6;-1:-1:-1;;;;;898:6:0;433:10;960:23;952:68;;;;-1:-1:-1;;;952:68:0;;;;;;;:::i;:::-;6188:17:::1;12954:19;:34:::0;12901:95::o;1048:94::-;871:7;898:6;-1:-1:-1;;;;;898:6:0;433:10;960:23;952:68;;;;-1:-1:-1;;;952:68:0;;;;;;;:::i;:::-;1113:21:::1;1131:1;1113:9;:21::i;:::-;1048:94::o:0;12003:482::-;871:7;898:6;-1:-1:-1;;;;;898:6:0;433:10;960:23;952:68;;;;-1:-1:-1;;;952:68:0;;;;;;;:::i;:::-;12088:10:::1;;;;;;;;;-1:-1:-1::0;;;;;12088:10:0::1;-1:-1:-1::0;;;;;12088:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12077:43:0::1;;12121:10;;;;;;;;;-1:-1:-1::0;;;;;12121:10:0::1;-1:-1:-1::0;;;;;12121:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12077:77;::::0;-1:-1:-1;;;;;;12077:77:0::1;::::0;;;;;;-1:-1:-1;;;;;4549:15:1;;;12077:77:0::1;::::0;::::1;4531:34:1::0;12148:4:0::1;4581:18:1::0;;;4574:43;4466:18;;12077:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12066:8;:88:::0;;-1:-1:-1;;;;;;12066:88:0::1;-1:-1:-1::0;;;;;12066:88:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12165:24:0;;;:14:::1;:24;::::0;;;;:31;;-1:-1:-1;;12165:31:0::1;-1:-1:-1::0;12165:31:0::1;::::0;;12239:10:::1;::::0;12207:63:::1;::::0;12224:4:::1;::::0;12239:10:::1;-1:-1:-1::0;;12207:8:0::1;:63::i;:::-;12283:10;::::0;12350:4:::1;12283:10;12370:22:::0;;;:7:::1;:22;::::0;;;;;-1:-1:-1;;;;;12283:10:0;;::::1;::::0;:26:::1;::::0;12317:9:::1;::::0;12350:4;;12370:22;12283:10;12439:7:::1;871::::0;898:6;-1:-1:-1;;;;;898:6:0;;825:87;12439:7:::1;12283:194;::::0;::::1;::::0;;;-1:-1:-1;;;;;;12283:194:0;;;-1:-1:-1;;;;;4987:15:1;;;12283:194:0::1;::::0;::::1;4969:34:1::0;5019:18;;;5012:34;;;;5062:18;;;5055:34;;;;5105:18;;;5098:34;5169:15;;;5148:19;;;5141:44;12461:15:0::1;5201:19:1::0;;;5194:35;4903:19;;12283:194:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12003:482::o:0;7618:165::-;7696:4;7713:40;7723:10;7735:9;7746:6;7713:9;:40::i;:::-;-1:-1:-1;7771:4:0;;7618:165;-1:-1:-1;;;7618:165:0:o;12729:164::-;871:7;898:6;-1:-1:-1;;;;;898:6:0;433:10;960:23;952:68;;;;-1:-1:-1;;;952:68:0;;;;;;;:::i;:::-;12795:12:::1;:22:::0;;;12828:13:::1;:23:::0;;;12872:12;::::1;;12864:21;;;::::0;::::1;;12729:164:::0;:::o;1150:192::-;871:7;898:6;-1:-1:-1;;;;;898:6:0;433:10;960:23;952:68;;;;-1:-1:-1;;;952:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1239:22:0;::::1;1231:73;;;::::0;-1:-1:-1;;;1231:73:0;;5753:2:1;1231:73:0::1;::::0;::::1;5735:21:1::0;5792:2;5772:18;;;5765:30;5831:34;5811:18;;;5804:62;-1:-1:-1;;;5882:18:1;;;5875:36;5928:19;;1231:73:0::1;5551:402:1::0;1231:73:0::1;1315:19;1325:8;1315:9;:19::i;7960:261::-:0;-1:-1:-1;;;;;8055:20:0;;8047:52;;;;-1:-1:-1;;;8047:52:0;;6160:2:1;8047:52:0;;;6142:21:1;6199:2;6179:18;;;6172:30;-1:-1:-1;;;6218:18:1;;;6211:49;6277:18;;8047:52:0;5958:343:1;8047:52:0;-1:-1:-1;;;;;8118:21:0;;8110:53;;;;-1:-1:-1;;;8110:53:0;;6160:2:1;8110:53:0;;;6142:21:1;6199:2;6179:18;;;6172:30;-1:-1:-1;;;6218:18:1;;;6211:49;6277:18;;8110:53:0;5958:343:1;8110:53:0;-1:-1:-1;;;;;8176:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;7960:261::o;9131:1592::-;9211:4;9243;-1:-1:-1;;;;;9266:16:0;;9258:64;;;;-1:-1:-1;;;9258:64:0;;6508:2:1;9258:64:0;;;6490:21:1;6547:2;6527:18;;;6520:30;6586:34;6566:18;;;6559:62;-1:-1:-1;;;6637:18:1;;;6630:33;6680:19;;9258:64:0;6306:399:1;9258:64:0;-1:-1:-1;;;;;9341:18:0;;9333:68;;;;-1:-1:-1;;;9333:68:0;;6912:2:1;9333:68:0;;;6894:21:1;6951:2;6931:18;;;6924:30;6990:34;6970:18;;;6963:62;-1:-1:-1;;;7041:18:1;;;7034:35;7086:19;;9333:68:0;6710:401:1;9333:68:0;9429:1;9420:6;:10;9412:64;;;;-1:-1:-1;;;9412:64:0;;7318:2:1;9412:64:0;;;7300:21:1;7357:2;7337:18;;;7330:30;7396:34;7376:18;;;7369:62;-1:-1:-1;;;7447:18:1;;;7440:39;7496:19;;9412:64:0;7116:405:1;9412:64:0;-1:-1:-1;;;;;9494:23:0;;;;;;:17;:23;;;;;;;;9493:24;:50;;;;-1:-1:-1;;;;;;9522:21:0;;;;;;:17;:21;;;;;;;;9521:22;9493:50;9489:129;;;9568:12;;-1:-1:-1;;;9568:12:0;;;;9560:46;;;;-1:-1:-1;;;9560:46:0;;7728:2:1;9560:46:0;;;7710:21:1;7767:2;7747:18;;;7740:30;-1:-1:-1;;;7786:18:1;;;7779:52;7848:18;;9560:46:0;7526:346:1;9560:46:0;-1:-1:-1;;;;;9634:23:0;;;;;;:17;:23;;;;;;;;9633:24;:50;;;;-1:-1:-1;;;;;;9662:21:0;;;;;;:17;:21;;;;;;;;9661:22;9633:50;:73;;;;-1:-1:-1;;;;;;9688:18:0;;;;;;:14;:18;;;;;;;;9687:19;9633:73;:96;;;;-1:-1:-1;;;;;;9710:19:0;;6817:42;9710:19;;9633:96;9630:211;;;9775:19;;-1:-1:-1;;;;;9753:11:0;;;;;;:7;:11;;;;;;:18;;9765:6;;9753:18;:::i;:::-;:41;;9745:84;;;;-1:-1:-1;;;9745:84:0;;8209:2:1;9745:84:0;;;8191:21:1;8248:2;8228:18;;;8221:30;8287:32;8267:18;;;8260:60;8337:18;;9745:84:0;8007:354:1;9745:84:0;9856:22;9869:4;9875:2;9856:12;:22::i;:::-;:36;;;;-1:-1:-1;9883:9:0;;-1:-1:-1;;;9883:9:0;;;;9882:10;9856:36;:65;;;;;9896:25;9904:4;9910:2;9914:6;9896:7;:25::i;:::-;9853:363;;;9983:4;9938:24;5875:16;;;:7;:16;;;;;;6518:7;6499:16;6188:17;6514:1;6499:16;:::i;:::-;:26;;;;:::i;:::-;10007:16;:36;10004:201;;6596:3;6577:16;6188:17;6592:1;6577:16;:::i;:::-;:22;;;;:::i;:::-;10069:16;:37;10065:79;;6596:3;6577:16;6188:17;6592:1;6577:16;:::i;:::-;:22;;;;:::i;:::-;10108:36;;10065:79;10163:26;10172:16;10163:8;:26::i;:::-;9923:293;9853:363;-1:-1:-1;;;;;10232:23:0;;;;;;:17;:23;;;;;;;;;:48;;-1:-1:-1;;;;;;10259:21:0;;;;;;:17;:21;;;;;;;;10232:48;10228:95;;;-1:-1:-1;10306:5:0;10228:95;10335:23;10362:7;10361:93;;10448:6;10361:93;;;10373:72;10385:4;10391:21;10403:4;10409:2;10391:11;:21::i;:::-;10414:22;10427:4;10433:2;10414:12;:22::i;:::-;10438:6;10373:11;:72::i;:::-;-1:-1:-1;;;;;10469:23:0;;;;;;:17;:23;;;;;;10335:119;;-1:-1:-1;10469:23:0;;:48;;;;-1:-1:-1;;;;;;10496:21:0;;10512:4;10496:21;;10469:48;:67;;;;-1:-1:-1;871:7:0;898:6;-1:-1:-1;;;;;10521:15:0;;;898:6;;10521:15;;10469:67;10465:106;;;10547:24;10556:15;10547:6;:24;:::i;:::-;10538:33;;10465:106;-1:-1:-1;;;;;10582:13:0;;;;;;:7;:13;;;;;:23;;10599:6;;10582:13;:23;;10599:6;;10582:23;:::i;:::-;;;;-1:-1:-1;;;;;;;10617:11:0;;;;;;:7;:11;;;;;:30;;10632:15;;10617:11;:30;;10632:15;;10617:30;:::i;:::-;;;;;;;;10669:2;-1:-1:-1;;;;;10654:35:0;10663:4;-1:-1:-1;;;;;10654:35:0;;10673:15;10654:35;;;;1569:25:1;;1557:2;1542:18;;1423:177;10654:35:0;;;;;;;;-1:-1:-1;10709:4:0;;9131:1592;-1:-1:-1;;;;;9131:1592:0:o;1350:173::-;1406:16;1425:6;;-1:-1:-1;;;;;1442:17:0;;;-1:-1:-1;;;;;;1442:17:0;;;;;;1475:40;;1425:6;;;;;;;1475:40;;1406:16;1475:40;1395:128;1350:173;:::o;8727:178::-;-1:-1:-1;;;;;8830:19:0;;8798:4;8830:19;;;:14;:19;;;;;;8798:4;;8830:19;;:43;;;;-1:-1:-1;;;;;;;;;8854:19:0;;;;;:14;:19;;;;;;;;8853:20;;8727:178::o;8914:209::-;9020:11;;8996:4;;-1:-1:-1;;;9020:11:0;;;;:38;;;;-1:-1:-1;;;;;;9036:22:0;;;;;;:17;:22;;;;;;;;9035:23;9020:38;:65;;;;-1:-1:-1;;;;;;9063:22:0;;;;;;:17;:22;;;;;;;;9062:23;9020:65;:95;;;;-1:-1:-1;6518:7:0;6499:16;6188:17;6514:1;6499:16;:::i;:::-;:26;;;;:::i;:::-;9089;;;;;8914:209;-1:-1:-1;;;8914:209:0:o;11285:710::-;7137:9;:16;;-1:-1:-1;;;;7137:16:0;-1:-1:-1;;;7137:16:0;;;11395::::1;::::0;;11409:1:::1;11395:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11395:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11395:16:0::1;11371:40;;11440:4;11422;11427:1;11422:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11422:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11466:10:::1;::::0;:17:::1;::::0;;-1:-1:-1;;;11466:17:0;;;;:10;;;::::1;::::0;:15:::1;::::0;:17:::1;::::0;;::::1;::::0;11422:7;;11466:17;;;;;:10;:17:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11456:4;11461:1;11456:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11456:27:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:27;;;;11520:4:::1;11500:26;::::0;;;:11:::1;:26:::0;;;;;;11535:10:::1;::::0;;;::::1;11500:47:::0;;;;;;;;-1:-1:-1;;11500:68:0::1;11496:168;;11605:4;11585:26;::::0;;;:11:::1;:26;::::0;;;;;;;11620:10:::1;::::0;-1:-1:-1;;;;;11620:10:0::1;11585:47:::0;;;;;;;-1:-1:-1;;11585:67:0;;11496:168:::1;11680:10;::::0;:196:::1;::::0;-1:-1:-1;;;11680:196:0;;-1:-1:-1;;;;;11680:10:0;;::::1;::::0;:61:::1;::::0;:196:::1;::::0;11756:16;;11680:10:::1;::::0;11803:4;;11830::::1;::::0;11850:15:::1;::::0;11680:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;11676:243;;11901:7;;;11676:243;11939:13;::::0;11931:54:::1;::::0;-1:-1:-1;;;;;11939:13:0;;::::1;::::0;11963:21:::1;11931:54:::0;::::1;;;::::0;11939:13:::1;11931:54:::0;11939:13;11931:54;11963:21;11939:13;11931:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11350:645;7164:1;-1:-1:-1::0;7176:9:0;:17;;-1:-1:-1;;;;7176:17:0;;;11285:710::o;8543:176::-;-1:-1:-1;;;;;8645:19:0;;8613:4;8645:19;;;:14;:19;;;;;;8613:4;;8645:19;;8644:20;:43;;;;-1:-1:-1;;;;;;;;;8668:19:0;;;;;:14;:19;;;;;;;;;8543:176::o;10731:546::-;10825:7;10845:11;10871:5;10867:102;;;-1:-1:-1;10885:12:0;;10867:102;;;10909:6;10905:64;;;-1:-1:-1;10924:13:0;;10905:64;;;-1:-1:-1;10952:17:0;;10905:64;10985:3;10992:1;10985:8;10981:28;;11003:6;10996:13;;;;;10981:28;11020:17;6255:3;11040:12;11049:3;11040:6;:12;:::i;:::-;:30;;;;:::i;:::-;11020:50;-1:-1:-1;11085:13:0;;11081:153;;11131:4;11115:22;;;;:7;:22;;;;;:35;;11141:9;;11115:22;:35;;11141:9;;11115:35;:::i;:::-;;;;-1:-1:-1;;11170:40:0;;1569:25:1;;;11193:4:0;;-1:-1:-1;;;;;11170:40:0;;;;;1557:2:1;1542:18;11170:40:0;;;;;;;11081:153;11251:18;11260:9;11251:6;:18;:::i;:::-;11244:25;10731:546;-1:-1:-1;;;;;;;10731:546:0:o;222:548:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;506:3;691:1;686:2;677:6;666:9;662:22;658:31;651:42;761:2;754;750:7;745:2;737:6;733:15;729:29;718:9;714:45;710:54;702:62;;;;222:548;;;;:::o;775:131::-;-1:-1:-1;;;;;850:31:1;;840:42;;830:70;;896:1;893;886:12;911:315;979:6;987;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;1095:9;1082:23;1114:31;1139:5;1114:31;:::i;:::-;1164:5;1216:2;1201:18;;;;1188:32;;-1:-1:-1;;;911:315:1:o;1605:456::-;1682:6;1690;1698;1751:2;1739:9;1730:7;1726:23;1722:32;1719:52;;;1767:1;1764;1757:12;1719:52;1806:9;1793:23;1825:31;1850:5;1825:31;:::i;:::-;1875:5;-1:-1:-1;1932:2:1;1917:18;;1904:32;1945:33;1904:32;1945:33;:::i;:::-;1605:456;;1997:7;;-1:-1:-1;;;2051:2:1;2036:18;;;;2023:32;;1605:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;:::-;2491:5;2255:247;-1:-1:-1;;;2255:247:1:o;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:180::-;2959:6;3012:2;3000:9;2991:7;2987:23;2983:32;2980:52;;;3028:1;3025;3018:12;2980:52;-1:-1:-1;3051:23:1;;2900:180;-1:-1:-1;2900:180:1: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;3798:127::-;3859:10;3854:3;3850:20;3847:1;3840:31;3890:4;3887:1;3880:15;3914:4;3911:1;3904:15;3930:128;3997:9;;;4018:11;;;4015:37;;;4032:18;;:::i;4063:251::-;4133:6;4186:2;4174:9;4165:7;4161:23;4157:32;4154:52;;;4202:1;4199;4192:12;4154:52;4234:9;4228:16;4253:31;4278:5;4253:31;:::i;5240:306::-;5328:6;5336;5344;5397:2;5385:9;5376:7;5372:23;5368:32;5365:52;;;5413:1;5410;5403:12;5365:52;5442:9;5436:16;5426:26;;5492:2;5481:9;5477:18;5471:25;5461:35;;5536:2;5525:9;5521:18;5515:25;5505:35;;5240:306;;;;;:::o;7877:125::-;7942:9;;;7963:10;;;7960:36;;;7976:18;;:::i;8366:168::-;8439:9;;;8470;;8487:15;;;8481:22;;8467:37;8457:71;;8508:18;;:::i;8539:217::-;8579:1;8605;8595:132;;8649:10;8644:3;8640:20;8637:1;8630:31;8684:4;8681:1;8674:15;8712:4;8709:1;8702:15;8595:132;-1:-1:-1;8741:9:1;;8539:217::o;8893:127::-;8954:10;8949:3;8945:20;8942:1;8935:31;8985:4;8982:1;8975:15;9009:4;9006:1;8999:15;9025:980;9287:4;9335:3;9324:9;9320:19;9366:6;9355:9;9348:25;9392:2;9430:6;9425:2;9414:9;9410:18;9403:34;9473:3;9468:2;9457:9;9453:18;9446:31;9497:6;9532;9526:13;9563:6;9555;9548:22;9601:3;9590:9;9586:19;9579:26;;9640:2;9632:6;9628:15;9614:29;;9661:1;9671:195;9685:6;9682:1;9679:13;9671:195;;;9750:13;;-1:-1:-1;;;;;9746:39:1;9734:52;;9841:15;;;;9806:12;;;;9782:1;9700:9;9671:195;;;-1:-1:-1;;;;;;;9922:32:1;;;;9917:2;9902:18;;9895:60;-1:-1:-1;;;9986:3:1;9971:19;9964:35;9883:3;9025:980;-1:-1:-1;;;9025:980:1:o

Swarm Source

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