ERC-20
Overview
Max Total Supply
100,000 VOLTAMA
Holders
1
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
100,000 VOLTAMAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
VOLTAMA
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-05-08 */ /** *Submitted for verification at BscScan.com on 2021-11-20 */ // Dependency file: @openzeppelin/contracts/token/ERC20/IERC20.sol // SPDX-License-Identifier: MIT // pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // Dependency file: @openzeppelin/contracts/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; } } // Dependency file: @openzeppelin/contracts/access/Ownable.sol // pragma solidity ^0.8.0; // import "@openzeppelin/contracts/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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // Dependency file: @openzeppelin/contracts/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 no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // Dependency file: @openzeppelin/contracts/utils/Address.sol // pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // Dependency file: contracts/interfaces/IUniswapV2Router02.sol // 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); } 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; } // Dependency file: contracts/interfaces/IUniswapV2Factory.sol // 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; } // Dependency file: contracts/BaseToken.sol // pragma solidity =0.8.4; enum TokenType { standard, antiBotStandard, liquidityGenerator, antiBotLiquidityGenerator, baby, antiBotBaby, buybackBaby, antiBotBuybackBaby } abstract contract BaseToken { event TokenCreated( address indexed owner, address indexed token, TokenType tokenType, uint256 version ); } // Root file: contracts/liquidity-generator/LiquidityGeneratorToken.sol pragma solidity =0.8.4; // import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; // import "@openzeppelin/contracts/access/Ownable.sol"; // import "@openzeppelin/contracts/utils/math/SafeMath.sol"; // import "@openzeppelin/contracts/utils/Address.sol"; // import "contracts/interfaces/IUniswapV2Router02.sol"; // import "contracts/interfaces/IUniswapV2Factory.sol"; // import "contracts/BaseToken.sol"; contract VOLTAMA is IERC20, Ownable, BaseToken { using SafeMath for uint256; using Address for address; uint256 public constant VERSION = 1; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; string private _name; string private _symbol; uint8 private _decimals; address private DEAD = 0x000000000000000000000000000000000000dEaD; uint256 public _taxFee; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _marketingFee; uint256 private _previousMarketingFee = _marketingFee; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public _marketingAddress; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled; uint256 private numTokensSellToAddToLiquidity; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor( string memory name_, string memory symbol_, uint256 totalSupply_, address router_, address marketingAddress_, uint16 taxFee_, uint16 liquidityFee_, uint16 marketingFee_, address serviceFeeReceiver_, uint256 serviceFee_ ) payable { require(taxFee_ >= 0, "Invalid tax fee"); require(liquidityFee_ >= 0, "Invalid liquidity fee"); require(marketingFee_ >= 0, "Invalid marketing fee"); if (marketingAddress_ == address(0)) { require( marketingFee_ == 0, "Cant set both marketing address to address 0 and marketing percent more than 0" ); } require( taxFee_ + liquidityFee_ + marketingFee_ <= 10**4 / 4, "Total fee is over 25%" ); _name = name_; _symbol = symbol_; _decimals = 9; _tTotal = totalSupply_; _rTotal = (MAX - (MAX % _tTotal)); _taxFee = taxFee_; _previousTaxFee = _taxFee; _liquidityFee = liquidityFee_; _previousLiquidityFee = _liquidityFee; _marketingAddress = marketingAddress_; _marketingFee = marketingFee_; _previousMarketingFee = _marketingFee; numTokensSellToAddToLiquidity = totalSupply_.mul(5).div(10**4); // 0.05% swapAndLiquifyEnabled = true; _rOwned[owner()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router_); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[marketingAddress_]=true; emit Transfer(address(0), owner(), _tTotal); emit TokenCreated( owner(), address(this), TokenType.liquidityGenerator, VERSION ); payable(serviceFeeReceiver_).transfer(serviceFee_); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require( !_isExcluded[sender], "Excluded addresses cannot call this function" ); (uint256 rAmount, , , , , , ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount, , , , , , ) = _getValues(tAmount); return rAmount; } else { (, uint256 rTransferAmount, , , , , ) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner { // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tmarketing ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takemarketingFee(tmarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFeeBps) external onlyOwner { _taxFee = taxFeeBps; require( _taxFee + _liquidityFee + _marketingFee <= 10**4 / 4, "Total fee is over 25%" ); } function setLiquidityFeePercent(uint256 liquidityFeeBps) external onlyOwner { _liquidityFee = liquidityFeeBps; require( _taxFee + _liquidityFee + _marketingFee <= 10**4 / 4, "Total fee is over 25%" ); } function setMarketingFeePercent(uint256 marketingFeeBps) external onlyOwner { _marketingFee = marketingFeeBps; require( _taxFee + _liquidityFee + _marketingFee <= 10**4 / 4, "Total fee is over 25%" ); } function setMarketingWallet(address newWallet) external onlyOwner() { _marketingAddress = newWallet; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256, uint256 ) { ( uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tmarketing ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tLiquidity, tmarketing, _getRate() ); return ( rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tmarketing ); } function _getTValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tmarketingFee = calculatemarketingFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub( tmarketingFee ); return (tTransferAmount, tFee, tLiquidity, tmarketingFee); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tmarketing, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rmarketing = tmarketing.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub( rmarketing ); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if ( _rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply ) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function _takemarketingFee(uint256 tmarketing) private { if (tmarketing > 0) { uint256 currentRate = _getRate(); uint256 rmarketing = tmarketing.mul(currentRate); _rOwned[_marketingAddress] = _rOwned[_marketingAddress].add(rmarketing); if (_isExcluded[_marketingAddress]) _tOwned[_marketingAddress] = _tOwned[_marketingAddress].add( tmarketing ); emit Transfer(_msgSender(), _marketingAddress, tmarketing); } } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div(10**4); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div(10**4); } function calculatemarketingFee(uint256 _amount) private view returns (uint256) { if (_marketingAddress == address(0)) return 0; return _amount.mul(_marketingFee).div(10**4); } function removeAllFee() private { if (_taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _previousMarketingFee = _marketingFee; _taxFee = 0; _liquidityFee = 0; _marketingFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; _marketingFee = _previousMarketingFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve( address owner, address spender, uint256 amount ) private { 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); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable DEAD, block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tmarketing ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takemarketingFee(tmarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tmarketing ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takemarketingFee(tmarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tmarketing ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takemarketingFee(tmarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"address","name":"router_","type":"address"},{"internalType":"address","name":"marketingAddress_","type":"address"},{"internalType":"uint16","name":"taxFee_","type":"uint16"},{"internalType":"uint16","name":"liquidityFee_","type":"uint16"},{"internalType":"uint16","name":"marketingFee_","type":"uint16"},{"internalType":"address","name":"serviceFeeReceiver_","type":"address"},{"internalType":"uint256","name":"serviceFee_","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"version","type":"uint256"}],"name":"TokenCreated","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"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFeeBps","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFeeBps","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeBps","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040819052600c8054610100600160a81b03191662dead00179055600d54600e55600f5460105560115460125562003031388190039081908339810160408190526200004d91620007d7565b6200005833620005be565b62000067565b60405180910390fd5b6001600160a01b038616620001075761ffff831615620001075760405162461bcd60e51b815260206004820152604e60248201527f43616e742073657420626f7468206d61726b6574696e6720616464726573732060448201527f746f2061646472657373203020616e64206d61726b6574696e6720706572636560648201526d06e74206d6f7265207468616e20360941b608482015260a4016200005e565b6109c483620001178688620008f0565b620001239190620008f0565b61ffff161115620001775760405162461bcd60e51b815260206004820152601560248201527f546f74616c20666565206973206f76657220323525000000000000000000000060448201526064016200005e565b89516200018c90600a9060208d019062000631565b508851620001a290600b9060208c019062000631565b50600c805460ff191660091790556007889055620001c388600019620009a9565b620001d19060001962000952565b60085561ffff858116600d819055600e55848116600f819055601055601580546001600160a01b0319166001600160a01b0389161790558316601181905560125562000246612710620002328a60056200060e602090811b620011bf17901c565b6200062360201b620011cb1790919060201c565b6016556015805460ff60a81b1916600160a81b17905560085460016000620002766000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000879050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d957600080fd5b505afa158015620002ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003149190620007ba565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035d57600080fd5b505afa15801562000372573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003989190620007ba565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003e157600080fd5b505af1158015620003f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041c9190620007ba565b601480546001600160a01b03199081166001600160a01b039384161790915560138054909116918316919091179055600160046000620004646000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526004909352818320805485166001908117909155908b16835291208054909216179055620004cb6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040516200051391815260200190565b60405180910390a3306200052f6000546001600160a01b031690565b6001600160a01b03167f56358b41df5fa59f5639228f0930994cbdde383c8a8fd74e06c04e1deebe3562600260016040516200056d929190620008c3565b60405180910390a36040516001600160a01b0384169083156108fc029084906000818181858888f19350505050158015620005ac573d6000803e3d6000fd5b50505050505050505050505062000a02565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006200061c828462000930565b9392505050565b60006200061c828462000919565b8280546200063f906200096c565b90600052602060002090601f016020900481019282620006635760008555620006ae565b82601f106200067e57805160ff1916838001178555620006ae565b82800160010185558215620006ae579182015b82811115620006ae57825182559160200191906001019062000691565b50620006bc929150620006c0565b5090565b5b80821115620006bc5760008155600101620006c1565b80516001600160a01b0381168114620006ef57600080fd5b919050565b600082601f83011262000705578081fd5b81516001600160401b0380821115620007225762000722620009ec565b604051601f8301601f19908116603f011681019082821181831017156200074d576200074d620009ec565b8160405283815260209250868385880101111562000769578485fd5b8491505b838210156200078c57858201830151818301840152908201906200076d565b838211156200079d57848385830101525b9695505050505050565b805161ffff81168114620006ef57600080fd5b600060208284031215620007cc578081fd5b6200061c82620006d7565b6000806000806000806000806000806101408b8d031215620007f7578586fd5b8a516001600160401b03808211156200080e578788fd5b6200081c8e838f01620006f4565b9b5060208d015191508082111562000832578788fd5b50620008418d828e01620006f4565b99505060408b015197506200085960608c01620006d7565b96506200086960808c01620006d7565b95506200087960a08c01620007a7565b94506200088960c08c01620007a7565b93506200089960e08c01620007a7565b9250620008aa6101008c01620006d7565b91506101208b015190509295989b9194979a5092959850565b6040810160088410620008e657634e487b7160e01b600052602160045260246000fd5b9281526020015290565b600061ffff808316818516808303821115620009105762000910620009c0565b01949350505050565b6000826200092b576200092b620009d6565b500490565b60008160001904831182151516156200094d576200094d620009c0565b500290565b600082821015620009675762000967620009c0565b500390565b600181811c908216806200098157607f821691505b60208210811415620009a357634e487b7160e01b600052602260045260246000fd5b50919050565b600082620009bb57620009bb620009d6565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61261f8062000a126000396000f3fe60806040526004361061021e5760003560e01c80634a74bb02116101235780638ee88c53116100ab578063caac79341161006f578063caac793414610652578063dd62ed3e14610672578063ea2f0b37146106b8578063f2fde38b146106d8578063ffa1ad74146106f857600080fd5b80638ee88c53146105bd57806395d89b41146105dd578063a457c2d7146105f2578063a9059cbb14610612578063c49b9a801461063257600080fd5b80636bc87c3a116100f25780636bc87c3a1461051b57806370a0823114610531578063715018a61461055157806388f82020146105665780638da5cb5b1461059f57600080fd5b80634a74bb021461048157806352390c02146104a25780635342acb4146104c25780635d098b38146104fb57600080fd5b8063313ce567116101a65780633bd5d173116101755780633bd5d173146103e1578063437823ec146104015780634549b03914610421578063457c194c1461044157806349bd5a5e1461046157600080fd5b8063313ce567146103695780633685d4191461038b57806339509351146103ab5780633b124fe7146103cb57600080fd5b80631694505e116101ed5780631694505e146102c657806318160ddd146102fe57806322976e0d1461031357806323b872dd146103295780632d8381191461034957600080fd5b8063061c82d01461022a57806306fdde031461024c578063095ea7b31461027757806313114a9d146102a757600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024a610245366004612345565b61070d565b005b34801561025857600080fd5b506102616107ad565b60405161026e91906123b5565b60405180910390f35b34801561028357600080fd5b50610297610292366004612300565b61083f565b604051901515815260200161026e565b3480156102b357600080fd5b506009545b60405190815260200161026e565b3480156102d257600080fd5b506013546102e6906001600160a01b031681565b6040516001600160a01b03909116815260200161026e565b34801561030a57600080fd5b506007546102b8565b34801561031f57600080fd5b506102b860115481565b34801561033557600080fd5b506102976103443660046122c0565b610856565b34801561035557600080fd5b506102b8610364366004612345565b6108bf565b34801561037557600080fd5b50600c5460405160ff909116815260200161026e565b34801561039757600080fd5b5061024a6103a6366004612250565b610943565b3480156103b757600080fd5b506102976103c6366004612300565b610b32565b3480156103d757600080fd5b506102b8600d5481565b3480156103ed57600080fd5b5061024a6103fc366004612345565b610b68565b34801561040d57600080fd5b5061024a61041c366004612250565b610c54565b34801561042d57600080fd5b506102b861043c36600461235d565b610ca2565b34801561044d57600080fd5b5061024a61045c366004612345565b610d31565b34801561046d57600080fd5b506014546102e6906001600160a01b031681565b34801561048d57600080fd5b5060155461029790600160a81b900460ff1681565b3480156104ae57600080fd5b5061024a6104bd366004612250565b610d76565b3480156104ce57600080fd5b506102976104dd366004612250565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561050757600080fd5b5061024a610516366004612250565b610ec9565b34801561052757600080fd5b506102b8600f5481565b34801561053d57600080fd5b506102b861054c366004612250565b610f15565b34801561055d57600080fd5b5061024a610f74565b34801561057257600080fd5b50610297610581366004612250565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105ab57600080fd5b506000546001600160a01b03166102e6565b3480156105c957600080fd5b5061024a6105d8366004612345565b610faa565b3480156105e957600080fd5b50610261610fef565b3480156105fe57600080fd5b5061029761060d366004612300565b610ffe565b34801561061e57600080fd5b5061029761062d366004612300565b61104d565b34801561063e57600080fd5b5061024a61064d36600461232b565b61105a565b34801561065e57600080fd5b506015546102e6906001600160a01b031681565b34801561067e57600080fd5b506102b861068d366004612288565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156106c457600080fd5b5061024a6106d3366004612250565b6110dc565b3480156106e457600080fd5b5061024a6106f3366004612250565b611127565b34801561070457600080fd5b506102b8600181565b6000546001600160a01b031633146107405760405162461bcd60e51b815260040161073790612408565b60405180910390fd5b600d819055601154600f546109c4919061075a90846124ad565b61076491906124ad565b11156107aa5760405162461bcd60e51b8152602060048201526015602482015274546f74616c20666565206973206f7665722032352560581b6044820152606401610737565b50565b6060600a80546107bc9061251b565b80601f01602080910402602001604051908101604052809291908181526020018280546107e89061251b565b80156108355780601f1061080a57610100808354040283529160200191610835565b820191906000526020600020905b81548152906001019060200180831161081857829003601f168201915b5050505050905090565b600061084c3384846111d7565b5060015b92915050565b60006108638484846112fc565b6108b584336108b08560405180606001604052806028815260200161259d602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906114f1565b6111d7565b5060019392505050565b60006008548211156109265760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610737565b600061093061151d565b905061093c83826111cb565b9392505050565b6000546001600160a01b0316331461096d5760405162461bcd60e51b815260040161073790612408565b6001600160a01b03811660009081526005602052604090205460ff166109d55760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610737565b60005b600654811015610b2e57816001600160a01b031660068281548110610a0d57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610b1c5760068054610a3890600190612504565b81548110610a5657634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b039092169183908110610a9057634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610af657634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610b2681612556565b9150506109d8565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161084c9185906108b09086611540565b3360008181526005602052604090205460ff1615610bdd5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610737565b6000610be88361154c565b5050506001600160a01b038616600090815260016020526040902054939450610c16939250849150506115a7565b6001600160a01b038316600090815260016020526040902055600854610c3c90826115a7565b600855600954610c4c9084611540565b600955505050565b6000546001600160a01b03163314610c7e5760405162461bcd60e51b815260040161073790612408565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600754831115610cf65760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610737565b81610d16576000610d068461154c565b5094965061085095505050505050565b6000610d218461154c565b5093965061085095505050505050565b6000546001600160a01b03163314610d5b5760405162461bcd60e51b815260040161073790612408565b6011819055600f54600d546109c491839161075a91906124ad565b6000546001600160a01b03163314610da05760405162461bcd60e51b815260040161073790612408565b6001600160a01b03811660009081526005602052604090205460ff1615610e095760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610737565b6001600160a01b03811660009081526001602052604090205415610e63576001600160a01b038116600090815260016020526040902054610e49906108bf565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314610ef35760405162461bcd60e51b815260040161073790612408565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610f5257506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610850906108bf565b6000546001600160a01b03163314610f9e5760405162461bcd60e51b815260040161073790612408565b610fa860006115b3565b565b6000546001600160a01b03163314610fd45760405162461bcd60e51b815260040161073790612408565b600f819055601154600d546109c4919061075a9084906124ad565b6060600b80546107bc9061251b565b600061084c33846108b0856040518060600160405280602581526020016125c5602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906114f1565b600061084c3384846112fc565b6000546001600160a01b031633146110845760405162461bcd60e51b815260040161073790612408565b60158054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906110d190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146111065760405162461bcd60e51b815260040161073790612408565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146111515760405162461bcd60e51b815260040161073790612408565b6001600160a01b0381166111b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610737565b6107aa816115b3565b600061093c82846124e5565b600061093c82846124c5565b6001600160a01b0383166112395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610737565b6001600160a01b03821661129a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610737565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610737565b6001600160a01b0382166113c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610737565b600081116114245760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610737565b600061142f30610f15565b601654909150811080159081906114505750601554600160a01b900460ff16155b801561146a57506014546001600160a01b03868116911614155b801561147f5750601554600160a81b900460ff165b1561149257601654915061149282611603565b6001600160a01b03851660009081526004602052604090205460019060ff16806114d457506001600160a01b03851660009081526004602052604090205460ff165b156114dd575060005b6114e9868686846116aa565b505050505050565b600081848411156115155760405162461bcd60e51b815260040161073791906123b5565b505050900390565b600080600061152a61182d565b909250905061153982826111cb565b9250505090565b600061093c82846124ad565b60008060008060008060008060008060006115668c6119e7565b935093509350935060008060006115878f87878761158261151d565b611a3c565b919f509d509b509599509397509195509350505050919395979092949650565b600061093c8284612504565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6015805460ff60a01b1916600160a01b17905560006116238260026111cb565b9050600061163183836115a7565b90504761163d83611a9e565b600061164947836115a7565b90506116558382611c1b565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506015805460ff60a01b19169055505050565b806116b7576116b7611ce3565b6001600160a01b03841660009081526005602052604090205460ff1680156116f857506001600160a01b03831660009081526005602052604090205460ff16155b1561170d57611708848484611d28565b61180b565b6001600160a01b03841660009081526005602052604090205460ff1615801561174e57506001600160a01b03831660009081526005602052604090205460ff165b1561175e57611708848484611e6e565b6001600160a01b03841660009081526005602052604090205460ff161580156117a057506001600160a01b03831660009081526005602052604090205460ff16155b156117b057611708848484611f2d565b6001600160a01b03841660009081526005602052604090205460ff1680156117f057506001600160a01b03831660009081526005602052604090205460ff165b1561180057611708848484611f87565b61180b848484611f2d565b8061182757611827600e54600d55601054600f55601254601155565b50505050565b6008546007546000918291825b6006548110156119b75782600160006006848154811061186a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806118e357508160026000600684815481106118bc57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156118f957600854600754945094505050509091565b61194d600160006006848154811061192157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906115a7565b92506119a3600260006006848154811061197757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906115a7565b9150806119af81612556565b91505061183a565b506007546008546119c7916111cb565b8210156119de576008546007549350935050509091565b90939092509050565b60008060008060006119f886612010565b90506000611a0587612033565b90506000611a1288612050565b90506000611a2c82611a2685818d896115a7565b906115a7565b9993985091965094509092505050565b6000808080611a4b89866111bf565b90506000611a5989876111bf565b90506000611a6789886111bf565b90506000611a7589896111bf565b90506000611a8982611a26858189896115a7565b949d949c50929a509298505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ae157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6d919061226c565b81600181518110611b8e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601354611bb491309116846111d7565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790611bed90859060009086903090429060040161243d565b600060405180830381600087803b158015611c0757600080fd5b505af11580156114e9573d6000803e3d6000fd5b601354611c339030906001600160a01b0316846111d7565b601354600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015611ca357600080fd5b505af1158015611cb7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cdc9190612388565b5050505050565b600d54158015611cf35750600f54155b8015611cff5750601154155b15611d0657565b600d8054600e55600f8054601055601180546012556000928390559082905555565b6000806000806000806000611d3c8861154c565b9650965096509650965096509650611d8288600260008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054611db190886115a7565b6001600160a01b03808c1660009081526001602052604080822093909355908b1681522054611de09087611540565b6001600160a01b038a16600090815260016020526040902055611e0282612086565b611e0b8161210f565b611e158584612217565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611e5a91815260200190565b60405180910390a350505050505050505050565b6000806000806000806000611e828861154c565b9650965096509650965096509650611ec887600160008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6001600160a01b03808c16600090815260016020908152604080832094909455918c16815260029091522054611efe9085611540565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054611de09087611540565b6000806000806000806000611f418861154c565b9650965096509650965096509650611db187600160008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6000806000806000806000611f9b8861154c565b9650965096509650965096509650611fe188600260008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054611ec890886115a7565b600061085061271061202d600d54856111bf90919063ffffffff16565b906111cb565b600061085061271061202d600f54856111bf90919063ffffffff16565b6015546000906001600160a01b031661206b57506000919050565b61085061271061202d601154856111bf90919063ffffffff16565b600061209061151d565b9050600061209e83836111bf565b306000908152600160205260409020549091506120bb9082611540565b3060009081526001602090815260408083209390935560059052205460ff161561210a57306000908152600260205260409020546120f99084611540565b306000908152600260205260409020555b505050565b80156107aa57600061211f61151d565b9050600061212d83836111bf565b6015546001600160a01b03166000908152600160205260409020549091506121559082611540565b601580546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff16156121d0576015546001600160a01b03166000908152600260205260409020546121b49084611540565b6015546001600160a01b03166000908152600260205260409020555b6015546001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516112ef91815260200190565b60085461222490836115a7565b6008556009546122349082611540565b6009555050565b8035801515811461224b57600080fd5b919050565b600060208284031215612261578081fd5b813561093c81612587565b60006020828403121561227d578081fd5b815161093c81612587565b6000806040838503121561229a578081fd5b82356122a581612587565b915060208301356122b581612587565b809150509250929050565b6000806000606084860312156122d4578081fd5b83356122df81612587565b925060208401356122ef81612587565b929592945050506040919091013590565b60008060408385031215612312578182fd5b823561231d81612587565b946020939093013593505050565b60006020828403121561233c578081fd5b61093c8261223b565b600060208284031215612356578081fd5b5035919050565b6000806040838503121561236f578182fd5b8235915061237f6020840161223b565b90509250929050565b60008060006060848603121561239c578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b818110156123e1578581018301518582016040015282016123c5565b818111156123f25783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561248c5784516001600160a01b031683529383019391830191600101612467565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156124c0576124c0612571565b500190565b6000826124e057634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156124ff576124ff612571565b500290565b60008282101561251657612516612571565b500390565b600181811c9082168061252f57607f821691505b6020821081141561255057634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561256a5761256a612571565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146107aa57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fdcab7d878b831cc2c774bd0617ad1e4673f3fbd5f6a7ecd2afe4be8d3366d2664736f6c634300080400330000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000005af3107a40000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000004ccc8085f89dbff920b78171c717d6dcd0e9abda0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000004ccc8085f89dbff920b78171c717d6dcd0e9abda00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007564f4c54414d41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007564f4c54414d4100000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061021e5760003560e01c80634a74bb02116101235780638ee88c53116100ab578063caac79341161006f578063caac793414610652578063dd62ed3e14610672578063ea2f0b37146106b8578063f2fde38b146106d8578063ffa1ad74146106f857600080fd5b80638ee88c53146105bd57806395d89b41146105dd578063a457c2d7146105f2578063a9059cbb14610612578063c49b9a801461063257600080fd5b80636bc87c3a116100f25780636bc87c3a1461051b57806370a0823114610531578063715018a61461055157806388f82020146105665780638da5cb5b1461059f57600080fd5b80634a74bb021461048157806352390c02146104a25780635342acb4146104c25780635d098b38146104fb57600080fd5b8063313ce567116101a65780633bd5d173116101755780633bd5d173146103e1578063437823ec146104015780634549b03914610421578063457c194c1461044157806349bd5a5e1461046157600080fd5b8063313ce567146103695780633685d4191461038b57806339509351146103ab5780633b124fe7146103cb57600080fd5b80631694505e116101ed5780631694505e146102c657806318160ddd146102fe57806322976e0d1461031357806323b872dd146103295780632d8381191461034957600080fd5b8063061c82d01461022a57806306fdde031461024c578063095ea7b31461027757806313114a9d146102a757600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024a610245366004612345565b61070d565b005b34801561025857600080fd5b506102616107ad565b60405161026e91906123b5565b60405180910390f35b34801561028357600080fd5b50610297610292366004612300565b61083f565b604051901515815260200161026e565b3480156102b357600080fd5b506009545b60405190815260200161026e565b3480156102d257600080fd5b506013546102e6906001600160a01b031681565b6040516001600160a01b03909116815260200161026e565b34801561030a57600080fd5b506007546102b8565b34801561031f57600080fd5b506102b860115481565b34801561033557600080fd5b506102976103443660046122c0565b610856565b34801561035557600080fd5b506102b8610364366004612345565b6108bf565b34801561037557600080fd5b50600c5460405160ff909116815260200161026e565b34801561039757600080fd5b5061024a6103a6366004612250565b610943565b3480156103b757600080fd5b506102976103c6366004612300565b610b32565b3480156103d757600080fd5b506102b8600d5481565b3480156103ed57600080fd5b5061024a6103fc366004612345565b610b68565b34801561040d57600080fd5b5061024a61041c366004612250565b610c54565b34801561042d57600080fd5b506102b861043c36600461235d565b610ca2565b34801561044d57600080fd5b5061024a61045c366004612345565b610d31565b34801561046d57600080fd5b506014546102e6906001600160a01b031681565b34801561048d57600080fd5b5060155461029790600160a81b900460ff1681565b3480156104ae57600080fd5b5061024a6104bd366004612250565b610d76565b3480156104ce57600080fd5b506102976104dd366004612250565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561050757600080fd5b5061024a610516366004612250565b610ec9565b34801561052757600080fd5b506102b8600f5481565b34801561053d57600080fd5b506102b861054c366004612250565b610f15565b34801561055d57600080fd5b5061024a610f74565b34801561057257600080fd5b50610297610581366004612250565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105ab57600080fd5b506000546001600160a01b03166102e6565b3480156105c957600080fd5b5061024a6105d8366004612345565b610faa565b3480156105e957600080fd5b50610261610fef565b3480156105fe57600080fd5b5061029761060d366004612300565b610ffe565b34801561061e57600080fd5b5061029761062d366004612300565b61104d565b34801561063e57600080fd5b5061024a61064d36600461232b565b61105a565b34801561065e57600080fd5b506015546102e6906001600160a01b031681565b34801561067e57600080fd5b506102b861068d366004612288565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156106c457600080fd5b5061024a6106d3366004612250565b6110dc565b3480156106e457600080fd5b5061024a6106f3366004612250565b611127565b34801561070457600080fd5b506102b8600181565b6000546001600160a01b031633146107405760405162461bcd60e51b815260040161073790612408565b60405180910390fd5b600d819055601154600f546109c4919061075a90846124ad565b61076491906124ad565b11156107aa5760405162461bcd60e51b8152602060048201526015602482015274546f74616c20666565206973206f7665722032352560581b6044820152606401610737565b50565b6060600a80546107bc9061251b565b80601f01602080910402602001604051908101604052809291908181526020018280546107e89061251b565b80156108355780601f1061080a57610100808354040283529160200191610835565b820191906000526020600020905b81548152906001019060200180831161081857829003601f168201915b5050505050905090565b600061084c3384846111d7565b5060015b92915050565b60006108638484846112fc565b6108b584336108b08560405180606001604052806028815260200161259d602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906114f1565b6111d7565b5060019392505050565b60006008548211156109265760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610737565b600061093061151d565b905061093c83826111cb565b9392505050565b6000546001600160a01b0316331461096d5760405162461bcd60e51b815260040161073790612408565b6001600160a01b03811660009081526005602052604090205460ff166109d55760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610737565b60005b600654811015610b2e57816001600160a01b031660068281548110610a0d57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610b1c5760068054610a3890600190612504565b81548110610a5657634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b039092169183908110610a9057634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610af657634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610b2681612556565b9150506109d8565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161084c9185906108b09086611540565b3360008181526005602052604090205460ff1615610bdd5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610737565b6000610be88361154c565b5050506001600160a01b038616600090815260016020526040902054939450610c16939250849150506115a7565b6001600160a01b038316600090815260016020526040902055600854610c3c90826115a7565b600855600954610c4c9084611540565b600955505050565b6000546001600160a01b03163314610c7e5760405162461bcd60e51b815260040161073790612408565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600754831115610cf65760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610737565b81610d16576000610d068461154c565b5094965061085095505050505050565b6000610d218461154c565b5093965061085095505050505050565b6000546001600160a01b03163314610d5b5760405162461bcd60e51b815260040161073790612408565b6011819055600f54600d546109c491839161075a91906124ad565b6000546001600160a01b03163314610da05760405162461bcd60e51b815260040161073790612408565b6001600160a01b03811660009081526005602052604090205460ff1615610e095760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610737565b6001600160a01b03811660009081526001602052604090205415610e63576001600160a01b038116600090815260016020526040902054610e49906108bf565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314610ef35760405162461bcd60e51b815260040161073790612408565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610f5257506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610850906108bf565b6000546001600160a01b03163314610f9e5760405162461bcd60e51b815260040161073790612408565b610fa860006115b3565b565b6000546001600160a01b03163314610fd45760405162461bcd60e51b815260040161073790612408565b600f819055601154600d546109c4919061075a9084906124ad565b6060600b80546107bc9061251b565b600061084c33846108b0856040518060600160405280602581526020016125c5602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906114f1565b600061084c3384846112fc565b6000546001600160a01b031633146110845760405162461bcd60e51b815260040161073790612408565b60158054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906110d190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146111065760405162461bcd60e51b815260040161073790612408565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146111515760405162461bcd60e51b815260040161073790612408565b6001600160a01b0381166111b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610737565b6107aa816115b3565b600061093c82846124e5565b600061093c82846124c5565b6001600160a01b0383166112395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610737565b6001600160a01b03821661129a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610737565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610737565b6001600160a01b0382166113c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610737565b600081116114245760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610737565b600061142f30610f15565b601654909150811080159081906114505750601554600160a01b900460ff16155b801561146a57506014546001600160a01b03868116911614155b801561147f5750601554600160a81b900460ff165b1561149257601654915061149282611603565b6001600160a01b03851660009081526004602052604090205460019060ff16806114d457506001600160a01b03851660009081526004602052604090205460ff165b156114dd575060005b6114e9868686846116aa565b505050505050565b600081848411156115155760405162461bcd60e51b815260040161073791906123b5565b505050900390565b600080600061152a61182d565b909250905061153982826111cb565b9250505090565b600061093c82846124ad565b60008060008060008060008060008060006115668c6119e7565b935093509350935060008060006115878f87878761158261151d565b611a3c565b919f509d509b509599509397509195509350505050919395979092949650565b600061093c8284612504565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6015805460ff60a01b1916600160a01b17905560006116238260026111cb565b9050600061163183836115a7565b90504761163d83611a9e565b600061164947836115a7565b90506116558382611c1b565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506015805460ff60a01b19169055505050565b806116b7576116b7611ce3565b6001600160a01b03841660009081526005602052604090205460ff1680156116f857506001600160a01b03831660009081526005602052604090205460ff16155b1561170d57611708848484611d28565b61180b565b6001600160a01b03841660009081526005602052604090205460ff1615801561174e57506001600160a01b03831660009081526005602052604090205460ff165b1561175e57611708848484611e6e565b6001600160a01b03841660009081526005602052604090205460ff161580156117a057506001600160a01b03831660009081526005602052604090205460ff16155b156117b057611708848484611f2d565b6001600160a01b03841660009081526005602052604090205460ff1680156117f057506001600160a01b03831660009081526005602052604090205460ff165b1561180057611708848484611f87565b61180b848484611f2d565b8061182757611827600e54600d55601054600f55601254601155565b50505050565b6008546007546000918291825b6006548110156119b75782600160006006848154811061186a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806118e357508160026000600684815481106118bc57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156118f957600854600754945094505050509091565b61194d600160006006848154811061192157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906115a7565b92506119a3600260006006848154811061197757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906115a7565b9150806119af81612556565b91505061183a565b506007546008546119c7916111cb565b8210156119de576008546007549350935050509091565b90939092509050565b60008060008060006119f886612010565b90506000611a0587612033565b90506000611a1288612050565b90506000611a2c82611a2685818d896115a7565b906115a7565b9993985091965094509092505050565b6000808080611a4b89866111bf565b90506000611a5989876111bf565b90506000611a6789886111bf565b90506000611a7589896111bf565b90506000611a8982611a26858189896115a7565b949d949c50929a509298505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ae157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6d919061226c565b81600181518110611b8e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601354611bb491309116846111d7565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790611bed90859060009086903090429060040161243d565b600060405180830381600087803b158015611c0757600080fd5b505af11580156114e9573d6000803e3d6000fd5b601354611c339030906001600160a01b0316846111d7565b601354600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015611ca357600080fd5b505af1158015611cb7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cdc9190612388565b5050505050565b600d54158015611cf35750600f54155b8015611cff5750601154155b15611d0657565b600d8054600e55600f8054601055601180546012556000928390559082905555565b6000806000806000806000611d3c8861154c565b9650965096509650965096509650611d8288600260008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054611db190886115a7565b6001600160a01b03808c1660009081526001602052604080822093909355908b1681522054611de09087611540565b6001600160a01b038a16600090815260016020526040902055611e0282612086565b611e0b8161210f565b611e158584612217565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611e5a91815260200190565b60405180910390a350505050505050505050565b6000806000806000806000611e828861154c565b9650965096509650965096509650611ec887600160008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6001600160a01b03808c16600090815260016020908152604080832094909455918c16815260029091522054611efe9085611540565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054611de09087611540565b6000806000806000806000611f418861154c565b9650965096509650965096509650611db187600160008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6000806000806000806000611f9b8861154c565b9650965096509650965096509650611fe188600260008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054611ec890886115a7565b600061085061271061202d600d54856111bf90919063ffffffff16565b906111cb565b600061085061271061202d600f54856111bf90919063ffffffff16565b6015546000906001600160a01b031661206b57506000919050565b61085061271061202d601154856111bf90919063ffffffff16565b600061209061151d565b9050600061209e83836111bf565b306000908152600160205260409020549091506120bb9082611540565b3060009081526001602090815260408083209390935560059052205460ff161561210a57306000908152600260205260409020546120f99084611540565b306000908152600260205260409020555b505050565b80156107aa57600061211f61151d565b9050600061212d83836111bf565b6015546001600160a01b03166000908152600160205260409020549091506121559082611540565b601580546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff16156121d0576015546001600160a01b03166000908152600260205260409020546121b49084611540565b6015546001600160a01b03166000908152600260205260409020555b6015546001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516112ef91815260200190565b60085461222490836115a7565b6008556009546122349082611540565b6009555050565b8035801515811461224b57600080fd5b919050565b600060208284031215612261578081fd5b813561093c81612587565b60006020828403121561227d578081fd5b815161093c81612587565b6000806040838503121561229a578081fd5b82356122a581612587565b915060208301356122b581612587565b809150509250929050565b6000806000606084860312156122d4578081fd5b83356122df81612587565b925060208401356122ef81612587565b929592945050506040919091013590565b60008060408385031215612312578182fd5b823561231d81612587565b946020939093013593505050565b60006020828403121561233c578081fd5b61093c8261223b565b600060208284031215612356578081fd5b5035919050565b6000806040838503121561236f578182fd5b8235915061237f6020840161223b565b90509250929050565b60008060006060848603121561239c578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b818110156123e1578581018301518582016040015282016123c5565b818111156123f25783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561248c5784516001600160a01b031683529383019391830191600101612467565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156124c0576124c0612571565b500190565b6000826124e057634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156124ff576124ff612571565b500290565b60008282101561251657612516612571565b500390565b600181811c9082168061252f57607f821691505b6020821081141561255057634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561256a5761256a612571565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146107aa57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fdcab7d878b831cc2c774bd0617ad1e4673f3fbd5f6a7ecd2afe4be8d3366d2664736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000005af3107a40000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000004ccc8085f89dbff920b78171c717d6dcd0e9abda0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000004ccc8085f89dbff920b78171c717d6dcd0e9abda00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007564f4c54414d41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007564f4c54414d4100000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): VOLTAMA
Arg [1] : symbol_ (string): VOLTAMA
Arg [2] : totalSupply_ (uint256): 100000000000000
Arg [3] : router_ (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [4] : marketingAddress_ (address): 0x4cCC8085f89DBFF920B78171C717d6dCD0e9aBDA
Arg [5] : taxFee_ (uint16): 2
Arg [6] : liquidityFee_ (uint16): 2
Arg [7] : marketingFee_ (uint16): 8
Arg [8] : serviceFeeReceiver_ (address): 0x4cCC8085f89DBFF920B78171C717d6dCD0e9aBDA
Arg [9] : serviceFee_ (uint256): 0
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [2] : 00000000000000000000000000000000000000000000000000005af3107a4000
Arg [3] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [4] : 0000000000000000000000004ccc8085f89dbff920b78171c717d6dcd0e9abda
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [8] : 0000000000000000000000004ccc8085f89dbff920b78171c717d6dcd0e9abda
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [11] : 564f4c54414d4100000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [13] : 564f4c54414d4100000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
28807:23514:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38729:236;;;;;;;;;;-1:-1:-1;38729:236:0;;;;;:::i;:::-;;:::i;:::-;;32882:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33867:193;;;;;;;;;;-1:-1:-1;33867:193:0;;;;;:::i;:::-;;:::i;:::-;;;3870:14:1;;3863:22;3845:41;;3833:2;3818:18;33867:193:0;3800:92:1;35366:87:0;;;;;;;;;;-1:-1:-1;35435:10:0;;35366:87;;;9572:25:1;;;9560:2;9545:18;35366:87:0;9527:76:1;29882:41:0;;;;;;;;;;-1:-1:-1;29882:41:0;;;;-1:-1:-1;;;;;29882:41:0;;;;;;-1:-1:-1;;;;;3049:32:1;;;3031:51;;3019:2;3004:18;29882:41:0;2986:102:1;33159:95:0;;;;;;;;;;-1:-1:-1;33239:7:0;;33159:95;;29780:28;;;;;;;;;;;;;;;;34068:446;;;;;;;;;;-1:-1:-1;34068:446:0;;;;;:::i;:::-;;:::i;36381:322::-;;;;;;;;;;-1:-1:-1;36381:322:0;;;;;:::i;:::-;;:::i;33068:83::-;;;;;;;;;;-1:-1:-1;33134:9:0;;33068:83;;33134:9;;;;11062:36:1;;11050:2;11035:18;33068:83:0;11017:87:1;37165:477:0;;;;;;;;;;-1:-1:-1;37165:477:0;;;;;:::i;:::-;;:::i;34522:300::-;;;;;;;;;;-1:-1:-1;34522:300:0;;;;;:::i;:::-;;:::i;29601:22::-;;;;;;;;;;;;;;;;35461:421;;;;;;;;;;-1:-1:-1;35461:421:0;;;;;:::i;:::-;;:::i;38488:111::-;;;;;;;;;;-1:-1:-1;38488:111:0;;;;;:::i;:::-;;:::i;35890:483::-;;;;;;;;;;-1:-1:-1;35890:483:0;;;;;:::i;:::-;;:::i;39264:283::-;;;;;;;;;;-1:-1:-1;39264:283:0;;;;;:::i;:::-;;:::i;29930:28::-;;;;;;;;;;-1:-1:-1;29930:28:0;;;;-1:-1:-1;;;;;29930:28:0;;;30042:33;;;;;;;;;;-1:-1:-1;30042:33:0;;;;-1:-1:-1;;;30042:33:0;;;;;;36711:446;;;;;;;;;;-1:-1:-1;36711:446:0;;;;;:::i;:::-;;:::i;45005:124::-;;;;;;;;;;-1:-1:-1;45005:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;45094:27:0;45070:4;45094:27;;;:18;:27;;;;;;;;;45005:124;39555:116;;;;;;;;;;-1:-1:-1;39555:116:0;;;;;:::i;:::-;;:::i;29680:28::-;;;;;;;;;;;;;;;;33262:198;;;;;;;;;;-1:-1:-1;33262:198:0;;;;;:::i;:::-;;:::i;5524:94::-;;;;;;;;;;;;;:::i;35238:120::-;;;;;;;;;;-1:-1:-1;35238:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;35330:20:0;35306:4;35330:20;;;:11;:20;;;;;;;;;35238:120;4873:87;;;;;;;;;;-1:-1:-1;4919:7:0;4946:6;-1:-1:-1;;;;;4946:6:0;4873:87;;38973:283;;;;;;;;;;-1:-1:-1;38973:283:0;;;;;:::i;:::-;;:::i;32973:87::-;;;;;;;;;;;;;:::i;34830:400::-;;;;;;;;;;-1:-1:-1;34830:400:0;;;;;:::i;:::-;;:::i;33468:199::-;;;;;;;;;;-1:-1:-1;33468:199:0;;;;;:::i;:::-;;:::i;39679:171::-;;;;;;;;;;-1:-1:-1;39679:171:0;;;;;:::i;:::-;;:::i;29965:32::-;;;;;;;;;;-1:-1:-1;29965:32:0;;;;-1:-1:-1;;;;;29965:32:0;;;33675:184;;;;;;;;;;-1:-1:-1;33675:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;33824:18:0;;;33792:7;33824:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;33675:184;38607:110;;;;;;;;;;-1:-1:-1;38607:110:0;;;;;:::i;:::-;;:::i;5773:192::-;;;;;;;;;;-1:-1:-1;5773:192:0;;;;;:::i;:::-;;:::i;28928:35::-;;;;;;;;;;;;28962:1;28928:35;;38729:236;4919:7;4946:6;-1:-1:-1;;;;;4946:6:0;3671:10;5093:23;5085:68;;;;-1:-1:-1;;;5085:68:0;;;;;;;:::i;:::-;;;;;;;;;38804:7:::1;:19:::0;;;38882:13:::1;::::0;38866::::1;::::0;38899:9:::1;::::0;38882:13;38856:23:::1;::::0;38814:9;38856:23:::1;:::i;:::-;:39;;;;:::i;:::-;:52;;38834:123;;;::::0;-1:-1:-1;;;38834:123:0;;6923:2:1;38834:123:0::1;::::0;::::1;6905:21:1::0;6962:2;6942:18;;;6935:30;-1:-1:-1;;;6981:18:1;;;6974:51;7042:18;;38834:123:0::1;6895:171:1::0;38834:123:0::1;38729:236:::0;:::o;32882:83::-;32919:13;32952:5;32945:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32882:83;:::o;33867:193::-;33969:4;33991:39;3671:10;34014:7;34023:6;33991:8;:39::i;:::-;-1:-1:-1;34048:4:0;33867:193;;;;;:::o;34068:446::-;34200:4;34217:36;34227:6;34235:9;34246:6;34217:9;:36::i;:::-;34264:220;34287:6;3671:10;34335:138;34391:6;34335:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34335:19:0;;;;;;:11;:19;;;;;;;;3671:10;34335:33;;;;;;;;;;:37;:138::i;:::-;34264:8;:220::i;:::-;-1:-1:-1;34502:4:0;34068:446;;;;;:::o;36381:322::-;36475:7;36533;;36522;:18;;36500:110;;;;-1:-1:-1;;;36500:110:0;;5346:2:1;36500:110:0;;;5328:21:1;5385:2;5365:18;;;5358:30;5424:34;5404:18;;;5397:62;-1:-1:-1;;;5475:18:1;;;5468:40;5525:19;;36500:110:0;5318:232:1;36500:110:0;36621:19;36643:10;:8;:10::i;:::-;36621:32;-1:-1:-1;36671:24:0;:7;36621:32;36671:11;:24::i;:::-;36664:31;36381:322;-1:-1:-1;;;36381:322:0:o;37165:477::-;4919:7;4946:6;-1:-1:-1;;;;;4946:6:0;3671:10;5093:23;5085:68;;;;-1:-1:-1;;;5085:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37245:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;37237:60;;;::::0;-1:-1:-1;;;37237:60:0;;6567:2:1;37237:60:0::1;::::0;::::1;6549:21:1::0;6606:2;6586:18;;;6579:30;6645:29;6625:18;;;6618:57;6692:18;;37237:60:0::1;6539:177:1::0;37237:60:0::1;37313:9;37308:327;37332:9;:16:::0;37328:20;::::1;37308:327;;;37390:7;-1:-1:-1::0;;;;;37374:23:0::1;:9;37384:1;37374:12;;;;;;-1:-1:-1::0;;;37374:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;37374:12:0::1;:23;37370:254;;;37433:9;37443:16:::0;;:20:::1;::::0;37462:1:::1;::::0;37443:20:::1;:::i;:::-;37433:31;;;;;;-1:-1:-1::0;;;37433:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;37418:9:::1;:12:::0;;-1:-1:-1;;;;;37433:31:0;;::::1;::::0;37428:1;;37418:12;::::1;;;-1:-1:-1::0;;;37418:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;37418:46:0::1;-1:-1:-1::0;;;;;37418:46:0;;::::1;;::::0;;37483:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;37522:11:::1;:20:::0;;;;:28;;-1:-1:-1;;37522:28:0::1;::::0;;37569:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;37569:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;37569:15:0;;;;;-1:-1:-1;;;;;;37569:15:0::1;::::0;;;;;37308:327:::1;37165:477:::0;:::o;37370:254::-:1;37350:3:::0;::::1;::::0;::::1;:::i;:::-;;;;37308:327;;;;37165:477:::0;:::o;34522:300::-;3671:10;34637:4;34731:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;34731:34:0;;;;;;;;;;34637:4;;34659:133;;34709:7;;34731:50;;34770:10;34731:38;:50::i;35461:421::-;3671:10;35513:14;35576:19;;;:11;:19;;;;;;;;35575:20;35553:114;;;;-1:-1:-1;;;35553:114:0;;9215:2:1;35553:114:0;;;9197:21:1;9254:2;9234:18;;;9227:30;9293:34;9273:18;;;9266:62;-1:-1:-1;;;9344:18:1;;;9337:42;9396:19;;35553:114:0;9187:234:1;35553:114:0;35679:15;35710:19;35721:7;35710:10;:19::i;:::-;-1:-1:-1;;;;;;;;35758:15:0;;;;;;:7;:15;;;;;;35678:51;;-1:-1:-1;35758:28:0;;:15;-1:-1:-1;35678:51:0;;-1:-1:-1;;35758:19:0;:28::i;:::-;-1:-1:-1;;;;;35740:15:0;;;;;;:7;:15;;;;;:46;35807:7;;:20;;35819:7;35807:11;:20::i;:::-;35797:7;:30;35851:10;;:23;;35866:7;35851:14;:23::i;:::-;35838:10;:36;-1:-1:-1;;;35461:421:0:o;38488:111::-;4919:7;4946:6;-1:-1:-1;;;;;4946:6:0;3671:10;5093:23;5085:68;;;;-1:-1:-1;;;5085:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38557:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;38557:34:0::1;38587:4;38557:34;::::0;;38488:111::o;35890:483::-;36008:7;36052;;36041;:18;;36033:62;;;;-1:-1:-1;;;36033:62:0;;7273:2:1;36033:62:0;;;7255:21:1;7312:2;7292:18;;;7285:30;7351:33;7331:18;;;7324:61;7402:18;;36033:62:0;7245:181:1;36033:62:0;36111:17;36106:260;;36146:15;36177:19;36188:7;36177:10;:19::i;:::-;-1:-1:-1;36145:51:0;;-1:-1:-1;36211:14:0;;-1:-1:-1;;;;;;36211:14:0;36106:260;36261:23;36298:19;36309:7;36298:10;:19::i;:::-;-1:-1:-1;36258:59:0;;-1:-1:-1;36332:22:0;;-1:-1:-1;;;;;;36332:22:0;39264:283;4919:7;4946:6;-1:-1:-1;;;;;4946:6:0;3671:10;5093:23;5085:68;;;;-1:-1:-1;;;5085:68:0;;;;;;;:::i;:::-;39374:13:::1;:31:::0;;;39448:13:::1;::::0;39438:7:::1;::::0;39481:9:::1;::::0;39390:15;;39438:23:::1;::::0;39448:13;39438:23:::1;:::i;36711:446::-:0;4919:7;4946:6;-1:-1:-1;;;;;4946:6:0;3671:10;5093:23;5085:68;;;;-1:-1:-1;;;5085:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36906:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36905:21;36897:61;;;::::0;-1:-1:-1;;;36897:61:0;;6567:2:1;36897:61:0::1;::::0;::::1;6549:21:1::0;6606:2;6586:18;;;6579:30;6645:29;6625:18;;;6618:57;6692:18;;36897:61:0::1;6539:177:1::0;36897:61:0::1;-1:-1:-1::0;;;;;36973:16:0;::::1;36992:1;36973:16:::0;;;:7:::1;:16;::::0;;;;;:20;36969:109:::1;;-1:-1:-1::0;;;;;37049:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;37029:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;37010:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;36969:109:::1;-1:-1:-1::0;;;;;37088:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;37088:27:0::1;37111:4;37088:27:::0;;::::1;::::0;;;37126:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;37126:23:0::1;::::0;;::::1;::::0;;36711:446::o;39555:116::-;4919:7;4946:6;-1:-1:-1;;;;;4946:6:0;3671:10;5093:23;5085:68;;;;-1:-1:-1;;;5085:68:0;;;;;;;:::i;:::-;39634:17:::1;:29:::0;;-1:-1:-1;;;;;;39634:29:0::1;-1:-1:-1::0;;;;;39634:29:0;;;::::1;::::0;;;::::1;::::0;;39555:116::o;33262:198::-;-1:-1:-1;;;;;33352:20:0;;33328:7;33352:20;;;:11;:20;;;;;;;;33348:49;;;-1:-1:-1;;;;;;33381:16:0;;;;;:7;:16;;;;;;;33262:198::o;33348:49::-;-1:-1:-1;;;;;33435:16:0;;;;;;:7;:16;;;;;;33415:37;;:19;:37::i;5524:94::-;4919:7;4946:6;-1:-1:-1;;;;;4946:6:0;3671:10;5093:23;5085:68;;;;-1:-1:-1;;;5085:68:0;;;;;;;:::i;:::-;5589:21:::1;5607:1;5589:9;:21::i;:::-;5524:94::o:0;38973:283::-;4919:7;4946:6;-1:-1:-1;;;;;4946:6:0;3671:10;5093:23;5085:68;;;;-1:-1:-1;;;5085:68:0;;;;;;;:::i;:::-;39083:13:::1;:31:::0;;;39173:13:::1;::::0;39147:7:::1;::::0;39190:9:::1;::::0;39173:13;39147:23:::1;::::0;39099:15;;39147:23:::1;:::i;32973:87::-:0;33012:13;33045:7;33038:14;;;;;:::i;34830:400::-;34950:4;34972:228;3671:10;35022:7;35044:145;35101:15;35044:145;;;;;;;;;;;;;;;;;3671:10;35044:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;35044:34:0;;;;;;;;;;;;:38;:145::i;33468:199::-;33573:4;33595:42;3671:10;33619:9;33630:6;33595:9;:42::i;39679:171::-;4919:7;4946:6;-1:-1:-1;;;;;4946:6:0;3671:10;5093:23;5085:68;;;;-1:-1:-1;;;5085:68:0;;;;;;;:::i;:::-;39756:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;39756:32:0::1;-1:-1:-1::0;;;;39756:32:0;;::::1;;::::0;;39804:38:::1;::::0;::::1;::::0;::::1;::::0;39780:8;3870:14:1;3863:22;3845:41;;3833:2;3818:18;;3800:92;39804:38:0::1;;;;;;;;39679:171:::0;:::o;38607:110::-;4919:7;4946:6;-1:-1:-1;;;;;4946:6:0;3671:10;5093:23;5085:68;;;;-1:-1:-1;;;5085:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38674:27:0::1;38704:5;38674:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;38674:35:0::1;::::0;;38607:110::o;5773:192::-;4919:7;4946:6;-1:-1:-1;;;;;4946:6:0;3671:10;5093:23;5085:68;;;;-1:-1:-1;;;5085:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5862:22:0;::::1;5854:73;;;::::0;-1:-1:-1;;;5854:73:0;;5757:2:1;5854:73:0::1;::::0;::::1;5739:21:1::0;5796:2;5776:18;;;5769:30;5835:34;5815:18;;;5808:62;-1:-1:-1;;;5886:18:1;;;5879:36;5932:19;;5854:73:0::1;5729:228:1::0;5854:73:0::1;5938:19;5948:8;5938:9;:19::i;9697:98::-:0;9755:7;9782:5;9786:1;9782;:5;:::i;10096:98::-;10154:7;10181:5;10185:1;10181;:5;:::i;45137:371::-;-1:-1:-1;;;;;45264:19:0;;45256:68;;;;-1:-1:-1;;;45256:68:0;;8810:2:1;45256:68:0;;;8792:21:1;8849:2;8829:18;;;8822:30;8888:34;8868:18;;;8861:62;-1:-1:-1;;;8939:18:1;;;8932:34;8983:19;;45256:68:0;8782:226:1;45256:68:0;-1:-1:-1;;;;;45343:21:0;;45335:68;;;;-1:-1:-1;;;45335:68:0;;6164:2:1;45335:68:0;;;6146:21:1;6203:2;6183:18;;;6176:30;6242:34;6222:18;;;6215:62;-1:-1:-1;;;6293:18:1;;;6286:32;6335:19;;45335:68:0;6136:224:1;45335:68:0;-1:-1:-1;;;;;45416:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;45468:32;;9572:25:1;;;45468:32:0;;9545:18:1;45468:32:0;;;;;;;;45137:371;;;:::o;45516:1531::-;-1:-1:-1;;;;;45638:18:0;;45630:68;;;;-1:-1:-1;;;45630:68:0;;8404:2:1;45630:68:0;;;8386:21:1;8443:2;8423:18;;;8416:30;8482:34;8462:18;;;8455:62;-1:-1:-1;;;8533:18:1;;;8526:35;8578:19;;45630:68:0;8376:227:1;45630:68:0;-1:-1:-1;;;;;45717:16:0;;45709:64;;;;-1:-1:-1;;;45709:64:0;;4942:2:1;45709:64:0;;;4924:21:1;4981:2;4961:18;;;4954:30;5020:34;5000:18;;;4993:62;-1:-1:-1;;;5071:18:1;;;5064:33;5114:19;;45709:64:0;4914:225:1;45709:64:0;45801:1;45792:6;:10;45784:64;;;;-1:-1:-1;;;45784:64:0;;7994:2:1;45784:64:0;;;7976:21:1;8033:2;8013:18;;;8006:30;8072:34;8052:18;;;8045:62;-1:-1:-1;;;8123:18:1;;;8116:39;8172:19;;45784:64:0;7966:231:1;45784:64:0;46143:28;46174:24;46192:4;46174:9;:24::i;:::-;46275:29;;46143:55;;-1:-1:-1;46238:66:0;;;;;;;46333:53;;-1:-1:-1;46370:16:0;;-1:-1:-1;;;46370:16:0;;;;46369:17;46333:53;:91;;;;-1:-1:-1;46411:13:0;;-1:-1:-1;;;;;46403:21:0;;;46411:13;;46403:21;;46333:91;:129;;;;-1:-1:-1;46441:21:0;;-1:-1:-1;;;46441:21:0;;;;46333:129;46315:318;;;46512:29;;46489:52;;46585:36;46600:20;46585:14;:36::i;:::-;-1:-1:-1;;;;;46826:24:0;;46706:12;46826:24;;;:18;:24;;;;;;46721:4;;46826:24;;;:50;;-1:-1:-1;;;;;;46854:22:0;;;;;;:18;:22;;;;;;;;46826:50;46822:98;;;-1:-1:-1;46903:5:0;46822:98;46998:41;47013:4;47019:2;47023:6;47031:7;46998:14;:41::i;:::-;45516:1531;;;;;;:::o;11238:240::-;11358:7;11419:12;11411:6;;;;11403:29;;;;-1:-1:-1;;;11403:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;11454:5:0;;;11238:240::o;42216:164::-;42258:7;42279:15;42296;42315:19;:17;:19::i;:::-;42278:56;;-1:-1:-1;42278:56:0;-1:-1:-1;42352:20:0;42278:56;;42352:11;:20::i;:::-;42345:27;;;;42216:164;:::o;8959:98::-;9017:7;9044:5;9048:1;9044;:5;:::i;40106:847::-;40206:7;40228;40250;40272;40294;40316;40338;40388:23;40426:12;40453:18;40486;40518:20;40530:7;40518:11;:20::i;:::-;40373:165;;;;;;;;40550:15;40567:23;40592:12;40608:138;40634:7;40656:4;40675:10;40700;40725;:8;:10::i;:::-;40608:11;:138::i;:::-;40549:197;;-1:-1:-1;40549:197:0;-1:-1:-1;40549:197:0;-1:-1:-1;40850:15:0;;-1:-1:-1;40880:4:0;;-1:-1:-1;40899:10:0;;-1:-1:-1;40924:10:0;-1:-1:-1;;;;40106:847:0;;;;;;;;;:::o;9340:98::-;9398:7;9425:5;9429:1;9425;:5;:::i;5973:173::-;6029:16;6048:6;;-1:-1:-1;;;;;6065:17:0;;;-1:-1:-1;;;;;;6065:17:0;;;;;;6098:40;;6048:6;;;;;;;6098:40;;6029:16;6098:40;5973:173;;:::o;47055:977::-;30430:16;:23;;-1:-1:-1;;;;30430:23:0;-1:-1:-1;;;30430:23:0;;;;47206:27:::1;:20:::0;47231:1:::1;47206:24;:27::i;:::-;47191:42:::0;-1:-1:-1;47244:17:0::1;47264:30;:20:::0;47191:42;47264:24:::1;:30::i;:::-;47244:50:::0;-1:-1:-1;47597:21:0::1;47663:22;47680:4:::0;47663:16:::1;:22::i;:::-;47816:18;47837:41;:21;47863:14:::0;47837:25:::1;:41::i;:::-;47816:62;;47928:35;47941:9;47952:10;47928:12;:35::i;:::-;47981:43;::::0;;10798:25:1;;;10854:2;10839:18;;10832:34;;;10882:18;;;10875:34;;;47981:43:0::1;::::0;10786:2:1;10771:18;47981:43:0::1;;;;;;;-1:-1:-1::0;;30476:16:0;:24;;-1:-1:-1;;;;30476:24:0;;;-1:-1:-1;;;47055:977:0:o;49228:838::-;49384:7;49379:28;;49393:14;:12;:14::i;:::-;-1:-1:-1;;;;;49424:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;49448:22:0;;;;;;:11;:22;;;;;;;;49447:23;49424:46;49420:597;;;49487:48;49509:6;49517:9;49528:6;49487:21;:48::i;:::-;49420:597;;;-1:-1:-1;;;;;49558:19:0;;;;;;:11;:19;;;;;;;;49557:20;:46;;;;-1:-1:-1;;;;;;49581:22:0;;;;;;:11;:22;;;;;;;;49557:46;49553:464;;;49620:46;49640:6;49648:9;49659:6;49620:19;:46::i;49553:464::-;-1:-1:-1;;;;;49689:19:0;;;;;;:11;:19;;;;;;;;49688:20;:47;;;;-1:-1:-1;;;;;;49713:22:0;;;;;;:11;:22;;;;;;;;49712:23;49688:47;49684:333;;;49752:44;49770:6;49778:9;49789:6;49752:17;:44::i;49684:333::-;-1:-1:-1;;;;;49818:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;49841:22:0;;;;;;:11;:22;;;;;;;;49818:45;49814:203;;;49880:48;49902:6;49910:9;49921:6;49880:21;:48::i;49814:203::-;49961:44;49979:6;49987:9;49998:6;49961:17;:44::i;:::-;50034:7;50029:29;;50043:15;44878;;44868:7;:25;44920:21;;44904:13;:37;44968:21;;44952:13;:37;44824:173;50043:15;49228:838;;;;:::o;42388:605::-;42486:7;;42522;;42439;;;;;42540:338;42564:9;:16;42560:20;;42540:338;;;42648:7;42624;:21;42632:9;42642:1;42632:12;;;;;;-1:-1:-1;;;42632:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42632:12:0;42624:21;;;;;;;;;;;;;:31;;:83;;;42700:7;42676;:21;42684:9;42694:1;42684:12;;;;;;-1:-1:-1;;;42684:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42684:12:0;42676:21;;;;;;;;;;;;;:31;42624:83;42602:146;;;42731:7;;42740;;42723:25;;;;;;;42388:605;;:::o;42602:146::-;42773:34;42785:7;:21;42793:9;42803:1;42793:12;;;;;;-1:-1:-1;;;42793:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42793:12:0;42785:21;;;;;;;;;;;;;42773:7;;:11;:34::i;:::-;42763:44;;42832:34;42844:7;:21;42852:9;42862:1;42852:12;;;;;;-1:-1:-1;;;42852:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42852:12:0;42844:21;;;;;;;;;;;;;42832:7;;:11;:34::i;:::-;42822:44;-1:-1:-1;42582:3:0;;;;:::i;:::-;;;;42540:338;;;-1:-1:-1;42914:7:0;;42902;;:20;;:11;:20::i;:::-;42892:7;:30;42888:61;;;42932:7;;42941;;42924:25;;;;;;42388:605;;:::o;42888:61::-;42968:7;;42977;;-1:-1:-1;42388:605:0;-1:-1:-1;42388:605:0:o;40961:557::-;41062:7;41084;41106;41128;41163:12;41178:24;41194:7;41178:15;:24::i;:::-;41163:39;;41213:18;41234:30;41256:7;41234:21;:30::i;:::-;41213:51;;41275:21;41299:30;41321:7;41299:21;:30::i;:::-;41275:54;-1:-1:-1;41340:23:0;41366:76;41275:54;41366:33;41388:10;41366:33;:7;41378:4;41366:11;:17::i;:::-;:21;;:33::i;:76::-;41340:102;41478:4;;-1:-1:-1;41484:10:0;;-1:-1:-1;41484:10:0;-1:-1:-1;40961:557:0;;-1:-1:-1;;;40961:557:0:o;41526:682::-;41754:7;;;;41851:24;:7;41863:11;41851;:24::i;:::-;41833:42;-1:-1:-1;41886:12:0;41901:21;:4;41910:11;41901:8;:21::i;:::-;41886:36;-1:-1:-1;41933:18:0;41954:27;:10;41969:11;41954:14;:27::i;:::-;41933:48;-1:-1:-1;41992:18:0;42013:27;:10;42028:11;42013:14;:27::i;:::-;41992:48;-1:-1:-1;42051:23:0;42077:73;41992:48;42077:33;42099:10;42077:33;:7;42089:4;42077:11;:17::i;:73::-;42169:7;;;;-1:-1:-1;42195:4:0;;-1:-1:-1;41526:682:0;;-1:-1:-1;;;;;;;;;41526:682:0:o;48040:589::-;48190:16;;;48204:1;48190:16;;;;;;;;48166:21;;48190:16;;;;;;;;;;-1:-1:-1;48190:16:0;48166:40;;48235:4;48217;48222:1;48217:7;;;;;;-1:-1:-1;;;48217:7:0;;;;;;;;;-1:-1:-1;;;;;48217:23:0;;;:7;;;;;;;;;;:23;;;;48261:15;;:22;;;-1:-1:-1;;;48261:22:0;;;;:15;;;;;:20;;:22;;;;;48217:7;;48261:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48251:4;48256:1;48251:7;;;;;;-1:-1:-1;;;48251:7:0;;;;;;;;;-1:-1:-1;;;;;48251:32:0;;;:7;;;;;;;;;:32;48328:15;;48296:62;;48313:4;;48328:15;48346:11;48296:8;:62::i;:::-;48397:15;;:224;;-1:-1:-1;;;48397:224:0;;-1:-1:-1;;;;;48397:15:0;;;;:66;;:224;;48478:11;;48397:15;;48548:4;;48575;;48595:15;;48397:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48637:510;48817:15;;48785:62;;48802:4;;-1:-1:-1;;;;;48817:15:0;48835:11;48785:8;:62::i;:::-;48890:15;;49094:4;;48890:249;;-1:-1:-1;;;48890:249:0;;48962:4;48890:249;;;3434:34:1;3484:18;;;3477:34;;;-1:-1:-1;3527:18:1;;;3520:34;;;3570:18;;;3563:34;-1:-1:-1;;;;;48890:15:0;49094:4;;;;;3613:19:1;;;3606:44;49113:15:0;3666:19:1;;;3659:35;48890:15:0;;;:31;;48929:9;;3368:19:1;;48890:249:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;48637:510;;:::o;44483:333::-;44530:7;;:12;:34;;;;-1:-1:-1;44546:13:0;;:18;44530:34;:56;;;;-1:-1:-1;44568:13:0;;:18;44530:56;44526:69;;;44483:333::o;44526:69::-;44625:7;;;44607:15;:25;44667:13;;;44643:21;:37;44715:13;;;44691:21;:37;-1:-1:-1;44741:11:0;;;;44763:17;;;;44791;44483:333::o;51559:759::-;51710:15;51740:23;51778:12;51805:23;51843:12;51870:18;51903;51935:19;51946:7;51935:10;:19::i;:::-;51695:259;;;;;;;;;;;;;;51983:28;52003:7;51983;:15;51991:6;-1:-1:-1;;;;;51983:15:0;-1:-1:-1;;;;;51983:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;51965:15:0;;;;;;:7;:15;;;;;;;;:46;;;;52040:7;:15;;;;:28;;52060:7;52040:19;:28::i;:::-;-1:-1:-1;;;;;52022:15:0;;;;;;;:7;:15;;;;;;:46;;;;52100:18;;;;;;;:39;;52123:15;52100:22;:39::i;:::-;-1:-1:-1;;;;;52079:18:0;;;;;;:7;:18;;;;;:60;52150:26;52165:10;52150:14;:26::i;:::-;52187:29;52205:10;52187:17;:29::i;:::-;52227:23;52239:4;52245;52227:11;:23::i;:::-;52283:9;-1:-1:-1;;;;;52266:44:0;52275:6;-1:-1:-1;;;;;52266:44:0;;52294:15;52266:44;;;;9572:25:1;;9560:2;9545:18;;9527:76;52266:44:0;;;;;;;;51559:759;;;;;;;;;;:::o;50780:771::-;50929:15;50959:23;50997:12;51024:23;51062:12;51089:18;51122;51154:19;51165:7;51154:10;:19::i;:::-;50914:259;;;;;;;;;;;;;;51202:28;51222:7;51202;:15;51210:6;-1:-1:-1;;;;;51202:15:0;-1:-1:-1;;;;;51202:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;51184:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;51262:18;;;;;:7;:18;;;;;:39;;51285:15;51262:22;:39::i;:::-;-1:-1:-1;;;;;51241:18:0;;;;;;:7;:18;;;;;;;;:60;;;;51333:7;:18;;;;:39;;51356:15;51333:22;:39::i;50074:698::-;50221:15;50251:23;50289:12;50316:23;50354:12;50381:18;50414;50446:19;50457:7;50446:10;:19::i;:::-;50206:259;;;;;;;;;;;;;;50494:28;50514:7;50494;:15;50502:6;-1:-1:-1;;;;;50494:15:0;-1:-1:-1;;;;;50494:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;37650:830::-;37801:15;37831:23;37869:12;37896:23;37934:12;37961:18;37994;38026:19;38037:7;38026:10;:19::i;:::-;37786:259;;;;;;;;;;;;;;38074:28;38094:7;38074;:15;38082:6;-1:-1:-1;;;;;38074:15:0;-1:-1:-1;;;;;38074:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;38056:15:0;;;;;;:7;:15;;;;;;;;:46;;;;38131:7;:15;;;;:28;;38151:7;38131:19;:28::i;43925:130::-;43989:7;44016:31;44041:5;44016:20;44028:7;;44016;:11;;:20;;;;:::i;:::-;:24;;:31::i;44063:174::-;44160:7;44192:37;44223:5;44192:26;44204:13;;44192:7;:11;;:26;;;;:::i;44245:230::-;44371:17;;44342:7;;-1:-1:-1;;;;;44371:17:0;44367:45;;-1:-1:-1;44411:1:0;;44245:230;-1:-1:-1;44245:230:0:o;44367:45::-;44430:37;44461:5;44430:26;44442:13;;44430:7;:11;;:26;;;;:::i;43001:355::-;43064:19;43086:10;:8;:10::i;:::-;43064:32;-1:-1:-1;43107:18:0;43128:27;:10;43064:32;43128:14;:27::i;:::-;43207:4;43191:22;;;;:7;:22;;;;;;43107:48;;-1:-1:-1;43191:38:0;;43107:48;43191:26;:38::i;:::-;43182:4;43166:22;;;;:7;:22;;;;;;;;:63;;;;43244:11;:26;;;;;;43240:108;;;43326:4;43310:22;;;;:7;:22;;;;;;:38;;43337:10;43310:26;:38::i;:::-;43301:4;43285:22;;;;:7;:22;;;;;:63;43240:108;43001:355;;;:::o;43364:553::-;43434:14;;43430:480;;43465:19;43487:10;:8;:10::i;:::-;43465:32;-1:-1:-1;43512:18:0;43533:27;:10;43465:32;43533:14;:27::i;:::-;43612:17;;-1:-1:-1;;;;;43612:17:0;43604:26;;;;:7;:26;;;;;;43512:48;;-1:-1:-1;43604:42:0;;43512:48;43604:30;:42::i;:::-;43583:17;;;-1:-1:-1;;;;;43583:17:0;;;43575:26;;;;:7;:26;;;;;;;;:71;;;;43677:17;;;;;43665:30;;:11;:30;;;;;;;43661:164;;;43751:17;;-1:-1:-1;;;;;43751:17:0;43743:26;;;;:7;:26;;;;;;:82;;43796:10;43743:30;:82::i;:::-;43722:17;;-1:-1:-1;;;;;43722:17:0;43714:26;;;;:7;:26;;;;;:111;43661:164;43868:17;;-1:-1:-1;;;;;43868:17:0;3671:10;-1:-1:-1;;;;;43845:53:0;;43887:10;43845:53;;;;9572:25:1;;9560:2;9545:18;;9527:76;39951:147:0;40029:7;;:17;;40041:4;40029:11;:17::i;:::-;40019:7;:27;40070:10;;:20;;40085:4;40070:14;:20::i;:::-;40057:10;:33;-1:-1:-1;;39951:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1649:6;1657;1710:2;1698:9;1689:7;1685:23;1681:32;1678:2;;;1731:6;1723;1716:22;1678:2;1775:9;1762:23;1794:31;1819:5;1794:31;:::i;:::-;1844:5;1896:2;1881:18;;;;1868:32;;-1:-1:-1;;;1668:238:1:o;1911:190::-;1967:6;2020:2;2008:9;1999:7;1995:23;1991:32;1988:2;;;2041:6;2033;2026:22;1988:2;2069:26;2085:9;2069:26;:::i;2106:190::-;2165:6;2218:2;2206:9;2197:7;2193:23;2189:32;2186:2;;;2239:6;2231;2224:22;2186:2;-1:-1:-1;2267:23:1;;2176:120;-1:-1:-1;2176:120:1:o;2301:258::-;2366:6;2374;2427:2;2415:9;2406:7;2402:23;2398:32;2395:2;;;2448:6;2440;2433:22;2395:2;2489:9;2476:23;2466:33;;2518:35;2549:2;2538:9;2534:18;2518:35;:::i;:::-;2508:45;;2385:174;;;;;:::o;2564:316::-;2652:6;2660;2668;2721:2;2709:9;2700:7;2696:23;2692:32;2689:2;;;2742:6;2734;2727:22;2689:2;2776:9;2770:16;2760:26;;2826:2;2815:9;2811:18;2805:25;2795:35;;2870:2;2859:9;2855:18;2849:25;2839:35;;2679:201;;;;;:::o;4132:603::-;4244:4;4273:2;4302;4291:9;4284:21;4334:6;4328:13;4377:6;4372:2;4361:9;4357:18;4350:34;4402:4;4415:140;4429:6;4426:1;4423:13;4415:140;;;4524:14;;;4520:23;;4514:30;4490:17;;;4509:2;4486:26;4479:66;4444:10;;4415:140;;;4573:6;4570:1;4567:13;4564:2;;;4643:4;4638:2;4629:6;4618:9;4614:22;4610:31;4603:45;4564:2;-1:-1:-1;4719:2:1;4698:15;-1:-1:-1;;4694:29:1;4679:45;;;;4726:2;4675:54;;4253:482;-1:-1:-1;;;4253:482:1:o;7431:356::-;7633:2;7615:21;;;7652:18;;;7645:30;7711:34;7706:2;7691:18;;7684:62;7778:2;7763:18;;7605:182::o;9608:983::-;9870:4;9918:3;9907:9;9903:19;9949:6;9938:9;9931:25;9975:2;10013:6;10008:2;9997:9;9993:18;9986:34;10056:3;10051:2;10040:9;10036:18;10029:31;10080:6;10115;10109:13;10146:6;10138;10131:22;10184:3;10173:9;10169:19;10162:26;;10223:2;10215:6;10211:15;10197:29;;10244:4;10257:195;10271:6;10268:1;10265:13;10257:195;;;10336:13;;-1:-1:-1;;;;;10332:39:1;10320:52;;10427:15;;;;10392:12;;;;10368:1;10286:9;10257:195;;;-1:-1:-1;;;;;;;10508:32:1;;;;10503:2;10488:18;;10481:60;-1:-1:-1;;;10572:3:1;10557:19;10550:35;10469:3;9879:712;-1:-1:-1;;;9879:712:1:o;11109:128::-;11149:3;11180:1;11176:6;11173:1;11170:13;11167:2;;;11186:18;;:::i;:::-;-1:-1:-1;11222:9:1;;11157:80::o;11242:217::-;11282:1;11308;11298:2;;-1:-1:-1;;;11333:31:1;;11387:4;11384:1;11377:15;11415:4;11340:1;11405:15;11298:2;-1:-1:-1;11444:9:1;;11288:171::o;11464:168::-;11504:7;11570:1;11566;11562:6;11558:14;11555:1;11552:21;11547:1;11540:9;11533:17;11529:45;11526:2;;;11577:18;;:::i;:::-;-1:-1:-1;11617:9:1;;11516:116::o;11637:125::-;11677:4;11705:1;11702;11699:8;11696:2;;;11710:18;;:::i;:::-;-1:-1:-1;11747:9:1;;11686:76::o;11767:380::-;11846:1;11842:12;;;;11889;;;11910:2;;11964:4;11956:6;11952:17;11942:27;;11910:2;12017;12009:6;12006:14;11986:18;11983:38;11980:2;;;12063:10;12058:3;12054:20;12051:1;12044:31;12098:4;12095:1;12088:15;12126:4;12123:1;12116:15;11980:2;;11822:325;;;:::o;12152:135::-;12191:3;-1:-1:-1;;12212:17:1;;12209:2;;;12232:18;;:::i;:::-;-1:-1:-1;12279:1:1;12268:13;;12199:88::o;12292:127::-;12353:10;12348:3;12344:20;12341:1;12334:31;12384:4;12381:1;12374:15;12408:4;12405:1;12398:15;12424:131;-1:-1:-1;;;;;12499:31:1;;12489:42;;12479:2;;12545:1;12542;12535:12
Swarm Source
ipfs://fdcab7d878b831cc2c774bd0617ad1e4673f3fbd5f6a7ecd2afe4be8d3366d26
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.