ERC-20
Overview
Max Total Supply
200,000,000 SBOOM
Holders
360
Market
Price
-
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
87.594714123161385895 SBOOMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
SBoom
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2024-12-20 */ // File contracts/exchange/factory/IERC20.sol pragma solidity >=0.5.0; interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the token decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the token symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the token name. */ function name() external view returns (string memory); /** * @dev Returns the bep token owner. */ function getOwner() external view returns (address); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address _owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File contracts/libs/Context.sol pragma solidity ^0.8.18; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File contracts/libs/Ownable.sol pragma solidity ^0.8.18; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; mapping(address => bool) private _operators; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event UpdateOperator(address indexed operator, bool authorized); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor(address initialOwner) { _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } /** * @dev add / remove operators. * `operator`: operator address * `authorized`: authorized or not */ function updateOperator(address operator, bool authorized) public onlyOwner { require(operator != address(0), "Ownable: operator is the zero address"); emit UpdateOperator(operator, authorized); _operators[operator] = authorized; } /** * @dev Throws if called by any account other than the operators. */ modifier onlyOperator() { require(_operators[_msgSender()], "Ownable: caller is not the operator"); _; } } // File contracts/Spark.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; contract SBoom is IERC20, Ownable { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; uint8 private _decimals; string private _symbol; string private _name; constructor(address initialOwner) Ownable(initialOwner) { _name = "SBoom"; _symbol = "SBOOM"; _decimals = 18; _totalSupply = 200000000 * (10 ** _decimals); _balances[initialOwner] = _totalSupply; } /** * @dev Returns the token owner. */ function getOwner() public view override returns (address) { return owner(); } /** * @dev Returns the token decimals. */ function decimals() public view override returns (uint8) { return _decimals; } /** * @dev Returns the token symbol. */ function symbol() public view override returns (string memory) { return _symbol; } /** * @dev Returns the token name. */ function name() public view override returns (string memory) { return _name; } /** * @dev See {ERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {ERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev See {ERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer( address recipient, uint256 amount ) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {ERC20-allowance}. */ function allowance( address owner, address spender ) public view override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {ERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve( address spender, uint256 amount ) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {ERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for `sender`'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { address spender = _msgSender(); _spendAllowance(sender, spender, amount); _transfer(sender, recipient, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {ERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance( address spender, uint256 addedValue ) public returns (bool) { address owner = _msgSender(); _approve( owner, spender, _allowances[_msgSender()][spender] + addedValue ); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {ERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance( address spender, uint256 subtractedValue ) public returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 fromBalance = _balances[sender]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[recipient] += amount; } emit Transfer(sender, recipient, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal { 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 Burn `amount` tokens and decreasing the total supply. */ function burn(uint256 amount) public returns (bool) { _burn(_msgSender(), amount); return true; } /** * @dev Burn the token in the sender address */ function _burn(address account, uint256 amount) internal { require(amount > 0, "ERC20: amount is zero"); require(_balances[account] >= amount, "ERC20: insufficient balance"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Burn(account, amount); emit Transfer(account, address(0), amount); } event Burn(address indexed account, uint256 amount); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"authorized","type":"bool"}],"name":"UpdateOperator","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"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":[],"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":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"authorized","type":"bool"}],"name":"updateOperator","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561000f575f80fd5b506040516110bc3803806110bc83398101604081905261002e91610128565b80610038816100d9565b5060408051808201909152600581526453426f6f6d60d81b602082015260079061006290826101ed565b5060408051808201909152600581526453424f4f4d60d81b602082015260069061008c90826101ed565b506005805460ff191660129081179091556100a890600a6103a2565b6100b690630bebc2006103b0565b60048190556001600160a01b039091165f908152600260205260409020556103c7565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610138575f80fd5b81516001600160a01b038116811461014e575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061017d57607f821691505b60208210810361019b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101e857805f5260205f20601f840160051c810160208510156101c65750805b601f840160051c820191505b818110156101e5575f81556001016101d2565b50505b505050565b81516001600160401b0381111561020657610206610155565b61021a816102148454610169565b846101a1565b602080601f83116001811461024d575f84156102365750858301515b5f19600386901b1c1916600185901b1785556102a4565b5f85815260208120601f198616915b8281101561027b5788860151825594840194600190910190840161025c565b508582101561029857878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156102fa57815f19048211156102e0576102e06102ac565b808516156102ed57918102915b93841c93908002906102c5565b509250929050565b5f826103105750600161039c565b8161031c57505f61039c565b8160018114610332576002811461033c57610358565b600191505061039c565b60ff84111561034d5761034d6102ac565b50506001821b61039c565b5060208310610133831016604e8410600b841016171561037b575081810a61039c565b61038583836102c0565b805f1904821115610398576103986102ac565b0290505b92915050565b5f61014e60ff841683610302565b808202811582820484141761039c5761039c6102ac565b610ce8806103d45f395ff3fe608060405234801561000f575f80fd5b5060043610610106575f3560e01c806370a082311161009e57806395d89b411161006e57806395d89b4114610224578063a457c2d71461022c578063a9059cbb1461023f578063dd62ed3e14610252578063f2fde38b14610265575f80fd5b806370a08231146101c0578063715018a6146101e8578063893d20e8146101f05780638da5cb5b14610214575f80fd5b8063313ce567116100d9578063313ce56714610170578063395093511461018557806342966c68146101985780636d44a3b2146101ab575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b57806323b872dd1461015d575b5f80fd5b610112610278565b60405161011f9190610b09565b60405180910390f35b61013b610136366004610b59565b610308565b604051901515815260200161011f565b6004545b60405190815260200161011f565b61013b61016b366004610b81565b61031e565b60055460405160ff909116815260200161011f565b61013b610193366004610b59565b610341565b61013b6101a6366004610bba565b610389565b6101be6101b9366004610bd1565b61039c565b005b61014f6101ce366004610c0a565b6001600160a01b03165f9081526002602052604090205490565b6101be61047c565b5f546001600160a01b03165b6040516001600160a01b03909116815260200161011f565b5f546001600160a01b03166101fc565b61011261048f565b61013b61023a366004610b59565b61049e565b61013b61024d366004610b59565b610518565b61014f610260366004610c2a565b610524565b6101be610273366004610c0a565b61054e565b60606007805461028790610c5b565b80601f01602080910402602001604051908101604052809291908181526020018280546102b390610c5b565b80156102fe5780601f106102d5576101008083540402835291602001916102fe565b820191905f5260205f20905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b5f61031433848461058b565b5060015b92915050565b5f3361032b8582856106af565b610336858585610727565b506001949350505050565b335f8181526003602090815260408083206001600160a01b038716845290915281205490919061037f908290869061037a908790610c93565b61058b565b5060019392505050565b5f61039433836108d1565b506001919050565b6103a4610a8e565b6001600160a01b03821661040d5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a206f70657261746f7220697320746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b816001600160a01b03167f2ee52be9d342458b3d25e07faada7ff9bc06723b4aa24edb6321ac1316b8a9dd8260405161044a911515815260200190565b60405180910390a26001600160a01b03919091165f908152600160205260409020805460ff1916911515919091179055565b610484610a8e565b61048d5f610aba565b565b60606006805461028790610c5b565b5f33816104ab8286610524565b90508381101561050b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610404565b610336828686840361058b565b5f610314338484610727565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b610556610a8e565b6001600160a01b03811661057f57604051631e4fbdf760e01b81525f6004820152602401610404565b61058881610aba565b50565b6001600160a01b0383166105ed5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610404565b6001600160a01b03821661064e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610404565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6106ba8484610524565b90505f19811461072157818110156107145760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610404565b610721848484840361058b565b50505050565b6001600160a01b03831661078b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610404565b6001600160a01b0382166107ed5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610404565b6001600160a01b0383165f90815260026020526040902054818110156108645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610404565b6001600160a01b038085165f8181526002602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108c39086815260200190565b60405180910390a350505050565b5f81116109185760405162461bcd60e51b815260206004820152601560248201527445524332303a20616d6f756e74206973207a65726f60581b6044820152606401610404565b6001600160a01b0382165f9081526002602052604090205481111561097f5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e636500000000006044820152606401610404565b6001600160a01b0382165f90815260026020526040902054818110156109f25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610404565b6001600160a01b0383165f81815260026020526040908190208484039055600480548590039055517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca590610a499085815260200190565b60405180910390a26040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016106a2565b5f546001600160a01b0316331461048d5760405163118cdaa760e01b8152336004820152602401610404565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610b54575f80fd5b919050565b5f8060408385031215610b6a575f80fd5b610b7383610b3e565b946020939093013593505050565b5f805f60608486031215610b93575f80fd5b610b9c84610b3e565b9250610baa60208501610b3e565b9150604084013590509250925092565b5f60208284031215610bca575f80fd5b5035919050565b5f8060408385031215610be2575f80fd5b610beb83610b3e565b915060208301358015158114610bff575f80fd5b809150509250929050565b5f60208284031215610c1a575f80fd5b610c2382610b3e565b9392505050565b5f8060408385031215610c3b575f80fd5b610c4483610b3e565b9150610c5260208401610b3e565b90509250929050565b600181811c90821680610c6f57607f821691505b602082108103610c8d57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561031857634e487b7160e01b5f52601160045260245ffdfea264697066735822122049434791b5d5d2020e5bda32d4a6c0d7d29f81b33fa631408a81d0edd7ef682964736f6c63430008190033000000000000000000000000a21746cc14ce46b22d5dfe1133b754b3e7dd3e67
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c806370a082311161009e57806395d89b411161006e57806395d89b4114610224578063a457c2d71461022c578063a9059cbb1461023f578063dd62ed3e14610252578063f2fde38b14610265575f80fd5b806370a08231146101c0578063715018a6146101e8578063893d20e8146101f05780638da5cb5b14610214575f80fd5b8063313ce567116100d9578063313ce56714610170578063395093511461018557806342966c68146101985780636d44a3b2146101ab575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b57806323b872dd1461015d575b5f80fd5b610112610278565b60405161011f9190610b09565b60405180910390f35b61013b610136366004610b59565b610308565b604051901515815260200161011f565b6004545b60405190815260200161011f565b61013b61016b366004610b81565b61031e565b60055460405160ff909116815260200161011f565b61013b610193366004610b59565b610341565b61013b6101a6366004610bba565b610389565b6101be6101b9366004610bd1565b61039c565b005b61014f6101ce366004610c0a565b6001600160a01b03165f9081526002602052604090205490565b6101be61047c565b5f546001600160a01b03165b6040516001600160a01b03909116815260200161011f565b5f546001600160a01b03166101fc565b61011261048f565b61013b61023a366004610b59565b61049e565b61013b61024d366004610b59565b610518565b61014f610260366004610c2a565b610524565b6101be610273366004610c0a565b61054e565b60606007805461028790610c5b565b80601f01602080910402602001604051908101604052809291908181526020018280546102b390610c5b565b80156102fe5780601f106102d5576101008083540402835291602001916102fe565b820191905f5260205f20905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b5f61031433848461058b565b5060015b92915050565b5f3361032b8582856106af565b610336858585610727565b506001949350505050565b335f8181526003602090815260408083206001600160a01b038716845290915281205490919061037f908290869061037a908790610c93565b61058b565b5060019392505050565b5f61039433836108d1565b506001919050565b6103a4610a8e565b6001600160a01b03821661040d5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a206f70657261746f7220697320746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b816001600160a01b03167f2ee52be9d342458b3d25e07faada7ff9bc06723b4aa24edb6321ac1316b8a9dd8260405161044a911515815260200190565b60405180910390a26001600160a01b03919091165f908152600160205260409020805460ff1916911515919091179055565b610484610a8e565b61048d5f610aba565b565b60606006805461028790610c5b565b5f33816104ab8286610524565b90508381101561050b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610404565b610336828686840361058b565b5f610314338484610727565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b610556610a8e565b6001600160a01b03811661057f57604051631e4fbdf760e01b81525f6004820152602401610404565b61058881610aba565b50565b6001600160a01b0383166105ed5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610404565b6001600160a01b03821661064e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610404565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6106ba8484610524565b90505f19811461072157818110156107145760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610404565b610721848484840361058b565b50505050565b6001600160a01b03831661078b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610404565b6001600160a01b0382166107ed5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610404565b6001600160a01b0383165f90815260026020526040902054818110156108645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610404565b6001600160a01b038085165f8181526002602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108c39086815260200190565b60405180910390a350505050565b5f81116109185760405162461bcd60e51b815260206004820152601560248201527445524332303a20616d6f756e74206973207a65726f60581b6044820152606401610404565b6001600160a01b0382165f9081526002602052604090205481111561097f5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e636500000000006044820152606401610404565b6001600160a01b0382165f90815260026020526040902054818110156109f25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610404565b6001600160a01b0383165f81815260026020526040908190208484039055600480548590039055517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca590610a499085815260200190565b60405180910390a26040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016106a2565b5f546001600160a01b0316331461048d5760405163118cdaa760e01b8152336004820152602401610404565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610b54575f80fd5b919050565b5f8060408385031215610b6a575f80fd5b610b7383610b3e565b946020939093013593505050565b5f805f60608486031215610b93575f80fd5b610b9c84610b3e565b9250610baa60208501610b3e565b9150604084013590509250925092565b5f60208284031215610bca575f80fd5b5035919050565b5f8060408385031215610be2575f80fd5b610beb83610b3e565b915060208301358015158114610bff575f80fd5b809150509250929050565b5f60208284031215610c1a575f80fd5b610c2382610b3e565b9392505050565b5f8060408385031215610c3b575f80fd5b610c4483610b3e565b9150610c5260208401610b3e565b90509250929050565b600181811c90821680610c6f57607f821691505b602082108103610c8d57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561031857634e487b7160e01b5f52601160045260245ffdfea264697066735822122049434791b5d5d2020e5bda32d4a6c0d7d29f81b33fa631408a81d0edd7ef682964736f6c63430008190033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a21746cc14ce46b22d5dfe1133b754b3e7dd3e67
-----Decoded View---------------
Arg [0] : initialOwner (address): 0xa21746cc14cE46b22D5dFE1133b754b3e7dd3E67
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a21746cc14ce46b22d5dfe1133b754b3e7dd3e67
Deployed Bytecode Sourcemap
7440:8829:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8522:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9739:186;;;;;;:::i;:::-;;:::i;:::-;;;1039:14:1;;1032:22;1014:41;;1002:2;987:18;9739:186:0;874:187:1;8678:100:0;8758:12;;8678:100;;;1212:25:1;;;1200:2;1185:18;8678:100:0;1066:177:1;10396:309:0;;;;;;:::i;:::-;;:::i;8206:92::-;8281:9;;8206:92;;8281:9;;;;1723:36:1;;1711:2;1696:18;8206:92:0;1581:184:1;11113:314:0;;;;;;:::i;:::-;;:::i;15371:120::-;;;;;;:::i;:::-;;:::i;6883:249::-;;;;;;:::i;:::-;;:::i;:::-;;8840:119;;;;;;:::i;:::-;-1:-1:-1;;;;;8933:18:0;8906:7;8933:18;;;:9;:18;;;;;;;8840:119;5986:97;;;:::i;8047:92::-;8097:7;5426:6;-1:-1:-1;;;;;5426:6:0;8047:92;;;-1:-1:-1;;;;;2662:32:1;;;2644:51;;2632:2;2617:18;8047:92:0;2498:203:1;5357:81:0;5403:7;5426:6;-1:-1:-1;;;;;5426:6:0;5357:81;;8363:96;;;:::i;11929:488::-;;;;;;:::i;:::-;;:::i;9171:192::-;;;;;;:::i;:::-;;:::i;9425:168::-;;;;;;:::i;:::-;;:::i;6228:200::-;;;;;;:::i;:::-;;:::i;8522:92::-;8568:13;8601:5;8594:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8522:92;:::o;9739:186::-;9839:4;9856:39;3720:10;9879:7;9888:6;9856:8;:39::i;:::-;-1:-1:-1;9913:4:0;9739:186;;;;;:::o;10396:309::-;10530:4;3720:10;10588:40;10604:6;3720:10;10621:6;10588:15;:40::i;:::-;10639:36;10649:6;10657:9;10668:6;10639:9;:36::i;:::-;-1:-1:-1;10693:4:0;;10396:309;-1:-1:-1;;;;10396:309:0:o;11113:314::-;3720:10;11218:4;11339:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11339:34:0;;;;;;;;;;11218:4;;3720:10;11274:123;;3720:10;;11317:7;;11339:47;;11376:10;;11339:47;:::i;:::-;11274:8;:123::i;:::-;-1:-1:-1;11415:4:0;;11113:314;-1:-1:-1;;;11113:314:0:o;15371:120::-;15417:4;15434:27;3720:10;15454:6;15434:5;:27::i;:::-;-1:-1:-1;15479:4:0;;15371:120;-1:-1:-1;15371:120:0:o;6883:249::-;5257:13;:11;:13::i;:::-;-1:-1:-1;;;;;6974:22:0;::::1;6966:72;;;::::0;-1:-1:-1;;;6966:72:0;;3785:2:1;6966:72:0::1;::::0;::::1;3767:21:1::0;3824:2;3804:18;;;3797:30;3863:34;3843:18;;;3836:62;-1:-1:-1;;;3914:18:1;;;3907:35;3959:19;;6966:72:0::1;;;;;;;;;7065:8;-1:-1:-1::0;;;;;7050:36:0::1;;7075:10;7050:36;;;;1039:14:1::0;1032:22;1014:41;;1002:2;987:18;;874:187;7050:36:0::1;;;;;;;;-1:-1:-1::0;;;;;7093:20:0;;;::::1;;::::0;;;:10:::1;:20;::::0;;;;:33;;-1:-1:-1;;7093:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;6883:249::o;5986:97::-;5257:13;:11;:13::i;:::-;6047:30:::1;6074:1;6047:18;:30::i;:::-;5986:97::o:0;8363:96::-;8411:13;8444:7;8437:14;;;;;:::i;11929:488::-;12039:4;3720:10;12039:4;12122:25;3720:10;12139:7;12122:9;:25::i;:::-;12095:52;;12200:15;12180:16;:35;;12158:122;;;;-1:-1:-1;;;12158:122:0;;4191:2:1;12158:122:0;;;4173:21:1;4230:2;4210:18;;;4203:30;4269:34;4249:18;;;4242:62;-1:-1:-1;;;4320:18:1;;;4313:35;4365:19;;12158:122:0;3989:401:1;12158:122:0;12316:60;12325:5;12332:7;12360:15;12341:16;:34;12316:8;:60::i;9171:192::-;9274:4;9291:42;3720:10;9315:9;9326:6;9291:9;:42::i;9425:168::-;-1:-1:-1;;;;;9558:18:0;;;9531:7;9558:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9425:168::o;6228:200::-;5257:13;:11;:13::i;:::-;-1:-1:-1;;;;;6309:22:0;::::1;6305:83;;6349:31;::::0;-1:-1:-1;;;6349:31:0;;6377:1:::1;6349:31;::::0;::::1;2644:51:1::0;2617:18;;6349:31:0::1;2498:203:1::0;6305:83:0::1;6394:28;6413:8;6394:18;:28::i;:::-;6228:200:::0;:::o;14940:338::-;-1:-1:-1;;;;;15034:19:0;;15026:68;;;;-1:-1:-1;;;15026:68:0;;4597:2:1;15026:68:0;;;4579:21:1;4636:2;4616:18;;;4609:30;4675:34;4655:18;;;4648:62;-1:-1:-1;;;4726:18:1;;;4719:34;4770:19;;15026:68:0;4395:400:1;15026:68:0;-1:-1:-1;;;;;15113:21:0;;15105:68;;;;-1:-1:-1;;;15105:68:0;;5002:2:1;15105:68:0;;;4984:21:1;5041:2;5021:18;;;5014:30;5080:34;5060:18;;;5053:62;-1:-1:-1;;;5131:18:1;;;5124:32;5173:19;;15105:68:0;4800:398:1;15105:68:0;-1:-1:-1;;;;;15186:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15238:32;;1212:25:1;;;15238:32:0;;1185:18:1;15238:32:0;;;;;;;;14940:338;;;:::o;12708:494::-;12835:24;12862:25;12872:5;12879:7;12862:9;:25::i;:::-;12835:52;;-1:-1:-1;;12902:16:0;:37;12898:297;;13002:6;12982:16;:26;;12956:117;;;;-1:-1:-1;;;12956:117:0;;5405:2:1;12956:117:0;;;5387:21:1;5444:2;5424:18;;;5417:30;5483:31;5463:18;;;5456:59;5532:18;;12956:117:0;5203:353:1;12956:117:0;13117:51;13126:5;13133:7;13161:6;13142:16;:25;13117:8;:51::i;:::-;12824:378;12708:494;;;:::o;13692:808::-;-1:-1:-1;;;;;13824:20:0;;13816:70;;;;-1:-1:-1;;;13816:70:0;;5763:2:1;13816:70:0;;;5745:21:1;5802:2;5782:18;;;5775:30;5841:34;5821:18;;;5814:62;-1:-1:-1;;;5892:18:1;;;5885:35;5937:19;;13816:70:0;5561:401:1;13816:70:0;-1:-1:-1;;;;;13905:23:0;;13897:71;;;;-1:-1:-1;;;13897:71:0;;6169:2:1;13897:71:0;;;6151:21:1;6208:2;6188:18;;;6181:30;6247:34;6227:18;;;6220:62;-1:-1:-1;;;6298:18:1;;;6291:33;6341:19;;13897:71:0;5967:399:1;13897:71:0;-1:-1:-1;;;;;14003:17:0;;13981:19;14003:17;;;:9;:17;;;;;;14053:21;;;;14031:109;;;;-1:-1:-1;;;14031:109:0;;6573:2:1;14031:109:0;;;6555:21:1;6612:2;6592:18;;;6585:30;6651:34;6631:18;;;6624:62;-1:-1:-1;;;6702:18:1;;;6695:36;6748:19;;14031:109:0;6371:402:1;14031:109:0;-1:-1:-1;;;;;14178:17:0;;;;;;;:9;:17;;;;;;14198:20;;;14178:40;;14398:20;;;;;;;;;;:30;;;;;;14457:35;;;;;;14212:6;1212:25:1;;1200:2;1185:18;;1066:177;14457:35:0;;;;;;;;13805:695;13692:808;;;:::o;15567:639::-;15652:1;15643:6;:10;15635:44;;;;-1:-1:-1;;;15635:44:0;;6980:2:1;15635:44:0;;;6962:21:1;7019:2;6999:18;;;6992:30;-1:-1:-1;;;7038:18:1;;;7031:51;7099:18;;15635:44:0;6778:345:1;15635:44:0;-1:-1:-1;;;;;15698:18:0;;;;;;:9;:18;;;;;;:28;-1:-1:-1;15698:28:0;15690:68;;;;-1:-1:-1;;;15690:68:0;;7330:2:1;15690:68:0;;;7312:21:1;7369:2;7349:18;;;7342:30;7408:29;7388:18;;;7381:57;7455:18;;15690:68:0;7128:351:1;15690:68:0;-1:-1:-1;;;;;15796:18:0;;15771:22;15796:18;;;:9;:18;;;;;;15833:24;;;;15825:71;;;;-1:-1:-1;;;15825:71:0;;7686:2:1;15825:71:0;;;7668:21:1;7725:2;7705:18;;;7698:30;7764:34;7744:18;;;7737:62;-1:-1:-1;;;7815:18:1;;;7808:32;7857:19;;15825:71:0;7484:398:1;15825:71:0;-1:-1:-1;;;;;15934:18:0;;;;;;:9;:18;;;;;;;15955:23;;;15934:44;;16073:12;:22;;;;;;;16124:21;;;;;15972:6;1212:25:1;;1200:2;1185:18;;1066:177;16124:21:0;;;;;;;;16161:37;;1212:25:1;;;16187:1:0;;-1:-1:-1;;;;;16161:37:0;;;;;1200:2:1;1185:18;16161:37:0;1066:177:1;5508:150:0;5403:7;5426:6;-1:-1:-1;;;;;5426:6:0;3720:10;5564:23;5560:93;;5605:40;;-1:-1:-1;;;5605:40:0;;3720:10;5605:40;;;2644:51:1;2617:18;;5605:40:0;2498:203:1;6578:177:0;6648:16;6667:6;;-1:-1:-1;;;;;6680:17:0;;;-1:-1:-1;;;;;;6680:17:0;;;;;;6709:40;;6667:6;;;;;;;6709:40;;6648:16;6709:40;6641:114;6578:177;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:173::-;505:20;;-1:-1:-1;;;;;554:31:1;;544:42;;534:70;;600:1;597;590:12;534:70;437:173;;;:::o;615:254::-;683:6;691;744:2;732:9;723:7;719:23;715:32;712:52;;;760:1;757;750:12;712:52;783:29;802:9;783:29;:::i;:::-;773:39;859:2;844:18;;;;831:32;;-1:-1:-1;;;615:254:1:o;1248:328::-;1325:6;1333;1341;1394:2;1382:9;1373:7;1369:23;1365:32;1362:52;;;1410:1;1407;1400:12;1362:52;1433:29;1452:9;1433:29;:::i;:::-;1423:39;;1481:38;1515:2;1504:9;1500:18;1481:38;:::i;:::-;1471:48;;1566:2;1555:9;1551:18;1538:32;1528:42;;1248:328;;;;;:::o;1770:180::-;1829:6;1882:2;1870:9;1861:7;1857:23;1853:32;1850:52;;;1898:1;1895;1888:12;1850:52;-1:-1:-1;1921:23:1;;1770:180;-1:-1:-1;1770:180:1:o;1955:347::-;2020:6;2028;2081:2;2069:9;2060:7;2056:23;2052:32;2049:52;;;2097:1;2094;2087:12;2049:52;2120:29;2139:9;2120:29;:::i;:::-;2110:39;;2199:2;2188:9;2184:18;2171:32;2246:5;2239:13;2232:21;2225:5;2222:32;2212:60;;2268:1;2265;2258:12;2212:60;2291:5;2281:15;;;1955:347;;;;;:::o;2307:186::-;2366:6;2419:2;2407:9;2398:7;2394:23;2390:32;2387:52;;;2435:1;2432;2425:12;2387:52;2458:29;2477:9;2458:29;:::i;:::-;2448:39;2307:186;-1:-1:-1;;;2307:186:1:o;2706:260::-;2774:6;2782;2835:2;2823:9;2814:7;2810:23;2806:32;2803:52;;;2851:1;2848;2841:12;2803:52;2874:29;2893:9;2874:29;:::i;:::-;2864:39;;2922:38;2956:2;2945:9;2941:18;2922:38;:::i;:::-;2912:48;;2706:260;;;;;:::o;2971:380::-;3050:1;3046:12;;;;3093;;;3114:61;;3168:4;3160:6;3156:17;3146:27;;3114:61;3221:2;3213:6;3210:14;3190:18;3187:38;3184:161;;3267:10;3262:3;3258:20;3255:1;3248:31;3302:4;3299:1;3292:15;3330:4;3327:1;3320:15;3184:161;;2971:380;;;:::o;3356:222::-;3421:9;;;3442:10;;;3439:133;;;3494:10;3489:3;3485:20;3482:1;3475:31;3529:4;3526:1;3519:15;3557:4;3554:1;3547:15
Swarm Source
ipfs://49434791b5d5d2020e5bda32d4a6c0d7d29f81b33fa631408a81d0edd7ef6829
[ 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.