More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 114 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 15538001 | 724 days ago | IN | 0 ETH | 0.00083524 | ||||
Approve | 15533991 | 724 days ago | IN | 0 ETH | 0.00094579 | ||||
Approve | 15533477 | 724 days ago | IN | 0 ETH | 0.00044935 | ||||
Approve | 15533466 | 724 days ago | IN | 0 ETH | 0.00091461 | ||||
Approve | 15533466 | 724 days ago | IN | 0 ETH | 0.00091461 | ||||
Set Swap Tokens ... | 15533343 | 724 days ago | IN | 0 ETH | 0.00036381 | ||||
Approve | 15533332 | 724 days ago | IN | 0 ETH | 0.00075559 | ||||
Approve | 15533330 | 724 days ago | IN | 0 ETH | 0.00084204 | ||||
Approve | 15533329 | 724 days ago | IN | 0 ETH | 0.00082337 | ||||
Approve | 15533329 | 724 days ago | IN | 0 ETH | 0.00082337 | ||||
Approve | 15533328 | 724 days ago | IN | 0 ETH | 0.0008577 | ||||
Approve | 15533292 | 724 days ago | IN | 0 ETH | 0.0011874 | ||||
Set Swap Tokens ... | 15533275 | 724 days ago | IN | 0 ETH | 0.00085054 | ||||
Approve | 15533270 | 724 days ago | IN | 0 ETH | 0.00146595 | ||||
Approve | 15533264 | 724 days ago | IN | 0 ETH | 0.00165015 | ||||
Set Swap Tokens ... | 15533250 | 724 days ago | IN | 0 ETH | 0.00077853 | ||||
Approve | 15533249 | 724 days ago | IN | 0 ETH | 0.00125532 | ||||
Approve | 15533244 | 724 days ago | IN | 0 ETH | 0.00101362 | ||||
Set Swap Tokens ... | 15533202 | 724 days ago | IN | 0 ETH | 0.00048357 | ||||
Approve | 15533180 | 724 days ago | IN | 0 ETH | 0.00081267 | ||||
Approve | 15533149 | 724 days ago | IN | 0 ETH | 0.0012583 | ||||
Approve | 15533148 | 724 days ago | IN | 0 ETH | 0.00094501 | ||||
Approve | 15533131 | 724 days ago | IN | 0 ETH | 0.00091599 | ||||
Approve | 15533111 | 724 days ago | IN | 0 ETH | 0.00072347 | ||||
Approve | 15533105 | 724 days ago | IN | 0 ETH | 0.00083887 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15538020 | 724 days ago | 0.00691401 ETH | ||||
15538020 | 724 days ago | 0.00691401 ETH | ||||
15538020 | 724 days ago | 0.00115842 ETH | ||||
15538020 | 724 days ago | 0.00115842 ETH | ||||
15533500 | 724 days ago | 0.00722286 ETH | ||||
15533500 | 724 days ago | 0.00722286 ETH | ||||
15533500 | 724 days ago | 0.00121032 ETH | ||||
15533500 | 724 days ago | 0.00121032 ETH | ||||
15533289 | 724 days ago | 0.02242351 ETH | ||||
15533289 | 724 days ago | 0.02242351 ETH | ||||
15533289 | 724 days ago | 0.0037879 ETH | ||||
15533289 | 724 days ago | 0.0037879 ETH | ||||
15533288 | 724 days ago | 0.0241316 ETH | ||||
15533288 | 724 days ago | 0.0241316 ETH | ||||
15533288 | 724 days ago | 0.00407861 ETH | ||||
15533288 | 724 days ago | 0.00407861 ETH | ||||
15533275 | 724 days ago | 0.01294853 ETH | ||||
15533275 | 724 days ago | 0.01294853 ETH | ||||
15533275 | 724 days ago | 0.00217381 ETH | ||||
15533275 | 724 days ago | 0.00217381 ETH | ||||
15533264 | 724 days ago | 0.01374157 ETH | ||||
15533264 | 724 days ago | 0.01374157 ETH | ||||
15533264 | 724 days ago | 0.00230747 ETH | ||||
15533264 | 724 days ago | 0.00230747 ETH | ||||
15533261 | 724 days ago | 0.01374157 ETH |
Loading...
Loading
Contract Name:
NIO
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-14 */ // SPDX-License-Identifier: Unlicensed /** $NIO | Teh Nio Guardian Nio is a muscular guardian of the Buddha standing. Nio protects us from jeets that does not respect the green walls. Buy Tax: 5% (1% Auto Burn, 1% Auto LP, 3% Marketing) Sell Tax: 5% (1% Auto Burn, 1% Auto LP, 3% Marketing) Extra Sell Tax applies if you sell after a BuyWall: 20% (15% Automated Burn, 5% Marketing) BuyWall: Minimum 5 buys in a row Medium: https://medium.com/@TehNioGuardian/how-can-teh-nio-guardian-protect-us-all-7a3ea1c640f5 */ pragma solidity 0.8.16; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ 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); } /** * @dev Implementation of the {IERC20} interface. */ contract ERC20 is Context, IERC20, IERC20Metadata { 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); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {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) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `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); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(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 _createTotalSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual 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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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; } 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; } /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SignedSafeMath { /** * @dev Returns the multiplication of two signed integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { return a * b; } /** * @dev Returns the integer division of two signed integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(int256 a, int256 b) internal pure returns (int256) { return a / b; } /** * @dev Returns the subtraction of two signed integers, reverting on * overflow. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { return a - b; } /** * @dev Returns the addition of two signed integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { return a + b; } } // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } /** * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow * checks. * * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can * easily result in undesired exploitation or bugs, since developers usually * assume that overflows raise errors. `SafeCast` restores this intuition by * reverting the transaction when such an operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. * * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing * all math on `uint256` and `int256` and then downcasting. */ library SafeCast { /** * @dev Returns the downcasted uint224 from uint256, reverting on * overflow (when the input is greater than largest uint224). * * Counterpart to Solidity's `uint224` operator. * * Requirements: * * - input must fit into 224 bits */ function toUint224(uint256 value) internal pure returns (uint224) { require(value <= type(uint224).max, "SafeCast: value doesn't fit in 224 bits"); return uint224(value); } /** * @dev Returns the downcasted uint128 from uint256, reverting on * overflow (when the input is greater than largest uint128). * * Counterpart to Solidity's `uint128` operator. * * Requirements: * * - input must fit into 128 bits */ function toUint128(uint256 value) internal pure returns (uint128) { require(value <= type(uint128).max, "SafeCast: value doesn't fit in 128 bits"); return uint128(value); } /** * @dev Returns the downcasted uint96 from uint256, reverting on * overflow (when the input is greater than largest uint96). * * Counterpart to Solidity's `uint96` operator. * * Requirements: * * - input must fit into 96 bits */ function toUint96(uint256 value) internal pure returns (uint96) { require(value <= type(uint96).max, "SafeCast: value doesn't fit in 96 bits"); return uint96(value); } /** * @dev Returns the downcasted uint64 from uint256, reverting on * overflow (when the input is greater than largest uint64). * * Counterpart to Solidity's `uint64` operator. * * Requirements: * * - input must fit into 64 bits */ function toUint64(uint256 value) internal pure returns (uint64) { require(value <= type(uint64).max, "SafeCast: value doesn't fit in 64 bits"); return uint64(value); } /** * @dev Returns the downcasted uint32 from uint256, reverting on * overflow (when the input is greater than largest uint32). * * Counterpart to Solidity's `uint32` operator. * * Requirements: * * - input must fit into 32 bits */ function toUint32(uint256 value) internal pure returns (uint32) { require(value <= type(uint32).max, "SafeCast: value doesn't fit in 32 bits"); return uint32(value); } /** * @dev Returns the downcasted uint16 from uint256, reverting on * overflow (when the input is greater than largest uint16). * * Counterpart to Solidity's `uint16` operator. * * Requirements: * * - input must fit into 16 bits */ function toUint16(uint256 value) internal pure returns (uint16) { require(value <= type(uint16).max, "SafeCast: value doesn't fit in 16 bits"); return uint16(value); } /** * @dev Returns the downcasted uint8 from uint256, reverting on * overflow (when the input is greater than largest uint8). * * Counterpart to Solidity's `uint8` operator. * * Requirements: * * - input must fit into 8 bits. */ function toUint8(uint256 value) internal pure returns (uint8) { require(value <= type(uint8).max, "SafeCast: value doesn't fit in 8 bits"); return uint8(value); } /** * @dev Converts a signed int256 into an unsigned uint256. * * Requirements: * * - input must be greater than or equal to 0. */ function toUint256(int256 value) internal pure returns (uint256) { require(value >= 0, "SafeCast: value must be positive"); return uint256(value); } /** * @dev Returns the downcasted int128 from int256, reverting on * overflow (when the input is less than smallest int128 or * greater than largest int128). * * Counterpart to Solidity's `int128` operator. * * Requirements: * * - input must fit into 128 bits * * _Available since v3.1._ */ function toInt128(int256 value) internal pure returns (int128) { require(value >= type(int128).min && value <= type(int128).max, "SafeCast: value doesn't fit in 128 bits"); return int128(value); } /** * @dev Returns the downcasted int64 from int256, reverting on * overflow (when the input is less than smallest int64 or * greater than largest int64). * * Counterpart to Solidity's `int64` operator. * * Requirements: * * - input must fit into 64 bits * * _Available since v3.1._ */ function toInt64(int256 value) internal pure returns (int64) { require(value >= type(int64).min && value <= type(int64).max, "SafeCast: value doesn't fit in 64 bits"); return int64(value); } /** * @dev Returns the downcasted int32 from int256, reverting on * overflow (when the input is less than smallest int32 or * greater than largest int32). * * Counterpart to Solidity's `int32` operator. * * Requirements: * * - input must fit into 32 bits * * _Available since v3.1._ */ function toInt32(int256 value) internal pure returns (int32) { require(value >= type(int32).min && value <= type(int32).max, "SafeCast: value doesn't fit in 32 bits"); return int32(value); } /** * @dev Returns the downcasted int16 from int256, reverting on * overflow (when the input is less than smallest int16 or * greater than largest int16). * * Counterpart to Solidity's `int16` operator. * * Requirements: * * - input must fit into 16 bits * * _Available since v3.1._ */ function toInt16(int256 value) internal pure returns (int16) { require(value >= type(int16).min && value <= type(int16).max, "SafeCast: value doesn't fit in 16 bits"); return int16(value); } /** * @dev Returns the downcasted int8 from int256, reverting on * overflow (when the input is less than smallest int8 or * greater than largest int8). * * Counterpart to Solidity's `int8` operator. * * Requirements: * * - input must fit into 8 bits. * * _Available since v3.1._ */ function toInt8(int256 value) internal pure returns (int8) { require(value >= type(int8).min && value <= type(int8).max, "SafeCast: value doesn't fit in 8 bits"); return int8(value); } /** * @dev Converts an unsigned uint256 into a signed int256. * * Requirements: * * - input must be less than or equal to maxInt256. */ function toInt256(uint256 value) internal pure returns (int256) { // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive require(value <= uint256(type(int256).max), "SafeCast: value doesn't fit in an int256"); return int256(value); } } contract LockToken is Ownable { bool public isOpen = false; mapping(address => bool) private _whiteList; modifier open(address from, address to) { require(isOpen || _whiteList[from] || _whiteList[to], "Not Open"); _; } constructor() { _whiteList[msg.sender] = true; _whiteList[address(this)] = true; } function openTrade() external onlyOwner { isOpen = true; } function includeToWhiteList(address[] memory _users) external onlyOwner { for(uint8 i = 0; i < _users.length; i++) { _whiteList[_users[i]] = true; } } } contract NIO is ERC20, Ownable, LockToken { using SafeMath for uint256; bool public swapAndLiquifyEnabled = true; bool private inSwapAndLiquify; uint256 public maxTransactionAmount = 20000000 * (10**18); uint256 public swapTokensAtAmount = 500000 * (10**18); uint256 public maxWalletToken = 20000000 * (10**18); uint256 public liquidityBuyFee = 1; uint256 public marketingBuyFee = 3; uint256 public burnBuyFee = 1; uint256 public totalBuyFee = liquidityBuyFee.add(marketingBuyFee).add(burnBuyFee); uint256 public liquiditySellFee = 1; uint256 public marketingSellFee = 3; uint256 public burnSellFee = 1; uint256 public totalSellFee = liquiditySellFee.add(marketingSellFee).add(burnSellFee); uint256 public liquidityExtraSellFee = 0; uint256 public marketingExtraSellFee = 5; uint256 public burnExtraSellFee = 15; uint256 public totalExtraSellFee = liquidityExtraSellFee.add(marketingExtraSellFee).add(burnExtraSellFee); uint256 public buyerList = 0; uint256 public buyWall = 5; IUniswapV2Router02 public uniswapV2Router; address public immutable uniswapV2Pair; address public deadWallet = payable(0x000000000000000000000000000000000000dEaD); address payable public marketingWallet = payable(0x8fe6C79DaC072dAF8A44d181a1741F36CE664D8d); // 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; // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; event SwapAndLiquify(uint256 tokensIntoLiqudity, uint256 ethReceived); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapETHForTokens(uint256 amountIn, address[] path); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event GasForProcessingUpdated(uint256 indexed newValue, uint256 indexed oldValue); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() ERC20("Teh Nio Guardian", "NIO") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // uniswap v2 router address // Create a uniswap pair for this new token address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _setAutomatedMarketMakerPair(_uniswapV2Pair, true); // exclude from paying fees and max transaction amount excludeFromFees(owner(), true); excludeFromFees(marketingWallet, true); excludeFromFees(deadWallet, true); excludeFromFees(address(this), true); /* an internal function that is only called here, and CANNOT be called ever again */ _createTotalSupply(owner(), 1000000000 * (10**18)); } receive() external payable { } function excludeFromFees(address account, bool excluded) public onlyOwner { require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function updateUniswapV2Router(address newAddress) public onlyOwner { require(newAddress != address(uniswapV2Router), "The router already has that address"); emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router)); uniswapV2Router = IUniswapV2Router02(newAddress); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value"); automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) open(from, to) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } bool excludedAccount = _isExcludedFromFees[from] || _isExcludedFromFees[to]; if(!excludedAccount){ require(amount <= maxTransactionAmount, "amount exceeds the maxTransactionAmount."); } if(!excludedAccount && automatedMarketMakerPairs[from]){ uint256 contractBalanceRecepient = balanceOf(to); require(contractBalanceRecepient + amount <= maxWalletToken, "Exceeds maximum wallet token amount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= swapTokensAtAmount; if(overMinTokenBalance && !inSwapAndLiquify && automatedMarketMakerPairs[to] && swapAndLiquifyEnabled) { contractTokenBalance = swapTokensAtAmount; swapAndLiquify(contractTokenBalance); } // if any account belongs to _isExcludedFromFee account then remove the fee if(!excludedAccount) { uint256 swapFee; uint256 burnFee; if(automatedMarketMakerPairs[from]) { swapFee = amount.mul(totalBuyFee.sub(burnBuyFee)).div(100); burnFee = amount.mul(burnBuyFee).div(100); } if(automatedMarketMakerPairs[to] && buyerList <= buyWall.sub(1)) { swapFee = amount.mul(totalSellFee.sub(burnSellFee)).div(100); burnFee = amount.mul(burnSellFee).div(100); } if(automatedMarketMakerPairs[to] && buyerList == buyWall) { swapFee = amount.mul(totalExtraSellFee.sub(burnExtraSellFee)).div(100); burnFee = amount.mul(burnExtraSellFee).div(100); delete buyerList; } amount = amount.sub(swapFee.add(burnFee)); if(swapFee > 0) { super._transfer(from, address(this), swapFee); } if(burnFee > 0) { super._transfer(from, deadWallet, burnFee); } } if(automatedMarketMakerPairs[from] && buyerList <= buyWall.sub(1)) { buyerList++; } if(automatedMarketMakerPairs[to] && buyerList < buyWall) { delete buyerList; } super._transfer(from, to, amount); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 tokensForLiquidity = contractTokenBalance.mul(liquiditySellFee).div(totalSellFee.sub(burnSellFee)); // split the Liquidity token balance into halves uint256 half = tokensForLiquidity.div(2); uint256 otherHalf = tokensForLiquidity.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); // swap and Send eth to team wallet swapTokensForEth(contractTokenBalance.sub(tokensForLiquidity)); marketingWallet.transfer(address(this).balance); emit SwapAndLiquify(half, newBalance); } 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(); if(allowance(address(this), address(uniswapV2Router)) < tokenAmount) { _approve(address(this), address(uniswapV2Router), ~uint256(0)); } // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function setMarketingWallet(address payable _wallet) external onlyOwner { marketingWallet = _wallet; } function updateBuyWall(uint256 _buyWall) external onlyOwner { buyWall = _buyWall; } function setMaxTxAmount(uint256 _maxTx) public onlyOwner { maxTransactionAmount = _maxTx; require(maxTransactionAmount >= totalSupply().div(400), "value is too low"); } function setSwapTokensAtAmouunt(uint256 _newAmount) public onlyOwner { swapTokensAtAmount = _newAmount; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setMaxWalletToken(uint256 _maxToken) external onlyOwner { maxWalletToken = _maxToken; require(maxWalletToken >= totalSupply().div(400), "value too low"); } function updateFee( uint256 _liqBuy, uint256 _markBuy, uint256 _burnBuy, uint256 _liqSell, uint256 _markSell, uint256 _burnSell, uint256 _liqExtraSell, uint256 _markExtraSell, uint256 _burnExtraSell ) external onlyOwner { liquidityBuyFee = _liqBuy; marketingBuyFee = _markBuy; burnBuyFee = _burnBuy; liquiditySellFee = _liqSell; marketingSellFee = _markSell; burnSellFee = _burnSell; liquidityExtraSellFee = _liqExtraSell; marketingExtraSellFee = _markExtraSell; burnExtraSellFee = _burnExtraSell; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"GasForProcessingUpdated","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":"tokensIntoLiqudity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","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"},{"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":"burnBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnExtraSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyWall","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyerList","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"includeToWhiteList","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":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityExtraSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquiditySellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingExtraSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletToken","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":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTx","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxToken","type":"uint256"}],"name":"setMaxWalletToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"setSwapTokensAtAmouunt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalExtraSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"_buyWall","type":"uint256"}],"name":"updateBuyWall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liqBuy","type":"uint256"},{"internalType":"uint256","name":"_markBuy","type":"uint256"},{"internalType":"uint256","name":"_burnBuy","type":"uint256"},{"internalType":"uint256","name":"_liqSell","type":"uint256"},{"internalType":"uint256","name":"_markSell","type":"uint256"},{"internalType":"uint256","name":"_burnSell","type":"uint256"},{"internalType":"uint256","name":"_liqExtraSell","type":"uint256"},{"internalType":"uint256","name":"_markExtraSell","type":"uint256"},{"internalType":"uint256","name":"_burnExtraSell","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526005805460ff60a01b191690556007805460ff191660019081179091556a108b2a2c2802909400000060088190556969e10de76676d0800000600955600a55600b8190556003600c819055600d8290556200008791906200007390829062000419602090811b6200127517901c565b6200041960201b620012751790919060201c565b600e556001600f5560036010556001601155620000be60115462000073601054600f546200041960201b620012751790919060201c565b60125560006013556005601455600f601555620000f5601554620000736014546013546200041960201b620012751790919060201c565b60165560006017556005601855601a80546001600160a01b031990811661dead17909155601b8054909116738fe6c79dac072daf8a44d181a1741f36ce664d8d1790553480156200014557600080fd5b506040518060400160405280601081526020016f2a32b4102734b79023bab0b93234b0b760811b815250604051806040016040528060038152602001624e494f60e81b81525081600390816200019c919062000844565b506004620001ab828262000844565b505050620001c8620001c26200043060201b60201c565b62000434565b3360009081526006602090815260408083208054600160ff19918216811790925530855282852080549091169091179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa15801562000247573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026d919062000910565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e1919062000910565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000910565b601980546001600160a01b0319166001600160a01b0385811691909117909155811660805290506200038981600162000486565b620003a8620003a06005546001600160a01b031690565b600162000576565b601b54620003c1906001600160a01b0316600162000576565b601a54620003da906001600160a01b0316600162000576565b620003e730600162000576565b62000411620003fe6005546001600160a01b031690565b6b033b2e3c9fd0803ce8000000620006b6565b505062000964565b600062000427828462000942565b90505b92915050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152601c602052604090205481151560ff909116151503620005225760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c7565000000000000000060648201526084015b60405180910390fd5b6001600160a01b0382166000818152601c6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000519565b6001600160a01b0382166000908152601d602052604090205481151560ff909116151503620006575760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b606482015260840162000519565b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200070e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000519565b806002600082825462000722919062000942565b90915550506001600160a01b038216600090815260208190526040812080548392906200075190849062000942565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007cb57607f821691505b602082108103620007ec57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200079b57600081815260208120601f850160051c810160208610156200081b5750805b601f850160051c820191505b818110156200083c5782815560010162000827565b505050505050565b81516001600160401b03811115620008605762000860620007a0565b6200087881620008718454620007b6565b84620007f2565b602080601f831160018114620008b05760008415620008975750858301515b600019600386901b1c1916600185901b1785556200083c565b600085815260208120601f198616915b82811015620008e157888601518255948401946001909101908401620008c0565b5085821015620009005787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200092357600080fd5b81516001600160a01b03811681146200093b57600080fd5b9392505050565b808201808211156200042a57634e487b7160e01b600052601160045260246000fd5b60805161244562000987600039600081816104710152610e1b01526124456000f3fe6080604052600436106102e85760003560e01c806375f0a87411610190578063c0246668116100dc578063e6c75f7111610095578063ee54a3441161006f578063ee54a344146108c4578063f1717e00146108da578063f2fde38b146108fa578063fb201b1d1461091a57600080fd5b8063e6c75f7114610878578063e7f444b31461088e578063ec28438a146108a457600080fd5b8063c0246668146107b0578063c49b9a80146107d0578063c8c8ebe4146107f0578063ccb6135814610806578063dd62ed3e1461081c578063e2f456051461086257600080fd5b806391d55f41116101495780639d9241ec116101235780639d9241ec1461072a578063a457c2d714610740578063a9059cbb14610760578063b62496f51461078057600080fd5b806391d55f41146106d557806395d89b41146106f55780639a7a23d61461070a57600080fd5b806375f0a8741461062b5780637908b1cf1461064b5780637ae3ff471461066b5780637e7613771461068157806385141a77146106975780638da5cb5b146106b757600080fd5b80634a8e62951161024f57806365b8dbc01161020857806370a08231116101e257806370a08231146105aa578063715018a6146105e057806374fc6d81146105f5578063750c11b61461060b57600080fd5b806365b8dbc01461055e578063680789521461057e5780637088f0c11461059457600080fd5b80634a8e6295146104ad5780634fbee193146104c357806350688168146104fc578063516d7d1e1461051257806359b107b9146105285780635d098b381461053e57600080fd5b806323b872dd116102a157806323b872dd146103e2578063313ce56714610402578063395093511461041e57806347535d7b1461043e57806349bd5a5e1461045f5780634a74bb021461049357600080fd5b806306fdde03146102f4578063095ea7b31461031f578063099d0d301461034f5780630b6bb6f5146103735780631694505e1461039557806318160ddd146103cd57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030961092f565b6040516103169190611ea8565b60405180910390f35b34801561032b57600080fd5b5061033f61033a366004611f1b565b6109c1565b6040519015158152602001610316565b34801561035b57600080fd5b50610365600f5481565b604051908152602001610316565b34801561037f57600080fd5b5061039361038e366004611f5d565b6109d8565b005b3480156103a157600080fd5b506019546103b5906001600160a01b031681565b6040516001600160a01b039091168152602001610316565b3480156103d957600080fd5b50600254610365565b3480156103ee57600080fd5b5061033f6103fd366004612022565b610a7d565b34801561040e57600080fd5b5060405160128152602001610316565b34801561042a57600080fd5b5061033f610439366004611f1b565b610b27565b34801561044a57600080fd5b5060055461033f90600160a01b900460ff1681565b34801561046b57600080fd5b506103b57f000000000000000000000000000000000000000000000000000000000000000081565b34801561049f57600080fd5b5060075461033f9060ff1681565b3480156104b957600080fd5b5061036560135481565b3480156104cf57600080fd5b5061033f6104de366004612063565b6001600160a01b03166000908152601d602052604090205460ff1690565b34801561050857600080fd5b5061036560165481565b34801561051e57600080fd5b5061036560185481565b34801561053457600080fd5b50610365600e5481565b34801561054a57600080fd5b50610393610559366004612063565b610b63565b34801561056a57600080fd5b50610393610579366004612063565b610baf565b34801561058a57600080fd5b50610365600c5481565b3480156105a057600080fd5b5061036560175481565b3480156105b657600080fd5b506103656105c5366004612063565b6001600160a01b031660009081526020819052604090205490565b3480156105ec57600080fd5b50610393610ca0565b34801561060157600080fd5b5061036560155481565b34801561061757600080fd5b50610393610626366004612080565b610cd6565b34801561063757600080fd5b50601b546103b5906001600160a01b031681565b34801561065757600080fd5b50610393610666366004612099565b610d05565b34801561067757600080fd5b50610365600d5481565b34801561068d57600080fd5b5061036560115481565b3480156106a357600080fd5b50601a546103b5906001600160a01b031681565b3480156106c357600080fd5b506005546001600160a01b03166103b5565b3480156106e157600080fd5b506103936106f0366004612080565b610d58565b34801561070157600080fd5b50610309610de0565b34801561071657600080fd5b50610393610725366004612108565b610def565b34801561073657600080fd5b5061036560125481565b34801561074c57600080fd5b5061033f61075b366004611f1b565b610eca565b34801561076c57600080fd5b5061033f61077b366004611f1b565b610f63565b34801561078c57600080fd5b5061033f61079b366004612063565b601c6020526000908152604090205460ff1681565b3480156107bc57600080fd5b506103936107cb366004612108565b610f70565b3480156107dc57600080fd5b506103936107eb36600461213d565b61107c565b3480156107fc57600080fd5b5061036560085481565b34801561081257600080fd5b50610365600b5481565b34801561082857600080fd5b50610365610837366004612158565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561086e57600080fd5b5061036560095481565b34801561088457600080fd5b50610365600a5481565b34801561089a57600080fd5b5061036560105481565b3480156108b057600080fd5b506103936108bf366004612080565b6110ed565b3480156108d057600080fd5b5061036560145481565b3480156108e657600080fd5b506103936108f5366004612080565b61116f565b34801561090657600080fd5b50610393610915366004612063565b61119e565b34801561092657600080fd5b50610393611236565b60606003805461093e90612191565b80601f016020809104026020016040519081016040528092919081815260200182805461096a90612191565b80156109b75780601f1061098c576101008083540402835291602001916109b7565b820191906000526020600020905b81548152906001019060200180831161099a57829003601f168201915b5050505050905090565b60006109ce338484611288565b5060015b92915050565b6005546001600160a01b03163314610a0b5760405162461bcd60e51b8152600401610a02906121cb565b60405180910390fd5b60005b81518160ff161015610a7957600160066000848460ff1681518110610a3557610a35612200565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a718161222c565b915050610a0e565b5050565b6000610a8a8484846113ac565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b0f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a02565b610b1c8533858403611288565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109ce918590610b5e90869061224b565b611288565b6005546001600160a01b03163314610b8d5760405162461bcd60e51b8152600401610a02906121cb565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610bd95760405162461bcd60e51b8152600401610a02906121cb565b6019546001600160a01b0390811690821603610c435760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610a02565b6019546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3601980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610cca5760405162461bcd60e51b8152600401610a02906121cb565b610cd460006118a6565b565b6005546001600160a01b03163314610d005760405162461bcd60e51b8152600401610a02906121cb565b600955565b6005546001600160a01b03163314610d2f5760405162461bcd60e51b8152600401610a02906121cb565b600b98909855600c96909655600d94909455600f92909255601055601155601355601455601555565b6005546001600160a01b03163314610d825760405162461bcd60e51b8152600401610a02906121cb565b600a819055610d9c610190610d9660025490565b906118f8565b600a541015610ddd5760405162461bcd60e51b815260206004820152600d60248201526c76616c756520746f6f206c6f7760981b6044820152606401610a02565b50565b60606004805461093e90612191565b6005546001600160a01b03163314610e195760405162461bcd60e51b8152600401610a02906121cb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610ec05760405162461bcd60e51b815260206004820152603a60248201527f5468652020706169722063616e6e6f742062652072656d6f7665642066726f6d60448201527f206175746f6d617465644d61726b65744d616b657250616972730000000000006064820152608401610a02565b610a798282611904565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f4c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a02565b610f593385858403611288565b5060019392505050565b60006109ce3384846113ac565b6005546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610a02906121cb565b6001600160a01b0382166000908152601d602052604090205481151560ff90911615150361101d5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610a02565b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146110a65760405162461bcd60e51b8152600401610a02906121cb565b6007805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6005546001600160a01b031633146111175760405162461bcd60e51b8152600401610a02906121cb565b600881905561112b610190610d9660025490565b6008541015610ddd5760405162461bcd60e51b815260206004820152601060248201526f76616c756520697320746f6f206c6f7760801b6044820152606401610a02565b6005546001600160a01b031633146111995760405162461bcd60e51b8152600401610a02906121cb565b601855565b6005546001600160a01b031633146111c85760405162461bcd60e51b8152600401610a02906121cb565b6001600160a01b03811661122d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a02565b610ddd816118a6565b6005546001600160a01b031633146112605760405162461bcd60e51b8152600401610a02906121cb565b6005805460ff60a01b1916600160a01b179055565b6000611281828461224b565b9392505050565b6001600160a01b0383166112ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a02565b6001600160a01b03821661134b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a02565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60055483908390600160a01b900460ff16806113e057506001600160a01b03821660009081526006602052604090205460ff165b8061140357506001600160a01b03811660009081526006602052604090205460ff165b61143a5760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b6044820152606401610a02565b6001600160a01b0385166114605760405162461bcd60e51b8152600401610a029061225e565b6001600160a01b0384166114865760405162461bcd60e51b8152600401610a02906122a3565b8260000361149f5761149a858560006119ee565b61189f565b6001600160a01b0385166000908152601d602052604081205460ff16806114de57506001600160a01b0385166000908152601d602052604090205460ff165b905080611548576008548411156115485760405162461bcd60e51b815260206004820152602860248201527f616d6f756e74206578636565647320746865206d61785472616e73616374696f6044820152673720b6b7bab73a1760c11b6064820152608401610a02565b8015801561156e57506001600160a01b0386166000908152601c602052604090205460ff165b156115f5576001600160a01b038516600090815260208190526040902054600a54611599868361224b565b11156115f35760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610a02565b505b30600090815260208190526040902054600954811080159081906116215750600754610100900460ff16155b801561164557506001600160a01b0387166000908152601c602052604090205460ff165b8015611653575060075460ff165b1561166657600954915061166682611b43565b82611808576001600160a01b0388166000908152601c6020526040812054819060ff16156116d3576116b46064610d966116ad600d54600e54611c4f90919063ffffffff16565b8b90611c5b565b91506116d06064610d96600d548b611c5b90919063ffffffff16565b90505b6001600160a01b0389166000908152601c602052604090205460ff16801561170a5750601854611704906001611c4f565b60175411155b1561174d5761172e6064610d966116ad601154601254611c4f90919063ffffffff16565b915061174a6064610d966011548b611c5b90919063ffffffff16565b90505b6001600160a01b0389166000908152601c602052604090205460ff1680156117785750601854601754145b156117c05761179c6064610d966116ad601554601654611c4f90919063ffffffff16565b91506117b86064610d966015548b611c5b90919063ffffffff16565b600060175590505b6117d46117cd8383611275565b8990611c4f565b975081156117e7576117e78a30846119ee565b801561180557601a54611805908b906001600160a01b0316836119ee565b50505b6001600160a01b0388166000908152601c602052604090205460ff16801561183f5750601854611839906001611c4f565b60175411155b1561185a5760178054906000611854836122e6565b91905055505b6001600160a01b0387166000908152601c602052604090205460ff1680156118855750601854601754105b156118905760006017555b61189b8888886119ee565b5050505b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061128182846122ff565b6001600160a01b0382166000908152601c602052604090205481151560ff90911615150361199a5760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610a02565b6001600160a01b0382166000818152601c6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611a145760405162461bcd60e51b8152600401610a029061225e565b6001600160a01b038216611a3a5760405162461bcd60e51b8152600401610a02906122a3565b6001600160a01b03831660009081526020819052604090205481811015611ab25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a02565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611ae990849061224b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b3591815260200190565b60405180910390a350505050565b6007805461ff001916610100179055601154601254600091611b7691611b6891611c4f565b600f54610d96908590611c5b565b90506000611b858260026118f8565b90506000611b938383611c4f565b905047611b9f83611c67565b6000611bab4783611c4f565b9050611bb78382611df2565b611bc9611bc48787611c4f565b611c67565b601b546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611c02573d6000803e3d6000fd5b5060408051858152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150506007805461ff001916905550505050565b60006112818284612321565b60006112818284612334565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c9c57611c9c612200565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611cf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d199190612353565b81600181518110611d2c57611d2c612200565b6001600160a01b0392831660209182029290920181019190915260195430600090815260018352604080822092909416815291522054821115611d8357601954611d839030906001600160a01b0316600019611288565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790611dbc908590600090869030904290600401612370565b600060405180830381600087803b158015611dd657600080fd5b505af1158015611dea573d6000803e3d6000fd5b505050505050565b6019546001600160a01b031663f305d719823085600080611e1b6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611e83573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061189f91906123e1565b600060208083528351808285015260005b81811015611ed557858101830151858201604001528201611eb9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ddd57600080fd5b8035611f1681611ef6565b919050565b60008060408385031215611f2e57600080fd5b8235611f3981611ef6565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611f7057600080fd5b823567ffffffffffffffff80821115611f8857600080fd5b818501915085601f830112611f9c57600080fd5b813581811115611fae57611fae611f47565b8060051b604051601f19603f83011681018181108582111715611fd357611fd3611f47565b604052918252848201925083810185019188831115611ff157600080fd5b938501935b828510156120165761200785611f0b565b84529385019392850192611ff6565b98975050505050505050565b60008060006060848603121561203757600080fd5b833561204281611ef6565b9250602084013561205281611ef6565b929592945050506040919091013590565b60006020828403121561207557600080fd5b813561128181611ef6565b60006020828403121561209257600080fd5b5035919050565b60008060008060008060008060006101208a8c0312156120b857600080fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b80358015158114611f1657600080fd5b6000806040838503121561211b57600080fd5b823561212681611ef6565b9150612134602084016120f8565b90509250929050565b60006020828403121561214f57600080fd5b611281826120f8565b6000806040838503121561216b57600080fd5b823561217681611ef6565b9150602083013561218681611ef6565b809150509250929050565b600181811c908216806121a557607f821691505b6020821081036121c557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff810361224257612242612216565b60010192915050565b808201808211156109d2576109d2612216565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000600182016122f8576122f8612216565b5060010190565b60008261231c57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109d2576109d2612216565b600081600019048311821515161561234e5761234e612216565b500290565b60006020828403121561236557600080fd5b815161128181611ef6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123c05784516001600160a01b03168352938301939183019160010161239b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156123f657600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122055e8dd438a99feb5662c6f78c492295cff5d6ca582ac46f53c95f0a1fabaae7664736f6c63430008100033
Deployed Bytecode
0x6080604052600436106102e85760003560e01c806375f0a87411610190578063c0246668116100dc578063e6c75f7111610095578063ee54a3441161006f578063ee54a344146108c4578063f1717e00146108da578063f2fde38b146108fa578063fb201b1d1461091a57600080fd5b8063e6c75f7114610878578063e7f444b31461088e578063ec28438a146108a457600080fd5b8063c0246668146107b0578063c49b9a80146107d0578063c8c8ebe4146107f0578063ccb6135814610806578063dd62ed3e1461081c578063e2f456051461086257600080fd5b806391d55f41116101495780639d9241ec116101235780639d9241ec1461072a578063a457c2d714610740578063a9059cbb14610760578063b62496f51461078057600080fd5b806391d55f41146106d557806395d89b41146106f55780639a7a23d61461070a57600080fd5b806375f0a8741461062b5780637908b1cf1461064b5780637ae3ff471461066b5780637e7613771461068157806385141a77146106975780638da5cb5b146106b757600080fd5b80634a8e62951161024f57806365b8dbc01161020857806370a08231116101e257806370a08231146105aa578063715018a6146105e057806374fc6d81146105f5578063750c11b61461060b57600080fd5b806365b8dbc01461055e578063680789521461057e5780637088f0c11461059457600080fd5b80634a8e6295146104ad5780634fbee193146104c357806350688168146104fc578063516d7d1e1461051257806359b107b9146105285780635d098b381461053e57600080fd5b806323b872dd116102a157806323b872dd146103e2578063313ce56714610402578063395093511461041e57806347535d7b1461043e57806349bd5a5e1461045f5780634a74bb021461049357600080fd5b806306fdde03146102f4578063095ea7b31461031f578063099d0d301461034f5780630b6bb6f5146103735780631694505e1461039557806318160ddd146103cd57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030961092f565b6040516103169190611ea8565b60405180910390f35b34801561032b57600080fd5b5061033f61033a366004611f1b565b6109c1565b6040519015158152602001610316565b34801561035b57600080fd5b50610365600f5481565b604051908152602001610316565b34801561037f57600080fd5b5061039361038e366004611f5d565b6109d8565b005b3480156103a157600080fd5b506019546103b5906001600160a01b031681565b6040516001600160a01b039091168152602001610316565b3480156103d957600080fd5b50600254610365565b3480156103ee57600080fd5b5061033f6103fd366004612022565b610a7d565b34801561040e57600080fd5b5060405160128152602001610316565b34801561042a57600080fd5b5061033f610439366004611f1b565b610b27565b34801561044a57600080fd5b5060055461033f90600160a01b900460ff1681565b34801561046b57600080fd5b506103b57f000000000000000000000000676b6ea908b420d0db4eba2dd8d5cd61f577f2e981565b34801561049f57600080fd5b5060075461033f9060ff1681565b3480156104b957600080fd5b5061036560135481565b3480156104cf57600080fd5b5061033f6104de366004612063565b6001600160a01b03166000908152601d602052604090205460ff1690565b34801561050857600080fd5b5061036560165481565b34801561051e57600080fd5b5061036560185481565b34801561053457600080fd5b50610365600e5481565b34801561054a57600080fd5b50610393610559366004612063565b610b63565b34801561056a57600080fd5b50610393610579366004612063565b610baf565b34801561058a57600080fd5b50610365600c5481565b3480156105a057600080fd5b5061036560175481565b3480156105b657600080fd5b506103656105c5366004612063565b6001600160a01b031660009081526020819052604090205490565b3480156105ec57600080fd5b50610393610ca0565b34801561060157600080fd5b5061036560155481565b34801561061757600080fd5b50610393610626366004612080565b610cd6565b34801561063757600080fd5b50601b546103b5906001600160a01b031681565b34801561065757600080fd5b50610393610666366004612099565b610d05565b34801561067757600080fd5b50610365600d5481565b34801561068d57600080fd5b5061036560115481565b3480156106a357600080fd5b50601a546103b5906001600160a01b031681565b3480156106c357600080fd5b506005546001600160a01b03166103b5565b3480156106e157600080fd5b506103936106f0366004612080565b610d58565b34801561070157600080fd5b50610309610de0565b34801561071657600080fd5b50610393610725366004612108565b610def565b34801561073657600080fd5b5061036560125481565b34801561074c57600080fd5b5061033f61075b366004611f1b565b610eca565b34801561076c57600080fd5b5061033f61077b366004611f1b565b610f63565b34801561078c57600080fd5b5061033f61079b366004612063565b601c6020526000908152604090205460ff1681565b3480156107bc57600080fd5b506103936107cb366004612108565b610f70565b3480156107dc57600080fd5b506103936107eb36600461213d565b61107c565b3480156107fc57600080fd5b5061036560085481565b34801561081257600080fd5b50610365600b5481565b34801561082857600080fd5b50610365610837366004612158565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561086e57600080fd5b5061036560095481565b34801561088457600080fd5b50610365600a5481565b34801561089a57600080fd5b5061036560105481565b3480156108b057600080fd5b506103936108bf366004612080565b6110ed565b3480156108d057600080fd5b5061036560145481565b3480156108e657600080fd5b506103936108f5366004612080565b61116f565b34801561090657600080fd5b50610393610915366004612063565b61119e565b34801561092657600080fd5b50610393611236565b60606003805461093e90612191565b80601f016020809104026020016040519081016040528092919081815260200182805461096a90612191565b80156109b75780601f1061098c576101008083540402835291602001916109b7565b820191906000526020600020905b81548152906001019060200180831161099a57829003601f168201915b5050505050905090565b60006109ce338484611288565b5060015b92915050565b6005546001600160a01b03163314610a0b5760405162461bcd60e51b8152600401610a02906121cb565b60405180910390fd5b60005b81518160ff161015610a7957600160066000848460ff1681518110610a3557610a35612200565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a718161222c565b915050610a0e565b5050565b6000610a8a8484846113ac565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b0f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a02565b610b1c8533858403611288565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109ce918590610b5e90869061224b565b611288565b6005546001600160a01b03163314610b8d5760405162461bcd60e51b8152600401610a02906121cb565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610bd95760405162461bcd60e51b8152600401610a02906121cb565b6019546001600160a01b0390811690821603610c435760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610a02565b6019546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3601980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610cca5760405162461bcd60e51b8152600401610a02906121cb565b610cd460006118a6565b565b6005546001600160a01b03163314610d005760405162461bcd60e51b8152600401610a02906121cb565b600955565b6005546001600160a01b03163314610d2f5760405162461bcd60e51b8152600401610a02906121cb565b600b98909855600c96909655600d94909455600f92909255601055601155601355601455601555565b6005546001600160a01b03163314610d825760405162461bcd60e51b8152600401610a02906121cb565b600a819055610d9c610190610d9660025490565b906118f8565b600a541015610ddd5760405162461bcd60e51b815260206004820152600d60248201526c76616c756520746f6f206c6f7760981b6044820152606401610a02565b50565b60606004805461093e90612191565b6005546001600160a01b03163314610e195760405162461bcd60e51b8152600401610a02906121cb565b7f000000000000000000000000676b6ea908b420d0db4eba2dd8d5cd61f577f2e96001600160a01b0316826001600160a01b031603610ec05760405162461bcd60e51b815260206004820152603a60248201527f5468652020706169722063616e6e6f742062652072656d6f7665642066726f6d60448201527f206175746f6d617465644d61726b65744d616b657250616972730000000000006064820152608401610a02565b610a798282611904565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f4c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a02565b610f593385858403611288565b5060019392505050565b60006109ce3384846113ac565b6005546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610a02906121cb565b6001600160a01b0382166000908152601d602052604090205481151560ff90911615150361101d5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610a02565b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146110a65760405162461bcd60e51b8152600401610a02906121cb565b6007805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6005546001600160a01b031633146111175760405162461bcd60e51b8152600401610a02906121cb565b600881905561112b610190610d9660025490565b6008541015610ddd5760405162461bcd60e51b815260206004820152601060248201526f76616c756520697320746f6f206c6f7760801b6044820152606401610a02565b6005546001600160a01b031633146111995760405162461bcd60e51b8152600401610a02906121cb565b601855565b6005546001600160a01b031633146111c85760405162461bcd60e51b8152600401610a02906121cb565b6001600160a01b03811661122d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a02565b610ddd816118a6565b6005546001600160a01b031633146112605760405162461bcd60e51b8152600401610a02906121cb565b6005805460ff60a01b1916600160a01b179055565b6000611281828461224b565b9392505050565b6001600160a01b0383166112ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a02565b6001600160a01b03821661134b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a02565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60055483908390600160a01b900460ff16806113e057506001600160a01b03821660009081526006602052604090205460ff165b8061140357506001600160a01b03811660009081526006602052604090205460ff165b61143a5760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b6044820152606401610a02565b6001600160a01b0385166114605760405162461bcd60e51b8152600401610a029061225e565b6001600160a01b0384166114865760405162461bcd60e51b8152600401610a02906122a3565b8260000361149f5761149a858560006119ee565b61189f565b6001600160a01b0385166000908152601d602052604081205460ff16806114de57506001600160a01b0385166000908152601d602052604090205460ff165b905080611548576008548411156115485760405162461bcd60e51b815260206004820152602860248201527f616d6f756e74206578636565647320746865206d61785472616e73616374696f6044820152673720b6b7bab73a1760c11b6064820152608401610a02565b8015801561156e57506001600160a01b0386166000908152601c602052604090205460ff165b156115f5576001600160a01b038516600090815260208190526040902054600a54611599868361224b565b11156115f35760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610a02565b505b30600090815260208190526040902054600954811080159081906116215750600754610100900460ff16155b801561164557506001600160a01b0387166000908152601c602052604090205460ff165b8015611653575060075460ff165b1561166657600954915061166682611b43565b82611808576001600160a01b0388166000908152601c6020526040812054819060ff16156116d3576116b46064610d966116ad600d54600e54611c4f90919063ffffffff16565b8b90611c5b565b91506116d06064610d96600d548b611c5b90919063ffffffff16565b90505b6001600160a01b0389166000908152601c602052604090205460ff16801561170a5750601854611704906001611c4f565b60175411155b1561174d5761172e6064610d966116ad601154601254611c4f90919063ffffffff16565b915061174a6064610d966011548b611c5b90919063ffffffff16565b90505b6001600160a01b0389166000908152601c602052604090205460ff1680156117785750601854601754145b156117c05761179c6064610d966116ad601554601654611c4f90919063ffffffff16565b91506117b86064610d966015548b611c5b90919063ffffffff16565b600060175590505b6117d46117cd8383611275565b8990611c4f565b975081156117e7576117e78a30846119ee565b801561180557601a54611805908b906001600160a01b0316836119ee565b50505b6001600160a01b0388166000908152601c602052604090205460ff16801561183f5750601854611839906001611c4f565b60175411155b1561185a5760178054906000611854836122e6565b91905055505b6001600160a01b0387166000908152601c602052604090205460ff1680156118855750601854601754105b156118905760006017555b61189b8888886119ee565b5050505b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061128182846122ff565b6001600160a01b0382166000908152601c602052604090205481151560ff90911615150361199a5760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610a02565b6001600160a01b0382166000818152601c6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611a145760405162461bcd60e51b8152600401610a029061225e565b6001600160a01b038216611a3a5760405162461bcd60e51b8152600401610a02906122a3565b6001600160a01b03831660009081526020819052604090205481811015611ab25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a02565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611ae990849061224b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b3591815260200190565b60405180910390a350505050565b6007805461ff001916610100179055601154601254600091611b7691611b6891611c4f565b600f54610d96908590611c5b565b90506000611b858260026118f8565b90506000611b938383611c4f565b905047611b9f83611c67565b6000611bab4783611c4f565b9050611bb78382611df2565b611bc9611bc48787611c4f565b611c67565b601b546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611c02573d6000803e3d6000fd5b5060408051858152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150506007805461ff001916905550505050565b60006112818284612321565b60006112818284612334565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c9c57611c9c612200565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611cf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d199190612353565b81600181518110611d2c57611d2c612200565b6001600160a01b0392831660209182029290920181019190915260195430600090815260018352604080822092909416815291522054821115611d8357601954611d839030906001600160a01b0316600019611288565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790611dbc908590600090869030904290600401612370565b600060405180830381600087803b158015611dd657600080fd5b505af1158015611dea573d6000803e3d6000fd5b505050505050565b6019546001600160a01b031663f305d719823085600080611e1b6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611e83573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061189f91906123e1565b600060208083528351808285015260005b81811015611ed557858101830151858201604001528201611eb9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ddd57600080fd5b8035611f1681611ef6565b919050565b60008060408385031215611f2e57600080fd5b8235611f3981611ef6565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611f7057600080fd5b823567ffffffffffffffff80821115611f8857600080fd5b818501915085601f830112611f9c57600080fd5b813581811115611fae57611fae611f47565b8060051b604051601f19603f83011681018181108582111715611fd357611fd3611f47565b604052918252848201925083810185019188831115611ff157600080fd5b938501935b828510156120165761200785611f0b565b84529385019392850192611ff6565b98975050505050505050565b60008060006060848603121561203757600080fd5b833561204281611ef6565b9250602084013561205281611ef6565b929592945050506040919091013590565b60006020828403121561207557600080fd5b813561128181611ef6565b60006020828403121561209257600080fd5b5035919050565b60008060008060008060008060006101208a8c0312156120b857600080fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b80358015158114611f1657600080fd5b6000806040838503121561211b57600080fd5b823561212681611ef6565b9150612134602084016120f8565b90509250929050565b60006020828403121561214f57600080fd5b611281826120f8565b6000806040838503121561216b57600080fd5b823561217681611ef6565b9150602083013561218681611ef6565b809150509250929050565b600181811c908216806121a557607f821691505b6020821081036121c557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff810361224257612242612216565b60010192915050565b808201808211156109d2576109d2612216565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000600182016122f8576122f8612216565b5060010190565b60008261231c57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109d2576109d2612216565b600081600019048311821515161561234e5761234e612216565b500290565b60006020828403121561236557600080fd5b815161128181611ef6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123c05784516001600160a01b03168352938301939183019160010161239b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156123f657600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122055e8dd438a99feb5662c6f78c492295cff5d6ca582ac46f53c95f0a1fabaae7664736f6c63430008100033
Deployed Bytecode Sourcemap
38013:11490:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5384:169;;;;;;;;;;-1:-1:-1;5384:169:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;5384:169:0;1162:187:1;38574:35:0;;;;;;;;;;;;;;;;;;;1500:25:1;;;1488:2;1473:18;38574:35:0;1354:177:1;37818:186:0;;;;;;;;;;-1:-1:-1;37818:186:0;;;;;:::i;:::-;;:::i;:::-;;39110:41;;;;;;;;;;-1:-1:-1;39110:41:0;;;;-1:-1:-1;;;;;39110:41:0;;;;;;-1:-1:-1;;;;;2985:32:1;;;2967:51;;2955:2;2940:18;39110:41:0;2794:230:1;4337:108:0;;;;;;;;;;-1:-1:-1;4425:12:0;;4337:108;;6035:492;;;;;;;;;;-1:-1:-1;6035:492:0;;;;;:::i;:::-;;:::i;4179:93::-;;;;;;;;;;-1:-1:-1;4179:93:0;;4262:2;3632:36:1;;3620:2;3605:18;4179:93:0;3490:184:1;6936:215:0;;;;;;;;;;-1:-1:-1;6936:215:0;;;;;:::i;:::-;;:::i;37398:26::-;;;;;;;;;;-1:-1:-1;37398:26:0;;;;-1:-1:-1;;;37398:26:0;;;;;;39158:38;;;;;;;;;;;;;;;38097:40;;;;;;;;;;-1:-1:-1;38097:40:0;;;;;;;;38789;;;;;;;;;;;;;;;;42585:125;;;;;;;;;;-1:-1:-1;42585:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;42674:28:0;42650:4;42674:28;;;:19;:28;;;;;;;;;42585:125;38926:105;;;;;;;;;;;;;;;;39075:26;;;;;;;;;;;;;;;;38484:81;;;;;;;;;;;;;;;;47894:114;;;;;;;;;;-1:-1:-1;47894:114:0;;;;;:::i;:::-;;:::i;41696:307::-;;;;;;;;;;-1:-1:-1;41696:307:0;;;;;:::i;:::-;;:::i;38407:34::-;;;;;;;;;;;;;;;;39040:28;;;;;;;;;;;;;;;;4508:127;;;;;;;;;;-1:-1:-1;4508:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4609:18:0;4582:7;4609:18;;;;;;;;;;;;4508:127;14752:94;;;;;;;;;;;;;:::i;38883:36::-;;;;;;;;;;;;;;;;48318:119;;;;;;;;;;-1:-1:-1;48318:119:0;;;;;:::i;:::-;;:::i;39292:92::-;;;;;;;;;;-1:-1:-1;39292:92:0;;;;-1:-1:-1;;;;;39292:92:0;;;48817:679;;;;;;;;;;-1:-1:-1;48817:679:0;;;;;:::i;:::-;;:::i;38448:29::-;;;;;;;;;;;;;;;;38658:30;;;;;;;;;;;;;;;;39205:79;;;;;;;;;;-1:-1:-1;39205:79:0;;;;-1:-1:-1;;;;;39205:79:0;;;14101:87;;;;;;;;;;-1:-1:-1;14174:6:0;;-1:-1:-1;;;;;14174:6:0;14101:87;;48624:185;;;;;;;;;;-1:-1:-1;48624:185:0;;;;;:::i;:::-;;:::i;3436:104::-;;;;;;;;;;;;;:::i;42014:243::-;;;;;;;;;;-1:-1:-1;42014:243:0;;;;;:::i;:::-;;:::i;38695:85::-;;;;;;;;;;;;;;;;7654:413;;;;;;;;;;-1:-1:-1;7654:413:0;;;;;:::i;:::-;;:::i;4848:175::-;;;;;;;;;;-1:-1:-1;4848:175:0;;;;;:::i;:::-;;:::i;39546:58::-;;;;;;;;;;-1:-1:-1;39546:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;41400:288;;;;;;;;;;-1:-1:-1;41400:288:0;;;;;:::i;:::-;;:::i;48445:171::-;;;;;;;;;;-1:-1:-1;48445:171:0;;;;;:::i;:::-;;:::i;38182:57::-;;;;;;;;;;;;;;;;38366:34;;;;;;;;;;;;;;;;5086:151;;;;;;;;;;-1:-1:-1;5086:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5202:18:0;;;5175:7;5202:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5086:151;38246:53;;;;;;;;;;;;;;;;38306:51;;;;;;;;;;;;;;;;38616:35;;;;;;;;;;;;;;;;48119:191;;;;;;;;;;-1:-1:-1;48119:191:0;;;;;:::i;:::-;;:::i;38836:40::-;;;;;;;;;;;;;;;;48016:95;;;;;;;;;;-1:-1:-1;48016:95:0;;;;;:::i;:::-;;:::i;15001:192::-;;;;;;;;;;-1:-1:-1;15001:192:0;;;;;:::i;:::-;;:::i;37738:72::-;;;;;;;;;;;;;:::i;3217:100::-;3271:13;3304:5;3297:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:100;:::o;5384:169::-;5467:4;5484:39;1692:10;5507:7;5516:6;5484:8;:39::i;:::-;-1:-1:-1;5541:4:0;5384:169;;;;;:::o;37818:186::-;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;;;;;;;;;37905:7:::1;37901:96;37922:6;:13;37918:1;:17;;;37901:96;;;37981:4;37957:10;:21;37968:6;37975:1;37968:9;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;37957:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;37957:21:0;:28;;-1:-1:-1;;37957:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37937:3;::::1;::::0;::::1;:::i;:::-;;;;37901:96;;;;37818:186:::0;:::o;6035:492::-;6175:4;6192:36;6202:6;6210:9;6221:6;6192:9;:36::i;:::-;-1:-1:-1;;;;;6268:19:0;;6241:24;6268:19;;;:11;:19;;;;;;;;1692:10;6268:33;;;;;;;;6320:26;;;;6312:79;;;;-1:-1:-1;;;6312:79:0;;7998:2:1;6312:79:0;;;7980:21:1;8037:2;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;-1:-1:-1;;;8127:18:1;;;8120:38;8175:19;;6312:79:0;7796:404:1;6312:79:0;6427:57;6436:6;1692:10;6477:6;6458:16;:25;6427:8;:57::i;:::-;-1:-1:-1;6515:4:0;;6035:492;-1:-1:-1;;;;6035:492:0:o;6936:215::-;1692:10;7024:4;7073:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7073:34:0;;;;;;;;;;7024:4;;7041:80;;7064:7;;7073:47;;7110:10;;7073:47;:::i;:::-;7041:8;:80::i;47894:114::-;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;47976:15:::1;:25:::0;;-1:-1:-1;;;;;;47976:25:0::1;-1:-1:-1::0;;;;;47976:25:0;;;::::1;::::0;;;::::1;::::0;;47894:114::o;41696:307::-;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;41805:15:::1;::::0;-1:-1:-1;;;;;41805:15:0;;::::1;41783:38:::0;;::::1;::::0;41775:86:::1;;;::::0;-1:-1:-1;;;41775:86:0;;8537:2:1;41775:86:0::1;::::0;::::1;8519:21:1::0;8576:2;8556:18;;;8549:30;8615:34;8595:18;;;8588:62;-1:-1:-1;;;8666:18:1;;;8659:33;8709:19;;41775:86:0::1;8335:399:1::0;41775:86:0::1;41919:15;::::0;41877:59:::1;::::0;-1:-1:-1;;;;;41919:15:0;;::::1;::::0;41877:59;::::1;::::0;::::1;::::0;41919:15:::1;::::0;41877:59:::1;41947:15;:48:::0;;-1:-1:-1;;;;;;41947:48:0::1;-1:-1:-1::0;;;;;41947:48:0;;;::::1;::::0;;;::::1;::::0;;41696:307::o;14752:94::-;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;14817:21:::1;14835:1;14817:9;:21::i;:::-;14752:94::o:0;48318:119::-;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;48398:18:::1;:31:::0;48318:119::o;48817:679::-;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;49141:15:::1;:25:::0;;;;49177:15:::1;:26:::0;;;;49214:10:::1;:21:::0;;;;49246:16:::1;:27:::0;;;;49284:16:::1;:28:::0;49323:11:::1;:23:::0;49357:21:::1;:37:::0;49405:21:::1;:38:::0;49454:16:::1;:33:::0;48817:679::o;48624:185::-;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;48699:14:::1;:26:::0;;;48762:22:::1;48780:3;48762:13;4425:12:::0;;;4337:108;48762:13:::1;:17:::0;::::1;:22::i;:::-;48744:14;;:40;;48736:66;;;::::0;-1:-1:-1;;;48736:66:0;;8941:2:1;48736:66:0::1;::::0;::::1;8923:21:1::0;8980:2;8960:18;;;8953:30;-1:-1:-1;;;8999:18:1;;;8992:43;9052:18;;48736:66:0::1;8739:337:1::0;48736:66:0::1;48624:185:::0;:::o;3436:104::-;3492:13;3525:7;3518:14;;;;;:::i;42014:243::-;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;42121:13:::1;-1:-1:-1::0;;;;;42113:21:0::1;:4;-1:-1:-1::0;;;;;42113:21:0::1;::::0;42105:92:::1;;;::::0;-1:-1:-1;;;42105:92:0;;9283:2:1;42105:92:0::1;::::0;::::1;9265:21:1::0;9322:2;9302:18;;;9295:30;9361:34;9341:18;;;9334:62;9432:28;9412:18;;;9405:56;9478:19;;42105:92:0::1;9081:422:1::0;42105:92:0::1;42208:41;42237:4;42243:5;42208:28;:41::i;7654:413::-:0;1692:10;7747:4;7791:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7791:34:0;;;;;;;;;;7844:35;;;;7836:85;;;;-1:-1:-1;;;7836:85:0;;9710:2:1;7836:85:0;;;9692:21:1;9749:2;9729:18;;;9722:30;9788:34;9768:18;;;9761:62;-1:-1:-1;;;9839:18:1;;;9832:35;9884:19;;7836:85:0;9508:401:1;7836:85:0;7957:67;1692:10;7980:7;8008:15;7989:16;:34;7957:8;:67::i;:::-;-1:-1:-1;8055:4:0;;7654:413;-1:-1:-1;;;7654:413:0:o;4848:175::-;4934:4;4951:42;1692:10;4975:9;4986:6;4951:9;:42::i;41400:288::-;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41493:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:40;::::1;;:28;::::0;;::::1;:40;;::::0;41485:95:::1;;;::::0;-1:-1:-1;;;41485:95:0;;10116:2:1;41485:95:0::1;::::0;::::1;10098:21:1::0;10155:2;10135:18;;;10128:30;10194:34;10174:18;;;10167:62;-1:-1:-1;;;10245:18:1;;;10238:40;10295:19;;41485:95:0::1;9914:406:1::0;41485:95:0::1;-1:-1:-1::0;;;;;41591:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;41591:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;41646:34;;1302:41:1;;;41646:34:0::1;::::0;1275:18:1;41646:34:0::1;;;;;;;41400:288:::0;;:::o;48445:171::-;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;48522:21:::1;:32:::0;;-1:-1:-1;;48522:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;48570:38:::1;::::0;1302:41:1;;;48570:38:0::1;::::0;1290:2:1;1275:18;48570:38:0::1;;;;;;;48445:171:::0;:::o;48119:191::-;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;48187:20:::1;:29:::0;;;48259:22:::1;48277:3;48259:13;4425:12:::0;;;4337:108;48259:22:::1;48235:20;;:46;;48227:75;;;::::0;-1:-1:-1;;;48227:75:0;;10527:2:1;48227:75:0::1;::::0;::::1;10509:21:1::0;10566:2;10546:18;;;10539:30;-1:-1:-1;;;10585:18:1;;;10578:46;10641:18;;48227:75:0::1;10325:340:1::0;48016:95:0;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;48086:7:::1;:18:::0;48016:95::o;15001:192::-;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15090:22:0;::::1;15082:73;;;::::0;-1:-1:-1;;;15082:73:0;;10872:2:1;15082:73:0::1;::::0;::::1;10854:21:1::0;10911:2;10891:18;;;10884:30;10950:34;10930:18;;;10923:62;-1:-1:-1;;;11001:18:1;;;10994:36;11047:19;;15082:73:0::1;10670:402:1::0;15082:73:0::1;15166:19;15176:8;15166:9;:19::i;37738:72::-:0;14174:6;;-1:-1:-1;;;;;14174:6:0;1692:10;14321:23;14313:68;;;;-1:-1:-1;;;14313:68:0;;;;;;;:::i;:::-;37789:6:::1;:13:::0;;-1:-1:-1;;;;37789:13:0::1;-1:-1:-1::0;;;37789:13:0::1;::::0;;37738:72::o;25255:98::-;25313:7;25340:5;25344:1;25340;:5;:::i;:::-;25333:12;25255:98;-1:-1:-1;;;25255:98:0:o;11351:380::-;-1:-1:-1;;;;;11487:19:0;;11479:68;;;;-1:-1:-1;;;11479:68:0;;11279:2:1;11479:68:0;;;11261:21:1;11318:2;11298:18;;;11291:30;11357:34;11337:18;;;11330:62;-1:-1:-1;;;11408:18:1;;;11401:34;11452:19;;11479:68:0;11077:400:1;11479:68:0;-1:-1:-1;;;;;11566:21:0;;11558:68;;;;-1:-1:-1;;;11558:68:0;;11684:2:1;11558:68:0;;;11666:21:1;11723:2;11703:18;;;11696:30;11762:34;11742:18;;;11735:62;-1:-1:-1;;;11813:18:1;;;11806:32;11855:19;;11558:68:0;11482:398:1;11558:68:0;-1:-1:-1;;;;;11639:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11691:32;;1500:25:1;;;11691:32:0;;1473:18:1;11691:32:0;;;;;;;11351:380;;;:::o;42721:2782::-;37540:6;;42821:4;;42827:2;;-1:-1:-1;;;37540:6:0;;;;;:26;;-1:-1:-1;;;;;;37550:16:0;;;;;;:10;:16;;;;;;;;37540:26;:44;;;-1:-1:-1;;;;;;37570:14:0;;;;;;:10;:14;;;;;;;;37540:44;37532:65;;;;-1:-1:-1;;;37532:65:0;;12087:2:1;37532:65:0;;;12069:21:1;12126:1;12106:18;;;12099:29;-1:-1:-1;;;12144:18:1;;;12137:38;12192:18;;37532:65:0;11885:331:1;37532:65:0;-1:-1:-1;;;;;42868:18:0;::::1;42860:68;;;;-1:-1:-1::0;;;42860:68:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;42947:16:0;::::1;42939:64;;;;-1:-1:-1::0;;;42939:64:0::1;;;;;;;:::i;:::-;43019:6;43029:1;43019:11:::0;43016:92:::1;;43047:28;43063:4;43069:2;43073:1;43047:15;:28::i;:::-;43090:7;;43016:92;-1:-1:-1::0;;;;;43143:25:0;::::1;43120:20;43143:25:::0;;;:19:::1;:25;::::0;;;;;::::1;;::::0;:52:::1;;-1:-1:-1::0;;;;;;43172:23:0;::::1;;::::0;;;:19:::1;:23;::::0;;;;;::::1;;43143:52;43120:75;;43220:15;43216:130;;43269:20;;43259:6;:30;;43251:83;;;::::0;-1:-1:-1;;;43251:83:0;;13233:2:1;43251:83:0::1;::::0;::::1;13215:21:1::0;13272:2;13252:18;;;13245:30;13311:34;13291:18;;;13284:62;-1:-1:-1;;;13362:18:1;;;13355:38;13410:19;;43251:83:0::1;13031:404:1::0;43251:83:0::1;43362:15;43361:16;:51;;;;-1:-1:-1::0;;;;;;43381:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;::::1;;43361:51;43358:259;;;-1:-1:-1::0;;;;;4609:18:0;;43428:32:::1;4609:18:::0;;;;;;;;;;;43536:14:::1;::::0;43499:33:::1;43526:6:::0;4609:18;43499:33:::1;:::i;:::-;:51;;43491:100;;;::::0;-1:-1:-1;;;43491:100:0;;13642:2:1;43491:100:0::1;::::0;::::1;13624:21:1::0;13681:2;13661:18;;;13654:30;13720:34;13700:18;;;13693:62;-1:-1:-1;;;13771:18:1;;;13764:34;13815:19;;43491:100:0::1;13440:400:1::0;43491:100:0::1;43413:204;43358:259;43683:4;43634:28;4609:18:::0;;;;;;;;;;;43761::::1;::::0;43737:42;::::1;::::0;::::1;::::0;;;43802:40:::1;;-1:-1:-1::0;43826:16:0::1;::::0;::::1;::::0;::::1;;;43825:17;43802:40;:73;;;;-1:-1:-1::0;;;;;;43846:29:0;::::1;;::::0;;;:25:::1;:29;::::0;;;;;::::1;;43802:73;:98;;;;-1:-1:-1::0;43879:21:0::1;::::0;::::1;;43802:98;43799:226;;;43942:18;;43919:41;;43975:36;43990:20;43975:14;:36::i;:::-;44126:15;44122:1095;;-1:-1:-1::0;;;;;44221:31:0;::::1;44158:15;44221:31:::0;;;:25:::1;:31;::::0;;;;;44158:15;;44221:31:::1;;44218:186;;;44282:48;44326:3;44282:39;44293:27;44309:10;;44293:11;;:15;;:27;;;;:::i;:::-;44282:6:::0;;:10:::1;:39::i;:48::-;44271:59;;44357:31;44384:3;44357:22;44368:10;;44357:6;:10;;:22;;;;:::i;:31::-;44347:41;;44218:186;-1:-1:-1::0;;;;;44423:29:0;::::1;;::::0;;;:25:::1;:29;::::0;;;;;::::1;;:60:::0;::::1;;;-1:-1:-1::0;44469:7:0::1;::::0;:14:::1;::::0;44481:1:::1;44469:11;:14::i;:::-;44456:9;;:27;;44423:60;44420:218;;;44513:50;44559:3;44513:41;44524:29;44541:11;;44524:12;;:16;;:29;;;;:::i;44513:50::-;44502:61;;44590:32;44618:3;44590:23;44601:11;;44590:6;:10;;:23;;;;:::i;:32::-;44580:42;;44420:218;-1:-1:-1::0;;;;;44657:29:0;::::1;;::::0;;;:25:::1;:29;::::0;;;;;::::1;;:53:::0;::::1;;;;44703:7;;44690:9;;:20;44657:53;44654:259;;;44740:60;44796:3;44740:51;44751:39;44773:16;;44751:17;;:21;;:39;;;;:::i;44740:60::-;44729:71;;44827:37;44860:3;44827:28;44838:16;;44827:6;:10;;:28;;;;:::i;:37::-;44881:16;44888:9;44881:16:::0;44817:47;-1:-1:-1;44654:259:0::1;44935:32;44946:20;:7:::0;44958;44946:11:::1;:20::i;:::-;44935:6:::0;;:10:::1;:32::i;:::-;44926:41:::0;-1:-1:-1;44987:11:0;;44984:97:::1;;45019:45;45035:4;45049;45056:7;45019:15;:45::i;:::-;45101:11:::0;;45098:94:::1;;45155:10;::::0;45133:42:::1;::::0;45149:4;;-1:-1:-1;;;;;45155:10:0::1;45167:7:::0;45133:15:::1;:42::i;:::-;44143:1074;;44122:1095;-1:-1:-1::0;;;;;45234:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;::::1;;:62:::0;::::1;;;-1:-1:-1::0;45282:7:0::1;::::0;:14:::1;::::0;45294:1:::1;45282:11;:14::i;:::-;45269:9;;:27;;45234:62;45231:105;;;45313:9;:11:::0;;;:9:::1;:11;::::0;::::1;:::i;:::-;;;;;;45231:105;-1:-1:-1::0;;;;;45351:29:0;::::1;;::::0;;;:25:::1;:29;::::0;;;;;::::1;;:52:::0;::::1;;;;45396:7;;45384:9;;:19;45351:52;45348:100;;;45420:16;45427:9;45420:16:::0;45348:100:::1;45460:33;45476:4;45482:2;45486:6;45460:15;:33::i;:::-;42849:2654;;;37608:1;42721:2782:::0;;;;;:::o;15201:173::-;15276:6;;;-1:-1:-1;;;;;15293:17:0;;;-1:-1:-1;;;;;;15293:17:0;;;;;;;15326:40;;15276:6;;;15293:17;15276:6;;15326:40;;15257:16;;15326:40;15246:128;15201:173;:::o;26392:98::-;26450:7;26477:5;26481:1;26477;:5;:::i;42265:308::-;-1:-1:-1;;;;;42356:31:0;;;;;;:25;:31;;;;;;:40;;;:31;;;;:40;;;42348:109;;;;-1:-1:-1;;;42348:109:0;;14409:2:1;42348:109:0;;;14391:21:1;14448:2;14428:18;;;14421:30;14487:34;14467:18;;;14460:62;14558:26;14538:18;;;14531:54;14602:19;;42348:109:0;14207:420:1;42348:109:0;-1:-1:-1;;;;;42468:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;42468:39:0;;;;;;;;;;42525:40;;42468:39;;:31;42525:40;;;42265:308;;:::o;8557:733::-;-1:-1:-1;;;;;8697:20:0;;8689:70;;;;-1:-1:-1;;;8689:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8778:23:0;;8770:71;;;;-1:-1:-1;;;8770:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8938:17:0;;8914:21;8938:17;;;;;;;;;;;8974:23;;;;8966:74;;;;-1:-1:-1;;;8966:74:0;;14834:2:1;8966:74:0;;;14816:21:1;14873:2;14853:18;;;14846:30;14912:34;14892:18;;;14885:62;-1:-1:-1;;;14963:18:1;;;14956:36;15009:19;;8966:74:0;14632:402:1;8966:74:0;-1:-1:-1;;;;;9076:17:0;;;:9;:17;;;;;;;;;;;9096:22;;;9076:42;;9140:20;;;;;;;;:30;;9112:6;;9076:9;9140:30;;9112:6;;9140:30;:::i;:::-;;;;;;;;9205:9;-1:-1:-1;;;;;9188:35:0;9197:6;-1:-1:-1;;;;;9188:35:0;;9216:6;9188:35;;;;1500:25:1;;1488:2;1473:18;;1354:177;9188:35:0;;;;;;;;8678:612;8557:733;;;:::o;45512:1273::-;40286:16;:23;;-1:-1:-1;;40286:23:0;;;;;45690:11:::1;::::0;45673:12:::1;::::0;40286:23;;45626:77:::1;::::0;45673:29:::1;::::0;:16:::1;:29::i;:::-;45651:16;::::0;45626:42:::1;::::0;:20;;:24:::1;:42::i;:77::-;45597:106:::0;-1:-1:-1;45772:12:0::1;45787:25;45597:106:::0;45810:1:::1;45787:22;:25::i;:::-;45772:40:::0;-1:-1:-1;45823:17:0::1;45843:28;:18:::0;45772:40;45843:22:::1;:28::i;:::-;45823:48:::0;-1:-1:-1;46174:21:0::1;46240:22;46257:4:::0;46240:16:::1;:22::i;:::-;46393:18;46414:41;:21;46440:14:::0;46414:25:::1;:41::i;:::-;46393:62;;46505:35;46518:9;46529:10;46505:12;:35::i;:::-;46598:62;46615:44;:20:::0;46640:18;46615:24:::1;:44::i;:::-;46598:16;:62::i;:::-;46671:15;::::0;:47:::1;::::0;-1:-1:-1;;;;;46671:15:0;;::::1;::::0;46696:21:::1;46671:47:::0;::::1;;;::::0;:15:::1;:47:::0;:15;:47;46696:21;46671:15;:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;46744:32:0::1;::::0;;15213:25:1;;;15269:2;15254:18;;15247:34;;;46744:32:0::1;::::0;15186:18:1;46744:32:0::1;;;;;;;-1:-1:-1::0;;40332:16:0;:24;;-1:-1:-1;;40332:24:0;;;-1:-1:-1;;;;45512:1273:0:o;25636:98::-;25694:7;25721:5;25725:1;25721;:5;:::i;25993:98::-;26051:7;26078:5;26082:1;26078;:5;:::i;46793:694::-;46945:16;;;46959:1;46945:16;;;;;;;;46921:21;;46945:16;;;;;;;;;;-1:-1:-1;46945:16:0;46921:40;;46990:4;46972;46977:1;46972:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;46972:23:0;;;:7;;;;;;;;;;:23;;;;47016:15;;:22;;;-1:-1:-1;;;47016:22:0;;;;:15;;;;;:20;;:22;;;;;46972:7;;47016:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47006:4;47011:1;47006:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;47006:32:0;;;:7;;;;;;;;;;:32;;;;47087:15;;47072:4;5175:7;5202:18;;;:11;:18;;;;;;47087:15;;;;5202:27;;;;;;47107:11;-1:-1:-1;47051:156:0;;;47165:15;;47133:62;;47150:4;;-1:-1:-1;;;;;47165:15:0;-1:-1:-1;;47133:8:0;:62::i;:::-;47245:15;;:224;;-1:-1:-1;;;47245:224:0;;-1:-1:-1;;;;;47245:15:0;;;;:66;;:224;;47326:11;;47245:15;;47396:4;;47423;;47443:15;;47245:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46848:639;46793:694;:::o;47495:391::-;47616:15;;-1:-1:-1;;;;;47616:15:0;:31;47655:9;47688:4;47708:11;47616:15;;47820:7;14174:6;;-1:-1:-1;;;;;14174:6:0;;14101:87;47820:7;47616:252;;;;;;-1:-1:-1;;;;;;47616:252:0;;;-1:-1:-1;;;;;17198:15:1;;;47616:252:0;;;17180:34:1;17230:18;;;17223:34;;;;17273:18;;;17266:34;;;;17316:18;;;17309:34;17380:15;;;17359:19;;;17352:44;47842:15:0;17412:19:1;;;17405:35;17114:19;;47616:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:127::-;1597:10;1592:3;1588:20;1585:1;1578:31;1628:4;1625:1;1618:15;1652:4;1649:1;1642:15;1668:1121;1752:6;1783:2;1826;1814:9;1805:7;1801:23;1797:32;1794:52;;;1842:1;1839;1832:12;1794:52;1882:9;1869:23;1911:18;1952:2;1944:6;1941:14;1938:34;;;1968:1;1965;1958:12;1938:34;2006:6;1995:9;1991:22;1981:32;;2051:7;2044:4;2040:2;2036:13;2032:27;2022:55;;2073:1;2070;2063:12;2022:55;2109:2;2096:16;2131:2;2127;2124:10;2121:36;;;2137:18;;:::i;:::-;2183:2;2180:1;2176:10;2215:2;2209:9;2278:2;2274:7;2269:2;2265;2261:11;2257:25;2249:6;2245:38;2333:6;2321:10;2318:22;2313:2;2301:10;2298:18;2295:46;2292:72;;;2344:18;;:::i;:::-;2380:2;2373:22;2430:18;;;2464:15;;;;-1:-1:-1;2506:11:1;;;2502:20;;;2534:19;;;2531:39;;;2566:1;2563;2556:12;2531:39;2590:11;;;;2610:148;2626:6;2621:3;2618:15;2610:148;;;2692:23;2711:3;2692:23;:::i;:::-;2680:36;;2643:12;;;;2736;;;;2610:148;;;2777:6;1668:1121;-1:-1:-1;;;;;;;;1668:1121:1:o;3029:456::-;3106:6;3114;3122;3175:2;3163:9;3154:7;3150:23;3146:32;3143:52;;;3191:1;3188;3181:12;3143:52;3230:9;3217:23;3249:31;3274:5;3249:31;:::i;:::-;3299:5;-1:-1:-1;3356:2:1;3341:18;;3328:32;3369:33;3328:32;3369:33;:::i;:::-;3029:456;;3421:7;;-1:-1:-1;;;3475:2:1;3460:18;;;;3447:32;;3029:456::o;3887:247::-;3946:6;3999:2;3987:9;3978:7;3974:23;3970:32;3967:52;;;4015:1;4012;4005:12;3967:52;4054:9;4041:23;4073:31;4098:5;4073:31;:::i;4399:180::-;4458:6;4511:2;4499:9;4490:7;4486:23;4482:32;4479:52;;;4527:1;4524;4517:12;4479:52;-1:-1:-1;4550:23:1;;4399:180;-1:-1:-1;4399:180:1:o;4808:730::-;4939:6;4947;4955;4963;4971;4979;4987;4995;5003;5056:3;5044:9;5035:7;5031:23;5027:33;5024:53;;;5073:1;5070;5063:12;5024:53;-1:-1:-1;;5096:23:1;;;5166:2;5151:18;;5138:32;;-1:-1:-1;5217:2:1;5202:18;;5189:32;;5268:2;5253:18;;5240:32;;-1:-1:-1;5319:3:1;5304:19;;5291:33;;-1:-1:-1;5371:3:1;5356:19;;5343:33;;-1:-1:-1;5423:3:1;5408:19;;5395:33;;-1:-1:-1;5475:3:1;5460:19;;5447:33;;-1:-1:-1;5527:3:1;5512:19;5499:33;;-1:-1:-1;4808:730:1;-1:-1:-1;4808:730:1:o;5543:160::-;5608:20;;5664:13;;5657:21;5647:32;;5637:60;;5693:1;5690;5683:12;5708:315;5773:6;5781;5834:2;5822:9;5813:7;5809:23;5805:32;5802:52;;;5850:1;5847;5840:12;5802:52;5889:9;5876:23;5908:31;5933:5;5908:31;:::i;:::-;5958:5;-1:-1:-1;5982:35:1;6013:2;5998:18;;5982:35;:::i;:::-;5972:45;;5708:315;;;;;:::o;6028:180::-;6084:6;6137:2;6125:9;6116:7;6112:23;6108:32;6105:52;;;6153:1;6150;6143:12;6105:52;6176:26;6192:9;6176:26;:::i;6213:388::-;6281:6;6289;6342:2;6330:9;6321:7;6317:23;6313:32;6310:52;;;6358:1;6355;6348:12;6310:52;6397:9;6384:23;6416:31;6441:5;6416:31;:::i;:::-;6466:5;-1:-1:-1;6523:2:1;6508:18;;6495:32;6536:33;6495:32;6536:33;:::i;:::-;6588:7;6578:17;;;6213:388;;;;;:::o;6606:380::-;6685:1;6681:12;;;;6728;;;6749:61;;6803:4;6795:6;6791:17;6781:27;;6749:61;6856:2;6848:6;6845:14;6825:18;6822:38;6819:161;;6902:10;6897:3;6893:20;6890:1;6883:31;6937:4;6934:1;6927:15;6965:4;6962:1;6955:15;6819:161;;6606:380;;;:::o;6991:356::-;7193:2;7175:21;;;7212:18;;;7205:30;7271:34;7266:2;7251:18;;7244:62;7338:2;7323:18;;6991:356::o;7352:127::-;7413:10;7408:3;7404:20;7401:1;7394:31;7444:4;7441:1;7434:15;7468:4;7465:1;7458:15;7484:127;7545:10;7540:3;7536:20;7533:1;7526:31;7576:4;7573:1;7566:15;7600:4;7597:1;7590:15;7616:175;7653:3;7697:4;7690:5;7686:16;7726:4;7717:7;7714:17;7711:43;;7734:18;;:::i;:::-;7783:1;7770:15;;7616:175;-1:-1:-1;;7616:175:1:o;8205:125::-;8270:9;;;8291:10;;;8288:36;;;8304:18;;:::i;12221:401::-;12423:2;12405:21;;;12462:2;12442:18;;;12435:30;12501:34;12496:2;12481:18;;12474:62;-1:-1:-1;;;12567:2:1;12552:18;;12545:35;12612:3;12597:19;;12221:401::o;12627:399::-;12829:2;12811:21;;;12868:2;12848:18;;;12841:30;12907:34;12902:2;12887:18;;12880:62;-1:-1:-1;;;12973:2:1;12958:18;;12951:33;13016:3;13001:19;;12627:399::o;13845:135::-;13884:3;13905:17;;;13902:43;;13925:18;;:::i;:::-;-1:-1:-1;13972:1:1;13961:13;;13845:135::o;13985:217::-;14025:1;14051;14041:132;;14095:10;14090:3;14086:20;14083:1;14076:31;14130:4;14127:1;14120:15;14158:4;14155:1;14148:15;14041:132;-1:-1:-1;14187:9:1;;13985:217::o;15292:128::-;15359:9;;;15380:11;;;15377:37;;;15394:18;;:::i;15425:168::-;15465:7;15531:1;15527;15523:6;15519:14;15516:1;15513:21;15508:1;15501:9;15494:17;15490:45;15487:71;;;15538:18;;:::i;:::-;-1:-1:-1;15578:9:1;;15425:168::o;15598:251::-;15668:6;15721:2;15709:9;15700:7;15696:23;15692:32;15689:52;;;15737:1;15734;15727:12;15689:52;15769:9;15763:16;15788:31;15813:5;15788:31;:::i;15854:980::-;16116:4;16164:3;16153:9;16149:19;16195:6;16184:9;16177:25;16221:2;16259:6;16254:2;16243:9;16239:18;16232:34;16302:3;16297:2;16286:9;16282:18;16275:31;16326:6;16361;16355:13;16392:6;16384;16377:22;16430:3;16419:9;16415:19;16408:26;;16469:2;16461:6;16457:15;16443:29;;16490:1;16500:195;16514:6;16511:1;16508:13;16500:195;;;16579:13;;-1:-1:-1;;;;;16575:39:1;16563:52;;16670:15;;;;16635:12;;;;16611:1;16529:9;16500:195;;;-1:-1:-1;;;;;;;16751:32:1;;;;16746:2;16731:18;;16724:60;-1:-1:-1;;;16815:3:1;16800:19;16793:35;16712:3;15854:980;-1:-1:-1;;;15854:980:1:o;17451:306::-;17539:6;17547;17555;17608:2;17596:9;17587:7;17583:23;17579:32;17576:52;;;17624:1;17621;17614:12;17576:52;17653:9;17647:16;17637:26;;17703:2;17692:9;17688:18;17682:25;17672:35;;17747:2;17736:9;17732:18;17726:25;17716:35;;17451:306;;;;;:::o
Swarm Source
ipfs://55e8dd438a99feb5662c6f78c492295cff5d6ca582ac46f53c95f0a1fabaae76
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.