Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000 SQUARES
Holders
492
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
32,392.183576638215568834 SQUARESValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SquaresAI
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT /* __ __ __ __ __ __ __ __ __ __ \ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ __\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ __\ \__\ \ \__\ \__\ \ \__\ \__\ https://links.squareslabs.ai \ \__\ \ \__\ \__\ \ \__\ \__\ __\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ __\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ \__\ */ pragma solidity 0.8.20; interface IERC20 { // Emitted when tokens are transferred from one account to another. event Transfer(address indexed sender, address indexed recipient, uint256 amount); // Emitted when an allowance is set for a spender by an owner. event Approval(address indexed owner, address indexed spender, uint256 amount); // Returns the total supply of the token. function totalSupply() external view returns (uint256); // Returns the balance of a given account. function balanceOf(address account) external view returns (uint256); // Transfers tokens from the caller to a recipient. function transfer(address recipient, uint256 amount) external returns (bool); // Returns the remaining allowance a spender has from the owner. function allowance(address owner, address spender) external view returns (uint256); // Approves a spender to transfer tokens on behalf of the caller. function approve(address spender, uint256 amount) external returns (bool); // Transfers tokens from a sender to a recipient using an allowance. function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); } abstract contract Context { // Provides the address of the caller of the function. function _msgSender() internal view virtual returns (address) { return msg.sender; } } contract Ownable is Context { address private _contractOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Constructor sets the deployer as the initial owner of the contract. */ constructor() { address msgSender = _msgSender(); _contractOwner = msgSender; emit OwnershipTransferred(address(0), msgSender); } // Returns the address of the current owner. function owner() public view returns (address) { return _contractOwner; } // Modifier to restrict access to only the owner. modifier onlyOwner() { require(_contractOwner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Transfers ownership to a new address. * The newOwner cannot be the zero address. */ function transferOwnership(address newOwner) public onlyOwner { _updateOwnership(newOwner); } // Internal function to update the owner address. function _updateOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_contractOwner, newOwner); _contractOwner = newOwner; } /** * @dev Renounces ownership, leaving the contract ownerless. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_contractOwner, address(0)); _contractOwner = address(0); } } interface IUniswapV2Factory { // Creates a pair for tokenA and tokenB. function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { /** * @dev Swaps an exact amount of tokens for ETH, supporting fee-on-transfer tokens. */ function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 tokenAmount, uint256 minETHAmount, address[] calldata path, address to, uint256 deadline ) external; // Returns the factory address. function factory() external pure returns (address); // Returns the address of WETH. function WETH() external pure returns (address); /** * @dev Adds liquidity for ETH and tokens. */ function addLiquidityETH( address token, uint tokenDesired, uint tokenMin, uint ethMin, address to, uint deadline ) external payable returns (uint tokenAmount, uint ethAmount, uint liquidity); } contract SquaresAI is Context, IERC20, Ownable { string private constant _tokenName = "SquaresAI"; string private constant _tokenSymbol = "SQUARES"; uint8 private constant _tokenDecimals = 18; uint256 private constant _totalSupply = 100000000 * 10**_tokenDecimals; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) private _excludedAccounts; // Tracks excluded accounts for fees or limits. uint256 private constant _minSwapTokens = 10000 * 10**_tokenDecimals; // Minimum tokens required to trigger a swap. uint256 private _maxSwapTokens = 500000 * 10**_tokenDecimals; // Maximum tokens to swap at once. uint256 private _launchBlock; uint256 buyFeeRate = 30; // Buy transaction fee rate in percentage. uint256 sellFeeRate = 30; // Sell transaction fee rate in percentage. uint256 public maxTxValue = 500000 * 10**_tokenDecimals; // Maximum transaction value allowed. uint256 public maxWalletHoldings = 1000000 * 10**_tokenDecimals; // Maximum wallet balance allowed. IUniswapV2Router02 private _uniswapV2Router; address public uniswapV2Pair; address OperationalWallet; // Address for operational funds. address TeamWallet; // Address for team funds. address MarketingWallet; // Address for marketing funds. bool private _isTradingActive = false; // Indicates whether trading is active. /** * @dev Constructor initializes wallets and assigns the total token supply to the deployer. */ constructor() { _balances[msg.sender] = _totalSupply; _excludedAccounts[msg.sender] = 1; _excludedAccounts[address(this)] = 1; OperationalWallet = 0x4F3447E56464A329bCF0FDfa8AE82Ba4E09cF9D8; TeamWallet = 0x72Bce0Da7bC5e3a596521B70F054fD342A02Eb96; MarketingWallet = 0x184Af822Dba5f8D9E5f628D31F0a14a4F130a422; emit Transfer(address(0), _msgSender(), _totalSupply); } // Returns the name of the token. function name() public pure returns (string memory) { return _tokenName; } // Returns the symbol of the token. function symbol() public pure returns (string memory) { return _tokenSymbol; } // Returns the number of decimals used by the token. function decimals() public pure returns (uint8) { return _tokenDecimals; } // Returns the total supply of the token. function totalSupply() public pure override returns (uint256) { return _totalSupply; } /** * @dev Returns current buy and sell tax rates. */ function currentFeeRates() external view returns (uint256 buyTax, uint256 sellTax) { buyTax = buyFeeRate; sellTax = sellFeeRate; } // Returns the balance of the specified account. function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } // Transfers tokens to a specified recipient. function transfer(address recipient, uint256 amount) public override returns (bool) { _executeTransfer(_msgSender(), recipient, amount); return true; } // Returns the remaining allowance for a spender from the owner. function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } // Approves a spender to transfer tokens on behalf of the caller. function approve(address spender, uint256 amount) public override returns (bool) { _setAllowance(_msgSender(), spender, amount); return true; } // Transfers tokens from a sender to a recipient using an allowance. function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _executeTransfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _setAllowance(sender, _msgSender(), currentAllowance - amount); } } return true; } // Internal function to set the allowance for a spender by the owner. function _setAllowance(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); } /** * @dev Enables trading by setting up the Uniswap pair and liquidity. */ function enableTrading() external onlyOwner { require(!_isTradingActive, "Trading is already enabled"); _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); _setAllowance(address(this), address(_uniswapV2Router), _totalSupply); _uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); IERC20(uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max); _isTradingActive = true; _launchBlock = block.number; } /** * @dev Adds or removes an account from exclusion lists. */ function excludeAccount(address account, uint256 value) external onlyOwner { _excludedAccounts[account] = value; } /** * @dev Disables transaction and wallet limits. */ function removeLimits() external onlyOwner { maxTxValue = _totalSupply; maxWalletHoldings = _totalSupply; } /** * @dev Updates the buy and sell tax rates. New rates cannot exceed current ones. */ function setTaxRates(uint256 newBuyTaxRate, uint256 newSellTaxRate) external onlyOwner { require(newBuyTaxRate <= buyFeeRate && newSellTaxRate <= sellFeeRate, "Tax cannot be increased"); buyFeeRate = newBuyTaxRate; sellFeeRate = newSellTaxRate; } /** * @dev Internal function to handle token transfers with tax application. */ function _processTransfer(address from, address to, uint256 amount, uint256 taxRate) private { uint256 taxAmount = (amount * taxRate) / 100; uint256 transferAmount = amount - taxAmount; _balances[from] -= amount; _balances[to] += transferAmount; _balances[address(this)] += taxAmount; emit Transfer(from, to, transferAmount); } /** * @dev Core transfer function that includes validation and fee processing. */ function _executeTransfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(amount > 0, "ERC20: transfer amount must be greater than zero"); uint256 taxRate = 0; if (_excludedAccounts[from] == 0 && _excludedAccounts[to] == 0) { require(_isTradingActive, "Trading is not enabled yet"); require(amount <= maxTxValue, "Transaction amount exceeds the maximum limit"); if (to != uniswapV2Pair && to != address(0xdead)) { require(balanceOf(to) + amount <= maxWalletHoldings, "Recipient wallet exceeds the maximum limit"); } if (block.number < _launchBlock + 3) { taxRate = (from == uniswapV2Pair) ? 30 : 30; } else { if (from == uniswapV2Pair) { taxRate = buyFeeRate; } else if (to == uniswapV2Pair) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance > _minSwapTokens) { uint256 swapAmount = _maxSwapTokens; if (contractTokenBalance > amount) contractTokenBalance = amount; if (contractTokenBalance > swapAmount) contractTokenBalance = swapAmount; _swapTokensForEther(contractTokenBalance); } taxRate = sellFeeRate; } } } _processTransfer(from, to, amount, taxRate); } /** * @dev Swaps tokens for ETH and allocates ETH to designated wallets. */ function _swapTokensForEther(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _setAllowance(address(this), address(_uniswapV2Router), tokenAmount); _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); uint256 contractEthBalance = address(this).balance; uint256 _operationalWallet = (contractEthBalance * 4) / 100; uint256 _teamWallet = (contractEthBalance * 48) / 100; uint256 _marketingWallet = (contractEthBalance * 48) / 100; (bool success, ) = OperationalWallet.call{value: _operationalWallet}(""); (success, ) = TeamWallet.call{value: _teamWallet}(""); (success, ) = MarketingWallet.call{value: _marketingWallet}(""); require(success, "Transfer failed"); } /** * @dev Withdraws ETH from the contract to the owner's wallet. */ function withdrawEther() external onlyOwner { (bool success, ) = owner().call{value: address(this).balance}(""); require(success, "Rescue ETH failed"); } /** * @dev Transfers remaining tokens in the contract to the owner. */ function collectTokens() external onlyOwner { uint256 contractTokenBalance = balanceOf(address(this)); require(contractTokenBalance > 0, "No tokens to rescue"); _processTransfer(address(this), owner(), contractTokenBalance, 0); } /** * @dev Allows the owner to manually swap a percentage of tokens for ETH. */ function manualSwap(uint256 percent) external onlyOwner { uint256 contractTokenBalance = balanceOf(address(this)); uint256 swapAmount = (percent * contractTokenBalance) / 100; _swapTokensForEther(swapAmount); } // Allows the contract to receive ETH. receive() external payable {} }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "remappings": [] }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"amount","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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentFeeRates","outputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTaxRate","type":"uint256"},{"internalType":"uint256","name":"newSellTaxRate","type":"uint256"}],"name":"setTaxRates","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":"pure","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126012600a620002e9565b62000021906207a12062000300565b600455601e60068190556007556200003c6012600a620002e9565b6200004b906207a12062000300565b6008556200005c6012600a620002e9565b6200006b90620f424062000300565b600955600e805460ff60a01b1916905534801562000087575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000d66012600a620002e9565b620000e6906305f5e10062000300565b335f908152600160208181526040808420949094556003905282822081905530825291902055600c80546001600160a01b0319908116734f3447e56464a329bcf0fdfa8ae82ba4e09cf9d817909155600d805482167372bce0da7bc5e3a596521b70f054fd342a02eb96179055600e805490911673184af822dba5f8d9e5f628d31f0a14a4f130a4221790556200017a3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001b36012600a620002e9565b620001c3906305f5e10062000300565b60405190815260200160405180910390a36200031a565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200022e57815f1904821115620002125762000212620001da565b808516156200022057918102915b93841c9390800290620001f3565b509250929050565b5f826200024657506001620002e3565b816200025457505f620002e3565b81600181146200026d5760028114620002785762000298565b6001915050620002e3565b60ff8411156200028c576200028c620001da565b50506001821b620002e3565b5060208310610133831016604e8410600b8410161715620002bd575081810a620002e3565b620002c98383620001ee565b805f1904821115620002df57620002df620001da565b0290505b92915050565b5f620002f960ff84168362000236565b9392505050565b8082028115828204841417620002e357620002e3620001da565b6119c080620003285f395ff3fe60806040526004361061013f575f3560e01c8063751039fc116100b3578063b70143c91161006d578063b70143c914610399578063b7ea78b5146103b8578063c4ac40bb146103cd578063dd62ed3e146103ec578063e8eecf4c14610430578063f2fde38b14610445575f80fd5b8063751039fc146102f35780638433acd1146103075780638a8c523c1461031b5780638da5cb5b1461032f57806395d89b411461034b578063a9059cbb1461037a575f80fd5b806349bd5a5e1161010457806349bd5a5e14610218578063542fa44c1461024f5780635cb23e121461027657806370a0823114610297578063715018a6146102cb5780637362377b146102df575f80fd5b806306fdde031461014a578063095ea7b31461018d57806318160ddd146101bc57806323b872dd146101de578063313ce567146101fd575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600981526853717561726573414960b81b60208201525b60405161018491906115b8565b60405180910390f35b348015610198575f80fd5b506101ac6101a7366004611617565b610464565b6040519015158152602001610184565b3480156101c7575f80fd5b506101d061047a565b604051908152602001610184565b3480156101e9575f80fd5b506101ac6101f8366004611641565b61049a565b348015610208575f80fd5b5060405160128152602001610184565b348015610223575f80fd5b50600b54610237906001600160a01b031681565b6040516001600160a01b039091168152602001610184565b34801561025a575f80fd5b5060065460075460408051928352602083019190915201610184565b348015610281575f80fd5b5061029561029036600461167f565b61054f565b005b3480156102a2575f80fd5b506101d06102b136600461169f565b6001600160a01b03165f9081526001602052604090205490565b3480156102d6575f80fd5b506102956105e3565b3480156102ea575f80fd5b50610295610654565b3480156102fe575f80fd5b50610295610714565b348015610312575f80fd5b50610295610779565b348015610326575f80fd5b50610295610810565b34801561033a575f80fd5b505f546001600160a01b0316610237565b348015610356575f80fd5b506040805180820190915260078152665351554152455360c81b6020820152610177565b348015610385575f80fd5b506101ac610394366004611617565b610bb4565b3480156103a4575f80fd5b506102956103b33660046116c1565b610bc0565b3480156103c3575f80fd5b506101d060095481565b3480156103d8575f80fd5b506102956103e7366004611617565b610c1f565b3480156103f7575f80fd5b506101d06104063660046116d8565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561043b575f80fd5b506101d060085481565b348015610450575f80fd5b5061029561045f36600461169f565b610c63565b5f610470338484610c95565b5060015b92915050565b5f6104876012600a611803565b610495906305f5e100611811565b905090565b5f6104a6848484610db8565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f19811461054457828110156105375760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105448533858403610c95565b506001949350505050565b5f546001600160a01b031633146105785760405162461bcd60e51b815260040161052e90611828565b600654821115801561058c57506007548111155b6105d85760405162461bcd60e51b815260206004820152601760248201527f5461782063616e6e6f7420626520696e63726561736564000000000000000000604482015260640161052e565b600691909155600755565b5f546001600160a01b0316331461060c5760405162461bcd60e51b815260040161052e90611828565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461067d5760405162461bcd60e51b815260040161052e90611828565b5f80546040516001600160a01b039091169047908381818185875af1925050503d805f81146106c7576040519150601f19603f3d011682016040523d82523d5f602084013e6106cc565b606091505b50509050806107115760405162461bcd60e51b815260206004820152601160248201527014995cd8dd59481155120819985a5b1959607a1b604482015260640161052e565b50565b5f546001600160a01b0316331461073d5760405162461bcd60e51b815260040161052e90611828565b6107496012600a611803565b610757906305f5e100611811565b6008556107666012600a611803565b610774906305f5e100611811565b600955565b5f546001600160a01b031633146107a25760405162461bcd60e51b815260040161052e90611828565b305f90815260016020526040902054806107f45760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e7320746f2072657363756560681b604482015260640161052e565b610711306108095f546001600160a01b031690565b835f61111d565b5f546001600160a01b031633146108395760405162461bcd60e51b815260040161052e90611828565b600e54600160a01b900460ff16156108935760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161052e565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156108f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610919919061185d565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610978573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099c919061185d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109e6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0a919061185d565b600b80546001600160a01b0319166001600160a01b03928316179055600a8054610a52923092911690610a3f90601290611803565b610a4d906305f5e100611811565b610c95565b600a546001600160a01b031663f305d7194730610a83816001600160a01b03165f9081526001602052604090205490565b5f80610a965f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610afc573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b219190611878565b5050600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9a91906118a3565b50600e805460ff60a01b1916600160a01b17905543600555565b5f610470338484610db8565b5f546001600160a01b03163314610be95760405162461bcd60e51b815260040161052e90611828565b305f90815260016020526040812054906064610c058385611811565b610c0f91906118c2565b9050610c1a81611218565b505050565b5f546001600160a01b03163314610c485760405162461bcd60e51b815260040161052e90611828565b6001600160a01b039091165f90815260036020526040902055565b5f546001600160a01b03163314610c8c5760405162461bcd60e51b815260040161052e90611828565b610711816114fa565b6001600160a01b038316610cf75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052e565b6001600160a01b038216610d585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e1c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052e565b5f8111610e845760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b606482015260840161052e565b6001600160a01b0383165f90815260036020526040812054158015610ebe57506001600160a01b0383165f90815260036020526040902054155b1561110b57600e54600160a01b900460ff16610f1c5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c656420796574000000000000604482015260640161052e565b600854821115610f835760405162461bcd60e51b815260206004820152602c60248201527f5472616e73616374696f6e20616d6f756e74206578636565647320746865206d60448201526b185e1a5b5d5b481b1a5b5a5d60a21b606482015260840161052e565b600b546001600160a01b03848116911614801590610fac57506001600160a01b03831661dead14155b1561103e5760095482610fd3856001600160a01b03165f9081526001602052604090205490565b610fdd91906118e1565b111561103e5760405162461bcd60e51b815260206004820152602a60248201527f526563697069656e742077616c6c6574206578636565647320746865206d61786044820152691a5b5d5b481b1a5b5a5d60b21b606482015260840161052e565b60055461104c9060036118e1565b43101561107c57600b546001600160a01b0385811691161461106f57601e611072565b601e5b60ff16905061110b565b600b546001600160a01b039081169085160361109b575060065461110b565b600b546001600160a01b039081169084160361110b57305f908152600160205260409020546110cc6012600a611803565b6110d890612710611811565b81111561110557600454838211156110ee578391505b808211156110fa578091505b61110382611218565b505b50506007545b6111178484848461111d565b50505050565b5f606461112a8385611811565b61113491906118c2565b90505f61114182856118f4565b6001600160a01b0387165f9081526001602052604081208054929350869290919061116d9084906118f4565b90915550506001600160a01b0385165f90815260016020526040812080548392906111999084906118e1565b9091555050305f90815260016020526040812080548492906111bc9084906118e1565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161120891815260200190565b60405180910390a3505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061124b5761124b611907565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c6919061185d565b816001815181106112d9576112d9611907565b6001600160a01b039283166020918202929092010152600a546112ff9130911684610c95565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906113379085905f9086903090429060040161191b565b5f604051808303815f87803b15801561134e575f80fd5b505af1158015611360573d5f803e3d5ffd5b504792505f915060649050611376836004611811565b61138091906118c2565b90505f6064611390846030611811565b61139a91906118c2565b90505f60646113aa856030611811565b6113b491906118c2565b600c546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611403576040519150601f19603f3d011682016040523d82523d5f602084013e611408565b606091505b5050600d546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611455576040519150601f19603f3d011682016040523d82523d5f602084013e61145a565b606091505b5050600e546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146114a7576040519150601f19603f3d011682016040523d82523d5f602084013e6114ac565b606091505b505080915050806114f15760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161052e565b50505050505050565b6001600160a01b03811661155f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6020808352835180828501525f5b818110156115e3578581018301518582016040015282016115c7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610711575f80fd5b5f8060408385031215611628575f80fd5b823561163381611603565b946020939093013593505050565b5f805f60608486031215611653575f80fd5b833561165e81611603565b9250602084013561166e81611603565b929592945050506040919091013590565b5f8060408385031215611690575f80fd5b50508035926020909101359150565b5f602082840312156116af575f80fd5b81356116ba81611603565b9392505050565b5f602082840312156116d1575f80fd5b5035919050565b5f80604083850312156116e9575f80fd5b82356116f481611603565b9150602083013561170481611603565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561175d57815f19048211156117435761174361170f565b8085161561175057918102915b93841c9390800290611728565b509250929050565b5f8261177357506001610474565b8161177f57505f610474565b8160018114611795576002811461179f576117bb565b6001915050610474565b60ff8411156117b0576117b061170f565b50506001821b610474565b5060208310610133831016604e8410600b84101617156117de575081810a610474565b6117e88383611723565b805f19048211156117fb576117fb61170f565b029392505050565b5f6116ba60ff841683611765565b80820281158282048414176104745761047461170f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561186d575f80fd5b81516116ba81611603565b5f805f6060848603121561188a575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156118b3575f80fd5b815180151581146116ba575f80fd5b5f826118dc57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104745761047461170f565b818103818111156104745761047461170f565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119695784516001600160a01b031683529383019391830191600101611944565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220fcedb6968e887561c4e8c06228f393a982a957ce2964c4dbfa6dd119837b5daa64736f6c63430008140033
Deployed Bytecode
0x60806040526004361061013f575f3560e01c8063751039fc116100b3578063b70143c91161006d578063b70143c914610399578063b7ea78b5146103b8578063c4ac40bb146103cd578063dd62ed3e146103ec578063e8eecf4c14610430578063f2fde38b14610445575f80fd5b8063751039fc146102f35780638433acd1146103075780638a8c523c1461031b5780638da5cb5b1461032f57806395d89b411461034b578063a9059cbb1461037a575f80fd5b806349bd5a5e1161010457806349bd5a5e14610218578063542fa44c1461024f5780635cb23e121461027657806370a0823114610297578063715018a6146102cb5780637362377b146102df575f80fd5b806306fdde031461014a578063095ea7b31461018d57806318160ddd146101bc57806323b872dd146101de578063313ce567146101fd575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600981526853717561726573414960b81b60208201525b60405161018491906115b8565b60405180910390f35b348015610198575f80fd5b506101ac6101a7366004611617565b610464565b6040519015158152602001610184565b3480156101c7575f80fd5b506101d061047a565b604051908152602001610184565b3480156101e9575f80fd5b506101ac6101f8366004611641565b61049a565b348015610208575f80fd5b5060405160128152602001610184565b348015610223575f80fd5b50600b54610237906001600160a01b031681565b6040516001600160a01b039091168152602001610184565b34801561025a575f80fd5b5060065460075460408051928352602083019190915201610184565b348015610281575f80fd5b5061029561029036600461167f565b61054f565b005b3480156102a2575f80fd5b506101d06102b136600461169f565b6001600160a01b03165f9081526001602052604090205490565b3480156102d6575f80fd5b506102956105e3565b3480156102ea575f80fd5b50610295610654565b3480156102fe575f80fd5b50610295610714565b348015610312575f80fd5b50610295610779565b348015610326575f80fd5b50610295610810565b34801561033a575f80fd5b505f546001600160a01b0316610237565b348015610356575f80fd5b506040805180820190915260078152665351554152455360c81b6020820152610177565b348015610385575f80fd5b506101ac610394366004611617565b610bb4565b3480156103a4575f80fd5b506102956103b33660046116c1565b610bc0565b3480156103c3575f80fd5b506101d060095481565b3480156103d8575f80fd5b506102956103e7366004611617565b610c1f565b3480156103f7575f80fd5b506101d06104063660046116d8565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561043b575f80fd5b506101d060085481565b348015610450575f80fd5b5061029561045f36600461169f565b610c63565b5f610470338484610c95565b5060015b92915050565b5f6104876012600a611803565b610495906305f5e100611811565b905090565b5f6104a6848484610db8565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f19811461054457828110156105375760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105448533858403610c95565b506001949350505050565b5f546001600160a01b031633146105785760405162461bcd60e51b815260040161052e90611828565b600654821115801561058c57506007548111155b6105d85760405162461bcd60e51b815260206004820152601760248201527f5461782063616e6e6f7420626520696e63726561736564000000000000000000604482015260640161052e565b600691909155600755565b5f546001600160a01b0316331461060c5760405162461bcd60e51b815260040161052e90611828565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461067d5760405162461bcd60e51b815260040161052e90611828565b5f80546040516001600160a01b039091169047908381818185875af1925050503d805f81146106c7576040519150601f19603f3d011682016040523d82523d5f602084013e6106cc565b606091505b50509050806107115760405162461bcd60e51b815260206004820152601160248201527014995cd8dd59481155120819985a5b1959607a1b604482015260640161052e565b50565b5f546001600160a01b0316331461073d5760405162461bcd60e51b815260040161052e90611828565b6107496012600a611803565b610757906305f5e100611811565b6008556107666012600a611803565b610774906305f5e100611811565b600955565b5f546001600160a01b031633146107a25760405162461bcd60e51b815260040161052e90611828565b305f90815260016020526040902054806107f45760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e7320746f2072657363756560681b604482015260640161052e565b610711306108095f546001600160a01b031690565b835f61111d565b5f546001600160a01b031633146108395760405162461bcd60e51b815260040161052e90611828565b600e54600160a01b900460ff16156108935760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161052e565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156108f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610919919061185d565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610978573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099c919061185d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109e6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0a919061185d565b600b80546001600160a01b0319166001600160a01b03928316179055600a8054610a52923092911690610a3f90601290611803565b610a4d906305f5e100611811565b610c95565b600a546001600160a01b031663f305d7194730610a83816001600160a01b03165f9081526001602052604090205490565b5f80610a965f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610afc573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b219190611878565b5050600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9a91906118a3565b50600e805460ff60a01b1916600160a01b17905543600555565b5f610470338484610db8565b5f546001600160a01b03163314610be95760405162461bcd60e51b815260040161052e90611828565b305f90815260016020526040812054906064610c058385611811565b610c0f91906118c2565b9050610c1a81611218565b505050565b5f546001600160a01b03163314610c485760405162461bcd60e51b815260040161052e90611828565b6001600160a01b039091165f90815260036020526040902055565b5f546001600160a01b03163314610c8c5760405162461bcd60e51b815260040161052e90611828565b610711816114fa565b6001600160a01b038316610cf75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052e565b6001600160a01b038216610d585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e1c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052e565b5f8111610e845760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b606482015260840161052e565b6001600160a01b0383165f90815260036020526040812054158015610ebe57506001600160a01b0383165f90815260036020526040902054155b1561110b57600e54600160a01b900460ff16610f1c5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c656420796574000000000000604482015260640161052e565b600854821115610f835760405162461bcd60e51b815260206004820152602c60248201527f5472616e73616374696f6e20616d6f756e74206578636565647320746865206d60448201526b185e1a5b5d5b481b1a5b5a5d60a21b606482015260840161052e565b600b546001600160a01b03848116911614801590610fac57506001600160a01b03831661dead14155b1561103e5760095482610fd3856001600160a01b03165f9081526001602052604090205490565b610fdd91906118e1565b111561103e5760405162461bcd60e51b815260206004820152602a60248201527f526563697069656e742077616c6c6574206578636565647320746865206d61786044820152691a5b5d5b481b1a5b5a5d60b21b606482015260840161052e565b60055461104c9060036118e1565b43101561107c57600b546001600160a01b0385811691161461106f57601e611072565b601e5b60ff16905061110b565b600b546001600160a01b039081169085160361109b575060065461110b565b600b546001600160a01b039081169084160361110b57305f908152600160205260409020546110cc6012600a611803565b6110d890612710611811565b81111561110557600454838211156110ee578391505b808211156110fa578091505b61110382611218565b505b50506007545b6111178484848461111d565b50505050565b5f606461112a8385611811565b61113491906118c2565b90505f61114182856118f4565b6001600160a01b0387165f9081526001602052604081208054929350869290919061116d9084906118f4565b90915550506001600160a01b0385165f90815260016020526040812080548392906111999084906118e1565b9091555050305f90815260016020526040812080548492906111bc9084906118e1565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161120891815260200190565b60405180910390a3505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061124b5761124b611907565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c6919061185d565b816001815181106112d9576112d9611907565b6001600160a01b039283166020918202929092010152600a546112ff9130911684610c95565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906113379085905f9086903090429060040161191b565b5f604051808303815f87803b15801561134e575f80fd5b505af1158015611360573d5f803e3d5ffd5b504792505f915060649050611376836004611811565b61138091906118c2565b90505f6064611390846030611811565b61139a91906118c2565b90505f60646113aa856030611811565b6113b491906118c2565b600c546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611403576040519150601f19603f3d011682016040523d82523d5f602084013e611408565b606091505b5050600d546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611455576040519150601f19603f3d011682016040523d82523d5f602084013e61145a565b606091505b5050600e546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146114a7576040519150601f19603f3d011682016040523d82523d5f602084013e6114ac565b606091505b505080915050806114f15760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161052e565b50505050505050565b6001600160a01b03811661155f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6020808352835180828501525f5b818110156115e3578581018301518582016040015282016115c7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610711575f80fd5b5f8060408385031215611628575f80fd5b823561163381611603565b946020939093013593505050565b5f805f60608486031215611653575f80fd5b833561165e81611603565b9250602084013561166e81611603565b929592945050506040919091013590565b5f8060408385031215611690575f80fd5b50508035926020909101359150565b5f602082840312156116af575f80fd5b81356116ba81611603565b9392505050565b5f602082840312156116d1575f80fd5b5035919050565b5f80604083850312156116e9575f80fd5b82356116f481611603565b9150602083013561170481611603565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561175d57815f19048211156117435761174361170f565b8085161561175057918102915b93841c9390800290611728565b509250929050565b5f8261177357506001610474565b8161177f57505f610474565b8160018114611795576002811461179f576117bb565b6001915050610474565b60ff8411156117b0576117b061170f565b50506001821b610474565b5060208310610133831016604e8410600b84101617156117de575081810a610474565b6117e88383611723565b805f19048211156117fb576117fb61170f565b029392505050565b5f6116ba60ff841683611765565b80820281158282048414176104745761047461170f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561186d575f80fd5b81516116ba81611603565b5f805f6060848603121561188a575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156118b3575f80fd5b815180151581146116ba575f80fd5b5f826118dc57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104745761047461170f565b818103818111156104745761047461170f565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119695784516001600160a01b031683529383019391830191600101611944565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220fcedb6968e887561c4e8c06228f393a982a957ce2964c4dbfa6dd119837b5daa64736f6c63430008140033
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.