ETH Price: $1,968.49 (-2.19%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy With ETH226435872025-06-06 5:51:47268 days ago1749189107IN
0x836ff375...a731EB8e5
0.1 ETH0.000115291.36550093
Buy With ETH226435762025-06-06 5:49:35268 days ago1749188975IN
0x836ff375...a731EB8e5
0.1 ETH0.000142731.40581198
Buy With ETH225510072025-05-24 6:45:47281 days ago1748069147IN
0x836ff375...a731EB8e5
0.0026 ETH0.000095410.93977069
Buy With ETH225033652025-05-17 14:31:11288 days ago1747492271IN
0x836ff375...a731EB8e5
0.1498 ETH0.00019562.31668017
Buy With ETH225032772025-05-17 14:13:35288 days ago1747491215IN
0x836ff375...a731EB8e5
0.1 ETH0.000212762.09544424
Buy With ETH224287132025-05-07 2:06:11298 days ago1746583571IN
0x836ff375...a731EB8e5
0.001 ETH0.00011721.38808016
Buy With ETH224287122025-05-07 2:05:59298 days ago1746583559IN
0x836ff375...a731EB8e5
0.001 ETH0.000142321.40173697
Buy With ETH223957312025-05-02 11:09:35303 days ago1746184175IN
0x836ff375...a731EB8e5
0.0026 ETH0.000150061.47793619
Buy With ETH223889532025-05-01 12:18:23304 days ago1746101903IN
0x836ff375...a731EB8e5
0.0004 ETH0.000050760.49996872
Buy With ETH223350942025-04-23 23:48:11312 days ago1745452091IN
0x836ff375...a731EB8e5
0.0027 ETH0.000063840.75611028
Buy With ETH221264442025-03-25 20:57:47341 days ago1742936267IN
0x836ff375...a731EB8e5
0.005 ETH0.000073830.72715261
Buy With ETH220287392025-03-12 5:36:47354 days ago1741757807IN
0x836ff375...a731EB8e5
0.038 ETH0.0001041.02434836
Buy With ETH215906032025-01-10 0:48:47416 days ago1736470127IN
0x836ff375...a731EB8e5
0.004 ETH0.00039433.88344195
Buy With ETH215512412025-01-04 12:53:59421 days ago1735995239IN
0x836ff375...a731EB8e5
0.001 ETH0.0030761930.29693641
Buy With ETH215477052025-01-04 1:02:11422 days ago1735952531IN
0x836ff375...a731EB8e5
0.006 ETH0.000662527.84659273
Buy With ETH215405882025-01-03 1:11:11423 days ago1735866671IN
0x836ff375...a731EB8e5
0.007 ETH0.000786889.31935943
Buy With ETH215387472025-01-02 19:01:35423 days ago1735844495IN
0x836ff375...a731EB8e5
0.02 ETH0.0012683112.49141409
Buy With ETH215262152025-01-01 1:04:59425 days ago1735693499IN
0x836ff375...a731EB8e5
0.0076 ETH0.000326213.86349287
Buy With ETH215195572024-12-31 2:45:47425 days ago1735613147IN
0x836ff375...a731EB8e5
0.02209999 ETH0.000319843.78806366
Buy With ETH215124562024-12-30 2:57:47426 days ago1735527467IN
0x836ff375...a731EB8e5
0.006 ETH0.000295763.50285861
Buy With USDC215052972024-12-29 2:59:35427 days ago1735441175IN
0x836ff375...a731EB8e5
0 ETH0.000441183.87711041
Buy With ETH214974552024-12-28 0:43:59429 days ago1735346639IN
0x836ff375...a731EB8e5
0.0128 ETH0.000468184.61103787
Buy With ETH214835112024-12-26 1:58:59430 days ago1735178339IN
0x836ff375...a731EB8e5
0.002 ETH0.000381924.52331553
Buy With ETH214830272024-12-26 0:20:47431 days ago1735172447IN
0x836ff375...a731EB8e5
0.0114 ETH0.00061156.02261475
Buy With ETH214828692024-12-25 23:48:59431 days ago1735170539IN
0x836ff375...a731EB8e5
0.0217 ETH0.000390233.84335667
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer226435872025-06-06 5:51:47268 days ago1749189107
0x836ff375...a731EB8e5
0.1 ETH
Transfer226435762025-06-06 5:49:35268 days ago1749188975
0x836ff375...a731EB8e5
0.1 ETH
Transfer225510072025-05-24 6:45:47281 days ago1748069147
0x836ff375...a731EB8e5
0.0026 ETH
Transfer225033652025-05-17 14:31:11288 days ago1747492271
0x836ff375...a731EB8e5
0.1498 ETH
Transfer225032772025-05-17 14:13:35288 days ago1747491215
0x836ff375...a731EB8e5
0.1 ETH
Transfer224287132025-05-07 2:06:11298 days ago1746583571
0x836ff375...a731EB8e5
0.001 ETH
Transfer224287122025-05-07 2:05:59298 days ago1746583559
0x836ff375...a731EB8e5
0.001 ETH
Transfer223957312025-05-02 11:09:35303 days ago1746184175
0x836ff375...a731EB8e5
0.0026 ETH
Transfer223889532025-05-01 12:18:23304 days ago1746101903
0x836ff375...a731EB8e5
0.0004 ETH
Transfer223350942025-04-23 23:48:11312 days ago1745452091
0x836ff375...a731EB8e5
0.0027 ETH
Transfer221264442025-03-25 20:57:47341 days ago1742936267
0x836ff375...a731EB8e5
0.005 ETH
Transfer220287392025-03-12 5:36:47354 days ago1741757807
0x836ff375...a731EB8e5
0.038 ETH
Transfer215906032025-01-10 0:48:47416 days ago1736470127
0x836ff375...a731EB8e5
0.004 ETH
Transfer215512412025-01-04 12:53:59421 days ago1735995239
0x836ff375...a731EB8e5
0.001 ETH
Transfer215477052025-01-04 1:02:11422 days ago1735952531
0x836ff375...a731EB8e5
0.006 ETH
Transfer215405882025-01-03 1:11:11423 days ago1735866671
0x836ff375...a731EB8e5
0.007 ETH
Transfer215387472025-01-02 19:01:35423 days ago1735844495
0x836ff375...a731EB8e5
0.02 ETH
Transfer215262152025-01-01 1:04:59425 days ago1735693499
0x836ff375...a731EB8e5
0.0076 ETH
Transfer215195572024-12-31 2:45:47425 days ago1735613147
0x836ff375...a731EB8e5
0.02209999 ETH
Transfer215124562024-12-30 2:57:47426 days ago1735527467
0x836ff375...a731EB8e5
0.006 ETH
Transfer214974552024-12-28 0:43:59429 days ago1735346639
0x836ff375...a731EB8e5
0.0128 ETH
Transfer214835112024-12-26 1:58:59430 days ago1735178339
0x836ff375...a731EB8e5
0.002 ETH
Transfer214830272024-12-26 0:20:47431 days ago1735172447
0x836ff375...a731EB8e5
0.0114 ETH
Transfer214828692024-12-25 23:48:59431 days ago1735170539
0x836ff375...a731EB8e5
0.0217 ETH
Transfer214800622024-12-25 14:23:23431 days ago1735136603
0x836ff375...a731EB8e5
0.0013 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RwaPresale

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-11-02
*/

// SPDX-License-Identifier: MIT


pragma solidity = 0.8.28;

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;
        // solhint-disable-next-line no-inline-assembly
        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");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private 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

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library SafeERC20 {
    using SafeMath for uint256;
    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'
        // solhint-disable-next-line max-line-length
        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).add(value);
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
        _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
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}
contract Context {

    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }
    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) 
    
    {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor ()  {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }


}

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,
 * consider using {ReentrancyGuardTransient} instead.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant NOT_ENTERED = 1;
    uint256 private constant ENTERED = 2;

    uint256 private _status;

    /**
     * @dev Unauthorized reentrant call.
     */
    error ReentrancyGuardReentrantCall();

    constructor() {
        _status = NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be NOT_ENTERED
        if (_status == ENTERED) {
            revert ReentrancyGuardReentrantCall();
        }

        // Any calls to nonReentrant after this point will fail
        _status = ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == ENTERED;
    }
}



// ETH LIVE PRICE

interface AggregatorV3Interface {
    function decimals() external view returns (uint8);

    function description() external view returns (string memory);

    function version() external view returns (uint256);

    function getRoundData(uint80 _roundId)
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );

    function latestRoundData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );
}






contract RwaPresale is Ownable ,ReentrancyGuard  {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;
    AggregatorV3Interface public priceFeedETH;
    address public feeReceiver;
    IERC20 public USDT;
    IERC20 public USDC; 
    IERC20 public token;
    uint256 public TokenPricePerUsdt; 
    uint256 public TokenSold; 
    uint256 public maxTokeninPresale;
    mapping (address => bool) public isBlacklist;
    bool public presaleStatus;
    bool public CanClaim;
    mapping(address => uint256) public Claimable;
    event Recovered(address token, uint256 amount);
    event Price(uint256 oldprice);
    event presalestatus(bool _status);
    event maxtokeninpresale(uint256 _newmaxtoken);
    event tokenaddress(address _newtoken);
    event updateblacklist(address _wallet,bool _isblacklist);
    event updateRecipient(address newrecipient);
    event updateClaimOn(bool _isClaimOn);



    constructor(address _USDT, address _USDC,address _token,address _feeRec)  {
       require(_feeRec != address(0), "Invalid recipient address");
       require(_USDT != address(0), "Invalid USDT address");
       require(_USDC != address(0), "Invalid USDC address");
       require(_token != address(0), "Invalid token address");
       TokenPricePerUsdt=0.03*(1E18); 
       maxTokeninPresale=10000000000*(1E18);

        priceFeedETH = AggregatorV3Interface(
            0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419 //ETH mainnet aggregator
            // 0x694AA1769357215DE4FAC081bf1f309aDC325306 //ETH tESTNET aggregator sepolia
        );


       USDT=IERC20(_USDT);
       USDC=IERC20(_USDC);
       token=IERC20(_token);
       feeReceiver =(_feeRec);
    }

     receive() external payable {
            // React to receiving ETH
        }


          // to get real time price of ETH
    function getLatestPriceETH() public view returns (uint256) {
        (, int256 price, , , ) = priceFeedETH.latestRoundData();
        return uint256(price);
    }

     function setaggregatorv3(address _priceFeedETH) external onlyOwner {
        require(_priceFeedETH != address(0), "Invalid aggregator address");
        priceFeedETH = AggregatorV3Interface(_priceFeedETH);
    }


    function BuyWithETH() external payable nonReentrant 
    {
        require(TokenSold.add(ETHToToken(msg.value))<=maxTokeninPresale,"Hardcap Reached!");
        require(presaleStatus == true, "Presale : Presale is not started");  
        require(isBlacklist[msg.sender]==false,"Presale : you are blacklisted");
          // Update claimable tokens for the buyer
        uint256 tokensToTransfer = ETHToToken(msg.value);
        Claimable[msg.sender] += tokensToTransfer;
        TokenSold =TokenSold.add(ETHToToken(msg.value)); 
        require(msg.value > 0, "Presale : Unsuitable Amount"); 
        payable(feeReceiver).transfer(msg.value);
    }



    function BuyWithUSDT(uint256 _amt) external nonReentrant{

        require(TokenSold.add(getValuePerUsdt(_amt))<=maxTokeninPresale,"Hardcap Reached!");
        require(presaleStatus == true, "Presale : Presale is not started");  
        require(_amt > 0, "Presale : Unsuitable Amount"); 
        require(isBlacklist[msg.sender]==false,"Presale : you are blacklisted");
        uint256 tokensToTransfer = getValuePerUsdt(_amt);
        Claimable[msg.sender] += tokensToTransfer;
        TokenSold =TokenSold.add(getValuePerUsdt(_amt)); 
         IERC20(USDT).safeTransferFrom(msg.sender,feeReceiver,_amt); 

    }



    function BuyWithUSDC(uint256 _amt) external nonReentrant {

        require(TokenSold.add(getValuePerUsdt(_amt))<=maxTokeninPresale,"Hardcap Reached!");
        require(presaleStatus == true, "Presale : Presale is not started");  
        require(_amt > 0, "Presale : Unsuitable Amount"); 
        require(isBlacklist[msg.sender]==false,"Presale : you are blacklisted");
        uint256 tokensToTransfer = getValuePerUsdt(_amt);
        Claimable[msg.sender] += tokensToTransfer;
        TokenSold =TokenSold.add(getValuePerUsdt(_amt)); 
        IERC20(USDC).safeTransferFrom(msg.sender,feeReceiver,_amt);
    }

    function claim() external nonReentrant {
        require(CanClaim==true,"Claim is not open yet");
        require(isBlacklist[msg.sender]==false,"Presale : you are blacklisted");
        uint256 claimable=Claimable[msg.sender];
        require(claimable>0,"no claimable found");
        require(claimable>=token.balanceOf(address(this)),"Not sufficient tokens available");
        Claimable[msg.sender]=0;
        require(token.transfer(msg.sender, claimable),"Token transfer failed");
    }


    function getValuePerUsdt(uint256 _amt) public view returns(uint256){
    
       return   (TokenPricePerUsdt.mul(_amt)).div(1e6);
    }

    

    function setPresalePricePerUsdt(uint256 _newPrice) external onlyOwner {
        require(_newPrice >0, "Can't set 0");
        TokenPricePerUsdt = _newPrice;
        emit Price(_newPrice);

    }


    function stopPresale() external onlyOwner {
        presaleStatus = false;
        emit presalestatus(false);
    }

    function resumePresale() external onlyOwner {
        presaleStatus = true;
        emit presalestatus(true);

    }

    function setmaxTokeninPresale(uint256 _value) external onlyOwner{
        require(_value >0, "Invalid max presale value");
        maxTokeninPresale=_value;
        emit maxtokeninpresale(_value);

    }

     function recoverERC20( address tokenAddress ,uint256 tokenAmount) external onlyOwner {
        require(tokenAddress != address(0), "Invalid token address");
        IERC20(tokenAddress).safeTransfer(this.owner(),tokenAmount);
        emit Recovered(address(tokenAddress), tokenAmount);
    }


    function settoken(address _token) external onlyOwner{
        require(_token != address(0), "Invalid token address");
        token=IERC20(_token);
        emit tokenaddress(_token);
    }

    function setUSDT(address _usdt) external onlyOwner{
        require(_usdt != address(0), "Invalid USDT address");
        USDT=IERC20(_usdt);
        emit tokenaddress(_usdt);

    }

    function setUSDC(address _USDC) external onlyOwner{
        require(_USDC != address(0), "Invalid USDC address");
        USDC=IERC20(_USDC);
        emit tokenaddress(_USDC);

    }



    function setBlacklist(address _addr,bool _state) external onlyOwner{
        require(_addr != address(0), "Invalid address");
        isBlacklist[_addr]=_state;
        emit updateblacklist(_addr,_state);
    }


       function releaseFunds() external onlyOwner 
    {
        payable(msg.sender).transfer(address(this).balance);
        
    }


    function ETHToToken(uint256 _amount) public view returns (uint256) {
        uint256 ETHToUSD = (_amount * (getLatestPriceETH())) / (1 ether);
        uint256 numberOfTokens = (ETHToUSD * (TokenPricePerUsdt)) / (1e8);
        return numberOfTokens;
    }

    function changefeeReceiver(address newFeeReceiver) external onlyOwner{
        require(newFeeReceiver != address(0), "Invalid recipient address");
        feeReceiver = newFeeReceiver;
        emit updateRecipient(newFeeReceiver);
    }


     function StartClaim() external onlyOwner{
        CanClaim=true;
        emit updateClaimOn(true);
    }

       function StopClaim() external onlyOwner{
        CanClaim=false;
        emit updateClaimOn(false);

    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_USDT","type":"address"},{"internalType":"address","name":"_USDC","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_feeRec","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"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":"oldprice","type":"uint256"}],"name":"Price","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Recovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newmaxtoken","type":"uint256"}],"name":"maxtokeninpresale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_status","type":"bool"}],"name":"presalestatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newtoken","type":"address"}],"name":"tokenaddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_isClaimOn","type":"bool"}],"name":"updateClaimOn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newrecipient","type":"address"}],"name":"updateRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"_isblacklist","type":"bool"}],"name":"updateblacklist","type":"event"},{"inputs":[],"name":"BuyWithETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amt","type":"uint256"}],"name":"BuyWithUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amt","type":"uint256"}],"name":"BuyWithUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"CanClaim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Claimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"ETHToToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"StartClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"StopClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TokenPricePerUsdt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TokenSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeReceiver","type":"address"}],"name":"changefeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestPriceETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amt","type":"uint256"}],"name":"getValuePerUsdt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokeninPresale","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":"presaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFeedETH","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resumePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_state","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPresalePricePerUsdt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_USDC","type":"address"}],"name":"setUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_usdt","type":"address"}],"name":"setUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeedETH","type":"address"}],"name":"setaggregatorv3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setmaxTokeninPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"settoken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561000f575f5ffd5b5060405161216738038061216783398101604081905261002e91610276565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180556001600160a01b0381166100cd5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420726563697069656e7420616464726573730000000000000060448201526064015b60405180910390fd5b6001600160a01b0384166101235760405162461bcd60e51b815260206004820152601460248201527f496e76616c69642055534454206164647265737300000000000000000000000060448201526064016100c4565b6001600160a01b0383166101795760405162461bcd60e51b815260206004820152601460248201527f496e76616c69642055534443206164647265737300000000000000000000000060448201526064016100c4565b6001600160a01b0382166101cf5760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420746f6b656e2061646472657373000000000000000000000060448201526064016100c4565b666a94d74f4300006007556b204fce5e3e2502611000000060095560028054735f4ec3df9cbd43714fe2740f5e3616155c5b84196001600160a01b0319918216179091556004805482166001600160a01b0396871617905560058054821694861694909417909355600680548416928516929092179091556003805490921692169190911790556102c7565b80516001600160a01b0381168114610271575f5ffd5b919050565b5f5f5f5f60808587031215610289575f5ffd5b6102928561025b565b93506102a06020860161025b565b92506102ae6040860161025b565b91506102bc6060860161025b565b905092959194509250565b611e93806102d45f395ff3fe60806040526004361061020a575f3560e01c80637a08ed4811610113578063acfb23551161009d578063c00c82c21161006d578063c00c82c214610597578063c54e44eb146105b6578063eff69172146105d5578063f2fde38b146105f4578063fc0c546a14610613575f5ffd5b8063acfb235514610521578063af2f14ca1461053a578063b3e089a214610559578063b3f0067414610578575f5ffd5b80638da5cb5b116100e35780638da5cb5b146104ac57806391c1494b146104c857806392c5bfc9146104e6578063a464f44714610505578063a88468e714610519575f5ffd5b80637a08ed481461042257806384345ee3146104415780638980f11f1461045657806389a3027114610475575f5ffd5b806343f9444011610194578063578cd32f11610164578063578cd32f146103b357806369d89575146103d25780636b870ddf146103e65780636e34d929146103fa578063715018a61461040e575f5ffd5b806343f944401461034d5780634e71d92d1461036c57806350c1b9231461038057806354f63ee51461039f575f5ffd5b80631e3a5831116101da5780631e3a583114610287578063333e99db146102b2578063393d7de6146102f05780633c47681e1461030f5780633dcc0db21461032e575f5ffd5b80630412a0b114610215578063153b0d1e1461023d57806318fd84d71461025e5780631ad2ad1a14610273575f5ffd5b3661021157005b5f5ffd5b348015610220575f5ffd5b5061022a60075481565b6040519081526020015b60405180910390f35b348015610248575f5ffd5b5061025c610257366004611b67565b610632565b005b348015610269575f5ffd5b5061022a60085481565b34801561027e575f5ffd5b5061025c61070f565b348015610292575f5ffd5b5061022a6102a1366004611b9e565b600c6020525f908152604090205481565b3480156102bd575f5ffd5b506102e06102cc366004611b9e565b600a6020525f908152604090205460ff1681565b6040519015158152602001610234565b3480156102fb575f5ffd5b5061022a61030a366004611bb9565b610778565b34801561031a575f5ffd5b5061025c610329366004611b9e565b6107a1565b348015610339575f5ffd5b5061025c610348366004611b9e565b610875565b348015610358575f5ffd5b5061025c610367366004611bb9565b61093a565b348015610377575f5ffd5b5061025c6109d5565b34801561038b575f5ffd5b5061025c61039a366004611b9e565b610c3f565b3480156103aa575f5ffd5b5061025c610d03565b3480156103be575f5ffd5b5061022a6103cd366004611bb9565b610d6c565b3480156103dd575f5ffd5b5061025c610dbb565b3480156103f1575f5ffd5b5061025c610e10565b348015610405575f5ffd5b5061022a610e74565b348015610419575f5ffd5b5061025c610ef5565b34801561042d575f5ffd5b5061025c61043c366004611b9e565b610f66565b34801561044c575f5ffd5b5061022a60095481565b348015610461575f5ffd5b5061025c610470366004611bd0565b611007565b348015610480575f5ffd5b50600554610494906001600160a01b031681565b6040516001600160a01b039091168152602001610234565b3480156104b7575f5ffd5b505f546001600160a01b0316610494565b3480156104d3575f5ffd5b50600b546102e090610100900460ff1681565b3480156104f1575f5ffd5b5061025c610500366004611bb9565b611131565b348015610510575f5ffd5b5061025c61124f565b61025c6112b8565b34801561052c575f5ffd5b50600b546102e09060ff1681565b348015610545575f5ffd5b5061025c610554366004611bb9565b6113e3565b348015610564575f5ffd5b5061025c610573366004611b9e565b611490565b348015610583575f5ffd5b50600354610494906001600160a01b031681565b3480156105a2575f5ffd5b5061025c6105b1366004611bb9565b611554565b3480156105c1575f5ffd5b50600454610494906001600160a01b031681565b3480156105e0575f5ffd5b50600254610494906001600160a01b031681565b3480156105ff575f5ffd5b5061025c61060e366004611b9e565b61165f565b34801561061e575f5ffd5b50600654610494906001600160a01b031681565b5f546001600160a01b031633146106645760405162461bcd60e51b815260040161065b90611bfa565b60405180910390fd5b6001600160a01b0382166106ac5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161065b565b6001600160a01b0382165f818152600a6020908152604091829020805460ff19168515159081179091558251938452908301527f558ddc7901da7a479d966a256ccb9e108173ec7674c5c8a2ee30c5c3fb42387291015b60405180910390a15050565b5f546001600160a01b031633146107385760405162461bcd60e51b815260040161065b90611bfa565b600b805460ff191690556040515f81527f877f6a55330cd3380d3f298c796ba27b979cc3c9ed832ff87995b90e6d20d29d906020015b60405180910390a1565b5f61079b620f42406107958460075461174690919063ffffffff16565b906117cb565b92915050565b5f546001600160a01b031633146107ca5760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b0381166108205760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420726563697069656e74206164647265737300000000000000604482015260640161065b565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527ffeec756c64d2cd29819a1506560be5b252fe9134578977a2e1ce5a75a4990b8b906020015b60405180910390a150565b5f546001600160a01b0316331461089e5760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b0381166108ec5760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b604482015260640161065b565b600680546001600160a01b0319166001600160a01b0383169081179091556040519081527f47da22c0331e51a69591b5e2172f95386c96f1c78b7668baeb4feaad35a177a99060200161086a565b5f546001600160a01b031633146109635760405162461bcd60e51b815260040161065b90611bfa565b5f81116109a05760405162461bcd60e51b815260206004820152600b60248201526a043616e27742073657420360ac1b604482015260640161065b565b60078190556040518181527f63f32f63810afda7c9be9643f9fa73ee3f39a9fd8bb35775a2b0d73e48ed9bed9060200161086a565b6109dd61180c565b600b5460ff610100909104161515600114610a325760405162461bcd60e51b815260206004820152601560248201527410db185a5b481a5cc81b9bdd081bdc195b881e595d605a1b604482015260640161065b565b335f908152600a602052604090205460ff1615610a615760405162461bcd60e51b815260040161065b90611c2f565b335f908152600c602052604090205480610ab25760405162461bcd60e51b81526020600482015260126024820152711b9bc818db185a5b58589b1948199bdd5b9960721b604482015260640161065b565b6006546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610af8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b1c9190611c66565b811015610b6b5760405162461bcd60e51b815260206004820152601f60248201527f4e6f742073756666696369656e7420746f6b656e7320617661696c61626c6500604482015260640161065b565b335f818152600c602052604080822091909155600654905163a9059cbb60e01b81526004810192909252602482018390526001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015610bcb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190611c7d565b610c335760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015260640161065b565b50610c3d60018055565b565b5f546001600160a01b03163314610c685760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b038116610cb55760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642055534454206164647265737360601b604482015260640161065b565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f47da22c0331e51a69591b5e2172f95386c96f1c78b7668baeb4feaad35a177a99060200161086a565b5f546001600160a01b03163314610d2c5760405162461bcd60e51b815260040161065b90611bfa565b600b805460ff191660019081179091556040519081527f877f6a55330cd3380d3f298c796ba27b979cc3c9ed832ff87995b90e6d20d29d9060200161076e565b5f5f670de0b6b3a7640000610d7f610e74565b610d899085611cac565b610d939190611cc3565b90505f6305f5e10060075483610da99190611cac565b610db39190611cc3565b949350505050565b5f546001600160a01b03163314610de45760405162461bcd60e51b815260040161065b90611bfa565b60405133904780156108fc02915f818181858888f19350505050158015610e0d573d5f5f3e3d5ffd5b50565b5f546001600160a01b03163314610e395760405162461bcd60e51b815260040161065b90611bfa565b600b805461ff00191690556040515f81527fe93a361a601424914cc8b65dffe57432f1225844744faa2bf834c3fb911bb3e79060200161076e565b5f5f60025f9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610ec6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eea9190611d00565b509195945050505050565b5f546001600160a01b03163314610f1e5760405162461bcd60e51b815260040161065b90611bfa565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610f8f5760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b038116610fe55760405162461bcd60e51b815260206004820152601a60248201527f496e76616c69642061676772656761746f722061646472657373000000000000604482015260640161065b565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110305760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b03821661107e5760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b604482015260640161065b565b6110f2306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e19190611d4e565b6001600160a01b0384169083611836565b604080516001600160a01b0384168152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa289101610703565b61113961180c565b60095461115161114883610778565b6008549061189e565b111561116f5760405162461bcd60e51b815260040161065b90611d69565b600b5460ff1615156001146111965760405162461bcd60e51b815260040161065b90611d93565b5f81116111b55760405162461bcd60e51b815260040161065b90611dc8565b335f908152600a602052604090205460ff16156111e45760405162461bcd60e51b815260040161065b90611c2f565b5f6111ee82610778565b335f908152600c6020526040812080549293508392909190611211908490611dff565b90915550611223905061114883610778565b600855600354600554611245916001600160a01b0391821691339116856118fc565b50610e0d60018055565b5f546001600160a01b031633146112785760405162461bcd60e51b815260040161065b90611bfa565b600b805461ff001916610100179055604051600181527fe93a361a601424914cc8b65dffe57432f1225844744faa2bf834c3fb911bb3e79060200161076e565b6112c061180c565b6009546112cf61114834610d6c565b11156112ed5760405162461bcd60e51b815260040161065b90611d69565b600b5460ff1615156001146113145760405162461bcd60e51b815260040161065b90611d93565b335f908152600a602052604090205460ff16156113435760405162461bcd60e51b815260040161065b90611c2f565b5f61134d34610d6c565b335f908152600c6020526040812080549293508392909190611370908490611dff565b90915550611382905061114834610d6c565b600855346113a25760405162461bcd60e51b815260040161065b90611dc8565b6003546040516001600160a01b03909116903480156108fc02915f818181858888f193505050501580156113d8573d5f5f3e3d5ffd5b5050610c3d60018055565b5f546001600160a01b0316331461140c5760405162461bcd60e51b815260040161065b90611bfa565b5f811161145b5760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206d61782070726573616c652076616c756500000000000000604482015260640161065b565b60098190556040518181527f5cfeff1f6a2d384184f9f8d61ab1a4348446de022cdb0cf812dda6e958ccd2ff9060200161086a565b5f546001600160a01b031633146114b95760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b0381166115065760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642055534443206164647265737360601b604482015260640161065b565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f47da22c0331e51a69591b5e2172f95386c96f1c78b7668baeb4feaad35a177a99060200161086a565b61155c61180c565b60095461156b61114883610778565b11156115895760405162461bcd60e51b815260040161065b90611d69565b600b5460ff1615156001146115b05760405162461bcd60e51b815260040161065b90611d93565b5f81116115cf5760405162461bcd60e51b815260040161065b90611dc8565b335f908152600a602052604090205460ff16156115fe5760405162461bcd60e51b815260040161065b90611c2f565b5f61160882610778565b335f908152600c602052604081208054929350839290919061162b908490611dff565b9091555061163d905061114883610778565b600855600354600454611245916001600160a01b0391821691339116856118fc565b5f546001600160a01b031633146116885760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b0381166116ed5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f825f0361175557505f61079b565b5f6117608385611cac565b90508261176d8583611cc3565b146117c45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161065b565b9392505050565b5f6117c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061193a565b60026001540361182f57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6040516001600160a01b03831660248201526044810182905261189990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261196f565b505050565b5f806118aa8385611dff565b9050838110156117c45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161065b565b6040516001600160a01b03808516602483015283166044820152606481018290526119349085906323b872dd60e01b90608401611862565b50505050565b5f818361195a5760405162461bcd60e51b815260040161065b9190611e12565b505f6119668486611cc3565b95945050505050565b5f6119c3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a409092919063ffffffff16565b80519091501561189957808060200190518101906119e19190611c7d565b6118995760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161065b565b6060610db384845f8585843b611a985760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161065b565b5f5f866001600160a01b03168587604051611ab39190611e47565b5f6040518083038185875af1925050503d805f8114611aed576040519150601f19603f3d011682016040523d82523d5f602084013e611af2565b606091505b5091509150611b02828286611b0d565b979650505050505050565b60608315611b1c5750816117c4565b825115611b2c5782518084602001fd5b8160405162461bcd60e51b815260040161065b9190611e12565b6001600160a01b0381168114610e0d575f5ffd5b8015158114610e0d575f5ffd5b5f5f60408385031215611b78575f5ffd5b8235611b8381611b46565b91506020830135611b9381611b5a565b809150509250929050565b5f60208284031215611bae575f5ffd5b81356117c481611b46565b5f60208284031215611bc9575f5ffd5b5035919050565b5f5f60408385031215611be1575f5ffd5b8235611bec81611b46565b946020939093013593505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f50726573616c65203a20796f752061726520626c61636b6c6973746564000000604082015260600190565b5f60208284031215611c76575f5ffd5b5051919050565b5f60208284031215611c8d575f5ffd5b81516117c481611b5a565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761079b5761079b611c98565b5f82611cdd57634e487b7160e01b5f52601260045260245ffd5b500490565b805169ffffffffffffffffffff81168114611cfb575f5ffd5b919050565b5f5f5f5f5f60a08688031215611d14575f5ffd5b611d1d86611ce2565b60208701516040880151606089015192975090955093509150611d4260808701611ce2565b90509295509295909350565b5f60208284031215611d5e575f5ffd5b81516117c481611b46565b60208082526010908201526f4861726463617020526561636865642160801b604082015260600190565b6020808252818101527f50726573616c65203a2050726573616c65206973206e6f742073746172746564604082015260600190565b6020808252601b908201527f50726573616c65203a20556e7375697461626c6520416d6f756e740000000000604082015260600190565b8082018082111561079b5761079b611c98565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f82518060208501845e5f92019182525091905056fea26469706673582212203677b34c34ffd713fbdf955d5ce2dab4ff0280111ff6cf6accf693aa2e7de6a864736f6c634300081c0033000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000af3a2019c2789a918d71e0c406f5fc2a5c0ffb11000000000000000000000000d0d0feeb1dc647a48ff672ab0ea17823fde8fe57

Deployed Bytecode

0x60806040526004361061020a575f3560e01c80637a08ed4811610113578063acfb23551161009d578063c00c82c21161006d578063c00c82c214610597578063c54e44eb146105b6578063eff69172146105d5578063f2fde38b146105f4578063fc0c546a14610613575f5ffd5b8063acfb235514610521578063af2f14ca1461053a578063b3e089a214610559578063b3f0067414610578575f5ffd5b80638da5cb5b116100e35780638da5cb5b146104ac57806391c1494b146104c857806392c5bfc9146104e6578063a464f44714610505578063a88468e714610519575f5ffd5b80637a08ed481461042257806384345ee3146104415780638980f11f1461045657806389a3027114610475575f5ffd5b806343f9444011610194578063578cd32f11610164578063578cd32f146103b357806369d89575146103d25780636b870ddf146103e65780636e34d929146103fa578063715018a61461040e575f5ffd5b806343f944401461034d5780634e71d92d1461036c57806350c1b9231461038057806354f63ee51461039f575f5ffd5b80631e3a5831116101da5780631e3a583114610287578063333e99db146102b2578063393d7de6146102f05780633c47681e1461030f5780633dcc0db21461032e575f5ffd5b80630412a0b114610215578063153b0d1e1461023d57806318fd84d71461025e5780631ad2ad1a14610273575f5ffd5b3661021157005b5f5ffd5b348015610220575f5ffd5b5061022a60075481565b6040519081526020015b60405180910390f35b348015610248575f5ffd5b5061025c610257366004611b67565b610632565b005b348015610269575f5ffd5b5061022a60085481565b34801561027e575f5ffd5b5061025c61070f565b348015610292575f5ffd5b5061022a6102a1366004611b9e565b600c6020525f908152604090205481565b3480156102bd575f5ffd5b506102e06102cc366004611b9e565b600a6020525f908152604090205460ff1681565b6040519015158152602001610234565b3480156102fb575f5ffd5b5061022a61030a366004611bb9565b610778565b34801561031a575f5ffd5b5061025c610329366004611b9e565b6107a1565b348015610339575f5ffd5b5061025c610348366004611b9e565b610875565b348015610358575f5ffd5b5061025c610367366004611bb9565b61093a565b348015610377575f5ffd5b5061025c6109d5565b34801561038b575f5ffd5b5061025c61039a366004611b9e565b610c3f565b3480156103aa575f5ffd5b5061025c610d03565b3480156103be575f5ffd5b5061022a6103cd366004611bb9565b610d6c565b3480156103dd575f5ffd5b5061025c610dbb565b3480156103f1575f5ffd5b5061025c610e10565b348015610405575f5ffd5b5061022a610e74565b348015610419575f5ffd5b5061025c610ef5565b34801561042d575f5ffd5b5061025c61043c366004611b9e565b610f66565b34801561044c575f5ffd5b5061022a60095481565b348015610461575f5ffd5b5061025c610470366004611bd0565b611007565b348015610480575f5ffd5b50600554610494906001600160a01b031681565b6040516001600160a01b039091168152602001610234565b3480156104b7575f5ffd5b505f546001600160a01b0316610494565b3480156104d3575f5ffd5b50600b546102e090610100900460ff1681565b3480156104f1575f5ffd5b5061025c610500366004611bb9565b611131565b348015610510575f5ffd5b5061025c61124f565b61025c6112b8565b34801561052c575f5ffd5b50600b546102e09060ff1681565b348015610545575f5ffd5b5061025c610554366004611bb9565b6113e3565b348015610564575f5ffd5b5061025c610573366004611b9e565b611490565b348015610583575f5ffd5b50600354610494906001600160a01b031681565b3480156105a2575f5ffd5b5061025c6105b1366004611bb9565b611554565b3480156105c1575f5ffd5b50600454610494906001600160a01b031681565b3480156105e0575f5ffd5b50600254610494906001600160a01b031681565b3480156105ff575f5ffd5b5061025c61060e366004611b9e565b61165f565b34801561061e575f5ffd5b50600654610494906001600160a01b031681565b5f546001600160a01b031633146106645760405162461bcd60e51b815260040161065b90611bfa565b60405180910390fd5b6001600160a01b0382166106ac5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161065b565b6001600160a01b0382165f818152600a6020908152604091829020805460ff19168515159081179091558251938452908301527f558ddc7901da7a479d966a256ccb9e108173ec7674c5c8a2ee30c5c3fb42387291015b60405180910390a15050565b5f546001600160a01b031633146107385760405162461bcd60e51b815260040161065b90611bfa565b600b805460ff191690556040515f81527f877f6a55330cd3380d3f298c796ba27b979cc3c9ed832ff87995b90e6d20d29d906020015b60405180910390a1565b5f61079b620f42406107958460075461174690919063ffffffff16565b906117cb565b92915050565b5f546001600160a01b031633146107ca5760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b0381166108205760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420726563697069656e74206164647265737300000000000000604482015260640161065b565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527ffeec756c64d2cd29819a1506560be5b252fe9134578977a2e1ce5a75a4990b8b906020015b60405180910390a150565b5f546001600160a01b0316331461089e5760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b0381166108ec5760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b604482015260640161065b565b600680546001600160a01b0319166001600160a01b0383169081179091556040519081527f47da22c0331e51a69591b5e2172f95386c96f1c78b7668baeb4feaad35a177a99060200161086a565b5f546001600160a01b031633146109635760405162461bcd60e51b815260040161065b90611bfa565b5f81116109a05760405162461bcd60e51b815260206004820152600b60248201526a043616e27742073657420360ac1b604482015260640161065b565b60078190556040518181527f63f32f63810afda7c9be9643f9fa73ee3f39a9fd8bb35775a2b0d73e48ed9bed9060200161086a565b6109dd61180c565b600b5460ff610100909104161515600114610a325760405162461bcd60e51b815260206004820152601560248201527410db185a5b481a5cc81b9bdd081bdc195b881e595d605a1b604482015260640161065b565b335f908152600a602052604090205460ff1615610a615760405162461bcd60e51b815260040161065b90611c2f565b335f908152600c602052604090205480610ab25760405162461bcd60e51b81526020600482015260126024820152711b9bc818db185a5b58589b1948199bdd5b9960721b604482015260640161065b565b6006546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610af8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b1c9190611c66565b811015610b6b5760405162461bcd60e51b815260206004820152601f60248201527f4e6f742073756666696369656e7420746f6b656e7320617661696c61626c6500604482015260640161065b565b335f818152600c602052604080822091909155600654905163a9059cbb60e01b81526004810192909252602482018390526001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015610bcb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190611c7d565b610c335760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015260640161065b565b50610c3d60018055565b565b5f546001600160a01b03163314610c685760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b038116610cb55760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642055534454206164647265737360601b604482015260640161065b565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f47da22c0331e51a69591b5e2172f95386c96f1c78b7668baeb4feaad35a177a99060200161086a565b5f546001600160a01b03163314610d2c5760405162461bcd60e51b815260040161065b90611bfa565b600b805460ff191660019081179091556040519081527f877f6a55330cd3380d3f298c796ba27b979cc3c9ed832ff87995b90e6d20d29d9060200161076e565b5f5f670de0b6b3a7640000610d7f610e74565b610d899085611cac565b610d939190611cc3565b90505f6305f5e10060075483610da99190611cac565b610db39190611cc3565b949350505050565b5f546001600160a01b03163314610de45760405162461bcd60e51b815260040161065b90611bfa565b60405133904780156108fc02915f818181858888f19350505050158015610e0d573d5f5f3e3d5ffd5b50565b5f546001600160a01b03163314610e395760405162461bcd60e51b815260040161065b90611bfa565b600b805461ff00191690556040515f81527fe93a361a601424914cc8b65dffe57432f1225844744faa2bf834c3fb911bb3e79060200161076e565b5f5f60025f9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610ec6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eea9190611d00565b509195945050505050565b5f546001600160a01b03163314610f1e5760405162461bcd60e51b815260040161065b90611bfa565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610f8f5760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b038116610fe55760405162461bcd60e51b815260206004820152601a60248201527f496e76616c69642061676772656761746f722061646472657373000000000000604482015260640161065b565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110305760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b03821661107e5760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b604482015260640161065b565b6110f2306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e19190611d4e565b6001600160a01b0384169083611836565b604080516001600160a01b0384168152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa289101610703565b61113961180c565b60095461115161114883610778565b6008549061189e565b111561116f5760405162461bcd60e51b815260040161065b90611d69565b600b5460ff1615156001146111965760405162461bcd60e51b815260040161065b90611d93565b5f81116111b55760405162461bcd60e51b815260040161065b90611dc8565b335f908152600a602052604090205460ff16156111e45760405162461bcd60e51b815260040161065b90611c2f565b5f6111ee82610778565b335f908152600c6020526040812080549293508392909190611211908490611dff565b90915550611223905061114883610778565b600855600354600554611245916001600160a01b0391821691339116856118fc565b50610e0d60018055565b5f546001600160a01b031633146112785760405162461bcd60e51b815260040161065b90611bfa565b600b805461ff001916610100179055604051600181527fe93a361a601424914cc8b65dffe57432f1225844744faa2bf834c3fb911bb3e79060200161076e565b6112c061180c565b6009546112cf61114834610d6c565b11156112ed5760405162461bcd60e51b815260040161065b90611d69565b600b5460ff1615156001146113145760405162461bcd60e51b815260040161065b90611d93565b335f908152600a602052604090205460ff16156113435760405162461bcd60e51b815260040161065b90611c2f565b5f61134d34610d6c565b335f908152600c6020526040812080549293508392909190611370908490611dff565b90915550611382905061114834610d6c565b600855346113a25760405162461bcd60e51b815260040161065b90611dc8565b6003546040516001600160a01b03909116903480156108fc02915f818181858888f193505050501580156113d8573d5f5f3e3d5ffd5b5050610c3d60018055565b5f546001600160a01b0316331461140c5760405162461bcd60e51b815260040161065b90611bfa565b5f811161145b5760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206d61782070726573616c652076616c756500000000000000604482015260640161065b565b60098190556040518181527f5cfeff1f6a2d384184f9f8d61ab1a4348446de022cdb0cf812dda6e958ccd2ff9060200161086a565b5f546001600160a01b031633146114b95760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b0381166115065760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642055534443206164647265737360601b604482015260640161065b565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f47da22c0331e51a69591b5e2172f95386c96f1c78b7668baeb4feaad35a177a99060200161086a565b61155c61180c565b60095461156b61114883610778565b11156115895760405162461bcd60e51b815260040161065b90611d69565b600b5460ff1615156001146115b05760405162461bcd60e51b815260040161065b90611d93565b5f81116115cf5760405162461bcd60e51b815260040161065b90611dc8565b335f908152600a602052604090205460ff16156115fe5760405162461bcd60e51b815260040161065b90611c2f565b5f61160882610778565b335f908152600c602052604081208054929350839290919061162b908490611dff565b9091555061163d905061114883610778565b600855600354600454611245916001600160a01b0391821691339116856118fc565b5f546001600160a01b031633146116885760405162461bcd60e51b815260040161065b90611bfa565b6001600160a01b0381166116ed5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f825f0361175557505f61079b565b5f6117608385611cac565b90508261176d8583611cc3565b146117c45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161065b565b9392505050565b5f6117c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061193a565b60026001540361182f57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6040516001600160a01b03831660248201526044810182905261189990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261196f565b505050565b5f806118aa8385611dff565b9050838110156117c45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161065b565b6040516001600160a01b03808516602483015283166044820152606481018290526119349085906323b872dd60e01b90608401611862565b50505050565b5f818361195a5760405162461bcd60e51b815260040161065b9190611e12565b505f6119668486611cc3565b95945050505050565b5f6119c3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a409092919063ffffffff16565b80519091501561189957808060200190518101906119e19190611c7d565b6118995760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161065b565b6060610db384845f8585843b611a985760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161065b565b5f5f866001600160a01b03168587604051611ab39190611e47565b5f6040518083038185875af1925050503d805f8114611aed576040519150601f19603f3d011682016040523d82523d5f602084013e611af2565b606091505b5091509150611b02828286611b0d565b979650505050505050565b60608315611b1c5750816117c4565b825115611b2c5782518084602001fd5b8160405162461bcd60e51b815260040161065b9190611e12565b6001600160a01b0381168114610e0d575f5ffd5b8015158114610e0d575f5ffd5b5f5f60408385031215611b78575f5ffd5b8235611b8381611b46565b91506020830135611b9381611b5a565b809150509250929050565b5f60208284031215611bae575f5ffd5b81356117c481611b46565b5f60208284031215611bc9575f5ffd5b5035919050565b5f5f60408385031215611be1575f5ffd5b8235611bec81611b46565b946020939093013593505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f50726573616c65203a20796f752061726520626c61636b6c6973746564000000604082015260600190565b5f60208284031215611c76575f5ffd5b5051919050565b5f60208284031215611c8d575f5ffd5b81516117c481611b5a565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761079b5761079b611c98565b5f82611cdd57634e487b7160e01b5f52601260045260245ffd5b500490565b805169ffffffffffffffffffff81168114611cfb575f5ffd5b919050565b5f5f5f5f5f60a08688031215611d14575f5ffd5b611d1d86611ce2565b60208701516040880151606089015192975090955093509150611d4260808701611ce2565b90509295509295909350565b5f60208284031215611d5e575f5ffd5b81516117c481611b46565b60208082526010908201526f4861726463617020526561636865642160801b604082015260600190565b6020808252818101527f50726573616c65203a2050726573616c65206973206e6f742073746172746564604082015260600190565b6020808252601b908201527f50726573616c65203a20556e7375697461626c6520416d6f756e740000000000604082015260600190565b8082018082111561079b5761079b611c98565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f82518060208501845e5f92019182525091905056fea26469706673582212203677b34c34ffd713fbdf955d5ce2dab4ff0280111ff6cf6accf693aa2e7de6a864736f6c634300081c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000af3a2019c2789a918d71e0c406f5fc2a5c0ffb11000000000000000000000000d0d0feeb1dc647a48ff672ab0ea17823fde8fe57

-----Decoded View---------------
Arg [0] : _USDT (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [1] : _USDC (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [2] : _token (address): 0xAf3a2019C2789A918d71E0C406f5fC2A5C0FFb11
Arg [3] : _feeRec (address): 0xd0D0FeeB1DC647a48Ff672ab0ea17823FdE8fE57

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [1] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [2] : 000000000000000000000000af3a2019c2789a918d71e0c406f5fc2a5c0ffb11
Arg [3] : 000000000000000000000000d0d0feeb1dc647a48ff672ab0ea17823fde8fe57


Deployed Bytecode Sourcemap

18848:7553:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19128:32;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;19128:32:0;;;;;;;;25285:214;;;;;;;;;;-1:-1:-1;25285:214:0;;;;;:::i;:::-;;:::i;:::-;;19168:24;;;;;;;;;;;;;;;;23915:118;;;;;;;;;;;;;:::i;19349:44::-;;;;;;;;;;-1:-1:-1;19349:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;19239;;;;;;;;;;-1:-1:-1;19239:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1259:14:1;;1252:22;1234:41;;1222:2;1207:18;19239:44:0;1094:187:1;23552:138:0;;;;;;;;;;-1:-1:-1;23552:138:0;;;;;:::i;:::-;;:::i;25917:240::-;;;;;;;;;;-1:-1:-1;25917:240:0;;;;;:::i;:::-;;:::i;24691:192::-;;;;;;;;;;-1:-1:-1;24691:192:0;;;;;:::i;:::-;;:::i;23706:199::-;;;;;;;;;;-1:-1:-1;23706:199:0;;;;;:::i;:::-;;:::i;23043:499::-;;;;;;;;;;;;;:::i;24891:187::-;;;;;;;;;;-1:-1:-1;24891:187:0;;;;;:::i;:::-;;:::i;24041:120::-;;;;;;;;;;;;;:::i;25651:258::-;;;;;;;;;;-1:-1:-1;25651:258:0;;;;;:::i;:::-;;:::i;25512:129::-;;;;;;;;;;;;;:::i;26286:110::-;;;;;;;;;;;;;:::i;20709:165::-;;;;;;;;;;;;;:::i;14327:148::-;;;;;;;;;;;;;:::i;20883:214::-;;;;;;;;;;-1:-1:-1;20883:214:0;;;;;:::i;:::-;;:::i;19200:32::-;;;;;;;;;;;;;;;;24386:295;;;;;;;;;;-1:-1:-1;24386:295:0;;;;;:::i;:::-;;:::i;19076:18::-;;;;;;;;;;-1:-1:-1;19076:18:0;;;;-1:-1:-1;;;;;19076:18:0;;;;;;-1:-1:-1;;;;;2067:32:1;;;2049:51;;2037:2;2022:18;19076::0;1889:217:1;14117:79:0;;;;;;;;;;-1:-1:-1;14155:7:0;14182:6;-1:-1:-1;;;;;14182:6:0;14117:79;;19322:20;;;;;;;;;;-1:-1:-1;19322:20:0;;;;;;;;;;;22414:621;;;;;;;;;;-1:-1:-1;22414:621:0;;;;;:::i;:::-;;:::i;26168:107::-;;;;;;;;;;;;;:::i;21107:659::-;;;:::i;19290:25::-;;;;;;;;;;-1:-1:-1;19290:25:0;;;;;;;;24169:208;;;;;;;;;;-1:-1:-1;24169:208:0;;;;;:::i;:::-;;:::i;25086:187::-;;;;;;;;;;-1:-1:-1;25086:187:0;;;;;:::i;:::-;;:::i;19018:26::-;;;;;;;;;;-1:-1:-1;19018:26:0;;;;-1:-1:-1;;;;;19018:26:0;;;21778:624;;;;;;;;;;-1:-1:-1;21778:624:0;;;;;:::i;:::-;;:::i;19051:18::-;;;;;;;;;;-1:-1:-1;19051:18:0;;;;-1:-1:-1;;;;;19051:18:0;;;18970:41;;;;;;;;;;-1:-1:-1;18970:41:0;;;;-1:-1:-1;;;;;18970:41:0;;;14481:244;;;;;;;;;;-1:-1:-1;14481:244:0;;;;;:::i;:::-;;:::i;19102:19::-;;;;;;;;;;-1:-1:-1;19102:19:0;;;;-1:-1:-1;;;;;19102:19:0;;;25285:214;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;25371:19:0;::::1;25363:47;;;::::0;-1:-1:-1;;;25363:47:0;;3119:2:1;25363:47:0::1;::::0;::::1;3101:21:1::0;3158:2;3138:18;;;3131:30;-1:-1:-1;;;3177:18:1;;;3170:45;3232:18;;25363:47:0::1;2917:339:1::0;25363:47:0::1;-1:-1:-1::0;;;;;25421:18:0;::::1;;::::0;;;:11:::1;:18;::::0;;;;;;;;:25;;-1:-1:-1;;25421:25:0::1;::::0;::::1;;::::0;;::::1;::::0;;;25462:29;;3429:51:1;;;3496:18;;;3489:50;25462:29:0::1;::::0;3402:18:1;25462:29:0::1;;;;;;;;25285:214:::0;;:::o;23915:118::-;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;23968:13:::1;:21:::0;;-1:-1:-1;;23968:21:0::1;::::0;;24005:20:::1;::::0;-1:-1:-1;1234:41:1;;24005:20:0::1;::::0;1222:2:1;1207:18;24005:20:0::1;;;;;;;;23915:118::o:0;23552:138::-;23611:7;23644:38;23678:3;23645:27;23667:4;23645:17;;:21;;:27;;;;:::i;:::-;23644:33;;:38::i;:::-;23635:47;23552:138;-1:-1:-1;;23552:138:0:o;25917:240::-;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26005:28:0;::::1;25997:66;;;::::0;-1:-1:-1;;;25997:66:0;;3752:2:1;25997:66:0::1;::::0;::::1;3734:21:1::0;3791:2;3771:18;;;3764:30;3830:27;3810:18;;;3803:55;3875:18;;25997:66:0::1;3550:349:1::0;25997:66:0::1;26074:11;:28:::0;;-1:-1:-1;;;;;;26074:28:0::1;-1:-1:-1::0;;;;;26074:28:0;::::1;::::0;;::::1;::::0;;;26118:31:::1;::::0;2049:51:1;;;26118:31:0::1;::::0;2037:2:1;2022:18;26118:31:0::1;;;;;;;;25917:240:::0;:::o;24691:192::-;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24762:20:0;::::1;24754:54;;;::::0;-1:-1:-1;;;24754:54:0;;4106:2:1;24754:54:0::1;::::0;::::1;4088:21:1::0;4145:2;4125:18;;;4118:30;-1:-1:-1;;;4164:18:1;;;4157:51;4225:18;;24754:54:0::1;3904:345:1::0;24754:54:0::1;24819:5;:20:::0;;-1:-1:-1;;;;;;24819:20:0::1;-1:-1:-1::0;;;;;24819:20:0;::::1;::::0;;::::1;::::0;;;24855::::1;::::0;2049:51:1;;;24855:20:0::1;::::0;2037:2:1;2022:18;24855:20:0::1;1889:217:1::0;23706:199:0;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;23806:1:::1;23795:9;:12;23787:36;;;::::0;-1:-1:-1;;;23787:36:0;;4456:2:1;23787:36:0::1;::::0;::::1;4438:21:1::0;4495:2;4475:18;;;4468:30;-1:-1:-1;;;4514:18:1;;;4507:41;4565:18;;23787:36:0::1;4254:335:1::0;23787:36:0::1;23834:17;:29:::0;;;23879:16:::1;::::0;160:25:1;;;23879:16:0::1;::::0;148:2:1;133:18;23879:16:0::1;14:177:1::0;23043:499:0;17154:21;:19;:21::i;:::-;23101:8:::1;::::0;::::1;;::::0;;::::1;;:14;;:8;:14;23093:47;;;::::0;-1:-1:-1;;;23093:47:0;;4796:2:1;23093:47:0::1;::::0;::::1;4778:21:1::0;4835:2;4815:18;;;4808:30;-1:-1:-1;;;4854:18:1;;;4847:51;4915:18;;23093:47:0::1;4594:345:1::0;23093:47:0::1;23171:10;23159:23;::::0;;;:11:::1;:23;::::0;;;;;::::1;;:30;23151:71;;;;-1:-1:-1::0;;;23151:71:0::1;;;;;;;:::i;:::-;23261:10;23233:17;23251:21:::0;;;:9:::1;:21;::::0;;;;;23291:11;23283:41:::1;;;::::0;-1:-1:-1;;;23283:41:0;;5504:2:1;23283:41:0::1;::::0;::::1;5486:21:1::0;5543:2;5523:18;;;5516:30;-1:-1:-1;;;5562:18:1;;;5555:48;5620:18;;23283:41:0::1;5302:342:1::0;23283:41:0::1;23354:5;::::0;:30:::1;::::0;-1:-1:-1;;;23354:30:0;;23378:4:::1;23354:30;::::0;::::1;2049:51:1::0;-1:-1:-1;;;;;23354:5:0;;::::1;::::0;:15:::1;::::0;2022:18:1;;23354:30:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23343:9;:41;;23335:84;;;::::0;-1:-1:-1;;;23335:84:0;;6086:2:1;23335:84:0::1;::::0;::::1;6068:21:1::0;6125:2;6105:18;;;6098:30;6164:33;6144:18;;;6137:61;6215:18;;23335:84:0::1;5884:355:1::0;23335:84:0::1;23440:10;23452:1;23430:21:::0;;;:9:::1;:21;::::0;;;;;:23;;;;23472:5:::1;::::0;:37;;-1:-1:-1;;;23472:37:0;;::::1;::::0;::::1;6418:51:1::0;;;;6485:18;;;6478:34;;;-1:-1:-1;;;;;23472:5:0::1;::::0;:14:::1;::::0;6391:18:1;;23472:37:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23464:70;;;::::0;-1:-1:-1;;;23464:70:0;;6975:2:1;23464:70:0::1;::::0;::::1;6957:21:1::0;7014:2;6994:18;;;6987:30;-1:-1:-1;;;7033:18:1;;;7026:51;7094:18;;23464:70:0::1;6773:345:1::0;23464:70:0::1;23082:460;17198:20:::0;16489:1;17740:21;;17557:212;17198:20;23043:499::o;24891:187::-;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24960:19:0;::::1;24952:52;;;::::0;-1:-1:-1;;;24952:52:0;;7325:2:1;24952:52:0::1;::::0;::::1;7307:21:1::0;7364:2;7344:18;;;7337:30;-1:-1:-1;;;7383:18:1;;;7376:50;7443:18;;24952:52:0::1;7123:344:1::0;24952:52:0::1;25015:4;:18:::0;;-1:-1:-1;;;;;;25015:18:0::1;-1:-1:-1::0;;;;;25015:18:0;::::1;::::0;;::::1;::::0;;;25049:19:::1;::::0;2049:51:1;;;25049:19:0::1;::::0;2037:2:1;2022:18;25049:19:0::1;1889:217:1::0;24041:120:0;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;24096:13:::1;:20:::0;;-1:-1:-1;;24096:20:0::1;24112:4;24096:20:::0;;::::1;::::0;;;24132:19:::1;::::0;1234:41:1;;;24132:19:0::1;::::0;1222:2:1;1207:18;24132:19:0::1;1094:187:1::0;25651:258:0;25709:7;25729:16;25785:7;25760:19;:17;:19::i;:::-;25749:31;;:7;:31;:::i;:::-;25748:45;;;;:::i;:::-;25729:64;;25804:22;25865:3;25842:17;;25830:8;:30;;;;:::i;:::-;25829:40;;;;:::i;:::-;25804:65;25651:258;-1:-1:-1;;;;25651:258:0:o;25512:129::-;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;25572:51:::1;::::0;25580:10:::1;::::0;25601:21:::1;25572:51:::0;::::1;;;::::0;::::1;::::0;;;25601:21;25580:10;25572:51;::::1;;;;;;;;;;;;;;;;;;;;25512:129::o:0;26286:110::-;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;26336:8:::1;:14:::0;;-1:-1:-1;;26336:14:0::1;::::0;;26366:20:::1;::::0;-1:-1:-1;1234:41:1;;26366:20:0::1;::::0;1222:2:1;1207:18;26366:20:0::1;1094:187:1::0;20709:165:0;20759:7;20782:12;20804;;;;;;;;;-1:-1:-1;;;;;20804:12:0;-1:-1:-1;;;;;20804:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20779:55:0;;20709:165;-1:-1:-1;;;;;20709:165:0:o;14327:148::-;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;14434:1:::1;14418:6:::0;;14397:40:::1;::::0;-1:-1:-1;;;;;14418:6:0;;::::1;::::0;14397:40:::1;::::0;14434:1;;14397:40:::1;14465:1;14448:19:::0;;-1:-1:-1;;;;;;14448:19:0::1;::::0;;14327:148::o;20883:214::-;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20969:27:0;::::1;20961:66;;;::::0;-1:-1:-1;;;20961:66:0;;8961:2:1;20961:66:0::1;::::0;::::1;8943:21:1::0;9000:2;8980:18;;;8973:30;9039:28;9019:18;;;9012:56;9085:18;;20961:66:0::1;8759:350:1::0;20961:66:0::1;21038:12;:51:::0;;-1:-1:-1;;;;;;21038:51:0::1;-1:-1:-1::0;;;;;21038:51:0;;;::::1;::::0;;;::::1;::::0;;20883:214::o;24386:295::-;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24490:26:0;::::1;24482:60;;;::::0;-1:-1:-1;;;24482:60:0;;4106:2:1;24482:60:0::1;::::0;::::1;4088:21:1::0;4145:2;4125:18;;;4118:30;-1:-1:-1;;;4164:18:1;;;4157:51;4225:18;;24482:60:0::1;3904:345:1::0;24482:60:0::1;24553:59;24587:4;-1:-1:-1::0;;;;;24587:10:0::1;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24553:33:0;::::1;::::0;24600:11;24553:33:::1;:59::i;:::-;24628:45;::::0;;-1:-1:-1;;;;;6436:32:1;;6418:51;;6500:2;6485:18;;6478:34;;;24628:45:0::1;::::0;6391:18:1;24628:45:0::1;6244:274:1::0;22414:621:0;17154:21;:19;:21::i;:::-;22530:17:::1;;22492:36;22506:21;22522:4;22506:15;:21::i;:::-;22492:9;::::0;;:13:::1;:36::i;:::-;:55;;22484:83;;;;-1:-1:-1::0;;;22484:83:0::1;;;;;;;:::i;:::-;22586:13;::::0;::::1;;:21;;:13:::0;:21:::1;22578:66;;;;-1:-1:-1::0;;;22578:66:0::1;;;;;;;:::i;:::-;22672:1;22665:4;:8;22657:48;;;;-1:-1:-1::0;;;22657:48:0::1;;;;;;;:::i;:::-;22737:10;22725:23;::::0;;;:11:::1;:23;::::0;;;;;::::1;;:30;22717:71;;;;-1:-1:-1::0;;;22717:71:0::1;;;;;;;:::i;:::-;22799:24;22826:21;22842:4;22826:15;:21::i;:::-;22868:10;22858:21;::::0;;;:9:::1;:21;::::0;;;;:41;;22799:48;;-1:-1:-1;22799:48:0;;22858:21;;;:41:::1;::::0;22799:48;;22858:41:::1;:::i;:::-;::::0;;;-1:-1:-1;22921:36:0::1;::::0;-1:-1:-1;22935:21:0::1;22951:4:::0;22935:15:::1;:21::i;22921:36::-;22910:9;:47:::0;23010:11:::1;::::0;22976:4:::1;::::0;22969:58:::1;::::0;-1:-1:-1;;;;;22976:4:0;;::::1;::::0;22999:10:::1;::::0;23010:11:::1;23022:4:::0;22969:29:::1;:58::i;:::-;22471:564;17198:20:::0;16489:1;17740:21;;17557:212;26168:107;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;26219:8:::1;:13:::0;;-1:-1:-1;;26219:13:0::1;;;::::0;;26248:19:::1;::::0;-1:-1:-1;1234:41:1;;26248:19:0::1;::::0;1222:2:1;1207:18;26248:19:0::1;1094:187:1::0;21107:659:0;17154:21;:19;:21::i;:::-;21222:17:::1;;21184:36;21198:21;21209:9;21198:10;:21::i;21184:36::-;:55;;21176:83;;;;-1:-1:-1::0;;;21176:83:0::1;;;;;;;:::i;:::-;21278:13;::::0;::::1;;:21;;:13:::0;:21:::1;21270:66;;;;-1:-1:-1::0;;;21270:66:0::1;;;;;;;:::i;:::-;21369:10;21357:23;::::0;;;:11:::1;:23;::::0;;;;;::::1;;:30;21349:71;;;;-1:-1:-1::0;;;21349:71:0::1;;;;;;;:::i;:::-;21483:24;21510:21;21521:9;21510:10;:21::i;:::-;21552:10;21542:21;::::0;;;:9:::1;:21;::::0;;;;:41;;21483:48;;-1:-1:-1;21483:48:0;;21542:21;;;:41:::1;::::0;21483:48;;21542:41:::1;:::i;:::-;::::0;;;-1:-1:-1;21605:36:0::1;::::0;-1:-1:-1;21619:21:0::1;21630:9;21619:10;:21::i;21605:36::-;21594:9;:47:::0;21661:9:::1;21653:53;;;;-1:-1:-1::0;;;21653:53:0::1;;;;;;;:::i;:::-;21726:11;::::0;21718:40:::1;::::0;-1:-1:-1;;;;;21726:11:0;;::::1;::::0;21748:9:::1;21718:40:::0;::::1;;;::::0;21726:11:::1;21718:40:::0;21726:11;21718:40;21748:9;21726:11;21718:40;::::1;;;;;;;;;;;;;;;;;;;;21165:601;17198:20:::0;16489:1;17740:21;;17557:212;24169:208;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;24260:1:::1;24252:6;:9;24244:47;;;::::0;-1:-1:-1;;;24244:47:0;;10764:2:1;24244:47:0::1;::::0;::::1;10746:21:1::0;10803:2;10783:18;;;10776:30;10842:27;10822:18;;;10815:55;10887:18;;24244:47:0::1;10562:349:1::0;24244:47:0::1;24302:17;:24:::0;;;24342:25:::1;::::0;160::1;;;24342::0::1;::::0;148:2:1;133:18;24342:25:0::1;14:177:1::0;25086:187:0;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25155:19:0;::::1;25147:52;;;::::0;-1:-1:-1;;;25147:52:0;;11118:2:1;25147:52:0::1;::::0;::::1;11100:21:1::0;11157:2;11137:18;;;11130:30;-1:-1:-1;;;11176:18:1;;;11169:50;11236:18;;25147:52:0::1;10916:344:1::0;25147:52:0::1;25210:4;:18:::0;;-1:-1:-1;;;;;;25210:18:0::1;-1:-1:-1::0;;;;;25210:18:0;::::1;::::0;;::::1;::::0;;;25244:19:::1;::::0;2049:51:1;;;25244:19:0::1;::::0;2037:2:1;2022:18;25244:19:0::1;1889:217:1::0;21778:624:0;17154:21;:19;:21::i;:::-;21893:17:::1;;21855:36;21869:21;21885:4;21869:15;:21::i;21855:36::-;:55;;21847:83;;;;-1:-1:-1::0;;;21847:83:0::1;;;;;;;:::i;:::-;21949:13;::::0;::::1;;:21;;:13:::0;:21:::1;21941:66;;;;-1:-1:-1::0;;;21941:66:0::1;;;;;;;:::i;:::-;22035:1;22028:4;:8;22020:48;;;;-1:-1:-1::0;;;22020:48:0::1;;;;;;;:::i;:::-;22100:10;22088:23;::::0;;;:11:::1;:23;::::0;;;;;::::1;;:30;22080:71;;;;-1:-1:-1::0;;;22080:71:0::1;;;;;;;:::i;:::-;22162:24;22189:21;22205:4;22189:15;:21::i;:::-;22231:10;22221:21;::::0;;;:9:::1;:21;::::0;;;;:41;;22162:48;;-1:-1:-1;22162:48:0;;22221:21;;;:41:::1;::::0;22162:48;;22221:41:::1;:::i;:::-;::::0;;;-1:-1:-1;22284:36:0::1;::::0;-1:-1:-1;22298:21:0::1;22314:4:::0;22298:15:::1;:21::i;22284:36::-;22273:9;:47:::0;22374:11:::1;::::0;22340:4:::1;::::0;22333:58:::1;::::0;-1:-1:-1;;;;;22340:4:0;;::::1;::::0;22363:10:::1;::::0;22374:11:::1;22386:4:::0;22333:29:::1;:58::i;14481:244::-:0;14242:6;;-1:-1:-1;;;;;14242:6:0;11227:10;14242:22;14234:67;;;;-1:-1:-1;;;14234:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14570:22:0;::::1;14562:73;;;::::0;-1:-1:-1;;;14562:73:0;;11467:2:1;14562:73:0::1;::::0;::::1;11449:21:1::0;11506:2;11486:18;;;11479:30;11545:34;11525:18;;;11518:62;-1:-1:-1;;;11596:18:1;;;11589:36;11642:19;;14562:73:0::1;11265:402:1::0;14562:73:0::1;14672:6;::::0;;14651:38:::1;::::0;-1:-1:-1;;;;;14651:38:0;;::::1;::::0;14672:6;::::1;::::0;14651:38:::1;::::0;::::1;14700:6;:17:::0;;-1:-1:-1;;;;;;14700:17:0::1;-1:-1:-1::0;;;;;14700:17:0;;;::::1;::::0;;;::::1;::::0;;14481:244::o;12736:250::-;12794:7;12818:1;12823;12818:6;12814:47;;-1:-1:-1;12848:1:0;12841:8;;12814:47;12873:9;12885:5;12889:1;12885;:5;:::i;:::-;12873:17;-1:-1:-1;12918:1:0;12909:5;12913:1;12873:17;12909:5;:::i;:::-;:10;12901:56;;;;-1:-1:-1;;;12901:56:0;;11874:2:1;12901:56:0;;;11856:21:1;11913:2;11893:18;;;11886:30;11952:34;11932:18;;;11925:62;-1:-1:-1;;;12003:18:1;;;11996:31;12044:19;;12901:56:0;11672:397:1;12901:56:0;12977:1;12736:250;-1:-1:-1;;;12736:250:0:o;12994:132::-;13052:7;13079:39;13083:1;13086;13079:39;;;;;;;;;;;;;;;;;:3;:39::i;17234:315::-;16532:1;17363:7;;:18;17359:88;;17405:30;;-1:-1:-1;;;17405:30:0;;;;;;;;;;;17359:88;16532:1;17524:7;:17;17234:315::o;8027:177::-;8137:58;;-1:-1:-1;;;;;6436:32:1;;8137:58:0;;;6418:51:1;6485:18;;;6478:34;;;8110:86:0;;8130:5;;-1:-1:-1;;;8160:23:0;6391:18:1;;8137:58:0;;;;-1:-1:-1;;8137:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;8137:58:0;-1:-1:-1;;;;;;8137:58:0;;;;;;;;;;8110:19;:86::i;:::-;8027:177;;;:::o;12197:193::-;12255:7;;12299:5;12303:1;12299;:5;:::i;:::-;12287:17;;12328:1;12323;:6;;12315:46;;;;-1:-1:-1;;;12315:46:0;;12276:2:1;12315:46:0;;;12258:21:1;12315:2;12295:18;;;12288:30;12354:29;12334:18;;;12327:57;12401:18;;12315:46:0;12074:351:1;8212:205:0;8340:68;;-1:-1:-1;;;;;12650:32:1;;;8340:68:0;;;12632:51:1;12719:32;;12699:18;;;12692:60;12768:18;;;12761:34;;;8313:96:0;;8333:5;;-1:-1:-1;;;8363:27:0;12605:18:1;;8340:68:0;12430:371:1;8313:96:0;8212:205;;;;:::o;13134:345::-;13220:7;13322:12;13315:5;13307:28;;;;-1:-1:-1;;;13307:28:0;;;;;;;;:::i;:::-;-1:-1:-1;13346:9:0;13358:5;13362:1;13358;:5;:::i;:::-;13346:17;13134:345;-1:-1:-1;;;;;13134:345:0:o;10339:761::-;10763:23;10789:69;10817:4;10789:69;;;;;;;;;;;;;;;;;10797:5;-1:-1:-1;;;;;10789:27:0;;;:69;;;;;:::i;:::-;10873:17;;10763:95;;-1:-1:-1;10873:21:0;10869:224;;11015:10;11004:30;;;;;;;;;;;;:::i;:::-;10996:85;;;;-1:-1:-1;;;10996:85:0;;13431:2:1;10996:85:0;;;13413:21:1;13470:2;13450:18;;;13443:30;13509:34;13489:18;;;13482:62;-1:-1:-1;;;13560:18:1;;;13553:40;13610:19;;10996:85:0;13229:406:1;3594:195:0;3697:12;3729:52;3751:6;3759:4;3765:1;3768:12;3697;1043:20;;4890:60;;;;-1:-1:-1;;;4890:60:0;;14249:2:1;4890:60:0;;;14231:21:1;14288:2;14268:18;;;14261:30;14327:31;14307:18;;;14300:59;14376:18;;4890:60:0;14047:353:1;4890:60:0;5024:12;5038:23;5065:6;-1:-1:-1;;;;;5065:11:0;5085:5;5093:4;5065:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5023:75;;;;5116:52;5134:7;5143:10;5155:12;5116:17;:52::i;:::-;5109:59;4646:530;-1:-1:-1;;;;;;;4646:530:0:o;7186:742::-;7301:12;7330:7;7326:595;;;-1:-1:-1;7361:10:0;7354:17;;7326:595;7475:17;;:21;7471:439;;7738:10;7732:17;7799:15;7786:10;7782:2;7778:19;7771:44;7471:439;7881:12;7874:20;;-1:-1:-1;;;7874:20:0;;;;;;;;:::i;196:131:1:-;-1:-1:-1;;;;;271:31:1;;261:42;;251:70;;317:1;314;307:12;332:118;418:5;411:13;404:21;397:5;394:32;384:60;;440:1;437;430:12;455:382;520:6;528;581:2;569:9;560:7;556:23;552:32;549:52;;;597:1;594;587:12;549:52;636:9;623:23;655:31;680:5;655:31;:::i;:::-;705:5;-1:-1:-1;762:2:1;747:18;;734:32;775:30;734:32;775:30;:::i;:::-;824:7;814:17;;;455:382;;;;;:::o;842:247::-;901:6;954:2;942:9;933:7;929:23;925:32;922:52;;;970:1;967;960:12;922:52;1009:9;996:23;1028:31;1053:5;1028:31;:::i;1286:226::-;1345:6;1398:2;1386:9;1377:7;1373:23;1369:32;1366:52;;;1414:1;1411;1404:12;1366:52;-1:-1:-1;1459:23:1;;1286:226;-1:-1:-1;1286:226:1:o;1517:367::-;1585:6;1593;1646:2;1634:9;1625:7;1621:23;1617:32;1614:52;;;1662:1;1659;1652:12;1614:52;1701:9;1688:23;1720:31;1745:5;1720:31;:::i;:::-;1770:5;1848:2;1833:18;;;;1820:32;;-1:-1:-1;;;1517:367:1:o;2556:356::-;2758:2;2740:21;;;2777:18;;;2770:30;2836:34;2831:2;2816:18;;2809:62;2903:2;2888:18;;2556:356::o;4944:353::-;5146:2;5128:21;;;5185:2;5165:18;;;5158:30;5224:31;5219:2;5204:18;;5197:59;5288:2;5273:18;;4944:353::o;5649:230::-;5719:6;5772:2;5760:9;5751:7;5747:23;5743:32;5740:52;;;5788:1;5785;5778:12;5740:52;-1:-1:-1;5833:16:1;;5649:230;-1:-1:-1;5649:230:1:o;6523:245::-;6590:6;6643:2;6631:9;6622:7;6618:23;6614:32;6611:52;;;6659:1;6656;6649:12;6611:52;6691:9;6685:16;6710:28;6732:5;6710:28;:::i;7472:127::-;7533:10;7528:3;7524:20;7521:1;7514:31;7564:4;7561:1;7554:15;7588:4;7585:1;7578:15;7604:168;7677:9;;;7708;;7725:15;;;7719:22;;7705:37;7695:71;;7746:18;;:::i;7777:217::-;7817:1;7843;7833:132;;7887:10;7882:3;7878:20;7875:1;7868:31;7922:4;7919:1;7912:15;7950:4;7947:1;7940:15;7833:132;-1:-1:-1;7979:9:1;;7777:217::o;7999:179::-;8077:13;;8130:22;8119:34;;8109:45;;8099:73;;8168:1;8165;8158:12;8099:73;7999:179;;;:::o;8183:571::-;8286:6;8294;8302;8310;8318;8371:3;8359:9;8350:7;8346:23;8342:33;8339:53;;;8388:1;8385;8378:12;8339:53;8411:39;8440:9;8411:39;:::i;:::-;8490:2;8475:18;;8469:25;8556:2;8541:18;;8535:25;8650:2;8635:18;;8629:25;8401:49;;-1:-1:-1;8469:25:1;;-1:-1:-1;8535:25:1;-1:-1:-1;8629:25:1;-1:-1:-1;8699:49:1;8743:3;8728:19;;8699:49;:::i;:::-;8689:59;;8183:571;;;;;;;;:::o;9114:251::-;9184:6;9237:2;9225:9;9216:7;9212:23;9208:32;9205:52;;;9253:1;9250;9243:12;9205:52;9285:9;9279:16;9304:31;9329:5;9304:31;:::i;9370:340::-;9572:2;9554:21;;;9611:2;9591:18;;;9584:30;-1:-1:-1;;;9645:2:1;9630:18;;9623:46;9701:2;9686:18;;9370:340::o;9715:356::-;9917:2;9899:21;;;9936:18;;;9929:30;9995:34;9990:2;9975:18;;9968:62;10062:2;10047:18;;9715:356::o;10076:351::-;10278:2;10260:21;;;10317:2;10297:18;;;10290:30;10356:29;10351:2;10336:18;;10329:57;10418:2;10403:18;;10076:351::o;10432:125::-;10497:9;;;10518:10;;;10515:36;;;10531:18;;:::i;12806:418::-;12955:2;12944:9;12937:21;12918:4;12987:6;12981:13;13030:6;13025:2;13014:9;13010:18;13003:34;13089:6;13084:2;13076:6;13072:15;13067:2;13056:9;13052:18;13046:50;13145:1;13140:2;13131:6;13120:9;13116:22;13112:31;13105:42;13215:2;13208;13204:7;13199:2;13191:6;13187:15;13183:29;13172:9;13168:45;13164:54;13156:62;;;12806:418;;;;:::o;14405:301::-;14534:3;14572:6;14566:13;14618:6;14611:4;14603:6;14599:17;14594:3;14588:37;14680:1;14644:16;;14669:13;;;-1:-1:-1;14644:16:1;14405:301;-1:-1:-1;14405:301:1:o

Swarm Source

ipfs://3677b34c34ffd713fbdf955d5ce2dab4ff0280111ff6cf6accf693aa2e7de6a8

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.