Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Token Contract
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 1,385 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 23660915 | 10 hrs ago | IN | 0 ETH | 0.00001536 | ||||
| Approve | 23621204 | 6 days ago | IN | 0 ETH | 0.00002186 | ||||
| Approve | 23610174 | 7 days ago | IN | 0 ETH | 0.00001558 | ||||
| Approve | 23603386 | 8 days ago | IN | 0 ETH | 0.00003345 | ||||
| Transfer | 23588795 | 10 days ago | IN | 0 ETH | 0.00004274 | ||||
| Approve | 23580862 | 11 days ago | IN | 0 ETH | 0.00004387 | ||||
| Approve | 23580861 | 11 days ago | IN | 0 ETH | 0.00007736 | ||||
| Approve | 23577627 | 12 days ago | IN | 0 ETH | 0.0000745 | ||||
| Transfer | 23553455 | 15 days ago | IN | 0 ETH | 0.00009034 | ||||
| Approve | 23543129 | 16 days ago | IN | 0 ETH | 0.00004395 | ||||
| Approve | 23532179 | 18 days ago | IN | 0 ETH | 0.00000694 | ||||
| Transfer | 23532163 | 18 days ago | IN | 0 ETH | 0.00000966 | ||||
| Approve | 23532152 | 18 days ago | IN | 0 ETH | 0.00000767 | ||||
| Transfer | 23532044 | 18 days ago | IN | 0 ETH | 0.00001116 | ||||
| Approve | 23526678 | 19 days ago | IN | 0 ETH | 0.00049419 | ||||
| Transfer | 23521387 | 19 days ago | IN | 0 ETH | 0.00004986 | ||||
| Approve | 23520718 | 20 days ago | IN | 0 ETH | 0.00010598 | ||||
| Approve | 23517781 | 20 days ago | IN | 0 ETH | 0.00000668 | ||||
| Approve | 23517778 | 20 days ago | IN | 0 ETH | 0.00001024 | ||||
| Approve | 23505715 | 22 days ago | IN | 0 ETH | 0.00007521 | ||||
| Transfer | 23505661 | 22 days ago | IN | 0 ETH | 0.00005929 | ||||
| Transfer | 23505601 | 22 days ago | IN | 0 ETH | 0.00003964 | ||||
| Transfer | 23505600 | 22 days ago | IN | 0 ETH | 0.00004499 | ||||
| Approve | 23505596 | 22 days ago | IN | 0 ETH | 0.00001853 | ||||
| Approve | 23505586 | 22 days ago | IN | 0 ETH | 0.00001879 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
MONKE
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-07-16
*/
// SPDX-License-Identifier: MIT
/*
Twitter- https://x.com/monkerc20
Telegram- t.me/monkecoinerc20
Website- https://monkecoin.vip/
*/
pragma solidity ^0.8.9;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
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 Mint(address indexed sender, uint amount0, uint amount1);
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 mint(address to) external returns (uint liquidity);
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 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 IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
using SafeMath for uint256;
mapping(address => uint256) private _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:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, 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}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), 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}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
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) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
/**
* @dev Moves tokens `amount` from `sender` to `recipient`.
*
* This is internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, 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 = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(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);
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(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 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 to 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 {}
}
library SafeMath {
/**
* @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) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @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 sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @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) {
// 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 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts 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) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts 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 mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
library SafeMathInt {
int256 private constant MIN_INT256 = int256(1) << 255;
int256 private constant MAX_INT256 = ~(int256(1) << 255);
/**
* @dev Multiplies two int256 variables and fails on overflow.
*/
function mul(int256 a, int256 b) internal pure returns (int256) {
int256 c = a * b;
// Detect overflow when multiplying MIN_INT256 with -1
require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
require((b == 0) || (c / b == a));
return c;
}
/**
* @dev Division of two int256 variables and fails on overflow.
*/
function div(int256 a, int256 b) internal pure returns (int256) {
// Prevent overflow when dividing MIN_INT256 by -1
require(b != -1 || a != MIN_INT256);
// Solidity already throws when dividing by 0.
return a / b;
}
/**
* @dev Subtracts two int256 variables and fails on overflow.
*/
function sub(int256 a, int256 b) internal pure returns (int256) {
int256 c = a - b;
require((b >= 0 && c <= a) || (b < 0 && c > a));
return c;
}
/**
* @dev Adds two int256 variables and fails on overflow.
*/
function add(int256 a, int256 b) internal pure returns (int256) {
int256 c = a + b;
require((b >= 0 && c >= a) || (b < 0 && c < a));
return c;
}
/**
* @dev Converts to absolute value, and fails on overflow.
*/
function abs(int256 a) internal pure returns (int256) {
require(a != MIN_INT256);
return a < 0 ? -a : a;
}
function toUint256Safe(int256 a) internal pure returns (uint256) {
require(a >= 0);
return uint256(a);
}
}
library SafeMathUint {
function toInt256Safe(uint256 a) internal pure returns (int256) {
int256 b = int256(a);
require(b >= 0);
return b;
}
}
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 MONKE is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
address public constant deadAddress = address(0xdead);
bool private swapping;
address public marketingWallet;
address public devWallet;
address public buyBackWallet;
uint256 public maxTransactionAmount;
uint256 public maxWallet;
uint8 private _decimals;
bool public limitsInEffect = true;
bool public tradingActive = false;
bool public swapEnabled = false;
bool public rescueSwap = false;
uint256 public tradingActiveBlock;
uint256 public buyTotalFees;
uint256 public buyMarketingFee;
uint256 public buyLiquidityFee;
uint256 public buyDevFee;
uint256 public buyBuyBackFee;
uint256 public sellTotalFees;
uint256 public sellMarketingFee;
uint256 public sellLiquidityFee;
uint256 public sellDevFee;
uint256 public sellBuyBackFee;
uint256 public tokensForMarketing;
uint256 public tokensForLiquidity;
uint256 public tokensForDev;
uint256 public tokensForBuyBack;
/******************/
// exlcude from fees and max transaction amount
mapping (address => bool) private _isExcludedFromFees;
mapping (address => bool) public _isExcludedMaxTransactionAmount;
// store addresses that a automatic market maker pairs. Any transfer *to* these addresses
// could be subject to a maximum transfer amount
mapping (address => bool) public automatedMarketMakerPairs;
event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
event buyBackWalletUpdated(address indexed newWallet, address indexed oldWallet);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiquidity
);
event BuyBackTriggered(uint256 amount);
event OwnerForcedSwapBack(uint256 timestamp);
constructor() ERC20("MONKE", "MONKE") {
address _owner = _msgSender();
_decimals = 18;
uint256 totalSupply = 100 * 1e6 * (10**_decimals);
maxTransactionAmount = totalSupply * 1 / 100; // 1% maxTransactionAmountTxn
maxWallet = totalSupply * 1 / 100; // 1% maxWallet
buyMarketingFee = 0;
buyLiquidityFee = 0;
buyDevFee = 0;
buyBuyBackFee = 0;
buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBuyBackFee;
sellMarketingFee = 0;
sellLiquidityFee = 0;
sellDevFee = 0;
sellBuyBackFee = 0;
sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBuyBackFee;
marketingWallet = address(_owner); // set as marketing wallet
devWallet = address(_owner); // set as dev wallet
buyBackWallet = address(_owner); // set as buyBackWallet
address currentRouter;
//Adding Variables for all the routers for easier deployment for our customers.
if (block.chainid == 56) {
currentRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // PCS Router
} else if (block.chainid == 97) {
currentRouter = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // PCS Testnet
} else if (block.chainid == 43114) {
currentRouter = 0x60aE616a2155Ee3d9A68541Ba4544862310933d4; //Avax Mainnet
} else if (block.chainid == 137) {
currentRouter = 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff; //Polygon Ropsten
} else if (block.chainid == 250) {
currentRouter = 0xF491e7B69E4244ad4002BC14e878a34207E38c29; //SpookySwap FTM
} else if (block.chainid == 3) {
currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Ropsten
} else if (block.chainid == 1 || block.chainid == 4) {
currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Mainnet
} else {
revert();
}
//End of Router Variables.
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(currentRouter);
excludeFromMaxTransaction(address(_uniswapV2Router), true);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
excludeFromMaxTransaction(address(uniswapV2Pair), true);
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
// exclude from paying fees or having max transaction amount
excludeFromFees(_owner, true);
excludeFromFees(address(this), true);
excludeFromFees(address(0xdead), true);
excludeFromMaxTransaction(_owner, true);
excludeFromMaxTransaction(address(this), true);
excludeFromMaxTransaction(address(0xdead), true);
/*
_mint is an internal function in ERC20.sol that is only called here,
and CANNOT be called ever again
*/
_mint(_owner, totalSupply);
transferOwnership(_owner);
}
receive() external payable {
}
// once enabled, can never be turned off
function enableTrading() external onlyOwner {
tradingActive = true;
swapEnabled = true;
tradingActiveBlock = block.number;
}
// remove limits after token is stable
function removeLimits() external onlyOwner returns (bool){
limitsInEffect = false;
return true;
}
function updateMaxAmount(uint256 newNum) external onlyOwner {
require(newNum >= (totalSupply() * 1 / 100)/(10**_decimals), "Cannot set maxTransactionAmount lower than 1%");
maxTransactionAmount = newNum * (10**_decimals);
}
function updateMaxWallet(uint256 newNum) external onlyOwner {
require(newNum >= (totalSupply() * 1 / 100)/(10**_decimals), "Cannot set maxTransactionAmount lower than 1%");
maxWallet= newNum * (10**_decimals);
}
function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
_isExcludedMaxTransactionAmount[updAds] = isEx;
}
function decimals() public view override returns (uint8) {
return _decimals;
}
// only use to disable contract sales if absolutely necessary (emergency use only)
function updateSwapEnabled(bool enabled) external onlyOwner(){
swapEnabled = enabled;
}
// only use this to disable swapback and send tax in form of tokens
function updateRescueSwap(bool enabled) external onlyOwner(){
rescueSwap = enabled;
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function isExcludedFromFees(address account) external view returns(bool) {
return _isExcludedFromFees[account];
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
if(!tradingActive){
require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
}
if(amount == 0) {
super._transfer(from, to, 0);
return;
}
if(limitsInEffect){
if (
from != owner() &&
to != owner() &&
to != address(0) &&
to != address(0xdead) &&
!(_isExcludedFromFees[from] || _isExcludedFromFees[to]) &&
!swapping
){
//when buy
if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
}
//when sell
else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
}
else {
require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
}
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance > 0;
if(
canSwap &&
swapEnabled &&
!swapping &&
!automatedMarketMakerPairs[from] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to]
) {
swapping = true;
swapBack();
swapping = false;
}
bool takeFee = !swapping;
// if any account belongs to _isExcludedFromFee account then remove the fee
if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
// only take fees on buys/sells, do not take on wallet transfers
if(takeFee){
if (automatedMarketMakerPairs[to]){
if (sellTotalFees > 0){
fees = amount.mul(sellTotalFees).div(100);
tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
tokensForDev += fees * sellDevFee / sellTotalFees;
tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
tokensForBuyBack += fees * sellBuyBackFee / sellTotalFees;
}
}
// on buy
else if(automatedMarketMakerPairs[from]) {
if (buyTotalFees > 0){
fees = amount.mul(buyTotalFees).div(100);
tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
tokensForDev += fees * buyDevFee / buyTotalFees;
tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
tokensForBuyBack += fees * buyBuyBackFee / buyTotalFees;
}
}
if(fees > 0){
super._transfer(from, address(this), fees);
}
amount -= fees;
}
super._transfer(from, to, amount);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
) {} catch {}
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
try uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
deadAddress,
block.timestamp
) {} catch {}
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
if (rescueSwap){
if (contractBalance > 0){
super._transfer(address(this), marketingWallet, contractBalance);
}
return;
}
uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev + tokensForBuyBack;
bool success;
if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
// Halve the amount of liquidity tokens
uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
uint256 initialETHBalance = address(this).balance;
swapTokensForEth(amountToSwapForETH);
uint256 ethBalance = address(this).balance.sub(initialETHBalance);
uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
uint256 ethForBuyBack = ethBalance.mul(tokensForBuyBack).div(totalTokensToSwap);
uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev - ethForBuyBack;
tokensForLiquidity = 0;
tokensForMarketing = 0;
tokensForDev = 0;
tokensForBuyBack = 0;
(success,) = address(devWallet).call{value: ethForDev}("");
(success,) = address(buyBackWallet).call{value: ethForBuyBack}("");
if(liquidityTokens > 0 && ethForLiquidity > 0){
addLiquidity(liquidityTokens, ethForLiquidity);
emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
}
(success,) = address(marketingWallet).call{value: address(this).balance}("");
}
}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":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"buyBackWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBuyBack","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateRescueSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c0604052600b805464ffffffff0019166101001790553480156200002357600080fd5b506040805180820182526005808252644d4f4e4b4560d81b602080840182815285518087019096529285528401528151919291620000649160039162000921565b5080516200007a90600490602084019062000921565b50505060006200008f6200054060201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003477833981519152908290a350600b805460ff191660129081179091553390600090620000ee90600a62000ada565b620000fe906305f5e10062000af2565b905060646200010f82600162000af2565b6200011b919062000b14565b60095560646200012d82600162000af2565b62000139919062000b14565b600a556000600e819055600f81905560108190556011819055806200015f818062000b37565b6200016b919062000b37565b62000177919062000b37565b600d5560006013819055601481905560158190556016819055806200019d818062000b37565b620001a9919062000b37565b620001b5919062000b37565b601255600680546001600160a01b0384166001600160a01b0319918216811790925560078054821683179055600880549091169091179055600060384614156200021557507310ed43c718714eb63d5aa57b78b54704e256024e6200030b565b46606114156200023b575073d99d1c33f9fc3444f8101754abc46c52416550d16200030b565b4661a86a14156200026257507360ae616a2155ee3d9a68541ba4544862310933d46200030b565b466089141562000288575073a5e0829caced8ffdd4de3c43696c57f7d7a678ff6200030b565b4660fa1415620002ae575073f491e7b69e4244ad4002bc14e878a34207e38c296200030b565b4660031415620002d45750737a250d5630b4cf539739df2c5dacb4c659f2488d6200030b565b4660011480620002e45750466004145b15620003065750737a250d5630b4cf539739df2c5dacb4c659f2488d6200030b565b600080fd5b806200031981600162000544565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200035f57600080fd5b505afa15801562000374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039a919062000b52565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003e357600080fd5b505afa158015620003f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041e919062000b52565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200046757600080fd5b505af11580156200047c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a2919062000b52565b6001600160a01b031660a0819052620004bd90600162000544565b60a051620004cd906001620005be565b620004da84600162000612565b620004e730600162000612565b620004f661dead600162000612565b6200050384600162000544565b6200051030600162000544565b6200051f61dead600162000544565b6200052b8484620006bc565b6200053684620007b8565b5050505062000bba565b3390565b6005546001600160a01b03163314620005935760405162461bcd60e51b815260206004820181905260248201526000805160206200345783398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200065d5760405162461bcd60e51b815260206004820181905260248201526000805160206200345783398151915260448201526064016200058a565b6001600160a01b0382166000818152601b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620007145760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200058a565b6200073081600254620008b560201b620010f71790919060201c565b6002556001600160a01b0382166000908152602081815260409091205462000763918390620010f7620008b5821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620008035760405162461bcd60e51b815260206004820181905260248201526000805160206200345783398151915260448201526064016200058a565b6001600160a01b0381166200086a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200058a565b6005546040516001600160a01b038084169216906000805160206200347783398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080620008c4838562000b37565b905083811015620009185760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200058a565b90505b92915050565b8280546200092f9062000b7d565b90600052602060002090601f0160209004810192826200095357600085556200099e565b82601f106200096e57805160ff19168380011785556200099e565b828001600101855582156200099e579182015b828111156200099e57825182559160200191906001019062000981565b50620009ac929150620009b0565b5090565b5b80821115620009ac5760008155600101620009b1565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000a1e57816000190482111562000a025762000a02620009c7565b8085161562000a1057918102915b93841c9390800290620009e2565b509250929050565b60008262000a37575060016200091b565b8162000a46575060006200091b565b816001811462000a5f576002811462000a6a5762000a8a565b60019150506200091b565b60ff84111562000a7e5762000a7e620009c7565b50506001821b6200091b565b5060208310610133831016604e8410600b841016171562000aaf575081810a6200091b565b62000abb8383620009dd565b806000190482111562000ad25762000ad2620009c7565b029392505050565b600062000aeb60ff84168362000a26565b9392505050565b600081600019048311821515161562000b0f5762000b0f620009c7565b500290565b60008262000b3257634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111562000b4d5762000b4d620009c7565b500190565b60006020828403121562000b6557600080fd5b81516001600160a01b03811681146200091857600080fd5b600181811c9082168062000b9257607f821691505b6020821081141562000bb457634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05161284d62000c0a6000396000818161057e0152610e7301526000818161040d01528181611fd60152818161209e015281816120da0152818161215101526121ae015261284d6000f3fe60806040526004361061031e5760003560e01c80637571336a116101ab578063a0d82dc5116100f7578063d85ba06311610095578063f11a24d31161006f578063f11a24d31461095f578063f2fde38b14610975578063f637434214610995578063f8b45b05146109ab57600080fd5b8063d85ba063146108ed578063dd62ed3e14610903578063ee40166e1461094957600080fd5b8063b62496f5116100d1578063b62496f514610867578063bbc0c74214610897578063c0246668146108b7578063c8c8ebe4146108d757600080fd5b8063a0d82dc514610811578063a457c2d714610827578063a9059cbb1461084757600080fd5b8063921369131161016457806395d89b411161013e57806395d89b41146107b05780639a7a23d6146107c55780639c3b4fdc146107e55780639fccce32146107fb57600080fd5b8063921369131461075a578063924de9b714610770578063955b225b1461079057600080fd5b80637571336a146106b157806375f0a874146106d15780637bce5a04146106f15780638a8c523c146107075780638da5cb5b1461071c5780638ea5220f1461073a57600080fd5b806323b872dd1161026a5780634c24c51d116102235780636ddd1713116101fd5780636ddd17131461063057806370a0823114610651578063715018a614610687578063751039fc1461069c57600080fd5b80634c24c51d146105bf5780634fbee193146105e15780636a486a8e1461061a57600080fd5b806323b872dd146104f457806327c8f83514610514578063313ce5671461052a578063395093511461054c57806349bd5a5e1461056c5780634a62bb65146105a057600080fd5b806318160ddd116102d75780631c499ab0116102b15780631c499ab0146104885780631cd348c0146104a85780631f3fed8f146104c85780631fe70a98146104de57600080fd5b806318160ddd146104475780631a221dbb1461045c5780631a8145bb1461047257600080fd5b806306fdde031461032a578063095ea7b3146103555780630b166d5014610385578063106b5da1146103a957806310d5de53146103cb5780631694505e146103fb57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f6109c1565b60405161034c9190612269565b60405180910390f35b34801561036157600080fd5b506103756103703660046122d3565b610a53565b604051901515815260200161034c565b34801561039157600080fd5b5061039b601a5481565b60405190815260200161034c565b3480156103b557600080fd5b506103c96103c43660046122ff565b610a6a565b005b3480156103d757600080fd5b506103756103e6366004612318565b601c6020526000908152604090205460ff1681565b34801561040757600080fd5b5061042f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034c565b34801561045357600080fd5b5060025461039b565b34801561046857600080fd5b5061039b60165481565b34801561047e57600080fd5b5061039b60185481565b34801561049457600080fd5b506103c96104a33660046122ff565b610b18565b3480156104b457600080fd5b5060085461042f906001600160a01b031681565b3480156104d457600080fd5b5061039b60175481565b3480156104ea57600080fd5b5061039b60115481565b34801561050057600080fd5b5061037561050f366004612335565b610bbd565b34801561052057600080fd5b5061042f61dead81565b34801561053657600080fd5b50600b5460405160ff909116815260200161034c565b34801561055857600080fd5b506103756105673660046122d3565b610c26565b34801561057857600080fd5b5061042f7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ac57600080fd5b50600b5461037590610100900460ff1681565b3480156105cb57600080fd5b50600b5461037590640100000000900460ff1681565b3480156105ed57600080fd5b506103756105fc366004612318565b6001600160a01b03166000908152601b602052604090205460ff1690565b34801561062657600080fd5b5061039b60125481565b34801561063c57600080fd5b50600b54610375906301000000900460ff1681565b34801561065d57600080fd5b5061039b61066c366004612318565b6001600160a01b031660009081526020819052604090205490565b34801561069357600080fd5b506103c9610c5c565b3480156106a857600080fd5b50610375610cd0565b3480156106bd57600080fd5b506103c96106cc36600461238b565b610d0e565b3480156106dd57600080fd5b5060065461042f906001600160a01b031681565b3480156106fd57600080fd5b5061039b600e5481565b34801561071357600080fd5b506103c9610d63565b34801561072857600080fd5b506005546001600160a01b031661042f565b34801561074657600080fd5b5060075461042f906001600160a01b031681565b34801561076657600080fd5b5061039b60135481565b34801561077c57600080fd5b506103c961078b3660046123c0565b610da6565b34801561079c57600080fd5b506103c96107ab3660046123c0565b610dee565b3480156107bc57600080fd5b5061033f610e38565b3480156107d157600080fd5b506103c96107e036600461238b565b610e47565b3480156107f157600080fd5b5061039b60105481565b34801561080757600080fd5b5061039b60195481565b34801561081d57600080fd5b5061039b60155481565b34801561083357600080fd5b506103756108423660046122d3565b610f27565b34801561085357600080fd5b506103756108623660046122d3565b610f76565b34801561087357600080fd5b50610375610882366004612318565b601d6020526000908152604090205460ff1681565b3480156108a357600080fd5b50600b546103759062010000900460ff1681565b3480156108c357600080fd5b506103c96108d236600461238b565b610f83565b3480156108e357600080fd5b5061039b60095481565b3480156108f957600080fd5b5061039b600d5481565b34801561090f57600080fd5b5061039b61091e3660046123db565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561095557600080fd5b5061039b600c5481565b34801561096b57600080fd5b5061039b600f5481565b34801561098157600080fd5b506103c9610990366004612318565b61100c565b3480156109a157600080fd5b5061039b60145481565b3480156109b757600080fd5b5061039b600a5481565b6060600380546109d090612414565b80601f01602080910402602001604051908101604052809291908181526020018280546109fc90612414565b8015610a495780601f10610a1e57610100808354040283529160200191610a49565b820191906000526020600020905b815481529060010190602001808311610a2c57829003601f168201915b5050505050905090565b6000610a6033848461115d565b5060015b92915050565b6005546001600160a01b03163314610a9d5760405162461bcd60e51b8152600401610a949061244f565b60405180910390fd5b600b54610aae9060ff16600a61257e565b6064610ab960025490565b610ac490600161258d565b610ace91906125ac565b610ad891906125ac565b811015610af75760405162461bcd60e51b8152600401610a94906125ce565b600b54610b089060ff16600a61257e565b610b12908261258d565b60095550565b6005546001600160a01b03163314610b425760405162461bcd60e51b8152600401610a949061244f565b600b54610b539060ff16600a61257e565b6064610b5e60025490565b610b6990600161258d565b610b7391906125ac565b610b7d91906125ac565b811015610b9c5760405162461bcd60e51b8152600401610a94906125ce565b600b54610bad9060ff16600a61257e565b610bb7908261258d565b600a5550565b6000610bca848484611282565b610c1c8433610c17856040518060600160405280602881526020016127cb602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611a0f565b61115d565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a60918590610c1790866110f7565b6005546001600160a01b03163314610c865760405162461bcd60e51b8152600401610a949061244f565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b03163314610cfd5760405162461bcd60e51b8152600401610a949061244f565b50600b805461ff0019169055600190565b6005546001600160a01b03163314610d385760405162461bcd60e51b8152600401610a949061244f565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d8d5760405162461bcd60e51b8152600401610a949061244f565b600b805463ffff00001916630101000017905543600c55565b6005546001600160a01b03163314610dd05760405162461bcd60e51b8152600401610a949061244f565b600b805491151563010000000263ff00000019909216919091179055565b6005546001600160a01b03163314610e185760405162461bcd60e51b8152600401610a949061244f565b600b80549115156401000000000264ff0000000019909216919091179055565b6060600480546109d090612414565b6005546001600160a01b03163314610e715760405162461bcd60e51b8152600401610a949061244f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415610f195760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a94565b610f238282611a49565b5050565b6000610a603384610c17856040518060600160405280602581526020016127f3602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611a0f565b6000610a60338484611282565b6005546001600160a01b03163314610fad5760405162461bcd60e51b8152600401610a949061244f565b6001600160a01b0382166000818152601b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146110365760405162461bcd60e51b8152600401610a949061244f565b6001600160a01b03811661109b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a94565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080611104838561261b565b9050838110156111565760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a94565b9392505050565b6001600160a01b0383166111bf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a94565b6001600160a01b0382166112205760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a94565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166112a85760405162461bcd60e51b8152600401610a9490612633565b6001600160a01b0382166112ce5760405162461bcd60e51b8152600401610a9490612678565b600b5462010000900460ff16611362576001600160a01b0383166000908152601b602052604090205460ff168061131d57506001600160a01b0382166000908152601b602052604090205460ff165b6113625760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a94565b806113785761137383836000611a9d565b505050565b600b54610100900460ff1615611688576005546001600160a01b038481169116148015906113b457506005546001600160a01b03838116911614155b80156113c857506001600160a01b03821615155b80156113df57506001600160a01b03821661dead14155b801561142757506001600160a01b0383166000908152601b602052604090205460ff168061142557506001600160a01b0382166000908152601b602052604090205460ff165b155b801561143d5750600554600160a01b900460ff16155b15611688576001600160a01b0383166000908152601d602052604090205460ff16801561148357506001600160a01b0382166000908152601c602052604090205460ff16155b15611567576009548111156114f85760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a94565b600a546001600160a01b03831660009081526020819052604090205461151e908361261b565b11156115625760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a94565b611688565b6001600160a01b0382166000908152601d602052604090205460ff1680156115a857506001600160a01b0383166000908152601c602052604090205460ff16155b1561161e576009548111156115625760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a94565b600a546001600160a01b038316600090815260208190526040902054611644908361261b565b11156116885760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a94565b30600090815260208190526040902054801580159081906116b25750600b546301000000900460ff165b80156116c85750600554600160a01b900460ff16155b80156116ed57506001600160a01b0385166000908152601d602052604090205460ff16155b801561171257506001600160a01b0385166000908152601b602052604090205460ff16155b801561173757506001600160a01b0384166000908152601b602052604090205460ff16155b15611765576005805460ff60a01b1916600160a01b179055611757611ba6565b6005805460ff60a01b191690555b6005546001600160a01b0386166000908152601b602052604090205460ff600160a01b9092048216159116806117b357506001600160a01b0385166000908152601b602052604090205460ff165b156117bc575060005b600081156119fb576001600160a01b0386166000908152601d602052604090205460ff16156118d657601254156118d15761180d606461180760125488611e7c90919063ffffffff16565b90611efb565b905060125460145482611820919061258d565b61182a91906125ac565b6018600082825461183b919061261b565b9091555050601254601554611850908361258d565b61185a91906125ac565b6019600082825461186b919061261b565b9091555050601254601354611880908361258d565b61188a91906125ac565b6017600082825461189b919061261b565b90915550506012546016546118b0908361258d565b6118ba91906125ac565b601a60008282546118cb919061261b565b90915550505b6119dd565b6001600160a01b0387166000908152601d602052604090205460ff16156119dd57600d54156119dd576119196064611807600d5488611e7c90919063ffffffff16565b9050600d54600f548261192c919061258d565b61193691906125ac565b60186000828254611947919061261b565b9091555050600d5460105461195c908361258d565b61196691906125ac565b60196000828254611977919061261b565b9091555050600d54600e5461198c908361258d565b61199691906125ac565b601760008282546119a7919061261b565b9091555050600d546011546119bc908361258d565b6119c691906125ac565b601a60008282546119d7919061261b565b90915550505b80156119ee576119ee873083611a9d565b6119f881866126bb565b94505b611a06878787611a9d565b50505050505050565b60008184841115611a335760405162461bcd60e51b8152600401610a949190612269565b506000611a4084866126bb565b95945050505050565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611ac35760405162461bcd60e51b8152600401610a9490612633565b6001600160a01b038216611ae95760405162461bcd60e51b8152600401610a9490612678565b611b26816040518060600160405280602681526020016127a5602691396001600160a01b0386166000908152602081905260409020549190611a0f565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611b5590826110f7565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611275565b30600090815260208190526040902054600b54640100000000900460ff1615611bea578015611be757600654611be79030906001600160a01b031683611a9d565b50565b6000601a54601954601754601854611c02919061261b565b611c0c919061261b565b611c16919061261b565b90506000821580611c25575081155b15611c2f57505050565b600060028360185486611c42919061258d565b611c4c91906125ac565b611c5691906125ac565b90506000611c648583611f3d565b905047611c7082611f7f565b6000611c7c4783611f3d565b90506000611c998761180760175485611e7c90919063ffffffff16565b90506000611cb68861180760195486611e7c90919063ffffffff16565b90506000611cd389611807601a5487611e7c90919063ffffffff16565b905060008183611ce386886126bb565b611ced91906126bb565b611cf791906126bb565b6000601881905560178190556019819055601a8190556007546040519293506001600160a01b031691859181818185875af1925050503d8060008114611d59576040519150601f19603f3d011682016040523d82523d6000602084013e611d5e565b606091505b5050600854604051919a506001600160a01b0316908390600081818185875af1925050503d8060008114611dae576040519150601f19603f3d011682016040523d82523d6000602084013e611db3565b606091505b50909950508715801590611dc75750600081115b15611e1a57611dd6888261214b565b601854604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611e67576040519150601f19603f3d011682016040523d82523d6000602084013e611e6c565b606091505b5050505050505050505050505050565b600082611e8b57506000610a64565b6000611e97838561258d565b905082611ea485836125ac565b146111565760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a94565b600061115683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061223b565b600061115683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a0f565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fb457611fb46126d2565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561202d57600080fd5b505afa158015612041573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206591906126e8565b81600181518110612078576120786126d2565b60200260200101906001600160a01b031690816001600160a01b0316815250506120c3307f00000000000000000000000000000000000000000000000000000000000000008461115d565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612118908590600090869030904290600401612705565b600060405180830381600087803b15801561213257600080fd5b505af1925050508015612143575060015b610f23575050565b612176307f00000000000000000000000000000000000000000000000000000000000000008461115d565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c4016060604051808303818588803b1580156121fb57600080fd5b505af19350505050801561222c575060408051601f3d908101601f1916820190925261222991810190612776565b60015b612234575050565b5050505050565b6000818361225c5760405162461bcd60e51b8152600401610a949190612269565b506000611a4084866125ac565b600060208083528351808285015260005b818110156122965785810183015185820160400152820161227a565b818111156122a8576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611be757600080fd5b600080604083850312156122e657600080fd5b82356122f1816122be565b946020939093013593505050565b60006020828403121561231157600080fd5b5035919050565b60006020828403121561232a57600080fd5b8135611156816122be565b60008060006060848603121561234a57600080fd5b8335612355816122be565b92506020840135612365816122be565b929592945050506040919091013590565b8035801515811461238657600080fd5b919050565b6000806040838503121561239e57600080fd5b82356123a9816122be565b91506123b760208401612376565b90509250929050565b6000602082840312156123d257600080fd5b61115682612376565b600080604083850312156123ee57600080fd5b82356123f9816122be565b91506020830135612409816122be565b809150509250929050565b600181811c9082168061242857607f821691505b6020821081141561244957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156124d55781600019048211156124bb576124bb612484565b808516156124c857918102915b93841c939080029061249f565b509250929050565b6000826124ec57506001610a64565b816124f957506000610a64565b816001811461250f576002811461251957612535565b6001915050610a64565b60ff84111561252a5761252a612484565b50506001821b610a64565b5060208310610133831016604e8410600b8410161715612558575081810a610a64565b612562838361249a565b806000190482111561257657612576612484565b029392505050565b600061115660ff8416836124dd565b60008160001904831182151516156125a7576125a7612484565b500290565b6000826125c957634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602d908201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060408201526c6c6f776572207468616e20312560981b606082015260800190565b6000821982111561262e5761262e612484565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156126cd576126cd612484565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156126fa57600080fd5b8151611156816122be565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127555784516001600160a01b031683529383019391830191600101612730565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561278b57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122064f75655538de3e3f2b43c13d45186302d92ce1b3e88b48c530cbe960ab1b27564736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x60806040526004361061031e5760003560e01c80637571336a116101ab578063a0d82dc5116100f7578063d85ba06311610095578063f11a24d31161006f578063f11a24d31461095f578063f2fde38b14610975578063f637434214610995578063f8b45b05146109ab57600080fd5b8063d85ba063146108ed578063dd62ed3e14610903578063ee40166e1461094957600080fd5b8063b62496f5116100d1578063b62496f514610867578063bbc0c74214610897578063c0246668146108b7578063c8c8ebe4146108d757600080fd5b8063a0d82dc514610811578063a457c2d714610827578063a9059cbb1461084757600080fd5b8063921369131161016457806395d89b411161013e57806395d89b41146107b05780639a7a23d6146107c55780639c3b4fdc146107e55780639fccce32146107fb57600080fd5b8063921369131461075a578063924de9b714610770578063955b225b1461079057600080fd5b80637571336a146106b157806375f0a874146106d15780637bce5a04146106f15780638a8c523c146107075780638da5cb5b1461071c5780638ea5220f1461073a57600080fd5b806323b872dd1161026a5780634c24c51d116102235780636ddd1713116101fd5780636ddd17131461063057806370a0823114610651578063715018a614610687578063751039fc1461069c57600080fd5b80634c24c51d146105bf5780634fbee193146105e15780636a486a8e1461061a57600080fd5b806323b872dd146104f457806327c8f83514610514578063313ce5671461052a578063395093511461054c57806349bd5a5e1461056c5780634a62bb65146105a057600080fd5b806318160ddd116102d75780631c499ab0116102b15780631c499ab0146104885780631cd348c0146104a85780631f3fed8f146104c85780631fe70a98146104de57600080fd5b806318160ddd146104475780631a221dbb1461045c5780631a8145bb1461047257600080fd5b806306fdde031461032a578063095ea7b3146103555780630b166d5014610385578063106b5da1146103a957806310d5de53146103cb5780631694505e146103fb57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f6109c1565b60405161034c9190612269565b60405180910390f35b34801561036157600080fd5b506103756103703660046122d3565b610a53565b604051901515815260200161034c565b34801561039157600080fd5b5061039b601a5481565b60405190815260200161034c565b3480156103b557600080fd5b506103c96103c43660046122ff565b610a6a565b005b3480156103d757600080fd5b506103756103e6366004612318565b601c6020526000908152604090205460ff1681565b34801561040757600080fd5b5061042f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161034c565b34801561045357600080fd5b5060025461039b565b34801561046857600080fd5b5061039b60165481565b34801561047e57600080fd5b5061039b60185481565b34801561049457600080fd5b506103c96104a33660046122ff565b610b18565b3480156104b457600080fd5b5060085461042f906001600160a01b031681565b3480156104d457600080fd5b5061039b60175481565b3480156104ea57600080fd5b5061039b60115481565b34801561050057600080fd5b5061037561050f366004612335565b610bbd565b34801561052057600080fd5b5061042f61dead81565b34801561053657600080fd5b50600b5460405160ff909116815260200161034c565b34801561055857600080fd5b506103756105673660046122d3565b610c26565b34801561057857600080fd5b5061042f7f0000000000000000000000002e3b8bcb8da0b96a5f845705fa7510f4d5f63f2881565b3480156105ac57600080fd5b50600b5461037590610100900460ff1681565b3480156105cb57600080fd5b50600b5461037590640100000000900460ff1681565b3480156105ed57600080fd5b506103756105fc366004612318565b6001600160a01b03166000908152601b602052604090205460ff1690565b34801561062657600080fd5b5061039b60125481565b34801561063c57600080fd5b50600b54610375906301000000900460ff1681565b34801561065d57600080fd5b5061039b61066c366004612318565b6001600160a01b031660009081526020819052604090205490565b34801561069357600080fd5b506103c9610c5c565b3480156106a857600080fd5b50610375610cd0565b3480156106bd57600080fd5b506103c96106cc36600461238b565b610d0e565b3480156106dd57600080fd5b5060065461042f906001600160a01b031681565b3480156106fd57600080fd5b5061039b600e5481565b34801561071357600080fd5b506103c9610d63565b34801561072857600080fd5b506005546001600160a01b031661042f565b34801561074657600080fd5b5060075461042f906001600160a01b031681565b34801561076657600080fd5b5061039b60135481565b34801561077c57600080fd5b506103c961078b3660046123c0565b610da6565b34801561079c57600080fd5b506103c96107ab3660046123c0565b610dee565b3480156107bc57600080fd5b5061033f610e38565b3480156107d157600080fd5b506103c96107e036600461238b565b610e47565b3480156107f157600080fd5b5061039b60105481565b34801561080757600080fd5b5061039b60195481565b34801561081d57600080fd5b5061039b60155481565b34801561083357600080fd5b506103756108423660046122d3565b610f27565b34801561085357600080fd5b506103756108623660046122d3565b610f76565b34801561087357600080fd5b50610375610882366004612318565b601d6020526000908152604090205460ff1681565b3480156108a357600080fd5b50600b546103759062010000900460ff1681565b3480156108c357600080fd5b506103c96108d236600461238b565b610f83565b3480156108e357600080fd5b5061039b60095481565b3480156108f957600080fd5b5061039b600d5481565b34801561090f57600080fd5b5061039b61091e3660046123db565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561095557600080fd5b5061039b600c5481565b34801561096b57600080fd5b5061039b600f5481565b34801561098157600080fd5b506103c9610990366004612318565b61100c565b3480156109a157600080fd5b5061039b60145481565b3480156109b757600080fd5b5061039b600a5481565b6060600380546109d090612414565b80601f01602080910402602001604051908101604052809291908181526020018280546109fc90612414565b8015610a495780601f10610a1e57610100808354040283529160200191610a49565b820191906000526020600020905b815481529060010190602001808311610a2c57829003601f168201915b5050505050905090565b6000610a6033848461115d565b5060015b92915050565b6005546001600160a01b03163314610a9d5760405162461bcd60e51b8152600401610a949061244f565b60405180910390fd5b600b54610aae9060ff16600a61257e565b6064610ab960025490565b610ac490600161258d565b610ace91906125ac565b610ad891906125ac565b811015610af75760405162461bcd60e51b8152600401610a94906125ce565b600b54610b089060ff16600a61257e565b610b12908261258d565b60095550565b6005546001600160a01b03163314610b425760405162461bcd60e51b8152600401610a949061244f565b600b54610b539060ff16600a61257e565b6064610b5e60025490565b610b6990600161258d565b610b7391906125ac565b610b7d91906125ac565b811015610b9c5760405162461bcd60e51b8152600401610a94906125ce565b600b54610bad9060ff16600a61257e565b610bb7908261258d565b600a5550565b6000610bca848484611282565b610c1c8433610c17856040518060600160405280602881526020016127cb602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611a0f565b61115d565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a60918590610c1790866110f7565b6005546001600160a01b03163314610c865760405162461bcd60e51b8152600401610a949061244f565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b03163314610cfd5760405162461bcd60e51b8152600401610a949061244f565b50600b805461ff0019169055600190565b6005546001600160a01b03163314610d385760405162461bcd60e51b8152600401610a949061244f565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d8d5760405162461bcd60e51b8152600401610a949061244f565b600b805463ffff00001916630101000017905543600c55565b6005546001600160a01b03163314610dd05760405162461bcd60e51b8152600401610a949061244f565b600b805491151563010000000263ff00000019909216919091179055565b6005546001600160a01b03163314610e185760405162461bcd60e51b8152600401610a949061244f565b600b80549115156401000000000264ff0000000019909216919091179055565b6060600480546109d090612414565b6005546001600160a01b03163314610e715760405162461bcd60e51b8152600401610a949061244f565b7f0000000000000000000000002e3b8bcb8da0b96a5f845705fa7510f4d5f63f286001600160a01b0316826001600160a01b03161415610f195760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a94565b610f238282611a49565b5050565b6000610a603384610c17856040518060600160405280602581526020016127f3602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611a0f565b6000610a60338484611282565b6005546001600160a01b03163314610fad5760405162461bcd60e51b8152600401610a949061244f565b6001600160a01b0382166000818152601b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146110365760405162461bcd60e51b8152600401610a949061244f565b6001600160a01b03811661109b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a94565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080611104838561261b565b9050838110156111565760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a94565b9392505050565b6001600160a01b0383166111bf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a94565b6001600160a01b0382166112205760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a94565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166112a85760405162461bcd60e51b8152600401610a9490612633565b6001600160a01b0382166112ce5760405162461bcd60e51b8152600401610a9490612678565b600b5462010000900460ff16611362576001600160a01b0383166000908152601b602052604090205460ff168061131d57506001600160a01b0382166000908152601b602052604090205460ff165b6113625760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a94565b806113785761137383836000611a9d565b505050565b600b54610100900460ff1615611688576005546001600160a01b038481169116148015906113b457506005546001600160a01b03838116911614155b80156113c857506001600160a01b03821615155b80156113df57506001600160a01b03821661dead14155b801561142757506001600160a01b0383166000908152601b602052604090205460ff168061142557506001600160a01b0382166000908152601b602052604090205460ff165b155b801561143d5750600554600160a01b900460ff16155b15611688576001600160a01b0383166000908152601d602052604090205460ff16801561148357506001600160a01b0382166000908152601c602052604090205460ff16155b15611567576009548111156114f85760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a94565b600a546001600160a01b03831660009081526020819052604090205461151e908361261b565b11156115625760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a94565b611688565b6001600160a01b0382166000908152601d602052604090205460ff1680156115a857506001600160a01b0383166000908152601c602052604090205460ff16155b1561161e576009548111156115625760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a94565b600a546001600160a01b038316600090815260208190526040902054611644908361261b565b11156116885760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a94565b30600090815260208190526040902054801580159081906116b25750600b546301000000900460ff165b80156116c85750600554600160a01b900460ff16155b80156116ed57506001600160a01b0385166000908152601d602052604090205460ff16155b801561171257506001600160a01b0385166000908152601b602052604090205460ff16155b801561173757506001600160a01b0384166000908152601b602052604090205460ff16155b15611765576005805460ff60a01b1916600160a01b179055611757611ba6565b6005805460ff60a01b191690555b6005546001600160a01b0386166000908152601b602052604090205460ff600160a01b9092048216159116806117b357506001600160a01b0385166000908152601b602052604090205460ff165b156117bc575060005b600081156119fb576001600160a01b0386166000908152601d602052604090205460ff16156118d657601254156118d15761180d606461180760125488611e7c90919063ffffffff16565b90611efb565b905060125460145482611820919061258d565b61182a91906125ac565b6018600082825461183b919061261b565b9091555050601254601554611850908361258d565b61185a91906125ac565b6019600082825461186b919061261b565b9091555050601254601354611880908361258d565b61188a91906125ac565b6017600082825461189b919061261b565b90915550506012546016546118b0908361258d565b6118ba91906125ac565b601a60008282546118cb919061261b565b90915550505b6119dd565b6001600160a01b0387166000908152601d602052604090205460ff16156119dd57600d54156119dd576119196064611807600d5488611e7c90919063ffffffff16565b9050600d54600f548261192c919061258d565b61193691906125ac565b60186000828254611947919061261b565b9091555050600d5460105461195c908361258d565b61196691906125ac565b60196000828254611977919061261b565b9091555050600d54600e5461198c908361258d565b61199691906125ac565b601760008282546119a7919061261b565b9091555050600d546011546119bc908361258d565b6119c691906125ac565b601a60008282546119d7919061261b565b90915550505b80156119ee576119ee873083611a9d565b6119f881866126bb565b94505b611a06878787611a9d565b50505050505050565b60008184841115611a335760405162461bcd60e51b8152600401610a949190612269565b506000611a4084866126bb565b95945050505050565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611ac35760405162461bcd60e51b8152600401610a9490612633565b6001600160a01b038216611ae95760405162461bcd60e51b8152600401610a9490612678565b611b26816040518060600160405280602681526020016127a5602691396001600160a01b0386166000908152602081905260409020549190611a0f565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611b5590826110f7565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611275565b30600090815260208190526040902054600b54640100000000900460ff1615611bea578015611be757600654611be79030906001600160a01b031683611a9d565b50565b6000601a54601954601754601854611c02919061261b565b611c0c919061261b565b611c16919061261b565b90506000821580611c25575081155b15611c2f57505050565b600060028360185486611c42919061258d565b611c4c91906125ac565b611c5691906125ac565b90506000611c648583611f3d565b905047611c7082611f7f565b6000611c7c4783611f3d565b90506000611c998761180760175485611e7c90919063ffffffff16565b90506000611cb68861180760195486611e7c90919063ffffffff16565b90506000611cd389611807601a5487611e7c90919063ffffffff16565b905060008183611ce386886126bb565b611ced91906126bb565b611cf791906126bb565b6000601881905560178190556019819055601a8190556007546040519293506001600160a01b031691859181818185875af1925050503d8060008114611d59576040519150601f19603f3d011682016040523d82523d6000602084013e611d5e565b606091505b5050600854604051919a506001600160a01b0316908390600081818185875af1925050503d8060008114611dae576040519150601f19603f3d011682016040523d82523d6000602084013e611db3565b606091505b50909950508715801590611dc75750600081115b15611e1a57611dd6888261214b565b601854604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611e67576040519150601f19603f3d011682016040523d82523d6000602084013e611e6c565b606091505b5050505050505050505050505050565b600082611e8b57506000610a64565b6000611e97838561258d565b905082611ea485836125ac565b146111565760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a94565b600061115683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061223b565b600061115683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a0f565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fb457611fb46126d2565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561202d57600080fd5b505afa158015612041573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206591906126e8565b81600181518110612078576120786126d2565b60200260200101906001600160a01b031690816001600160a01b0316815250506120c3307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461115d565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612118908590600090869030904290600401612705565b600060405180830381600087803b15801561213257600080fd5b505af1925050508015612143575060015b610f23575050565b612176307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461115d565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c4016060604051808303818588803b1580156121fb57600080fd5b505af19350505050801561222c575060408051601f3d908101601f1916820190925261222991810190612776565b60015b612234575050565b5050505050565b6000818361225c5760405162461bcd60e51b8152600401610a949190612269565b506000611a4084866125ac565b600060208083528351808285015260005b818110156122965785810183015185820160400152820161227a565b818111156122a8576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611be757600080fd5b600080604083850312156122e657600080fd5b82356122f1816122be565b946020939093013593505050565b60006020828403121561231157600080fd5b5035919050565b60006020828403121561232a57600080fd5b8135611156816122be565b60008060006060848603121561234a57600080fd5b8335612355816122be565b92506020840135612365816122be565b929592945050506040919091013590565b8035801515811461238657600080fd5b919050565b6000806040838503121561239e57600080fd5b82356123a9816122be565b91506123b760208401612376565b90509250929050565b6000602082840312156123d257600080fd5b61115682612376565b600080604083850312156123ee57600080fd5b82356123f9816122be565b91506020830135612409816122be565b809150509250929050565b600181811c9082168061242857607f821691505b6020821081141561244957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156124d55781600019048211156124bb576124bb612484565b808516156124c857918102915b93841c939080029061249f565b509250929050565b6000826124ec57506001610a64565b816124f957506000610a64565b816001811461250f576002811461251957612535565b6001915050610a64565b60ff84111561252a5761252a612484565b50506001821b610a64565b5060208310610133831016604e8410600b8410161715612558575081810a610a64565b612562838361249a565b806000190482111561257657612576612484565b029392505050565b600061115660ff8416836124dd565b60008160001904831182151516156125a7576125a7612484565b500290565b6000826125c957634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602d908201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060408201526c6c6f776572207468616e20312560981b606082015260800190565b6000821982111561262e5761262e612484565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156126cd576126cd612484565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156126fa57600080fd5b8151611156816122be565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127555784516001600160a01b031683529383019391830191600101612730565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561278b57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122064f75655538de3e3f2b43c13d45186302d92ce1b3e88b48c530cbe960ab1b27564736f6c63430008090033
Deployed Bytecode Sourcemap
29465:14895:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7621:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9788:169;;;;;;;;;;-1:-1:-1;9788:169:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;9788:169:0;1072:187:1;30639:31:0;;;;;;;;;;;;;;;;;;;1410:25:1;;;1398:2;1383:18;30639:31:0;1264:177:1;35505:246:0;;;;;;;;;;-1:-1:-1;35505:246:0;;;;;:::i;:::-;;:::i;:::-;;30824:64;;;;;;;;;;-1:-1:-1;30824:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29540:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2074:32:1;;;2056:51;;2044:2;2029:18;29540:51:0;1883:230:1;8741:108:0;;;;;;;;;;-1:-1:-1;8829:12:0;;8741:108;;30483:29;;;;;;;;;;;;;;;;30565:33;;;;;;;;;;;;;;;;35763:234;;;;;;;;;;-1:-1:-1;35763:234:0;;;;;:::i;:::-;;:::i;29803:28::-;;;;;;;;;;-1:-1:-1;29803:28:0;;;;-1:-1:-1;;;;;29803:28:0;;;30525:33;;;;;;;;;;;;;;;;30299:28;;;;;;;;;;;;;;;;10439:355;;;;;;;;;;-1:-1:-1;10439:355:0;;;;;:::i;:::-;;:::i;29643:53::-;;;;;;;;;;;;29689:6;29643:53;;36161:92;;;;;;;;;;-1:-1:-1;36236:9:0;;36161:92;;36236:9;;;;2929:36:1;;2917:2;2902:18;36161:92:0;2787:184:1;11203:218:0;;;;;;;;;;-1:-1:-1;11203:218:0;;;;;:::i;:::-;;:::i;29598:38::-;;;;;;;;;;;;;;;29949:33;;;;;;;;;;-1:-1:-1;29949:33:0;;;;;;;;;;;30067:30;;;;;;;;;;-1:-1:-1;30067:30:0;;;;;;;;;;;37292:127;;;;;;;;;;-1:-1:-1;37292:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;37383:28:0;37359:4;37383:28;;;:19;:28;;;;;;;;;37292:127;30340:28;;;;;;;;;;;;;;;;30029:31;;;;;;;;;;-1:-1:-1;30029:31:0;;;;;;;;;;;8912:127;;;;;;;;;;-1:-1:-1;8912:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9013:18:0;8986:7;9013:18;;;;;;;;;;;;8912:127;22086:148;;;;;;;;;;;;;:::i;35367:120::-;;;;;;;;;;;;;:::i;36009:144::-;;;;;;;;;;-1:-1:-1;36009:144:0;;;;;:::i;:::-;;:::i;29735:30::-;;;;;;;;;;-1:-1:-1;29735:30:0;;;;-1:-1:-1;;;;;29735:30:0;;;30194;;;;;;;;;;;;;;;;35155:156;;;;;;;;;;;;;:::i;21444:79::-;;;;;;;;;;-1:-1:-1;21509:6:0;;-1:-1:-1;;;;;21509:6:0;21444:79;;29772:24;;;;;;;;;;-1:-1:-1;29772:24:0;;;;-1:-1:-1;;;;;29772:24:0;;;30375:31;;;;;;;;;;;;;;;;36353:101;;;;;;;;;;-1:-1:-1;36353:101:0;;;;;:::i;:::-;;:::i;36535:99::-;;;;;;;;;;-1:-1:-1;36535:99:0;;;;;:::i;:::-;;:::i;7840:104::-;;;;;;;;;;;;;:::i;36832:246::-;;;;;;;;;;-1:-1:-1;36832:246:0;;;;;:::i;:::-;;:::i;30268:24::-;;;;;;;;;;;;;;;;30605:27;;;;;;;;;;;;;;;;30451:25;;;;;;;;;;;;;;;;11924:269;;;;;;;;;;-1:-1:-1;11924:269:0;;;;;:::i;:::-;;:::i;9252:175::-;;;;;;;;;;-1:-1:-1;9252:175:0;;;;;:::i;:::-;;:::i;31046:58::-;;;;;;;;;;-1:-1:-1;31046:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29989:33;;;;;;;;;;-1:-1:-1;29989:33:0;;;;;;;;;;;36642:182;;;;;;;;;;-1:-1:-1;36642:182:0;;;;;:::i;:::-;;:::i;29844:35::-;;;;;;;;;;;;;;;;30160:27;;;;;;;;;;;;;;;;9490:151;;;;;;;;;;-1:-1:-1;9490:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;9606:18:0;;;9579:7;9606:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9490:151;30110:33;;;;;;;;;;;;;;;;30231:30;;;;;;;;;;;;;;;;22389:244;;;;;;;;;;-1:-1:-1;22389:244:0;;;;;:::i;:::-;;:::i;30413:31::-;;;;;;;;;;;;;;;;29886:24;;;;;;;;;;;;;;;;7621:100;7675:13;7708:5;7701:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7621:100;:::o;9788:169::-;9871:4;9888:39;337:10;9911:7;9920:6;9888:8;:39::i;:::-;-1:-1:-1;9945:4:0;9788:169;;;;;:::o;35505:246::-;21656:6;;-1:-1:-1;;;;;21656:6:0;337:10;21656:22;21648:67;;;;-1:-1:-1;;;21648:67:0;;;;;;;:::i;:::-;;;;;;;;;35625:9:::1;::::0;35621:13:::1;::::0;35625:9:::1;;35621:2;:13;:::i;:::-;35615:3;35595:13;8829:12:::0;;;8741:108;35595:13:::1;:17;::::0;35611:1:::1;35595:17;:::i;:::-;:23;;;;:::i;:::-;35594:41;;;;:::i;:::-;35584:6;:51;;35576:109;;;;-1:-1:-1::0;;;35576:109:0::1;;;;;;;:::i;:::-;35733:9;::::0;35729:13:::1;::::0;35733:9:::1;;35729:2;:13;:::i;:::-;35719:24;::::0;:6;:24:::1;:::i;:::-;35696:20;:47:::0;-1:-1:-1;35505:246:0:o;35763:234::-;21656:6;;-1:-1:-1;;;;;21656:6:0;337:10;21656:22;21648:67;;;;-1:-1:-1;;;21648:67:0;;;;;;;:::i;:::-;35883:9:::1;::::0;35879:13:::1;::::0;35883:9:::1;;35879:2;:13;:::i;:::-;35873:3;35853:13;8829:12:::0;;;8741:108;35853:13:::1;:17;::::0;35869:1:::1;35853:17;:::i;:::-;:23;;;;:::i;:::-;35852:41;;;;:::i;:::-;35842:6;:51;;35834:109;;;;-1:-1:-1::0;;;35834:109:0::1;;;;;;;:::i;:::-;35979:9;::::0;35975:13:::1;::::0;35979:9:::1;;35975:2;:13;:::i;:::-;35965:24;::::0;:6;:24:::1;:::i;:::-;35954:9;:35:::0;-1:-1:-1;35763:234:0:o;10439:355::-;10579:4;10596:36;10606:6;10614:9;10625:6;10596:9;:36::i;:::-;10643:121;10652:6;337:10;10674:89;10712:6;10674:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10674:19:0;;;;;;:11;:19;;;;;;;;337:10;10674:33;;;;;;;;;;:37;:89::i;:::-;10643:8;:121::i;:::-;-1:-1:-1;10782:4:0;10439:355;;;;;:::o;11203:218::-;337:10;11291:4;11340:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11340:34:0;;;;;;;;;;11291:4;;11308:83;;11331:7;;11340:50;;11379:10;11340:38;:50::i;22086:148::-;21656:6;;-1:-1:-1;;;;;21656:6:0;337:10;21656:22;21648:67;;;;-1:-1:-1;;;21648:67:0;;;;;;;:::i;:::-;22177:6:::1;::::0;22156:40:::1;::::0;22193:1:::1;::::0;-1:-1:-1;;;;;22177:6:0::1;::::0;22156:40:::1;::::0;22193:1;;22156:40:::1;22207:6;:19:::0;;-1:-1:-1;;;;;;22207:19:0::1;::::0;;22086:148::o;35367:120::-;21656:6;;35419:4;;-1:-1:-1;;;;;21656:6:0;337:10;21656:22;21648:67;;;;-1:-1:-1;;;21648:67:0;;;;;;;:::i;:::-;-1:-1:-1;35435:14:0::1;:22:::0;;-1:-1:-1;;35435:22:0::1;::::0;;:14:::1;35367:120:::0;:::o;36009:144::-;21656:6;;-1:-1:-1;;;;;21656:6:0;337:10;21656:22;21648:67;;;;-1:-1:-1;;;21648:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36099:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;36099:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36009:144::o;35155:156::-;21656:6;;-1:-1:-1;;;;;21656:6:0;337:10;21656:22;21648:67;;;;-1:-1:-1;;;21648:67:0;;;;;;;:::i;:::-;35210:13:::1;:20:::0;;-1:-1:-1;;35241:18:0;;;;;35291:12:::1;35270:18;:33:::0;35155:156::o;36353:101::-;21656:6;;-1:-1:-1;;;;;21656:6:0;337:10;21656:22;21648:67;;;;-1:-1:-1;;;21648:67:0;;;;;;;:::i;:::-;36425:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;36425:21:0;;::::1;::::0;;;::::1;::::0;;36353:101::o;36535:99::-;21656:6;;-1:-1:-1;;;;;21656:6:0;337:10;21656:22;21648:67;;;;-1:-1:-1;;;21648:67:0;;;;;;;:::i;:::-;36606:10:::1;:20:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;36606:20:0;;::::1;::::0;;;::::1;::::0;;36535:99::o;7840:104::-;7896:13;7929:7;7922:14;;;;;:::i;36832:246::-;21656:6;;-1:-1:-1;;;;;21656:6:0;337:10;21656:22;21648:67;;;;-1:-1:-1;;;21648:67:0;;;;;;;:::i;:::-;36941:13:::1;-1:-1:-1::0;;;;;36933:21:0::1;:4;-1:-1:-1::0;;;;;36933:21:0::1;;;36925:91;;;::::0;-1:-1:-1;;;36925:91:0;;7311:2:1;36925:91:0::1;::::0;::::1;7293:21:1::0;7350:2;7330:18;;;7323:30;7389:34;7369:18;;;7362:62;7460:27;7440:18;;;7433:55;7505:19;;36925:91:0::1;7109:421:1::0;36925:91:0::1;37029:41;37058:4;37064:5;37029:28;:41::i;:::-;36832:246:::0;;:::o;11924:269::-;12017:4;12034:129;337:10;12057:7;12066:96;12105:15;12066:96;;;;;;;;;;;;;;;;;337:10;12066:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12066:34:0;;;;;;;;;;;;:38;:96::i;9252:175::-;9338:4;9355:42;337:10;9379:9;9390:6;9355:9;:42::i;36642:182::-;21656:6;;-1:-1:-1;;;;;21656:6:0;337:10;21656:22;21648:67;;;;-1:-1:-1;;;21648:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36727:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;36727:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;36782:34;;1212:41:1;;;36782:34:0::1;::::0;1185:18:1;36782:34:0::1;;;;;;;36642:182:::0;;:::o;22389:244::-;21656:6;;-1:-1:-1;;;;;21656:6:0;337:10;21656:22;21648:67;;;;-1:-1:-1;;;21648:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22478:22:0;::::1;22470:73;;;::::0;-1:-1:-1;;;22470:73:0;;7737:2:1;22470:73:0::1;::::0;::::1;7719:21:1::0;7776:2;7756:18;;;7749:30;7815:34;7795:18;;;7788:62;-1:-1:-1;;;7866:18:1;;;7859:36;7912:19;;22470:73:0::1;7535:402:1::0;22470:73:0::1;22580:6;::::0;22559:38:::1;::::0;-1:-1:-1;;;;;22559:38:0;;::::1;::::0;22580:6:::1;::::0;22559:38:::1;::::0;22580:6:::1;::::0;22559:38:::1;22608:6;:17:::0;;-1:-1:-1;;;;;;22608:17:0::1;-1:-1:-1::0;;;;;22608:17:0;;;::::1;::::0;;;::::1;::::0;;22389:244::o;16488:181::-;16546:7;;16578:5;16582:1;16578;:5;:::i;:::-;16566:17;;16607:1;16602;:6;;16594:46;;;;-1:-1:-1;;;16594:46:0;;8277:2:1;16594:46:0;;;8259:21:1;8316:2;8296:18;;;8289:30;8355:29;8335:18;;;8328:57;8402:18;;16594:46:0;8075:351:1;16594:46:0;16660:1;16488:181;-1:-1:-1;;;16488:181:0:o;15110:380::-;-1:-1:-1;;;;;15246:19:0;;15238:68;;;;-1:-1:-1;;;15238:68:0;;8633:2:1;15238:68:0;;;8615:21:1;8672:2;8652:18;;;8645:30;8711:34;8691:18;;;8684:62;-1:-1:-1;;;8762:18:1;;;8755:34;8806:19;;15238:68:0;8431:400:1;15238:68:0;-1:-1:-1;;;;;15325:21:0;;15317:68;;;;-1:-1:-1;;;15317:68:0;;9038:2:1;15317:68:0;;;9020:21:1;9077:2;9057:18;;;9050:30;9116:34;9096:18;;;9089:62;-1:-1:-1;;;9167:18:1;;;9160:32;9209:19;;15317:68:0;8836:398:1;15317:68:0;-1:-1:-1;;;;;15398:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15450:32;;1410:25:1;;;15450:32:0;;1383:18:1;15450:32:0;;;;;;;;15110:380;;;:::o;37431:3793::-;-1:-1:-1;;;;;37563:18:0;;37555:68;;;;-1:-1:-1;;;37555:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37642:16:0;;37634:64;;;;-1:-1:-1;;;37634:64:0;;;;;;;:::i;:::-;37713:13;;;;;;;37709:132;;-1:-1:-1;;;;;37750:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;37779:23:0;;;;;;:19;:23;;;;;;;;37750:52;37742:87;;;;-1:-1:-1;;;37742:87:0;;10251:2:1;37742:87:0;;;10233:21:1;10290:2;10270:18;;;10263:30;-1:-1:-1;;;10309:18:1;;;10302:52;10371:18;;37742:87:0;10049:346:1;37742:87:0;37855:11;37852:92;;37883:28;37899:4;37905:2;37909:1;37883:15;:28::i;:::-;37431:3793;;;:::o;37852:92::-;37967:14;;;;;;;37964:1134;;;21509:6;;-1:-1:-1;;;;;38019:15:0;;;21509:6;;38019:15;;;;:49;;-1:-1:-1;21509:6:0;;-1:-1:-1;;;;;38055:13:0;;;21509:6;;38055:13;;38019:49;:86;;;;-1:-1:-1;;;;;;38089:16:0;;;;38019:86;:128;;;;-1:-1:-1;;;;;;38126:21:0;;38140:6;38126:21;;38019:128;:204;;;;-1:-1:-1;;;;;;38170:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;38199:23:0;;;;;;:19;:23;;;;;;;;38170:52;38168:55;38019:204;:234;;;;-1:-1:-1;38245:8:0;;-1:-1:-1;;;38245:8:0;;;;38244:9;38019:234;37997:1090;;;-1:-1:-1;;;;;38338:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;38374:35:0;;;;;;:31;:35;;;;;;;;38373:36;38338:71;38334:738;;;38456:20;;38446:6;:30;;38438:96;;;;-1:-1:-1;;;38438:96:0;;10602:2:1;38438:96:0;;;10584:21:1;10641:2;10621:18;;;10614:30;10680:34;10660:18;;;10653:62;-1:-1:-1;;;10731:18:1;;;10724:51;10792:19;;38438:96:0;10400:417:1;38438:96:0;38595:9;;-1:-1:-1;;;;;9013:18:0;;8986:7;9013:18;;;;;;;;;;;38569:22;;:6;:22;:::i;:::-;:35;;38561:67;;;;-1:-1:-1;;;38561:67:0;;11024:2:1;38561:67:0;;;11006:21:1;11063:2;11043:18;;;11036:30;-1:-1:-1;;;11082:18:1;;;11075:49;11141:18;;38561:67:0;10822:343:1;38561:67:0;38334:738;;;-1:-1:-1;;;;;38722:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;38756:37:0;;;;;;:31;:37;;;;;;;;38755:38;38722:71;38718:354;;;38840:20;;38830:6;:30;;38822:97;;;;-1:-1:-1;;;38822:97:0;;11372:2:1;38822:97:0;;;11354:21:1;11411:2;11391:18;;;11384:30;11450:34;11430:18;;;11423:62;-1:-1:-1;;;11501:18:1;;;11494:52;11563:19;;38822:97:0;11170:418:1;38718:354:0;39019:9;;-1:-1:-1;;;;;9013:18:0;;8986:7;9013:18;;;;;;;;;;;38993:22;;:6;:22;:::i;:::-;:35;;38985:67;;;;-1:-1:-1;;;38985:67:0;;11024:2:1;38985:67:0;;;11006:21:1;11063:2;11043:18;;;11036:30;-1:-1:-1;;;11082:18:1;;;11075:49;11141:18;;38985:67:0;10822:343:1;38985:67:0;39161:4;39112:28;9013:18;;;;;;;;;;;39203:24;;;;;;;39258:35;;-1:-1:-1;39282:11:0;;;;;;;39258:35;:61;;;;-1:-1:-1;39311:8:0;;-1:-1:-1;;;39311:8:0;;;;39310:9;39258:61;:110;;;;-1:-1:-1;;;;;;39337:31:0;;;;;;:25;:31;;;;;;;;39336:32;39258:110;:153;;;;-1:-1:-1;;;;;;39386:25:0;;;;;;:19;:25;;;;;;;;39385:26;39258:153;:194;;;;-1:-1:-1;;;;;;39429:23:0;;;;;;:19;:23;;;;;;;;39428:24;39258:194;39240:338;;;39479:8;:15;;-1:-1:-1;;;;39479:15:0;-1:-1:-1;;;39479:15:0;;;39523:10;:8;:10::i;:::-;39550:8;:16;;-1:-1:-1;;;;39550:16:0;;;39240:338;39614:8;;-1:-1:-1;;;;;39723:25:0;;39598:12;39723:25;;;:19;:25;;;;;;39614:8;-1:-1:-1;;;39614:8:0;;;;;39613:9;;39723:25;;:52;;-1:-1:-1;;;;;;39752:23:0;;;;;;:19;:23;;;;;;;;39723:52;39720:99;;;-1:-1:-1;39802:5:0;39720:99;39839:12;39943:7;39940:1231;;;-1:-1:-1;;;;;39984:29:0;;;;;;:25;:29;;;;;;;;39980:1022;;;40037:13;;:17;40033:426;;40085:34;40115:3;40085:25;40096:13;;40085:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;40078:41;;40190:13;;40171:16;;40164:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;40142:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;40262:13:0;;40249:10;;40242:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;40226:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;40346:13:0;;40327:16;;40320:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;40298:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;40426:13:0;;40409:14;;40402:21;;:4;:21;:::i;:::-;:37;;;;:::i;:::-;40382:16;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;;40033:426:0;39980:1022;;;-1:-1:-1;;;;;40519:31:0;;;;;;:25;:31;;;;;;;;40516:486;;;40575:12;;:16;40571:416;;40622:33;40651:3;40622:24;40633:12;;40622:6;:10;;:24;;;;:::i;:33::-;40615:40;;40725:12;;40707:15;;40700:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;40678:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;40795:12:0;;40783:9;;40776:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;40760:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;40877:12:0;;40859:15;;40852:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;40830:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;40955:12:0;;40939:13;;40932:20;;:4;:20;:::i;:::-;:35;;;;:::i;:::-;40912:16;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;40571:416:0;41033:8;;41030:93;;41065:42;41081:4;41095;41102;41065:15;:42::i;:::-;41145:14;41155:4;41145:14;;:::i;:::-;;;39940:1231;41183:33;41199:4;41205:2;41209:6;41183:15;:33::i;:::-;37544:3680;;;;37431:3793;;;:::o;17391:192::-;17477:7;17513:12;17505:6;;;;17497:29;;;;-1:-1:-1;;;17497:29:0;;;;;;;;:::i;:::-;-1:-1:-1;17537:9:0;17549:5;17553:1;17549;:5;:::i;:::-;17537:17;17391:192;-1:-1:-1;;;;;17391:192:0:o;37090:188::-;-1:-1:-1;;;;;37173:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;37173:39:0;;;;;;;;;;37230:40;;37173:39;;:31;37230:40;;;37090:188;;:::o;12683:573::-;-1:-1:-1;;;;;12823:20:0;;12815:70;;;;-1:-1:-1;;;12815:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12904:23:0;;12896:71;;;;-1:-1:-1;;;12896:71:0;;;;;;;:::i;:::-;13060;13082:6;13060:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13060:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;13040:17:0;;;:9;:17;;;;;;;;;;;:91;;;;13165:20;;;;;;;:32;;13190:6;13165:24;:32::i;:::-;-1:-1:-1;;;;;13142:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;13213:35;1410:25:1;;;13142:20:0;;13213:35;;;;;;1383:18:1;13213:35:0;1264:177:1;42402:1955:0;42485:4;42441:23;9013:18;;;;;;;;;;;42508:10;;;;;;;42504:185;;;42538:19;;42534:123;;42608:15;;42577:64;;42601:4;;-1:-1:-1;;;;;42608:15:0;42625;42577;:64::i;:::-;42671:7;42402:1955::o;42504:185::-;42701:25;42786:16;;42771:12;;42750:18;;42729;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;:73;;;;:::i;:::-;42701:101;-1:-1:-1;42813:12:0;42849:20;;;:46;;-1:-1:-1;42873:22:0;;42849:46;42846:60;;;42898:7;;;42402:1955::o;42846:60::-;42975:23;43060:1;43040:17;43019:18;;43001:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;42975:86;-1:-1:-1;43072:26:0;43101:36;:15;42975:86;43101:19;:36::i;:::-;43072:65;-1:-1:-1;43186:21:0;43220:36;43072:65;43220:16;:36::i;:::-;43278:18;43299:44;:21;43325:17;43299:25;:44::i;:::-;43278:65;;43364:23;43390:57;43429:17;43390:34;43405:18;;43390:10;:14;;:34;;;;:::i;:57::-;43364:83;;43458:17;43478:51;43511:17;43478:28;43493:12;;43478:10;:14;;:28;;;;:::i;:51::-;43458:71;;43540:21;43564:55;43601:17;43564:32;43579:16;;43564:10;:14;;:32;;;;:::i;:55::-;43540:79;-1:-1:-1;43640:23:0;43540:79;43697:9;43666:28;43679:15;43666:10;:28;:::i;:::-;:40;;;;:::i;:::-;:56;;;;:::i;:::-;43764:1;43743:18;:22;;;43776:18;:22;;;43809:12;:16;;;43836;:20;;;43898:9;;43890:45;;43640:82;;-1:-1:-1;;;;;;43898:9:0;;43921;;43890:45;43764:1;43890:45;43921:9;43898;43890:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;43967:13:0;;43959:53;;43877:58;;-1:-1:-1;;;;;;43967:13:0;;43994;;43959:53;;;;43994:13;43967;43959:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43946:66:0;;-1:-1:-1;;44036:19:0;;;;;:42;;;44077:1;44059:15;:19;44036:42;44033:210;;;44094:46;44107:15;44124;44094:12;:46::i;:::-;44212:18;;44160:71;;;12135:25:1;;;12191:2;12176:18;;12169:34;;;12219:18;;;12212:34;;;;44160:71:0;;;;;;12123:2:1;44160:71:0;;;44033:210;44284:15;;44276:63;;-1:-1:-1;;;;;44284:15:0;;;;44313:21;;44276:63;;;;44313:21;44284:15;44276:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;42402:1955:0:o;17842:471::-;17900:7;18145:6;18141:47;;-1:-1:-1;18175:1:0;18168:8;;18141:47;18200:9;18212:5;18216:1;18212;:5;:::i;:::-;18200:17;-1:-1:-1;18245:1:0;18236:5;18240:1;18200:17;18236:5;:::i;:::-;:10;18228:56;;;;-1:-1:-1;;;18228:56:0;;12459:2:1;18228:56:0;;;12441:21:1;12498:2;12478:18;;;12471:30;12537:34;12517:18;;;12510:62;-1:-1:-1;;;12588:18:1;;;12581:31;12629:19;;18228:56:0;12257:397:1;18789:132:0;18847:7;18874:39;18878:1;18881;18874:39;;;;;;;;;;;;;;;;;:3;:39::i;16952:136::-;17010:7;17037:43;17041:1;17044;17037:43;;;;;;;;;;;;;;;;;:3;:43::i;41232:616::-;41384:16;;;41398:1;41384:16;;;;;;;;41360:21;;41384:16;;;;;;;;;;-1:-1:-1;41384:16:0;41360:40;;41429:4;41411;41416:1;41411:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;41411:23:0;;;-1:-1:-1;;;;;41411:23:0;;;;;41455:15;-1:-1:-1;;;;;41455:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41445:4;41450:1;41445:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;41445:32:0;;;-1:-1:-1;;;;;41445:32:0;;;;;41490:62;41507:4;41522:15;41540:11;41490:8;:62::i;:::-;41595:224;;-1:-1:-1;;;41595:224:0;;-1:-1:-1;;;;;41595:15:0;:66;;;;:224;;41676:11;;41702:1;;41746:4;;41773;;41793:15;;41595:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41591:240;;36832:246;;:::o;41860:532::-;42008:62;42025:4;42040:15;42058:11;42008:8;:62::i;:::-;42117:256;;-1:-1:-1;;;42117:256:0;;42189:4;42117:256;;;14505:34:1;14555:18;;;14548:34;;;42235:1:0;14598:18:1;;;14591:34;;;14641:18;;;14634:34;29689:6:0;14684:19:1;;;14677:44;42347:15:0;14737:19:1;;;14730:35;42117:15:0;-1:-1:-1;;;;;42117:31:0;;;;42156:9;;14439:19:1;;42117:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42117:256:0;;;;;;;;-1:-1:-1;;42117:256:0;;;;;;;;;;;;:::i;:::-;;;42113:272;;36832:246;;:::o;42113:272::-;;;;41860:532;;:::o;19417:278::-;19503:7;19538:12;19531:5;19523:28;;;;-1:-1:-1;;;19523:28:0;;;;;;;;:::i;:::-;-1:-1:-1;19562:9:0;19574:5;19578:1;19574;:5;:::i;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:180::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;-1:-1:-1;1597:23:1;;1446:180;-1:-1:-1;1446:180:1:o;1631:247::-;1690:6;1743:2;1731:9;1722:7;1718:23;1714:32;1711:52;;;1759:1;1756;1749:12;1711:52;1798:9;1785:23;1817:31;1842:5;1817:31;:::i;2326:456::-;2403:6;2411;2419;2472:2;2460:9;2451:7;2447:23;2443:32;2440:52;;;2488:1;2485;2478:12;2440:52;2527:9;2514:23;2546:31;2571:5;2546:31;:::i;:::-;2596:5;-1:-1:-1;2653:2:1;2638:18;;2625:32;2666:33;2625:32;2666:33;:::i;:::-;2326:456;;2718:7;;-1:-1:-1;;;2772:2:1;2757:18;;;;2744:32;;2326:456::o;2976:160::-;3041:20;;3097:13;;3090:21;3080:32;;3070:60;;3126:1;3123;3116:12;3070:60;2976:160;;;:::o;3141:315::-;3206:6;3214;3267:2;3255:9;3246:7;3242:23;3238:32;3235:52;;;3283:1;3280;3273:12;3235:52;3322:9;3309:23;3341:31;3366:5;3341:31;:::i;:::-;3391:5;-1:-1:-1;3415:35:1;3446:2;3431:18;;3415:35;:::i;:::-;3405:45;;3141:315;;;;;:::o;3461:180::-;3517:6;3570:2;3558:9;3549:7;3545:23;3541:32;3538:52;;;3586:1;3583;3576:12;3538:52;3609:26;3625:9;3609:26;:::i;3646:388::-;3714:6;3722;3775:2;3763:9;3754:7;3750:23;3746:32;3743:52;;;3791:1;3788;3781:12;3743:52;3830:9;3817:23;3849:31;3874:5;3849:31;:::i;:::-;3899:5;-1:-1:-1;3956:2:1;3941:18;;3928:32;3969:33;3928:32;3969:33;:::i;:::-;4021:7;4011:17;;;3646:388;;;;;:::o;4039:380::-;4118:1;4114:12;;;;4161;;;4182:61;;4236:4;4228:6;4224:17;4214:27;;4182:61;4289:2;4281:6;4278:14;4258:18;4255:38;4252:161;;;4335:10;4330:3;4326:20;4323:1;4316:31;4370:4;4367:1;4360:15;4398:4;4395:1;4388:15;4252:161;;4039:380;;;:::o;4424:356::-;4626:2;4608:21;;;4645:18;;;4638:30;4704:34;4699:2;4684:18;;4677:62;4771:2;4756:18;;4424:356::o;4785:127::-;4846:10;4841:3;4837:20;4834:1;4827:31;4877:4;4874:1;4867:15;4901:4;4898:1;4891:15;4917:422;5006:1;5049:5;5006:1;5063:270;5084:7;5074:8;5071:21;5063:270;;;5143:4;5139:1;5135:6;5131:17;5125:4;5122:27;5119:53;;;5152:18;;:::i;:::-;5202:7;5192:8;5188:22;5185:55;;;5222:16;;;;5185:55;5301:22;;;;5261:15;;;;5063:270;;;5067:3;4917:422;;;;;:::o;5344:806::-;5393:5;5423:8;5413:80;;-1:-1:-1;5464:1:1;5478:5;;5413:80;5512:4;5502:76;;-1:-1:-1;5549:1:1;5563:5;;5502:76;5594:4;5612:1;5607:59;;;;5680:1;5675:130;;;;5587:218;;5607:59;5637:1;5628:10;;5651:5;;;5675:130;5712:3;5702:8;5699:17;5696:43;;;5719:18;;:::i;:::-;-1:-1:-1;;5775:1:1;5761:16;;5790:5;;5587:218;;5889:2;5879:8;5876:16;5870:3;5864:4;5861:13;5857:36;5851:2;5841:8;5838:16;5833:2;5827:4;5824:12;5820:35;5817:77;5814:159;;;-1:-1:-1;5926:19:1;;;5958:5;;5814:159;6005:34;6030:8;6024:4;6005:34;:::i;:::-;6075:6;6071:1;6067:6;6063:19;6054:7;6051:32;6048:58;;;6086:18;;:::i;:::-;6124:20;;5344:806;-1:-1:-1;;;5344:806:1:o;6155:140::-;6213:5;6242:47;6283:4;6273:8;6269:19;6263:4;6242:47;:::i;6300:168::-;6340:7;6406:1;6402;6398:6;6394:14;6391:1;6388:21;6383:1;6376:9;6369:17;6365:45;6362:71;;;6413:18;;:::i;:::-;-1:-1:-1;6453:9:1;;6300:168::o;6473:217::-;6513:1;6539;6529:132;;6583:10;6578:3;6574:20;6571:1;6564:31;6618:4;6615:1;6608:15;6646:4;6643:1;6636:15;6529:132;-1:-1:-1;6675:9:1;;6473:217::o;6695:409::-;6897:2;6879:21;;;6936:2;6916:18;;;6909:30;6975:34;6970:2;6955:18;;6948:62;-1:-1:-1;;;7041:2:1;7026:18;;7019:43;7094:3;7079:19;;6695:409::o;7942:128::-;7982:3;8013:1;8009:6;8006:1;8003:13;8000:39;;;8019:18;;:::i;:::-;-1:-1:-1;8055:9:1;;7942:128::o;9239:401::-;9441:2;9423:21;;;9480:2;9460:18;;;9453:30;9519:34;9514:2;9499:18;;9492:62;-1:-1:-1;;;9585:2:1;9570:18;;9563:35;9630:3;9615:19;;9239:401::o;9645:399::-;9847:2;9829:21;;;9886:2;9866:18;;;9859:30;9925:34;9920:2;9905:18;;9898:62;-1:-1:-1;;;9991:2:1;9976:18;;9969:33;10034:3;10019:19;;9645:399::o;11593:125::-;11633:4;11661:1;11658;11655:8;11652:34;;;11666:18;;:::i;:::-;-1:-1:-1;11703:9:1;;11593:125::o;12791:127::-;12852:10;12847:3;12843:20;12840:1;12833:31;12883:4;12880:1;12873:15;12907:4;12904:1;12897:15;12923:251;12993:6;13046:2;13034:9;13025:7;13021:23;13017:32;13014:52;;;13062:1;13059;13052:12;13014:52;13094:9;13088:16;13113:31;13138:5;13113:31;:::i;13179:980::-;13441:4;13489:3;13478:9;13474:19;13520:6;13509:9;13502:25;13546:2;13584:6;13579:2;13568:9;13564:18;13557:34;13627:3;13622:2;13611:9;13607:18;13600:31;13651:6;13686;13680:13;13717:6;13709;13702:22;13755:3;13744:9;13740:19;13733:26;;13794:2;13786:6;13782:15;13768:29;;13815:1;13825:195;13839:6;13836:1;13833:13;13825:195;;;13904:13;;-1:-1:-1;;;;;13900:39:1;13888:52;;13995:15;;;;13960:12;;;;13936:1;13854:9;13825:195;;;-1:-1:-1;;;;;;;14076:32:1;;;;14071:2;14056:18;;14049:60;-1:-1:-1;;;14140:3:1;14125:19;14118:35;14037:3;13179:980;-1:-1:-1;;;13179:980:1:o;14776:306::-;14864:6;14872;14880;14933:2;14921:9;14912:7;14908:23;14904:32;14901:52;;;14949:1;14946;14939:12;14901:52;14978:9;14972:16;14962:26;;15028:2;15017:9;15013:18;15007:25;14997:35;;15072:2;15061:9;15057:18;15051:25;15041:35;;14776:306;;;;;:::o
Swarm Source
ipfs://64f75655538de3e3f2b43c13d45186302d92ce1b3e88b48c530cbe960ab1b275
Loading...
Loading
Loading...
Loading
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.