Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 479 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 21392424 | 438 days ago | IN | 0 ETH | 0.00079258 | ||||
| Approve | 18468279 | 847 days ago | IN | 0 ETH | 0.00039075 | ||||
| Approve | 17068228 | 1044 days ago | IN | 0 ETH | 0.00084847 | ||||
| Approve | 17022013 | 1050 days ago | IN | 0 ETH | 0.00055079 | ||||
| Approve | 17013060 | 1052 days ago | IN | 0 ETH | 0.00047683 | ||||
| Approve | 17009410 | 1052 days ago | IN | 0 ETH | 0.00053195 | ||||
| Approve | 16386198 | 1140 days ago | IN | 0 ETH | 0.00064283 | ||||
| Transfer | 16170667 | 1170 days ago | IN | 0 ETH | 0.00072949 | ||||
| Approve | 16170653 | 1170 days ago | IN | 0 ETH | 0.00080966 | ||||
| Approve | 16155190 | 1172 days ago | IN | 0 ETH | 0.00080935 | ||||
| Approve | 16115807 | 1177 days ago | IN | 0 ETH | 0.00040018 | ||||
| Approve | 16115804 | 1177 days ago | IN | 0 ETH | 0.00072802 | ||||
| Approve | 15853819 | 1214 days ago | IN | 0 ETH | 0.00081278 | ||||
| Approve | 15826294 | 1218 days ago | IN | 0 ETH | 0.00066207 | ||||
| Approve | 15826293 | 1218 days ago | IN | 0 ETH | 0.0010751 | ||||
| Approve | 15750268 | 1228 days ago | IN | 0 ETH | 0.00039597 | ||||
| Approve | 15750255 | 1228 days ago | IN | 0 ETH | 0.00071002 | ||||
| Transfer | 15741062 | 1230 days ago | IN | 0 ETH | 0.00100701 | ||||
| Transfer | 15741045 | 1230 days ago | IN | 0 ETH | 0.00090144 | ||||
| Transfer | 15741039 | 1230 days ago | IN | 0 ETH | 0.00093705 | ||||
| Transfer | 15741030 | 1230 days ago | IN | 0 ETH | 0.00095401 | ||||
| Transfer | 15741024 | 1230 days ago | IN | 0 ETH | 0.00097955 | ||||
| Transfer | 15741018 | 1230 days ago | IN | 0 ETH | 0.00079662 | ||||
| Approve | 15701921 | 1235 days ago | IN | 0 ETH | 0.00022908 | ||||
| Approve | 15694790 | 1236 days ago | IN | 0 ETH | 0.00023972 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Kurasshu
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-09-01
*/
//SPDX-License-Identifier: Unlicensed
pragma solidity >=0.7.0 <0.9.0;
/**
Fuck the feds, fuck inflated interest rates, we will soar while their plans crash.
Fuck you, we're mooning.
Sound like a good plan to you?
This is クラッシュ (Kurasshu)
Telegram: https://t.me/KurasshuEntryPortal
Twitter: https://twitter.com/KurasshuEth
Website: https://kurasshu.com/
Taxes? None to speak of. We’re not the enemy, they are
*/
abstract contract Context {
function _msgSender() internal view returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @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");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
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");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
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");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
* the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
*
* _Available since v4.8._
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
/**
* @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason or using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the subtraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function 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);
}
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20 {
mapping(address => uint256) public _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
* - the caller must have allowance for ``from``'s tokens of at least
* `amount`.
*/
function transferFrom(
address from,
address to,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, 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 {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, 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 {IERC20-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 virtual 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 Moves `amount` of tokens from `from` to `to`.
*
* This 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:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
*/
function _transfer(
address from,
address to,
uint256 amount
) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
// decrementing then incrementing.
_balances[to] += amount;
}
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
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 Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This 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 virtual {
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 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 virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* has been transferred to `to`.
* - when `from` is zero, `amount` tokens have been minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens have been burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
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 Kurasshu is ERC20 {
using Address for address;
mapping(address => bool) public banned;
mapping(address => uint256) cooldown;
mapping(address => bool) isCooldownExempt;
mapping(address => bool) isMaxWalletExempt;
mapping(address => bool) lpHolder;
address public owner;
address pair;
uint256 _totalSupply = 1_000_000 * (10**9); // total supply amount
uint256 burnedTokens;
struct ICooldown {
bool buycooldownEnabled;
bool sellcooldownEnabled;
uint8 cooldownLimit;
uint8 cooldownTime;
}
struct ITransactionSettings {
uint256 maxTxAmount;
uint256 maxWalletAmount;
bool txLimits;
}
struct ILaunch {
uint256 launchBlock;
uint8 sniperBlocks;
uint snipersCaught;
bool tradingOpen;
bool launchProtection;
}
IUniswapV2Router02 router;
ICooldown public cooldownInfo;
ILaunch public Launch;
ITransactionSettings TransactionSettings;
modifier onlyOwner() {
require(isOwner(msg.sender), "You are not the owner");
_;
}
constructor() ERC20("Kurasshu",unicode"クラッシュ") {
owner = _msgSender();
router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this));
lpHolder[_msgSender()] = true;
_approve(address(this), address(router), type(uint256).max);
_approve(_msgSender(), address(router), type(uint256).max);
isMaxWalletExempt[_msgSender()] = true;
isMaxWalletExempt[address(this)] = true;
isMaxWalletExempt[pair] = true;
isCooldownExempt[_msgSender()] = true;
isCooldownExempt[pair] = true;
isCooldownExempt[address(this)] = true;
isCooldownExempt[address(router)] = true;
cooldownInfo.buycooldownEnabled = true;
cooldownInfo.sellcooldownEnabled = true;
cooldownInfo.cooldownTime = 30;
cooldownInfo.cooldownLimit = 60; // cooldown cannot go over 60 seconds
TransactionSettings.txLimits = true;
TransactionSettings.maxTxAmount = (_totalSupply * 1) / (100);
TransactionSettings.maxWalletAmount = (_totalSupply * 2) / 100;
_mint(_msgSender(), _totalSupply);
}
receive() external payable {}
// =================== Ownership ===============
/**
* @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 onlyOwner {
emit OwnershipRenounced();
isMaxWalletExempt[owner] = false;
isCooldownExempt[owner] = false;
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 onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address, use renounceOwnership Function");
emit OwnershipTransferred(owner, newOwner);
if(balanceOf(owner) > 0) _basicTransfer(owner, newOwner, balanceOf(owner));
isMaxWalletExempt[owner] = false;
isCooldownExempt[owner] = false;
isMaxWalletExempt[newOwner] = true;
isCooldownExempt[newOwner] = true;
owner = newOwner;
}
// =================== Owner Only ===============
function setWalletLimits(uint256 percent, uint256 divisor, bool txOrWallet) external onlyOwner() {
if(txOrWallet){
require(percent >= 1 && divisor <= 1000, "Max Transaction must be set above .1%");
TransactionSettings.maxTxAmount = (_totalSupply * percent) / (divisor);
emit TxLimitUpdated(TransactionSettings.maxTxAmount);
} else {
require(percent >= 1 && divisor <= 100, "Max Wallet must be set above 1%");
TransactionSettings.maxWalletAmount = (_totalSupply * percent) / divisor;
emit WalletLimitUpdated(TransactionSettings.maxWalletAmount);
}
}
function setExemptions(address holder, bool lpHolders, bool maxWalletExempt, bool CooldownExempt, bool limitsInEffect) external onlyOwner(){
isMaxWalletExempt[holder] = maxWalletExempt;
isCooldownExempt[holder] = CooldownExempt;
lpHolder[holder] = lpHolders;
TransactionSettings.txLimits = limitsInEffect;
}
function setCooldownEnabled(bool buy, bool sell, uint8 _cooldown) external onlyOwner() {
require(_cooldown <= cooldownInfo.cooldownLimit, "Cooldown time must be below cooldown limit");
cooldownInfo.cooldownTime = _cooldown;
cooldownInfo.buycooldownEnabled = buy;
cooldownInfo.sellcooldownEnabled = sell;
}
// =================== Internal ===============
function launch(uint8 sniperBlocks) internal {
Launch.tradingOpen = true;
Launch.launchBlock = block.number;
Launch.sniperBlocks = sniperBlocks;
Launch.launchProtection = true;
emit Launched();
}
function limits(address from, address to) private view returns (bool) {
return !isOwner(from)
&& !isOwner(to)
&& tx.origin != owner
&& !lpHolder[from]
&& !lpHolder[to]
&& to != address(0xdead)
&& from != address(this);
}
function unblacklist(address account) external onlyOwner() {
banned[account] = false;
}
function setBlacklistStatus(address account) internal {
Launch.launchBlock + Launch.sniperBlocks > block.number
? _setBlacklistStatus(account, true)
: turnOff();
if(Launch.launchProtection) Launch.snipersCaught++;
}
function turnOff() internal {
Launch.launchProtection = false;
}
function _setBlacklistStatus(address account, bool blacklisted) internal {
if (blacklisted) {
banned[account] = blacklisted;
}
}
function _transfer(address from, address to, uint256 amount ) internal override {
require(!banned[from], "Blacklisted sender");
require(!banned[to], "Blacklisted recipient");
if(Launch.tradingOpen && Launch.launchProtection){
setBlacklistStatus(to);
}
if(limits(from, to) && Launch.tradingOpen && TransactionSettings.txLimits){
if(!isMaxWalletExempt[to]){
require(amount <= TransactionSettings.maxTxAmount && balanceOf(to) + amount <= TransactionSettings.maxWalletAmount, "TOKEN: Amount exceeds Transaction size");
} else if(to == pair){
require(amount <= TransactionSettings.maxTxAmount, "TOKEN: Amount exceeds Transaction size");
}
if (from == pair && !isCooldownExempt[to] && cooldownInfo.buycooldownEnabled) {
require(cooldown[to] < block.timestamp, "Recipient must wait until cooldown is over");
cooldown[to] = block.timestamp + (cooldownInfo.cooldownTime);
} else if (!isCooldownExempt[from] && cooldownInfo.sellcooldownEnabled){
require(cooldown[from] <= block.timestamp, "Sender must wait until cooldown is over");
cooldown[from] = block.timestamp + (cooldownInfo.cooldownTime);
}
}
if(!Launch.tradingOpen) {
require(isOwner(from), "Pre-Launch Protection");
if(to == pair) launch(1);
}
_basicTransfer(from, to, amount);
}
function _basicTransfer(address from, address to, uint256 amount) internal {
super._transfer(from, to, amount);
}
// =================== Public ===============
function decimals() public view virtual override returns (uint8) {
return 9;
}
function getTransactionAmounts() external view returns(uint maxTransaction, uint maxWallet, bool transactionLimits){
maxTransaction = TransactionSettings.maxTxAmount / 10**9;
maxWallet = TransactionSettings.maxWalletAmount / 10**9;
transactionLimits = TransactionSettings.txLimits;
}
function getBurnedTokens() external view returns (uint256 _burnedTokens) {
_burnedTokens = burnedTokens;
}
function isOwner(address account) public view returns (bool) {
return account == owner;
}
function burn(uint256 amount) external {
_burn(_msgSender(), amount);
burnedTokens = _totalSupply - totalSupply();
}
function airDropTokens(address[] memory addresses, uint256[] memory amounts) external {
require(addresses.length == amounts.length, "Lengths do not match.");
for (uint8 i = 0; i < addresses.length; i++) {
require(balanceOf(_msgSender()) >= amounts[i]);
_basicTransfer(_msgSender(), addresses[i], amounts[i]*10**9);
}
}
event Launched();
event WalletLimitUpdated(uint256 amount);
event TxLimitUpdated(uint256 amount);
event LimitsLifted();
event OwnershipRenounced();
event OwnershipTransferred(address oldOwner, address newOwner);
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":[],"name":"Launched","type":"event"},{"anonymous":false,"inputs":[],"name":"LimitsLifted","type":"event"},{"anonymous":false,"inputs":[],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TxLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WalletLimitUpdated","type":"event"},{"inputs":[],"name":"Launch","outputs":[{"internalType":"uint256","name":"launchBlock","type":"uint256"},{"internalType":"uint8","name":"sniperBlocks","type":"uint8"},{"internalType":"uint256","name":"snipersCaught","type":"uint256"},{"internalType":"bool","name":"tradingOpen","type":"bool"},{"internalType":"bool","name":"launchProtection","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airDropTokens","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"banned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownInfo","outputs":[{"internalType":"bool","name":"buycooldownEnabled","type":"bool"},{"internalType":"bool","name":"sellcooldownEnabled","type":"bool"},{"internalType":"uint8","name":"cooldownLimit","type":"uint8"},{"internalType":"uint8","name":"cooldownTime","type":"uint8"}],"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":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"_burnedTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTransactionAmounts","outputs":[{"internalType":"uint256","name":"maxTransaction","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"bool","name":"transactionLimits","type":"bool"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","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":"bool","name":"buy","type":"bool"},{"internalType":"bool","name":"sell","type":"bool"},{"internalType":"uint8","name":"_cooldown","type":"uint8"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"lpHolders","type":"bool"},{"internalType":"bool","name":"maxWalletExempt","type":"bool"},{"internalType":"bool","name":"CooldownExempt","type":"bool"},{"internalType":"bool","name":"limitsInEffect","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"},{"internalType":"bool","name":"txOrWallet","type":"bool"}],"name":"setWalletLimits","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"account","type":"address"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405266038d7ea4c68000600c553480156200001c57600080fd5b5060408051808201825260088152674b7572617373687560c01b60208083019182528351808501909452600f84526ee382afe383a9e38383e382b7e383a560881b9084015281519192916200007491600391620005e1565b5080516200008a906004906020840190620005e1565b50620000969150503390565b600a80546001600160a01b03929092166001600160a01b0319928316179055600e8054909116737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200010e57600080fd5b505afa15801562000123573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000149919062000687565b6001600160a01b031663c9c65396600e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001a657600080fd5b505afa158015620001bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e1919062000687565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200022957600080fd5b505af11580156200023e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000264919062000687565b600b80546001600160a01b0319166001600160a01b0392909216919091179055600160096000620002923390565b6001600160a01b0390811682526020820192909252604001600020805460ff191692151592909217909155600e54620002d191309116600019620003f2565b620002eb33600e546001600160a01b0316600019620003f2565b336000818152600860209081526040808320805460ff199081166001908117909255308086528386208054831684179055600b80546001600160a01b03908116885285882080548516861790559787526007909552838620805483168417905593548616855282852080548216831790559284528184208054841682179055600e5490941683529091208054821683179055600f805463ffffffff1916631e3c01011790556016805490911682179055600c54606491620003ad9190620006f7565b620003b99190620006d4565b601455600c54606490620003cf906002620006f7565b620003db9190620006d4565b601555620003ec33600c546200051e565b6200076c565b6001600160a01b0383166200045a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004bd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000451565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620005765760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000451565b80600260008282546200058a9190620006b9565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b828054620005ef9062000719565b90600052602060002090601f0160209004810192826200061357600085556200065e565b82601f106200062e57805160ff19168380011785556200065e565b828001600101855582156200065e579182015b828111156200065e57825182559160200191906001019062000641565b506200066c92915062000670565b5090565b5b808211156200066c576000815560010162000671565b6000602082840312156200069a57600080fd5b81516001600160a01b0381168114620006b257600080fd5b9392505050565b60008219821115620006cf57620006cf62000756565b500190565b600082620006f257634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161562000714576200071462000756565b500290565b600181811c908216806200072e57607f821691505b602082108114156200075057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b611e99806200077c6000396000f3fe6080604052600436106101a05760003560e01c80636ebcf607116100ec5780639c8d83bb1161008a578063c3f4f54f11610064578063c3f4f54f14610578578063ccd721311461058d578063dd62ed3e146105ad578063f2fde38b146105cd57600080fd5b80639c8d83bb14610508578063a457c2d714610538578063a9059cbb1461055857600080fd5b806375e3661e116100c657806375e3661e1461043a5780638da5cb5b1461045a57806395d89b411461049257806395f93d48146104a757600080fd5b80636ebcf607146103c257806370a08231146103ef578063715018a61461042557600080fd5b8063313ce56711610159578063461a445011610133578063461a4450146103305780634c57f8d21461035057806355fb28e414610370578063674a29cb1461039057600080fd5b8063313ce567146102d257806339509351146102ee57806342966c681461030e57600080fd5b806302ac8168146101ac57806306fdde0314610212578063095ea7b31461023457806318160ddd1461026457806323b872dd146102835780632f54bf6e146102a357600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506010546011546012546013546101df939260ff9081169291808216916101009091041685565b6040805195865260ff909416602086015292840191909152151560608301521515608082015260a0015b60405180910390f35b34801561021e57600080fd5b506102276105ed565b6040516102099190611c1c565b34801561024057600080fd5b5061025461024f366004611a90565b61067f565b6040519015158152602001610209565b34801561027057600080fd5b506002545b604051908152602001610209565b34801561028f57600080fd5b5061025461029e3660046119ef565b610697565b3480156102af57600080fd5b506102546102be3660046119a1565b600a546001600160a01b0391821691161490565b3480156102de57600080fd5b5060405160098152602001610209565b3480156102fa57600080fd5b50610254610309366004611a90565b6106bb565b34801561031a57600080fd5b5061032e610329366004611bce565b6106dd565b005b34801561033c57600080fd5b5061032e61034b366004611b81565b6106fd565b34801561035c57600080fd5b5061032e61036b366004611aba565b6107df565b34801561037c57600080fd5b5061032e61038b366004611a2b565b6108d2565b34801561039c57600080fd5b506103a5610963565b604080519384526020840192909252151590820152606001610209565b3480156103ce57600080fd5b506102756103dd3660046119a1565b60006020819052908152604090205481565b3480156103fb57600080fd5b5061027561040a3660046119a1565b6001600160a01b031660009081526020819052604090205490565b34801561043157600080fd5b5061032e6109a2565b34801561044657600080fd5b5061032e6104553660046119a1565b610a45565b34801561046657600080fd5b50600a5461047a906001600160a01b031681565b6040516001600160a01b039091168152602001610209565b34801561049e57600080fd5b50610227610a90565b3480156104b357600080fd5b50600f546104dd9060ff808216916101008104821691620100008204811691630100000090041684565b604080519415158552921515602085015260ff91821692840192909252166060820152608001610209565b34801561051457600080fd5b506102546105233660046119a1565b60056020526000908152604090205460ff1681565b34801561054457600080fd5b50610254610553366004611a90565b610a9f565b34801561056457600080fd5b50610254610573366004611a90565b610b1a565b34801561058457600080fd5b50600d54610275565b34801561059957600080fd5b5061032e6105a8366004611be7565b610b28565b3480156105b957600080fd5b506102756105c83660046119bc565b610cc8565b3480156105d957600080fd5b5061032e6105e83660046119a1565b610cf3565b6060600380546105fc90611dab565b80601f016020809104026020016040519081016040528092919081815260200182805461062890611dab565b80156106755780601f1061064a57610100808354040283529160200191610675565b820191906000526020600020905b81548152906001019060200180831161065857829003601f168201915b5050505050905090565b60003361068d818585610eb2565b5060019392505050565b6000336106a5858285610fd6565b6106b0858585611050565b506001949350505050565b60003361068d8185856106ce8383610cc8565b6106d89190611d3b565b610eb2565b6106e73382611477565b600254600c546106f79190611d94565b600d5550565b600a546001600160a01b031633146107305760405162461bcd60e51b815260040161072790611cb7565b60405180910390fd5b600f5460ff62010000909104811690821611156107a25760405162461bcd60e51b815260206004820152602a60248201527f436f6f6c646f776e2074696d65206d7573742062652062656c6f7720636f6f6c604482015269191bdddb881b1a5b5a5d60b21b6064820152608401610727565b600f805463ff0000ff1916630100000060ff939093169290920260ff1916919091179215159290921761ff00191661010091151591909102179055565b80518251146108285760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610727565b60005b82518160ff1610156108cd57818160ff168151811061084c5761084c611e37565b602002602001015161085e61040a3390565b101561086957600080fd5b6108bb33848360ff168151811061088257610882611e37565b6020026020010151848460ff168151811061089f5761089f611e37565b6020026020010151633b9aca006108b69190611d75565b6115a9565b806108c581611e01565b91505061082b565b505050565b600a546001600160a01b031633146108fc5760405162461bcd60e51b815260040161072790611cb7565b6001600160a01b039094166000908152600860209081526040808320805495151560ff199687161790556007825280832080549415159486169490941790935560099052208054921515928216929092179091556016805492151592909116919091179055565b6000806000633b9aca0060146000015461097d9190611d53565b60155490935061099290633b9aca0090611d53565b6016549394909360ff1692509050565b600a546001600160a01b031633146109cc5760405162461bcd60e51b815260040161072790611cb7565b6040517fd1f66c3d2bc1993a86be5e3d33709d98f0442381befcedd29f578b9b2506b1ce90600090a1600a80546001600160a01b039081166000908152600860209081526040808320805460ff1990811690915585549094168352600790915290208054909116905580546001600160a01b0319169055565b600a546001600160a01b03163314610a6f5760405162461bcd60e51b815260040161072790611cb7565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6060600480546105fc90611dab565b60003381610aad8286610cc8565b905083811015610b0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610727565b6106b08286868403610eb2565b60003361068d818585611050565b600a546001600160a01b03163314610b525760405162461bcd60e51b815260040161072790611cb7565b8015610c1c5760018310158015610b6b57506103e88211155b610bc55760405162461bcd60e51b815260206004820152602560248201527f4d6178205472616e73616374696f6e206d757374206265207365742061626f7660448201526465202e312560d81b6064820152608401610727565b8183600c54610bd49190611d75565b610bde9190611d53565b60148190556040519081527fa53407ff336a78b145e1a297adce2a5d7a54e6c31d13b4e69e04aad80b07b44b906020015b60405180910390a1505050565b60018310158015610c2e575060648211155b610c7a5760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574206d757374206265207365742061626f7665203125006044820152606401610727565b8183600c54610c899190611d75565b610c939190611d53565b60158190556040519081527f199db6b3f784dbaaa5df3981a282a84eb13409a543eaaeb8e8f309c467b45e1890602001610c0f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a546001600160a01b03163314610d1d5760405162461bcd60e51b815260040161072790611cb7565b6001600160a01b038116610da85760405162461bcd60e51b815260206004820152604660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573732c207573652072656e6f756e63654f776e6572736869702046756064820152653731ba34b7b760d11b608482015260a401610727565b600a54604080516001600160a01b03928316815291831660208301527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1600a546001600160a01b031660009081526020819052604090205415610e3657600a546001600160a01b0316600081815260208190526040902054610e36919083906115a9565b600a80546001600160a01b039081166000908152600860208181526040808420805460ff19908116909155865486168552600780845282862080548316905597909516808552928252808420805486166001908117909155969091529091208054909216909317905580546001600160a01b0319169091179055565b6001600160a01b038316610f145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610727565b6001600160a01b038216610f755760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610727565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610fe28484610cc8565b9050600019811461104a578181101561103d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610727565b61104a8484848403610eb2565b50505050565b6001600160a01b03831660009081526005602052604090205460ff16156110ae5760405162461bcd60e51b8152602060048201526012602482015271213630b1b5b634b9ba32b21039b2b73232b960711b6044820152606401610727565b6001600160a01b03821660009081526005602052604090205460ff161561110f5760405162461bcd60e51b8152602060048201526015602482015274109b1858dadb1a5cdd1959081c9958da5c1a595b9d605a1b6044820152606401610727565b60135460ff1680156111285750601354610100900460ff165b1561113657611136826115b4565b6111408383611619565b801561114e575060135460ff165b801561115c575060165460ff165b156113ed576001600160a01b03821660009081526008602052604090205460ff166111df5760145481118015906111be5750601554816111b1846001600160a01b031660009081526020819052604090205490565b6111bb9190611d3b565b11155b6111da5760405162461bcd60e51b815260040161072790611c71565b611217565b600b546001600160a01b0383811691161415611217576014548111156112175760405162461bcd60e51b815260040161072790611c71565b600b546001600160a01b03848116911614801561124d57506001600160a01b03821660009081526007602052604090205460ff16155b801561125b5750600f5460ff165b1561130f576001600160a01b03821660009081526006602052604090205442116112da5760405162461bcd60e51b815260206004820152602a60248201527f526563697069656e74206d757374207761697420756e74696c20636f6f6c646f6044820152693bb71034b99037bb32b960b11b6064820152608401610727565b600f546112f1906301000000900460ff1642611d3b565b6001600160a01b0383166000908152600660205260409020556113ed565b6001600160a01b03831660009081526007602052604090205460ff1615801561133f5750600f54610100900460ff165b156113ed576001600160a01b0383166000908152600660205260409020544210156113bc5760405162461bcd60e51b815260206004820152602760248201527f53656e646572206d757374207761697420756e74696c20636f6f6c646f776e2060448201526634b99037bb32b960c91b6064820152608401610727565b600f546113d3906301000000900460ff1642611d3b565b6001600160a01b0384166000908152600660205260409020555b60135460ff1661146c57600a546001600160a01b0384811691161461144c5760405162461bcd60e51b815260206004820152601560248201527428393296a630bab731b410283937ba32b1ba34b7b760591b6044820152606401610727565b600b546001600160a01b038381169116141561146c5761146c60016116e2565b6108cd8383836115a9565b6001600160a01b0382166114d75760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610727565b6001600160a01b0382166000908152602081905260409020548181101561154b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610727565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6108cd838383611730565b60115460105443916115cb9160ff90911690611d3b565b116115e5576115e06013805461ff0019169055565b6115f0565b6115f08160016118d4565b601354610100900460ff1615611616576012805490600061161083611de6565b91905055505b50565b600061163383600a546001600160a01b0391821691161490565b15801561164e5750600a546001600160a01b03838116911614155b80156116655750600a546001600160a01b03163214155b801561168a57506001600160a01b03831660009081526009602052604090205460ff16155b80156116af57506001600160a01b03821660009081526009602052604090205460ff16155b80156116c657506001600160a01b03821661dead14155b80156116db57506001600160a01b0383163014155b9392505050565b60138054436010556011805460ff191660ff851617905561ffff19166101011790556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a150565b6001600160a01b0383166117945760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610727565b6001600160a01b0382166117f65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610727565b6001600160a01b0383166000908152602081905260409020548181101561186e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610727565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361104a565b80156118ff576001600160a01b0382166000908152600560205260409020805460ff19168215151790555b5050565b80356001600160a01b038116811461191a57600080fd5b919050565b600082601f83011261193057600080fd5b8135602061194561194083611d17565b611ce6565b80838252828201915082860187848660051b890101111561196557600080fd5b60005b8581101561198457813584529284019290840190600101611968565b5090979650505050505050565b8035801515811461191a57600080fd5b6000602082840312156119b357600080fd5b6116db82611903565b600080604083850312156119cf57600080fd5b6119d883611903565b91506119e660208401611903565b90509250929050565b600080600060608486031215611a0457600080fd5b611a0d84611903565b9250611a1b60208501611903565b9150604084013590509250925092565b600080600080600060a08688031215611a4357600080fd5b611a4c86611903565b9450611a5a60208701611991565b9350611a6860408701611991565b9250611a7660608701611991565b9150611a8460808701611991565b90509295509295909350565b60008060408385031215611aa357600080fd5b611aac83611903565b946020939093013593505050565b60008060408385031215611acd57600080fd5b823567ffffffffffffffff80821115611ae557600080fd5b818501915085601f830112611af957600080fd5b81356020611b0961194083611d17565b8083825282820191508286018a848660051b8901011115611b2957600080fd5b600096505b84871015611b5357611b3f81611903565b835260019690960195918301918301611b2e565b5096505086013592505080821115611b6a57600080fd5b50611b778582860161191f565b9150509250929050565b600080600060608486031215611b9657600080fd5b611b9f84611991565b9250611bad60208501611991565b9150604084013560ff81168114611bc357600080fd5b809150509250925092565b600060208284031215611be057600080fd5b5035919050565b600080600060608486031215611bfc57600080fd5b8335925060208401359150611c1360408501611991565b90509250925092565b600060208083528351808285015260005b81811015611c4957858101830151858201604001528201611c2d565b81811115611c5b576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f544f4b454e3a20416d6f756e742065786365656473205472616e73616374696f6040820152656e2073697a6560d01b606082015260800190565b6020808252601590820152742cb7ba9030b932903737ba103a34329037bbb732b960591b604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715611d0f57611d0f611e4d565b604052919050565b600067ffffffffffffffff821115611d3157611d31611e4d565b5060051b60200190565b60008219821115611d4e57611d4e611e21565b500190565b600082611d7057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611d8f57611d8f611e21565b500290565b600082821015611da657611da6611e21565b500390565b600181811c90821680611dbf57607f821691505b60208210811415611de057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611dfa57611dfa611e21565b5060010190565b600060ff821660ff811415611e1857611e18611e21565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220654ecca091b62c944cf0d02338cd154e9a406b7f4345758d30b3444aa9a1acba64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106101a05760003560e01c80636ebcf607116100ec5780639c8d83bb1161008a578063c3f4f54f11610064578063c3f4f54f14610578578063ccd721311461058d578063dd62ed3e146105ad578063f2fde38b146105cd57600080fd5b80639c8d83bb14610508578063a457c2d714610538578063a9059cbb1461055857600080fd5b806375e3661e116100c657806375e3661e1461043a5780638da5cb5b1461045a57806395d89b411461049257806395f93d48146104a757600080fd5b80636ebcf607146103c257806370a08231146103ef578063715018a61461042557600080fd5b8063313ce56711610159578063461a445011610133578063461a4450146103305780634c57f8d21461035057806355fb28e414610370578063674a29cb1461039057600080fd5b8063313ce567146102d257806339509351146102ee57806342966c681461030e57600080fd5b806302ac8168146101ac57806306fdde0314610212578063095ea7b31461023457806318160ddd1461026457806323b872dd146102835780632f54bf6e146102a357600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506010546011546012546013546101df939260ff9081169291808216916101009091041685565b6040805195865260ff909416602086015292840191909152151560608301521515608082015260a0015b60405180910390f35b34801561021e57600080fd5b506102276105ed565b6040516102099190611c1c565b34801561024057600080fd5b5061025461024f366004611a90565b61067f565b6040519015158152602001610209565b34801561027057600080fd5b506002545b604051908152602001610209565b34801561028f57600080fd5b5061025461029e3660046119ef565b610697565b3480156102af57600080fd5b506102546102be3660046119a1565b600a546001600160a01b0391821691161490565b3480156102de57600080fd5b5060405160098152602001610209565b3480156102fa57600080fd5b50610254610309366004611a90565b6106bb565b34801561031a57600080fd5b5061032e610329366004611bce565b6106dd565b005b34801561033c57600080fd5b5061032e61034b366004611b81565b6106fd565b34801561035c57600080fd5b5061032e61036b366004611aba565b6107df565b34801561037c57600080fd5b5061032e61038b366004611a2b565b6108d2565b34801561039c57600080fd5b506103a5610963565b604080519384526020840192909252151590820152606001610209565b3480156103ce57600080fd5b506102756103dd3660046119a1565b60006020819052908152604090205481565b3480156103fb57600080fd5b5061027561040a3660046119a1565b6001600160a01b031660009081526020819052604090205490565b34801561043157600080fd5b5061032e6109a2565b34801561044657600080fd5b5061032e6104553660046119a1565b610a45565b34801561046657600080fd5b50600a5461047a906001600160a01b031681565b6040516001600160a01b039091168152602001610209565b34801561049e57600080fd5b50610227610a90565b3480156104b357600080fd5b50600f546104dd9060ff808216916101008104821691620100008204811691630100000090041684565b604080519415158552921515602085015260ff91821692840192909252166060820152608001610209565b34801561051457600080fd5b506102546105233660046119a1565b60056020526000908152604090205460ff1681565b34801561054457600080fd5b50610254610553366004611a90565b610a9f565b34801561056457600080fd5b50610254610573366004611a90565b610b1a565b34801561058457600080fd5b50600d54610275565b34801561059957600080fd5b5061032e6105a8366004611be7565b610b28565b3480156105b957600080fd5b506102756105c83660046119bc565b610cc8565b3480156105d957600080fd5b5061032e6105e83660046119a1565b610cf3565b6060600380546105fc90611dab565b80601f016020809104026020016040519081016040528092919081815260200182805461062890611dab565b80156106755780601f1061064a57610100808354040283529160200191610675565b820191906000526020600020905b81548152906001019060200180831161065857829003601f168201915b5050505050905090565b60003361068d818585610eb2565b5060019392505050565b6000336106a5858285610fd6565b6106b0858585611050565b506001949350505050565b60003361068d8185856106ce8383610cc8565b6106d89190611d3b565b610eb2565b6106e73382611477565b600254600c546106f79190611d94565b600d5550565b600a546001600160a01b031633146107305760405162461bcd60e51b815260040161072790611cb7565b60405180910390fd5b600f5460ff62010000909104811690821611156107a25760405162461bcd60e51b815260206004820152602a60248201527f436f6f6c646f776e2074696d65206d7573742062652062656c6f7720636f6f6c604482015269191bdddb881b1a5b5a5d60b21b6064820152608401610727565b600f805463ff0000ff1916630100000060ff939093169290920260ff1916919091179215159290921761ff00191661010091151591909102179055565b80518251146108285760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610727565b60005b82518160ff1610156108cd57818160ff168151811061084c5761084c611e37565b602002602001015161085e61040a3390565b101561086957600080fd5b6108bb33848360ff168151811061088257610882611e37565b6020026020010151848460ff168151811061089f5761089f611e37565b6020026020010151633b9aca006108b69190611d75565b6115a9565b806108c581611e01565b91505061082b565b505050565b600a546001600160a01b031633146108fc5760405162461bcd60e51b815260040161072790611cb7565b6001600160a01b039094166000908152600860209081526040808320805495151560ff199687161790556007825280832080549415159486169490941790935560099052208054921515928216929092179091556016805492151592909116919091179055565b6000806000633b9aca0060146000015461097d9190611d53565b60155490935061099290633b9aca0090611d53565b6016549394909360ff1692509050565b600a546001600160a01b031633146109cc5760405162461bcd60e51b815260040161072790611cb7565b6040517fd1f66c3d2bc1993a86be5e3d33709d98f0442381befcedd29f578b9b2506b1ce90600090a1600a80546001600160a01b039081166000908152600860209081526040808320805460ff1990811690915585549094168352600790915290208054909116905580546001600160a01b0319169055565b600a546001600160a01b03163314610a6f5760405162461bcd60e51b815260040161072790611cb7565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6060600480546105fc90611dab565b60003381610aad8286610cc8565b905083811015610b0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610727565b6106b08286868403610eb2565b60003361068d818585611050565b600a546001600160a01b03163314610b525760405162461bcd60e51b815260040161072790611cb7565b8015610c1c5760018310158015610b6b57506103e88211155b610bc55760405162461bcd60e51b815260206004820152602560248201527f4d6178205472616e73616374696f6e206d757374206265207365742061626f7660448201526465202e312560d81b6064820152608401610727565b8183600c54610bd49190611d75565b610bde9190611d53565b60148190556040519081527fa53407ff336a78b145e1a297adce2a5d7a54e6c31d13b4e69e04aad80b07b44b906020015b60405180910390a1505050565b60018310158015610c2e575060648211155b610c7a5760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574206d757374206265207365742061626f7665203125006044820152606401610727565b8183600c54610c899190611d75565b610c939190611d53565b60158190556040519081527f199db6b3f784dbaaa5df3981a282a84eb13409a543eaaeb8e8f309c467b45e1890602001610c0f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a546001600160a01b03163314610d1d5760405162461bcd60e51b815260040161072790611cb7565b6001600160a01b038116610da85760405162461bcd60e51b815260206004820152604660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573732c207573652072656e6f756e63654f776e6572736869702046756064820152653731ba34b7b760d11b608482015260a401610727565b600a54604080516001600160a01b03928316815291831660208301527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a1600a546001600160a01b031660009081526020819052604090205415610e3657600a546001600160a01b0316600081815260208190526040902054610e36919083906115a9565b600a80546001600160a01b039081166000908152600860208181526040808420805460ff19908116909155865486168552600780845282862080548316905597909516808552928252808420805486166001908117909155969091529091208054909216909317905580546001600160a01b0319169091179055565b6001600160a01b038316610f145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610727565b6001600160a01b038216610f755760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610727565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610fe28484610cc8565b9050600019811461104a578181101561103d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610727565b61104a8484848403610eb2565b50505050565b6001600160a01b03831660009081526005602052604090205460ff16156110ae5760405162461bcd60e51b8152602060048201526012602482015271213630b1b5b634b9ba32b21039b2b73232b960711b6044820152606401610727565b6001600160a01b03821660009081526005602052604090205460ff161561110f5760405162461bcd60e51b8152602060048201526015602482015274109b1858dadb1a5cdd1959081c9958da5c1a595b9d605a1b6044820152606401610727565b60135460ff1680156111285750601354610100900460ff165b1561113657611136826115b4565b6111408383611619565b801561114e575060135460ff165b801561115c575060165460ff165b156113ed576001600160a01b03821660009081526008602052604090205460ff166111df5760145481118015906111be5750601554816111b1846001600160a01b031660009081526020819052604090205490565b6111bb9190611d3b565b11155b6111da5760405162461bcd60e51b815260040161072790611c71565b611217565b600b546001600160a01b0383811691161415611217576014548111156112175760405162461bcd60e51b815260040161072790611c71565b600b546001600160a01b03848116911614801561124d57506001600160a01b03821660009081526007602052604090205460ff16155b801561125b5750600f5460ff165b1561130f576001600160a01b03821660009081526006602052604090205442116112da5760405162461bcd60e51b815260206004820152602a60248201527f526563697069656e74206d757374207761697420756e74696c20636f6f6c646f6044820152693bb71034b99037bb32b960b11b6064820152608401610727565b600f546112f1906301000000900460ff1642611d3b565b6001600160a01b0383166000908152600660205260409020556113ed565b6001600160a01b03831660009081526007602052604090205460ff1615801561133f5750600f54610100900460ff165b156113ed576001600160a01b0383166000908152600660205260409020544210156113bc5760405162461bcd60e51b815260206004820152602760248201527f53656e646572206d757374207761697420756e74696c20636f6f6c646f776e2060448201526634b99037bb32b960c91b6064820152608401610727565b600f546113d3906301000000900460ff1642611d3b565b6001600160a01b0384166000908152600660205260409020555b60135460ff1661146c57600a546001600160a01b0384811691161461144c5760405162461bcd60e51b815260206004820152601560248201527428393296a630bab731b410283937ba32b1ba34b7b760591b6044820152606401610727565b600b546001600160a01b038381169116141561146c5761146c60016116e2565b6108cd8383836115a9565b6001600160a01b0382166114d75760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610727565b6001600160a01b0382166000908152602081905260409020548181101561154b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610727565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6108cd838383611730565b60115460105443916115cb9160ff90911690611d3b565b116115e5576115e06013805461ff0019169055565b6115f0565b6115f08160016118d4565b601354610100900460ff1615611616576012805490600061161083611de6565b91905055505b50565b600061163383600a546001600160a01b0391821691161490565b15801561164e5750600a546001600160a01b03838116911614155b80156116655750600a546001600160a01b03163214155b801561168a57506001600160a01b03831660009081526009602052604090205460ff16155b80156116af57506001600160a01b03821660009081526009602052604090205460ff16155b80156116c657506001600160a01b03821661dead14155b80156116db57506001600160a01b0383163014155b9392505050565b60138054436010556011805460ff191660ff851617905561ffff19166101011790556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a150565b6001600160a01b0383166117945760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610727565b6001600160a01b0382166117f65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610727565b6001600160a01b0383166000908152602081905260409020548181101561186e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610727565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361104a565b80156118ff576001600160a01b0382166000908152600560205260409020805460ff19168215151790555b5050565b80356001600160a01b038116811461191a57600080fd5b919050565b600082601f83011261193057600080fd5b8135602061194561194083611d17565b611ce6565b80838252828201915082860187848660051b890101111561196557600080fd5b60005b8581101561198457813584529284019290840190600101611968565b5090979650505050505050565b8035801515811461191a57600080fd5b6000602082840312156119b357600080fd5b6116db82611903565b600080604083850312156119cf57600080fd5b6119d883611903565b91506119e660208401611903565b90509250929050565b600080600060608486031215611a0457600080fd5b611a0d84611903565b9250611a1b60208501611903565b9150604084013590509250925092565b600080600080600060a08688031215611a4357600080fd5b611a4c86611903565b9450611a5a60208701611991565b9350611a6860408701611991565b9250611a7660608701611991565b9150611a8460808701611991565b90509295509295909350565b60008060408385031215611aa357600080fd5b611aac83611903565b946020939093013593505050565b60008060408385031215611acd57600080fd5b823567ffffffffffffffff80821115611ae557600080fd5b818501915085601f830112611af957600080fd5b81356020611b0961194083611d17565b8083825282820191508286018a848660051b8901011115611b2957600080fd5b600096505b84871015611b5357611b3f81611903565b835260019690960195918301918301611b2e565b5096505086013592505080821115611b6a57600080fd5b50611b778582860161191f565b9150509250929050565b600080600060608486031215611b9657600080fd5b611b9f84611991565b9250611bad60208501611991565b9150604084013560ff81168114611bc357600080fd5b809150509250925092565b600060208284031215611be057600080fd5b5035919050565b600080600060608486031215611bfc57600080fd5b8335925060208401359150611c1360408501611991565b90509250925092565b600060208083528351808285015260005b81811015611c4957858101830151858201604001528201611c2d565b81811115611c5b576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f544f4b454e3a20416d6f756e742065786365656473205472616e73616374696f6040820152656e2073697a6560d01b606082015260800190565b6020808252601590820152742cb7ba9030b932903737ba103a34329037bbb732b960591b604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715611d0f57611d0f611e4d565b604052919050565b600067ffffffffffffffff821115611d3157611d31611e4d565b5060051b60200190565b60008219821115611d4e57611d4e611e21565b500190565b600082611d7057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611d8f57611d8f611e21565b500290565b600082821015611da657611da6611e21565b500390565b600181811c90821680611dbf57607f821691505b60208210811415611de057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611dfa57611dfa611e21565b5060010190565b600060ff821660ff811415611e1857611e18611e21565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220654ecca091b62c944cf0d02338cd154e9a406b7f4345758d30b3444aa9a1acba64736f6c63430008070033
Deployed Bytecode Sourcemap
38841:9655:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39826:21;;;;;;;;;;-1:-1:-1;39826:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15349:25:1;;;15422:4;15410:17;;;15405:2;15390:18;;15383:45;15444:18;;;15437:34;;;;15514:14;15507:22;15502:2;15487:18;;15480:50;15574:14;15567:22;15561:3;15546:19;;15539:51;15336:3;15321:19;39826:21:0;;;;;;;;19825:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;22176:201::-;;;;;;;;;;-1:-1:-1;22176:201:0;;;;;:::i;:::-;;:::i;:::-;;;5308:14:1;;5301:22;5283:41;;5271:2;5256:18;22176:201:0;5143:187:1;20945:108:0;;;;;;;;;;-1:-1:-1;21033:12:0;;20945:108;;;14736:25:1;;;14724:2;14709:18;20945:108:0;14590:177:1;22957:295:0;;;;;;;;;;-1:-1:-1;22957:295:0;;;;;:::i;:::-;;:::i;47615:103::-;;;;;;;;;;-1:-1:-1;47615:103:0;;;;;:::i;:::-;47705:5;;-1:-1:-1;;;;;47694:16:0;;;47705:5;;47694:16;;47615:103;47064:92;;;;;;;;;;-1:-1:-1;47064:92:0;;47147:1;15743:36:1;;15731:2;15716:18;47064:92:0;15601:184:1;23661:238:0;;;;;;;;;;-1:-1:-1;23661:238:0;;;;;:::i;:::-;;:::i;47726:139::-;;;;;;;;;;-1:-1:-1;47726:139:0;;;;;:::i;:::-;;:::i;:::-;;43695:346;;;;;;;;;;-1:-1:-1;43695:346:0;;;;;:::i;:::-;;:::i;47873:376::-;;;;;;;;;;-1:-1:-1;47873:376:0;;;;;:::i;:::-;;:::i;43339:348::-;;;;;;;;;;-1:-1:-1;43339:348:0;;;;;:::i;:::-;;:::i;47164:315::-;;;;;;;;;;;;;:::i;:::-;;;;14968:25:1;;;15024:2;15009:18;;15002:34;;;;15079:14;15072:22;15052:18;;;15045:50;14956:2;14941:18;47164:315:0;14772:329:1;19103:44:0;;;;;;;;;;-1:-1:-1;19103:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;21116:127;;;;;;;;;;-1:-1:-1;21116:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;21217:18:0;21190:7;21217:18;;;;;;;;;;;;21116:127;41711:205;;;;;;;;;;;;;:::i;44677:101::-;;;;;;;;;;-1:-1:-1;44677:101:0;;;;;:::i;:::-;;:::i;39136:20::-;;;;;;;;;;-1:-1:-1;39136:20:0;;;;-1:-1:-1;;;;;39136:20:0;;;;;;-1:-1:-1;;;;;4790:32:1;;;4772:51;;4760:2;4745:18;39136:20:0;4626:203:1;20044:104:0;;;;;;;;;;;;;:::i;39790:29::-;;;;;;;;;;-1:-1:-1;39790:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5571:14:1;;5564:22;5546:41;;5630:14;;5623:22;5618:2;5603:18;;5596:50;5694:4;5682:17;;;5662:18;;;5655:45;;;;5736:17;5731:2;5716:18;;5709:45;5533:3;5518:19;39790:29:0;5335:425:1;38909:38:0;;;;;;;;;;-1:-1:-1;38909:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24402:436;;;;;;;;;;-1:-1:-1;24402:436:0;;;;;:::i;:::-;;:::i;21449:193::-;;;;;;;;;;-1:-1:-1;21449:193:0;;;;;:::i;:::-;;:::i;47487:120::-;;;;;;;;;;-1:-1:-1;47587:12:0;;47487:120;;42673:658;;;;;;;;;;-1:-1:-1;42673:658:0;;;;;:::i;:::-;;:::i;21705:151::-;;;;;;;;;;-1:-1:-1;21705:151:0;;;;;:::i;:::-;;:::i;42071:537::-;;;;;;;;;;-1:-1:-1;42071:537:0;;;;;:::i;:::-;;:::i;19825:100::-;19879:13;19912:5;19905:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19825:100;:::o;22176:201::-;22259:4;602:10;22315:32;602:10;22331:7;22340:6;22315:8;:32::i;:::-;-1:-1:-1;22365:4:0;;22176:201;-1:-1:-1;;;22176:201:0:o;22957:295::-;23088:4;602:10;23146:38;23162:4;602:10;23177:6;23146:15;:38::i;:::-;23195:27;23205:4;23211:2;23215:6;23195:9;:27::i;:::-;-1:-1:-1;23240:4:0;;22957:295;-1:-1:-1;;;;22957:295:0:o;23661:238::-;23749:4;602:10;23805:64;602:10;23821:7;23858:10;23830:25;602:10;23821:7;23830:9;:25::i;:::-;:38;;;;:::i;:::-;23805:8;:64::i;47726:139::-;47776:27;602:10;47796:6;47776:5;:27::i;:::-;21033:12;;47829;;:28;;;;:::i;:::-;47814:12;:43;-1:-1:-1;47726:139:0:o;43695:346::-;47705:5;;-1:-1:-1;;;;;47705:5:0;39951:10;47694:16;39935:53;;;;-1:-1:-1;;;39935:53:0;;;;;;;:::i;:::-;;;;;;;;;43814:12:::1;:26:::0;::::1;::::0;;;::::1;::::0;::::1;43801:39:::0;;::::1;;;43793:94;;;::::0;-1:-1:-1;;;43793:94:0;;9027:2:1;43793:94:0::1;::::0;::::1;9009:21:1::0;9066:2;9046:18;;;9039:30;9105:34;9085:18;;;9078:62;-1:-1:-1;;;9156:18:1;;;9149:40;9206:19;;43793:94:0::1;8825:406:1::0;43793:94:0::1;43898:12;:37:::0;;-1:-1:-1;;43946:37:0;43898;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;43946:37:0;;;;;;::::1;;::::0;;;::::1;-1:-1:-1::0;;43994:39:0::1;43898:37;43994:39:::0;::::1;;::::0;;;::::1;;::::0;;43695:346::o;47873:376::-;47998:7;:14;47978:9;:16;:34;47970:68;;;;-1:-1:-1;;;47970:68:0;;12415:2:1;47970:68:0;;;12397:21:1;12454:2;12434:18;;;12427:30;-1:-1:-1;;;12473:18:1;;;12466:51;12534:18;;47970:68:0;12213:345:1;47970:68:0;48054:7;48049:193;48071:9;:16;48067:1;:20;;;48049:193;;;48144:7;48152:1;48144:10;;;;;;;;;;:::i;:::-;;;;;;;48117:23;48127:12;602:10;;514:107;48117:23;:37;;48109:46;;;;;;48170:60;602:10;48199:9;48209:1;48199:12;;;;;;;;;;:::i;:::-;;;;;;;48213:7;48221:1;48213:10;;;;;;;;;;:::i;:::-;;;;;;;48224:5;48213:16;;;;:::i;:::-;48170:14;:60::i;:::-;48089:3;;;;:::i;:::-;;;;48049:193;;;;47873:376;;:::o;43339:348::-;47705:5;;-1:-1:-1;;;;;47705:5:0;39951:10;47694:16;39935:53;;;;-1:-1:-1;;;39935:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;43489:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:43;;;::::1;;-1:-1:-1::0;;43489:43:0;;::::1;;::::0;;43543:16:::1;:24:::0;;;;;:41;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;43595:8:::1;:16:::0;;;:28;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;43634;:45;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;43339:348::o;47164:315::-;47219:19;47240:14;47256:22;47341:5;47307:19;:31;;;:39;;;;:::i;:::-;47369:35;;47290:56;;-1:-1:-1;47369:43:0;;47407:5;;47369:43;:::i;:::-;47443:28;;47164:315;;47357:55;;47443:28;;;-1:-1:-1;47164:315:0;-1:-1:-1;47164:315:0:o;41711:205::-;47705:5;;-1:-1:-1;;;;;47705:5:0;39951:10;47694:16;39935:53;;;;-1:-1:-1;;;39935:53:0;;;;;;;:::i;:::-;41773:20:::1;::::0;::::1;::::0;;;::::1;41822:5;::::0;;-1:-1:-1;;;;;41822:5:0;;::::1;41831;41804:24:::0;;;:17:::1;:24;::::0;;;;;;;:32;;-1:-1:-1;;41804:32:0;;::::1;::::0;;;41864:5;;;;::::1;41847:23:::0;;:16:::1;:23:::0;;;;;:31;;;;::::1;::::0;;41890:18;;-1:-1:-1;;;;;;41890:18:0::1;::::0;;41711:205::o;44677:101::-;47705:5;;-1:-1:-1;;;;;47705:5:0;39951:10;47694:16;39935:53;;;;-1:-1:-1;;;39935:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44747:15:0::1;44765:5;44747:15:::0;;;:6:::1;:15;::::0;;;;:23;;-1:-1:-1;;44747:23:0::1;::::0;;44677:101::o;20044:104::-;20100:13;20133:7;20126:14;;;;;:::i;24402:436::-;24495:4;602:10;24495:4;24578:25;602:10;24595:7;24578:9;:25::i;:::-;24551:52;;24642:15;24622:16;:35;;24614:85;;;;-1:-1:-1;;;24614:85:0;;14386:2:1;24614:85:0;;;14368:21:1;14425:2;14405:18;;;14398:30;14464:34;14444:18;;;14437:62;-1:-1:-1;;;14515:18:1;;;14508:35;14560:19;;24614:85:0;14184:401:1;24614:85:0;24735:60;24744:5;24751:7;24779:15;24760:16;:34;24735:8;:60::i;21449:193::-;21528:4;602:10;21584:28;602:10;21601:2;21605:6;21584:9;:28::i;42673:658::-;47705:5;;-1:-1:-1;;;;;47705:5:0;39951:10;47694:16;39935:53;;;;-1:-1:-1;;;39935:53:0;;;;;;;:::i;:::-;42784:10:::1;42781:543;;;42829:1;42818:7;:12;;:31;;;;;42845:4;42834:7;:15;;42818:31;42810:81;;;::::0;-1:-1:-1;;;42810:81:0;;10602:2:1;42810:81:0::1;::::0;::::1;10584:21:1::0;10641:2;10621:18;;;10614:30;10680:34;10660:18;;;10653:62;-1:-1:-1;;;10731:18:1;;;10724:35;10776:19;;42810:81:0::1;10400:401:1::0;42810:81:0::1;42968:7;42956;42941:12;;:22;;;;:::i;:::-;42940:36;;;;:::i;:::-;42906:19;:70:::0;;;42996:47:::1;::::0;14736:25:1;;;42996:47:0::1;::::0;14724:2:1;14709:18;42996:47:0::1;;;;;;;;48049:193:::0;47873:376;;:::o;42781:543::-:1;43095:1;43084:7;:12;;:30;;;;;43111:3;43100:7;:14;;43084:30;43076:74;;;::::0;-1:-1:-1;;;43076:74:0;;11358:2:1;43076:74:0::1;::::0;::::1;11340:21:1::0;11397:2;11377:18;;;11370:30;11436:33;11416:18;;;11409:61;11487:18;;43076:74:0::1;11156:355:1::0;43076:74:0::1;43230:7;43219;43204:12;;:22;;;;:::i;:::-;43203:34;;;;:::i;:::-;43165:35:::0;:72;;;43257:55:::1;::::0;14736:25:1;;;43257:55:0::1;::::0;14724:2:1;14709:18;43257:55:0::1;14590:177:1::0;21705:151:0;-1:-1:-1;;;;;21821:18:0;;;21794:7;21821:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;21705:151::o;42071:537::-;47705:5;;-1:-1:-1;;;;;47705:5:0;39951:10;47694:16;39935:53;;;;-1:-1:-1;;;39935:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;42152:22:0;::::1;42144:105;;;::::0;-1:-1:-1;;;42144:105:0;;7384:2:1;42144:105:0::1;::::0;::::1;7366:21:1::0;7423:2;7403:18;;;7396:30;7462:34;7442:18;;;7435:62;7533:34;7513:18;;;7506:62;-1:-1:-1;;;7584:19:1;;;7577:37;7631:19;;42144:105:0::1;7182:474:1::0;42144:105:0::1;42286:5;::::0;42265:37:::1;::::0;;-1:-1:-1;;;;;42286:5:0;;::::1;5046:34:1::0;;5116:15;;;5111:2;5096:18;;5089:43;42265:37:0::1;::::0;4981:18:1;42265:37:0::1;;;;;;;42328:5;::::0;-1:-1:-1;;;;;42328:5:0::1;42337:1;21217:18:::0;;;;;;;;;;;42318:20;42315:74:::1;;42355:5;::::0;-1:-1:-1;;;;;42355:5:0::1;21190:7:::0;21217:18;;;;;;;;;;;42340:49:::1;::::0;42355:5;42362:8;;48170:14;:60::i;42340:49::-:1;42418:5;::::0;;-1:-1:-1;;;;;42418:5:0;;::::1;42427;42400:24:::0;;;:17:::1;:24;::::0;;;;;;;:32;;-1:-1:-1;;42400:32:0;;::::1;::::0;;;42460:5;;;::::1;42443:23:::0;;:16:::1;:23:::0;;;;;;:31;;;::::1;::::0;;42493:27;;;::::1;::::0;;;;;;;;;:34;;;::::1;42418:5:::0;42493:34;;::::1;::::0;;;42538:26;;;;;;;:33;;;;::::1;::::0;;::::1;::::0;;42584:16;;-1:-1:-1;;;;;;42584:16:0::1;::::0;;::::1;::::0;;42071:537::o;28429:380::-;-1:-1:-1;;;;;28565:19:0;;28557:68;;;;-1:-1:-1;;;28557:68:0;;13573:2:1;28557:68:0;;;13555:21:1;13612:2;13592:18;;;13585:30;13651:34;13631:18;;;13624:62;-1:-1:-1;;;13702:18:1;;;13695:34;13746:19;;28557:68:0;13371:400:1;28557:68:0;-1:-1:-1;;;;;28644:21:0;;28636:68;;;;-1:-1:-1;;;28636:68:0;;8266:2:1;28636:68:0;;;8248:21:1;8305:2;8285:18;;;8278:30;8344:34;8324:18;;;8317:62;-1:-1:-1;;;8395:18:1;;;8388:32;8437:19;;28636:68:0;8064:398:1;28636:68:0;-1:-1:-1;;;;;28717:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;28769:32;;14736:25:1;;;28769:32:0;;14709:18:1;28769:32:0;;;;;;;28429:380;;;:::o;29100:453::-;29235:24;29262:25;29272:5;29279:7;29262:9;:25::i;:::-;29235:52;;-1:-1:-1;;29302:16:0;:37;29298:248;;29384:6;29364:16;:26;;29356:68;;;;-1:-1:-1;;;29356:68:0;;8669:2:1;29356:68:0;;;8651:21:1;8708:2;8688:18;;;8681:30;8747:31;8727:18;;;8720:59;8796:18;;29356:68:0;8467:353:1;29356:68:0;29468:51;29477:5;29484:7;29512:6;29493:16;:25;29468:8;:51::i;:::-;29224:329;29100:453;;;:::o;45315:1553::-;-1:-1:-1;;;;;45415:12:0;;;;;;:6;:12;;;;;;;;45414:13;45406:44;;;;-1:-1:-1;;;45406:44:0;;11718:2:1;45406:44:0;;;11700:21:1;11757:2;11737:18;;;11730:30;-1:-1:-1;;;11776:18:1;;;11769:48;11834:18;;45406:44:0;11516:342:1;45406:44:0;-1:-1:-1;;;;;45470:10:0;;;;;;:6;:10;;;;;;;;45469:11;45461:45;;;;-1:-1:-1;;;45461:45:0;;12065:2:1;45461:45:0;;;12047:21:1;12104:2;12084:18;;;12077:30;-1:-1:-1;;;12123:18:1;;;12116:51;12184:18;;45461:45:0;11863:345:1;45461:45:0;45520:18;;;;:45;;;;-1:-1:-1;45542:23:0;;;;;;;45520:45;45517:98;;;45581:22;45600:2;45581:18;:22::i;:::-;45628:16;45635:4;45641:2;45628:6;:16::i;:::-;:38;;;;-1:-1:-1;45648:18:0;;;;45628:38;:70;;;;-1:-1:-1;45670:28:0;;;;45628:70;45625:1028;;;-1:-1:-1;;;;;45718:21:0;;;;;;:17;:21;;;;;;;;45714:365;;45777:19;:31;45767:41;;;;;:106;;-1:-1:-1;45838:35:0;;45828:6;45812:13;45822:2;-1:-1:-1;;;;;21217:18:0;21190:7;21217:18;;;;;;;;;;;;21116:127;45812:13;:22;;;;:::i;:::-;:61;;45767:106;45759:157;;;;-1:-1:-1;;;45759:157:0;;;;;;;:::i;:::-;45714:365;;;45947:4;;-1:-1:-1;;;;;45941:10:0;;;45947:4;;45941:10;45938:141;;;45989:19;:31;45979:41;;;45971:92;;;;-1:-1:-1;;;45971:92:0;;;;;;;:::i;:::-;46105:4;;-1:-1:-1;;;;;46097:12:0;;;46105:4;;46097:12;:37;;;;-1:-1:-1;;;;;;46114:20:0;;;;;;:16;:20;;;;;;;;46113:21;46097:37;:72;;;;-1:-1:-1;46138:12:0;:31;;;46097:72;46093:548;;;-1:-1:-1;;;;;46198:12:0;;;;;;:8;:12;;;;;;46213:15;-1:-1:-1;46190:85:0;;;;-1:-1:-1;;;46190:85:0;;6973:2:1;46190:85:0;;;6955:21:1;7012:2;6992:18;;;6985:30;7051:34;7031:18;;;7024:62;-1:-1:-1;;;7102:18:1;;;7095:40;7152:19;;46190:85:0;6771:406:1;46190:85:0;46328:12;:25;46309:45;;46328:25;;;;;46309:15;:45;:::i;:::-;-1:-1:-1;;;;;46294:12:0;;;;;;:8;:12;;;;;:60;46093:548;;;-1:-1:-1;;;;;46381:22:0;;;;;;:16;:22;;;;;;;;46380:23;:59;;;;-1:-1:-1;46407:12:0;:32;;;;;;46380:59;46376:265;;;-1:-1:-1;;;;;46467:14:0;;;;;;:8;:14;;;;;;46485:15;-1:-1:-1;46467:33:0;46459:85;;;;-1:-1:-1;;;46459:85:0;;13978:2:1;46459:85:0;;;13960:21:1;14017:2;13997:18;;;13990:30;14056:34;14036:18;;;14029:62;-1:-1:-1;;;14107:18:1;;;14100:37;14154:19;;46459:85:0;13776:403:1;46459:85:0;46599:12;:25;46580:45;;46599:25;;;;;46580:15;:45;:::i;:::-;-1:-1:-1;;;;;46563:14:0;;;;;;:8;:14;;;;;:62;46376:265;46667:18;;;;46663:153;;47705:5;;-1:-1:-1;;;;;47694:16:0;;;47705:5;;47694:16;46702:47;;;;-1:-1:-1;;;46702:47:0;;11008:2:1;46702:47:0;;;10990:21:1;11047:2;11027:18;;;11020:30;-1:-1:-1;;;11066:18:1;;;11059:51;11127:18;;46702:47:0;10806:345:1;46702:47:0;46789:4;;-1:-1:-1;;;;;46783:10:0;;;46789:4;;46783:10;46780:24;;;46795:9;46802:1;46795:6;:9::i;:::-;46828:32;46843:4;46849:2;46853:6;46828:14;:32::i;27316:675::-;-1:-1:-1;;;;;27400:21:0;;27392:67;;;;-1:-1:-1;;;27392:67:0;;12765:2:1;27392:67:0;;;12747:21:1;12804:2;12784:18;;;12777:30;12843:34;12823:18;;;12816:62;-1:-1:-1;;;12894:18:1;;;12887:31;12935:19;;27392:67:0;12563:397:1;27392:67:0;-1:-1:-1;;;;;27559:18:0;;27534:22;27559:18;;;;;;;;;;;27596:24;;;;27588:71;;;;-1:-1:-1;;;27588:71:0;;7863:2:1;27588:71:0;;;7845:21:1;7902:2;7882:18;;;7875:30;7941:34;7921:18;;;7914:62;-1:-1:-1;;;7992:18:1;;;7985:32;8034:19;;27588:71:0;7661:398:1;27588:71:0;-1:-1:-1;;;;;27695:18:0;;:9;:18;;;;;;;;;;;27716:23;;;27695:44;;27834:12;:22;;;;;;;27885:37;14736:25:1;;;27695:9:0;;:18;27885:37;;14709:18:1;27885:37:0;;;;;;;48049:193;47873:376;;:::o;46876:127::-;46962:33;46978:4;46984:2;46988:6;46962:15;:33::i;44786:257::-;44872:19;;:6;44851:18;44894:12;;44851:40;;44872:19;;;;;44851:40;:::i;:::-;:55;:123;;44965:9;45090:23;:31;;-1:-1:-1;;45090:31:0;;;45051:78;44965:9;44851:123;;;44919:34;44939:7;44948:4;44919:19;:34::i;:::-;44988:23;;;;;;;44985:50;;;45013:20;:22;;;:20;:22;;;:::i;:::-;;;;;;44985:50;44786:257;:::o;44357:312::-;44421:4;44446:13;44454:4;47705:5;;-1:-1:-1;;;;;47694:16:0;;;47705:5;;47694:16;;47615:103;44446:13;44445:14;:43;;;;-1:-1:-1;47705:5:0;;-1:-1:-1;;;;;47694:16:0;;;47705:5;;47694:16;44476:12;44445:43;:78;;;;-1:-1:-1;44518:5:0;;-1:-1:-1;;;;;44518:5:0;44505:9;:18;;44445:78;:110;;;;-1:-1:-1;;;;;;44541:14:0;;;;;;:8;:14;;;;;;;;44540:15;44445:110;:140;;;;-1:-1:-1;;;;;;44573:12:0;;;;;;:8;:12;;;;;;;;44572:13;44445:140;:178;;;;-1:-1:-1;;;;;;44602:21:0;;44616:6;44602:21;;44445:178;:216;;;;-1:-1:-1;;;;;;44640:21:0;;44656:4;44640:21;;44445:216;44438:223;44357:312;-1:-1:-1;;;44357:312:0:o;44104:245::-;44160:18;:25;;44217:12;44160:6;44196:33;44240:19;:34;;-1:-1:-1;;44240:34:0;44160:25;44240:34;;;;;-1:-1:-1;;44285:30:0;;;;;44331:10;;;;-1:-1:-1;;44331:10:0;44104:245;:::o;25308:840::-;-1:-1:-1;;;;;25439:18:0;;25431:68;;;;-1:-1:-1;;;25431:68:0;;13167:2:1;25431:68:0;;;13149:21:1;13206:2;13186:18;;;13179:30;13245:34;13225:18;;;13218:62;-1:-1:-1;;;13296:18:1;;;13289:35;13341:19;;25431:68:0;12965:401:1;25431:68:0;-1:-1:-1;;;;;25518:16:0;;25510:64;;;;-1:-1:-1;;;25510:64:0;;6569:2:1;25510:64:0;;;6551:21:1;6608:2;6588:18;;;6581:30;6647:34;6627:18;;;6620:62;-1:-1:-1;;;6698:18:1;;;6691:33;6741:19;;25510:64:0;6367:399:1;25510:64:0;-1:-1:-1;;;;;25660:15:0;;25638:19;25660:15;;;;;;;;;;;25694:21;;;;25686:72;;;;-1:-1:-1;;;25686:72:0;;9438:2:1;25686:72:0;;;9420:21:1;9477:2;9457:18;;;9450:30;9516:34;9496:18;;;9489:62;-1:-1:-1;;;9567:18:1;;;9560:36;9613:19;;25686:72:0;9236:402:1;25686:72:0;-1:-1:-1;;;;;25794:15:0;;;:9;:15;;;;;;;;;;;25812:20;;;25794:38;;26012:13;;;;;;;;;;:23;;;;;;26064:26;;14736:25:1;;;26012:13:0;;26064:26;;14709:18:1;26064:26:0;;;;;;;26103:37;47873:376;45137:170;45225:11;45221:73;;;-1:-1:-1;;;;;45253:15:0;;;;;;:6;:15;;;;;:29;;-1:-1:-1;;45253:29:0;;;;;;;45221:73;45137:170;;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:673::-;246:5;299:3;292:4;284:6;280:17;276:27;266:55;;317:1;314;307:12;266:55;353:6;340:20;379:4;403:60;419:43;459:2;419:43;:::i;:::-;403:60;:::i;:::-;485:3;509:2;504:3;497:15;537:2;532:3;528:12;521:19;;572:2;564:6;560:15;624:3;619:2;613;610:1;606:10;598:6;594:23;590:32;587:41;584:61;;;641:1;638;631:12;584:61;663:1;673:163;687:2;684:1;681:9;673:163;;;744:17;;732:30;;782:12;;;;814;;;;705:1;698:9;673:163;;;-1:-1:-1;854:5:1;;192:673;-1:-1:-1;;;;;;;192:673:1:o;870:160::-;935:20;;991:13;;984:21;974:32;;964:60;;1020:1;1017;1010:12;1035:186;1094:6;1147:2;1135:9;1126:7;1122:23;1118:32;1115:52;;;1163:1;1160;1153:12;1115:52;1186:29;1205:9;1186:29;:::i;1226:260::-;1294:6;1302;1355:2;1343:9;1334:7;1330:23;1326:32;1323:52;;;1371:1;1368;1361:12;1323:52;1394:29;1413:9;1394:29;:::i;:::-;1384:39;;1442:38;1476:2;1465:9;1461:18;1442:38;:::i;:::-;1432:48;;1226:260;;;;;:::o;1491:328::-;1568:6;1576;1584;1637:2;1625:9;1616:7;1612:23;1608:32;1605:52;;;1653:1;1650;1643:12;1605:52;1676:29;1695:9;1676:29;:::i;:::-;1666:39;;1724:38;1758:2;1747:9;1743:18;1724:38;:::i;:::-;1714:48;;1809:2;1798:9;1794:18;1781:32;1771:42;;1491:328;;;;;:::o;1824:460::-;1907:6;1915;1923;1931;1939;1992:3;1980:9;1971:7;1967:23;1963:33;1960:53;;;2009:1;2006;1999:12;1960:53;2032:29;2051:9;2032:29;:::i;:::-;2022:39;;2080:35;2111:2;2100:9;2096:18;2080:35;:::i;:::-;2070:45;;2134:35;2165:2;2154:9;2150:18;2134:35;:::i;:::-;2124:45;;2188:35;2219:2;2208:9;2204:18;2188:35;:::i;:::-;2178:45;;2242:36;2273:3;2262:9;2258:19;2242:36;:::i;:::-;2232:46;;1824:460;;;;;;;;:::o;2289:254::-;2357:6;2365;2418:2;2406:9;2397:7;2393:23;2389:32;2386:52;;;2434:1;2431;2424:12;2386:52;2457:29;2476:9;2457:29;:::i;:::-;2447:39;2533:2;2518:18;;;;2505:32;;-1:-1:-1;;;2289:254:1:o;2548:1157::-;2666:6;2674;2727:2;2715:9;2706:7;2702:23;2698:32;2695:52;;;2743:1;2740;2733:12;2695:52;2783:9;2770:23;2812:18;2853:2;2845:6;2842:14;2839:34;;;2869:1;2866;2859:12;2839:34;2907:6;2896:9;2892:22;2882:32;;2952:7;2945:4;2941:2;2937:13;2933:27;2923:55;;2974:1;2971;2964:12;2923:55;3010:2;2997:16;3032:4;3056:60;3072:43;3112:2;3072:43;:::i;3056:60::-;3138:3;3162:2;3157:3;3150:15;3190:2;3185:3;3181:12;3174:19;;3221:2;3217;3213:11;3269:7;3264:2;3258;3255:1;3251:10;3247:2;3243:19;3239:28;3236:41;3233:61;;;3290:1;3287;3280:12;3233:61;3312:1;3303:10;;3322:169;3336:2;3333:1;3330:9;3322:169;;;3393:23;3412:3;3393:23;:::i;:::-;3381:36;;3354:1;3347:9;;;;;3437:12;;;;3469;;3322:169;;;-1:-1:-1;3510:5:1;-1:-1:-1;;3553:18:1;;3540:32;;-1:-1:-1;;3584:16:1;;;3581:36;;;3613:1;3610;3603:12;3581:36;;3636:63;3691:7;3680:8;3669:9;3665:24;3636:63;:::i;:::-;3626:73;;;2548:1157;;;;;:::o;3710:405::-;3779:6;3787;3795;3848:2;3836:9;3827:7;3823:23;3819:32;3816:52;;;3864:1;3861;3854:12;3816:52;3887:26;3903:9;3887:26;:::i;:::-;3877:36;;3932:35;3963:2;3952:9;3948:18;3932:35;:::i;:::-;3922:45;;4017:2;4006:9;4002:18;3989:32;4061:4;4054:5;4050:16;4043:5;4040:27;4030:55;;4081:1;4078;4071:12;4030:55;4104:5;4094:15;;;3710:405;;;;;:::o;4120:180::-;4179:6;4232:2;4220:9;4211:7;4207:23;4203:32;4200:52;;;4248:1;4245;4238:12;4200:52;-1:-1:-1;4271:23:1;;4120:180;-1:-1:-1;4120:180:1:o;4305:316::-;4379:6;4387;4395;4448:2;4436:9;4427:7;4423:23;4419:32;4416:52;;;4464:1;4461;4454:12;4416:52;4500:9;4487:23;4477:33;;4557:2;4546:9;4542:18;4529:32;4519:42;;4580:35;4611:2;4600:9;4596:18;4580:35;:::i;:::-;4570:45;;4305:316;;;;;:::o;5765:597::-;5877:4;5906:2;5935;5924:9;5917:21;5967:6;5961:13;6010:6;6005:2;5994:9;5990:18;5983:34;6035:1;6045:140;6059:6;6056:1;6053:13;6045:140;;;6154:14;;;6150:23;;6144:30;6120:17;;;6139:2;6116:26;6109:66;6074:10;;6045:140;;;6203:6;6200:1;6197:13;6194:91;;;6273:1;6268:2;6259:6;6248:9;6244:22;6240:31;6233:42;6194:91;-1:-1:-1;6346:2:1;6325:15;-1:-1:-1;;6321:29:1;6306:45;;;;6353:2;6302:54;;5765:597;-1:-1:-1;;;5765:597:1:o;9643:402::-;9845:2;9827:21;;;9884:2;9864:18;;;9857:30;9923:34;9918:2;9903:18;;9896:62;-1:-1:-1;;;9989:2:1;9974:18;;9967:36;10035:3;10020:19;;9643:402::o;10050:345::-;10252:2;10234:21;;;10291:2;10271:18;;;10264:30;-1:-1:-1;;;10325:2:1;10310:18;;10303:51;10386:2;10371:18;;10050:345::o;15790:275::-;15861:2;15855:9;15926:2;15907:13;;-1:-1:-1;;15903:27:1;15891:40;;15961:18;15946:34;;15982:22;;;15943:62;15940:88;;;16008:18;;:::i;:::-;16044:2;16037:22;15790:275;;-1:-1:-1;15790:275:1:o;16070:183::-;16130:4;16163:18;16155:6;16152:30;16149:56;;;16185:18;;:::i;:::-;-1:-1:-1;16230:1:1;16226:14;16242:4;16222:25;;16070:183::o;16258:128::-;16298:3;16329:1;16325:6;16322:1;16319:13;16316:39;;;16335:18;;:::i;:::-;-1:-1:-1;16371:9:1;;16258:128::o;16391:217::-;16431:1;16457;16447:132;;16501:10;16496:3;16492:20;16489:1;16482:31;16536:4;16533:1;16526:15;16564:4;16561:1;16554:15;16447:132;-1:-1:-1;16593:9:1;;16391:217::o;16613:168::-;16653:7;16719:1;16715;16711:6;16707:14;16704:1;16701:21;16696:1;16689:9;16682:17;16678:45;16675:71;;;16726:18;;:::i;:::-;-1:-1:-1;16766:9:1;;16613:168::o;16786:125::-;16826:4;16854:1;16851;16848:8;16845:34;;;16859:18;;:::i;:::-;-1:-1:-1;16896:9:1;;16786:125::o;16916:380::-;16995:1;16991:12;;;;17038;;;17059:61;;17113:4;17105:6;17101:17;17091:27;;17059:61;17166:2;17158:6;17155:14;17135:18;17132:38;17129:161;;;17212:10;17207:3;17203:20;17200:1;17193:31;17247:4;17244:1;17237:15;17275:4;17272:1;17265:15;17129:161;;16916:380;;;:::o;17301:135::-;17340:3;-1:-1:-1;;17361:17:1;;17358:43;;;17381:18;;:::i;:::-;-1:-1:-1;17428:1:1;17417:13;;17301:135::o;17441:175::-;17478:3;17522:4;17515:5;17511:16;17551:4;17542:7;17539:17;17536:43;;;17559:18;;:::i;:::-;17608:1;17595:15;;17441:175;-1:-1:-1;;17441:175:1:o;17621:127::-;17682:10;17677:3;17673:20;17670:1;17663:31;17713:4;17710:1;17703:15;17737:4;17734:1;17727:15;17753:127;17814:10;17809:3;17805:20;17802:1;17795:31;17845:4;17842:1;17835:15;17869:4;17866:1;17859:15;17885:127;17946:10;17941:3;17937:20;17934:1;17927:31;17977:4;17974:1;17967:15;18001:4;17998:1;17991:15
Swarm Source
ipfs://654ecca091b62c944cf0d02338cd154e9a406b7f4345758d30b3444aa9a1acba
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.