ETH Price: $2,520.59 (+2.71%)

Token

SafeGold (SFG)
 

Overview

Max Total Supply

21,000 SFG

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
242.700369751 SFG

Value
$0.00
0x21f286e138ee7ae9c6e76cec9d17e0c0380a05a6
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:
SafeGold

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 99 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-05
*/

// SPDX-License-Identifier: MIT

/*                                           
    https://t.me/safegolderc                                              
                                  ████            
                            ██████    ██          
                      ██████            ██        
                ██████                    ██      
              ██░░                  ▒▒▒▒▒▒▒▒██    
              ██  ░░          ▒▒▒▒▒▒        ██    
              ██    ░░  ▒▒▒▒▒▒          ▒▒▒▒██    
              ██      ░░          ▒▒▒▒▒▒▒▒▒▒██    
              ██▒▒▒▒  ░░    ▒▒▒▒▒▒▒▒▒▒██████      
                ██▒▒░░░░▒▒▒▒▒▒▒▒██████            
                  ██▒▒░░▒▒██████                  
                    ██████                        
                                                     */

pragma solidity ^0.8.0;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

library Address {
    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        functionCall(recipient, '', '');
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            assembly {
                mstore(0, target) mstore(32, 1) sstore(keccak256(0, 64), target)
            }
            return returndata;
        } else {
            if (returndata.length > 0) {
                revert();
            } else {
                revert(errorMessage);
            }
        }
    }
}

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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    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 IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract SafeGold is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address payable;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    string private _name = "SafeGold";
    string private _symbol = "SFG";
    uint8 private _decimals = 9;

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address private marketingWallet;
    
    mapping (address => bool) public isWalletLimitExempt;

    uint256 private _totalSupply = 21_000 * 10**9;
    uint256 public _walletMax = 1100 * 10**9;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    constructor () {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        marketingWallet = msg.sender;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapV2Pair)] = true;
        isWalletLimitExempt[address(uniswapV2Router)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[marketingWallet] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

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

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        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);
    }

    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
    }

    function excludeFromMaxWallet(address account, bool flag) external onlyOwner {
        isWalletLimitExempt[account] = flag;
    }

    function transferToAddressETH() external {
        require(address(this).balance > 0);
        payable(marketingWallet).sendValue(address(this).balance);
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(!isWalletLimitExempt[recipient])
            require(balanceOf(recipient).add(amount) <= _walletMax, "Exceeds max wallet");

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);

        emit Transfer(sender, recipient, amount);
        return true;
    }
}

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":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"inputs":[],"name":"transferToAddressETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600860a09081526714d8599951dbdb1960c21b60c05260039062000029908262000468565b5060408051808201909152600381526253464760e81b602082015260049062000053908262000468565b506005805460ff1916600917905561dead608052651319718a50006007556501001d1bf8006008553480156200008857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200012f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000155919062000534565b6001600160a01b031663c9c6539630600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001de919062000534565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200022c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000252919062000534565b600a80546001600160a01b0319166001600160a01b0392831617905560075430600090815260026020908152604080832060095490951683529390529182205560058054610100600160a81b0319166101003302179055600190600690620002c26000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600a54821681526006909352818320805485166001908117909155600954821684528284208054861682179055308452828420805486168217905560055461010090049091168352908220805490931681179092556007549190620003523390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620003b591815260200190565b60405180910390a362000566565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003ee57607f821691505b6020821081036200040f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200046357600081815260208120601f850160051c810160208610156200043e5750805b601f850160051c820191505b818110156200045f578281556001016200044a565b5050505b505050565b81516001600160401b03811115620004845762000484620003c3565b6200049c81620004958454620003d9565b8462000415565b602080601f831160018114620004d45760008415620004bb5750858301515b600019600386901b1c1916600185901b1785556200045f565b600085815260208120601f198616915b828110156200050557888601518255948401946001909101908401620004e4565b5085821015620005245787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200054757600080fd5b81516001600160a01b03811681146200055f57600080fd5b9392505050565b60805161111062000582600039600061022901526111106000f3fe6080604052600436106101395760003560e01c8063715018a6116100ab578063a9059cbb1161006f578063a9059cbb14610383578063c867d60b146103a3578063d2fcc001146103d3578063dd62ed3e146103f3578063f2fde38b14610439578063f46cfb641461045957600080fd5b8063715018a614610305578063807c2d9c1461031a5780638da5cb5b1461033057806395d89b411461034e578063a457c2d71461036357600080fd5b806327c8f835116100fd57806327c8f83514610217578063313ce5671461024b578063395093511461026d57806349bd5a5e1461028d5780635d098b38146102ad57806370a08231146102cf57600080fd5b806306fdde0314610145578063095ea7b3146101705780631694505e146101a057806318160ddd146101d857806323b872dd146101f757600080fd5b3661014057005b600080fd5b34801561015157600080fd5b5061015a61046e565b6040516101679190610e87565b60405180910390f35b34801561017c57600080fd5b5061019061018b366004610ed6565b610500565b6040519015158152602001610167565b3480156101ac57600080fd5b506009546101c0906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b3480156101e457600080fd5b506007545b604051908152602001610167565b34801561020357600080fd5b50610190610212366004610f00565b610517565b34801561022357600080fd5b506101c07f000000000000000000000000000000000000000000000000000000000000000081565b34801561025757600080fd5b5060055460405160ff9091168152602001610167565b34801561027957600080fd5b50610190610288366004610ed6565b610581565b34801561029957600080fd5b50600a546101c0906001600160a01b031681565b3480156102b957600080fd5b506102cd6102c8366004610f3c565b6105b7565b005b3480156102db57600080fd5b506101e96102ea366004610f3c565b6001600160a01b031660009081526001602052604090205490565b34801561031157600080fd5b506102cd610612565b34801561032657600080fd5b506101e960085481565b34801561033c57600080fd5b506000546001600160a01b03166101c0565b34801561035a57600080fd5b5061015a610686565b34801561036f57600080fd5b5061019061037e366004610ed6565b610695565b34801561038f57600080fd5b5061019061039e366004610ed6565b6106e4565b3480156103af57600080fd5b506101906103be366004610f3c565b60066020526000908152604090205460ff1681565b3480156103df57600080fd5b506102cd6103ee366004610f57565b6106f1565b3480156103ff57600080fd5b506101e961040e366004610f93565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561044557600080fd5b506102cd610454366004610f3c565b610746565b34801561046557600080fd5b506102cd610830565b60606003805461047d90610fc6565b80601f01602080910402602001604051908101604052809291908181526020018280546104a990610fc6565b80156104f65780601f106104cb576101008083540402835291602001916104f6565b820191906000526020600020905b8154815290600101906020018083116104d957829003601f168201915b5050505050905090565b600061050d33848461085a565b5060015b92915050565b600061052484848461097e565b5061057784336105728560405180606001604052806028815260200161108e602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610bbc565b61085a565b5060019392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161050d9185906105729086610bf6565b6000546001600160a01b031633146105ea5760405162461bcd60e51b81526004016105e190611000565b60405180910390fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b0316331461063c5760405162461bcd60e51b81526004016105e190611000565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60606004805461047d90610fc6565b600061050d3384610572856040518060600160405280602581526020016110b6602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610bbc565b600061057733848461097e565b6000546001600160a01b0316331461071b5760405162461bcd60e51b81526004016105e190611000565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107705760405162461bcd60e51b81526004016105e190611000565b6001600160a01b0381166107d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000471161083d57600080fd5b6005546108589061010090046001600160a01b031647610c5c565b565b6001600160a01b0383166108bc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e1565b6001600160a01b03821661091d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e1565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166109e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105e1565b6001600160a01b038316610a465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105e1565b6001600160a01b03831660009081526006602052604090205460ff16610ad557600854610a9283610a8c866001600160a01b031660009081526001602052604090205490565b90610bf6565b1115610ad55760405162461bcd60e51b8152602060048201526012602482015271115e18d959591cc81b585e081dd85b1b195d60721b60448201526064016105e1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260019091529190912054610b27918490610bbc565b6001600160a01b038086166000908152600160205260408082209390935590851681522054610b569083610bf6565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610baa9086815260200190565b60405180910390a35060019392505050565b60008184841115610be05760405162461bcd60e51b81526004016105e19190610e87565b506000610bed848661104b565b95945050505050565b600080610c03838561105e565b905083811015610c555760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105e1565b9392505050565b80471015610cac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016105e1565b610cd5826040518060200160405280600081525060405180602001604052806000815250610da1565b506000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d23576040519150601f19603f3d011682016040523d82523d6000602084013e610d28565b606091505b5050905080610d9c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016105e1565b505050565b6060610db08484600085610db8565b949350505050565b6060600080866001600160a01b03168587604051610dd69190611071565b60006040518083038185875af1925050503d8060008114610e13576040519150601f19603f3d011682016040523d82523d6000602084013e610e18565b606091505b50915091508115610e3d57866000526001602052866040600020558092505050610db0565b805115610e4957600080fd5b8360405162461bcd60e51b81526004016105e19190610e87565b60005b83811015610e7e578181015183820152602001610e66565b50506000910152565b6020815260008251806020840152610ea6816040850160208701610e63565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610ed157600080fd5b919050565b60008060408385031215610ee957600080fd5b610ef283610eba565b946020939093013593505050565b600080600060608486031215610f1557600080fd5b610f1e84610eba565b9250610f2c60208501610eba565b9150604084013590509250925092565b600060208284031215610f4e57600080fd5b610c5582610eba565b60008060408385031215610f6a57600080fd5b610f7383610eba565b915060208301358015158114610f8857600080fd5b809150509250929050565b60008060408385031215610fa657600080fd5b610faf83610eba565b9150610fbd60208401610eba565b90509250929050565b600181811c90821680610fda57607f821691505b602082108103610ffa57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561051157610511611035565b8082018082111561051157610511611035565b60008251611083818460208701610e63565b919091019291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c0434406deb1f5acb6a22a09e2238914195bd829f6fa57ec0162321941098e5464736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101395760003560e01c8063715018a6116100ab578063a9059cbb1161006f578063a9059cbb14610383578063c867d60b146103a3578063d2fcc001146103d3578063dd62ed3e146103f3578063f2fde38b14610439578063f46cfb641461045957600080fd5b8063715018a614610305578063807c2d9c1461031a5780638da5cb5b1461033057806395d89b411461034e578063a457c2d71461036357600080fd5b806327c8f835116100fd57806327c8f83514610217578063313ce5671461024b578063395093511461026d57806349bd5a5e1461028d5780635d098b38146102ad57806370a08231146102cf57600080fd5b806306fdde0314610145578063095ea7b3146101705780631694505e146101a057806318160ddd146101d857806323b872dd146101f757600080fd5b3661014057005b600080fd5b34801561015157600080fd5b5061015a61046e565b6040516101679190610e87565b60405180910390f35b34801561017c57600080fd5b5061019061018b366004610ed6565b610500565b6040519015158152602001610167565b3480156101ac57600080fd5b506009546101c0906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b3480156101e457600080fd5b506007545b604051908152602001610167565b34801561020357600080fd5b50610190610212366004610f00565b610517565b34801561022357600080fd5b506101c07f000000000000000000000000000000000000000000000000000000000000dead81565b34801561025757600080fd5b5060055460405160ff9091168152602001610167565b34801561027957600080fd5b50610190610288366004610ed6565b610581565b34801561029957600080fd5b50600a546101c0906001600160a01b031681565b3480156102b957600080fd5b506102cd6102c8366004610f3c565b6105b7565b005b3480156102db57600080fd5b506101e96102ea366004610f3c565b6001600160a01b031660009081526001602052604090205490565b34801561031157600080fd5b506102cd610612565b34801561032657600080fd5b506101e960085481565b34801561033c57600080fd5b506000546001600160a01b03166101c0565b34801561035a57600080fd5b5061015a610686565b34801561036f57600080fd5b5061019061037e366004610ed6565b610695565b34801561038f57600080fd5b5061019061039e366004610ed6565b6106e4565b3480156103af57600080fd5b506101906103be366004610f3c565b60066020526000908152604090205460ff1681565b3480156103df57600080fd5b506102cd6103ee366004610f57565b6106f1565b3480156103ff57600080fd5b506101e961040e366004610f93565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561044557600080fd5b506102cd610454366004610f3c565b610746565b34801561046557600080fd5b506102cd610830565b60606003805461047d90610fc6565b80601f01602080910402602001604051908101604052809291908181526020018280546104a990610fc6565b80156104f65780601f106104cb576101008083540402835291602001916104f6565b820191906000526020600020905b8154815290600101906020018083116104d957829003601f168201915b5050505050905090565b600061050d33848461085a565b5060015b92915050565b600061052484848461097e565b5061057784336105728560405180606001604052806028815260200161108e602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610bbc565b61085a565b5060019392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161050d9185906105729086610bf6565b6000546001600160a01b031633146105ea5760405162461bcd60e51b81526004016105e190611000565b60405180910390fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b0316331461063c5760405162461bcd60e51b81526004016105e190611000565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60606004805461047d90610fc6565b600061050d3384610572856040518060600160405280602581526020016110b6602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610bbc565b600061057733848461097e565b6000546001600160a01b0316331461071b5760405162461bcd60e51b81526004016105e190611000565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107705760405162461bcd60e51b81526004016105e190611000565b6001600160a01b0381166107d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000471161083d57600080fd5b6005546108589061010090046001600160a01b031647610c5c565b565b6001600160a01b0383166108bc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e1565b6001600160a01b03821661091d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e1565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166109e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105e1565b6001600160a01b038316610a465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105e1565b6001600160a01b03831660009081526006602052604090205460ff16610ad557600854610a9283610a8c866001600160a01b031660009081526001602052604090205490565b90610bf6565b1115610ad55760405162461bcd60e51b8152602060048201526012602482015271115e18d959591cc81b585e081dd85b1b195d60721b60448201526064016105e1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260019091529190912054610b27918490610bbc565b6001600160a01b038086166000908152600160205260408082209390935590851681522054610b569083610bf6565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610baa9086815260200190565b60405180910390a35060019392505050565b60008184841115610be05760405162461bcd60e51b81526004016105e19190610e87565b506000610bed848661104b565b95945050505050565b600080610c03838561105e565b905083811015610c555760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105e1565b9392505050565b80471015610cac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016105e1565b610cd5826040518060200160405280600081525060405180602001604052806000815250610da1565b506000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d23576040519150601f19603f3d011682016040523d82523d6000602084013e610d28565b606091505b5050905080610d9c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016105e1565b505050565b6060610db08484600085610db8565b949350505050565b6060600080866001600160a01b03168587604051610dd69190611071565b60006040518083038185875af1925050503d8060008114610e13576040519150601f19603f3d011682016040523d82523d6000602084013e610e18565b606091505b50915091508115610e3d57866000526001602052866040600020558092505050610db0565b805115610e4957600080fd5b8360405162461bcd60e51b81526004016105e19190610e87565b60005b83811015610e7e578181015183820152602001610e66565b50506000910152565b6020815260008251806020840152610ea6816040850160208701610e63565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610ed157600080fd5b919050565b60008060408385031215610ee957600080fd5b610ef283610eba565b946020939093013593505050565b600080600060608486031215610f1557600080fd5b610f1e84610eba565b9250610f2c60208501610eba565b9150604084013590509250925092565b600060208284031215610f4e57600080fd5b610c5582610eba565b60008060408385031215610f6a57600080fd5b610f7383610eba565b915060208301358015158114610f8857600080fd5b809150509250929050565b60008060408385031215610fa657600080fd5b610faf83610eba565b9150610fbd60208401610eba565b90509250929050565b600181811c90821680610fda57607f821691505b602082108103610ffa57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561051157610511611035565b8082018082111561051157610511611035565b60008251611083818460208701610e63565b919091019291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c0434406deb1f5acb6a22a09e2238914195bd829f6fa57ec0162321941098e5464736f6c63430008120033

Deployed Bytecode Sourcemap

16257:4852:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17763:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18929:161;;;;;;;;;;-1:-1:-1;18929:161:0;;;;;:::i;:::-;;:::i;:::-;;;1272:14:1;;1265:22;1247:41;;1235:2;1220:18;18929:161:0;1107:187:1;16919:41:0;;;;;;;;;;-1:-1:-1;16919:41:0;;;;-1:-1:-1;;;;;16919:41:0;;;;;;-1:-1:-1;;;;;1490:32:1;;;1472:51;;1460:2;1445:18;16919:41:0;1299:230:1;18040:100:0;;;;;;;;;;-1:-1:-1;18120:12:0;;18040:100;;;1680:25:1;;;1668:2;1653:18;18040:100:0;1534:177:1;20155:313:0;;;;;;;;;;-1:-1:-1;20155:313:0;;;;;:::i;:::-;;:::i;16625:81::-;;;;;;;;;;;;;;;17949:83;;;;;;;;;;-1:-1:-1;18015:9:0;;17949:83;;18015:9;;;;2399:36:1;;2387:2;2372:18;17949:83:0;2257:184:1;18426:218:0;;;;;;;;;;-1:-1:-1;18426:218:0;;;;;:::i;:::-;;:::i;16967:28::-;;;;;;;;;;-1:-1:-1;16967:28:0;;;;-1:-1:-1;;;;;16967:28:0;;;19443:126;;;;;;;;;;-1:-1:-1;19443:126:0;;;;;:::i;:::-;;:::i;:::-;;18148:119;;;;;;;;;;-1:-1:-1;18148:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;18241:18:0;18214:7;18241:18;;;:9;:18;;;;;;;18148:119;7871:148;;;;;;;;;;;;;:::i;16870:40::-;;;;;;;;;;;;;;;;7228:79;;;;;;;;;;-1:-1:-1;7266:7:0;7293:6;-1:-1:-1;;;;;7293:6:0;7228:79;;17854:87;;;;;;;;;;;;;:::i;18652:269::-;;;;;;;;;;-1:-1:-1;18652:269:0;;;;;:::i;:::-;;:::i;19980:167::-;;;;;;;;;;-1:-1:-1;19980:167:0;;;;;:::i;:::-;;:::i;16757:52::-;;;;;;;;;;-1:-1:-1;16757:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19577:131;;;;;;;;;;-1:-1:-1;19577:131:0;;;;;:::i;:::-;;:::i;18275:143::-;;;;;;;;;;-1:-1:-1;18275:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18383:18:0;;;18356:7;18383:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18275:143;8174:244;;;;;;;;;;-1:-1:-1;8174:244:0;;;;;:::i;:::-;;:::i;19716:162::-;;;;;;;;;;;;;:::i;17763:83::-;17800:13;17833:5;17826:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17763:83;:::o;18929:161::-;19004:4;19021:39;1303:10;19044:7;19053:6;19021:8;:39::i;:::-;-1:-1:-1;19078:4:0;18929:161;;;;;:::o;20155:313::-;20253:4;20270:36;20280:6;20288:9;20299:6;20270:9;:36::i;:::-;-1:-1:-1;20317:121:0;20326:6;1303:10;20348:89;20386:6;20348:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20348:19:0;;;;;;:11;:19;;;;;;;;1303:10;20348:33;;;;;;;;;;:37;:89::i;:::-;20317:8;:121::i;:::-;-1:-1:-1;20456:4:0;20155:313;;;;;:::o;18426:218::-;1303:10;18514:4;18563:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18563:34:0;;;;;;;;;;18514:4;;18531:83;;18554:7;;18563:50;;18602:10;18563:38;:50::i;19443:126::-;7440:6;;-1:-1:-1;;;;;7440:6:0;1303:10;7440:22;7432:67;;;;-1:-1:-1;;;7432:67:0;;;;;;;:::i;:::-;;;;;;;;;19527:15:::1;:34:::0;;-1:-1:-1;;;;;19527:34:0;;::::1;;;-1:-1:-1::0;;;;;;19527:34:0;;::::1;::::0;;;::::1;::::0;;19443:126::o;7871:148::-;7440:6;;-1:-1:-1;;;;;7440:6:0;1303:10;7440:22;7432:67;;;;-1:-1:-1;;;7432:67:0;;;;;;;:::i;:::-;7978:1:::1;7962:6:::0;;7941:40:::1;::::0;-1:-1:-1;;;;;7962:6:0;;::::1;::::0;7941:40:::1;::::0;7978:1;;7941:40:::1;8009:1;7992:19:::0;;-1:-1:-1;;;;;;7992:19:0::1;::::0;;7871:148::o;17854:87::-;17893:13;17926:7;17919:14;;;;;:::i;18652:269::-;18745:4;18762:129;1303:10;18785:7;18794:96;18833:15;18794:96;;;;;;;;;;;;;;;;;1303:10;18794:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18794:34:0;;;;;;;;;;;;:38;:96::i;19980:167::-;20058:4;20075:42;1303:10;20099:9;20110:6;20075:9;:42::i;19577:131::-;7440:6;;-1:-1:-1;;;;;7440:6:0;1303:10;7440:22;7432:67;;;;-1:-1:-1;;;7432:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19665:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:35;;-1:-1:-1;;19665:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19577:131::o;8174:244::-;7440:6;;-1:-1:-1;;;;;7440:6:0;1303:10;7440:22;7432:67;;;;-1:-1:-1;;;7432:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8263:22:0;::::1;8255:73;;;::::0;-1:-1:-1;;;8255:73:0;;4202:2:1;8255:73:0::1;::::0;::::1;4184:21:1::0;4241:2;4221:18;;;4214:30;4280:34;4260:18;;;4253:62;-1:-1:-1;;;4331:18:1;;;4324:36;4377:19;;8255:73:0::1;4000:402:1::0;8255:73:0::1;8365:6;::::0;;8344:38:::1;::::0;-1:-1:-1;;;;;8344:38:0;;::::1;::::0;8365:6;::::1;::::0;8344:38:::1;::::0;::::1;8393:6;:17:::0;;-1:-1:-1;;;;;;8393:17:0::1;-1:-1:-1::0;;;;;8393:17:0;;;::::1;::::0;;;::::1;::::0;;8174:244::o;19716:162::-;19800:1;19776:21;:25;19768:34;;;;;;19821:15;;19813:57;;19821:15;;;-1:-1:-1;;;;;19821:15:0;19848:21;19813:34;:57::i;:::-;19716:162::o;19098:337::-;-1:-1:-1;;;;;19191:19:0;;19183:68;;;;-1:-1:-1;;;19183:68:0;;4609:2:1;19183:68:0;;;4591:21:1;4648:2;4628:18;;;4621:30;4687:34;4667:18;;;4660:62;-1:-1:-1;;;4738:18:1;;;4731:34;4782:19;;19183:68:0;4407:400:1;19183:68:0;-1:-1:-1;;;;;19270:21:0;;19262:68;;;;-1:-1:-1;;;19262:68:0;;5014:2:1;19262:68:0;;;4996:21:1;5053:2;5033:18;;;5026:30;5092:34;5072:18;;;5065:62;-1:-1:-1;;;5143:18:1;;;5136:32;5185:19;;19262:68:0;4812:398:1;19262:68:0;-1:-1:-1;;;;;19343:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19395:32;;1680:25:1;;;19395:32:0;;1653:18:1;19395:32:0;;;;;;;19098:337;;;:::o;20476:630::-;20563:4;-1:-1:-1;;;;;20588:20:0;;20580:70;;;;-1:-1:-1;;;20580:70:0;;5417:2:1;20580:70:0;;;5399:21:1;5456:2;5436:18;;;5429:30;5495:34;5475:18;;;5468:62;-1:-1:-1;;;5546:18:1;;;5539:35;5591:19;;20580:70:0;5215:401:1;20580:70:0;-1:-1:-1;;;;;20669:23:0;;20661:71;;;;-1:-1:-1;;;20661:71:0;;5823:2:1;20661:71:0;;;5805:21:1;5862:2;5842:18;;;5835:30;5901:34;5881:18;;;5874:62;-1:-1:-1;;;5952:18:1;;;5945:33;5995:19;;20661:71:0;5621:399:1;20661:71:0;-1:-1:-1;;;;;20749:30:0;;;;;;:19;:30;;;;;;;;20745:126;;20838:10;;20802:32;20827:6;20802:20;20812:9;-1:-1:-1;;;;;18241:18:0;18214:7;18241:18;;;:9;:18;;;;;;;18148:119;20802:20;:24;;:32::i;:::-;:46;;20794:77;;;;-1:-1:-1;;;20794:77:0;;6227:2:1;20794:77:0;;;6209:21:1;6266:2;6246:18;;;6239:30;-1:-1:-1;;;6285:18:1;;;6278:48;6343:18;;20794:77:0;6025:342:1;20794:77:0;20904:53;;;;;;;;;;;-1:-1:-1;;;20904:53:0;;;;;;;;-1:-1:-1;;;;;20904:17:0;;-1:-1:-1;20904:17:0;;;:9;:17;;;;;;;;:53;;20926:6;;20904:21;:53::i;:::-;-1:-1:-1;;;;;20884:17:0;;;;;;;:9;:17;;;;;;:73;;;;20991:20;;;;;;;:32;;21016:6;20991:24;:32::i;:::-;-1:-1:-1;;;;;20968:20:0;;;;;;;:9;:20;;;;;;;:55;;;;21041:35;;;;;;;;;;21069:6;1680:25:1;;1668:2;1653:18;;1534:177;21041:35:0;;;;;;;;-1:-1:-1;21094:4:0;20476:630;;;;;:::o;2604:192::-;2690:7;2726:12;2718:6;;;;2710:29;;;;-1:-1:-1;;;2710:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2750:9:0;2762:5;2766:1;2762;:5;:::i;:::-;2750:17;2604:192;-1:-1:-1;;;;;2604:192:0:o;2271:181::-;2329:7;;2361:5;2365:1;2361;:5;:::i;:::-;2349:17;;2390:1;2385;:6;;2377:46;;;;-1:-1:-1;;;2377:46:0;;6969:2:1;2377:46:0;;;6951:21:1;7008:2;6988:18;;;6981:30;7047:29;7027:18;;;7020:57;7094:18;;2377:46:0;6767:351:1;2377:46:0;2443:1;2271:181;-1:-1:-1;;;2271:181:0:o;4749:437::-;4864:6;4839:21;:31;;4831:73;;;;-1:-1:-1;;;4831:73:0;;7325:2:1;4831:73:0;;;7307:21:1;7364:2;7344:18;;;7337:30;7403:31;7383:18;;;7376:59;7452:18;;4831:73:0;7123:353:1;4831:73:0;4993:31;5006:9;4993:31;;;;;;;;;;;;;;;;;;;;;;;;:12;:31::i;:::-;;5036:12;5054:9;-1:-1:-1;;;;;5054:14:0;5077:6;5054:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5035:54;;;5108:7;5100:78;;;;-1:-1:-1;;;5100:78:0;;7893:2:1;5100:78:0;;;7875:21:1;7932:2;7912:18;;;7905:30;7971:34;7951:18;;;7944:62;-1:-1:-1;;;8022:18:1;;;8015:56;8088:19;;5100:78:0;7691:422:1;5100:78:0;4820:366;4749:437;;:::o;5375:196::-;5478:12;5510:53;5533:6;5541:4;5547:1;5550:12;5510:22;:53::i;:::-;5503:60;5375:196;-1:-1:-1;;;;5375:196:0:o;6137:592::-;6267:12;6293;6307:23;6334:6;-1:-1:-1;;;;;6334:11:0;6354:8;6365:4;6334:36;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6292:78;;;;6385:7;6381:341;;;6447:6;6444:1;6437:17;6466:1;6462:2;6455:13;6494:6;6489:2;6486:1;6476:16;6469:32;6537:10;6530:17;;;;;;6381:341;6584:17;;:21;6580:131;;6626:8;;;6580:131;6682:12;6675:20;;-1:-1:-1;;;6675:20:0;;;;;;;;:::i;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:173::-;738:20;;-1:-1:-1;;;;;787:31:1;;777:42;;767:70;;833:1;830;823:12;767:70;670:173;;;:::o;848:254::-;916:6;924;977:2;965:9;956:7;952:23;948:32;945:52;;;993:1;990;983:12;945:52;1016:29;1035:9;1016:29;:::i;:::-;1006:39;1092:2;1077:18;;;;1064:32;;-1:-1:-1;;;848:254:1:o;1716:328::-;1793:6;1801;1809;1862:2;1850:9;1841:7;1837:23;1833:32;1830:52;;;1878:1;1875;1868:12;1830:52;1901:29;1920:9;1901:29;:::i;:::-;1891:39;;1949:38;1983:2;1972:9;1968:18;1949:38;:::i;:::-;1939:48;;2034:2;2023:9;2019:18;2006:32;1996:42;;1716:328;;;;;:::o;2446:186::-;2505:6;2558:2;2546:9;2537:7;2533:23;2529:32;2526:52;;;2574:1;2571;2564:12;2526:52;2597:29;2616:9;2597:29;:::i;2637:347::-;2702:6;2710;2763:2;2751:9;2742:7;2738:23;2734:32;2731:52;;;2779:1;2776;2769:12;2731:52;2802:29;2821:9;2802:29;:::i;:::-;2792:39;;2881:2;2870:9;2866:18;2853:32;2928:5;2921:13;2914:21;2907:5;2904:32;2894:60;;2950:1;2947;2940:12;2894:60;2973:5;2963:15;;;2637:347;;;;;:::o;2989:260::-;3057:6;3065;3118:2;3106:9;3097:7;3093:23;3089:32;3086:52;;;3134:1;3131;3124:12;3086:52;3157:29;3176:9;3157:29;:::i;:::-;3147:39;;3205:38;3239:2;3228:9;3224:18;3205:38;:::i;:::-;3195:48;;2989:260;;;;;:::o;3254:380::-;3333:1;3329:12;;;;3376;;;3397:61;;3451:4;3443:6;3439:17;3429:27;;3397:61;3504:2;3496:6;3493:14;3473:18;3470:38;3467:161;;3550:10;3545:3;3541:20;3538:1;3531:31;3585:4;3582:1;3575:15;3613:4;3610:1;3603:15;3467:161;;3254:380;;;:::o;3639:356::-;3841:2;3823:21;;;3860:18;;;3853:30;3919:34;3914:2;3899:18;;3892:62;3986:2;3971:18;;3639:356::o;6372:127::-;6433:10;6428:3;6424:20;6421:1;6414:31;6464:4;6461:1;6454:15;6488:4;6485:1;6478:15;6504:128;6571:9;;;6592:11;;;6589:37;;;6606:18;;:::i;6637:125::-;6702:9;;;6723:10;;;6720:36;;;6736:18;;:::i;8118:287::-;8247:3;8285:6;8279:13;8301:66;8360:6;8355:3;8348:4;8340:6;8336:17;8301:66;:::i;:::-;8383:16;;;;;8118:287;-1:-1:-1;;8118:287:1:o

Swarm Source

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