More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 125 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Tokens | 19168164 | 301 days ago | IN | 0 ETH | 0.0030438 | ||||
Claim Tokens | 18800925 | 353 days ago | IN | 0 ETH | 0.00713066 | ||||
Claim Tokens | 18766770 | 358 days ago | IN | 0 ETH | 0.00090052 | ||||
Claim Tokens | 18766769 | 358 days ago | IN | 0 ETH | 0.00404991 | ||||
Claim Tokens | 18517317 | 393 days ago | IN | 0 ETH | 0.00301468 | ||||
Claim Tokens | 17987526 | 467 days ago | IN | 0 ETH | 0.00386708 | ||||
Claim Tokens | 17695023 | 508 days ago | IN | 0 ETH | 0.001729 | ||||
Claim Tokens | 17691298 | 508 days ago | IN | 0 ETH | 0.00199316 | ||||
Claim Tokens | 17545511 | 529 days ago | IN | 0 ETH | 0.00162818 | ||||
Claim Tokens | 17532583 | 531 days ago | IN | 0 ETH | 0.00039677 | ||||
Claim Tokens | 17532582 | 531 days ago | IN | 0 ETH | 0.00180657 | ||||
Claim Tokens | 17532053 | 531 days ago | IN | 0 ETH | 0.00173945 | ||||
Claim Tokens | 17524263 | 532 days ago | IN | 0 ETH | 0.00161669 | ||||
Claim Tokens | 17516810 | 533 days ago | IN | 0 ETH | 0.00193344 | ||||
Claim Tokens | 17497142 | 535 days ago | IN | 0 ETH | 0.00167273 | ||||
Claim Tokens | 17450492 | 542 days ago | IN | 0 ETH | 0.00278015 | ||||
Claim Tokens | 17445209 | 543 days ago | IN | 0 ETH | 0.00351106 | ||||
Claim Tokens | 17423126 | 546 days ago | IN | 0 ETH | 0.00067412 | ||||
Claim Tokens | 17423126 | 546 days ago | IN | 0 ETH | 0.00301232 | ||||
Claim Tokens | 17419555 | 546 days ago | IN | 0 ETH | 0.00217485 | ||||
Claim Tokens | 17406792 | 548 days ago | IN | 0 ETH | 0.00217724 | ||||
Claim Tokens | 17404480 | 549 days ago | IN | 0 ETH | 0.0024877 | ||||
Claim Tokens | 17400586 | 549 days ago | IN | 0 ETH | 0.00317652 | ||||
Claim Tokens | 17347417 | 557 days ago | IN | 0 ETH | 0.002635 | ||||
Claim Tokens | 17331518 | 559 days ago | IN | 0 ETH | 0.0038577 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
PVClaim
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-04-05 */ // Sources flattened with hardhat v2.8.0 https://hardhat.org // File @openzeppelin/contracts/utils/math/[email protected] // OpenZeppelin Contracts v4.4.1 (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 substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File @openzeppelin/contracts/token/ERC20/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); function getAllTokenOwners() external view returns (address[] memory); function getAllTokenOwnerAmounts() external view returns (uint256[] memory); /** * @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); } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File contracts/OwnerWithdrawable.sol pragma solidity ^0.8.0; contract OwnerWithdrawable is Ownable { using SafeMath for uint256; receive() external payable {} fallback() external payable {} function withdraw(address token, uint256 amt) public onlyOwner { IERC20(token).transfer(msg.sender, amt); } function withdrawAll(address token) public onlyOwner { uint256 amt = IERC20(token).balanceOf(address(this)); withdraw(token, amt); } function withdrawCurrency(uint256 amt) public onlyOwner { payable(msg.sender).transfer(amt); } // function deposit(address token, uint256 amt) public onlyOwner { // uint256 allowance = IERC20(token).allowance(msg.sender, address(this)); // require(allowance >= amt, "Check the token allowance"); // IERC20(token).transferFrom(owner(), address(this), amt); // } } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File @openzeppelin/contracts/token/ERC20/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File @openzeppelin/contracts/token/ERC20/extensions/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File contracts/PreSale.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract PVClaim is OwnerWithdrawable { using SafeMath for uint256; using SafeERC20 for IERC20; using SafeERC20 for IERC20Metadata; // Token for which presale is being done address public saleToken; uint public saleTokenDec; //Total tokens to be sold in the presale uint256 public totalTokensforSale; constructor() { } function initData(address tokenAddress) public{ saleToken = tokenAddress; saleTokenDec = IERC20Metadata(saleToken).decimals(); uint256 saleTokens= 10684699541; totalTokensforSale = saleTokens*(10**saleTokenDec); IERC20(saleToken).safeTransferFrom(msg.sender, address(this), saleTokens); } function getAllTokenOwnerAmounts() external view returns (uint256[] memory) { return IERC20(saleToken).getAllTokenOwnerAmounts(); } function getAllTokenOwners() external view returns (address[] memory) { return IERC20(saleToken).getAllTokenOwners(); } //claim section // A mapping to store the claim amount for each user address mapping (address => uint256) private claims; // An array to store the addresses of all claimers address[] claimers; // Function to check if the caller has already claimed tokens function didUserClaim() public view returns(bool){ return claims[msg.sender] > 0; } // Function to check if a specific address has already claimed tokens function checkIfAddressClaimed(address _address) public view returns(bool){ return claims[_address] > 0; } // Function to claim tokens by the user function claimTokens(uint256 claim) external { // Ensures that the claim amount is greater than 0 require(claim > 0, "can not claim 0"); // Ensures that the user has not already claimed tokens require(didUserClaim() == false, "User already claimed tokens"); // Transfers the specified number of tokens to the user's address IERC20(saleToken).safeTransfer(msg.sender, claim); // Updates the claims mapping with the user's claim amount claims[msg.sender] = claim; // Adds the user's address to the claimers array claimers.push(msg.sender); } // Function to get the list of all claimers' addresses function getClaimers() public view returns(address[] memory){ return claimers; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfAddressClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"claim","type":"uint256"}],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"didUserClaim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllTokenOwnerAmounts","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllTokenOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getClaimers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"initData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleTokenDec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensforSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdrawCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b5061002d61002261003260201b60201c565b61003a60201b60201c565b6100fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611fbd8061010d6000396000f3fe6080604052600436106100f75760003560e01c8063ae49878d1161008a578063e985e36711610059578063e985e367146102fc578063f2fde38b14610327578063f3fef3a314610350578063fa09e63014610379576100fe565b8063ae49878d14610240578063d2cfa15514610269578063db414e8e146102a6578063db6061d2146102d1576100fe565b80636bcedf9c116100c65780636bcedf9c146101a8578063715018a6146101d35780638da5cb5b146101ea578063ace1741c14610215576100fe565b80633114e881146101005780633c00a36c1461012b57806346e04a2f1461015457806352b2710c1461017d576100fe565b366100fe57005b005b34801561010c57600080fd5b506101156103a2565b60405161012291906119d5565b60405180910390f35b34801561013757600080fd5b50610152600480360381019061014d91906114d3565b61044e565b005b34801561016057600080fd5b5061017b600480360381019061017691906114d3565b610514565b005b34801561018957600080fd5b5061019261069c565b60405161019f91906119b3565b60405180910390f35b3480156101b457600080fd5b506101bd61072a565b6040516101ca9190611b14565b60405180910390f35b3480156101df57600080fd5b506101e8610730565b005b3480156101f657600080fd5b506101ff6107b8565b60405161020c9190611938565b60405180910390f35b34801561022157600080fd5b5061022a6107e1565b6040516102379190611b14565b60405180910390f35b34801561024c57600080fd5b50610267600480360381019061026291906113c3565b6107e7565b005b34801561027557600080fd5b50610290600480360381019061028b91906113c3565b61094e565b60405161029d91906119f7565b60405180910390f35b3480156102b257600080fd5b506102bb610999565b6040516102c891906119b3565b60405180910390f35b3480156102dd57600080fd5b506102e6610a45565b6040516102f391906119f7565b60405180910390f35b34801561030857600080fd5b50610311610a8e565b60405161031e9190611938565b60405180910390f35b34801561033357600080fd5b5061034e600480360381019061034991906113c3565b610ab4565b005b34801561035c57600080fd5b50610377600480360381019061037291906113ec565b610bac565b005b34801561038557600080fd5b506103a0600480360381019061039b91906113c3565b610cba565b005b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633114e8816040518163ffffffff1660e01b815260040160006040518083038186803b15801561040c57600080fd5b505afa158015610420573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906104499190611469565b905090565b610456610dd1565b73ffffffffffffffffffffffffffffffffffffffff166104746107b8565b73ffffffffffffffffffffffffffffffffffffffff16146104ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c190611ab4565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610510573d6000803e3d6000fd5b5050565b60008111610557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054e90611a74565b60405180910390fd5b60001515610563610a45565b1515146105a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059c90611a34565b60405180910390fd5b6105f23382600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dd99092919063ffffffff16565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600580548060200260200160405190810160405280929190818152602001828054801561072057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116106d6575b5050505050905090565b60035481565b610738610dd1565b73ffffffffffffffffffffffffffffffffffffffff166107566107b8565b73ffffffffffffffffffffffffffffffffffffffff16146107ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a390611ab4565b60405180910390fd5b6107b66000610e5f565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60025481565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561089057600080fd5b505afa1580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c89190611525565b60ff16600281905550600064027cdb93959050600254600a6108ea9190611caf565b816108f59190611dcd565b60038190555061094a333083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f23909392919063ffffffff16565b5050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054119050919050565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db414e8e6040518163ffffffff1660e01b815260040160006040518083038186803b158015610a0357600080fd5b505afa158015610a17573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610a409190611428565b905090565b600080600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610abc610dd1565b73ffffffffffffffffffffffffffffffffffffffff16610ada6107b8565b73ffffffffffffffffffffffffffffffffffffffff1614610b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2790611ab4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9790611a54565b60405180910390fd5b610ba981610e5f565b50565b610bb4610dd1565b73ffffffffffffffffffffffffffffffffffffffff16610bd26107b8565b73ffffffffffffffffffffffffffffffffffffffff1614610c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1f90611ab4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610c6392919061198a565b602060405180830381600087803b158015610c7d57600080fd5b505af1158015610c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb591906114aa565b505050565b610cc2610dd1565b73ffffffffffffffffffffffffffffffffffffffff16610ce06107b8565b73ffffffffffffffffffffffffffffffffffffffff1614610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d90611ab4565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d719190611938565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc191906114fc565b9050610dcd8282610bac565b5050565b600033905090565b610e5a8363a9059cbb60e01b8484604051602401610df892919061198a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610fac565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610fa6846323b872dd60e01b858585604051602401610f4493929190611953565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610fac565b50505050565b600061100e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166110739092919063ffffffff16565b905060008151111561106e578080602001905181019061102e91906114aa565b61106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490611af4565b60405180910390fd5b5b505050565b6060611082848460008561108b565b90509392505050565b6060824710156110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790611a94565b60405180910390fd5b6110d98561119f565b611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f90611ad4565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516111419190611921565b60006040518083038185875af1925050503d806000811461117e576040519150601f19603f3d011682016040523d82523d6000602084013e611183565b606091505b50915091506111938282866111b2565b92505050949350505050565b600080823b905060008111915050919050565b606083156111c257829050611212565b6000835111156111d55782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112099190611a12565b60405180910390fd5b9392505050565b600061122c61122784611b60565b611b2f565b9050808382526020820190508285602086028201111561124b57600080fd5b60005b8581101561127b57816112618882611306565b84526020840193506020830192505060018101905061124e565b5050509392505050565b600061129861129384611b8c565b611b2f565b905080838252602082019050828560208602820111156112b757600080fd5b60005b858110156112e757816112cd8882611399565b8452602084019350602083019250506001810190506112ba565b5050509392505050565b60008135905061130081611f2b565b92915050565b60008151905061131581611f2b565b92915050565b600082601f83011261132c57600080fd5b815161133c848260208601611219565b91505092915050565b600082601f83011261135657600080fd5b8151611366848260208601611285565b91505092915050565b60008151905061137e81611f42565b92915050565b60008135905061139381611f59565b92915050565b6000815190506113a881611f59565b92915050565b6000815190506113bd81611f70565b92915050565b6000602082840312156113d557600080fd5b60006113e3848285016112f1565b91505092915050565b600080604083850312156113ff57600080fd5b600061140d858286016112f1565b925050602061141e85828601611384565b9150509250929050565b60006020828403121561143a57600080fd5b600082015167ffffffffffffffff81111561145457600080fd5b6114608482850161131b565b91505092915050565b60006020828403121561147b57600080fd5b600082015167ffffffffffffffff81111561149557600080fd5b6114a184828501611345565b91505092915050565b6000602082840312156114bc57600080fd5b60006114ca8482850161136f565b91505092915050565b6000602082840312156114e557600080fd5b60006114f384828501611384565b91505092915050565b60006020828403121561150e57600080fd5b600061151c84828501611399565b91505092915050565b60006020828403121561153757600080fd5b6000611545848285016113ae565b91505092915050565b600061155a838361157e565b60208301905092915050565b60006115728383611903565b60208301905092915050565b61158781611e27565b82525050565b61159681611e27565b82525050565b60006115a782611bd8565b6115b18185611c1e565b93506115bc83611bb8565b8060005b838110156115ed5781516115d4888261154e565b97506115df83611c04565b9250506001810190506115c0565b5085935050505092915050565b600061160582611be3565b61160f8185611c2f565b935061161a83611bc8565b8060005b8381101561164b5781516116328882611566565b975061163d83611c11565b92505060018101905061161e565b5085935050505092915050565b61166181611e39565b82525050565b600061167282611bee565b61167c8185611c40565b935061168c818560208601611e7c565b80840191505092915050565b60006116a382611bf9565b6116ad8185611c4b565b93506116bd818560208601611e7c565b6116c681611f0d565b840191505092915050565b60006116de601b83611c4b565b91507f5573657220616c726561647920636c61696d656420746f6b656e7300000000006000830152602082019050919050565b600061171e602683611c4b565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611784600f83611c4b565b91507f63616e206e6f7420636c61696d203000000000000000000000000000000000006000830152602082019050919050565b60006117c4602683611c4b565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061182a602083611c4b565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061186a601d83611c4b565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b60006118aa602a83611c4b565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b61190c81611e65565b82525050565b61191b81611e65565b82525050565b600061192d8284611667565b915081905092915050565b600060208201905061194d600083018461158d565b92915050565b6000606082019050611968600083018661158d565b611975602083018561158d565b6119826040830184611912565b949350505050565b600060408201905061199f600083018561158d565b6119ac6020830184611912565b9392505050565b600060208201905081810360008301526119cd818461159c565b905092915050565b600060208201905081810360008301526119ef81846115fa565b905092915050565b6000602082019050611a0c6000830184611658565b92915050565b60006020820190508181036000830152611a2c8184611698565b905092915050565b60006020820190508181036000830152611a4d816116d1565b9050919050565b60006020820190508181036000830152611a6d81611711565b9050919050565b60006020820190508181036000830152611a8d81611777565b9050919050565b60006020820190508181036000830152611aad816117b7565b9050919050565b60006020820190508181036000830152611acd8161181d565b9050919050565b60006020820190508181036000830152611aed8161185d565b9050919050565b60006020820190508181036000830152611b0d8161189d565b9050919050565b6000602082019050611b296000830184611912565b92915050565b6000604051905081810181811067ffffffffffffffff82111715611b5657611b55611ede565b5b8060405250919050565b600067ffffffffffffffff821115611b7b57611b7a611ede565b5b602082029050602081019050919050565b600067ffffffffffffffff821115611ba757611ba6611ede565b5b602082029050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000808291508390505b6001851115611ca657808604811115611c8257611c81611eaf565b5b6001851615611c915780820291505b8081029050611c9f85611f1e565b9450611c66565b94509492505050565b6000611cba82611e65565b9150611cc583611e65565b9250611cf27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611cfa565b905092915050565b600082611d0a5760019050611dc6565b81611d185760009050611dc6565b8160018114611d2e5760028114611d3857611d67565b6001915050611dc6565b60ff841115611d4a57611d49611eaf565b5b8360020a915084821115611d6157611d60611eaf565b5b50611dc6565b5060208310610133831016604e8410600b8410161715611d9c5782820a905083811115611d9757611d96611eaf565b5b611dc6565b611da98484846001611c5c565b92509050818404811115611dc057611dbf611eaf565b5b81810290505b9392505050565b6000611dd882611e65565b9150611de383611e65565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e1c57611e1b611eaf565b5b828202905092915050565b6000611e3282611e45565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611e9a578082015181840152602081019050611e7f565b83811115611ea9576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b611f3481611e27565b8114611f3f57600080fd5b50565b611f4b81611e39565b8114611f5657600080fd5b50565b611f6281611e65565b8114611f6d57600080fd5b50565b611f7981611e6f565b8114611f8457600080fd5b5056fea26469706673582212207ed76eb6e80d44cd9d470aa501c2e467864633e6a520d693c830c2e4f9ced31d64736f6c63430008000033
Deployed Bytecode
0x6080604052600436106100f75760003560e01c8063ae49878d1161008a578063e985e36711610059578063e985e367146102fc578063f2fde38b14610327578063f3fef3a314610350578063fa09e63014610379576100fe565b8063ae49878d14610240578063d2cfa15514610269578063db414e8e146102a6578063db6061d2146102d1576100fe565b80636bcedf9c116100c65780636bcedf9c146101a8578063715018a6146101d35780638da5cb5b146101ea578063ace1741c14610215576100fe565b80633114e881146101005780633c00a36c1461012b57806346e04a2f1461015457806352b2710c1461017d576100fe565b366100fe57005b005b34801561010c57600080fd5b506101156103a2565b60405161012291906119d5565b60405180910390f35b34801561013757600080fd5b50610152600480360381019061014d91906114d3565b61044e565b005b34801561016057600080fd5b5061017b600480360381019061017691906114d3565b610514565b005b34801561018957600080fd5b5061019261069c565b60405161019f91906119b3565b60405180910390f35b3480156101b457600080fd5b506101bd61072a565b6040516101ca9190611b14565b60405180910390f35b3480156101df57600080fd5b506101e8610730565b005b3480156101f657600080fd5b506101ff6107b8565b60405161020c9190611938565b60405180910390f35b34801561022157600080fd5b5061022a6107e1565b6040516102379190611b14565b60405180910390f35b34801561024c57600080fd5b50610267600480360381019061026291906113c3565b6107e7565b005b34801561027557600080fd5b50610290600480360381019061028b91906113c3565b61094e565b60405161029d91906119f7565b60405180910390f35b3480156102b257600080fd5b506102bb610999565b6040516102c891906119b3565b60405180910390f35b3480156102dd57600080fd5b506102e6610a45565b6040516102f391906119f7565b60405180910390f35b34801561030857600080fd5b50610311610a8e565b60405161031e9190611938565b60405180910390f35b34801561033357600080fd5b5061034e600480360381019061034991906113c3565b610ab4565b005b34801561035c57600080fd5b50610377600480360381019061037291906113ec565b610bac565b005b34801561038557600080fd5b506103a0600480360381019061039b91906113c3565b610cba565b005b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633114e8816040518163ffffffff1660e01b815260040160006040518083038186803b15801561040c57600080fd5b505afa158015610420573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906104499190611469565b905090565b610456610dd1565b73ffffffffffffffffffffffffffffffffffffffff166104746107b8565b73ffffffffffffffffffffffffffffffffffffffff16146104ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c190611ab4565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610510573d6000803e3d6000fd5b5050565b60008111610557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054e90611a74565b60405180910390fd5b60001515610563610a45565b1515146105a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059c90611a34565b60405180910390fd5b6105f23382600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dd99092919063ffffffff16565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600580548060200260200160405190810160405280929190818152602001828054801561072057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116106d6575b5050505050905090565b60035481565b610738610dd1565b73ffffffffffffffffffffffffffffffffffffffff166107566107b8565b73ffffffffffffffffffffffffffffffffffffffff16146107ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a390611ab4565b60405180910390fd5b6107b66000610e5f565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60025481565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561089057600080fd5b505afa1580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c89190611525565b60ff16600281905550600064027cdb93959050600254600a6108ea9190611caf565b816108f59190611dcd565b60038190555061094a333083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f23909392919063ffffffff16565b5050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054119050919050565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db414e8e6040518163ffffffff1660e01b815260040160006040518083038186803b158015610a0357600080fd5b505afa158015610a17573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610a409190611428565b905090565b600080600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610abc610dd1565b73ffffffffffffffffffffffffffffffffffffffff16610ada6107b8565b73ffffffffffffffffffffffffffffffffffffffff1614610b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2790611ab4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9790611a54565b60405180910390fd5b610ba981610e5f565b50565b610bb4610dd1565b73ffffffffffffffffffffffffffffffffffffffff16610bd26107b8565b73ffffffffffffffffffffffffffffffffffffffff1614610c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1f90611ab4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610c6392919061198a565b602060405180830381600087803b158015610c7d57600080fd5b505af1158015610c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb591906114aa565b505050565b610cc2610dd1565b73ffffffffffffffffffffffffffffffffffffffff16610ce06107b8565b73ffffffffffffffffffffffffffffffffffffffff1614610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d90611ab4565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d719190611938565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc191906114fc565b9050610dcd8282610bac565b5050565b600033905090565b610e5a8363a9059cbb60e01b8484604051602401610df892919061198a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610fac565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610fa6846323b872dd60e01b858585604051602401610f4493929190611953565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610fac565b50505050565b600061100e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166110739092919063ffffffff16565b905060008151111561106e578080602001905181019061102e91906114aa565b61106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490611af4565b60405180910390fd5b5b505050565b6060611082848460008561108b565b90509392505050565b6060824710156110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790611a94565b60405180910390fd5b6110d98561119f565b611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f90611ad4565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516111419190611921565b60006040518083038185875af1925050503d806000811461117e576040519150601f19603f3d011682016040523d82523d6000602084013e611183565b606091505b50915091506111938282866111b2565b92505050949350505050565b600080823b905060008111915050919050565b606083156111c257829050611212565b6000835111156111d55782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112099190611a12565b60405180910390fd5b9392505050565b600061122c61122784611b60565b611b2f565b9050808382526020820190508285602086028201111561124b57600080fd5b60005b8581101561127b57816112618882611306565b84526020840193506020830192505060018101905061124e565b5050509392505050565b600061129861129384611b8c565b611b2f565b905080838252602082019050828560208602820111156112b757600080fd5b60005b858110156112e757816112cd8882611399565b8452602084019350602083019250506001810190506112ba565b5050509392505050565b60008135905061130081611f2b565b92915050565b60008151905061131581611f2b565b92915050565b600082601f83011261132c57600080fd5b815161133c848260208601611219565b91505092915050565b600082601f83011261135657600080fd5b8151611366848260208601611285565b91505092915050565b60008151905061137e81611f42565b92915050565b60008135905061139381611f59565b92915050565b6000815190506113a881611f59565b92915050565b6000815190506113bd81611f70565b92915050565b6000602082840312156113d557600080fd5b60006113e3848285016112f1565b91505092915050565b600080604083850312156113ff57600080fd5b600061140d858286016112f1565b925050602061141e85828601611384565b9150509250929050565b60006020828403121561143a57600080fd5b600082015167ffffffffffffffff81111561145457600080fd5b6114608482850161131b565b91505092915050565b60006020828403121561147b57600080fd5b600082015167ffffffffffffffff81111561149557600080fd5b6114a184828501611345565b91505092915050565b6000602082840312156114bc57600080fd5b60006114ca8482850161136f565b91505092915050565b6000602082840312156114e557600080fd5b60006114f384828501611384565b91505092915050565b60006020828403121561150e57600080fd5b600061151c84828501611399565b91505092915050565b60006020828403121561153757600080fd5b6000611545848285016113ae565b91505092915050565b600061155a838361157e565b60208301905092915050565b60006115728383611903565b60208301905092915050565b61158781611e27565b82525050565b61159681611e27565b82525050565b60006115a782611bd8565b6115b18185611c1e565b93506115bc83611bb8565b8060005b838110156115ed5781516115d4888261154e565b97506115df83611c04565b9250506001810190506115c0565b5085935050505092915050565b600061160582611be3565b61160f8185611c2f565b935061161a83611bc8565b8060005b8381101561164b5781516116328882611566565b975061163d83611c11565b92505060018101905061161e565b5085935050505092915050565b61166181611e39565b82525050565b600061167282611bee565b61167c8185611c40565b935061168c818560208601611e7c565b80840191505092915050565b60006116a382611bf9565b6116ad8185611c4b565b93506116bd818560208601611e7c565b6116c681611f0d565b840191505092915050565b60006116de601b83611c4b565b91507f5573657220616c726561647920636c61696d656420746f6b656e7300000000006000830152602082019050919050565b600061171e602683611c4b565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611784600f83611c4b565b91507f63616e206e6f7420636c61696d203000000000000000000000000000000000006000830152602082019050919050565b60006117c4602683611c4b565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061182a602083611c4b565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061186a601d83611c4b565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b60006118aa602a83611c4b565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b61190c81611e65565b82525050565b61191b81611e65565b82525050565b600061192d8284611667565b915081905092915050565b600060208201905061194d600083018461158d565b92915050565b6000606082019050611968600083018661158d565b611975602083018561158d565b6119826040830184611912565b949350505050565b600060408201905061199f600083018561158d565b6119ac6020830184611912565b9392505050565b600060208201905081810360008301526119cd818461159c565b905092915050565b600060208201905081810360008301526119ef81846115fa565b905092915050565b6000602082019050611a0c6000830184611658565b92915050565b60006020820190508181036000830152611a2c8184611698565b905092915050565b60006020820190508181036000830152611a4d816116d1565b9050919050565b60006020820190508181036000830152611a6d81611711565b9050919050565b60006020820190508181036000830152611a8d81611777565b9050919050565b60006020820190508181036000830152611aad816117b7565b9050919050565b60006020820190508181036000830152611acd8161181d565b9050919050565b60006020820190508181036000830152611aed8161185d565b9050919050565b60006020820190508181036000830152611b0d8161189d565b9050919050565b6000602082019050611b296000830184611912565b92915050565b6000604051905081810181811067ffffffffffffffff82111715611b5657611b55611ede565b5b8060405250919050565b600067ffffffffffffffff821115611b7b57611b7a611ede565b5b602082029050602081019050919050565b600067ffffffffffffffff821115611ba757611ba6611ede565b5b602082029050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000808291508390505b6001851115611ca657808604811115611c8257611c81611eaf565b5b6001851615611c915780820291505b8081029050611c9f85611f1e565b9450611c66565b94509492505050565b6000611cba82611e65565b9150611cc583611e65565b9250611cf27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611cfa565b905092915050565b600082611d0a5760019050611dc6565b81611d185760009050611dc6565b8160018114611d2e5760028114611d3857611d67565b6001915050611dc6565b60ff841115611d4a57611d49611eaf565b5b8360020a915084821115611d6157611d60611eaf565b5b50611dc6565b5060208310610133831016604e8410600b8410161715611d9c5782820a905083811115611d9757611d96611eaf565b5b611dc6565b611da98484846001611c5c565b92509050818404811115611dc057611dbf611eaf565b5b81810290505b9392505050565b6000611dd882611e65565b9150611de383611e65565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e1c57611e1b611eaf565b5b828202905092915050565b6000611e3282611e45565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611e9a578082015181840152602081019050611e7f565b83811115611ea9576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b611f3481611e27565b8114611f3f57600080fd5b50565b611f4b81611e39565b8114611f5657600080fd5b50565b611f6281611e65565b8114611f6d57600080fd5b50565b611f7981611e6f565b8114611f8457600080fd5b5056fea26469706673582212207ed76eb6e80d44cd9d470aa501c2e467864633e6a520d693c830c2e4f9ced31d64736f6c63430008000033
Deployed Bytecode Sourcemap
28234:2488:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28995:145;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14502:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29913:642;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30623:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28554:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13130:105;;;;;;;;;;;;;:::i;:::-;;12462:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28471:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28637:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29740:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29148:133;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29560:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28439:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13395:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14203:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14335:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28995:145;29053:16;29096:9;;;;;;;;;;;29089:41;;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29082:50;;28995:145;:::o;14502:110::-;12700:12;:10;:12::i;:::-;12689:23;;:7;:5;:7::i;:::-;:23;;;12681:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14578:10:::1;14570:28;;:33;14599:3;14570:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14502:110:::0;:::o;29913:642::-;30045:1;30037:5;:9;30029:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;30170:5;30152:23;;:14;:12;:14::i;:::-;:23;;;30144:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;30295:49;30326:10;30338:5;30302:9;;;;;;;;;;;30295:30;;;;:49;;;;;:::i;:::-;30446:5;30425:6;:18;30432:10;30425:18;;;;;;;;;;;;;;;:26;;;;30522:8;30536:10;30522:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29913:642;:::o;30623:94::-;30666:16;30701:8;30694:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30623:94;:::o;28554:33::-;;;;:::o;13130:105::-;12700:12;:10;:12::i;:::-;12689:23;;:7;:5;:7::i;:::-;:23;;;12681:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13196:30:::1;13223:1;13196:18;:30::i;:::-;13130:105::o:0;12462:89::-;12508:7;12536:6;;;;;;;;;;;12529:13;;12462:89;:::o;28471:24::-;;;;:::o;28637:350::-;28708:12;28696:9;;:24;;;;;;;;;;;;;;;;;;28761:9;;;;;;;;;;;28746:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28731:51;;:12;:51;;;;28793:18;28813:11;28793:31;;28872:12;;28868:2;:16;;;;:::i;:::-;28856:10;:29;;;;:::i;:::-;28835:18;:50;;;;28906:73;28941:10;28961:4;28968:10;28913:9;;;;;;;;;;;28906:34;;;;:73;;;;;;:::i;:::-;28637:350;;:::o;29740:120::-;29809:4;29851:1;29832:6;:16;29839:8;29832:16;;;;;;;;;;;;;;;;:20;29825:27;;29740:120;;;:::o;29148:133::-;29200:16;29243:9;;;;;;;;;;;29236:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29229:44;;29148:133;:::o;29560:97::-;29604:4;29648:1;29627:6;:18;29634:10;29627:18;;;;;;;;;;;;;;;;:22;29620:29;;29560:97;:::o;28439:24::-;;;;;;;;;;;;;:::o;13395:204::-;12700:12;:10;:12::i;:::-;12689:23;;:7;:5;:7::i;:::-;:23;;;12681:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13505:1:::1;13485:22;;:8;:22;;;;13477:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13562:28;13581:8;13562:18;:28::i;:::-;13395:204:::0;:::o;14203:123::-;12700:12;:10;:12::i;:::-;12689:23;;:7;:5;:7::i;:::-;:23;;;12681:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14285:5:::1;14278:22;;;14301:10;14313:3;14278:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14203:123:::0;;:::o;14335:158::-;12700:12;:10;:12::i;:::-;12689:23;;:7;:5;:7::i;:::-;:23;;;12681:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14400:11:::1;14421:5;14414:23;;;14446:4;14414:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14400:52;;14464:20;14473:5;14480:3;14464:8;:20::i;:::-;12761:1;14335:158:::0;:::o;11148:100::-;11201:7;11229:10;11222:17;;11148:100;:::o;24002:217::-;24124:86;24144:5;24174:23;;;24199:2;24203:5;24151:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24124:19;:86::i;:::-;24002:217;;;:::o;13764:195::-;13839:16;13858:6;;;;;;;;;;;13839:25;;13885:8;13876:6;;:17;;;;;;;;;;;;;;;;;;13941:8;13910:40;;13931:8;13910:40;;;;;;;;;;;;13764:195;;:::o;24228:255::-;24378:96;24398:5;24428:27;;;24457:4;24463:2;24467:5;24405:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24378:19;:96::i;:::-;24228:255;;;;:::o;26637:725::-;27065:23;27091:69;27119:4;27091:69;;;;;;;;;;;;;;;;;27099:5;27091:27;;;;:69;;;;;:::i;:::-;27065:95;;27196:1;27176:10;:17;:21;27172:182;;;27275:10;27264:30;;;;;;;;;;;;:::i;:::-;27256:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;27172:182;26637:725;;;:::o;18645:235::-;18786:12;18819:52;18841:6;18849:4;18855:1;18858:12;18819:21;:52::i;:::-;18812:59;;18645:235;;;;;:::o;19796:520::-;19971:12;20030:5;20005:21;:30;;19997:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;20098:18;20109:6;20098:10;:18::i;:::-;20090:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20165:12;20179:23;20206:6;:11;;20225:5;20232:4;20206:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20164:73;;;;20256:51;20273:7;20282:10;20294:12;20256:16;:51::i;:::-;20249:58;;;;19796:520;;;;;;:::o;15781:396::-;15841:4;16053:12;16122:7;16110:20;16102:28;;16167:1;16160:4;:8;16153:15;;;15781:396;;;:::o;22547:731::-;22701:12;22731:7;22727:543;;;22763:10;22756:17;;;;22727:543;22900:1;22880:10;:17;:21;22876:382;;;23081:10;23075:17;23143:15;23130:10;23126:2;23122:19;23115:44;23028:151;23228:12;23221:20;;;;;;;;;;;:::i;:::-;;;;;;;;22547:731;;;;;;:::o;24:644:1:-;;156:80;171:64;228:6;171:64;:::i;:::-;156:80;:::i;:::-;147:89;;256:5;284:6;277:5;270:21;310:4;303:5;299:16;292:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;402:1;399;392:12;350:2;430:1;415:247;440:6;437:1;434:13;415:247;;;507:3;535:48;579:3;567:10;535:48;:::i;:::-;530:3;523:61;613:4;608:3;604:14;597:21;;647:4;642:3;638:14;631:21;;475:187;462:1;459;455:9;450:14;;415:247;;;419:14;137:531;;;;;;;:::o;691:644::-;;823:80;838:64;895:6;838:64;:::i;:::-;823:80;:::i;:::-;814:89;;923:5;951:6;944:5;937:21;977:4;970:5;966:16;959:23;;1002:6;1052:3;1044:4;1036:6;1032:17;1027:3;1023:27;1020:36;1017:2;;;1069:1;1066;1059:12;1017:2;1097:1;1082:247;1107:6;1104:1;1101:13;1082:247;;;1174:3;1202:48;1246:3;1234:10;1202:48;:::i;:::-;1197:3;1190:61;1280:4;1275:3;1271:14;1264:21;;1314:4;1309:3;1305:14;1298:21;;1142:187;1129:1;1126;1122:9;1117:14;;1082:247;;;1086:14;804:531;;;;;;;:::o;1341:139::-;;1425:6;1412:20;1403:29;;1441:33;1468:5;1441:33;:::i;:::-;1393:87;;;;:::o;1486:143::-;;1574:6;1568:13;1559:22;;1590:33;1617:5;1590:33;:::i;:::-;1549:80;;;;:::o;1652:318::-;;1783:3;1776:4;1768:6;1764:17;1760:27;1750:2;;1801:1;1798;1791:12;1750:2;1834:6;1828:13;1859:105;1960:3;1952:6;1945:4;1937:6;1933:17;1859:105;:::i;:::-;1850:114;;1740:230;;;;;:::o;1993:318::-;;2124:3;2117:4;2109:6;2105:17;2101:27;2091:2;;2142:1;2139;2132:12;2091:2;2175:6;2169:13;2200:105;2301:3;2293:6;2286:4;2278:6;2274:17;2200:105;:::i;:::-;2191:114;;2081:230;;;;;:::o;2317:137::-;;2402:6;2396:13;2387:22;;2418:30;2442:5;2418:30;:::i;:::-;2377:77;;;;:::o;2460:139::-;;2544:6;2531:20;2522:29;;2560:33;2587:5;2560:33;:::i;:::-;2512:87;;;;:::o;2605:143::-;;2693:6;2687:13;2678:22;;2709:33;2736:5;2709:33;:::i;:::-;2668:80;;;;:::o;2754:139::-;;2840:6;2834:13;2825:22;;2856:31;2881:5;2856:31;:::i;:::-;2815:78;;;;:::o;2899:262::-;;3007:2;2995:9;2986:7;2982:23;2978:32;2975:2;;;3023:1;3020;3013:12;2975:2;3066:1;3091:53;3136:7;3127:6;3116:9;3112:22;3091:53;:::i;:::-;3081:63;;3037:117;2965:196;;;;:::o;3167:407::-;;;3292:2;3280:9;3271:7;3267:23;3263:32;3260:2;;;3308:1;3305;3298:12;3260:2;3351:1;3376:53;3421:7;3412:6;3401:9;3397:22;3376:53;:::i;:::-;3366:63;;3322:117;3478:2;3504:53;3549:7;3540:6;3529:9;3525:22;3504:53;:::i;:::-;3494:63;;3449:118;3250:324;;;;;:::o;3580:420::-;;3724:2;3712:9;3703:7;3699:23;3695:32;3692:2;;;3740:1;3737;3730:12;3692:2;3804:1;3793:9;3789:17;3783:24;3834:18;3826:6;3823:30;3820:2;;;3866:1;3863;3856:12;3820:2;3894:89;3975:7;3966:6;3955:9;3951:22;3894:89;:::i;:::-;3884:99;;3754:239;3682:318;;;;:::o;4006:420::-;;4150:2;4138:9;4129:7;4125:23;4121:32;4118:2;;;4166:1;4163;4156:12;4118:2;4230:1;4219:9;4215:17;4209:24;4260:18;4252:6;4249:30;4246:2;;;4292:1;4289;4282:12;4246:2;4320:89;4401:7;4392:6;4381:9;4377:22;4320:89;:::i;:::-;4310:99;;4180:239;4108:318;;;;:::o;4432:278::-;;4548:2;4536:9;4527:7;4523:23;4519:32;4516:2;;;4564:1;4561;4554:12;4516:2;4607:1;4632:61;4685:7;4676:6;4665:9;4661:22;4632:61;:::i;:::-;4622:71;;4578:125;4506:204;;;;:::o;4716:262::-;;4824:2;4812:9;4803:7;4799:23;4795:32;4792:2;;;4840:1;4837;4830:12;4792:2;4883:1;4908:53;4953:7;4944:6;4933:9;4929:22;4908:53;:::i;:::-;4898:63;;4854:117;4782:196;;;;:::o;4984:284::-;;5103:2;5091:9;5082:7;5078:23;5074:32;5071:2;;;5119:1;5116;5109:12;5071:2;5162:1;5187:64;5243:7;5234:6;5223:9;5219:22;5187:64;:::i;:::-;5177:74;;5133:128;5061:207;;;;:::o;5274:280::-;;5391:2;5379:9;5370:7;5366:23;5362:32;5359:2;;;5407:1;5404;5397:12;5359:2;5450:1;5475:62;5529:7;5520:6;5509:9;5505:22;5475:62;:::i;:::-;5465:72;;5421:126;5349:205;;;;:::o;5560:179::-;;5650:46;5692:3;5684:6;5650:46;:::i;:::-;5728:4;5723:3;5719:14;5705:28;;5640:99;;;;:::o;5745:179::-;;5835:46;5877:3;5869:6;5835:46;:::i;:::-;5913:4;5908:3;5904:14;5890:28;;5825:99;;;;:::o;5930:108::-;6007:24;6025:5;6007:24;:::i;:::-;6002:3;5995:37;5985:53;;:::o;6044:118::-;6131:24;6149:5;6131:24;:::i;:::-;6126:3;6119:37;6109:53;;:::o;6198:732::-;;6346:54;6394:5;6346:54;:::i;:::-;6416:86;6495:6;6490:3;6416:86;:::i;:::-;6409:93;;6526:56;6576:5;6526:56;:::i;:::-;6605:7;6636:1;6621:284;6646:6;6643:1;6640:13;6621:284;;;6722:6;6716:13;6749:63;6808:3;6793:13;6749:63;:::i;:::-;6742:70;;6835:60;6888:6;6835:60;:::i;:::-;6825:70;;6681:224;6668:1;6665;6661:9;6656:14;;6621:284;;;6625:14;6921:3;6914:10;;6322:608;;;;;;;:::o;6966:732::-;;7114:54;7162:5;7114:54;:::i;:::-;7184:86;7263:6;7258:3;7184:86;:::i;:::-;7177:93;;7294:56;7344:5;7294:56;:::i;:::-;7373:7;7404:1;7389:284;7414:6;7411:1;7408:13;7389:284;;;7490:6;7484:13;7517:63;7576:3;7561:13;7517:63;:::i;:::-;7510:70;;7603:60;7656:6;7603:60;:::i;:::-;7593:70;;7449:224;7436:1;7433;7429:9;7424:14;;7389:284;;;7393:14;7689:3;7682:10;;7090:608;;;;;;;:::o;7704:109::-;7785:21;7800:5;7785:21;:::i;:::-;7780:3;7773:34;7763:50;;:::o;7819:373::-;;7951:38;7983:5;7951:38;:::i;:::-;8005:88;8086:6;8081:3;8005:88;:::i;:::-;7998:95;;8102:52;8147:6;8142:3;8135:4;8128:5;8124:16;8102:52;:::i;:::-;8179:6;8174:3;8170:16;8163:23;;7927:265;;;;;:::o;8198:364::-;;8314:39;8347:5;8314:39;:::i;:::-;8369:71;8433:6;8428:3;8369:71;:::i;:::-;8362:78;;8449:52;8494:6;8489:3;8482:4;8475:5;8471:16;8449:52;:::i;:::-;8526:29;8548:6;8526:29;:::i;:::-;8521:3;8517:39;8510:46;;8290:272;;;;;:::o;8568:325::-;;8731:67;8795:2;8790:3;8731:67;:::i;:::-;8724:74;;8828:29;8824:1;8819:3;8815:11;8808:50;8884:2;8879:3;8875:12;8868:19;;8714:179;;;:::o;8899:370::-;;9062:67;9126:2;9121:3;9062:67;:::i;:::-;9055:74;;9159:34;9155:1;9150:3;9146:11;9139:55;9225:8;9220:2;9215:3;9211:12;9204:30;9260:2;9255:3;9251:12;9244:19;;9045:224;;;:::o;9275:313::-;;9438:67;9502:2;9497:3;9438:67;:::i;:::-;9431:74;;9535:17;9531:1;9526:3;9522:11;9515:38;9579:2;9574:3;9570:12;9563:19;;9421:167;;;:::o;9594:370::-;;9757:67;9821:2;9816:3;9757:67;:::i;:::-;9750:74;;9854:34;9850:1;9845:3;9841:11;9834:55;9920:8;9915:2;9910:3;9906:12;9899:30;9955:2;9950:3;9946:12;9939:19;;9740:224;;;:::o;9970:330::-;;10133:67;10197:2;10192:3;10133:67;:::i;:::-;10126:74;;10230:34;10226:1;10221:3;10217:11;10210:55;10291:2;10286:3;10282:12;10275:19;;10116:184;;;:::o;10306:327::-;;10469:67;10533:2;10528:3;10469:67;:::i;:::-;10462:74;;10566:31;10562:1;10557:3;10553:11;10546:52;10624:2;10619:3;10615:12;10608:19;;10452:181;;;:::o;10639:374::-;;10802:67;10866:2;10861:3;10802:67;:::i;:::-;10795:74;;10899:34;10895:1;10890:3;10886:11;10879:55;10965:12;10960:2;10955:3;10951:12;10944:34;11004:2;10999:3;10995:12;10988:19;;10785:228;;;:::o;11019:108::-;11096:24;11114:5;11096:24;:::i;:::-;11091:3;11084:37;11074:53;;:::o;11133:118::-;11220:24;11238:5;11220:24;:::i;:::-;11215:3;11208:37;11198:53;;:::o;11257:271::-;;11409:93;11498:3;11489:6;11409:93;:::i;:::-;11402:100;;11519:3;11512:10;;11391:137;;;;:::o;11534:222::-;;11665:2;11654:9;11650:18;11642:26;;11678:71;11746:1;11735:9;11731:17;11722:6;11678:71;:::i;:::-;11632:124;;;;:::o;11762:442::-;;11949:2;11938:9;11934:18;11926:26;;11962:71;12030:1;12019:9;12015:17;12006:6;11962:71;:::i;:::-;12043:72;12111:2;12100:9;12096:18;12087:6;12043:72;:::i;:::-;12125;12193:2;12182:9;12178:18;12169:6;12125:72;:::i;:::-;11916:288;;;;;;:::o;12210:332::-;;12369:2;12358:9;12354:18;12346:26;;12382:71;12450:1;12439:9;12435:17;12426:6;12382:71;:::i;:::-;12463:72;12531:2;12520:9;12516:18;12507:6;12463:72;:::i;:::-;12336:206;;;;;:::o;12548:373::-;;12729:2;12718:9;12714:18;12706:26;;12778:9;12772:4;12768:20;12764:1;12753:9;12749:17;12742:47;12806:108;12909:4;12900:6;12806:108;:::i;:::-;12798:116;;12696:225;;;;:::o;12927:373::-;;13108:2;13097:9;13093:18;13085:26;;13157:9;13151:4;13147:20;13143:1;13132:9;13128:17;13121:47;13185:108;13288:4;13279:6;13185:108;:::i;:::-;13177:116;;13075:225;;;;:::o;13306:210::-;;13431:2;13420:9;13416:18;13408:26;;13444:65;13506:1;13495:9;13491:17;13482:6;13444:65;:::i;:::-;13398:118;;;;:::o;13522:313::-;;13673:2;13662:9;13658:18;13650:26;;13722:9;13716:4;13712:20;13708:1;13697:9;13693:17;13686:47;13750:78;13823:4;13814:6;13750:78;:::i;:::-;13742:86;;13640:195;;;;:::o;13841:419::-;;14045:2;14034:9;14030:18;14022:26;;14094:9;14088:4;14084:20;14080:1;14069:9;14065:17;14058:47;14122:131;14248:4;14122:131;:::i;:::-;14114:139;;14012:248;;;:::o;14266:419::-;;14470:2;14459:9;14455:18;14447:26;;14519:9;14513:4;14509:20;14505:1;14494:9;14490:17;14483:47;14547:131;14673:4;14547:131;:::i;:::-;14539:139;;14437:248;;;:::o;14691:419::-;;14895:2;14884:9;14880:18;14872:26;;14944:9;14938:4;14934:20;14930:1;14919:9;14915:17;14908:47;14972:131;15098:4;14972:131;:::i;:::-;14964:139;;14862:248;;;:::o;15116:419::-;;15320:2;15309:9;15305:18;15297:26;;15369:9;15363:4;15359:20;15355:1;15344:9;15340:17;15333:47;15397:131;15523:4;15397:131;:::i;:::-;15389:139;;15287:248;;;:::o;15541:419::-;;15745:2;15734:9;15730:18;15722:26;;15794:9;15788:4;15784:20;15780:1;15769:9;15765:17;15758:47;15822:131;15948:4;15822:131;:::i;:::-;15814:139;;15712:248;;;:::o;15966:419::-;;16170:2;16159:9;16155:18;16147:26;;16219:9;16213:4;16209:20;16205:1;16194:9;16190:17;16183:47;16247:131;16373:4;16247:131;:::i;:::-;16239:139;;16137:248;;;:::o;16391:419::-;;16595:2;16584:9;16580:18;16572:26;;16644:9;16638:4;16634:20;16630:1;16619:9;16615:17;16608:47;16672:131;16798:4;16672:131;:::i;:::-;16664:139;;16562:248;;;:::o;16816:222::-;;16947:2;16936:9;16932:18;16924:26;;16960:71;17028:1;17017:9;17013:17;17004:6;16960:71;:::i;:::-;16914:124;;;;:::o;17044:283::-;;17110:2;17104:9;17094:19;;17152:4;17144:6;17140:17;17259:6;17247:10;17244:22;17223:18;17211:10;17208:34;17205:62;17202:2;;;17270:18;;:::i;:::-;17202:2;17310:10;17306:2;17299:22;17084:243;;;;:::o;17333:311::-;;17500:18;17492:6;17489:30;17486:2;;;17522:18;;:::i;:::-;17486:2;17572:4;17564:6;17560:17;17552:25;;17632:4;17626;17622:15;17614:23;;17415:229;;;:::o;17650:311::-;;17817:18;17809:6;17806:30;17803:2;;;17839:18;;:::i;:::-;17803:2;17889:4;17881:6;17877:17;17869:25;;17949:4;17943;17939:15;17931:23;;17732:229;;;:::o;17967:132::-;;18057:3;18049:11;;18087:4;18082:3;18078:14;18070:22;;18039:60;;;:::o;18105:132::-;;18195:3;18187:11;;18225:4;18220:3;18216:14;18208:22;;18177:60;;;:::o;18243:114::-;;18344:5;18338:12;18328:22;;18317:40;;;:::o;18363:114::-;;18464:5;18458:12;18448:22;;18437:40;;;:::o;18483:98::-;;18568:5;18562:12;18552:22;;18541:40;;;:::o;18587:99::-;;18673:5;18667:12;18657:22;;18646:40;;;:::o;18692:113::-;;18794:4;18789:3;18785:14;18777:22;;18767:38;;;:::o;18811:113::-;;18913:4;18908:3;18904:14;18896:22;;18886:38;;;:::o;18930:184::-;;19063:6;19058:3;19051:19;19103:4;19098:3;19094:14;19079:29;;19041:73;;;;:::o;19120:184::-;;19253:6;19248:3;19241:19;19293:4;19288:3;19284:14;19269:29;;19231:73;;;;:::o;19310:147::-;;19448:3;19433:18;;19423:34;;;;:::o;19463:169::-;;19581:6;19576:3;19569:19;19621:4;19616:3;19612:14;19597:29;;19559:73;;;;:::o;19638:848::-;;;19730:6;19721:15;;19754:5;19745:14;;19768:712;19789:1;19779:8;19776:15;19768:712;;;19884:4;19879:3;19875:14;19869:4;19866:24;19863:2;;;19893:18;;:::i;:::-;19863:2;19943:1;19933:8;19929:16;19926:2;;;20358:4;20351:5;20347:16;20338:25;;19926:2;20408:4;20402;20398:15;20390:23;;20438:32;20461:8;20438:32;:::i;:::-;20426:44;;19768:712;;;19711:775;;;;;;;:::o;20492:285::-;;20576:23;20594:4;20576:23;:::i;:::-;20568:31;;20620:27;20638:8;20620:27;:::i;:::-;20608:39;;20666:104;20703:66;20693:8;20687:4;20666:104;:::i;:::-;20657:113;;20558:219;;;;:::o;20783:1073::-;;21028:8;21018:2;;21049:1;21040:10;;21051:5;;21018:2;21077:4;21067:2;;21094:1;21085:10;;21096:5;;21067:2;21163:4;21211:1;21206:27;;;;21247:1;21242:191;;;;21156:277;;21206:27;21224:1;21215:10;;21226:5;;;21242:191;21287:3;21277:8;21274:17;21271:2;;;21294:18;;:::i;:::-;21271:2;21343:8;21340:1;21336:16;21327:25;;21378:3;21371:5;21368:14;21365:2;;;21385:18;;:::i;:::-;21365:2;21418:5;;;21156:277;;21542:2;21532:8;21529:16;21523:3;21517:4;21514:13;21510:36;21492:2;21482:8;21479:16;21474:2;21468:4;21465:12;21461:35;21445:111;21442:2;;;21598:8;21592:4;21588:19;21579:28;;21633:3;21626:5;21623:14;21620:2;;;21640:18;;:::i;:::-;21620:2;21673:5;;21442:2;21713:42;21751:3;21741:8;21735:4;21732:1;21713:42;:::i;:::-;21698:57;;;;21787:4;21782:3;21778:14;21771:5;21768:25;21765:2;;;21796:18;;:::i;:::-;21765:2;21845:4;21838:5;21834:16;21825:25;;20843:1013;;;;;;:::o;21862:348::-;;21925:20;21943:1;21925:20;:::i;:::-;21920:25;;21959:20;21977:1;21959:20;:::i;:::-;21954:25;;22147:1;22079:66;22075:74;22072:1;22069:81;22064:1;22057:9;22050:17;22046:105;22043:2;;;22154:18;;:::i;:::-;22043:2;22202:1;22199;22195:9;22184:20;;21910:300;;;;:::o;22216:96::-;;22282:24;22300:5;22282:24;:::i;:::-;22271:35;;22261:51;;;:::o;22318:90::-;;22395:5;22388:13;22381:21;22370:32;;22360:48;;;:::o;22414:126::-;;22491:42;22484:5;22480:54;22469:65;;22459:81;;;:::o;22546:77::-;;22612:5;22601:16;;22591:32;;;:::o;22629:86::-;;22704:4;22697:5;22693:16;22682:27;;22672:43;;;:::o;22721:307::-;22789:1;22799:113;22813:6;22810:1;22807:13;22799:113;;;22898:1;22893:3;22889:11;22883:18;22879:1;22874:3;22870:11;22863:39;22835:2;22832:1;22828:10;22823:15;;22799:113;;;22930:6;22927:1;22924:13;22921:2;;;23010:1;23001:6;22996:3;22992:16;22985:27;22921:2;22770:258;;;;:::o;23034:180::-;23082:77;23079:1;23072:88;23179:4;23176:1;23169:15;23203:4;23200:1;23193:15;23220:180;23268:77;23265:1;23258:88;23365:4;23362:1;23355:15;23389:4;23386:1;23379:15;23406:102;;23498:2;23494:7;23489:2;23482:5;23478:14;23474:28;23464:38;;23454:54;;;:::o;23514:102::-;;23603:5;23600:1;23596:13;23575:34;;23565:51;;;:::o;23622:122::-;23695:24;23713:5;23695:24;:::i;:::-;23688:5;23685:35;23675:2;;23734:1;23731;23724:12;23675:2;23665:79;:::o;23750:116::-;23820:21;23835:5;23820:21;:::i;:::-;23813:5;23810:32;23800:2;;23856:1;23853;23846:12;23800:2;23790:76;:::o;23872:122::-;23945:24;23963:5;23945:24;:::i;:::-;23938:5;23935:35;23925:2;;23984:1;23981;23974:12;23925:2;23915:79;:::o;24000:118::-;24071:22;24087:5;24071:22;:::i;:::-;24064:5;24061:33;24051:2;;24108:1;24105;24098:12;24051:2;24041:77;:::o
Swarm Source
ipfs://7ed76eb6e80d44cd9d470aa501c2e467864633e6a520d693c830c2e4f9ced31d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 29 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.