Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18288010 | 490 days ago | IN | 0 ETH | 0.00096545 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
SweetCaroline
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-05 */ // *//*///(///*,*,../., // *///*****/(###%%&%&&&&%&%&&&/&%%#,/((( // *((##&#(///**////(((((((((((/###%%(((##%(/(#/ // (%/*((//**///////((((((((///////(/#%/*(%@((#**(// // ((/(/**/**///(((((((((((((((((((((((((##%&%%&%@(*%(* // %%//(/**//(((((((((((((((((((((((((((((((###%#&%&#%(%/# // ,%##(//**//((((((((((((((((((((((((((((((((((((#%##(#&%##/( // ,#(////////((((((((((((((((((((((((((((((((//////(#&%%(#%%/&# // (&#(****/////((((((((((((((((((((((((((((/////////((%%#%((/%%# // ##(#///***////(((((((((((((((((((((###%%%%#%(///////((#%&%%##(#% // #(%(//****//(((((#((((((((((((##&&&%&%//(((@@@&#//////((%@&&(&(@/ // %#((/***((&%%%&#(@&%#((((#((##&@#############(((/@##(,//#&@@%#&%&,. // %%&//./*(#%##########(@%((((%&##%%#####((((((((///@////,#%@@@#&@&%,. // &@@#,(/#((#((###%%%%%%(@(((#&%##%%%%@&@&&@&#/(////@/////#&%&&&&@#(#, // *(#,.%*///(@@@@@@&%&%/#(((#%@###%%%%%%@&#%%(#(((#(////**(%@&@@@@&&,, // %%%,.@*//&%(#&@&%%%%%@#/((((%@%%%%%%%%######(((/@///****/###((/%#/,* // ##%..**///((##%%%%#&(*///(((#(@##(((######(((%%(//*****/((((###%%/* // ,/*&***//(###((((/@//*/(((/((#####%(#&&%%#(((////*******/(&%(//%#@, // (//**(((((#%@&(///(/*/(((/////(###(((((((((((/////*****/#%%%%(#/@* // .(#/,***///////(((#(*/(((((((///#%%###((((((((////*****/(%%#%(/(&@ // ,*((/,**/////((((####(//((/(((######%#((((((((////*****((((///&@% // ,/&@/(**/////(((####((//((###(((((#####((((((////*****/(((((# // &&@&/,****/((((####(///(((((((((((######((((/////***/@ // &&@//***//(((##&&@%(/(//#(//#(#((%@%%##(((////****& // %#&%**////(####%%(((*//(((&%###((###((//////*** // @&%****//(#(////((((#####(((((((((((//////. // &%/****/(////////(((((((((((////////// // &*********///(((((((((((/////**// // /******///((((((((////**/// // /***///((((((/////(/ // *///(((((( /* $$$$$$\ $$\ $$\ $$$$$$\ $$$$$$$$\ $$$$$$\ $$\ $$\ $$ __$$\ $$$\ $$ |\_$$ _|\__$$ __|$$ __$$\ $$ | $$ | $$ / \__|$$$$\ $$ | $$ | $$ | $$ / \__|$$ | $$ | \$$$$$$\ $$ $$\$$ | $$ | $$ | $$ | $$$$$$$$ | \____$$\ $$ \$$$$ | $$ | $$ | $$ | $$ __$$ | $$\ $$ |$$ |\$$$ | $$ | $$ | $$ | $$\ $$ | $$ | \$$$$$$ |$$ | \$$ |$$$$$$\ $$ | \$$$$$$ |$$ | $$ | \______/ \__| \__|\______| \__| \______/ \__| \__| SweetCaroline (SNITCH) Website: https://sweetcaroline.xyz Telegram: https://t.me/SnitchCaroline Twitter: https://twitter.com/snitchcaroline */ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; pragma experimental ABIEncoderV2; // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) // pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) // pragma solidity ^0.8.0; // import "../utils/Context.sol"; /** * @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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) // pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) // pragma solidity ^0.8.0; // import "../IERC20.sol"; /** * @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); } // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) // pragma solidity ^0.8.0; // import "./IERC20.sol"; // import "./extensions/IERC20Metadata.sol"; // import "../../utils/Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, 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}. * * 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 default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) // pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } // pragma solidity >=0.6.2; // import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract SweetCaroline is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private _swapping; bool public swapEnabled = false; bool public dynamicTaxesEnabled = true; bool public dynamicLimitsEnabled = true; bool public launched; address public marketingWallet; uint256 public launchBlock; uint256 public launchTime; uint256 public defaultMaxTransaction; uint256 public defaultMaxWallet; uint256 public swapTokensAtAmount; uint256 public buyFees; uint256 public sellFees; uint256 private previousFee; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedMaxTransactionAmount; mapping(address => bool) private automatedMarketMakerPairs; mapping(address => bool) private _isBot; event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); modifier lockSwapping() { _swapping = true; _; _swapping = false; } constructor(address _owner) ERC20("SweetCaroline", "SNITCH") { uint256 totalSupply = 8888888888888888888888888888; uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(uniswapV2Router), type(uint256).max); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); _approve(address(this), address(uniswapV2Pair), type(uint256).max); IERC20(uniswapV2Pair).approve( address(uniswapV2Router), type(uint256).max ); defaultMaxTransaction = (totalSupply * 5) / 1000; defaultMaxWallet = (totalSupply * 5) / 1000; swapTokensAtAmount = (totalSupply * 5) / 1000; buyFees = 3; sellFees = 3; previousFee = sellFees; marketingWallet = 0xe0c421bF086c4A9D090eC75A5Fb427eb2758adA0; excludeFromFees(owner(), true); excludeFromFees(_owner, true); excludeFromFees(address(this), true); excludeFromFees(deadAddress, true); excludeFromFees(marketingWallet, true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(_owner, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(deadAddress, true); excludeFromMaxTransaction(address(uniswapV2Router), true); excludeFromMaxTransaction(address(uniswapV2Pair), true); excludeFromMaxTransaction(marketingWallet, true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); _mint(_owner, (totalSupply * 90) / 100); _mint(marketingWallet, (totalSupply * 10) / 100); } receive() external payable {} function burn(uint256 amount) public { _burn(msg.sender, amount); } function setSwapEnabled(bool value) public onlyOwner { swapEnabled = value; } function setDynamicTaxesEnabled(bool value) public onlyOwner { dynamicTaxesEnabled = value; } function setDynamicLimitsEnabled(bool value) public onlyOwner { dynamicLimitsEnabled = value; } function setLaunched() public onlyOwner { require(!launched, "ERC20: Already launched."); launched = true; launchBlock = block.number; launchTime = block.timestamp; } function updateSwapTokensAtAmount(uint256 newAmount) public onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "ERC20: Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "ERC20: Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateDefaultLimits( uint256 maxTransaction, uint256 maxWallet ) external onlyOwner { require( maxTransaction >= ((totalSupply() * 1) / 1000), "ERC20: Cannot set maxTxn lower than 0.1%" ); require( maxWallet >= ((totalSupply() * 1) / 1000), "ERC20: Cannot set maxWallet lower than 0.1%" ); defaultMaxTransaction = maxTransaction; defaultMaxWallet = maxWallet; } function excludeFromMaxTransaction(address updAds, bool value) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = value; } function bulkExcludeFromMaxTransaction( address[] calldata accounts, bool value ) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { _isExcludedMaxTransactionAmount[accounts[i]] = value; } } function updateBuyFees(uint256 _buyFees) public onlyOwner { buyFees = _buyFees; require(buyFees <= 10, "ERC20: Must keep fees at 10% or less"); } function updateSellFees(uint256 _sellFees) public onlyOwner { sellFees = _sellFees; previousFee = sellFees; require(sellFees <= 10, "ERC20: Must keep fees at 10% or less"); } function updateMarketingWallet(address _marketingWallet) public onlyOwner { require(_marketingWallet != address(0), "ERC20: Address 0"); address oldWallet = marketingWallet; marketingWallet = _marketingWallet; emit marketingWalletUpdated(marketingWallet, oldWallet); } function excludeFromFees(address account, bool value) public onlyOwner { _isExcludedFromFees[account] = value; emit ExcludeFromFees(account, value); } function bulkExcludeFromFees(address[] calldata accounts, bool value) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFees[accounts[i]] = value; } } function setBots(address[] calldata accounts, bool value) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { if ( (accounts[i] != uniswapV2Pair) && (accounts[i] != address(uniswapV2Router)) && (accounts[i] != address(this)) ) _isBot[accounts[i]] = value; } } function withdrawStuckTokens(address tkn) public onlyOwner { if (tkn == address(0)) { bool success; (success, ) = address(msg.sender).call{value: address(this).balance}( "" ); } else { require(IERC20(tkn).balanceOf(address(this)) > 0, "No tokens"); uint256 amount = IERC20(tkn).balanceOf(address(this)); IERC20(tkn).transfer(msg.sender, amount); } } function unclog() public onlyOwner lockSwapping { swapTokensForEth( balanceOf(address(this)) ); uint256 ethBalance = address(this).balance; uint256 ethMarketing = ethBalance; bool success; (success, ) = address(marketingWallet).call{value: ethMarketing}(""); } function _setAutomatedMarketMakerPair(address pair, bool value) internal virtual { 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 ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_isBot[from], "ERC20: bot detected"); require(!_isBot[msg.sender], "ERC20: bot detected"); require(!_isBot[tx.origin], "ERC20: bot detected"); if (amount == 0) { super._transfer(from, to, 0); return; } if ( from != owner() && to != owner() && to != address(0) && to != deadAddress && !_swapping ) { uint256 maxTransaction; uint256 maxWallet; if (dynamicLimitsEnabled) { if (block.timestamp > launchTime + (10 minutes)) { maxTransaction = totalSupply(); maxWallet = totalSupply(); } else if (block.timestamp > launchTime + (5 minutes)) { maxTransaction = (totalSupply() * 1000) / 10000; maxWallet = (totalSupply() * 1000) / 10000; } else if (block.timestamp > launchTime + (3 minutes)) { maxTransaction = (totalSupply() * 500) / 10000; maxWallet = (totalSupply() * 500) / 10000; } else if (block.timestamp > launchTime + (1 minutes)) { maxTransaction = (totalSupply() * 200) / 10000; maxWallet = (totalSupply() * 200) / 10000; } else { maxTransaction = (totalSupply() * 50) / 10000; maxWallet = (totalSupply() * 50) / 10000; } } else { maxTransaction = defaultMaxTransaction; maxWallet = defaultMaxWallet; } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransaction, "ERC20: Buy transfer amount exceeds the maxTransaction." ); require( amount + balanceOf(to) <= maxWallet, "ERC20: Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransaction, "ERC20: Sell transfer amount exceeds the maxTransaction." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "ERC20: Max wallet exceeded" ); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !_swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapBack(contractTokenBalance); } bool takeFee = !_swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; uint256 totalFees = 0; if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellFees > 0) { if (dynamicTaxesEnabled) { if (block.timestamp > launchTime + (1 days)) { totalFees = sellFees; } else if (block.timestamp > launchTime + (9 minutes)) { totalFees = 5; } else if (block.timestamp > launchTime + (6 minutes)) { totalFees = 10; } else if (block.timestamp > launchTime + (3 minutes)) { totalFees = 15; } else { totalFees = 30; } } else { totalFees = sellFees; } fees = amount.mul(totalFees).div(100); } // on buy else if (automatedMarketMakerPairs[from] && buyFees > 0) { if (dynamicTaxesEnabled) { if (block.timestamp > launchTime + (1 days)) { totalFees = buyFees; } else if (block.timestamp > launchTime + (9 minutes)) { totalFees = 5; } else if (block.timestamp > launchTime + (6 minutes)) { totalFees = 10; } else if (block.timestamp > launchTime + (3 minutes)) { totalFees = 15; } else { totalFees = 30; } } else { totalFees = buyFees; } fees = amount.mul(totalFees).div(100); } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); sellFees = previousFee; } function swapTokensForEth(uint256 tokenAmount) internal virtual { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function swapBack(uint256 contractTokenBalance) internal virtual lockSwapping { bool success; if (contractTokenBalance == 0) { return; } if (contractTokenBalance > swapTokensAtAmount) { contractTokenBalance = swapTokensAtAmount; } swapTokensForEth(contractTokenBalance); uint256 ethBalance = address(this).balance; uint256 ethMarketing = ethBalance; (success, ) = address(marketingWallet).call{value: ethMarketing}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"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":"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":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":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"bulkExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"bulkExcludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultMaxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dynamicLimitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dynamicTaxesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setDynamicLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setDynamicTaxesEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLaunched","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclog","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":"_buyFees","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTransaction","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateDefaultLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFees","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tkn","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526006805462ffffff60a81b191661010160b01b1790553480156200002757600080fd5b5060405162003440380380620034408339810160408190526200004a9162000880565b6040518060400160405280600d81526020016c53776565744361726f6c696e6560981b815250604051806040016040528060068152602001650a69c92a886960d31b8152508160039081620000a0919062000956565b506004620000af828262000956565b505050620000cc620000c6620004e660201b60201c565b620004ea565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526b1cb8b770373d5772b8e38e3890620001049030906000196200053c565b6080516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016b919062000880565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e1919062000880565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200022f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000255919062000880565b600680546001600160a01b0319166001600160a01b03929092169182179055620002849030906000196200053c565b60065460805160405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620002db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000301919062000a22565b506103e86200031282600562000a5c565b6200031e919062000a7c565b600a556103e86200033182600562000a5c565b6200033d919062000a7c565b600b556103e86200035082600562000a5c565b6200035c919062000a7c565b600c556003600d819055600e819055600f55600780546001600160a01b03191673e0c421bf086c4a9d090ec75a5fb427eb2758ada0179055620003b3620003ab6005546001600160a01b031690565b600162000668565b620003c082600162000668565b620003cd30600162000668565b620003dc61dead600162000668565b600754620003f5906001600160a01b0316600162000668565b620004146200040c6005546001600160a01b031690565b6001620006d1565b62000421826001620006d1565b6200042e306001620006d1565b6200043d61dead6001620006d1565b6080516200044d906001620006d1565b60065462000466906001600160a01b03166001620006d1565b6007546200047f906001600160a01b03166001620006d1565b60065462000498906001600160a01b0316600162000706565b620004be826064620004ac84605a62000a5c565b620004b8919062000a7c565b6200075a565b600754620004de906001600160a01b03166064620004ac84600a62000a5c565b505062000ab5565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316620005a45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620006075760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200059b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b620006726200081d565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b620006db6200081d565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260126020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038216620007b25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200059b565b8060026000828254620007c6919062000a9f565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620008795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200059b565b565b505050565b6000602082840312156200089357600080fd5b81516001600160a01b0381168114620008ab57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620008dd57607f821691505b602082108103620008fe57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200087b57600081815260208120601f850160051c810160208610156200092d5750805b601f850160051c820191505b818110156200094e5782815560010162000939565b505050505050565b81516001600160401b03811115620009725762000972620008b2565b6200098a81620009838454620008c8565b8462000904565b602080601f831160018114620009c25760008415620009a95750858301515b600019600386901b1c1916600185901b1785556200094e565b600085815260208120601f198616915b82811015620009f357888601518255948401946001909101908401620009d2565b508582101562000a125787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a3557600080fd5b81518015158114620008ab57600080fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000a765762000a7662000a46565b92915050565b60008262000a9a57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000a765762000a7662000a46565b60805161295362000aed6000396000818161034701528181610d3c015281816120960152818161214f015261218b01526129536000f3fe60806040526004361061028c5760003560e01c8063790ca4131161015a578063d00efb2f116100c1578063e0f3ccf51161007a578063e0f3ccf5146107ce578063e2f45605146107e4578063e4748b9e146107fa578063eba4c33314610810578063f26a992e14610830578063f2fde38b1461085157600080fd5b8063d00efb2f14610722578063d257b34f14610738578063d7d1d10e14610758578063d84f5a3714610778578063dd62ed3e1461078e578063e01af92c146107ae57600080fd5b8063a457c2d711610113578063a457c2d714610662578063a9059cbb14610682578063aacebbe3146106a2578063c0246668146106c2578063c073b633146106e2578063cb9637281461070257600080fd5b8063790ca413146105c35780638091f3bf146105d95780638da5cb5b146105fa5780639507b19b1461061857806395d89b411461062d5780639c0db5f31461064257600080fd5b80633a03c07e116101fe5780636f0816f9116101b75780636f0816f9146104f857806370a0823114610518578063715018a61461054e57806371fc4688146105635780637571336a1461058357806375f0a874146105a357600080fd5b80633a03c07e1461042857806342966c681461044957806349bd5a5e146104695780634fbee1931461048957806367c45349146104c25780636ddd1713146104d757600080fd5b806318160ddd1161025057806318160ddd146103815780631f89aa93146103a057806323b872dd146103b657806327c8f835146103d6578063313ce567146103ec578063395093511461040857600080fd5b806306fdde0314610298578063095ea7b3146102c35780630c8c0760146102f3578063155ca7c1146103155780631694505e1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610871565b6040516102ba9190612442565b60405180910390f35b3480156102cf57600080fd5b506102e36102de3660046124a5565b610903565b60405190151581526020016102ba565b3480156102ff57600080fd5b5061031361030e3660046124df565b61091d565b005b34801561032157600080fd5b506103136103303660046124fc565b610943565b34801561034157600080fd5b506103697f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102ba565b34801561038d57600080fd5b506002545b6040519081526020016102ba565b3480156103ac57600080fd5b50610392600a5481565b3480156103c257600080fd5b506102e36103d1366004612582565b6109c2565b3480156103e257600080fd5b5061036961dead81565b3480156103f857600080fd5b50604051601281526020016102ba565b34801561041457600080fd5b506102e36104233660046124a5565b6109e6565b34801561043457600080fd5b506006546102e390600160b81b900460ff1681565b34801561045557600080fd5b506103136104643660046125c3565b610a08565b34801561047557600080fd5b50600654610369906001600160a01b031681565b34801561049557600080fd5b506102e36104a43660046125dc565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156104ce57600080fd5b50610313610a15565b3480156104e357600080fd5b506006546102e390600160a81b900460ff1681565b34801561050457600080fd5b506103136105133660046125f9565b610ac2565b34801561052457600080fd5b506103926105333660046125dc565b6001600160a01b031660009081526020819052604090205490565b34801561055a57600080fd5b50610313610bdf565b34801561056f57600080fd5b5061031361057e3660046125c3565b610bf3565b34801561058f57600080fd5b5061031361059e36600461261b565b610c21565b3480156105af57600080fd5b50600754610369906001600160a01b031681565b3480156105cf57600080fd5b5061039260095481565b3480156105e557600080fd5b506006546102e390600160c01b900460ff1681565b34801561060657600080fd5b506005546001600160a01b0316610369565b34801561062457600080fd5b50610313610c54565b34801561063957600080fd5b506102ad610cd3565b34801561064e57600080fd5b5061031361065d3660046124fc565b610ce2565b34801561066e57600080fd5b506102e361067d3660046124a5565b610e3e565b34801561068e57600080fd5b506102e361069d3660046124a5565b610eb9565b3480156106ae57600080fd5b506103136106bd3660046125dc565b610ec7565b3480156106ce57600080fd5b506103136106dd36600461261b565b610f69565b3480156106ee57600080fd5b506103136106fd3660046124df565b610fd0565b34801561070e57600080fd5b5061031361071d3660046125dc565b610ff6565b34801561072e57600080fd5b5061039260085481565b34801561074457600080fd5b506102e36107533660046125c3565b6111e5565b34801561076457600080fd5b506103136107733660046124fc565b611325565b34801561078457600080fd5b50610392600b5481565b34801561079a57600080fd5b506103926107a9366004612654565b61139e565b3480156107ba57600080fd5b506103136107c93660046124df565b6113c9565b3480156107da57600080fd5b50610392600e5481565b3480156107f057600080fd5b50610392600c5481565b34801561080657600080fd5b50610392600d5481565b34801561081c57600080fd5b5061031361082b3660046125c3565b6113ef565b34801561083c57600080fd5b506006546102e390600160b01b900460ff1681565b34801561085d57600080fd5b5061031361086c3660046125dc565b611422565b60606003805461088090612682565b80601f01602080910402602001604051908101604052809291908181526020018280546108ac90612682565b80156108f95780601f106108ce576101008083540402835291602001916108f9565b820191906000526020600020905b8154815290600101906020018083116108dc57829003601f168201915b5050505050905090565b600033610911818585611498565b60019150505b92915050565b6109256115bc565b60068054911515600160b01b0260ff60b01b19909216919091179055565b61094b6115bc565b60005b828110156109bc57816010600086868581811061096d5761096d6126bc565b905060200201602081019061098291906125dc565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806109b4816126e8565b91505061094e565b50505050565b6000336109d0858285611616565b6109db85858561168a565b506001949350505050565b6000336109118185856109f9838361139e565b610a039190612701565b611498565b610a123382611f0d565b50565b610a1d6115bc565b6006805460ff60a01b1916600160a01b179055610a57610a52306001600160a01b031660009081526020819052604090205490565b61203f565b600754604051479182916000916001600160a01b03169083908381818185875af1925050503d8060008114610aa8576040519150601f19603f3d011682016040523d82523d6000602084013e610aad565b606091505b50506006805460ff60a01b1916905550505050565b610aca6115bc565b6103e8610ad660025490565b610ae1906001612714565b610aeb919061272b565b821015610b505760405162461bcd60e51b815260206004820152602860248201527f45524332303a2043616e6e6f7420736574206d617854786e206c6f776572207460448201526768616e20302e312560c01b60648201526084015b60405180910390fd5b6103e8610b5c60025490565b610b67906001612714565b610b71919061272b565b811015610bd45760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e6e6f7420736574206d617857616c6c6574206c6f776560448201526a72207468616e20302e312560a81b6064820152608401610b47565b600a91909155600b55565b610be76115bc565b610bf160006121ff565b565b610bfb6115bc565b600d819055600a811115610a125760405162461bcd60e51b8152600401610b479061274d565b610c296115bc565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b610c5c6115bc565b600654600160c01b900460ff1615610cb65760405162461bcd60e51b815260206004820152601860248201527f45524332303a20416c7265616479206c61756e636865642e00000000000000006044820152606401610b47565b6006805460ff60c01b1916600160c01b1790554360085542600955565b60606004805461088090612682565b610cea6115bc565b60005b828110156109bc576006546001600160a01b0316848483818110610d1357610d136126bc565b9050602002016020810190610d2891906125dc565b6001600160a01b031614158015610d9757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316848483818110610d7657610d766126bc565b9050602002016020810190610d8b91906125dc565b6001600160a01b031614155b8015610dd2575030848483818110610db157610db16126bc565b9050602002016020810190610dc691906125dc565b6001600160a01b031614155b15610e2c578160136000868685818110610dee57610dee6126bc565b9050602002016020810190610e0391906125dc565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b80610e36816126e8565b915050610ced565b60003381610e4c828661139e565b905083811015610eac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b47565b6109db8286868403611498565b60003361091181858561168a565b610ecf6115bc565b6001600160a01b038116610f185760405162461bcd60e51b815260206004820152601060248201526f045524332303a204164647265737320360841b6044820152606401610b47565b600780546001600160a01b038381166001600160a01b03198316811790935560405191169182917fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a35050565b610f716115bc565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610fd86115bc565b60068054911515600160b81b0260ff60b81b19909216919091179055565b610ffe6115bc565b6001600160a01b03811661105d57604051600090339047908381818185875af1925050503d806000811461104e576040519150601f19603f3d011682016040523d82523d6000602084013e611053565b606091505b50610a1292505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c89190612791565b116111015760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610b47565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c9190612791565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156111bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e091906127aa565b505050565b60006111ef6115bc565b620186a06111fc60025490565b611207906001612714565b611211919061272b565b8210156112865760405162461bcd60e51b815260206004820152603c60248201527f45524332303a205377617020616d6f756e742063616e6e6f74206265206c6f7760448201527f6572207468616e20302e3030312520746f74616c20737570706c792e000000006064820152608401610b47565b6103e861129260025490565b61129d906005612714565b6112a7919061272b565b82111561131c5760405162461bcd60e51b815260206004820152603b60248201527f45524332303a205377617020616d6f756e742063616e6e6f742062652068696760448201527f686572207468616e20302e352520746f74616c20737570706c792e00000000006064820152608401610b47565b50600c55600190565b61132d6115bc565b60005b828110156109bc57816011600086868581811061134f5761134f6126bc565b905060200201602081019061136491906125dc565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611396816126e8565b915050611330565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6113d16115bc565b60068054911515600160a81b0260ff60a81b19909216919091179055565b6113f76115bc565b600e819055600f819055600a811115610a125760405162461bcd60e51b8152600401610b479061274d565b61142a6115bc565b6001600160a01b03811661148f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b47565b610a12816121ff565b6001600160a01b0383166114fa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b47565b6001600160a01b03821661155b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b47565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b47565b6000611622848461139e565b905060001981146109bc578181101561167d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b47565b6109bc8484848403611498565b6001600160a01b0383166116b05760405162461bcd60e51b8152600401610b47906127c7565b6001600160a01b0382166116d65760405162461bcd60e51b8152600401610b479061280c565b6001600160a01b03831660009081526013602052604090205460ff161561170f5760405162461bcd60e51b8152600401610b479061284f565b3360009081526013602052604090205460ff161561173f5760405162461bcd60e51b8152600401610b479061284f565b3260009081526013602052604090205460ff161561176f5760405162461bcd60e51b8152600401610b479061284f565b80600003611783576111e083836000612251565b6005546001600160a01b038481169116148015906117af57506005546001600160a01b03838116911614155b80156117c357506001600160a01b03821615155b80156117da57506001600160a01b03821661dead14155b80156117f05750600654600160a01b900460ff16155b15611bf8576006546000908190600160b81b900460ff16156119665760095461181b90610258612701565b421115611830576002549150815b905061196f565b60095461183f9061012c612701565b42111561188c5761271061185260025490565b61185e906103e8612714565b611868919061272b565b915061271061187660025490565b611882906103e8612714565b611829919061272b565b60095461189a9060b4612701565b4211156118dd576127106118ad60025490565b6118b9906101f4612714565b6118c3919061272b565b91506127106118d160025490565b611882906101f4612714565b6009546118eb90603c612701565b42111561192c576127106118fe60025490565b6119099060c8612714565b611913919061272b565b915061271061192160025490565b6118829060c8612714565b61271061193860025490565b611943906032612714565b61194d919061272b565b915061271061195b60025490565b611882906032612714565b5050600a54600b545b6001600160a01b03851660009081526012602052604090205460ff1680156119b057506001600160a01b03841660009081526011602052604090205460ff16155b15611aa15781831115611a245760405162461bcd60e51b815260206004820152603660248201527f45524332303a20427579207472616e7366657220616d6f756e742065786365656044820152753239903a34329036b0bc2a3930b739b0b1ba34b7b71760511b6064820152608401610b47565b80611a44856001600160a01b031660009081526020819052604090205490565b611a4e9085612701565b1115611a9c5760405162461bcd60e51b815260206004820152601a60248201527f45524332303a204d61782077616c6c65742065786365656465640000000000006044820152606401610b47565b611bf5565b6001600160a01b03841660009081526012602052604090205460ff168015611ae257506001600160a01b03851660009081526011602052604090205460ff16155b15611b5d5781831115611a9c5760405162461bcd60e51b815260206004820152603760248201527f45524332303a2053656c6c207472616e7366657220616d6f756e74206578636560448201527f65647320746865206d61785472616e73616374696f6e2e0000000000000000006064820152608401610b47565b6001600160a01b03841660009081526011602052604090205460ff16611bf55780611b9d856001600160a01b031660009081526020819052604090205490565b611ba79085612701565b1115611bf55760405162461bcd60e51b815260206004820152601a60248201527f45524332303a204d61782077616c6c65742065786365656465640000000000006044820152606401610b47565b50505b30600090815260208190526040902054600c5481108015908190611c255750600654600160a81b900460ff165b8015611c3b5750600654600160a01b900460ff16155b8015611c6057506001600160a01b03851660009081526012602052604090205460ff16155b8015611c8557506001600160a01b03851660009081526010602052604090205460ff16155b8015611caa57506001600160a01b03841660009081526010602052604090205460ff16155b15611cb857611cb88261237b565b6006546001600160a01b03861660009081526010602052604090205460ff600160a01b909204821615911680611d0657506001600160a01b03851660009081526010602052604090205460ff165b15611d0f575060005b6000808215611ef2576001600160a01b03871660009081526012602052604090205460ff168015611d4257506000600e54115b15611dfb57600654600160b01b900460ff1615611dda57600954611d699062015180612701565b421115611d795750600e54611ddf565b600954611d889061021c612701565b421115611d9757506005611ddf565b600954611da690610168612701565b421115611db55750600a611ddf565b600954611dc39060b4612701565b421115611dd25750600f611ddf565b50601e611ddf565b50600e545b611df46064611dee8884612423565b90612436565b9150611ed4565b6001600160a01b03881660009081526012602052604090205460ff168015611e2557506000600d54115b15611ed457600654600160b01b900460ff1615611ebd57600954611e4c9062015180612701565b421115611e5c5750600d54611ec2565b600954611e6b9061021c612701565b421115611e7a57506005611ec2565b600954611e8990610168612701565b421115611e985750600a611ec2565b600954611ea69060b4612701565b421115611eb55750600f611ec2565b50601e611ec2565b50600d545b611ed16064611dee8884612423565b91505b8115611ee557611ee5883084612251565b611eef828761287c565b95505b611efd888888612251565b5050600f54600e55505050505050565b6001600160a01b038216611f6d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b47565b6001600160a01b03821660009081526020819052604090205481811015611fe15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b47565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612074576120746126bc565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612116919061288f565b81600181518110612129576121296126bc565b60200260200101906001600160a01b031690816001600160a01b031681525050612174307f000000000000000000000000000000000000000000000000000000000000000084611498565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906121c99085906000908690309042906004016128ac565b600060405180830381600087803b1580156121e357600080fd5b505af11580156121f7573d6000803e3d6000fd5b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166122775760405162461bcd60e51b8152600401610b47906127c7565b6001600160a01b03821661229d5760405162461bcd60e51b8152600401610b479061280c565b6001600160a01b038316600090815260208190526040902054818110156123155760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b47565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36109bc565b6006805460ff60a01b1916600160a01b179055600081810361239d5750612413565b600c548211156123ad57600c5491505b6123b68261203f565b600754604051479182916001600160a01b03909116908290600081818185875af1925050503d8060008114612407576040519150601f19603f3d011682016040523d82523d6000602084013e61240c565b606091505b5050505050505b506006805460ff60a01b19169055565b600061242f8284612714565b9392505050565b600061242f828461272b565b600060208083528351808285015260005b8181101561246f57858101830151858201604001528201612453565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a1257600080fd5b600080604083850312156124b857600080fd5b82356124c381612490565b946020939093013593505050565b8015158114610a1257600080fd5b6000602082840312156124f157600080fd5b813561242f816124d1565b60008060006040848603121561251157600080fd5b833567ffffffffffffffff8082111561252957600080fd5b818601915086601f83011261253d57600080fd5b81358181111561254c57600080fd5b8760208260051b850101111561256157600080fd5b60209283019550935050840135612577816124d1565b809150509250925092565b60008060006060848603121561259757600080fd5b83356125a281612490565b925060208401356125b281612490565b929592945050506040919091013590565b6000602082840312156125d557600080fd5b5035919050565b6000602082840312156125ee57600080fd5b813561242f81612490565b6000806040838503121561260c57600080fd5b50508035926020909101359150565b6000806040838503121561262e57600080fd5b823561263981612490565b91506020830135612649816124d1565b809150509250929050565b6000806040838503121561266757600080fd5b823561267281612490565b9150602083013561264981612490565b600181811c9082168061269657607f821691505b6020821081036126b657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016126fa576126fa6126d2565b5060010190565b80820180821115610917576109176126d2565b8082028115828204841417610917576109176126d2565b60008261274857634e487b7160e01b600052601260045260246000fd5b500490565b60208082526024908201527f45524332303a204d757374206b656570206665657320617420313025206f72206040820152636c65737360e01b606082015260800190565b6000602082840312156127a357600080fd5b5051919050565b6000602082840312156127bc57600080fd5b815161242f816124d1565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b602080825260139082015272115490cc8c0e88189bdd0819195d1958dd1959606a1b604082015260600190565b81810381811115610917576109176126d2565b6000602082840312156128a157600080fd5b815161242f81612490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128fc5784516001600160a01b0316835293830193918301916001016128d7565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ef40d990ea70f47e3375518b0744b80a78c69871fb68027613c4ca646c4fa95064736f6c634300081100330000000000000000000000002c37cd4d9530a6ea37af3b634059ea25b2628248
Deployed Bytecode
0x60806040526004361061028c5760003560e01c8063790ca4131161015a578063d00efb2f116100c1578063e0f3ccf51161007a578063e0f3ccf5146107ce578063e2f45605146107e4578063e4748b9e146107fa578063eba4c33314610810578063f26a992e14610830578063f2fde38b1461085157600080fd5b8063d00efb2f14610722578063d257b34f14610738578063d7d1d10e14610758578063d84f5a3714610778578063dd62ed3e1461078e578063e01af92c146107ae57600080fd5b8063a457c2d711610113578063a457c2d714610662578063a9059cbb14610682578063aacebbe3146106a2578063c0246668146106c2578063c073b633146106e2578063cb9637281461070257600080fd5b8063790ca413146105c35780638091f3bf146105d95780638da5cb5b146105fa5780639507b19b1461061857806395d89b411461062d5780639c0db5f31461064257600080fd5b80633a03c07e116101fe5780636f0816f9116101b75780636f0816f9146104f857806370a0823114610518578063715018a61461054e57806371fc4688146105635780637571336a1461058357806375f0a874146105a357600080fd5b80633a03c07e1461042857806342966c681461044957806349bd5a5e146104695780634fbee1931461048957806367c45349146104c25780636ddd1713146104d757600080fd5b806318160ddd1161025057806318160ddd146103815780631f89aa93146103a057806323b872dd146103b657806327c8f835146103d6578063313ce567146103ec578063395093511461040857600080fd5b806306fdde0314610298578063095ea7b3146102c35780630c8c0760146102f3578063155ca7c1146103155780631694505e1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610871565b6040516102ba9190612442565b60405180910390f35b3480156102cf57600080fd5b506102e36102de3660046124a5565b610903565b60405190151581526020016102ba565b3480156102ff57600080fd5b5061031361030e3660046124df565b61091d565b005b34801561032157600080fd5b506103136103303660046124fc565b610943565b34801561034157600080fd5b506103697f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102ba565b34801561038d57600080fd5b506002545b6040519081526020016102ba565b3480156103ac57600080fd5b50610392600a5481565b3480156103c257600080fd5b506102e36103d1366004612582565b6109c2565b3480156103e257600080fd5b5061036961dead81565b3480156103f857600080fd5b50604051601281526020016102ba565b34801561041457600080fd5b506102e36104233660046124a5565b6109e6565b34801561043457600080fd5b506006546102e390600160b81b900460ff1681565b34801561045557600080fd5b506103136104643660046125c3565b610a08565b34801561047557600080fd5b50600654610369906001600160a01b031681565b34801561049557600080fd5b506102e36104a43660046125dc565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156104ce57600080fd5b50610313610a15565b3480156104e357600080fd5b506006546102e390600160a81b900460ff1681565b34801561050457600080fd5b506103136105133660046125f9565b610ac2565b34801561052457600080fd5b506103926105333660046125dc565b6001600160a01b031660009081526020819052604090205490565b34801561055a57600080fd5b50610313610bdf565b34801561056f57600080fd5b5061031361057e3660046125c3565b610bf3565b34801561058f57600080fd5b5061031361059e36600461261b565b610c21565b3480156105af57600080fd5b50600754610369906001600160a01b031681565b3480156105cf57600080fd5b5061039260095481565b3480156105e557600080fd5b506006546102e390600160c01b900460ff1681565b34801561060657600080fd5b506005546001600160a01b0316610369565b34801561062457600080fd5b50610313610c54565b34801561063957600080fd5b506102ad610cd3565b34801561064e57600080fd5b5061031361065d3660046124fc565b610ce2565b34801561066e57600080fd5b506102e361067d3660046124a5565b610e3e565b34801561068e57600080fd5b506102e361069d3660046124a5565b610eb9565b3480156106ae57600080fd5b506103136106bd3660046125dc565b610ec7565b3480156106ce57600080fd5b506103136106dd36600461261b565b610f69565b3480156106ee57600080fd5b506103136106fd3660046124df565b610fd0565b34801561070e57600080fd5b5061031361071d3660046125dc565b610ff6565b34801561072e57600080fd5b5061039260085481565b34801561074457600080fd5b506102e36107533660046125c3565b6111e5565b34801561076457600080fd5b506103136107733660046124fc565b611325565b34801561078457600080fd5b50610392600b5481565b34801561079a57600080fd5b506103926107a9366004612654565b61139e565b3480156107ba57600080fd5b506103136107c93660046124df565b6113c9565b3480156107da57600080fd5b50610392600e5481565b3480156107f057600080fd5b50610392600c5481565b34801561080657600080fd5b50610392600d5481565b34801561081c57600080fd5b5061031361082b3660046125c3565b6113ef565b34801561083c57600080fd5b506006546102e390600160b01b900460ff1681565b34801561085d57600080fd5b5061031361086c3660046125dc565b611422565b60606003805461088090612682565b80601f01602080910402602001604051908101604052809291908181526020018280546108ac90612682565b80156108f95780601f106108ce576101008083540402835291602001916108f9565b820191906000526020600020905b8154815290600101906020018083116108dc57829003601f168201915b5050505050905090565b600033610911818585611498565b60019150505b92915050565b6109256115bc565b60068054911515600160b01b0260ff60b01b19909216919091179055565b61094b6115bc565b60005b828110156109bc57816010600086868581811061096d5761096d6126bc565b905060200201602081019061098291906125dc565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806109b4816126e8565b91505061094e565b50505050565b6000336109d0858285611616565b6109db85858561168a565b506001949350505050565b6000336109118185856109f9838361139e565b610a039190612701565b611498565b610a123382611f0d565b50565b610a1d6115bc565b6006805460ff60a01b1916600160a01b179055610a57610a52306001600160a01b031660009081526020819052604090205490565b61203f565b600754604051479182916000916001600160a01b03169083908381818185875af1925050503d8060008114610aa8576040519150601f19603f3d011682016040523d82523d6000602084013e610aad565b606091505b50506006805460ff60a01b1916905550505050565b610aca6115bc565b6103e8610ad660025490565b610ae1906001612714565b610aeb919061272b565b821015610b505760405162461bcd60e51b815260206004820152602860248201527f45524332303a2043616e6e6f7420736574206d617854786e206c6f776572207460448201526768616e20302e312560c01b60648201526084015b60405180910390fd5b6103e8610b5c60025490565b610b67906001612714565b610b71919061272b565b811015610bd45760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e6e6f7420736574206d617857616c6c6574206c6f776560448201526a72207468616e20302e312560a81b6064820152608401610b47565b600a91909155600b55565b610be76115bc565b610bf160006121ff565b565b610bfb6115bc565b600d819055600a811115610a125760405162461bcd60e51b8152600401610b479061274d565b610c296115bc565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b610c5c6115bc565b600654600160c01b900460ff1615610cb65760405162461bcd60e51b815260206004820152601860248201527f45524332303a20416c7265616479206c61756e636865642e00000000000000006044820152606401610b47565b6006805460ff60c01b1916600160c01b1790554360085542600955565b60606004805461088090612682565b610cea6115bc565b60005b828110156109bc576006546001600160a01b0316848483818110610d1357610d136126bc565b9050602002016020810190610d2891906125dc565b6001600160a01b031614158015610d9757507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316848483818110610d7657610d766126bc565b9050602002016020810190610d8b91906125dc565b6001600160a01b031614155b8015610dd2575030848483818110610db157610db16126bc565b9050602002016020810190610dc691906125dc565b6001600160a01b031614155b15610e2c578160136000868685818110610dee57610dee6126bc565b9050602002016020810190610e0391906125dc565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b80610e36816126e8565b915050610ced565b60003381610e4c828661139e565b905083811015610eac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b47565b6109db8286868403611498565b60003361091181858561168a565b610ecf6115bc565b6001600160a01b038116610f185760405162461bcd60e51b815260206004820152601060248201526f045524332303a204164647265737320360841b6044820152606401610b47565b600780546001600160a01b038381166001600160a01b03198316811790935560405191169182917fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a35050565b610f716115bc565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610fd86115bc565b60068054911515600160b81b0260ff60b81b19909216919091179055565b610ffe6115bc565b6001600160a01b03811661105d57604051600090339047908381818185875af1925050503d806000811461104e576040519150601f19603f3d011682016040523d82523d6000602084013e611053565b606091505b50610a1292505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c89190612791565b116111015760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610b47565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c9190612791565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156111bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e091906127aa565b505050565b60006111ef6115bc565b620186a06111fc60025490565b611207906001612714565b611211919061272b565b8210156112865760405162461bcd60e51b815260206004820152603c60248201527f45524332303a205377617020616d6f756e742063616e6e6f74206265206c6f7760448201527f6572207468616e20302e3030312520746f74616c20737570706c792e000000006064820152608401610b47565b6103e861129260025490565b61129d906005612714565b6112a7919061272b565b82111561131c5760405162461bcd60e51b815260206004820152603b60248201527f45524332303a205377617020616d6f756e742063616e6e6f742062652068696760448201527f686572207468616e20302e352520746f74616c20737570706c792e00000000006064820152608401610b47565b50600c55600190565b61132d6115bc565b60005b828110156109bc57816011600086868581811061134f5761134f6126bc565b905060200201602081019061136491906125dc565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611396816126e8565b915050611330565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6113d16115bc565b60068054911515600160a81b0260ff60a81b19909216919091179055565b6113f76115bc565b600e819055600f819055600a811115610a125760405162461bcd60e51b8152600401610b479061274d565b61142a6115bc565b6001600160a01b03811661148f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b47565b610a12816121ff565b6001600160a01b0383166114fa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b47565b6001600160a01b03821661155b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b47565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b47565b6000611622848461139e565b905060001981146109bc578181101561167d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b47565b6109bc8484848403611498565b6001600160a01b0383166116b05760405162461bcd60e51b8152600401610b47906127c7565b6001600160a01b0382166116d65760405162461bcd60e51b8152600401610b479061280c565b6001600160a01b03831660009081526013602052604090205460ff161561170f5760405162461bcd60e51b8152600401610b479061284f565b3360009081526013602052604090205460ff161561173f5760405162461bcd60e51b8152600401610b479061284f565b3260009081526013602052604090205460ff161561176f5760405162461bcd60e51b8152600401610b479061284f565b80600003611783576111e083836000612251565b6005546001600160a01b038481169116148015906117af57506005546001600160a01b03838116911614155b80156117c357506001600160a01b03821615155b80156117da57506001600160a01b03821661dead14155b80156117f05750600654600160a01b900460ff16155b15611bf8576006546000908190600160b81b900460ff16156119665760095461181b90610258612701565b421115611830576002549150815b905061196f565b60095461183f9061012c612701565b42111561188c5761271061185260025490565b61185e906103e8612714565b611868919061272b565b915061271061187660025490565b611882906103e8612714565b611829919061272b565b60095461189a9060b4612701565b4211156118dd576127106118ad60025490565b6118b9906101f4612714565b6118c3919061272b565b91506127106118d160025490565b611882906101f4612714565b6009546118eb90603c612701565b42111561192c576127106118fe60025490565b6119099060c8612714565b611913919061272b565b915061271061192160025490565b6118829060c8612714565b61271061193860025490565b611943906032612714565b61194d919061272b565b915061271061195b60025490565b611882906032612714565b5050600a54600b545b6001600160a01b03851660009081526012602052604090205460ff1680156119b057506001600160a01b03841660009081526011602052604090205460ff16155b15611aa15781831115611a245760405162461bcd60e51b815260206004820152603660248201527f45524332303a20427579207472616e7366657220616d6f756e742065786365656044820152753239903a34329036b0bc2a3930b739b0b1ba34b7b71760511b6064820152608401610b47565b80611a44856001600160a01b031660009081526020819052604090205490565b611a4e9085612701565b1115611a9c5760405162461bcd60e51b815260206004820152601a60248201527f45524332303a204d61782077616c6c65742065786365656465640000000000006044820152606401610b47565b611bf5565b6001600160a01b03841660009081526012602052604090205460ff168015611ae257506001600160a01b03851660009081526011602052604090205460ff16155b15611b5d5781831115611a9c5760405162461bcd60e51b815260206004820152603760248201527f45524332303a2053656c6c207472616e7366657220616d6f756e74206578636560448201527f65647320746865206d61785472616e73616374696f6e2e0000000000000000006064820152608401610b47565b6001600160a01b03841660009081526011602052604090205460ff16611bf55780611b9d856001600160a01b031660009081526020819052604090205490565b611ba79085612701565b1115611bf55760405162461bcd60e51b815260206004820152601a60248201527f45524332303a204d61782077616c6c65742065786365656465640000000000006044820152606401610b47565b50505b30600090815260208190526040902054600c5481108015908190611c255750600654600160a81b900460ff165b8015611c3b5750600654600160a01b900460ff16155b8015611c6057506001600160a01b03851660009081526012602052604090205460ff16155b8015611c8557506001600160a01b03851660009081526010602052604090205460ff16155b8015611caa57506001600160a01b03841660009081526010602052604090205460ff16155b15611cb857611cb88261237b565b6006546001600160a01b03861660009081526010602052604090205460ff600160a01b909204821615911680611d0657506001600160a01b03851660009081526010602052604090205460ff165b15611d0f575060005b6000808215611ef2576001600160a01b03871660009081526012602052604090205460ff168015611d4257506000600e54115b15611dfb57600654600160b01b900460ff1615611dda57600954611d699062015180612701565b421115611d795750600e54611ddf565b600954611d889061021c612701565b421115611d9757506005611ddf565b600954611da690610168612701565b421115611db55750600a611ddf565b600954611dc39060b4612701565b421115611dd25750600f611ddf565b50601e611ddf565b50600e545b611df46064611dee8884612423565b90612436565b9150611ed4565b6001600160a01b03881660009081526012602052604090205460ff168015611e2557506000600d54115b15611ed457600654600160b01b900460ff1615611ebd57600954611e4c9062015180612701565b421115611e5c5750600d54611ec2565b600954611e6b9061021c612701565b421115611e7a57506005611ec2565b600954611e8990610168612701565b421115611e985750600a611ec2565b600954611ea69060b4612701565b421115611eb55750600f611ec2565b50601e611ec2565b50600d545b611ed16064611dee8884612423565b91505b8115611ee557611ee5883084612251565b611eef828761287c565b95505b611efd888888612251565b5050600f54600e55505050505050565b6001600160a01b038216611f6d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b47565b6001600160a01b03821660009081526020819052604090205481811015611fe15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b47565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612074576120746126bc565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612116919061288f565b81600181518110612129576121296126bc565b60200260200101906001600160a01b031690816001600160a01b031681525050612174307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611498565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906121c99085906000908690309042906004016128ac565b600060405180830381600087803b1580156121e357600080fd5b505af11580156121f7573d6000803e3d6000fd5b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166122775760405162461bcd60e51b8152600401610b47906127c7565b6001600160a01b03821661229d5760405162461bcd60e51b8152600401610b479061280c565b6001600160a01b038316600090815260208190526040902054818110156123155760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b47565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36109bc565b6006805460ff60a01b1916600160a01b179055600081810361239d5750612413565b600c548211156123ad57600c5491505b6123b68261203f565b600754604051479182916001600160a01b03909116908290600081818185875af1925050503d8060008114612407576040519150601f19603f3d011682016040523d82523d6000602084013e61240c565b606091505b5050505050505b506006805460ff60a01b19169055565b600061242f8284612714565b9392505050565b600061242f828461272b565b600060208083528351808285015260005b8181101561246f57858101830151858201604001528201612453565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a1257600080fd5b600080604083850312156124b857600080fd5b82356124c381612490565b946020939093013593505050565b8015158114610a1257600080fd5b6000602082840312156124f157600080fd5b813561242f816124d1565b60008060006040848603121561251157600080fd5b833567ffffffffffffffff8082111561252957600080fd5b818601915086601f83011261253d57600080fd5b81358181111561254c57600080fd5b8760208260051b850101111561256157600080fd5b60209283019550935050840135612577816124d1565b809150509250925092565b60008060006060848603121561259757600080fd5b83356125a281612490565b925060208401356125b281612490565b929592945050506040919091013590565b6000602082840312156125d557600080fd5b5035919050565b6000602082840312156125ee57600080fd5b813561242f81612490565b6000806040838503121561260c57600080fd5b50508035926020909101359150565b6000806040838503121561262e57600080fd5b823561263981612490565b91506020830135612649816124d1565b809150509250929050565b6000806040838503121561266757600080fd5b823561267281612490565b9150602083013561264981612490565b600181811c9082168061269657607f821691505b6020821081036126b657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016126fa576126fa6126d2565b5060010190565b80820180821115610917576109176126d2565b8082028115828204841417610917576109176126d2565b60008261274857634e487b7160e01b600052601260045260246000fd5b500490565b60208082526024908201527f45524332303a204d757374206b656570206665657320617420313025206f72206040820152636c65737360e01b606082015260800190565b6000602082840312156127a357600080fd5b5051919050565b6000602082840312156127bc57600080fd5b815161242f816124d1565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b602080825260139082015272115490cc8c0e88189bdd0819195d1958dd1959606a1b604082015260600190565b81810381811115610917576109176126d2565b6000602082840312156128a157600080fd5b815161242f81612490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128fc5784516001600160a01b0316835293830193918301916001016128d7565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ef40d990ea70f47e3375518b0744b80a78c69871fb68027613c4ca646c4fa95064736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002c37cd4d9530a6ea37af3b634059ea25b2628248
-----Decoded View---------------
Arg [0] : _owner (address): 0x2C37Cd4d9530A6ea37Af3b634059EA25b2628248
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002c37cd4d9530a6ea37af3b634059ea25b2628248
Deployed Bytecode Sourcemap
37765:14873:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12500:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15001:242;;;;;;;;;;-1:-1:-1;15001:242:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;15001:242:0;1023:187:1;41206:107:0;;;;;;;;;;-1:-1:-1;41206:107:0;;;;;:::i;:::-;;:::i;:::-;;44043:241;;;;;;;;;;-1:-1:-1;44043:241:0;;;;;:::i;:::-;;:::i;37848:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2530:32:1;;;2512:51;;2500:2;2485:18;37848:51:0;2339:230:1;13629:108:0;;;;;;;;;;-1:-1:-1;13717:12:0;;13629:108;;;2720:25:1;;;2708:2;2693:18;13629:108:0;2574:177:1;38296:36:0;;;;;;;;;;;;;;;;15823:295;;;;;;;;;;-1:-1:-1;15823:295:0;;;;;:::i;:::-;;:::i;37941:53::-;;;;;;;;;;;;37987:6;37941:53;;13471:93;;;;;;;;;;-1:-1:-1;13471:93:0;;13554:2;3567:36:1;;3555:2;3540:18;13471:93:0;3425:184:1;16527:270:0;;;;;;;;;;-1:-1:-1;16527:270:0;;;;;:::i;:::-;;:::i;38115:39::-;;;;;;;;;;-1:-1:-1;38115:39:0;;;;-1:-1:-1;;;38115:39:0;;;;;;41018:81;;;;;;;;;;-1:-1:-1;41018:81:0;;;;;:::i;:::-;;:::i;37906:28::-;;;;;;;;;;-1:-1:-1;37906:28:0;;;;-1:-1:-1;;;;;37906:28:0;;;45726:126;;;;;;;;;;-1:-1:-1;45726:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;45816:28:0;45792:4;45816:28;;;:19;:28;;;;;;;;;45726:126;45154:336;;;;;;;;;;;;;:::i;38032:31::-;;;;;;;;;;-1:-1:-1;38032:31:0;;;;-1:-1:-1;;;38032:31:0;;;;;;42193:504;;;;;;;;;;-1:-1:-1;42193:504:0;;;;;:::i;:::-;;:::i;13800:177::-;;;;;;;;;;-1:-1:-1;13800:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;13951:18:0;13919:7;13951:18;;;;;;;;;;;;13800:177;5880:103;;;;;;;;;;;;;:::i;43155:168::-;;;;;;;;;;-1:-1:-1;43155:168:0;;;;;:::i;:::-;;:::i;42705:169::-;;;;;;;;;;-1:-1:-1;42705:169:0;;;;;:::i;:::-;;:::i;38190:30::-;;;;;;;;;;-1:-1:-1;38190:30:0;;;;-1:-1:-1;;;;;38190:30:0;;;38262:25;;;;;;;;;;;;;;;;38161:20;;;;;;;;;;-1:-1:-1;38161:20:0;;;;-1:-1:-1;;;38161:20:0;;;;;;5239:87;;;;;;;;;;-1:-1:-1;5312:6:0;;-1:-1:-1;;;;;5312:6:0;5239:87;;41438:230;;;;;;;;;;;;;:::i;12719:104::-;;;;;;;;;;;;;:::i;44292:374::-;;;;;;;;;;-1:-1:-1;44292:374:0;;;;;:::i;:::-;;:::i;17300:505::-;;;;;;;;;;-1:-1:-1;17300:505:0;;;;;:::i;:::-;;:::i;14183:234::-;;;;;;;;;;-1:-1:-1;14183:234:0;;;;;:::i;:::-;;:::i;43545:309::-;;;;;;;;;;-1:-1:-1;43545:309:0;;;;;:::i;:::-;;:::i;43862:173::-;;;;;;;;;;-1:-1:-1;43862:173:0;;;;;:::i;:::-;;:::i;41321:109::-;;;;;;;;;;-1:-1:-1;41321:109:0;;;;;:::i;:::-;;:::i;44674:472::-;;;;;;;;;;-1:-1:-1;44674:472:0;;;;;:::i;:::-;;:::i;38229:26::-;;;;;;;;;;;;;;;;41676:509;;;;;;;;;;-1:-1:-1;41676:509:0;;;;;:::i;:::-;;:::i;42882:265::-;;;;;;;;;;-1:-1:-1;42882:265:0;;;;;:::i;:::-;;:::i;38339:31::-;;;;;;;;;;;;;;;;14480:201;;;;;;;;;;-1:-1:-1;14480:201:0;;;;;:::i;:::-;;:::i;41107:91::-;;;;;;;;;;-1:-1:-1;41107:91:0;;;;;:::i;:::-;;:::i;38452:23::-;;;;;;;;;;;;;;;;38379:33;;;;;;;;;;;;;;;;38421:22;;;;;;;;;;;;;;;;43331:206;;;;;;;;;;-1:-1:-1;43331:206:0;;;;;:::i;:::-;;:::i;38070:38::-;;;;;;;;;;-1:-1:-1;38070:38:0;;;;-1:-1:-1;;;38070:38:0;;;;;;6138:238;;;;;;;;;;-1:-1:-1;6138:238:0;;;;;:::i;:::-;;:::i;12500:100::-;12554:13;12587:5;12580:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12500:100;:::o;15001:242::-;15120:4;3864:10;15181:32;3864:10;15197:7;15206:6;15181:8;:32::i;:::-;15231:4;15224:11;;;15001:242;;;;;:::o;41206:107::-;5125:13;:11;:13::i;:::-;41278:19:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;41278:27:0::1;-1:-1:-1::0;;;;41278:27:0;;::::1;::::0;;;::::1;::::0;;41206:107::o;44043:241::-;5125:13;:11;:13::i;:::-;44169:9:::1;44164:113;44184:19:::0;;::::1;44164:113;;;44260:5;44225:19;:32;44245:8;;44254:1;44245:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44225:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;44225:32:0;:40;;-1:-1:-1;;44225:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;44205:3;::::1;::::0;::::1;:::i;:::-;;;;44164:113;;;;44043:241:::0;;;:::o;15823:295::-;15954:4;3864:10;16012:38;16028:4;3864:10;16043:6;16012:15;:38::i;:::-;16061:27;16071:4;16077:2;16081:6;16061:9;:27::i;:::-;-1:-1:-1;16106:4:0;;15823:295;-1:-1:-1;;;;15823:295:0:o;16527:270::-;16642:4;3864:10;16703:64;3864:10;16719:7;16756:10;16728:25;3864:10;16719:7;16728:9;:25::i;:::-;:38;;;;:::i;:::-;16703:8;:64::i;41018:81::-;41066:25;41072:10;41084:6;41066:5;:25::i;:::-;41018:81;:::o;45154:336::-;5125:13;:11;:13::i;:::-;39070:9:::1;:16:::0;;-1:-1:-1;;;;39070:16:0::1;-1:-1:-1::0;;;39070:16:0::1;::::0;;45213:66:::2;45244:24;45262:4;-1:-1:-1::0;;;;;13951:18:0;13919:7;13951:18;;;;;;;;;;;;13800:177;45244:24:::2;45213:16;:66::i;:::-;45436:15;::::0;45428:54:::2;::::0;45313:21:::2;::::0;;;45292:18:::2;::::0;-1:-1:-1;;;;;45436:15:0::2;::::0;45313:21;;45292:18;45428:54;45292:18;45428:54;45313:21;45436:15;45428:54:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;39109:9:0::1;:17:::0;;-1:-1:-1;;;;39109:17:0::1;::::0;;-1:-1:-1;;;;45154:336:0:o;42193:504::-;5125:13;:11;:13::i;:::-;42383:4:::1;42362:13;13717:12:::0;;;13629:108;42362:13:::1;:17;::::0;42378:1:::1;42362:17;:::i;:::-;42361:26;;;;:::i;:::-;42342:14;:46;;42320:136;;;::::0;-1:-1:-1;;;42320:136:0;;6810:2:1;42320:136:0::1;::::0;::::1;6792:21:1::0;6849:2;6829:18;;;6822:30;6888:34;6868:18;;;6861:62;-1:-1:-1;;;6939:18:1;;;6932:38;6987:19;;42320:136:0::1;;;;;;;;;42525:4;42504:13;13717:12:::0;;;13629:108;42504:13:::1;:17;::::0;42520:1:::1;42504:17;:::i;:::-;42503:26;;;;:::i;:::-;42489:9;:41;;42467:134;;;::::0;-1:-1:-1;;;42467:134:0;;7219:2:1;42467:134:0::1;::::0;::::1;7201:21:1::0;7258:2;7238:18;;;7231:30;7297:34;7277:18;;;7270:62;-1:-1:-1;;;7348:18:1;;;7341:41;7399:19;;42467:134:0::1;7017:407:1::0;42467:134:0::1;42612:21;:38:::0;;;;42661:16:::1;:28:::0;42193:504::o;5880:103::-;5125:13;:11;:13::i;:::-;5945:30:::1;5972:1;5945:18;:30::i;:::-;5880:103::o:0;43155:168::-;5125:13;:11;:13::i;:::-;43224:7:::1;:18:::0;;;43272:2:::1;43261:13:::0;::::1;;43253:62;;;;-1:-1:-1::0;;;43253:62:0::1;;;;;;;:::i;42705:169::-:0;5125:13;:11;:13::i;:::-;-1:-1:-1;;;;;42819:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:47;;-1:-1:-1;;42819:47:0::1;::::0;::::1;;::::0;;;::::1;::::0;;42705:169::o;41438:230::-;5125:13;:11;:13::i;:::-;41521:8:::1;::::0;-1:-1:-1;;;41521:8:0;::::1;;;41520:9;41512:46;;;::::0;-1:-1:-1;;;41512:46:0;;8036:2:1;41512:46:0::1;::::0;::::1;8018:21:1::0;8075:2;8055:18;;;8048:30;8114:26;8094:18;;;8087:54;8158:18;;41512:46:0::1;7834:348:1::0;41512:46:0::1;41569:8;:15:::0;;-1:-1:-1;;;;41569:15:0::1;-1:-1:-1::0;;;41569:15:0::1;::::0;;41609:12:::1;41595:11;:26:::0;41645:15:::1;41632:10;:28:::0;41438:230::o;12719:104::-;12775:13;12808:7;12801:14;;;;;:::i;44292:374::-;5125:13;:11;:13::i;:::-;44383:9:::1;44378:281;44398:19:::0;;::::1;44378:281;;;44477:13;::::0;-1:-1:-1;;;;;44477:13:0::1;44462:8:::0;;44471:1;44462:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44462:28:0::1;;;44461:92;;;;;44536:15;-1:-1:-1::0;;;;;44513:39:0::1;:8;;44522:1;44513:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44513:39:0::1;;;44461:92;:143;;;;-1:-1:-1::0;44598:4:0::1;44575:8:::0;;44584:1;44575:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44575:28:0::1;;;44461:143;44439:208;;;44642:5;44620:6;:19;44627:8;;44636:1;44627:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44620:19:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;44620:19:0;:27;;-1:-1:-1;;44620:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;44439:208:::1;44419:3:::0;::::1;::::0;::::1;:::i;:::-;;;;44378:281;;17300:505:::0;17420:4;3864:10;17420:4;17508:25;3864:10;17525:7;17508:9;:25::i;:::-;17481:52;;17586:15;17566:16;:35;;17544:122;;;;-1:-1:-1;;;17544:122:0;;8389:2:1;17544:122:0;;;8371:21:1;8428:2;8408:18;;;8401:30;8467:34;8447:18;;;8440:62;-1:-1:-1;;;8518:18:1;;;8511:35;8563:19;;17544:122:0;8187:401:1;17544:122:0;17702:60;17711:5;17718:7;17746:15;17727:16;:34;17702:8;:60::i;14183:234::-;14298:4;3864:10;14359:28;3864:10;14376:2;14380:6;14359:9;:28::i;43545:309::-;5125:13;:11;:13::i;:::-;-1:-1:-1;;;;;43638:30:0;::::1;43630:59;;;::::0;-1:-1:-1;;;43630:59:0;;8795:2:1;43630:59:0::1;::::0;::::1;8777:21:1::0;8834:2;8814:18;;;8807:30;-1:-1:-1;;;8853:18:1;;;8846:46;8909:18;;43630:59:0::1;8593:340:1::0;43630:59:0::1;43720:15;::::0;;-1:-1:-1;;;;;43746:34:0;;::::1;-1:-1:-1::0;;;;;;43746:34:0;::::1;::::0;::::1;::::0;;;43796:50:::1;::::0;43720:15;::::1;::::0;;;43796:50:::1;::::0;43700:17:::1;::::0;43796:50:::1;43619:235;43545:309:::0;:::o;43862:173::-;5125:13;:11;:13::i;:::-;-1:-1:-1;;;;;43944:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:36;;-1:-1:-1;;43944:36:0::1;::::0;::::1;;::::0;;::::1;::::0;;;43996:31;;1163:41:1;;;43996:31:0::1;::::0;1136:18:1;43996:31:0::1;;;;;;;43862:173:::0;;:::o;41321:109::-;5125:13;:11;:13::i;:::-;41394:20:::1;:28:::0;;;::::1;;-1:-1:-1::0;;;41394:28:0::1;-1:-1:-1::0;;;;41394:28:0;;::::1;::::0;;;::::1;::::0;;41321:109::o;44674:472::-;5125:13;:11;:13::i;:::-;-1:-1:-1;;;;;44748:17:0;::::1;44744:395;;44823:86;::::0;44782:12:::1;::::0;44831:10:::1;::::0;44855:21:::1;::::0;44782:12;44823:86;44782:12;44823:86;44855:21;44831:10;44823:86:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;44744:395:0::1;::::0;-1:-1:-1;;;44744:395:0::1;;44950:36;::::0;-1:-1:-1;;;44950:36:0;;44980:4:::1;44950:36;::::0;::::1;2512:51:1::0;44989:1:0::1;::::0;-1:-1:-1;;;;;44950:21:0;::::1;::::0;::::1;::::0;2485:18:1;;44950:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;44942:62;;;::::0;-1:-1:-1;;;44942:62:0;;9329:2:1;44942:62:0::1;::::0;::::1;9311:21:1::0;9368:1;9348:18;;;9341:29;-1:-1:-1;;;9386:18:1;;;9379:39;9435:18;;44942:62:0::1;9127:332:1::0;44942:62:0::1;45036:36;::::0;-1:-1:-1;;;45036:36:0;;45066:4:::1;45036:36;::::0;::::1;2512:51:1::0;45019:14:0::1;::::0;-1:-1:-1;;;;;45036:21:0;::::1;::::0;::::1;::::0;2485:18:1;;45036:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45087:40;::::0;-1:-1:-1;;;45087:40:0;;45108:10:::1;45087:40;::::0;::::1;9638:51:1::0;9705:18;;;9698:34;;;45019:53:0;;-1:-1:-1;;;;;;45087:20:0;::::1;::::0;::::1;::::0;9611:18:1;;45087:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;44927:212;44674:472:::0;:::o;41676:509::-;41782:4;5125:13;:11;:13::i;:::-;41861:6:::1;41840:13;13717:12:::0;;;13629:108;41840:13:::1;:17;::::0;41856:1:::1;41840:17;:::i;:::-;41839:28;;;;:::i;:::-;41826:9;:41;;41804:151;;;::::0;-1:-1:-1;;;41804:151:0;;10195:2:1;41804:151:0::1;::::0;::::1;10177:21:1::0;10234:2;10214:18;;;10207:30;10273:34;10253:18;;;10246:62;10344:30;10324:18;;;10317:58;10392:19;;41804:151:0::1;9993:424:1::0;41804:151:0::1;42023:4;42002:13;13717:12:::0;;;13629:108;42002:13:::1;:17;::::0;42018:1:::1;42002:17;:::i;:::-;42001:26;;;;:::i;:::-;41988:9;:39;;41966:148;;;::::0;-1:-1:-1;;;41966:148:0;;10624:2:1;41966:148:0::1;::::0;::::1;10606:21:1::0;10663:2;10643:18;;;10636:30;10702:34;10682:18;;;10675:62;10773:29;10753:18;;;10746:57;10820:19;;41966:148:0::1;10422:423:1::0;41966:148:0::1;-1:-1:-1::0;42125:18:0::1;:30:::0;42173:4:::1;::::0;41676:509::o;42882:265::-;5125:13;:11;:13::i;:::-;43020:9:::1;43015:125;43035:19:::0;;::::1;43015:125;;;43123:5;43076:31;:44;43108:8;;43117:1;43108:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;43076:44:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;43076:44:0;:52;;-1:-1:-1;;43076:52:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43056:3;::::1;::::0;::::1;:::i;:::-;;;;43015:125;;14480:201:::0;-1:-1:-1;;;;;14646:18:0;;;14614:7;14646:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14480:201::o;41107:91::-;5125:13;:11;:13::i;:::-;41171:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;41171:19:0::1;-1:-1:-1::0;;;;41171:19:0;;::::1;::::0;;;::::1;::::0;;41107:91::o;43331:206::-;5125:13;:11;:13::i;:::-;43402:8:::1;:20:::0;;;43433:11:::1;:22:::0;;;43486:2:::1;43474:14:::0;::::1;;43466:63;;;;-1:-1:-1::0;;;43466:63:0::1;;;;;;;:::i;6138:238::-:0;5125:13;:11;:13::i;:::-;-1:-1:-1;;;;;6241:22:0;::::1;6219:110;;;::::0;-1:-1:-1;;;6219:110:0;;11052:2:1;6219:110:0::1;::::0;::::1;11034:21:1::0;11091:2;11071:18;;;11064:30;11130:34;11110:18;;;11103:62;-1:-1:-1;;;11181:18:1;;;11174:36;11227:19;;6219:110:0::1;10850:402:1::0;6219:110:0::1;6340:28;6359:8;6340:18;:28::i;21433:380::-:0;-1:-1:-1;;;;;21569:19:0;;21561:68;;;;-1:-1:-1;;;21561:68:0;;11459:2:1;21561:68:0;;;11441:21:1;11498:2;11478:18;;;11471:30;11537:34;11517:18;;;11510:62;-1:-1:-1;;;11588:18:1;;;11581:34;11632:19;;21561:68:0;11257:400:1;21561:68:0;-1:-1:-1;;;;;21648:21:0;;21640:68;;;;-1:-1:-1;;;21640:68:0;;11864:2:1;21640:68:0;;;11846:21:1;11903:2;11883:18;;;11876:30;11942:34;11922:18;;;11915:62;-1:-1:-1;;;11993:18:1;;;11986:32;12035:19;;21640:68:0;11662:398:1;21640:68:0;-1:-1:-1;;;;;21721:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21773:32;;2720:25:1;;;21773:32:0;;2693:18:1;21773:32:0;;;;;;;21433:380;;;:::o;5404:132::-;5312:6;;-1:-1:-1;;;;;5312:6:0;3864:10;5468:23;5460:68;;;;-1:-1:-1;;;5460:68:0;;12267:2:1;5460:68:0;;;12249:21:1;;;12286:18;;;12279:30;12345:34;12325:18;;;12318:62;12397:18;;5460:68:0;12065:356:1;22104:502:0;22239:24;22266:25;22276:5;22283:7;22266:9;:25::i;:::-;22239:52;;-1:-1:-1;;22306:16:0;:37;22302:297;;22406:6;22386:16;:26;;22360:117;;;;-1:-1:-1;;;22360:117:0;;12628:2:1;22360:117:0;;;12610:21:1;12667:2;12647:18;;;12640:30;12706:31;12686:18;;;12679:59;12755:18;;22360:117:0;12426:353:1;22360:117:0;22521:51;22530:5;22537:7;22565:6;22546:16;:25;22521:8;:51::i;45860:5672::-;-1:-1:-1;;;;;45992:18:0;;45984:68;;;;-1:-1:-1;;;45984:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;46071:16:0;;46063:64;;;;-1:-1:-1;;;46063:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;46149:12:0;;;;;;:6;:12;;;;;;;;46148:13;46140:45;;;;-1:-1:-1;;;46140:45:0;;;;;;;:::i;:::-;46212:10;46205:18;;;;:6;:18;;;;;;;;46204:19;46196:51;;;;-1:-1:-1;;;46196:51:0;;;;;;;:::i;:::-;46274:9;46267:17;;;;:6;:17;;;;;;;;46266:18;46258:50;;;;-1:-1:-1;;;46258:50:0;;;;;;;:::i;:::-;46325:6;46335:1;46325:11;46321:93;;46353:28;46369:4;46375:2;46379:1;46353:15;:28::i;46321:93::-;5312:6;;-1:-1:-1;;;;;46444:15:0;;;5312:6;;46444:15;;;;:45;;-1:-1:-1;5312:6:0;;-1:-1:-1;;;;;46476:13:0;;;5312:6;;46476:13;;46444:45;:78;;;;-1:-1:-1;;;;;;46506:16:0;;;;46444:78;:112;;;;-1:-1:-1;;;;;;46539:17:0;;37987:6;46539:17;;46444:112;:139;;;;-1:-1:-1;46574:9:0;;-1:-1:-1;;;46574:9:0;;;;46573:10;46444:139;46426:2483;;;46683:20;;46610:22;;;;-1:-1:-1;;;46683:20:0;;;;46679:1136;;;46746:10;;:25;;46760:10;46746:25;:::i;:::-;46728:15;:43;46724:950;;;13717:12;;;-1:-1:-1;13717:12:0;46861:13;46849:25;;46679:1136;;46724:950;46922:10;;:24;;46936:9;46922:24;:::i;:::-;46904:15;:42;46900:774;;;47013:5;46989:13;13717:12;;;13629:108;46989:13;:20;;47005:4;46989:20;:::i;:::-;46988:30;;;;:::i;:::-;46971:47;;47078:5;47054:13;13717:12;;;13629:108;47054:13;:20;;47070:4;47054:20;:::i;:::-;47053:30;;;;:::i;46900:774::-;47131:10;;:24;;47145:9;47131:24;:::i;:::-;47113:15;:42;47109:565;;;47221:5;47198:13;13717:12;;;13629:108;47198:13;:19;;47214:3;47198:19;:::i;:::-;47197:29;;;;:::i;:::-;47180:46;;47285:5;47262:13;13717:12;;;13629:108;47262:13;:19;;47278:3;47262:19;:::i;47109:565::-;47338:10;;:24;;47352:9;47338:24;:::i;:::-;47320:15;:42;47316:358;;;47428:5;47405:13;13717:12;;;13629:108;47405:13;:19;;47421:3;47405:19;:::i;:::-;47404:29;;;;:::i;:::-;47387:46;;47492:5;47469:13;13717:12;;;13629:108;47469:13;:19;;47485:3;47469:19;:::i;47316:358::-;47586:5;47564:13;13717:12;;;13629:108;47564:13;:18;;47580:2;47564:18;:::i;:::-;47563:28;;;;:::i;:::-;47546:45;;47649:5;47627:13;13717:12;;;13629:108;47627:13;:18;;47643:2;47627:18;:::i;46679:1136::-;-1:-1:-1;;47731:21:0;;47783:16;;46679:1136;-1:-1:-1;;;;;47877:31:0;;;;;;:25;:31;;;;;;;;:88;;;;-1:-1:-1;;;;;;47930:35:0;;;;;;:31;:35;;;;;;;;47929:36;47877:88;47855:1043;;;48040:14;48030:6;:24;;48000:152;;;;-1:-1:-1;;;48000:152:0;;14144:2:1;48000:152:0;;;14126:21:1;14183:2;14163:18;;;14156:30;14222:34;14202:18;;;14195:62;-1:-1:-1;;;14273:18:1;;;14266:52;14335:19;;48000:152:0;13942:418:1;48000:152:0;48227:9;48210:13;48220:2;-1:-1:-1;;;;;13951:18:0;13919:7;13951:18;;;;;;;;;;;;13800:177;48210:13;48201:22;;:6;:22;:::i;:::-;:35;;48171:135;;;;-1:-1:-1;;;48171:135:0;;14567:2:1;48171:135:0;;;14549:21:1;14606:2;14586:18;;;14579:30;14645:28;14625:18;;;14618:56;14691:18;;48171:135:0;14365:350:1;48171:135:0;47855:1043;;;-1:-1:-1;;;;;48388:29:0;;;;;;:25;:29;;;;;;;;:88;;;;-1:-1:-1;;;;;;48439:37:0;;;;;;:31;:37;;;;;;;;48438:38;48388:88;48366:532;;;48551:14;48541:6;:24;;48511:153;;;;-1:-1:-1;;;48511:153:0;;14922:2:1;48511:153:0;;;14904:21:1;14961:2;14941:18;;;14934:30;15000:34;14980:18;;;14973:62;15071:25;15051:18;;;15044:53;15114:19;;48511:153:0;14720:419:1;48366:532:0;-1:-1:-1;;;;;48691:35:0;;;;;;:31;:35;;;;;;;;48686:212;;48803:9;48786:13;48796:2;-1:-1:-1;;;;;13951:18:0;13919:7;13951:18;;;;;;;;;;;;13800:177;48786:13;48777:22;;:6;:22;:::i;:::-;:35;;48747:135;;;;-1:-1:-1;;;48747:135:0;;14567:2:1;48747:135:0;;;14549:21:1;14606:2;14586:18;;;14579:30;14645:28;14625:18;;;14618:56;14691:18;;48747:135:0;14365:350:1;48747:135:0;46595:2314;;46426:2483;48970:4;48921:28;13951:18;;;;;;;;;;;49028;;49004:42;;;;;;;49077:35;;-1:-1:-1;49101:11:0;;-1:-1:-1;;;49101:11:0;;;;49077:35;:62;;;;-1:-1:-1;49130:9:0;;-1:-1:-1;;;49130:9:0;;;;49129:10;49077:62;:111;;;;-1:-1:-1;;;;;;49157:31:0;;;;;;:25;:31;;;;;;;;49156:32;49077:111;:154;;;;-1:-1:-1;;;;;;49206:25:0;;;;;;:19;:25;;;;;;;;49205:26;49077:154;:195;;;;-1:-1:-1;;;;;;49249:23:0;;;;;;:19;:23;;;;;;;;49248:24;49077:195;49059:282;;;49299:30;49308:20;49299:8;:30::i;:::-;49369:9;;-1:-1:-1;;;;;49395:25:0;;49353:12;49395:25;;;:19;:25;;;;;;49369:9;-1:-1:-1;;;49369:9:0;;;;;49368:10;;49395:25;;:52;;-1:-1:-1;;;;;;49424:23:0;;;;;;:19;:23;;;;;;;;49395:52;49391:100;;;-1:-1:-1;49474:5:0;49391:100;49503:12;49530:17;49568:7;49564:1882;;;-1:-1:-1;;;;;49620:29:0;;;;;;:25;:29;;;;;;;;:45;;;;;49664:1;49653:8;;:12;49620:45;49616:1681;;;49690:19;;-1:-1:-1;;;49690:19:0;;;;49686:679;;;49756:10;;:21;;49770:6;49756:21;:::i;:::-;49738:15;:39;49734:543;;;-1:-1:-1;49818:8:0;;49686:679;;49734:543;49878:10;;:24;;49892:9;49878:24;:::i;:::-;49860:15;:42;49856:421;;;-1:-1:-1;49943:1:0;49686:679;;49856:421;49996:10;;:24;;50010:9;49996:24;:::i;:::-;49978:15;:42;49974:303;;;-1:-1:-1;50061:2:0;49686:679;;49974:303;50115:10;;:24;;50129:9;50115:24;:::i;:::-;50097:15;:42;50093:184;;;-1:-1:-1;50180:2:0;49686:679;;50093:184;-1:-1:-1;50251:2:0;49686:679;;;-1:-1:-1;50337:8:0;;49686:679;50390:30;50416:3;50390:21;:6;50401:9;50390:10;:21::i;:::-;:25;;:30::i;:::-;50383:37;;49616:1681;;;-1:-1:-1;;;;;50482:31:0;;;;;;:25;:31;;;;;;;;:46;;;;;50527:1;50517:7;;:11;50482:46;50478:819;;;50553:19;;-1:-1:-1;;;50553:19:0;;;;50549:677;;;50619:10;;:21;;50633:6;50619:21;:::i;:::-;50601:15;:39;50597:542;;;-1:-1:-1;50681:7:0;;50549:677;;50597:542;50740:10;;:24;;50754:9;50740:24;:::i;:::-;50722:15;:42;50718:421;;;-1:-1:-1;50805:1:0;50549:677;;50718:421;50858:10;;:24;;50872:9;50858:24;:::i;:::-;50840:15;:42;50836:303;;;-1:-1:-1;50923:2:0;50549:677;;50836:303;50977:10;;:24;;50991:9;50977:24;:::i;:::-;50959:15;:42;50955:184;;;-1:-1:-1;51042:2:0;50549:677;;50955:184;-1:-1:-1;51113:2:0;50549:677;;;-1:-1:-1;51199:7:0;;50549:677;51251:30;51277:3;51251:21;:6;51262:9;51251:10;:21::i;:30::-;51244:37;;50478:819;51317:8;;51313:91;;51346:42;51362:4;51376;51383;51346:15;:42::i;:::-;51420:14;51430:4;51420:14;;:::i;:::-;;;49564:1882;51458:33;51474:4;51480:2;51484:6;51458:15;:33::i;:::-;-1:-1:-1;;51513:11:0;;51502:8;:22;-1:-1:-1;;;;;;45860:5672:0:o;20320:675::-;-1:-1:-1;;;;;20404:21:0;;20396:67;;;;-1:-1:-1;;;20396:67:0;;15479:2:1;20396:67:0;;;15461:21:1;15518:2;15498:18;;;15491:30;15557:34;15537:18;;;15530:62;-1:-1:-1;;;15608:18:1;;;15601:31;15649:19;;20396:67:0;15277:397:1;20396:67:0;-1:-1:-1;;;;;20563:18:0;;20538:22;20563:18;;;;;;;;;;;20600:24;;;;20592:71;;;;-1:-1:-1;;;20592:71:0;;15881:2:1;20592:71:0;;;15863:21:1;15920:2;15900:18;;;15893:30;15959:34;15939:18;;;15932:62;-1:-1:-1;;;16010:18:1;;;16003:32;16052:19;;20592:71:0;15679:398:1;20592:71:0;-1:-1:-1;;;;;20699:18:0;;:9;:18;;;;;;;;;;;20720:23;;;20699:44;;20838:12;:22;;;;;;;20889:37;2720:25:1;;;20699:9:0;;:18;20889:37;;2693:18:1;20889:37:0;;;;;;;45087:40:::1;44927:212;44674:472:::0;:::o;51540:510::-;51639:16;;;51653:1;51639:16;;;;;;;;51615:21;;51639:16;;;;;;;;;;-1:-1:-1;51639:16:0;51615:40;;51684:4;51666;51671:1;51666:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;51666:23:0;;;-1:-1:-1;;;;;51666:23:0;;;;;51710:15;-1:-1:-1;;;;;51710:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51700:4;51705:1;51700:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;51700:32:0;;;-1:-1:-1;;;;;51700:32:0;;;;;51745:62;51762:4;51777:15;51795:11;51745:8;:62::i;:::-;51846:196;;-1:-1:-1;;;51846:196:0;;-1:-1:-1;;;;;51846:15:0;:66;;;;:196;;51927:11;;51953:1;;51969:4;;51996;;52016:15;;51846:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51604:446;51540:510;:::o;6536:191::-;6629:6;;;-1:-1:-1;;;;;6646:17:0;;;-1:-1:-1;;;;;;6646:17:0;;;;;;;6679:40;;6629:6;;;6646:17;6629:6;;6679:40;;6610:16;;6679:40;6599:128;6536:191;:::o;18275:877::-;-1:-1:-1;;;;;18406:18:0;;18398:68;;;;-1:-1:-1;;;18398:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18485:16:0;;18477:64;;;;-1:-1:-1;;;18477:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18627:15:0;;18605:19;18627:15;;;;;;;;;;;18675:21;;;;18653:109;;;;-1:-1:-1;;;18653:109:0;;17657:2:1;18653:109:0;;;17639:21:1;17696:2;17676:18;;;17669:30;17735:34;17715:18;;;17708:62;-1:-1:-1;;;17786:18:1;;;17779:36;17832:19;;18653:109:0;17455:402:1;18653:109:0;-1:-1:-1;;;;;18798:15:0;;;:9;:15;;;;;;;;;;;18816:20;;;18798:38;;19016:13;;;;;;;;;;:23;;;;;;19068:26;;2720:25:1;;;19016:13:0;;19068:26;;2693:18:1;19068:26:0;;;;;;;19107:37;44674:472;52058:577;39070:9;:16;;-1:-1:-1;;;;39070:16:0;-1:-1:-1;;;39070:16:0;;;;52208:25;;;52204:64:::1;;52250:7;;;52204:64;52307:18;;52284:20;:41;52280:115;;;52365:18;;52342:41;;52280:115;52407:38;52424:20;52407:16;:38::i;:::-;52579:15;::::0;52571:54:::1;::::0;52479:21:::1;::::0;;;-1:-1:-1;;;;;52579:15:0;;::::1;::::0;52479:21;;52571:54:::1;::::0;;;52479:21;52579:15;52571:54:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;39097:1:0::1;-1:-1:-1::0;39109:9:0;:17;;-1:-1:-1;;;;39109:17:0;;;52058:577::o;27781:98::-;27839:7;27866:5;27870:1;27866;:5;:::i;:::-;27859:12;27781:98;-1:-1:-1;;;27781:98:0:o;28180:::-;28238:7;28265:5;28269:1;28265;:5;:::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:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:241;1394:6;1447:2;1435:9;1426:7;1422:23;1418:32;1415:52;;;1463:1;1460;1453:12;1415:52;1502:9;1489:23;1521:28;1543:5;1521:28;:::i;1584:750::-;1676:6;1684;1692;1745:2;1733:9;1724:7;1720:23;1716:32;1713:52;;;1761:1;1758;1751:12;1713:52;1801:9;1788:23;1830:18;1871:2;1863:6;1860:14;1857:34;;;1887:1;1884;1877:12;1857:34;1925:6;1914:9;1910:22;1900:32;;1970:7;1963:4;1959:2;1955:13;1951:27;1941:55;;1992:1;1989;1982:12;1941:55;2032:2;2019:16;2058:2;2050:6;2047:14;2044:34;;;2074:1;2071;2064:12;2044:34;2129:7;2122:4;2112:6;2109:1;2105:14;2101:2;2097:23;2093:34;2090:47;2087:67;;;2150:1;2147;2140:12;2087:67;2181:4;2173:13;;;;-1:-1:-1;2205:6:1;-1:-1:-1;;2246:20:1;;2233:34;2276:28;2233:34;2276:28;:::i;:::-;2323:5;2313:15;;;1584:750;;;;;:::o;2756:456::-;2833:6;2841;2849;2902:2;2890:9;2881:7;2877:23;2873:32;2870:52;;;2918:1;2915;2908:12;2870:52;2957:9;2944:23;2976:31;3001:5;2976:31;:::i;:::-;3026:5;-1:-1:-1;3083:2:1;3068:18;;3055:32;3096:33;3055:32;3096:33;:::i;:::-;2756:456;;3148:7;;-1:-1:-1;;;3202:2:1;3187:18;;;;3174:32;;2756:456::o;3614:180::-;3673:6;3726:2;3714:9;3705:7;3701:23;3697:32;3694:52;;;3742:1;3739;3732:12;3694:52;-1:-1:-1;3765:23:1;;3614:180;-1:-1:-1;3614:180:1:o;3799:247::-;3858:6;3911:2;3899:9;3890:7;3886:23;3882:32;3879:52;;;3927:1;3924;3917:12;3879:52;3966:9;3953:23;3985:31;4010:5;3985:31;:::i;4051:248::-;4119:6;4127;4180:2;4168:9;4159:7;4155:23;4151:32;4148:52;;;4196:1;4193;4186:12;4148:52;-1:-1:-1;;4219:23:1;;;4289:2;4274:18;;;4261:32;;-1:-1:-1;4051:248:1:o;4304:382::-;4369:6;4377;4430:2;4418:9;4409:7;4405:23;4401:32;4398:52;;;4446:1;4443;4436:12;4398:52;4485:9;4472:23;4504:31;4529:5;4504:31;:::i;:::-;4554:5;-1:-1:-1;4611:2:1;4596:18;;4583:32;4624:30;4583:32;4624:30;:::i;:::-;4673:7;4663:17;;;4304:382;;;;;:::o;4691:388::-;4759:6;4767;4820:2;4808:9;4799:7;4795:23;4791:32;4788:52;;;4836:1;4833;4826:12;4788:52;4875:9;4862:23;4894:31;4919:5;4894:31;:::i;:::-;4944:5;-1:-1:-1;5001:2:1;4986:18;;4973:32;5014:33;4973:32;5014:33;:::i;5084:380::-;5163:1;5159:12;;;;5206;;;5227:61;;5281:4;5273:6;5269:17;5259:27;;5227:61;5334:2;5326:6;5323:14;5303:18;5300:38;5297:161;;5380:10;5375:3;5371:20;5368:1;5361:31;5415:4;5412:1;5405:15;5443:4;5440:1;5433:15;5297:161;;5084:380;;;:::o;5469:127::-;5530:10;5525:3;5521:20;5518:1;5511:31;5561:4;5558:1;5551:15;5585:4;5582:1;5575:15;5601:127;5662:10;5657:3;5653:20;5650:1;5643:31;5693:4;5690:1;5683:15;5717:4;5714:1;5707:15;5733:135;5772:3;5793:17;;;5790:43;;5813:18;;:::i;:::-;-1:-1:-1;5860:1:1;5849:13;;5733:135::o;5873:125::-;5938:9;;;5959:10;;;5956:36;;;5972:18;;:::i;6213:168::-;6286:9;;;6317;;6334:15;;;6328:22;;6314:37;6304:71;;6355:18;;:::i;6386:217::-;6426:1;6452;6442:132;;6496:10;6491:3;6487:20;6484:1;6477:31;6531:4;6528:1;6521:15;6559:4;6556:1;6549:15;6442:132;-1:-1:-1;6588:9:1;;6386:217::o;7429:400::-;7631:2;7613:21;;;7670:2;7650:18;;;7643:30;7709:34;7704:2;7689:18;;7682:62;-1:-1:-1;;;7775:2:1;7760:18;;7753:34;7819:3;7804:19;;7429:400::o;8938:184::-;9008:6;9061:2;9049:9;9040:7;9036:23;9032:32;9029:52;;;9077:1;9074;9067:12;9029:52;-1:-1:-1;9100:16:1;;8938:184;-1:-1:-1;8938:184:1:o;9743:245::-;9810:6;9863:2;9851:9;9842:7;9838:23;9834:32;9831:52;;;9879:1;9876;9869:12;9831:52;9911:9;9905:16;9930:28;9952:5;9930:28;:::i;12784:401::-;12986:2;12968:21;;;13025:2;13005:18;;;12998:30;13064:34;13059:2;13044:18;;13037:62;-1:-1:-1;;;13130:2:1;13115:18;;13108:35;13175:3;13160:19;;12784:401::o;13190:399::-;13392:2;13374:21;;;13431:2;13411:18;;;13404:30;13470:34;13465:2;13450:18;;13443:62;-1:-1:-1;;;13536:2:1;13521:18;;13514:33;13579:3;13564:19;;13190:399::o;13594:343::-;13796:2;13778:21;;;13835:2;13815:18;;;13808:30;-1:-1:-1;;;13869:2:1;13854:18;;13847:49;13928:2;13913:18;;13594:343::o;15144:128::-;15211:9;;;15232:11;;;15229:37;;;15246:18;;:::i;16214:251::-;16284:6;16337:2;16325:9;16316:7;16312:23;16308:32;16305:52;;;16353:1;16350;16343:12;16305:52;16385:9;16379:16;16404:31;16429:5;16404:31;:::i;16470:980::-;16732:4;16780:3;16769:9;16765:19;16811:6;16800:9;16793:25;16837:2;16875:6;16870:2;16859:9;16855:18;16848:34;16918:3;16913:2;16902:9;16898:18;16891:31;16942:6;16977;16971:13;17008:6;17000;16993:22;17046:3;17035:9;17031:19;17024:26;;17085:2;17077:6;17073:15;17059:29;;17106:1;17116:195;17130:6;17127:1;17124:13;17116:195;;;17195:13;;-1:-1:-1;;;;;17191:39:1;17179:52;;17286:15;;;;17251:12;;;;17227:1;17145:9;17116:195;;;-1:-1:-1;;;;;;;17367:32:1;;;;17362:2;17347:18;;17340:60;-1:-1:-1;;;17431:3:1;17416:19;17409:35;17328:3;16470:980;-1:-1:-1;;;16470:980:1:o
Swarm Source
ipfs://ef40d990ea70f47e3375518b0744b80a78c69871fb68027613c4ca646c4fa950
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.