BscScan - Sponsored slots available. Book your slot here!
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 108 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Swap BNB To GOUT... | 45324964 | 8 mins ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45313609 | 9 hrs ago | IN | 0 BNB | 0.00017638 | ||||
Swap BNB To GOUT... | 45298391 | 22 hrs ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45290920 | 28 hrs ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45288589 | 30 hrs ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45265066 | 2 days ago | IN | 0 BNB | 0.00017638 | ||||
Swap BNB To GOUT... | 45243296 | 2 days ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45233787 | 3 days ago | IN | 0 BNB | 0.00017638 | ||||
Swap BNB To GOUT... | 45225352 | 3 days ago | IN | 0 BNB | 0.0001659 | ||||
Swap BNB To GOUT... | 45214772 | 3 days ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45209260 | 4 days ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45191686 | 4 days ago | IN | 0 BNB | 0.00017638 | ||||
Swap BNB To GOUT... | 45181234 | 4 days ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45173422 | 5 days ago | IN | 0 BNB | 0.00017638 | ||||
Swap BNB To GOUT... | 45153386 | 5 days ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45145449 | 6 days ago | IN | 0 BNB | 0.00017638 | ||||
Swap BNB To GOUT... | 45129978 | 6 days ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45127445 | 6 days ago | IN | 0 BNB | 0.0001488 | ||||
Swap BNB To GOUT... | 45123675 | 6 days ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45116453 | 7 days ago | IN | 0 BNB | 0.0001659 | ||||
Swap BNB To GOUT... | 45112515 | 7 days ago | IN | 0 BNB | 0.00017638 | ||||
Swap BNB To GOUT... | 45110903 | 7 days ago | IN | 0 BNB | 0.0001659 | ||||
Swap BNB To GOUT... | 45110346 | 7 days ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45106993 | 7 days ago | IN | 0 BNB | 0.00015928 | ||||
Swap BNB To GOUT... | 45102286 | 7 days ago | IN | 0 BNB | 0.00015928 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
45325056 | 4 mins ago | 0.00059921 BNB | ||||
45325049 | 4 mins ago | 0.00030262 BNB | ||||
45325009 | 6 mins ago | 0.0002049 BNB | ||||
45324964 | 8 mins ago | 0.10200936 BNB | ||||
45324954 | 9 mins ago | 0.00016754 BNB | ||||
45324952 | 9 mins ago | 0.00016392 BNB | ||||
45324951 | 9 mins ago | 0.0049313 BNB | ||||
45324914 | 11 mins ago | 0.0002767 BNB | ||||
45324787 | 17 mins ago | 0.00119814 BNB | ||||
45324780 | 17 mins ago | 0.00070609 BNB | ||||
45324780 | 17 mins ago | 0.00183841 BNB | ||||
45324561 | 28 mins ago | 0.00029827 BNB | ||||
45324556 | 29 mins ago | 0.00029619 BNB | ||||
45324544 | 29 mins ago | 0.00100128 BNB | ||||
45324544 | 29 mins ago | 0.00144903 BNB | ||||
45324544 | 29 mins ago | 0.00035308 BNB | ||||
45324544 | 29 mins ago | 0.00011373 BNB | ||||
45324544 | 29 mins ago | 0.00035251 BNB | ||||
45324544 | 29 mins ago | 0.00035372 BNB | ||||
45324544 | 29 mins ago | 0.00035523 BNB | ||||
45324521 | 30 mins ago | 0.00087215 BNB | ||||
45324521 | 30 mins ago | 0.00133479 BNB | ||||
45324506 | 31 mins ago | 0.0000939 BNB | ||||
45324483 | 32 mins ago | 0.00001245 BNB | ||||
45324482 | 32 mins ago | 0.0003422 BNB |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BasePricePool
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2024-12-18 */ // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.20; /** * @dev Interface for the optional metadata functions from the ERC-20 standard. */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol) pragma solidity ^0.8.20; /** * @dev Standard ERC-20 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens. */ interface IERC20Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC20InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC20InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers. * @param spender Address that may be allowed to operate on tokens without being their owner. * @param allowance Amount of tokens a `spender` is allowed to operate with. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC20InvalidApprover(address approver); /** * @dev Indicates a failure with the `spender` to be approved. Used in approvals. * @param spender Address that may be allowed to operate on tokens without being their owner. */ error ERC20InvalidSpender(address spender); } /** * @dev Standard ERC-721 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens. */ interface IERC721Errors { /** * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. * Used in balance queries. * @param owner Address of the current owner of a token. */ error ERC721InvalidOwner(address owner); /** * @dev Indicates a `tokenId` whose `owner` is the zero address. * @param tokenId Identifier number of a token. */ error ERC721NonexistentToken(uint256 tokenId); /** * @dev Indicates an error related to the ownership over a particular token. Used in transfers. * @param sender Address whose tokens are being transferred. * @param tokenId Identifier number of a token. * @param owner Address of the current owner of a token. */ error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC721InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC721InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param tokenId Identifier number of a token. */ error ERC721InsufficientApproval(address operator, uint256 tokenId); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC721InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC721InvalidOperator(address operator); } /** * @dev Standard ERC-1155 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens. */ interface IERC1155Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. * @param tokenId Identifier number of a token. */ error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC1155InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC1155InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param owner Address of the current owner of a token. */ error ERC1155MissingApprovalForAll(address operator, address owner); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC1155InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC1155InvalidOperator(address operator); /** * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. * Used in batch transfers. * @param idsLength Length of the array of token identifiers * @param valuesLength Length of the array of token amounts */ error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.20; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC-20 * applications. */ abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address account => uint256) private _balances; mapping(address account => mapping(address spender => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `value`. */ function transfer(address to, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _transfer(owner, to, value); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, value); return true; } /** * @dev See {IERC20-transferFrom}. * * Skips emitting an {Approval} event indicating an allowance update. This is not * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `value`. * - the caller must have allowance for ``from``'s tokens of at least * `value`. */ function transferFrom(address from, address to, uint256 value) public virtual returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _transfer(from, to, value); return true; } /** * @dev Moves a `value` amount of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _transfer(address from, address to, uint256 value) virtual internal { if (from == address(0)) { revert ERC20InvalidSender(address(0)); } if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(from, to, value); } /** * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from` * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding * this function. * * Emits a {Transfer} event. */ function _update(address from, address to, uint256 value) internal virtual { if (from == address(0)) { // Overflow check required: The rest of the code assumes that totalSupply never overflows _totalSupply += value; } else { uint256 fromBalance = _balances[from]; if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); } unchecked { // Overflow not possible: value <= fromBalance <= totalSupply. _balances[from] = fromBalance - value; } } if (to == address(0)) { unchecked { // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply. _totalSupply -= value; } } else { unchecked { // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256. _balances[to] += value; } } emit Transfer(from, to, value); } /** * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0). * Relies on the `_update` mechanism * * Emits a {Transfer} event with `from` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _mint(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(address(0), account, value); } /** * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply. * Relies on the `_update` mechanism. * * Emits a {Transfer} event with `to` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead */ function _burn(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidSender(address(0)); } _update(account, address(0), value); } /** * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. * * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument. */ function _approve(address owner, address spender, uint256 value) internal { _approve(owner, spender, value, true); } /** * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event. * * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any * `Approval` event during `transferFrom` operations. * * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to * true using the following override: * * ```solidity * function _approve(address owner, address spender, uint256 value, bool) internal virtual override { * super._approve(owner, spender, value, true); * } * ``` * * Requirements are the same as {_approve}. */ function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = value; if (emitEvent) { emit Approval(owner, spender, value); } } /** * @dev Updates `owner` s allowance for `spender` based on spent `value`. * * Does not update the allowance value in case of infinite allowance. * Revert if not enough allowance is available. * * Does not emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 value) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); } unchecked { _approve(owner, spender, currentAllowance - value, false); } } } } // File: 1218/basePricePoolv2.sol pragma solidity ^0.8.0; pragma solidity ^0.8.0; interface IPancakeFactory { function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IPancakeRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; } library TransferHelper { //TODO: Replace in deloy script function safeApprove(address token, address to, uint value) internal returns (bool){ // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); return (success && (data.length == 0 || abi.decode(data, (bool)))); } function safeTransfer(address token, address to, uint value) internal returns (bool){ // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); return (success && (data.length == 0 || abi.decode(data, (bool)))); } function safeTransferFrom(address token, address from, address to, uint value) internal returns (bool){ // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); return (success && (data.length == 0 || abi.decode(data, (bool)))); } } contract BasePricePool is Ownable { using SafeMath for uint256; address private WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c; address private USDT = 0x55d398326f99059fF775485246999027B3197955; IPancakeRouter router = IPancakeRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E); address public manageProvider = 0x7E6F57883506C4417D2Aea274b1e2520becfDd57; address public GOUT = 0xF86AF2FBcf6A0479B21b1d3a4Af3893F63207FE7; address public coinAddress; address private pairETH; address private pairUSDT; uint256 public minWithdraw = 1000 ether; uint256 public minEthAmount = 1*10**17; uint256 public maxEthAmount = 1 ether; event Change(uint256 _amount, uint256 _coinAmount); event WithdrawGOUT(uint256 coinAmount, address coinAddress, uint256 goutAmount, bool success1, bool success2, uint256 time); constructor(address initialOwner) Ownable(initialOwner){ } modifier onlyManageProvider() { require(msg.sender == manageProvider, "You are not the manage provider"); _; } receive() external payable { } function setManageProvider(address _address) external onlyOwner { manageProvider=_address; } function setCoinAddress(address _coinAddress) external onlyOwner { coinAddress = _coinAddress; IPancakeFactory factory = IPancakeFactory(router.factory()); pairETH = factory.getPair(router.WETH(), coinAddress); pairUSDT = factory.getPair(USDT, coinAddress); } function setMinWithdraw(uint256 _minWithdraw) external onlyManageProvider { minWithdraw = _minWithdraw; } function setMinMaxEthAmount(uint256 _minEthAmount, uint256 _maxEthAmount) external onlyManageProvider { require(_minEthAmount <= _maxEthAmount, "_minEthAmount cannot greater than _maxEthAmount"); minEthAmount = _minEthAmount; maxEthAmount = _maxEthAmount; } function getWithdrawOut(uint256 amountIn) public view returns (uint256) { if(pairETH == address(0) || pairETH == address(0)) { return 0; } IERC20 coinERC20 = IERC20(coinAddress); uint256 total = coinERC20.totalSupply() - coinERC20.balanceOf(address(0xdead)) - coinERC20.balanceOf(pairETH) - coinERC20.balanceOf(pairUSDT); return amountIn.mul(IERC20(GOUT).balanceOf(address(this))).div(total); } function withdrawGOUT(uint256 amount) external { require(amount >= minWithdraw, "Error: amount min"); require(pairETH != address(0), "Error: pairETH error"); require(pairUSDT != address(0), "Error: pairUSDT error"); IERC20 coinERC20 = IERC20(coinAddress); uint256 balanceBefore = coinERC20.balanceOf(address(this)); bool success = TransferHelper.safeTransferFrom(coinAddress,msg.sender,address(this),amount); uint256 balanceAfter = coinERC20.balanceOf(address(this)); uint256 _amount = balanceAfter.sub(balanceBefore); require(success && _amount != 0,"Error"); uint256 outGout = getWithdrawOut(_amount); uint256 goutBalance = IERC20(GOUT).balanceOf(address(this)); require(goutBalance >= outGout,"Error: not enough"); if(outGout > 0) { bool success2 = TransferHelper.safeTransfer(GOUT,msg.sender,outGout); bool success1 = TransferHelper.safeTransfer(coinAddress,address(0xdead),_amount); emit WithdrawGOUT(_amount, coinAddress, outGout, success1, success2, block.timestamp); } swapBNBToGOUT(); } function swapBNBToGOUTByManager() external onlyManageProvider{ swapBNBToGOUT(); } function swapBNBToGOUT() internal { uint256 _b = address(this).balance; if(_b > 0 && _b >= minEthAmount) { if(_b > maxEthAmount) { _b = maxEthAmount; } uint256 _createTime=block.timestamp; address[] memory path = new address[](2); path[0] = WBNB; path[1] = GOUT; uint256 beforeB = ERC20(GOUT).balanceOf(address(this)); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: _b}( 1, path, address(this), _createTime+600 ); uint256 afterB = ERC20(GOUT).balanceOf(address(this)); emit Change(_b, afterB.sub(beforeB)); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_coinAmount","type":"uint256"}],"name":"Change","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":"coinAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"coinAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"goutAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success1","type":"bool"},{"indexed":false,"internalType":"bool","name":"success2","type":"bool"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"WithdrawGOUT","type":"event"},{"inputs":[],"name":"GOUT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coinAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"getWithdrawOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manageProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxEthAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minEthAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_coinAddress","type":"address"}],"name":"setCoinAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setManageProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minEthAmount","type":"uint256"},{"internalType":"uint256","name":"_maxEthAmount","type":"uint256"}],"name":"setMinMaxEthAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minWithdraw","type":"uint256"}],"name":"setMinWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBNBToGOUTByManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawGOUT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405273bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507355d398326f99059ff775485246999027b319795560025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310ed43c718714eb63d5aa57b78b54704e256024e60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737e6f57883506c4417d2aea274b1e2520becfdd5760045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f86af2fbcf6a0479b21b1d3a4af3893f63207fe760055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550683635c9adc5dea0000060095567016345785d8a0000600a55670de0b6b3a7640000600b553480156101d8575f80fd5b506040516127f73803806127f783398181016040528101906101fa91906103a0565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361026b575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161026291906103da565b60405180910390fd5b61027a8161028160201b60201c565b50506103f3565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61036f82610346565b9050919050565b61037f81610365565b8114610389575f80fd5b50565b5f8151905061039a81610376565b92915050565b5f602082840312156103b5576103b4610342565b5b5f6103c28482850161038c565b91505092915050565b6103d481610365565b82525050565b5f6020820190506103ed5f8301846103cb565b92915050565b6123f7806104005f395ff3fe6080604052600436106100f6575f3560e01c80638da5cb5b11610089578063cc3d272111610058578063cc3d2721146102db578063e02ceb5114610305578063f2fde38b1461032d578063fdc61dd114610355576100fd565b80638da5cb5b146102235780639947fb331461024d578063b0bdacc614610289578063b87d5002146102b1576100fd565b80636474b66c116100c55780636474b66c146101a5578063659a27b8146101cd578063715018a6146101e35780637fb6085f146101f9576100fd565b806319fc5b881461010157806335aa134a1461012b5780635c9fe3181461015357806360f585101461017b576100fd565b366100fd57005b5f80fd5b34801561010c575f80fd5b5061011561037f565b6040516101229190611a2a565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c9190611a71565b610385565b005b34801561015e575f80fd5b5061017960048036038101906101749190611af6565b61041e565b005b348015610186575f80fd5b5061018f610469565b60405161019c9190611b30565b60405180910390f35b3480156101b0575f80fd5b506101cb60048036038101906101c69190611a71565b61048e565b005b3480156101d8575f80fd5b506101e1610968565b005b3480156101ee575f80fd5b506101f7610a01565b005b348015610204575f80fd5b5061020d610a14565b60405161021a9190611a2a565b60405180910390f35b34801561022e575f80fd5b50610237610a1a565b6040516102449190611b30565b60405180910390f35b348015610258575f80fd5b50610273600480360381019061026e9190611a71565b610a41565b6040516102809190611a2a565b60405180910390f35b348015610294575f80fd5b506102af60048036038101906102aa9190611af6565b610e1c565b005b3480156102bc575f80fd5b506102c561115b565b6040516102d29190611b30565b60405180910390f35b3480156102e6575f80fd5b506102ef611180565b6040516102fc9190611a2a565b60405180910390f35b348015610310575f80fd5b5061032b60048036038101906103269190611b49565b611186565b005b348015610338575f80fd5b50610353600480360381019061034e9190611af6565b61126a565b005b348015610360575f80fd5b506103696112ee565b6040516103769190611b30565b60405180910390f35b600a5481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040b90611be1565b60405180910390fd5b8060098190555050565b610426611313565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6009548110156104d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ca90611c49565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055990611cb1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036105f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e890611d19565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106509190611b30565b602060405180830381865afa15801561066b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068f9190611d4b565b90505f6106bf60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633308761139a565b90505f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106fb9190611b30565b602060405180830381865afa158015610716573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073a9190611d4b565b90505f610750848361149390919063ffffffff16565b905082801561075f57505f8114155b61079e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079590611dc0565b60405180910390fd5b5f6107a882610a41565b90505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108059190611b30565b602060405180830381865afa158015610820573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108449190611d4b565b905081811015610889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088090611e28565b60405180910390fd5b5f821115610956575f6108be60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856114a8565b90505f6108ef60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead876114a8565b90507ff3724e7fb71201aff0849579aef3240f917fe9c36f5b5ad7fe39e74972e8af348560065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168684864260405161094b96959493929190611e60565b60405180910390a150505b61095e61159e565b5050505050505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee90611be1565b60405180910390fd5b6109ff61159e565b565b610a09611313565b610a125f611920565b565b600b5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8073ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610ae957505f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610af6575f9050610e17565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff166370a0823160085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610b769190611b30565b602060405180830381865afa158015610b91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb59190611d4b565b8273ffffffffffffffffffffffffffffffffffffffff166370a0823160075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610c0f9190611b30565b602060405180830381865afa158015610c2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4e9190611d4b565b8373ffffffffffffffffffffffffffffffffffffffff166370a0823161dead6040518263ffffffff1660e01b8152600401610c899190611b30565b602060405180830381865afa158015610ca4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc89190611d4b565b8473ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d359190611d4b565b610d3f9190611eec565b610d499190611eec565b610d539190611eec565b9050610e1281610e0460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610db69190611b30565b602060405180830381865afa158015610dd1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df59190611d4b565b876119e190919063ffffffff16565b6119f690919063ffffffff16565b925050505b919050565b610e24611313565b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ecf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef39190611f33565b90508073ffffffffffffffffffffffffffffffffffffffff1663e6a4390560035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9f9190611f33565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610fde929190611f5e565b602060405180830381865afa158015610ff9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101d9190611f33565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663e6a4390560025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016110d9929190611f5e565b602060405180830381865afa1580156110f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111189190611f33565b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120c90611be1565b60405180910390fd5b80821115611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124f90611ff5565b60405180910390fd5b81600a8190555080600b819055505050565b611272611313565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112e2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016112d99190611b30565b60405180910390fd5b6112eb81611920565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61131b611a0b565b73ffffffffffffffffffffffffffffffffffffffff16611339610a1a565b73ffffffffffffffffffffffffffffffffffffffff16146113985761135c611a0b565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161138f9190611b30565b60405180910390fd5b565b5f805f8673ffffffffffffffffffffffffffffffffffffffff166323b872dd8787876040516024016113ce93929190612013565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161141c919061209a565b5f604051808303815f865af19150503d805f8114611455576040519150601f19603f3d011682016040523d82523d5f602084013e61145a565b606091505b509150915081801561148757505f8151148061148657508080602001905181019061148591906120da565b5b5b92505050949350505050565b5f81836114a09190611eec565b905092915050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86866040516024016114da929190612105565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611528919061209a565b5f604051808303815f865af19150503d805f8114611561576040519150601f19603f3d011682016040523d82523d5f602084013e611566565b606091505b509150915081801561159357505f8151148061159257508080602001905181019061159191906120da565b5b5b925050509392505050565b5f4790505f811180156115b35750600a548110155b1561191d57600b548111156115c857600b5490505b5f4290505f600267ffffffffffffffff8111156115e8576115e761212c565b5b6040519080825280602002602001820160405280156116165781602001602082028036833780820191505090505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815f8151811061164e5761164d612159565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106116be576116bd612159565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117539190611b30565b602060405180830381865afa15801561176e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117929190611d4b565b905060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958560018530610258896117e49190612186565b6040518663ffffffff1660e01b815260040161180394939291906122b2565b5f604051808303818588803b15801561181a575f80fd5b505af115801561182c573d5f803e3d5ffd5b50505050505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161188c9190611b30565b602060405180830381865afa1580156118a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cb9190611d4b565b90507f7016719027ff29c13bc4816903851ea968172a86b766c733b954fdabe53c87ee85611902848461149390919063ffffffff16565b6040516119109291906122fc565b60405180910390a1505050505b50565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836119ee9190612323565b905092915050565b5f8183611a039190612391565b905092915050565b5f33905090565b5f819050919050565b611a2481611a12565b82525050565b5f602082019050611a3d5f830184611a1b565b92915050565b5f80fd5b611a5081611a12565b8114611a5a575f80fd5b50565b5f81359050611a6b81611a47565b92915050565b5f60208284031215611a8657611a85611a43565b5b5f611a9384828501611a5d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ac582611a9c565b9050919050565b611ad581611abb565b8114611adf575f80fd5b50565b5f81359050611af081611acc565b92915050565b5f60208284031215611b0b57611b0a611a43565b5b5f611b1884828501611ae2565b91505092915050565b611b2a81611abb565b82525050565b5f602082019050611b435f830184611b21565b92915050565b5f8060408385031215611b5f57611b5e611a43565b5b5f611b6c85828601611a5d565b9250506020611b7d85828601611a5d565b9150509250929050565b5f82825260208201905092915050565b7f596f7520617265206e6f7420746865206d616e6167652070726f7669646572005f82015250565b5f611bcb601f83611b87565b9150611bd682611b97565b602082019050919050565b5f6020820190508181035f830152611bf881611bbf565b9050919050565b7f4572726f723a20616d6f756e74206d696e0000000000000000000000000000005f82015250565b5f611c33601183611b87565b9150611c3e82611bff565b602082019050919050565b5f6020820190508181035f830152611c6081611c27565b9050919050565b7f4572726f723a2070616972455448206572726f720000000000000000000000005f82015250565b5f611c9b601483611b87565b9150611ca682611c67565b602082019050919050565b5f6020820190508181035f830152611cc881611c8f565b9050919050565b7f4572726f723a207061697255534454206572726f7200000000000000000000005f82015250565b5f611d03601583611b87565b9150611d0e82611ccf565b602082019050919050565b5f6020820190508181035f830152611d3081611cf7565b9050919050565b5f81519050611d4581611a47565b92915050565b5f60208284031215611d6057611d5f611a43565b5b5f611d6d84828501611d37565b91505092915050565b7f4572726f720000000000000000000000000000000000000000000000000000005f82015250565b5f611daa600583611b87565b9150611db582611d76565b602082019050919050565b5f6020820190508181035f830152611dd781611d9e565b9050919050565b7f4572726f723a206e6f7420656e6f7567680000000000000000000000000000005f82015250565b5f611e12601183611b87565b9150611e1d82611dde565b602082019050919050565b5f6020820190508181035f830152611e3f81611e06565b9050919050565b5f8115159050919050565b611e5a81611e46565b82525050565b5f60c082019050611e735f830189611a1b565b611e806020830188611b21565b611e8d6040830187611a1b565b611e9a6060830186611e51565b611ea76080830185611e51565b611eb460a0830184611a1b565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ef682611a12565b9150611f0183611a12565b9250828203905081811115611f1957611f18611ebf565b5b92915050565b5f81519050611f2d81611acc565b92915050565b5f60208284031215611f4857611f47611a43565b5b5f611f5584828501611f1f565b91505092915050565b5f604082019050611f715f830185611b21565b611f7e6020830184611b21565b9392505050565b7f5f6d696e457468416d6f756e742063616e6e6f742067726561746572207468615f8201527f6e205f6d6178457468416d6f756e740000000000000000000000000000000000602082015250565b5f611fdf602f83611b87565b9150611fea82611f85565b604082019050919050565b5f6020820190508181035f83015261200c81611fd3565b9050919050565b5f6060820190506120265f830186611b21565b6120336020830185611b21565b6120406040830184611a1b565b949350505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61207482612048565b61207e8185612052565b935061208e81856020860161205c565b80840191505092915050565b5f6120a5828461206a565b915081905092915050565b6120b981611e46565b81146120c3575f80fd5b50565b5f815190506120d4816120b0565b92915050565b5f602082840312156120ef576120ee611a43565b5b5f6120fc848285016120c6565b91505092915050565b5f6040820190506121185f830185611b21565b6121256020830184611a1b565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61219082611a12565b915061219b83611a12565b92508282019050808211156121b3576121b2611ebf565b5b92915050565b5f819050919050565b5f819050919050565b5f6121e56121e06121db846121b9565b6121c2565b611a12565b9050919050565b6121f5816121cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61222d81611abb565b82525050565b5f61223e8383612224565b60208301905092915050565b5f602082019050919050565b5f612260826121fb565b61226a8185612205565b935061227583612215565b805f5b838110156122a557815161228c8882612233565b97506122978361224a565b925050600181019050612278565b5085935050505092915050565b5f6080820190506122c55f8301876121ec565b81810360208301526122d78186612256565b90506122e66040830185611b21565b6122f36060830184611a1b565b95945050505050565b5f60408201905061230f5f830185611a1b565b61231c6020830184611a1b565b9392505050565b5f61232d82611a12565b915061233883611a12565b925082820261234681611a12565b9150828204841483151761235d5761235c611ebf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61239b82611a12565b91506123a683611a12565b9250826123b6576123b5612364565b5b82820490509291505056fea264697066735822122037012c7a11f8a93f745212528a1605753c03d6c46381d80a19cd48b17e396e5f64736f6c634300081a0033000000000000000000000000acb4628159ee982072d6c34220d74114b2af8ceb
Deployed Bytecode
0x6080604052600436106100f6575f3560e01c80638da5cb5b11610089578063cc3d272111610058578063cc3d2721146102db578063e02ceb5114610305578063f2fde38b1461032d578063fdc61dd114610355576100fd565b80638da5cb5b146102235780639947fb331461024d578063b0bdacc614610289578063b87d5002146102b1576100fd565b80636474b66c116100c55780636474b66c146101a5578063659a27b8146101cd578063715018a6146101e35780637fb6085f146101f9576100fd565b806319fc5b881461010157806335aa134a1461012b5780635c9fe3181461015357806360f585101461017b576100fd565b366100fd57005b5f80fd5b34801561010c575f80fd5b5061011561037f565b6040516101229190611a2a565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c9190611a71565b610385565b005b34801561015e575f80fd5b5061017960048036038101906101749190611af6565b61041e565b005b348015610186575f80fd5b5061018f610469565b60405161019c9190611b30565b60405180910390f35b3480156101b0575f80fd5b506101cb60048036038101906101c69190611a71565b61048e565b005b3480156101d8575f80fd5b506101e1610968565b005b3480156101ee575f80fd5b506101f7610a01565b005b348015610204575f80fd5b5061020d610a14565b60405161021a9190611a2a565b60405180910390f35b34801561022e575f80fd5b50610237610a1a565b6040516102449190611b30565b60405180910390f35b348015610258575f80fd5b50610273600480360381019061026e9190611a71565b610a41565b6040516102809190611a2a565b60405180910390f35b348015610294575f80fd5b506102af60048036038101906102aa9190611af6565b610e1c565b005b3480156102bc575f80fd5b506102c561115b565b6040516102d29190611b30565b60405180910390f35b3480156102e6575f80fd5b506102ef611180565b6040516102fc9190611a2a565b60405180910390f35b348015610310575f80fd5b5061032b60048036038101906103269190611b49565b611186565b005b348015610338575f80fd5b50610353600480360381019061034e9190611af6565b61126a565b005b348015610360575f80fd5b506103696112ee565b6040516103769190611b30565b60405180910390f35b600a5481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040b90611be1565b60405180910390fd5b8060098190555050565b610426611313565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6009548110156104d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ca90611c49565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055990611cb1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036105f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e890611d19565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106509190611b30565b602060405180830381865afa15801561066b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068f9190611d4b565b90505f6106bf60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633308761139a565b90505f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106fb9190611b30565b602060405180830381865afa158015610716573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073a9190611d4b565b90505f610750848361149390919063ffffffff16565b905082801561075f57505f8114155b61079e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079590611dc0565b60405180910390fd5b5f6107a882610a41565b90505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108059190611b30565b602060405180830381865afa158015610820573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108449190611d4b565b905081811015610889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088090611e28565b60405180910390fd5b5f821115610956575f6108be60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856114a8565b90505f6108ef60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead876114a8565b90507ff3724e7fb71201aff0849579aef3240f917fe9c36f5b5ad7fe39e74972e8af348560065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168684864260405161094b96959493929190611e60565b60405180910390a150505b61095e61159e565b5050505050505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee90611be1565b60405180910390fd5b6109ff61159e565b565b610a09611313565b610a125f611920565b565b600b5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8073ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610ae957505f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610af6575f9050610e17565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff166370a0823160085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610b769190611b30565b602060405180830381865afa158015610b91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb59190611d4b565b8273ffffffffffffffffffffffffffffffffffffffff166370a0823160075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610c0f9190611b30565b602060405180830381865afa158015610c2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4e9190611d4b565b8373ffffffffffffffffffffffffffffffffffffffff166370a0823161dead6040518263ffffffff1660e01b8152600401610c899190611b30565b602060405180830381865afa158015610ca4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc89190611d4b565b8473ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d359190611d4b565b610d3f9190611eec565b610d499190611eec565b610d539190611eec565b9050610e1281610e0460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610db69190611b30565b602060405180830381865afa158015610dd1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df59190611d4b565b876119e190919063ffffffff16565b6119f690919063ffffffff16565b925050505b919050565b610e24611313565b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ecf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef39190611f33565b90508073ffffffffffffffffffffffffffffffffffffffff1663e6a4390560035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9f9190611f33565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610fde929190611f5e565b602060405180830381865afa158015610ff9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101d9190611f33565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663e6a4390560025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016110d9929190611f5e565b602060405180830381865afa1580156110f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111189190611f33565b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120c90611be1565b60405180910390fd5b80821115611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124f90611ff5565b60405180910390fd5b81600a8190555080600b819055505050565b611272611313565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112e2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016112d99190611b30565b60405180910390fd5b6112eb81611920565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61131b611a0b565b73ffffffffffffffffffffffffffffffffffffffff16611339610a1a565b73ffffffffffffffffffffffffffffffffffffffff16146113985761135c611a0b565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161138f9190611b30565b60405180910390fd5b565b5f805f8673ffffffffffffffffffffffffffffffffffffffff166323b872dd8787876040516024016113ce93929190612013565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161141c919061209a565b5f604051808303815f865af19150503d805f8114611455576040519150601f19603f3d011682016040523d82523d5f602084013e61145a565b606091505b509150915081801561148757505f8151148061148657508080602001905181019061148591906120da565b5b5b92505050949350505050565b5f81836114a09190611eec565b905092915050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86866040516024016114da929190612105565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611528919061209a565b5f604051808303815f865af19150503d805f8114611561576040519150601f19603f3d011682016040523d82523d5f602084013e611566565b606091505b509150915081801561159357505f8151148061159257508080602001905181019061159191906120da565b5b5b925050509392505050565b5f4790505f811180156115b35750600a548110155b1561191d57600b548111156115c857600b5490505b5f4290505f600267ffffffffffffffff8111156115e8576115e761212c565b5b6040519080825280602002602001820160405280156116165781602001602082028036833780820191505090505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815f8151811061164e5761164d612159565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106116be576116bd612159565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117539190611b30565b602060405180830381865afa15801561176e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117929190611d4b565b905060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958560018530610258896117e49190612186565b6040518663ffffffff1660e01b815260040161180394939291906122b2565b5f604051808303818588803b15801561181a575f80fd5b505af115801561182c573d5f803e3d5ffd5b50505050505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161188c9190611b30565b602060405180830381865afa1580156118a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cb9190611d4b565b90507f7016719027ff29c13bc4816903851ea968172a86b766c733b954fdabe53c87ee85611902848461149390919063ffffffff16565b6040516119109291906122fc565b60405180910390a1505050505b50565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836119ee9190612323565b905092915050565b5f8183611a039190612391565b905092915050565b5f33905090565b5f819050919050565b611a2481611a12565b82525050565b5f602082019050611a3d5f830184611a1b565b92915050565b5f80fd5b611a5081611a12565b8114611a5a575f80fd5b50565b5f81359050611a6b81611a47565b92915050565b5f60208284031215611a8657611a85611a43565b5b5f611a9384828501611a5d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ac582611a9c565b9050919050565b611ad581611abb565b8114611adf575f80fd5b50565b5f81359050611af081611acc565b92915050565b5f60208284031215611b0b57611b0a611a43565b5b5f611b1884828501611ae2565b91505092915050565b611b2a81611abb565b82525050565b5f602082019050611b435f830184611b21565b92915050565b5f8060408385031215611b5f57611b5e611a43565b5b5f611b6c85828601611a5d565b9250506020611b7d85828601611a5d565b9150509250929050565b5f82825260208201905092915050565b7f596f7520617265206e6f7420746865206d616e6167652070726f7669646572005f82015250565b5f611bcb601f83611b87565b9150611bd682611b97565b602082019050919050565b5f6020820190508181035f830152611bf881611bbf565b9050919050565b7f4572726f723a20616d6f756e74206d696e0000000000000000000000000000005f82015250565b5f611c33601183611b87565b9150611c3e82611bff565b602082019050919050565b5f6020820190508181035f830152611c6081611c27565b9050919050565b7f4572726f723a2070616972455448206572726f720000000000000000000000005f82015250565b5f611c9b601483611b87565b9150611ca682611c67565b602082019050919050565b5f6020820190508181035f830152611cc881611c8f565b9050919050565b7f4572726f723a207061697255534454206572726f7200000000000000000000005f82015250565b5f611d03601583611b87565b9150611d0e82611ccf565b602082019050919050565b5f6020820190508181035f830152611d3081611cf7565b9050919050565b5f81519050611d4581611a47565b92915050565b5f60208284031215611d6057611d5f611a43565b5b5f611d6d84828501611d37565b91505092915050565b7f4572726f720000000000000000000000000000000000000000000000000000005f82015250565b5f611daa600583611b87565b9150611db582611d76565b602082019050919050565b5f6020820190508181035f830152611dd781611d9e565b9050919050565b7f4572726f723a206e6f7420656e6f7567680000000000000000000000000000005f82015250565b5f611e12601183611b87565b9150611e1d82611dde565b602082019050919050565b5f6020820190508181035f830152611e3f81611e06565b9050919050565b5f8115159050919050565b611e5a81611e46565b82525050565b5f60c082019050611e735f830189611a1b565b611e806020830188611b21565b611e8d6040830187611a1b565b611e9a6060830186611e51565b611ea76080830185611e51565b611eb460a0830184611a1b565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ef682611a12565b9150611f0183611a12565b9250828203905081811115611f1957611f18611ebf565b5b92915050565b5f81519050611f2d81611acc565b92915050565b5f60208284031215611f4857611f47611a43565b5b5f611f5584828501611f1f565b91505092915050565b5f604082019050611f715f830185611b21565b611f7e6020830184611b21565b9392505050565b7f5f6d696e457468416d6f756e742063616e6e6f742067726561746572207468615f8201527f6e205f6d6178457468416d6f756e740000000000000000000000000000000000602082015250565b5f611fdf602f83611b87565b9150611fea82611f85565b604082019050919050565b5f6020820190508181035f83015261200c81611fd3565b9050919050565b5f6060820190506120265f830186611b21565b6120336020830185611b21565b6120406040830184611a1b565b949350505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61207482612048565b61207e8185612052565b935061208e81856020860161205c565b80840191505092915050565b5f6120a5828461206a565b915081905092915050565b6120b981611e46565b81146120c3575f80fd5b50565b5f815190506120d4816120b0565b92915050565b5f602082840312156120ef576120ee611a43565b5b5f6120fc848285016120c6565b91505092915050565b5f6040820190506121185f830185611b21565b6121256020830184611a1b565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61219082611a12565b915061219b83611a12565b92508282019050808211156121b3576121b2611ebf565b5b92915050565b5f819050919050565b5f819050919050565b5f6121e56121e06121db846121b9565b6121c2565b611a12565b9050919050565b6121f5816121cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61222d81611abb565b82525050565b5f61223e8383612224565b60208301905092915050565b5f602082019050919050565b5f612260826121fb565b61226a8185612205565b935061227583612215565b805f5b838110156122a557815161228c8882612233565b97506122978361224a565b925050600181019050612278565b5085935050505092915050565b5f6080820190506122c55f8301876121ec565b81810360208301526122d78186612256565b90506122e66040830185611b21565b6122f36060830184611a1b565b95945050505050565b5f60408201905061230f5f830185611a1b565b61231c6020830184611a1b565b9392505050565b5f61232d82611a12565b915061233883611a12565b925082820261234681611a12565b9150828204841483151761235d5761235c611ebf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61239b82611a12565b91506123a683611a12565b9250826123b6576123b5612364565b5b82820490509291505056fea264697066735822122037012c7a11f8a93f745212528a1605753c03d6c46381d80a19cd48b17e396e5f64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000acb4628159ee982072d6c34220d74114b2af8ceb
-----Decoded View---------------
Arg [0] : initialOwner (address): 0xAcb4628159EE982072d6C34220d74114B2AF8cEB
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000acb4628159ee982072d6c34220d74114b2af8ceb
Deployed Bytecode Sourcemap
34264:4606:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34871:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35831:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35407:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34573:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36763:1194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37965:95;;;;;;;;;;;;;:::i;:::-;;3361:103;;;;;;;;;;;;;:::i;:::-;;34916:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2686:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36257:498;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35523:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34656:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34825:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35959:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3619:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34727:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34871:38;;;;:::o;35831:120::-;35286:14;;;;;;;;;;;35272:28;;:10;:28;;;35264:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;35931:12:::1;35917:11;:26;;;;35831:120:::0;:::o;35407:108::-;2572:13;:11;:13::i;:::-;35497:8:::1;35482:14;;:23;;;;;;;;;;;;;;;;;;35407:108:::0;:::o;34573:74::-;;;;;;;;;;;;;:::o;36763:1194::-;36839:11;;36829:6;:21;;36821:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;36910:1;36891:21;;:7;;;;;;;;;;;:21;;;36883:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;36976:1;36956:22;;:8;;;;;;;;;;;:22;;;36948:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;37017:16;37043:11;;;;;;;;;;;37017:38;;37068:21;37092:9;:19;;;37120:4;37092:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37068:58;;37137:12;37152:76;37184:11;;;;;;;;;;;37196:10;37215:4;37221:6;37152:31;:76::i;:::-;37137:91;;37239:20;37262:9;:19;;;37290:4;37262:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37239:57;;37307:15;37325:31;37342:13;37325:12;:16;;:31;;;;:::i;:::-;37307:49;;37375:7;:23;;;;;37397:1;37386:7;:12;;37375:23;37367:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;37428:15;37446:23;37461:7;37446:14;:23::i;:::-;37428:41;;37480:19;37509:4;;;;;;;;;;;37502:22;;;37533:4;37502:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37480:59;;37573:7;37558:11;:22;;37550:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;37625:1;37615:7;:11;37612:310;;;37643:13;37660:52;37688:4;;;;;;;;;;;37693:10;37704:7;37660:27;:52::i;:::-;37643:69;;37727:13;37744:64;37772:11;;;;;;;;;;;37792:6;37800:7;37744:27;:64::i;:::-;37727:81;;37830:80;37843:7;37852:11;;;;;;;;;;;37865:7;37874:8;37884;37894:15;37830:80;;;;;;;;;;;:::i;:::-;;;;;;;;37628:294;;37612:310;37934:15;:13;:15::i;:::-;36810:1147;;;;;;;36763:1194;:::o;37965:95::-;35286:14;;;;;;;;;;;35272:28;;:10;:28;;;35264:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;38037:15:::1;:13;:15::i;:::-;37965:95::o:0;3361:103::-;2572:13;:11;:13::i;:::-;3426:30:::1;3453:1;3426:18;:30::i;:::-;3361:103::o:0;34916:37::-;;;;:::o;2686:87::-;2732:7;2759:6;;;;;;;;;;;2752:13;;2686:87;:::o;36257:498::-;36320:7;36362:1;36343:21;;:7;;;;;;;;;;;:21;;;:46;;;;36387:1;36368:21;;:7;;;;;;;;;;;:21;;;36343:46;36340:86;;;36413:1;36406:8;;;;36340:86;36436:16;36462:11;;;;;;;;;;;36436:38;;36485:13;36636:9;:19;;;36656:8;;;;;;;;;;;36636:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36592:9;:19;;;36612:7;;;;;;;;;;;36592:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36540:9;:19;;;36568:6;36540:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36501:9;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:75;;;;:::i;:::-;:119;;;;:::i;:::-;:164;;;;:::i;:::-;36485:180;;36685:62;36741:5;36685:51;36705:4;;;;;;;;;;;36698:22;;;36729:4;36698:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36685:8;:12;;:51;;;;:::i;:::-;:55;;:62;;;;:::i;:::-;36678:69;;;;36257:498;;;;:::o;35523:300::-;2572:13;:11;:13::i;:::-;35613:12:::1;35599:11;;:26;;;;;;;;;;;;;;;;;;35636:23;35678:6;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35636:59;;35716:7;:15;;;35732:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35747:11;;;;;;;;;;;35716:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35706:7;;:53;;;;;;;;;;;;;;;;;;35781:7;:15;;;35797:4;;;;;;;;;;;35803:11;;;;;;;;;;;35781:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35770:8;;:45;;;;;;;;;;;;;;;;;;35588:235;35523:300:::0;:::o;34656:64::-;;;;;;;;;;;;;:::o;34825:39::-;;;;:::o;35959:290::-;35286:14;;;;;;;;;;;35272:28;;:10;:28;;;35264:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;36098:13:::1;36081;:30;;36073:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;36189:13;36174:12;:28;;;;36228:13;36213:12;:28;;;;35959:290:::0;;:::o;3619:220::-;2572:13;:11;:13::i;:::-;3724:1:::1;3704:22;;:8;:22;;::::0;3700:93:::1;;3778:1;3750:31;;;;;;;;;;;:::i;:::-;;;;;;;;3700:93;3803:28;3822:8;3803:18;:28::i;:::-;3619:220:::0;:::o;34727:26::-;;;;;;;;;;;;;:::o;2851:166::-;2922:12;:10;:12::i;:::-;2911:23;;:7;:5;:7::i;:::-;:23;;;2907:103;;2985:12;:10;:12::i;:::-;2958:40;;;;;;;;;;;:::i;:::-;;;;;;;;2907:103;2851:166::o;33877:376::-;33974:4;34070:12;34084:17;34105:5;:10;;34139;34151:4;34157:2;34161:5;34116:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34105:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34069:99;;;;34187:7;:57;;;;;34214:1;34199:4;:11;:16;:44;;;;34230:4;34219:24;;;;;;;;;;;;:::i;:::-;34199:44;34187:57;34179:66;;;;33877:376;;;;;;:::o;7454:98::-;7512:7;7543:1;7539;:5;;;;:::i;:::-;7532:12;;7454:98;;;;:::o;33529:340::-;33608:4;33692:12;33706:17;33727:5;:10;;33761;33773:2;33777:5;33738:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33727:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33691:93;;;;33803:7;:57;;;;;33830:1;33815:4;:11;:16;:44;;;;33846:4;33835:24;;;;;;;;;;;;:::i;:::-;33815:44;33803:57;33795:66;;;;33529:340;;;;;:::o;38070:793::-;38115:10;38128:21;38115:34;;38168:1;38163:2;:6;:28;;;;;38179:12;;38173:2;:18;;38163:28;38160:696;;;38216:12;;38211:2;:17;38208:74;;;38254:12;;38249:17;;38208:74;38296:19;38316:15;38296:35;;38346:21;38384:1;38370:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38346:40;;38411:4;;;;;;;;;;;38401;38406:1;38401:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;38440:4;;;;;;;;;;;38430;38435:1;38430:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;38461:15;38486:4;;;;;;;;;;;38480:21;;;38510:4;38480:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38461:55;;38531:6;;;;;;;;;;;:57;;;38596:2;38618:1;38638:4;38669;38705:3;38693:11;:15;;;;:::i;:::-;38531:192;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38740:14;38763:4;;;;;;;;;;;38757:21;;;38787:4;38757:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38740:53;;38813:31;38820:2;38824:19;38835:7;38824:6;:10;;:19;;;;:::i;:::-;38813:31;;;;;;;:::i;:::-;;;;;;;;38193:663;;;;38160:696;38104:759;38070:793::o;3999:191::-;4073:16;4092:6;;;;;;;;;;;4073:25;;4118:8;4109:6;;:17;;;;;;;;;;;;;;;;;;4173:8;4142:40;;4163:8;4142:40;;;;;;;;;;;;4062:128;3999:191;:::o;7811:98::-;7869:7;7900:1;7896;:5;;;;:::i;:::-;7889:12;;7811:98;;;;:::o;8210:::-;8268:7;8299:1;8295;:5;;;;:::i;:::-;8288:12;;8210:98;;;;:::o;695:::-;748:7;775:10;768:17;;695:98;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:126::-;1414:7;1454:42;1447:5;1443:54;1432:65;;1377:126;;;:::o;1509:96::-;1546:7;1575:24;1593:5;1575:24;:::i;:::-;1564:35;;1509:96;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:329::-;1943:6;1992:2;1980:9;1971:7;1967:23;1963:32;1960:119;;;1998:79;;:::i;:::-;1960:119;2118:1;2143:53;2188:7;2179:6;2168:9;2164:22;2143:53;:::i;:::-;2133:63;;2089:117;1884:329;;;;:::o;2219:118::-;2306:24;2324:5;2306:24;:::i;:::-;2301:3;2294:37;2219:118;;:::o;2343:222::-;2436:4;2474:2;2463:9;2459:18;2451:26;;2487:71;2555:1;2544:9;2540:17;2531:6;2487:71;:::i;:::-;2343:222;;;;:::o;2571:474::-;2639:6;2647;2696:2;2684:9;2675:7;2671:23;2667:32;2664:119;;;2702:79;;:::i;:::-;2664:119;2822:1;2847:53;2892:7;2883:6;2872:9;2868:22;2847:53;:::i;:::-;2837:63;;2793:117;2949:2;2975:53;3020:7;3011:6;3000:9;2996:22;2975:53;:::i;:::-;2965:63;;2920:118;2571:474;;;;;:::o;3051:169::-;3135:11;3169:6;3164:3;3157:19;3209:4;3204:3;3200:14;3185:29;;3051:169;;;;:::o;3226:181::-;3366:33;3362:1;3354:6;3350:14;3343:57;3226:181;:::o;3413:366::-;3555:3;3576:67;3640:2;3635:3;3576:67;:::i;:::-;3569:74;;3652:93;3741:3;3652:93;:::i;:::-;3770:2;3765:3;3761:12;3754:19;;3413:366;;;:::o;3785:419::-;3951:4;3989:2;3978:9;3974:18;3966:26;;4038:9;4032:4;4028:20;4024:1;4013:9;4009:17;4002:47;4066:131;4192:4;4066:131;:::i;:::-;4058:139;;3785:419;;;:::o;4210:167::-;4350:19;4346:1;4338:6;4334:14;4327:43;4210:167;:::o;4383:366::-;4525:3;4546:67;4610:2;4605:3;4546:67;:::i;:::-;4539:74;;4622:93;4711:3;4622:93;:::i;:::-;4740:2;4735:3;4731:12;4724:19;;4383:366;;;:::o;4755:419::-;4921:4;4959:2;4948:9;4944:18;4936:26;;5008:9;5002:4;4998:20;4994:1;4983:9;4979:17;4972:47;5036:131;5162:4;5036:131;:::i;:::-;5028:139;;4755:419;;;:::o;5180:170::-;5320:22;5316:1;5308:6;5304:14;5297:46;5180:170;:::o;5356:366::-;5498:3;5519:67;5583:2;5578:3;5519:67;:::i;:::-;5512:74;;5595:93;5684:3;5595:93;:::i;:::-;5713:2;5708:3;5704:12;5697:19;;5356:366;;;:::o;5728:419::-;5894:4;5932:2;5921:9;5917:18;5909:26;;5981:9;5975:4;5971:20;5967:1;5956:9;5952:17;5945:47;6009:131;6135:4;6009:131;:::i;:::-;6001:139;;5728:419;;;:::o;6153:171::-;6293:23;6289:1;6281:6;6277:14;6270:47;6153:171;:::o;6330:366::-;6472:3;6493:67;6557:2;6552:3;6493:67;:::i;:::-;6486:74;;6569:93;6658:3;6569:93;:::i;:::-;6687:2;6682:3;6678:12;6671:19;;6330:366;;;:::o;6702:419::-;6868:4;6906:2;6895:9;6891:18;6883:26;;6955:9;6949:4;6945:20;6941:1;6930:9;6926:17;6919:47;6983:131;7109:4;6983:131;:::i;:::-;6975:139;;6702:419;;;:::o;7127:143::-;7184:5;7215:6;7209:13;7200:22;;7231:33;7258:5;7231:33;:::i;:::-;7127:143;;;;:::o;7276:351::-;7346:6;7395:2;7383:9;7374:7;7370:23;7366:32;7363:119;;;7401:79;;:::i;:::-;7363:119;7521:1;7546:64;7602:7;7593:6;7582:9;7578:22;7546:64;:::i;:::-;7536:74;;7492:128;7276:351;;;;:::o;7633:155::-;7773:7;7769:1;7761:6;7757:14;7750:31;7633:155;:::o;7794:365::-;7936:3;7957:66;8021:1;8016:3;7957:66;:::i;:::-;7950:73;;8032:93;8121:3;8032:93;:::i;:::-;8150:2;8145:3;8141:12;8134:19;;7794:365;;;:::o;8165:419::-;8331:4;8369:2;8358:9;8354:18;8346:26;;8418:9;8412:4;8408:20;8404:1;8393:9;8389:17;8382:47;8446:131;8572:4;8446:131;:::i;:::-;8438:139;;8165:419;;;:::o;8590:167::-;8730:19;8726:1;8718:6;8714:14;8707:43;8590:167;:::o;8763:366::-;8905:3;8926:67;8990:2;8985:3;8926:67;:::i;:::-;8919:74;;9002:93;9091:3;9002:93;:::i;:::-;9120:2;9115:3;9111:12;9104:19;;8763:366;;;:::o;9135:419::-;9301:4;9339:2;9328:9;9324:18;9316:26;;9388:9;9382:4;9378:20;9374:1;9363:9;9359:17;9352:47;9416:131;9542:4;9416:131;:::i;:::-;9408:139;;9135:419;;;:::o;9560:90::-;9594:7;9637:5;9630:13;9623:21;9612:32;;9560:90;;;:::o;9656:109::-;9737:21;9752:5;9737:21;:::i;:::-;9732:3;9725:34;9656:109;;:::o;9771:751::-;9992:4;10030:3;10019:9;10015:19;10007:27;;10044:71;10112:1;10101:9;10097:17;10088:6;10044:71;:::i;:::-;10125:72;10193:2;10182:9;10178:18;10169:6;10125:72;:::i;:::-;10207;10275:2;10264:9;10260:18;10251:6;10207:72;:::i;:::-;10289:66;10351:2;10340:9;10336:18;10327:6;10289:66;:::i;:::-;10365:67;10427:3;10416:9;10412:19;10403:6;10365:67;:::i;:::-;10442:73;10510:3;10499:9;10495:19;10486:6;10442:73;:::i;:::-;9771:751;;;;;;;;;:::o;10528:180::-;10576:77;10573:1;10566:88;10673:4;10670:1;10663:15;10697:4;10694:1;10687:15;10714:194;10754:4;10774:20;10792:1;10774:20;:::i;:::-;10769:25;;10808:20;10826:1;10808:20;:::i;:::-;10803:25;;10852:1;10849;10845:9;10837:17;;10876:1;10870:4;10867:11;10864:37;;;10881:18;;:::i;:::-;10864:37;10714:194;;;;:::o;10914:143::-;10971:5;11002:6;10996:13;10987:22;;11018:33;11045:5;11018:33;:::i;:::-;10914:143;;;;:::o;11063:351::-;11133:6;11182:2;11170:9;11161:7;11157:23;11153:32;11150:119;;;11188:79;;:::i;:::-;11150:119;11308:1;11333:64;11389:7;11380:6;11369:9;11365:22;11333:64;:::i;:::-;11323:74;;11279:128;11063:351;;;;:::o;11420:332::-;11541:4;11579:2;11568:9;11564:18;11556:26;;11592:71;11660:1;11649:9;11645:17;11636:6;11592:71;:::i;:::-;11673:72;11741:2;11730:9;11726:18;11717:6;11673:72;:::i;:::-;11420:332;;;;;:::o;11758:234::-;11898:34;11894:1;11886:6;11882:14;11875:58;11967:17;11962:2;11954:6;11950:15;11943:42;11758:234;:::o;11998:366::-;12140:3;12161:67;12225:2;12220:3;12161:67;:::i;:::-;12154:74;;12237:93;12326:3;12237:93;:::i;:::-;12355:2;12350:3;12346:12;12339:19;;11998:366;;;:::o;12370:419::-;12536:4;12574:2;12563:9;12559:18;12551:26;;12623:9;12617:4;12613:20;12609:1;12598:9;12594:17;12587:47;12651:131;12777:4;12651:131;:::i;:::-;12643:139;;12370:419;;;:::o;12795:442::-;12944:4;12982:2;12971:9;12967:18;12959:26;;12995:71;13063:1;13052:9;13048:17;13039:6;12995:71;:::i;:::-;13076:72;13144:2;13133:9;13129:18;13120:6;13076:72;:::i;:::-;13158;13226:2;13215:9;13211:18;13202:6;13158:72;:::i;:::-;12795:442;;;;;;:::o;13243:98::-;13294:6;13328:5;13322:12;13312:22;;13243:98;;;:::o;13347:147::-;13448:11;13485:3;13470:18;;13347:147;;;;:::o;13500:139::-;13589:6;13584:3;13579;13573:23;13630:1;13621:6;13616:3;13612:16;13605:27;13500:139;;;:::o;13645:386::-;13749:3;13777:38;13809:5;13777:38;:::i;:::-;13831:88;13912:6;13907:3;13831:88;:::i;:::-;13824:95;;13928:65;13986:6;13981:3;13974:4;13967:5;13963:16;13928:65;:::i;:::-;14018:6;14013:3;14009:16;14002:23;;13753:278;13645:386;;;;:::o;14037:271::-;14167:3;14189:93;14278:3;14269:6;14189:93;:::i;:::-;14182:100;;14299:3;14292:10;;14037:271;;;;:::o;14314:116::-;14384:21;14399:5;14384:21;:::i;:::-;14377:5;14374:32;14364:60;;14420:1;14417;14410:12;14364:60;14314:116;:::o;14436:137::-;14490:5;14521:6;14515:13;14506:22;;14537:30;14561:5;14537:30;:::i;:::-;14436:137;;;;:::o;14579:345::-;14646:6;14695:2;14683:9;14674:7;14670:23;14666:32;14663:119;;;14701:79;;:::i;:::-;14663:119;14821:1;14846:61;14899:7;14890:6;14879:9;14875:22;14846:61;:::i;:::-;14836:71;;14792:125;14579:345;;;;:::o;14930:332::-;15051:4;15089:2;15078:9;15074:18;15066:26;;15102:71;15170:1;15159:9;15155:17;15146:6;15102:71;:::i;:::-;15183:72;15251:2;15240:9;15236:18;15227:6;15183:72;:::i;:::-;14930:332;;;;;:::o;15268:180::-;15316:77;15313:1;15306:88;15413:4;15410:1;15403:15;15437:4;15434:1;15427:15;15454:180;15502:77;15499:1;15492:88;15599:4;15596:1;15589:15;15623:4;15620:1;15613:15;15640:191;15680:3;15699:20;15717:1;15699:20;:::i;:::-;15694:25;;15733:20;15751:1;15733:20;:::i;:::-;15728:25;;15776:1;15773;15769:9;15762:16;;15797:3;15794:1;15791:10;15788:36;;;15804:18;;:::i;:::-;15788:36;15640:191;;;;:::o;15837:85::-;15882:7;15911:5;15900:16;;15837:85;;;:::o;15928:60::-;15956:3;15977:5;15970:12;;15928:60;;;:::o;15994:158::-;16052:9;16085:61;16103:42;16112:32;16138:5;16112:32;:::i;:::-;16103:42;:::i;:::-;16085:61;:::i;:::-;16072:74;;15994:158;;;:::o;16158:147::-;16253:45;16292:5;16253:45;:::i;:::-;16248:3;16241:58;16158:147;;:::o;16311:114::-;16378:6;16412:5;16406:12;16396:22;;16311:114;;;:::o;16431:184::-;16530:11;16564:6;16559:3;16552:19;16604:4;16599:3;16595:14;16580:29;;16431:184;;;;:::o;16621:132::-;16688:4;16711:3;16703:11;;16741:4;16736:3;16732:14;16724:22;;16621:132;;;:::o;16759:108::-;16836:24;16854:5;16836:24;:::i;:::-;16831:3;16824:37;16759:108;;:::o;16873:179::-;16942:10;16963:46;17005:3;16997:6;16963:46;:::i;:::-;17041:4;17036:3;17032:14;17018:28;;16873:179;;;;:::o;17058:113::-;17128:4;17160;17155:3;17151:14;17143:22;;17058:113;;;:::o;17207:732::-;17326:3;17355:54;17403:5;17355:54;:::i;:::-;17425:86;17504:6;17499:3;17425:86;:::i;:::-;17418:93;;17535:56;17585:5;17535:56;:::i;:::-;17614:7;17645:1;17630:284;17655:6;17652:1;17649:13;17630:284;;;17731:6;17725:13;17758:63;17817:3;17802:13;17758:63;:::i;:::-;17751:70;;17844:60;17897:6;17844:60;:::i;:::-;17834:70;;17690:224;17677:1;17674;17670:9;17665:14;;17630:284;;;17634:14;17930:3;17923:10;;17331:608;;;17207:732;;;;:::o;17945:720::-;18180:4;18218:3;18207:9;18203:19;18195:27;;18232:79;18308:1;18297:9;18293:17;18284:6;18232:79;:::i;:::-;18358:9;18352:4;18348:20;18343:2;18332:9;18328:18;18321:48;18386:108;18489:4;18480:6;18386:108;:::i;:::-;18378:116;;18504:72;18572:2;18561:9;18557:18;18548:6;18504:72;:::i;:::-;18586;18654:2;18643:9;18639:18;18630:6;18586:72;:::i;:::-;17945:720;;;;;;;:::o;18671:332::-;18792:4;18830:2;18819:9;18815:18;18807:26;;18843:71;18911:1;18900:9;18896:17;18887:6;18843:71;:::i;:::-;18924:72;18992:2;18981:9;18977:18;18968:6;18924:72;:::i;:::-;18671:332;;;;;:::o;19009:410::-;19049:7;19072:20;19090:1;19072:20;:::i;:::-;19067:25;;19106:20;19124:1;19106:20;:::i;:::-;19101:25;;19161:1;19158;19154:9;19183:30;19201:11;19183:30;:::i;:::-;19172:41;;19362:1;19353:7;19349:15;19346:1;19343:22;19323:1;19316:9;19296:83;19273:139;;19392:18;;:::i;:::-;19273:139;19057:362;19009:410;;;;:::o;19425:180::-;19473:77;19470:1;19463:88;19570:4;19567:1;19560:15;19594:4;19591:1;19584:15;19611:185;19651:1;19668:20;19686:1;19668:20;:::i;:::-;19663:25;;19702:20;19720:1;19702:20;:::i;:::-;19697:25;;19741:1;19731:35;;19746:18;;:::i;:::-;19731:35;19788:1;19785;19781:9;19776:14;;19611:185;;;;:::o
Swarm Source
ipfs://37012c7a11f8a93f745212528a1605753c03d6c46381d80a19cd48b17e396e5f
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BSC | BNB Chain (BNB) | 100.00% | $696.59 | 0.00575173 | $4.01 |
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.