More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 713 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Release | 19433310 | 261 days ago | IN | 0 ETH | 0.00372249 | ||||
Release | 18975556 | 325 days ago | IN | 0 ETH | 0.00197483 | ||||
Release | 18928887 | 332 days ago | IN | 0 ETH | 0.00261118 | ||||
Release | 18741001 | 358 days ago | IN | 0 ETH | 0.00268597 | ||||
Release | 18678254 | 367 days ago | IN | 0 ETH | 0.0037668 | ||||
Release | 18678210 | 367 days ago | IN | 0 ETH | 0.00416967 | ||||
Release | 18615147 | 376 days ago | IN | 0 ETH | 0.00199933 | ||||
Release | 18431790 | 401 days ago | IN | 0 ETH | 0.00617614 | ||||
Release | 18431785 | 401 days ago | IN | 0 ETH | 0.00642925 | ||||
Release | 18371036 | 410 days ago | IN | 0 ETH | 0.0009887 | ||||
Release | 18371000 | 410 days ago | IN | 0 ETH | 0.00118527 | ||||
Release | 18362145 | 411 days ago | IN | 0 ETH | 0.00021929 | ||||
Release | 18362107 | 411 days ago | IN | 0 ETH | 0.00028987 | ||||
Release | 18362094 | 411 days ago | IN | 0 ETH | 0.00030386 | ||||
Release | 18361471 | 411 days ago | IN | 0 ETH | 0.00045358 | ||||
Release | 18319950 | 417 days ago | IN | 0 ETH | 0.00042259 | ||||
Release | 18319415 | 417 days ago | IN | 0 ETH | 0.0004489 | ||||
Release | 18318210 | 417 days ago | IN | 0 ETH | 0.00029667 | ||||
Release | 18300475 | 420 days ago | IN | 0 ETH | 0.00045537 | ||||
Release | 18300472 | 420 days ago | IN | 0 ETH | 0.00039475 | ||||
Release | 18300468 | 420 days ago | IN | 0 ETH | 0.00042655 | ||||
Release | 18300463 | 420 days ago | IN | 0 ETH | 0.0004118 | ||||
Release | 18268996 | 424 days ago | IN | 0 ETH | 0.00043937 | ||||
Release | 18221469 | 431 days ago | IN | 0 ETH | 0.00189187 | ||||
Release | 18213580 | 432 days ago | IN | 0 ETH | 0.00203085 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
VestingAirdrop
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-17 */ // SPDX-License-Identifier: BUSL-1.1 // File: lib/ipor-protocol-commons/src/errors/IporErrors.sol pragma solidity 0.8.17; library IporErrors { // 000-199 - general codes /// @notice General problem, address is wrong string public constant WRONG_ADDRESS = "IPOR_000"; /// @notice General problem. Wrong decimals string public constant WRONG_DECIMALS = "IPOR_001"; string public constant ADDRESSES_MISMATCH = "IPOR_002"; //@notice Trader doesnt have enought tokens to execute transaction string public constant ASSET_BALANCE_TOO_LOW = "IPOR_003"; string public constant VALUE_NOT_GREATER_THAN_ZERO = "IPOR_004"; string public constant INPUT_ARRAYS_LENGTH_MISMATCH = "IPOR_005"; //@notice Amount is too low to transfer string public constant NOT_ENOUGH_AMOUNT_TO_TRANSFER = "IPOR_006"; //@notice msg.sender is not an appointed owner, so cannot confirm his appointment to be an owner of a specific smart contract string public constant SENDER_NOT_APPOINTED_OWNER = "IPOR_007"; //only milton can have access to function string public constant CALLER_NOT_MILTON = "IPOR_008"; string public constant CHUNK_SIZE_EQUAL_ZERO = "IPOR_009"; string public constant CHUNK_SIZE_TOO_BIG = "IPOR_010"; } // File: @openzeppelin/contracts/security/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @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 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; 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 require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // 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; } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: lib/ipor-protocol-commons/src/security/IporOwnable.sol pragma solidity 0.8.17; abstract contract IporOwnable is Ownable { address private _appointedOwner; event AppointedToTransferOwnership(address indexed appointedOwner); modifier onlyAppointedOwner() { require( _appointedOwner == _msgSender(), IporErrors.SENDER_NOT_APPOINTED_OWNER ); _; } function transferOwnership(address appointedOwner) public override onlyOwner { require(appointedOwner != address(0), IporErrors.WRONG_ADDRESS); _appointedOwner = appointedOwner; emit AppointedToTransferOwnership(appointedOwner); } function confirmTransferOwnership() external onlyAppointedOwner { _appointedOwner = address(0); _transferOwnership(_msgSender()); } function renounceOwnership() public virtual override onlyOwner { _transferOwnership(address(0)); _appointedOwner = address(0); } } // File: @openzeppelin/contracts/security/Pausable.sol // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: src/airdrop/AirdropTypes.sol pragma solidity 0.8.17; library AirdropTypes { struct State { uint128 initialValue; uint128 released; } } // File: lib/ipor-protocol-commons/src/errors/IporAirdropErrors.sol pragma solidity 0.8.17; library IporAirdropErrors { // 000-199 - general codes /// @notice General problem, address is wrong string public constant WRONG_ADDRESS = "IPOR_750"; //@notice msg.sender is not an appointed owner, so cannot confirm his appointment to be an owner of a specific smart contract string public constant SENDER_NOT_APPOINTED_OWNER = "IPOR_751"; string public constant INPUT_ARRAYS_LENGTH_MISMATCH = "IPOR_752"; string public constant NO_AIRDROPS = "IPOR_753"; string public constant NO_STAKEHOLDERS = "IPOR_754"; string public constant ALREADY_RELEASED = "IPOR_755"; string public constant AIRDROP_ALREADY_EXISTS = "IPOR_756"; string public constant AMOUNT_HIGHER_THAN_INITIAL_VALUE = "IPOR_757"; string public constant VESTING_DURATION_SHOULD_BE_HIGHER_THAN_ZERO = "IPOR_758"; string public constant VESTING_START_TIME_SHOULD_BE_HIGHER_THAN_BLOCK_TIMESTAMP = "IPOR_759"; /// @notice General problem, contract is wrong string public constant WRONG_CONTRACT_ID = "IPOR_760"; string public constant ONLY_CONFIRMED_TERMS_OF_USE = "IPOR_761"; } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // File: src/interface/IIporToken.sol pragma solidity 0.8.17; /// @title Interface of iporToken interface IIporToken is IERC20 { function getContractId() external pure returns (bytes32); } // File: @openzeppelin/contracts/utils/math/SafeCast.sol // OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol) // This file was procedurally generated from scripts/generate/templates/SafeCast.js. pragma solidity ^0.8.0; /** * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow * checks. * * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can * easily result in undesired exploitation or bugs, since developers usually * assume that overflows raise errors. `SafeCast` restores this intuition by * reverting the transaction when such an operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. * * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing * all math on `uint256` and `int256` and then downcasting. */ library SafeCast { /** * @dev Returns the downcasted uint248 from uint256, reverting on * overflow (when the input is greater than largest uint248). * * Counterpart to Solidity's `uint248` operator. * * Requirements: * * - input must fit into 248 bits * * _Available since v4.7._ */ function toUint248(uint256 value) internal pure returns (uint248) { require(value <= type(uint248).max, "SafeCast: value doesn't fit in 248 bits"); return uint248(value); } /** * @dev Returns the downcasted uint240 from uint256, reverting on * overflow (when the input is greater than largest uint240). * * Counterpart to Solidity's `uint240` operator. * * Requirements: * * - input must fit into 240 bits * * _Available since v4.7._ */ function toUint240(uint256 value) internal pure returns (uint240) { require(value <= type(uint240).max, "SafeCast: value doesn't fit in 240 bits"); return uint240(value); } /** * @dev Returns the downcasted uint232 from uint256, reverting on * overflow (when the input is greater than largest uint232). * * Counterpart to Solidity's `uint232` operator. * * Requirements: * * - input must fit into 232 bits * * _Available since v4.7._ */ function toUint232(uint256 value) internal pure returns (uint232) { require(value <= type(uint232).max, "SafeCast: value doesn't fit in 232 bits"); return uint232(value); } /** * @dev Returns the downcasted uint224 from uint256, reverting on * overflow (when the input is greater than largest uint224). * * Counterpart to Solidity's `uint224` operator. * * Requirements: * * - input must fit into 224 bits * * _Available since v4.2._ */ function toUint224(uint256 value) internal pure returns (uint224) { require(value <= type(uint224).max, "SafeCast: value doesn't fit in 224 bits"); return uint224(value); } /** * @dev Returns the downcasted uint216 from uint256, reverting on * overflow (when the input is greater than largest uint216). * * Counterpart to Solidity's `uint216` operator. * * Requirements: * * - input must fit into 216 bits * * _Available since v4.7._ */ function toUint216(uint256 value) internal pure returns (uint216) { require(value <= type(uint216).max, "SafeCast: value doesn't fit in 216 bits"); return uint216(value); } /** * @dev Returns the downcasted uint208 from uint256, reverting on * overflow (when the input is greater than largest uint208). * * Counterpart to Solidity's `uint208` operator. * * Requirements: * * - input must fit into 208 bits * * _Available since v4.7._ */ function toUint208(uint256 value) internal pure returns (uint208) { require(value <= type(uint208).max, "SafeCast: value doesn't fit in 208 bits"); return uint208(value); } /** * @dev Returns the downcasted uint200 from uint256, reverting on * overflow (when the input is greater than largest uint200). * * Counterpart to Solidity's `uint200` operator. * * Requirements: * * - input must fit into 200 bits * * _Available since v4.7._ */ function toUint200(uint256 value) internal pure returns (uint200) { require(value <= type(uint200).max, "SafeCast: value doesn't fit in 200 bits"); return uint200(value); } /** * @dev Returns the downcasted uint192 from uint256, reverting on * overflow (when the input is greater than largest uint192). * * Counterpart to Solidity's `uint192` operator. * * Requirements: * * - input must fit into 192 bits * * _Available since v4.7._ */ function toUint192(uint256 value) internal pure returns (uint192) { require(value <= type(uint192).max, "SafeCast: value doesn't fit in 192 bits"); return uint192(value); } /** * @dev Returns the downcasted uint184 from uint256, reverting on * overflow (when the input is greater than largest uint184). * * Counterpart to Solidity's `uint184` operator. * * Requirements: * * - input must fit into 184 bits * * _Available since v4.7._ */ function toUint184(uint256 value) internal pure returns (uint184) { require(value <= type(uint184).max, "SafeCast: value doesn't fit in 184 bits"); return uint184(value); } /** * @dev Returns the downcasted uint176 from uint256, reverting on * overflow (when the input is greater than largest uint176). * * Counterpart to Solidity's `uint176` operator. * * Requirements: * * - input must fit into 176 bits * * _Available since v4.7._ */ function toUint176(uint256 value) internal pure returns (uint176) { require(value <= type(uint176).max, "SafeCast: value doesn't fit in 176 bits"); return uint176(value); } /** * @dev Returns the downcasted uint168 from uint256, reverting on * overflow (when the input is greater than largest uint168). * * Counterpart to Solidity's `uint168` operator. * * Requirements: * * - input must fit into 168 bits * * _Available since v4.7._ */ function toUint168(uint256 value) internal pure returns (uint168) { require(value <= type(uint168).max, "SafeCast: value doesn't fit in 168 bits"); return uint168(value); } /** * @dev Returns the downcasted uint160 from uint256, reverting on * overflow (when the input is greater than largest uint160). * * Counterpart to Solidity's `uint160` operator. * * Requirements: * * - input must fit into 160 bits * * _Available since v4.7._ */ function toUint160(uint256 value) internal pure returns (uint160) { require(value <= type(uint160).max, "SafeCast: value doesn't fit in 160 bits"); return uint160(value); } /** * @dev Returns the downcasted uint152 from uint256, reverting on * overflow (when the input is greater than largest uint152). * * Counterpart to Solidity's `uint152` operator. * * Requirements: * * - input must fit into 152 bits * * _Available since v4.7._ */ function toUint152(uint256 value) internal pure returns (uint152) { require(value <= type(uint152).max, "SafeCast: value doesn't fit in 152 bits"); return uint152(value); } /** * @dev Returns the downcasted uint144 from uint256, reverting on * overflow (when the input is greater than largest uint144). * * Counterpart to Solidity's `uint144` operator. * * Requirements: * * - input must fit into 144 bits * * _Available since v4.7._ */ function toUint144(uint256 value) internal pure returns (uint144) { require(value <= type(uint144).max, "SafeCast: value doesn't fit in 144 bits"); return uint144(value); } /** * @dev Returns the downcasted uint136 from uint256, reverting on * overflow (when the input is greater than largest uint136). * * Counterpart to Solidity's `uint136` operator. * * Requirements: * * - input must fit into 136 bits * * _Available since v4.7._ */ function toUint136(uint256 value) internal pure returns (uint136) { require(value <= type(uint136).max, "SafeCast: value doesn't fit in 136 bits"); return uint136(value); } /** * @dev Returns the downcasted uint128 from uint256, reverting on * overflow (when the input is greater than largest uint128). * * Counterpart to Solidity's `uint128` operator. * * Requirements: * * - input must fit into 128 bits * * _Available since v2.5._ */ function toUint128(uint256 value) internal pure returns (uint128) { require(value <= type(uint128).max, "SafeCast: value doesn't fit in 128 bits"); return uint128(value); } /** * @dev Returns the downcasted uint120 from uint256, reverting on * overflow (when the input is greater than largest uint120). * * Counterpart to Solidity's `uint120` operator. * * Requirements: * * - input must fit into 120 bits * * _Available since v4.7._ */ function toUint120(uint256 value) internal pure returns (uint120) { require(value <= type(uint120).max, "SafeCast: value doesn't fit in 120 bits"); return uint120(value); } /** * @dev Returns the downcasted uint112 from uint256, reverting on * overflow (when the input is greater than largest uint112). * * Counterpart to Solidity's `uint112` operator. * * Requirements: * * - input must fit into 112 bits * * _Available since v4.7._ */ function toUint112(uint256 value) internal pure returns (uint112) { require(value <= type(uint112).max, "SafeCast: value doesn't fit in 112 bits"); return uint112(value); } /** * @dev Returns the downcasted uint104 from uint256, reverting on * overflow (when the input is greater than largest uint104). * * Counterpart to Solidity's `uint104` operator. * * Requirements: * * - input must fit into 104 bits * * _Available since v4.7._ */ function toUint104(uint256 value) internal pure returns (uint104) { require(value <= type(uint104).max, "SafeCast: value doesn't fit in 104 bits"); return uint104(value); } /** * @dev Returns the downcasted uint96 from uint256, reverting on * overflow (when the input is greater than largest uint96). * * Counterpart to Solidity's `uint96` operator. * * Requirements: * * - input must fit into 96 bits * * _Available since v4.2._ */ function toUint96(uint256 value) internal pure returns (uint96) { require(value <= type(uint96).max, "SafeCast: value doesn't fit in 96 bits"); return uint96(value); } /** * @dev Returns the downcasted uint88 from uint256, reverting on * overflow (when the input is greater than largest uint88). * * Counterpart to Solidity's `uint88` operator. * * Requirements: * * - input must fit into 88 bits * * _Available since v4.7._ */ function toUint88(uint256 value) internal pure returns (uint88) { require(value <= type(uint88).max, "SafeCast: value doesn't fit in 88 bits"); return uint88(value); } /** * @dev Returns the downcasted uint80 from uint256, reverting on * overflow (when the input is greater than largest uint80). * * Counterpart to Solidity's `uint80` operator. * * Requirements: * * - input must fit into 80 bits * * _Available since v4.7._ */ function toUint80(uint256 value) internal pure returns (uint80) { require(value <= type(uint80).max, "SafeCast: value doesn't fit in 80 bits"); return uint80(value); } /** * @dev Returns the downcasted uint72 from uint256, reverting on * overflow (when the input is greater than largest uint72). * * Counterpart to Solidity's `uint72` operator. * * Requirements: * * - input must fit into 72 bits * * _Available since v4.7._ */ function toUint72(uint256 value) internal pure returns (uint72) { require(value <= type(uint72).max, "SafeCast: value doesn't fit in 72 bits"); return uint72(value); } /** * @dev Returns the downcasted uint64 from uint256, reverting on * overflow (when the input is greater than largest uint64). * * Counterpart to Solidity's `uint64` operator. * * Requirements: * * - input must fit into 64 bits * * _Available since v2.5._ */ function toUint64(uint256 value) internal pure returns (uint64) { require(value <= type(uint64).max, "SafeCast: value doesn't fit in 64 bits"); return uint64(value); } /** * @dev Returns the downcasted uint56 from uint256, reverting on * overflow (when the input is greater than largest uint56). * * Counterpart to Solidity's `uint56` operator. * * Requirements: * * - input must fit into 56 bits * * _Available since v4.7._ */ function toUint56(uint256 value) internal pure returns (uint56) { require(value <= type(uint56).max, "SafeCast: value doesn't fit in 56 bits"); return uint56(value); } /** * @dev Returns the downcasted uint48 from uint256, reverting on * overflow (when the input is greater than largest uint48). * * Counterpart to Solidity's `uint48` operator. * * Requirements: * * - input must fit into 48 bits * * _Available since v4.7._ */ function toUint48(uint256 value) internal pure returns (uint48) { require(value <= type(uint48).max, "SafeCast: value doesn't fit in 48 bits"); return uint48(value); } /** * @dev Returns the downcasted uint40 from uint256, reverting on * overflow (when the input is greater than largest uint40). * * Counterpart to Solidity's `uint40` operator. * * Requirements: * * - input must fit into 40 bits * * _Available since v4.7._ */ function toUint40(uint256 value) internal pure returns (uint40) { require(value <= type(uint40).max, "SafeCast: value doesn't fit in 40 bits"); return uint40(value); } /** * @dev Returns the downcasted uint32 from uint256, reverting on * overflow (when the input is greater than largest uint32). * * Counterpart to Solidity's `uint32` operator. * * Requirements: * * - input must fit into 32 bits * * _Available since v2.5._ */ function toUint32(uint256 value) internal pure returns (uint32) { require(value <= type(uint32).max, "SafeCast: value doesn't fit in 32 bits"); return uint32(value); } /** * @dev Returns the downcasted uint24 from uint256, reverting on * overflow (when the input is greater than largest uint24). * * Counterpart to Solidity's `uint24` operator. * * Requirements: * * - input must fit into 24 bits * * _Available since v4.7._ */ function toUint24(uint256 value) internal pure returns (uint24) { require(value <= type(uint24).max, "SafeCast: value doesn't fit in 24 bits"); return uint24(value); } /** * @dev Returns the downcasted uint16 from uint256, reverting on * overflow (when the input is greater than largest uint16). * * Counterpart to Solidity's `uint16` operator. * * Requirements: * * - input must fit into 16 bits * * _Available since v2.5._ */ function toUint16(uint256 value) internal pure returns (uint16) { require(value <= type(uint16).max, "SafeCast: value doesn't fit in 16 bits"); return uint16(value); } /** * @dev Returns the downcasted uint8 from uint256, reverting on * overflow (when the input is greater than largest uint8). * * Counterpart to Solidity's `uint8` operator. * * Requirements: * * - input must fit into 8 bits * * _Available since v2.5._ */ function toUint8(uint256 value) internal pure returns (uint8) { require(value <= type(uint8).max, "SafeCast: value doesn't fit in 8 bits"); return uint8(value); } /** * @dev Converts a signed int256 into an unsigned uint256. * * Requirements: * * - input must be greater than or equal to 0. * * _Available since v3.0._ */ function toUint256(int256 value) internal pure returns (uint256) { require(value >= 0, "SafeCast: value must be positive"); return uint256(value); } /** * @dev Returns the downcasted int248 from int256, reverting on * overflow (when the input is less than smallest int248 or * greater than largest int248). * * Counterpart to Solidity's `int248` operator. * * Requirements: * * - input must fit into 248 bits * * _Available since v4.7._ */ function toInt248(int256 value) internal pure returns (int248 downcasted) { downcasted = int248(value); require(downcasted == value, "SafeCast: value doesn't fit in 248 bits"); } /** * @dev Returns the downcasted int240 from int256, reverting on * overflow (when the input is less than smallest int240 or * greater than largest int240). * * Counterpart to Solidity's `int240` operator. * * Requirements: * * - input must fit into 240 bits * * _Available since v4.7._ */ function toInt240(int256 value) internal pure returns (int240 downcasted) { downcasted = int240(value); require(downcasted == value, "SafeCast: value doesn't fit in 240 bits"); } /** * @dev Returns the downcasted int232 from int256, reverting on * overflow (when the input is less than smallest int232 or * greater than largest int232). * * Counterpart to Solidity's `int232` operator. * * Requirements: * * - input must fit into 232 bits * * _Available since v4.7._ */ function toInt232(int256 value) internal pure returns (int232 downcasted) { downcasted = int232(value); require(downcasted == value, "SafeCast: value doesn't fit in 232 bits"); } /** * @dev Returns the downcasted int224 from int256, reverting on * overflow (when the input is less than smallest int224 or * greater than largest int224). * * Counterpart to Solidity's `int224` operator. * * Requirements: * * - input must fit into 224 bits * * _Available since v4.7._ */ function toInt224(int256 value) internal pure returns (int224 downcasted) { downcasted = int224(value); require(downcasted == value, "SafeCast: value doesn't fit in 224 bits"); } /** * @dev Returns the downcasted int216 from int256, reverting on * overflow (when the input is less than smallest int216 or * greater than largest int216). * * Counterpart to Solidity's `int216` operator. * * Requirements: * * - input must fit into 216 bits * * _Available since v4.7._ */ function toInt216(int256 value) internal pure returns (int216 downcasted) { downcasted = int216(value); require(downcasted == value, "SafeCast: value doesn't fit in 216 bits"); } /** * @dev Returns the downcasted int208 from int256, reverting on * overflow (when the input is less than smallest int208 or * greater than largest int208). * * Counterpart to Solidity's `int208` operator. * * Requirements: * * - input must fit into 208 bits * * _Available since v4.7._ */ function toInt208(int256 value) internal pure returns (int208 downcasted) { downcasted = int208(value); require(downcasted == value, "SafeCast: value doesn't fit in 208 bits"); } /** * @dev Returns the downcasted int200 from int256, reverting on * overflow (when the input is less than smallest int200 or * greater than largest int200). * * Counterpart to Solidity's `int200` operator. * * Requirements: * * - input must fit into 200 bits * * _Available since v4.7._ */ function toInt200(int256 value) internal pure returns (int200 downcasted) { downcasted = int200(value); require(downcasted == value, "SafeCast: value doesn't fit in 200 bits"); } /** * @dev Returns the downcasted int192 from int256, reverting on * overflow (when the input is less than smallest int192 or * greater than largest int192). * * Counterpart to Solidity's `int192` operator. * * Requirements: * * - input must fit into 192 bits * * _Available since v4.7._ */ function toInt192(int256 value) internal pure returns (int192 downcasted) { downcasted = int192(value); require(downcasted == value, "SafeCast: value doesn't fit in 192 bits"); } /** * @dev Returns the downcasted int184 from int256, reverting on * overflow (when the input is less than smallest int184 or * greater than largest int184). * * Counterpart to Solidity's `int184` operator. * * Requirements: * * - input must fit into 184 bits * * _Available since v4.7._ */ function toInt184(int256 value) internal pure returns (int184 downcasted) { downcasted = int184(value); require(downcasted == value, "SafeCast: value doesn't fit in 184 bits"); } /** * @dev Returns the downcasted int176 from int256, reverting on * overflow (when the input is less than smallest int176 or * greater than largest int176). * * Counterpart to Solidity's `int176` operator. * * Requirements: * * - input must fit into 176 bits * * _Available since v4.7._ */ function toInt176(int256 value) internal pure returns (int176 downcasted) { downcasted = int176(value); require(downcasted == value, "SafeCast: value doesn't fit in 176 bits"); } /** * @dev Returns the downcasted int168 from int256, reverting on * overflow (when the input is less than smallest int168 or * greater than largest int168). * * Counterpart to Solidity's `int168` operator. * * Requirements: * * - input must fit into 168 bits * * _Available since v4.7._ */ function toInt168(int256 value) internal pure returns (int168 downcasted) { downcasted = int168(value); require(downcasted == value, "SafeCast: value doesn't fit in 168 bits"); } /** * @dev Returns the downcasted int160 from int256, reverting on * overflow (when the input is less than smallest int160 or * greater than largest int160). * * Counterpart to Solidity's `int160` operator. * * Requirements: * * - input must fit into 160 bits * * _Available since v4.7._ */ function toInt160(int256 value) internal pure returns (int160 downcasted) { downcasted = int160(value); require(downcasted == value, "SafeCast: value doesn't fit in 160 bits"); } /** * @dev Returns the downcasted int152 from int256, reverting on * overflow (when the input is less than smallest int152 or * greater than largest int152). * * Counterpart to Solidity's `int152` operator. * * Requirements: * * - input must fit into 152 bits * * _Available since v4.7._ */ function toInt152(int256 value) internal pure returns (int152 downcasted) { downcasted = int152(value); require(downcasted == value, "SafeCast: value doesn't fit in 152 bits"); } /** * @dev Returns the downcasted int144 from int256, reverting on * overflow (when the input is less than smallest int144 or * greater than largest int144). * * Counterpart to Solidity's `int144` operator. * * Requirements: * * - input must fit into 144 bits * * _Available since v4.7._ */ function toInt144(int256 value) internal pure returns (int144 downcasted) { downcasted = int144(value); require(downcasted == value, "SafeCast: value doesn't fit in 144 bits"); } /** * @dev Returns the downcasted int136 from int256, reverting on * overflow (when the input is less than smallest int136 or * greater than largest int136). * * Counterpart to Solidity's `int136` operator. * * Requirements: * * - input must fit into 136 bits * * _Available since v4.7._ */ function toInt136(int256 value) internal pure returns (int136 downcasted) { downcasted = int136(value); require(downcasted == value, "SafeCast: value doesn't fit in 136 bits"); } /** * @dev Returns the downcasted int128 from int256, reverting on * overflow (when the input is less than smallest int128 or * greater than largest int128). * * Counterpart to Solidity's `int128` operator. * * Requirements: * * - input must fit into 128 bits * * _Available since v3.1._ */ function toInt128(int256 value) internal pure returns (int128 downcasted) { downcasted = int128(value); require(downcasted == value, "SafeCast: value doesn't fit in 128 bits"); } /** * @dev Returns the downcasted int120 from int256, reverting on * overflow (when the input is less than smallest int120 or * greater than largest int120). * * Counterpart to Solidity's `int120` operator. * * Requirements: * * - input must fit into 120 bits * * _Available since v4.7._ */ function toInt120(int256 value) internal pure returns (int120 downcasted) { downcasted = int120(value); require(downcasted == value, "SafeCast: value doesn't fit in 120 bits"); } /** * @dev Returns the downcasted int112 from int256, reverting on * overflow (when the input is less than smallest int112 or * greater than largest int112). * * Counterpart to Solidity's `int112` operator. * * Requirements: * * - input must fit into 112 bits * * _Available since v4.7._ */ function toInt112(int256 value) internal pure returns (int112 downcasted) { downcasted = int112(value); require(downcasted == value, "SafeCast: value doesn't fit in 112 bits"); } /** * @dev Returns the downcasted int104 from int256, reverting on * overflow (when the input is less than smallest int104 or * greater than largest int104). * * Counterpart to Solidity's `int104` operator. * * Requirements: * * - input must fit into 104 bits * * _Available since v4.7._ */ function toInt104(int256 value) internal pure returns (int104 downcasted) { downcasted = int104(value); require(downcasted == value, "SafeCast: value doesn't fit in 104 bits"); } /** * @dev Returns the downcasted int96 from int256, reverting on * overflow (when the input is less than smallest int96 or * greater than largest int96). * * Counterpart to Solidity's `int96` operator. * * Requirements: * * - input must fit into 96 bits * * _Available since v4.7._ */ function toInt96(int256 value) internal pure returns (int96 downcasted) { downcasted = int96(value); require(downcasted == value, "SafeCast: value doesn't fit in 96 bits"); } /** * @dev Returns the downcasted int88 from int256, reverting on * overflow (when the input is less than smallest int88 or * greater than largest int88). * * Counterpart to Solidity's `int88` operator. * * Requirements: * * - input must fit into 88 bits * * _Available since v4.7._ */ function toInt88(int256 value) internal pure returns (int88 downcasted) { downcasted = int88(value); require(downcasted == value, "SafeCast: value doesn't fit in 88 bits"); } /** * @dev Returns the downcasted int80 from int256, reverting on * overflow (when the input is less than smallest int80 or * greater than largest int80). * * Counterpart to Solidity's `int80` operator. * * Requirements: * * - input must fit into 80 bits * * _Available since v4.7._ */ function toInt80(int256 value) internal pure returns (int80 downcasted) { downcasted = int80(value); require(downcasted == value, "SafeCast: value doesn't fit in 80 bits"); } /** * @dev Returns the downcasted int72 from int256, reverting on * overflow (when the input is less than smallest int72 or * greater than largest int72). * * Counterpart to Solidity's `int72` operator. * * Requirements: * * - input must fit into 72 bits * * _Available since v4.7._ */ function toInt72(int256 value) internal pure returns (int72 downcasted) { downcasted = int72(value); require(downcasted == value, "SafeCast: value doesn't fit in 72 bits"); } /** * @dev Returns the downcasted int64 from int256, reverting on * overflow (when the input is less than smallest int64 or * greater than largest int64). * * Counterpart to Solidity's `int64` operator. * * Requirements: * * - input must fit into 64 bits * * _Available since v3.1._ */ function toInt64(int256 value) internal pure returns (int64 downcasted) { downcasted = int64(value); require(downcasted == value, "SafeCast: value doesn't fit in 64 bits"); } /** * @dev Returns the downcasted int56 from int256, reverting on * overflow (when the input is less than smallest int56 or * greater than largest int56). * * Counterpart to Solidity's `int56` operator. * * Requirements: * * - input must fit into 56 bits * * _Available since v4.7._ */ function toInt56(int256 value) internal pure returns (int56 downcasted) { downcasted = int56(value); require(downcasted == value, "SafeCast: value doesn't fit in 56 bits"); } /** * @dev Returns the downcasted int48 from int256, reverting on * overflow (when the input is less than smallest int48 or * greater than largest int48). * * Counterpart to Solidity's `int48` operator. * * Requirements: * * - input must fit into 48 bits * * _Available since v4.7._ */ function toInt48(int256 value) internal pure returns (int48 downcasted) { downcasted = int48(value); require(downcasted == value, "SafeCast: value doesn't fit in 48 bits"); } /** * @dev Returns the downcasted int40 from int256, reverting on * overflow (when the input is less than smallest int40 or * greater than largest int40). * * Counterpart to Solidity's `int40` operator. * * Requirements: * * - input must fit into 40 bits * * _Available since v4.7._ */ function toInt40(int256 value) internal pure returns (int40 downcasted) { downcasted = int40(value); require(downcasted == value, "SafeCast: value doesn't fit in 40 bits"); } /** * @dev Returns the downcasted int32 from int256, reverting on * overflow (when the input is less than smallest int32 or * greater than largest int32). * * Counterpart to Solidity's `int32` operator. * * Requirements: * * - input must fit into 32 bits * * _Available since v3.1._ */ function toInt32(int256 value) internal pure returns (int32 downcasted) { downcasted = int32(value); require(downcasted == value, "SafeCast: value doesn't fit in 32 bits"); } /** * @dev Returns the downcasted int24 from int256, reverting on * overflow (when the input is less than smallest int24 or * greater than largest int24). * * Counterpart to Solidity's `int24` operator. * * Requirements: * * - input must fit into 24 bits * * _Available since v4.7._ */ function toInt24(int256 value) internal pure returns (int24 downcasted) { downcasted = int24(value); require(downcasted == value, "SafeCast: value doesn't fit in 24 bits"); } /** * @dev Returns the downcasted int16 from int256, reverting on * overflow (when the input is less than smallest int16 or * greater than largest int16). * * Counterpart to Solidity's `int16` operator. * * Requirements: * * - input must fit into 16 bits * * _Available since v3.1._ */ function toInt16(int256 value) internal pure returns (int16 downcasted) { downcasted = int16(value); require(downcasted == value, "SafeCast: value doesn't fit in 16 bits"); } /** * @dev Returns the downcasted int8 from int256, reverting on * overflow (when the input is less than smallest int8 or * greater than largest int8). * * Counterpart to Solidity's `int8` operator. * * Requirements: * * - input must fit into 8 bits * * _Available since v3.1._ */ function toInt8(int256 value) internal pure returns (int8 downcasted) { downcasted = int8(value); require(downcasted == value, "SafeCast: value doesn't fit in 8 bits"); } /** * @dev Converts an unsigned uint256 into a signed int256. * * Requirements: * * - input must be less than or equal to maxInt256. * * _Available since v3.0._ */ function toInt256(uint256 value) internal pure returns (int256) { // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive require(value <= uint256(type(int256).max), "SafeCast: value doesn't fit in an int256"); return int256(value); } } // File: src/airdrop/AirdropBase.sol pragma solidity 0.8.17; abstract contract AirdropBase is Context, Pausable, ReentrancyGuard, IporOwnable { using SafeCast for uint256; bytes32 internal constant _IPOR_TOKEN_ID = 0xdba05ed67d0251facfcab8345f27ccd3e72b5a1da8cebfabbcccf4316e6d053c; event StakeholderAdded(address indexed account, uint256 amount); event TokenReleased(address indexed to, uint256 amount); event ConfirmedTermsOfUse(address indexed account, string declaration); address internal immutable _dao; address internal immutable _iporToken; mapping(address => AirdropTypes.State) internal _states; uint128 internal _totalReleased; uint128 internal _totalStakeholders; modifier onlyConfirmedTermsOfUse(string memory declaration) { require( keccak256(abi.encodePacked(declaration)) == keccak256( abi.encodePacked( "I confirm that I am in compliance with the Terms of Use located at https://www.ipor.io/terms-of-use." ) ), IporAirdropErrors.ONLY_CONFIRMED_TERMS_OF_USE ); _; } constructor( address dao, address iporToken, address[] memory stakeholders, uint256[] memory amounts ) { require(dao != address(0), IporAirdropErrors.WRONG_ADDRESS); require(iporToken != address(0), IporAirdropErrors.WRONG_ADDRESS); require( IIporToken(iporToken).getContractId() == _IPOR_TOKEN_ID, IporAirdropErrors.WRONG_CONTRACT_ID ); uint256 stakeholdersLength = stakeholders.length; require( stakeholdersLength == amounts.length, IporAirdropErrors.INPUT_ARRAYS_LENGTH_MISMATCH ); require(stakeholdersLength > 0, IporAirdropErrors.NO_STAKEHOLDERS); uint256 amount; address account; for (uint256 i; i < stakeholdersLength; ++i) { amount = amounts[i]; account = stakeholders[i]; require(account != address(0), IporAirdropErrors.WRONG_ADDRESS); require(amount > 0, IporAirdropErrors.NO_AIRDROPS); // TODO: check that account is not already a stakeholder _states[account] = AirdropTypes.State(amount.toUint128(), 0); emit StakeholderAdded(account, amount); } _totalStakeholders += stakeholdersLength.toUint128(); _dao = dao; _iporToken = iporToken; _pause(); } function getState(address account) external view returns (uint256 initialValue, uint256 released) { AirdropTypes.State memory state = _states[account]; initialValue = state.initialValue; released = state.released; } function getTotalReleased() external view returns (uint256) { return _totalReleased; } function getTotalStakeholders() external view returns (uint256) { return _totalStakeholders; } function addStakeholders(address[] calldata stakeholders, uint256[] calldata amounts) external onlyOwner { uint256 stakeholdersLength = stakeholders.length; require( stakeholdersLength == amounts.length, IporAirdropErrors.INPUT_ARRAYS_LENGTH_MISMATCH ); require(stakeholdersLength > 0, IporAirdropErrors.NO_STAKEHOLDERS); for (uint256 i; i < stakeholdersLength; ++i) { _addStakeholder(stakeholders[i], amounts[i]); } _totalStakeholders += stakeholdersLength.toUint128(); } function pause() external onlyOwner { _pause(); } function unpause() external onlyOwner { _unpause(); } function withdrawAllToDao() external onlyOwner { IERC20(_iporToken).transfer(_dao, IERC20(_iporToken).balanceOf(address(this))); } function _addStakeholder(address account, uint256 amount) private { require(account != address(0), IporAirdropErrors.WRONG_ADDRESS); require(amount > 0, IporAirdropErrors.NO_AIRDROPS); require(_states[account].initialValue == 0, IporAirdropErrors.AIRDROP_ALREADY_EXISTS); _states[account] = AirdropTypes.State(amount.toUint128(), 0); emit StakeholderAdded(account, amount); } } // File: src/airdrop/VestingAirdrop.sol pragma solidity 0.8.17; contract VestingAirdrop is AirdropBase { using SafeCast for uint256; uint64 private immutable _start; uint64 private immutable _duration; /** * @dev Set the beneficiaries, start timestamp and vesting duration of the vesting wallet. */ constructor( address dao, address iporToken, uint64 startTimestamp, uint64 durationSeconds, address[] memory stakeholders, uint256[] memory amounts ) AirdropBase(dao, iporToken, stakeholders, amounts) { require( startTimestamp > block.timestamp, IporAirdropErrors.VESTING_START_TIME_SHOULD_BE_HIGHER_THAN_BLOCK_TIMESTAMP ); require(durationSeconds > 0, IporAirdropErrors.VESTING_DURATION_SHOULD_BE_HIGHER_THAN_ZERO); _start = startTimestamp; _duration = durationSeconds; } function getStart() external view virtual returns (uint256) { return _start; } function getDuration() external view virtual returns (uint256) { return _duration; } function getVestedAmount(address account, uint64 timestamp) external view virtual returns (uint256) { return _calculateVestingAmount(_states[account].initialValue, timestamp); } function releasable(address account) public view virtual returns (uint256) { return _releasable(_states[account]); } function release(string calldata declaration) external whenNotPaused nonReentrant onlyConfirmedTermsOfUse(declaration) { address msgSender = _msgSender(); AirdropTypes.State memory state = _states[msgSender]; require(state.initialValue > 0, IporAirdropErrors.NO_AIRDROPS); require(state.initialValue - state.released > 0, IporAirdropErrors.ALREADY_RELEASED); uint256 amount = _releasable(state); require( state.initialValue >= state.released + amount, IporAirdropErrors.AMOUNT_HIGHER_THAN_INITIAL_VALUE ); state.released += amount.toUint128(); _states[msgSender] = state; _totalReleased += amount.toUint128(); IERC20(_iporToken).transfer(msgSender, amount); emit ConfirmedTermsOfUse(msgSender, declaration); emit TokenReleased(msgSender, amount); } function _releasable(AirdropTypes.State memory state) internal view returns (uint256) { return _calculateVestingAmount(state.initialValue, uint64(block.timestamp)) - state.released; } function _calculateVestingAmount(uint256 initialValue, uint64 timestamp) internal view virtual returns (uint256) { if (timestamp < _start) { return 0; } if (timestamp > _start + _duration) { return initialValue; } return (initialValue * (timestamp - _start)) / _duration; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"iporToken","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"},{"internalType":"address[]","name":"stakeholders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"appointedOwner","type":"address"}],"name":"AppointedToTransferOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"string","name":"declaration","type":"string"}],"name":"ConfirmedTermsOfUse","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"StakeholderAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address[]","name":"stakeholders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"addStakeholders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"confirmTransferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getState","outputs":[{"internalType":"uint256","name":"initialValue","type":"uint256"},{"internalType":"uint256","name":"released","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalStakeholders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"getVestedAmount","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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"releasable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"declaration","type":"string"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"appointedOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAllToDao","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6101006040523480156200001257600080fd5b5060405162001fc138038062001fc1833981016040819052620000359162000799565b6000805460ff19169055600180558585838362000052336200051a565b604080518082019091526008815267049504f525f3735360c41b60208201526001600160a01b038516620000a45760405162461bcd60e51b81526004016200009b9190620008b3565b60405180910390fd5b50604080518082019091526008815267049504f525f3735360c41b60208201526001600160a01b038416620000ee5760405162461bcd60e51b81526004016200009b9190620008b3565b507fdba05ed67d0251facfcab8345f27ccd3e72b5a1da8cebfabbcccf4316e6d053c60001b836001600160a01b0316634788cabf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000152573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000178919062000903565b1460405180604001604052806008815260200167049504f525f3736360c41b81525090620001bb5760405162461bcd60e51b81526004016200009b9190620008b3565b508151815160408051808201909152600881526724a827a92f9b9a9960c11b6020820152908214620002025760405162461bcd60e51b81526004016200009b9190620008b3565b50604080518082019091526008815267125413d497cdcd4d60c21b602082015281620002435760405162461bcd60e51b81526004016200009b9190620008b3565b5060008060005b83811015620003e2578481815181106200026857620002686200091d565b602002602001015192508581815181106200028757620002876200091d565b6020026020010151915060006001600160a01b0316826001600160a01b0316141560405180604001604052806008815260200167049504f525f3735360c41b81525090620002ea5760405162461bcd60e51b81526004016200009b9190620008b3565b5060408051808201909152600881526749504f525f37353360c01b6020820152836200032b5760405162461bcd60e51b81526004016200009b9190620008b3565b5060405180604001604052806200034d856200056c60201b62000c241760201c565b6001600160801b039081168252600060209283018190526001600160a01b03861680825260048452604091829020855195909401518316600160801b02949092169390931790915590517f120bfdd311a35c23d43060f2ed5044e464ade4940f2f49f164ab6e0b32eb833690620003c79086815260200190565b60405180910390a2620003da8162000949565b90506200024a565b50620003f9836200056c60201b62000c241760201c565b600580546010906200041d908490600160801b90046001600160801b031662000965565b82546001600160801b039182166101009390930a9283029190920219909116179055506001600160a01b03808816608052861660a0526200045d620005db565b5050505050505042846001600160401b0316116040518060400160405280600881526020016749504f525f37353960c01b81525090620004b25760405162461bcd60e51b81526004016200009b9190620008b3565b50604080518082019091526008815267092a09ea4be6e6a760c31b60208201526001600160401b038416620004fc5760405162461bcd60e51b81526004016200009b9190620008b3565b5050506001600160401b0391821660c0521660e052506200098f9050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160801b03821115620005d75760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016200009b565b5090565b620005e562000638565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586200061b3390565b6040516001600160a01b03909116815260200160405180910390a1565b60005460ff1615620006805760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016200009b565b565b80516001600160a01b03811681146200069a57600080fd5b919050565b80516001600160401b03811681146200069a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620006f857620006f8620006b7565b604052919050565b60006001600160401b038211156200071c576200071c620006b7565b5060051b60200190565b600082601f8301126200073857600080fd5b81516020620007516200074b8362000700565b620006cd565b82815260059290921b840181019181810190868411156200077157600080fd5b8286015b848110156200078e578051835291830191830162000775565b509695505050505050565b60008060008060008060c08789031215620007b357600080fd5b620007be8762000682565b95506020620007cf81890162000682565b9550620007df604089016200069f565b9450620007ef606089016200069f565b60808901519094506001600160401b03808211156200080d57600080fd5b818a0191508a601f8301126200082257600080fd5b8151620008336200074b8262000700565b81815260059190911b8301840190848101908d8311156200085357600080fd5b938501935b828510156200087c576200086c8562000682565b8252938501939085019062000858565b60a08d015190975094505050808311156200089657600080fd5b5050620008a689828a0162000726565b9150509295509295509295565b600060208083528351808285015260005b81811015620008e257858101830151858201604001528201620008c4565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156200091657600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200095e576200095e62000933565b5060010190565b6001600160801b0381811683821601908082111562000988576200098862000933565b5092915050565b60805160a05160c05160e0516115ce620009f36000396000818161024e01528181610f4a0152610fbc01526000818161027e01528181610f0301528181610f6b0152610fe10152600081816102f70152610b1f0152600061032801526115ce6000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c8063715018a6116100b2578063ad2e8c9b11610081578063cc29516a11610066578063cc29516a146102ac578063f2fde38b146102b4578063f34e3723146102c757600080fd5b8063ad2e8c9b1461024c578063c5292c671461027c57600080fd5b8063715018a61461020e5780638456cb59146102165780638da5cb5b1461021e578063a3f8eace1461023957600080fd5b80634b14c0ef116100ee5780634b14c0ef146101b25780635c975abb146101cd57806365ba262c146101e35780636fc43663146101f657600080fd5b806314ab2612146101205780631bab58f51461012a5780633f4ba83a14610197578063463aa96b1461019f575b600080fd5b6101286102da565b005b61017d6101383660046111fe565b6001600160a01b03166000908152600460209081526040918290208251808401909352546001600160801b03808216808552600160801b909204169290910182905291565b604080519283526020830191909152015b60405180910390f35b61012861041e565b6101286101ad366004611265565b610430565b6005546001600160801b03165b60405190815260200161018e565b60005460ff16604051901515815260200161018e565b6101bf6101f13660046112d1565b6105a5565b600554600160801b90046001600160801b03166101bf565b6101286105da565b6101286105fe565b6002546040516001600160a01b03909116815260200161018e565b6101bf6102473660046111fe565b61060e565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166101bf565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166101bf565b610128610658565b6101286102c23660046111fe565b6106d2565b6101286102d5366004611315565b610780565b6102e2610ca7565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb907f00000000000000000000000000000000000000000000000000000000000000009083906370a0823190602401602060405180830381865afa158015610370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103949190611387565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156103f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041b91906113a0565b50565b610426610ca7565b61042e610d01565b565b610438610ca7565b60408051808201909152600881527f49504f525f373532000000000000000000000000000000000000000000000000602082015283908282146104975760405162461bcd60e51b815260040161048e91906113ed565b60405180910390fd5b5060408051808201909152600881527f49504f525f3735340000000000000000000000000000000000000000000000006020820152816104ea5760405162461bcd60e51b815260040161048e91906113ed565b5060005b8181101561054e5761053e86868381811061050b5761050b611420565b905060200201602081019061052091906111fe565b85858481811061053257610532611420565b90506020020135610d53565b6105478161144c565b90506104ee565b5061055881610c24565b6005805460109061057a908490600160801b90046001600160801b0316611465565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050505050565b6001600160a01b0382166000908152600460205260408120546105d1906001600160801b031683610eff565b90505b92915050565b6105e2610ca7565b6105ec6000611024565b600380546001600160a01b0319169055565b610606610ca7565b61042e611076565b6001600160a01b03811660009081526004602090815260408083208151808301909252546001600160801b038082168352600160801b90910416918101919091526105d4906110b3565b60035460408051808201909152600881527f49504f525f3030370000000000000000000000000000000000000000000000006020820152906001600160a01b031633146106b85760405162461bcd60e51b815260040161048e91906113ed565b50600380546001600160a01b031916905561042e33611024565b6106da610ca7565b60408051808201909152600881527f49504f525f30303000000000000000000000000000000000000000000000000060208201526001600160a01b0382166107355760405162461bcd60e51b815260040161048e91906113ed565b50600380546001600160a01b0319166001600160a01b0383169081179091556040517f3ec7bb1d452f3c36260fa8ef678a597fd97574d8ec42f6dc98ffce3dbc91228f90600090a250565b6107886110e4565b610790611137565b81818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051610853925060200190507f4920636f6e6669726d2074686174204920616d20696e20636f6d706c69616e6381527f65207769746820746865205465726d73206f6620557365206c6f63617465642060208201527f61742068747470733a2f2f7777772e69706f722e696f2f7465726d732d6f662d6040820152633ab9b29760e11b606082015260640190565b604051602081830303815290604052805190602001208160405160200161087a919061148c565b60405160208183030381529060405280519060200120146040518060400160405280600881526020017f49504f525f373631000000000000000000000000000000000000000000000000815250906108e55760405162461bcd60e51b815260040161048e91906113ed565b50336000818152600460209081526040918290208251808401845290546001600160801b03808216808452600160801b90920416828401528351808501909452600884526749504f525f37353360c01b92840192909252919061095b5760405162461bcd60e51b815260040161048e91906113ed565b506020810151815160009161096f916114a8565b6001600160801b0316116040518060400160405280600881526020017f49504f525f373535000000000000000000000000000000000000000000000000815250906109cd5760405162461bcd60e51b815260040161048e91906113ed565b5060006109d9826110b3565b90508082602001516001600160801b03166109f491906114c8565b82600001516001600160801b031610156040518060400160405280600881526020017f49504f525f37353700000000000000000000000000000000000000000000000081525090610a585760405162461bcd60e51b815260040161048e91906113ed565b50610a6281610c24565b82602001818151610a739190611465565b6001600160801b039081169091526001600160a01b03851660009081526004602090815260409091208551918601518316600160801b029190921617905550610abb81610c24565b60058054600090610ad69084906001600160801b0316611465565b82546001600160801b039182166101009390930a92830291909202199091161790555060405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015610b68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8c91906113a0565b50826001600160a01b03167f3d7a24afc0f9ae513f3360e372be67fc79beb218c832b099fe454067a96f32498787604051610bc89291906114db565b60405180910390a2826001600160a01b03167f9cf9e3ab58b33f06d81842ea0ad850b6640c6430d6396973312e1715792e7a9182604051610c0b91815260200190565b60405180910390a250505050610c2060018055565b5050565b60006001600160801b03821115610ca35760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f3238206269747300000000000000000000000000000000000000000000000000606482015260840161048e565b5090565b6002546001600160a01b0316331461042e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161048e565b610d09611190565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60408051808201909152600881527f49504f525f37353000000000000000000000000000000000000000000000000060208201526001600160a01b038316610dae5760405162461bcd60e51b815260040161048e91906113ed565b5060408051808201909152600881526749504f525f37353360c01b602082015281610dec5760405162461bcd60e51b815260040161048e91906113ed565b506001600160a01b038216600090815260046020908152604091829020548251808401909352600883527f49504f525f373536000000000000000000000000000000000000000000000000918301919091526001600160801b031615610e655760405162461bcd60e51b815260040161048e91906113ed565b506040518060400160405280610e7a83610c24565b6001600160801b039081168252600060209283018190526001600160a01b03861680825260048452604091829020855195909401518316600160801b02949092169390931790915590517f120bfdd311a35c23d43060f2ed5044e464ade4940f2f49f164ab6e0b32eb833690610ef39084815260200190565b60405180910390a25050565b60007f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168267ffffffffffffffff161015610f45575060006105d4565b610f8f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061150a565b67ffffffffffffffff168267ffffffffffffffff161115610fb15750816105d4565b67ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166110067f00000000000000000000000000000000000000000000000000000000000000008461152b565b61101a9067ffffffffffffffff168561154c565b6105d19190611563565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61107e6110e4565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d363390565b600081602001516001600160801b03166110da83600001516001600160801b031642610eff565b6105d49190611585565b60005460ff161561042e5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161048e565b6002600154036111895760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161048e565b6002600155565b60005460ff1661042e5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161048e565b80356001600160a01b03811681146111f957600080fd5b919050565b60006020828403121561121057600080fd5b6105d1826111e2565b60008083601f84011261122b57600080fd5b50813567ffffffffffffffff81111561124357600080fd5b6020830191508360208260051b850101111561125e57600080fd5b9250929050565b6000806000806040858703121561127b57600080fd5b843567ffffffffffffffff8082111561129357600080fd5b61129f88838901611219565b909650945060208701359150808211156112b857600080fd5b506112c587828801611219565b95989497509550505050565b600080604083850312156112e457600080fd5b6112ed836111e2565b9150602083013567ffffffffffffffff8116811461130a57600080fd5b809150509250929050565b6000806020838503121561132857600080fd5b823567ffffffffffffffff8082111561134057600080fd5b818501915085601f83011261135457600080fd5b81358181111561136357600080fd5b86602082850101111561137557600080fd5b60209290920196919550909350505050565b60006020828403121561139957600080fd5b5051919050565b6000602082840312156113b257600080fd5b815180151581146113c257600080fd5b9392505050565b60005b838110156113e45781810151838201526020016113cc565b50506000910152565b602081526000825180602084015261140c8160408501602087016113c9565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161145e5761145e611436565b5060010190565b6001600160801b0381811683821601908082111561148557611485611436565b5092915050565b6000825161149e8184602087016113c9565b9190910192915050565b6001600160801b0382811682821603908082111561148557611485611436565b808201808211156105d4576105d4611436565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b67ffffffffffffffff81811683821601908082111561148557611485611436565b67ffffffffffffffff82811682821603908082111561148557611485611436565b80820281158282048414176105d4576105d4611436565b60008261158057634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105d4576105d461143656fea264697066735822122027b833793944cb0505ecd4ea059d89ae9578f1dada66f2fad788d8f5333028ac64736f6c63430008110033000000000000000000000000b7be82790d40258fd028beef2f2007dc044f34590000000000000000000000001e4746dc744503b53b4a082cb3607b169a2890900000000000000000000000000000000000000000000000000000000063c7df400000000000000000000000000000000000000000000000000000000000f099c000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000064000000000000000000000000df644ac5d9480ae0ec0b2b6b07141fcc7174a07600000000000000000000000001ec4a63e8bd579e1a2cea4763cf3a5da5e48e8b00000000000000000000000005a84dac7d722e3313b5c94e2681baac3427ba76000000000000000000000000074a8adeb96ef74ae82a6377c8085106f014989c0000000000000000000000000766569cbc0ed6291551589f66e0d0b2da3881de00000000000000000000000007d7d3badcb55dcb5f5d4c77b0513b9ec73507f8000000000000000000000000097e3725a78fe52a803da00e827bb60a9950948300000000000000000000000009e8516aeaccb2e79fb954144404eef908d72b240000000000000000000000000c8ee7dbf8cb1d980c107d3df6357deac7dbe9ef0000000000000000000000000c988abc38a818bbb2fb9f8f9b547748cf5d42b50000000000000000000000000da2b44edd7ba460cfce12f99f351cac8f2160960000000000000000000000000fd6f65d35cf13ae51795036d0ae9af42f3cbcb400000000000000000000000011d67fa925877813b744abc0917900c2b1d6eb810000000000000000000000001398206b0d65048edd2864496655255f5de9e4e000000000000000000000000013bf4152e8b499b15f272fd61eb4dabe88072d9f0000000000000000000000001846507590b77f961f9133eefd6bffd9bccaa2d1000000000000000000000000193f0ee42a199a0cecd479a9f09ba293eb1ca35700000000000000000000000019ee073e863c6a6f6da9326044067507ea76a6930000000000000000000000001e6bd36167620641cc88c846b815ada76f754e5b0000000000000000000000001f427a6fcdb95a7393c58552093e10a932890fa80000000000000000000000001fc550e98ad3021e32c47a84019f77a0792c60b700000000000000000000000020c9bd4cff005082867e5928926200c872cd8b3d000000000000000000000000219723d005e383032ea9ae43e4a72bdead0fa38b000000000000000000000000229ca6e76661463b920d9a24db8237110df78ef700000000000000000000000024621aa4dde07f04c57146d83468969010b7489e0000000000000000000000002477296e9bb326506039c01ad22475133d93265900000000000000000000000025beda673690ecd0a8a64d35ab228fc2e1c0048a00000000000000000000000026fdc242eccc144971e558ff458a4ec21b75d4e800000000000000000000000027b19813451bcae3031cabd40b7587b26eaa7d8a0000000000000000000000002a3381b6909512ff4a028b6ca747e4592f8384d50000000000000000000000002b47c57a4c9fc1649b43500f4c0cda6cf29be2780000000000000000000000002b6c7e127a5f799587b0f9b4393d62b26cf85c950000000000000000000000002b92d12d8cc0b9af862451393925092c6c21a6110000000000000000000000002ec1d7a211245d31aaad13ffc11a06e2b21d56e30000000000000000000000003140f301fa35d667de5775fa1b00ad0a4dc7eb5c00000000000000000000000032d4135f53a85250d58b97bc5c1d2c29161a3ff700000000000000000000000033fe24d01539c99c50ecbabec91e05b0f802c0b900000000000000000000000035642de97d6376dd55240ffd35fafd2619515e5400000000000000000000000035d448178c938ee1a2dd0c3c9da3185d433e79aa000000000000000000000000380568bcadb2ebdd84b9d0f4e6702ee760ce6944000000000000000000000000388411e858cb11414b7eeccf26c8c6a2c23ec52f0000000000000000000000003b3abbf96e7d4c738994607822d786c791f022ee0000000000000000000000003b91caba057858ba138dc2e00cda9f3603d77a440000000000000000000000003e2178cf851a0e5cbf84c0ff53f820ad7ead703b0000000000000000000000003f2c67f587bf7a42f6cb2dcde5d24d5506756748000000000000000000000000425774e62423b870a22477b391c7a00bfc83bdd700000000000000000000000042e8f94fba0f2b63449c3042c6dc6511f694446a000000000000000000000000442b263a0aab7c90a822a99e49d27cc8d2af20ed000000000000000000000000466e956ca9987b0b119330df65bf6ec4c3876e4f0000000000000000000000004bfac3a78ef7308861e6d91da922e9d162e88b7f0000000000000000000000004c1270592cc6a34f8371100cb3cf55961b7bd7fa0000000000000000000000004c36e31a6006edcc58fd92fe3cb35683f78401a40000000000000000000000004d58d36e46cf9af14e416061fe5d0074780b40990000000000000000000000004e47e39033a19f306598167499dc070b6039aaa10000000000000000000000005053a1354cb45eebdd2d8342ceee71d41efa75ca0000000000000000000000005498ff04a598f05b1ee3483b506d1191c7718bfd0000000000000000000000005648af1b3c089e4226e71ecc060df2c4cb4118dc00000000000000000000000057d621d02992672b80154243d54353b66e4483ae0000000000000000000000005878fc144c6f77d7cd4744b12bccd7f4f500af180000000000000000000000005a93fdde08b8e6197bb7b9e8eabcfceb526079320000000000000000000000005ced142150f7d0ee71c2300b34d51e5dc9f8c4560000000000000000000000005d4ce7a8e2483e35b2d8009def56bbe8a4352bb80000000000000000000000005ef3e3395f838bc5736efbce77884bd06035313b0000000000000000000000005ff2692b3f0803e6985d1ed1a2366f0bc28121e7000000000000000000000000606315589e4d36b5743673c6e40eb1ced571128c0000000000000000000000006169741408049837837a2c59ce22e01e5136c5570000000000000000000000006453a5733c4f03a5d290082a0d0aed5e876404c000000000000000000000000064b71f8546c4fcf06fc13294ded73dcaea3fc241000000000000000000000000664d448a984dae1e829bf71e837facd7b657ee1000000000000000000000000066666666c510be02a4d15aa75d5a236068b2a1fa0000000000000000000000006767ad8d45dd579b272f5a4a4d046909eb9211140000000000000000000000006919c4b67e9656c784b46f7b941cf639a66ccd660000000000000000000000006b5e7ec2c4440331a1458edb021d6944fdae530a0000000000000000000000006cd68e8f04490cd1a5a21cc97cc8bc15b47dc9eb0000000000000000000000006d661b5003f90d787561fe0c6a119e3510c5113f0000000000000000000000006d84264a7bd2cffa4a117ba2350403b3a98669490000000000000000000000006f76d8a2aef804ebdd1e7768185f18025f354ee90000000000000000000000007029bfa9a85ebf4653945be520dc3b7f1181f4af000000000000000000000000706d961ab69d54a0fcbaa13e77842279a57241390000000000000000000000007224bb066aaf4ae984e85f9ee959e075b822d4a200000000000000000000000074b7e6d4336df8038a44393cac5b7ac53fd75c7a0000000000000000000000007560cbe62147199a7948bcb79770de071b5725bc000000000000000000000000767a60f295aedd958932088f9cd6a4951d8739b600000000000000000000000076a9081947b50c4cd770169f755385287edbd2df0000000000000000000000007706dd0517df06612050a93ce3681d05011dca80000000000000000000000000771f1324cefbe2ef765e42a188c0bffe62d2c2c000000000000000000000000078bc83b1255d96b190848b3a8146491cd7e631340000000000000000000000007a205a4a5f1cc04cfa751b030322804a0eb42d330000000000000000000000007a62d6cf2517af31032a947ffdd8a385b45c80ce0000000000000000000000007a6cbd7a4562021fbdc0ac328c6c572fd703087a0000000000000000000000007ab066bcd945264e1b1c8d451cb3517c973e676c0000000000000000000000007aef2d7671efb00a7196eb4bbd8ee7a2ba0e5de20000000000000000000000007c3740171c672df753a935305a5be703388766630000000000000000000000007d9ae789d649b7cf5748c8b9eb96d9a2068b87eb0000000000000000000000007eb4d1f3b748890d7dfcd8eae09b087454fedce90000000000000000000000007ede3c6fe8e68e420c23ada6eb9ce9fe99f742410000000000000000000000007f2c610ea7287b2d302b949f0d21d3b927e75d160000000000000000000000007f7bac92aa3e28351f9e89535ca334e8a44542d0000000000000000000000000808253c190aca3c2c24f1025d76709f462e3027600000000000000000000000080fb1715bc81926babc68842c6df472cddc9b664000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000010f0cf064dd59200000000000000000000000000000000000000000000000000004e369a49d3ca788a000000000000000000000000000000000000000000000000337cb0c4809b83400000000000000000000000000000000000000000000000005ce07d674f58b87800000000000000000000000000000000000000000000000019ed6dbf415a6c5000000000000000000000000000000000000000000000000032181542ecb1f3440000000000000000000000000000000000000000000000001bc7691ad2794e4a0000000000000000000000000000000000000000000000001a26e497a3c93b40000000000000000000000000000000000000000000000005813b7c3faec20408000000000000000000000000000000000000000000000012aec379fac4eb2ea00000000000000000000000000000000000000000000000030c22fe8958b7e9d8000000000000000000000000000000000000000000000036ced485fce80510a0000000000000000000000000000000000000000000000000eae64158a8909304000000000000000000000000000000000000000000000016fb601bf471a4ee78000000000000000000000000000000000000000000000000510a683cd1a3fd820000000000000000000000000000000000000000000000003099cabaafb9f9c000000000000000000000000000000000000000000000000a87c06c6c9dc04608000000000000000000000000000000000000000000000000202935aa9e9e817200000000000000000000000000000000000000000000000043a9c9735350a08c0000000000000000000000000000000000000000000000030c7a14d9b8cdb3bc00000000000000000000000000000000000000000000000095f2cb78e56fc4640000000000000000000000000000000000000000000000006c3e5a01c0a84c800000000000000000000000000000000000000000000000001d32845c5f052bb80000000000000000000000000000000000000000000000096c969437ddc7c8f00000000000000000000000000000000000000000000000006346cd2bdd6942c400000000000000000000000000000000000000000000001dbf9a4e395f9ab330000000000000000000000000000000000000000000000001b33c7b97a5d88480000000000000000000000000000000000000000000000000c69b2daffd7d3150000000000000000000000000000000000000000000000002909f98fccb45cc500000000000000000000000000000000000000000000000005db0eadb41725d88000000000000000000000000000000000000000000000002d9dc965eacc424bc000000000000000000000000000000000000000000000008337bc76e7892f4180000000000000000000000000000000000000000000000005ae12051375ce90c000000000000000000000000000000000000000000000001473a21a038ea0d400000000000000000000000000000000000000000000000002fcc5abbfb55cbf8000000000000000000000000000000000000000000000006d7d6b4811b6e0fb800000000000000000000000000000000000000000000001115f39b785581bc2000000000000000000000000000000000000000000000000021a8b8a6b6c4c8a60000000000000000000000000000000000000000000000041c81e2144f33b3b8000000000000000000000000000000000000000000000000d8a16556f7440df800000000000000000000000000000000000000000000002cf0af9ce3a388c7a00000000000000000000000000000000000000000000000001b362e2166fc2ed200000000000000000000000000000000000000000000000041ffe3f2f321c3000000000000000000000000000000000000000000000000002fa0818d483b6c8600000000000000000000000000000000000000000000000db1d8e4fd586091e00000000000000000000000000000000000000000000000005429476f43569c180000000000000000000000000000000000000000000000061c3a5233641de340000000000000000000000000000000000000000000000002d1f29b2276c59838000000000000000000000000000000000000000000000000863251b3128e4bec000000000000000000000000000000000000000000000026f4acfeaf51664780000000000000000000000000000000000000000000000000e2a011ad686b8fb4000000000000000000000000000000000000000000000000376d204fbebfe4100000000000000000000000000000000000000000000000009ad1354c761bcfb00000000000000000000000000000000000000000000000107d015ce4d364059800000000000000000000000000000000000000000000000030cad4cfa84484f800000000000000000000000000000000000000000000000a907b299713d1ed3800000000000000000000000000000000000000000000001a10cd0654038d87e0000000000000000000000000000000000000000000000003390d38f7f04bfc98000000000000000000000000000000000000000000000003d8ae6ad2fd643f280000000000000000000000000000000000000000000000034aa83719948cf28c00000000000000000000000000000000000000000000000199d41f578c71b3a40000000000000000000000000000000000000000000000016338034a5d9b21880000000000000000000000000000000000000000000000012db7f13e3783a7000000000000000000000000000000000000000000000000032486c304be394c0000000000000000000000000000000000000000000000000026ee7c772e272a0e0000000000000000000000000000000000000000000000008a4c338475f3032800000000000000000000000000000000000000000000000023a1c17b28925df40000000000000000000000000000000000000000000000005370eecf421bc2ee000000000000000000000000000000000000000000000000165721ff45a8f25e000000000000000000000000000000000000000000000000236af0698ef738ea0000000000000000000000000000000000000000000000129958290a7f8e25b80000000000000000000000000000000000000000000000003f3fdd121b97c5b4000000000000000000000000000000000000000000000000950e6704312222e400000000000000000000000000000000000000000000000058ed24694ec0ad60000000000000000000000000000000000000000000000006dbdc186c0b600a100000000000000000000000000000000000000000000000030e960577683bf0100000000000000000000000000000000000000000000000125ce0fa7d6ce64f180000000000000000000000000000000000000000000000004635fd46c440f630000000000000000000000000000000000000000000000000421b7b13dbc8480400000000000000000000000000000000000000000000000020d3bdc1fc65437800000000000000000000000000000000000000000000000086ecab714a57251c00000000000000000000000000000000000000000000000020e67c0332030670000000000000000000000000000000000000000000000000fb0715b6f308dec40000000000000000000000000000000000000000000000003b93228d1dbd067800000000000000000000000000000000000000000000000016357744a4538da0000000000000000000000000000000000000000000000000313db4a42532eeb0000000000000000000000000000000000000000000000000aa925f99b5f50a7800000000000000000000000000000000000000000000000016cb1a7f80736936000000000000000000000000000000000000000000000006381cb9cf6b601400000000000000000000000000000000000000000000000002a1dad8511d4f8448000000000000000000000000000000000000000000000001bd83188592935ab800000000000000000000000000000000000000000000000bb9d607cbe17346000000000000000000000000000000000000000000000000030d98280cd086961c0000000000000000000000000000000000000000000000002a8bdc06aa2ae2aa0000000000000000000000000000000000000000000000005d06e1480b9789dc0000000000000000000000000000000000000000000000001b34777dd627940600000000000000000000000000000000000000000000000674ef79a6813d91e8000000000000000000000000000000000000000000000000456cd2befb81427000000000000000000000000000000000000000000000001a2f1094d740f30b780000000000000000000000000000000000000000000000002941799f86bb8dfc0
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061011b5760003560e01c8063715018a6116100b2578063ad2e8c9b11610081578063cc29516a11610066578063cc29516a146102ac578063f2fde38b146102b4578063f34e3723146102c757600080fd5b8063ad2e8c9b1461024c578063c5292c671461027c57600080fd5b8063715018a61461020e5780638456cb59146102165780638da5cb5b1461021e578063a3f8eace1461023957600080fd5b80634b14c0ef116100ee5780634b14c0ef146101b25780635c975abb146101cd57806365ba262c146101e35780636fc43663146101f657600080fd5b806314ab2612146101205780631bab58f51461012a5780633f4ba83a14610197578063463aa96b1461019f575b600080fd5b6101286102da565b005b61017d6101383660046111fe565b6001600160a01b03166000908152600460209081526040918290208251808401909352546001600160801b03808216808552600160801b909204169290910182905291565b604080519283526020830191909152015b60405180910390f35b61012861041e565b6101286101ad366004611265565b610430565b6005546001600160801b03165b60405190815260200161018e565b60005460ff16604051901515815260200161018e565b6101bf6101f13660046112d1565b6105a5565b600554600160801b90046001600160801b03166101bf565b6101286105da565b6101286105fe565b6002546040516001600160a01b03909116815260200161018e565b6101bf6102473660046111fe565b61060e565b7f0000000000000000000000000000000000000000000000000000000000f099c067ffffffffffffffff166101bf565b7f0000000000000000000000000000000000000000000000000000000063c7df4067ffffffffffffffff166101bf565b610128610658565b6101286102c23660046111fe565b6106d2565b6101286102d5366004611315565b610780565b6102e2610ca7565b6040516370a0823160e01b81523060048201527f0000000000000000000000001e4746dc744503b53b4a082cb3607b169a2890906001600160a01b03169063a9059cbb907f000000000000000000000000b7be82790d40258fd028beef2f2007dc044f34599083906370a0823190602401602060405180830381865afa158015610370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103949190611387565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156103f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041b91906113a0565b50565b610426610ca7565b61042e610d01565b565b610438610ca7565b60408051808201909152600881527f49504f525f373532000000000000000000000000000000000000000000000000602082015283908282146104975760405162461bcd60e51b815260040161048e91906113ed565b60405180910390fd5b5060408051808201909152600881527f49504f525f3735340000000000000000000000000000000000000000000000006020820152816104ea5760405162461bcd60e51b815260040161048e91906113ed565b5060005b8181101561054e5761053e86868381811061050b5761050b611420565b905060200201602081019061052091906111fe565b85858481811061053257610532611420565b90506020020135610d53565b6105478161144c565b90506104ee565b5061055881610c24565b6005805460109061057a908490600160801b90046001600160801b0316611465565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050505050565b6001600160a01b0382166000908152600460205260408120546105d1906001600160801b031683610eff565b90505b92915050565b6105e2610ca7565b6105ec6000611024565b600380546001600160a01b0319169055565b610606610ca7565b61042e611076565b6001600160a01b03811660009081526004602090815260408083208151808301909252546001600160801b038082168352600160801b90910416918101919091526105d4906110b3565b60035460408051808201909152600881527f49504f525f3030370000000000000000000000000000000000000000000000006020820152906001600160a01b031633146106b85760405162461bcd60e51b815260040161048e91906113ed565b50600380546001600160a01b031916905561042e33611024565b6106da610ca7565b60408051808201909152600881527f49504f525f30303000000000000000000000000000000000000000000000000060208201526001600160a01b0382166107355760405162461bcd60e51b815260040161048e91906113ed565b50600380546001600160a01b0319166001600160a01b0383169081179091556040517f3ec7bb1d452f3c36260fa8ef678a597fd97574d8ec42f6dc98ffce3dbc91228f90600090a250565b6107886110e4565b610790611137565b81818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051610853925060200190507f4920636f6e6669726d2074686174204920616d20696e20636f6d706c69616e6381527f65207769746820746865205465726d73206f6620557365206c6f63617465642060208201527f61742068747470733a2f2f7777772e69706f722e696f2f7465726d732d6f662d6040820152633ab9b29760e11b606082015260640190565b604051602081830303815290604052805190602001208160405160200161087a919061148c565b60405160208183030381529060405280519060200120146040518060400160405280600881526020017f49504f525f373631000000000000000000000000000000000000000000000000815250906108e55760405162461bcd60e51b815260040161048e91906113ed565b50336000818152600460209081526040918290208251808401845290546001600160801b03808216808452600160801b90920416828401528351808501909452600884526749504f525f37353360c01b92840192909252919061095b5760405162461bcd60e51b815260040161048e91906113ed565b506020810151815160009161096f916114a8565b6001600160801b0316116040518060400160405280600881526020017f49504f525f373535000000000000000000000000000000000000000000000000815250906109cd5760405162461bcd60e51b815260040161048e91906113ed565b5060006109d9826110b3565b90508082602001516001600160801b03166109f491906114c8565b82600001516001600160801b031610156040518060400160405280600881526020017f49504f525f37353700000000000000000000000000000000000000000000000081525090610a585760405162461bcd60e51b815260040161048e91906113ed565b50610a6281610c24565b82602001818151610a739190611465565b6001600160801b039081169091526001600160a01b03851660009081526004602090815260409091208551918601518316600160801b029190921617905550610abb81610c24565b60058054600090610ad69084906001600160801b0316611465565b82546001600160801b039182166101009390930a92830291909202199091161790555060405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390527f0000000000000000000000001e4746dc744503b53b4a082cb3607b169a289090169063a9059cbb906044016020604051808303816000875af1158015610b68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8c91906113a0565b50826001600160a01b03167f3d7a24afc0f9ae513f3360e372be67fc79beb218c832b099fe454067a96f32498787604051610bc89291906114db565b60405180910390a2826001600160a01b03167f9cf9e3ab58b33f06d81842ea0ad850b6640c6430d6396973312e1715792e7a9182604051610c0b91815260200190565b60405180910390a250505050610c2060018055565b5050565b60006001600160801b03821115610ca35760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f3238206269747300000000000000000000000000000000000000000000000000606482015260840161048e565b5090565b6002546001600160a01b0316331461042e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161048e565b610d09611190565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60408051808201909152600881527f49504f525f37353000000000000000000000000000000000000000000000000060208201526001600160a01b038316610dae5760405162461bcd60e51b815260040161048e91906113ed565b5060408051808201909152600881526749504f525f37353360c01b602082015281610dec5760405162461bcd60e51b815260040161048e91906113ed565b506001600160a01b038216600090815260046020908152604091829020548251808401909352600883527f49504f525f373536000000000000000000000000000000000000000000000000918301919091526001600160801b031615610e655760405162461bcd60e51b815260040161048e91906113ed565b506040518060400160405280610e7a83610c24565b6001600160801b039081168252600060209283018190526001600160a01b03861680825260048452604091829020855195909401518316600160801b02949092169390931790915590517f120bfdd311a35c23d43060f2ed5044e464ade4940f2f49f164ab6e0b32eb833690610ef39084815260200190565b60405180910390a25050565b60007f0000000000000000000000000000000000000000000000000000000063c7df4067ffffffffffffffff168267ffffffffffffffff161015610f45575060006105d4565b610f8f7f0000000000000000000000000000000000000000000000000000000000f099c07f0000000000000000000000000000000000000000000000000000000063c7df4061150a565b67ffffffffffffffff168267ffffffffffffffff161115610fb15750816105d4565b67ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000f099c0166110067f0000000000000000000000000000000000000000000000000000000063c7df408461152b565b61101a9067ffffffffffffffff168561154c565b6105d19190611563565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61107e6110e4565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d363390565b600081602001516001600160801b03166110da83600001516001600160801b031642610eff565b6105d49190611585565b60005460ff161561042e5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161048e565b6002600154036111895760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161048e565b6002600155565b60005460ff1661042e5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161048e565b80356001600160a01b03811681146111f957600080fd5b919050565b60006020828403121561121057600080fd5b6105d1826111e2565b60008083601f84011261122b57600080fd5b50813567ffffffffffffffff81111561124357600080fd5b6020830191508360208260051b850101111561125e57600080fd5b9250929050565b6000806000806040858703121561127b57600080fd5b843567ffffffffffffffff8082111561129357600080fd5b61129f88838901611219565b909650945060208701359150808211156112b857600080fd5b506112c587828801611219565b95989497509550505050565b600080604083850312156112e457600080fd5b6112ed836111e2565b9150602083013567ffffffffffffffff8116811461130a57600080fd5b809150509250929050565b6000806020838503121561132857600080fd5b823567ffffffffffffffff8082111561134057600080fd5b818501915085601f83011261135457600080fd5b81358181111561136357600080fd5b86602082850101111561137557600080fd5b60209290920196919550909350505050565b60006020828403121561139957600080fd5b5051919050565b6000602082840312156113b257600080fd5b815180151581146113c257600080fd5b9392505050565b60005b838110156113e45781810151838201526020016113cc565b50506000910152565b602081526000825180602084015261140c8160408501602087016113c9565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161145e5761145e611436565b5060010190565b6001600160801b0381811683821601908082111561148557611485611436565b5092915050565b6000825161149e8184602087016113c9565b9190910192915050565b6001600160801b0382811682821603908082111561148557611485611436565b808201808211156105d4576105d4611436565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b67ffffffffffffffff81811683821601908082111561148557611485611436565b67ffffffffffffffff82811682821603908082111561148557611485611436565b80820281158282048414176105d4576105d4611436565b60008261158057634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105d4576105d461143656fea264697066735822122027b833793944cb0505ecd4ea059d89ae9578f1dada66f2fad788d8f5333028ac64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b7be82790d40258fd028beef2f2007dc044f34590000000000000000000000001e4746dc744503b53b4a082cb3607b169a2890900000000000000000000000000000000000000000000000000000000063c7df400000000000000000000000000000000000000000000000000000000000f099c000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000064000000000000000000000000df644ac5d9480ae0ec0b2b6b07141fcc7174a07600000000000000000000000001ec4a63e8bd579e1a2cea4763cf3a5da5e48e8b00000000000000000000000005a84dac7d722e3313b5c94e2681baac3427ba76000000000000000000000000074a8adeb96ef74ae82a6377c8085106f014989c0000000000000000000000000766569cbc0ed6291551589f66e0d0b2da3881de00000000000000000000000007d7d3badcb55dcb5f5d4c77b0513b9ec73507f8000000000000000000000000097e3725a78fe52a803da00e827bb60a9950948300000000000000000000000009e8516aeaccb2e79fb954144404eef908d72b240000000000000000000000000c8ee7dbf8cb1d980c107d3df6357deac7dbe9ef0000000000000000000000000c988abc38a818bbb2fb9f8f9b547748cf5d42b50000000000000000000000000da2b44edd7ba460cfce12f99f351cac8f2160960000000000000000000000000fd6f65d35cf13ae51795036d0ae9af42f3cbcb400000000000000000000000011d67fa925877813b744abc0917900c2b1d6eb810000000000000000000000001398206b0d65048edd2864496655255f5de9e4e000000000000000000000000013bf4152e8b499b15f272fd61eb4dabe88072d9f0000000000000000000000001846507590b77f961f9133eefd6bffd9bccaa2d1000000000000000000000000193f0ee42a199a0cecd479a9f09ba293eb1ca35700000000000000000000000019ee073e863c6a6f6da9326044067507ea76a6930000000000000000000000001e6bd36167620641cc88c846b815ada76f754e5b0000000000000000000000001f427a6fcdb95a7393c58552093e10a932890fa80000000000000000000000001fc550e98ad3021e32c47a84019f77a0792c60b700000000000000000000000020c9bd4cff005082867e5928926200c872cd8b3d000000000000000000000000219723d005e383032ea9ae43e4a72bdead0fa38b000000000000000000000000229ca6e76661463b920d9a24db8237110df78ef700000000000000000000000024621aa4dde07f04c57146d83468969010b7489e0000000000000000000000002477296e9bb326506039c01ad22475133d93265900000000000000000000000025beda673690ecd0a8a64d35ab228fc2e1c0048a00000000000000000000000026fdc242eccc144971e558ff458a4ec21b75d4e800000000000000000000000027b19813451bcae3031cabd40b7587b26eaa7d8a0000000000000000000000002a3381b6909512ff4a028b6ca747e4592f8384d50000000000000000000000002b47c57a4c9fc1649b43500f4c0cda6cf29be2780000000000000000000000002b6c7e127a5f799587b0f9b4393d62b26cf85c950000000000000000000000002b92d12d8cc0b9af862451393925092c6c21a6110000000000000000000000002ec1d7a211245d31aaad13ffc11a06e2b21d56e30000000000000000000000003140f301fa35d667de5775fa1b00ad0a4dc7eb5c00000000000000000000000032d4135f53a85250d58b97bc5c1d2c29161a3ff700000000000000000000000033fe24d01539c99c50ecbabec91e05b0f802c0b900000000000000000000000035642de97d6376dd55240ffd35fafd2619515e5400000000000000000000000035d448178c938ee1a2dd0c3c9da3185d433e79aa000000000000000000000000380568bcadb2ebdd84b9d0f4e6702ee760ce6944000000000000000000000000388411e858cb11414b7eeccf26c8c6a2c23ec52f0000000000000000000000003b3abbf96e7d4c738994607822d786c791f022ee0000000000000000000000003b91caba057858ba138dc2e00cda9f3603d77a440000000000000000000000003e2178cf851a0e5cbf84c0ff53f820ad7ead703b0000000000000000000000003f2c67f587bf7a42f6cb2dcde5d24d5506756748000000000000000000000000425774e62423b870a22477b391c7a00bfc83bdd700000000000000000000000042e8f94fba0f2b63449c3042c6dc6511f694446a000000000000000000000000442b263a0aab7c90a822a99e49d27cc8d2af20ed000000000000000000000000466e956ca9987b0b119330df65bf6ec4c3876e4f0000000000000000000000004bfac3a78ef7308861e6d91da922e9d162e88b7f0000000000000000000000004c1270592cc6a34f8371100cb3cf55961b7bd7fa0000000000000000000000004c36e31a6006edcc58fd92fe3cb35683f78401a40000000000000000000000004d58d36e46cf9af14e416061fe5d0074780b40990000000000000000000000004e47e39033a19f306598167499dc070b6039aaa10000000000000000000000005053a1354cb45eebdd2d8342ceee71d41efa75ca0000000000000000000000005498ff04a598f05b1ee3483b506d1191c7718bfd0000000000000000000000005648af1b3c089e4226e71ecc060df2c4cb4118dc00000000000000000000000057d621d02992672b80154243d54353b66e4483ae0000000000000000000000005878fc144c6f77d7cd4744b12bccd7f4f500af180000000000000000000000005a93fdde08b8e6197bb7b9e8eabcfceb526079320000000000000000000000005ced142150f7d0ee71c2300b34d51e5dc9f8c4560000000000000000000000005d4ce7a8e2483e35b2d8009def56bbe8a4352bb80000000000000000000000005ef3e3395f838bc5736efbce77884bd06035313b0000000000000000000000005ff2692b3f0803e6985d1ed1a2366f0bc28121e7000000000000000000000000606315589e4d36b5743673c6e40eb1ced571128c0000000000000000000000006169741408049837837a2c59ce22e01e5136c5570000000000000000000000006453a5733c4f03a5d290082a0d0aed5e876404c000000000000000000000000064b71f8546c4fcf06fc13294ded73dcaea3fc241000000000000000000000000664d448a984dae1e829bf71e837facd7b657ee1000000000000000000000000066666666c510be02a4d15aa75d5a236068b2a1fa0000000000000000000000006767ad8d45dd579b272f5a4a4d046909eb9211140000000000000000000000006919c4b67e9656c784b46f7b941cf639a66ccd660000000000000000000000006b5e7ec2c4440331a1458edb021d6944fdae530a0000000000000000000000006cd68e8f04490cd1a5a21cc97cc8bc15b47dc9eb0000000000000000000000006d661b5003f90d787561fe0c6a119e3510c5113f0000000000000000000000006d84264a7bd2cffa4a117ba2350403b3a98669490000000000000000000000006f76d8a2aef804ebdd1e7768185f18025f354ee90000000000000000000000007029bfa9a85ebf4653945be520dc3b7f1181f4af000000000000000000000000706d961ab69d54a0fcbaa13e77842279a57241390000000000000000000000007224bb066aaf4ae984e85f9ee959e075b822d4a200000000000000000000000074b7e6d4336df8038a44393cac5b7ac53fd75c7a0000000000000000000000007560cbe62147199a7948bcb79770de071b5725bc000000000000000000000000767a60f295aedd958932088f9cd6a4951d8739b600000000000000000000000076a9081947b50c4cd770169f755385287edbd2df0000000000000000000000007706dd0517df06612050a93ce3681d05011dca80000000000000000000000000771f1324cefbe2ef765e42a188c0bffe62d2c2c000000000000000000000000078bc83b1255d96b190848b3a8146491cd7e631340000000000000000000000007a205a4a5f1cc04cfa751b030322804a0eb42d330000000000000000000000007a62d6cf2517af31032a947ffdd8a385b45c80ce0000000000000000000000007a6cbd7a4562021fbdc0ac328c6c572fd703087a0000000000000000000000007ab066bcd945264e1b1c8d451cb3517c973e676c0000000000000000000000007aef2d7671efb00a7196eb4bbd8ee7a2ba0e5de20000000000000000000000007c3740171c672df753a935305a5be703388766630000000000000000000000007d9ae789d649b7cf5748c8b9eb96d9a2068b87eb0000000000000000000000007eb4d1f3b748890d7dfcd8eae09b087454fedce90000000000000000000000007ede3c6fe8e68e420c23ada6eb9ce9fe99f742410000000000000000000000007f2c610ea7287b2d302b949f0d21d3b927e75d160000000000000000000000007f7bac92aa3e28351f9e89535ca334e8a44542d0000000000000000000000000808253c190aca3c2c24f1025d76709f462e3027600000000000000000000000080fb1715bc81926babc68842c6df472cddc9b664000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000010f0cf064dd59200000000000000000000000000000000000000000000000000004e369a49d3ca788a000000000000000000000000000000000000000000000000337cb0c4809b83400000000000000000000000000000000000000000000000005ce07d674f58b87800000000000000000000000000000000000000000000000019ed6dbf415a6c5000000000000000000000000000000000000000000000000032181542ecb1f3440000000000000000000000000000000000000000000000001bc7691ad2794e4a0000000000000000000000000000000000000000000000001a26e497a3c93b40000000000000000000000000000000000000000000000005813b7c3faec20408000000000000000000000000000000000000000000000012aec379fac4eb2ea00000000000000000000000000000000000000000000000030c22fe8958b7e9d8000000000000000000000000000000000000000000000036ced485fce80510a0000000000000000000000000000000000000000000000000eae64158a8909304000000000000000000000000000000000000000000000016fb601bf471a4ee78000000000000000000000000000000000000000000000000510a683cd1a3fd820000000000000000000000000000000000000000000000003099cabaafb9f9c000000000000000000000000000000000000000000000000a87c06c6c9dc04608000000000000000000000000000000000000000000000000202935aa9e9e817200000000000000000000000000000000000000000000000043a9c9735350a08c0000000000000000000000000000000000000000000000030c7a14d9b8cdb3bc00000000000000000000000000000000000000000000000095f2cb78e56fc4640000000000000000000000000000000000000000000000006c3e5a01c0a84c800000000000000000000000000000000000000000000000001d32845c5f052bb80000000000000000000000000000000000000000000000096c969437ddc7c8f00000000000000000000000000000000000000000000000006346cd2bdd6942c400000000000000000000000000000000000000000000001dbf9a4e395f9ab330000000000000000000000000000000000000000000000001b33c7b97a5d88480000000000000000000000000000000000000000000000000c69b2daffd7d3150000000000000000000000000000000000000000000000002909f98fccb45cc500000000000000000000000000000000000000000000000005db0eadb41725d88000000000000000000000000000000000000000000000002d9dc965eacc424bc000000000000000000000000000000000000000000000008337bc76e7892f4180000000000000000000000000000000000000000000000005ae12051375ce90c000000000000000000000000000000000000000000000001473a21a038ea0d400000000000000000000000000000000000000000000000002fcc5abbfb55cbf8000000000000000000000000000000000000000000000006d7d6b4811b6e0fb800000000000000000000000000000000000000000000001115f39b785581bc2000000000000000000000000000000000000000000000000021a8b8a6b6c4c8a60000000000000000000000000000000000000000000000041c81e2144f33b3b8000000000000000000000000000000000000000000000000d8a16556f7440df800000000000000000000000000000000000000000000002cf0af9ce3a388c7a00000000000000000000000000000000000000000000000001b362e2166fc2ed200000000000000000000000000000000000000000000000041ffe3f2f321c3000000000000000000000000000000000000000000000000002fa0818d483b6c8600000000000000000000000000000000000000000000000db1d8e4fd586091e00000000000000000000000000000000000000000000000005429476f43569c180000000000000000000000000000000000000000000000061c3a5233641de340000000000000000000000000000000000000000000000002d1f29b2276c59838000000000000000000000000000000000000000000000000863251b3128e4bec000000000000000000000000000000000000000000000026f4acfeaf51664780000000000000000000000000000000000000000000000000e2a011ad686b8fb4000000000000000000000000000000000000000000000000376d204fbebfe4100000000000000000000000000000000000000000000000009ad1354c761bcfb00000000000000000000000000000000000000000000000107d015ce4d364059800000000000000000000000000000000000000000000000030cad4cfa84484f800000000000000000000000000000000000000000000000a907b299713d1ed3800000000000000000000000000000000000000000000001a10cd0654038d87e0000000000000000000000000000000000000000000000003390d38f7f04bfc98000000000000000000000000000000000000000000000003d8ae6ad2fd643f280000000000000000000000000000000000000000000000034aa83719948cf28c00000000000000000000000000000000000000000000000199d41f578c71b3a40000000000000000000000000000000000000000000000016338034a5d9b21880000000000000000000000000000000000000000000000012db7f13e3783a7000000000000000000000000000000000000000000000000032486c304be394c0000000000000000000000000000000000000000000000000026ee7c772e272a0e0000000000000000000000000000000000000000000000008a4c338475f3032800000000000000000000000000000000000000000000000023a1c17b28925df40000000000000000000000000000000000000000000000005370eecf421bc2ee000000000000000000000000000000000000000000000000165721ff45a8f25e000000000000000000000000000000000000000000000000236af0698ef738ea0000000000000000000000000000000000000000000000129958290a7f8e25b80000000000000000000000000000000000000000000000003f3fdd121b97c5b4000000000000000000000000000000000000000000000000950e6704312222e400000000000000000000000000000000000000000000000058ed24694ec0ad60000000000000000000000000000000000000000000000006dbdc186c0b600a100000000000000000000000000000000000000000000000030e960577683bf0100000000000000000000000000000000000000000000000125ce0fa7d6ce64f180000000000000000000000000000000000000000000000004635fd46c440f630000000000000000000000000000000000000000000000000421b7b13dbc8480400000000000000000000000000000000000000000000000020d3bdc1fc65437800000000000000000000000000000000000000000000000086ecab714a57251c00000000000000000000000000000000000000000000000020e67c0332030670000000000000000000000000000000000000000000000000fb0715b6f308dec40000000000000000000000000000000000000000000000003b93228d1dbd067800000000000000000000000000000000000000000000000016357744a4538da0000000000000000000000000000000000000000000000000313db4a42532eeb0000000000000000000000000000000000000000000000000aa925f99b5f50a7800000000000000000000000000000000000000000000000016cb1a7f80736936000000000000000000000000000000000000000000000006381cb9cf6b601400000000000000000000000000000000000000000000000002a1dad8511d4f8448000000000000000000000000000000000000000000000001bd83188592935ab800000000000000000000000000000000000000000000000bb9d607cbe17346000000000000000000000000000000000000000000000000030d98280cd086961c0000000000000000000000000000000000000000000000002a8bdc06aa2ae2aa0000000000000000000000000000000000000000000000005d06e1480b9789dc0000000000000000000000000000000000000000000000001b34777dd627940600000000000000000000000000000000000000000000000674ef79a6813d91e8000000000000000000000000000000000000000000000000456cd2befb81427000000000000000000000000000000000000000000000001a2f1094d740f30b780000000000000000000000000000000000000000000000002941799f86bb8dfc0
-----Decoded View---------------
Arg [0] : dao (address): 0xB7bE82790d40258Fd028BEeF2f2007DC044F3459
Arg [1] : iporToken (address): 0x1e4746dC744503b53b4A082cB3607B169a289090
Arg [2] : startTimestamp (uint64): 1674043200
Arg [3] : durationSeconds (uint64): 15768000
Arg [4] : stakeholders (address[]): 0xDF644Ac5D9480AE0ec0b2b6B07141FCC7174a076,0x01EC4a63E8Bd579e1A2CEa4763Cf3a5da5e48e8b,0x05A84DAC7d722E3313b5C94E2681BAac3427ba76,0x074A8adEb96ef74AE82A6377C8085106F014989C,0x0766569CBC0Ed6291551589F66e0d0b2DA3881De,0x07D7d3badcb55DCb5f5D4c77b0513B9Ec73507f8,0x097e3725a78Fe52a803Da00e827bB60a99509483,0x09e8516AEAcCb2E79FB954144404eEF908D72b24,0x0c8eE7DbF8cB1d980c107d3Df6357dEaC7dBe9EF,0x0c988abc38A818bBB2Fb9F8F9B547748Cf5D42B5,0x0da2b44eDD7bA460CfCe12F99F351CAc8f216096,0x0fD6f65D35cf13Ae51795036d0aE9AF42f3cBCB4,0x11d67Fa925877813B744aBC0917900c2b1D6Eb81,0x1398206B0d65048edd2864496655255f5DE9e4e0,0x13Bf4152e8B499b15F272fd61Eb4dAbe88072d9f,0x1846507590b77f961F9133Eefd6BfFD9BcCaA2d1,0x193F0Ee42a199A0CECD479a9F09BA293eB1CA357,0x19eE073E863c6a6F6da9326044067507eA76A693,0x1E6bd36167620641cc88C846B815adA76F754e5b,0x1F427A6FCdb95A7393C58552093e10A932890FA8,0x1Fc550e98aD3021e32C47A84019F77a0792c60B7,0x20C9bd4cfF005082867e5928926200c872CD8b3D,0x219723D005E383032ea9Ae43e4A72BdeAd0FA38b,0x229cA6e76661463B920d9a24DB8237110df78ef7,0x24621aA4DDE07F04C57146D83468969010b7489E,0x2477296e9bB326506039c01ad22475133d932659,0x25bEda673690ecd0A8A64d35Ab228fC2E1C0048A,0x26FDc242eCCc144971e558FF458a4ec21B75D4E8,0x27B19813451BcAe3031CaBd40B7587B26eAa7D8a,0x2A3381B6909512Ff4A028b6CA747E4592F8384d5,0x2b47C57A4c9Fc1649B43500f4c0cDa6cF29be278,0x2B6C7e127a5f799587B0F9B4393D62B26Cf85c95,0x2B92d12D8cC0b9AF862451393925092c6c21A611,0x2EC1d7A211245d31aaAD13ffC11a06e2B21d56e3,0x3140f301FA35d667de5775fA1B00aD0a4Dc7EB5C,0x32D4135F53a85250d58b97BC5c1D2C29161A3fF7,0x33FE24D01539C99c50ecbABec91e05B0F802C0B9,0x35642DE97d6376DD55240Ffd35FAfD2619515e54,0x35d448178c938ee1a2DD0C3C9DA3185d433E79AA,0x380568bcadb2ebDd84B9D0F4E6702ee760Ce6944,0x388411E858cB11414B7eECcF26c8C6A2C23Ec52F,0x3B3abBF96e7d4C738994607822D786c791F022ee,0x3b91Caba057858bA138dC2e00CDa9f3603D77a44,0x3e2178CF851A0e5cbF84c0ff53f820ad7EAD703b,0x3f2c67F587Bf7a42f6cb2dcde5D24D5506756748,0x425774E62423b870a22477b391c7A00Bfc83bdD7,0x42e8F94FBA0F2B63449C3042C6DC6511f694446A,0x442B263a0aAB7c90A822A99E49d27Cc8D2Af20eD,0x466E956cA9987b0b119330DF65bF6Ec4c3876E4F,0x4Bfac3a78eF7308861e6d91DA922e9D162e88b7f,0x4c1270592Cc6A34F8371100Cb3CF55961B7Bd7Fa,0x4C36E31A6006EDCc58FD92fe3cb35683f78401A4,0x4D58D36e46Cf9AF14e416061Fe5D0074780b4099,0x4e47e39033a19F306598167499dc070B6039AAa1,0x5053a1354cB45eebdd2d8342cEeE71d41efA75CA,0x5498ff04A598F05B1eE3483B506d1191C7718bfd,0x5648aF1b3c089e4226e71ecc060dF2c4cB4118DC,0x57d621D02992672B80154243d54353B66E4483aE,0x5878fC144c6F77D7Cd4744b12BCCD7F4F500Af18,0x5A93fDdE08b8E6197Bb7B9E8EABcfcEb52607932,0x5ced142150F7d0ee71C2300b34D51e5Dc9f8C456,0x5D4CE7A8e2483E35B2d8009DEf56bbe8A4352BB8,0x5Ef3e3395F838bc5736EfbCe77884bd06035313B,0x5fF2692b3f0803E6985D1ed1A2366f0Bc28121E7,0x606315589e4d36B5743673C6E40Eb1CEd571128C,0x6169741408049837837A2c59CE22E01e5136c557,0x6453a5733c4f03a5D290082A0D0aed5E876404c0,0x64B71F8546c4fcf06fC13294deD73DCAea3fc241,0x664D448A984DAe1e829BF71e837faCd7b657EE10,0x66666666C510be02a4d15AA75D5A236068B2A1FA,0x6767AD8d45DD579b272F5a4A4d046909EB921114,0x6919c4B67E9656c784b46f7B941cF639a66CCd66,0x6b5E7ec2C4440331A1458EdB021d6944FdAE530a,0x6Cd68E8f04490Cd1A5A21cc97CC8BC15b47Dc9eb,0x6D661b5003F90D787561fe0c6a119E3510c5113f,0x6d84264A7bD2Cffa4A117BA2350403b3A9866949,0x6F76d8a2Aef804ebdd1E7768185F18025f354Ee9,0x7029bfa9A85Ebf4653945Be520dC3b7F1181F4aF,0x706D961Ab69d54a0FCbaa13E77842279A5724139,0x7224bb066aaf4ae984e85f9ee959E075b822d4A2,0x74b7E6d4336df8038A44393CAc5B7aC53fd75C7A,0x7560CBE62147199a7948bcB79770dE071B5725bc,0x767A60F295AEDd958932088F9Cd6a4951D8739b6,0x76A9081947B50C4cd770169f755385287EDBD2df,0x7706Dd0517dF06612050a93ce3681d05011DCA80,0x771f1324CEFbe2EF765E42A188c0BffE62d2c2C0,0x78bC83b1255d96b190848B3A8146491cd7E63134,0x7A205a4a5f1cc04Cfa751B030322804A0EB42d33,0x7A62D6cF2517aF31032a947FFDD8A385B45C80Ce,0x7a6CbD7A4562021FBdc0aC328c6C572Fd703087a,0x7ab066BCD945264e1B1C8d451CB3517c973e676c,0x7aEF2D7671EFb00A7196eb4BBd8eE7a2ba0e5de2,0x7C3740171c672df753a935305A5BE70338876663,0x7d9Ae789d649b7cf5748c8b9EB96d9a2068B87Eb,0x7eb4D1f3B748890D7DFCd8EAe09b087454FEDcE9,0x7EdE3C6FE8e68E420C23adA6eB9cE9FE99F74241,0x7F2c610eA7287B2D302B949F0d21D3b927e75D16,0x7F7bAc92AA3e28351F9E89535CA334e8A44542d0,0x808253C190AcA3c2C24f1025D76709F462e30276,0x80FB1715bC81926babc68842c6Df472Cddc9b664
Arg [5] : amounts (uint256[]): 5000000000000000000000,90173786009236900000,59360552817027200000,107079790863022000000,29892321418100000000,57754535656329000000,32026945972971300000,30151117344643200000,1624734298176370000000,5514150982844520000000,899436373834310000000,16176445829895400000000,270820609576953000000,6783070048953390000000,93433511636220500000,56032849414691200000,3107990053464050000000,37079079842891700000,78010393100183800000,899828579553335000000,172878754817937000000,124796329091616000000,33662232131223600000,2781524816538460000000,114458090342505000000,8780192188056940000000,501793244741664000000,228977319596724000000,757035270746996000000,108018465101522000000,841473214110327000000,2420539689360470000000,104776813861867000000,377267132337360000000,55107641255258800000,2019732500352510000000,5042822849413320000000,38806262808151100000,1213458364428030000000,249757907322126000000,13263999878956200000000,31372886540208500000,76092325826035200000,54910165757736700000,4041966679594680000000,97031310662844400000,1803431888074320000000,832349005088542000000,154718098871523000000,11497712343538400000000,261281146965189000000,63902143542756000000,178492101671820000000,4866487808751030000000,56253703159399600000,3118054422872670000000,7693215627987000000000,951219790296438000000,1135260266139130000000,971517480944459000000,472500209879265000000,409539393601490000000,347857775610816000000,927555802856192000000,44885063507450700000,159446347511546000000,41080735956539400000,96201089223589900000,25756684353237100000,40833863600313700000,5489456322201470000000,72921670684229000000,171850166864433000000,102525086072472000000,2024368462140260000000,902260252713188000000,5419744284634390000000,80947651788844000000,76216581697541800000,37847085922567600000,155557347178447000000,37931497712367200000,289415204861801000000,68685005748782000000,25605062068776000000,56771051176472800000,196655863149358000000,26278969984398300000,1835580404931840000000,776901762805506000000,513640472492734000000,3460881342801280000000,901116946809359000000,49052574280617700000,107252684718975000000,31365169922568700000,1905704826018090000000,80041680060911200000,7728107521409390000000,47564655281735000000
-----Encoded View---------------
208 Constructor Arguments found :
Arg [0] : 000000000000000000000000b7be82790d40258fd028beef2f2007dc044f3459
Arg [1] : 0000000000000000000000001e4746dc744503b53b4a082cb3607b169a289090
Arg [2] : 0000000000000000000000000000000000000000000000000000000063c7df40
Arg [3] : 0000000000000000000000000000000000000000000000000000000000f099c0
Arg [4] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000d60
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [7] : 000000000000000000000000df644ac5d9480ae0ec0b2b6b07141fcc7174a076
Arg [8] : 00000000000000000000000001ec4a63e8bd579e1a2cea4763cf3a5da5e48e8b
Arg [9] : 00000000000000000000000005a84dac7d722e3313b5c94e2681baac3427ba76
Arg [10] : 000000000000000000000000074a8adeb96ef74ae82a6377c8085106f014989c
Arg [11] : 0000000000000000000000000766569cbc0ed6291551589f66e0d0b2da3881de
Arg [12] : 00000000000000000000000007d7d3badcb55dcb5f5d4c77b0513b9ec73507f8
Arg [13] : 000000000000000000000000097e3725a78fe52a803da00e827bb60a99509483
Arg [14] : 00000000000000000000000009e8516aeaccb2e79fb954144404eef908d72b24
Arg [15] : 0000000000000000000000000c8ee7dbf8cb1d980c107d3df6357deac7dbe9ef
Arg [16] : 0000000000000000000000000c988abc38a818bbb2fb9f8f9b547748cf5d42b5
Arg [17] : 0000000000000000000000000da2b44edd7ba460cfce12f99f351cac8f216096
Arg [18] : 0000000000000000000000000fd6f65d35cf13ae51795036d0ae9af42f3cbcb4
Arg [19] : 00000000000000000000000011d67fa925877813b744abc0917900c2b1d6eb81
Arg [20] : 0000000000000000000000001398206b0d65048edd2864496655255f5de9e4e0
Arg [21] : 00000000000000000000000013bf4152e8b499b15f272fd61eb4dabe88072d9f
Arg [22] : 0000000000000000000000001846507590b77f961f9133eefd6bffd9bccaa2d1
Arg [23] : 000000000000000000000000193f0ee42a199a0cecd479a9f09ba293eb1ca357
Arg [24] : 00000000000000000000000019ee073e863c6a6f6da9326044067507ea76a693
Arg [25] : 0000000000000000000000001e6bd36167620641cc88c846b815ada76f754e5b
Arg [26] : 0000000000000000000000001f427a6fcdb95a7393c58552093e10a932890fa8
Arg [27] : 0000000000000000000000001fc550e98ad3021e32c47a84019f77a0792c60b7
Arg [28] : 00000000000000000000000020c9bd4cff005082867e5928926200c872cd8b3d
Arg [29] : 000000000000000000000000219723d005e383032ea9ae43e4a72bdead0fa38b
Arg [30] : 000000000000000000000000229ca6e76661463b920d9a24db8237110df78ef7
Arg [31] : 00000000000000000000000024621aa4dde07f04c57146d83468969010b7489e
Arg [32] : 0000000000000000000000002477296e9bb326506039c01ad22475133d932659
Arg [33] : 00000000000000000000000025beda673690ecd0a8a64d35ab228fc2e1c0048a
Arg [34] : 00000000000000000000000026fdc242eccc144971e558ff458a4ec21b75d4e8
Arg [35] : 00000000000000000000000027b19813451bcae3031cabd40b7587b26eaa7d8a
Arg [36] : 0000000000000000000000002a3381b6909512ff4a028b6ca747e4592f8384d5
Arg [37] : 0000000000000000000000002b47c57a4c9fc1649b43500f4c0cda6cf29be278
Arg [38] : 0000000000000000000000002b6c7e127a5f799587b0f9b4393d62b26cf85c95
Arg [39] : 0000000000000000000000002b92d12d8cc0b9af862451393925092c6c21a611
Arg [40] : 0000000000000000000000002ec1d7a211245d31aaad13ffc11a06e2b21d56e3
Arg [41] : 0000000000000000000000003140f301fa35d667de5775fa1b00ad0a4dc7eb5c
Arg [42] : 00000000000000000000000032d4135f53a85250d58b97bc5c1d2c29161a3ff7
Arg [43] : 00000000000000000000000033fe24d01539c99c50ecbabec91e05b0f802c0b9
Arg [44] : 00000000000000000000000035642de97d6376dd55240ffd35fafd2619515e54
Arg [45] : 00000000000000000000000035d448178c938ee1a2dd0c3c9da3185d433e79aa
Arg [46] : 000000000000000000000000380568bcadb2ebdd84b9d0f4e6702ee760ce6944
Arg [47] : 000000000000000000000000388411e858cb11414b7eeccf26c8c6a2c23ec52f
Arg [48] : 0000000000000000000000003b3abbf96e7d4c738994607822d786c791f022ee
Arg [49] : 0000000000000000000000003b91caba057858ba138dc2e00cda9f3603d77a44
Arg [50] : 0000000000000000000000003e2178cf851a0e5cbf84c0ff53f820ad7ead703b
Arg [51] : 0000000000000000000000003f2c67f587bf7a42f6cb2dcde5d24d5506756748
Arg [52] : 000000000000000000000000425774e62423b870a22477b391c7a00bfc83bdd7
Arg [53] : 00000000000000000000000042e8f94fba0f2b63449c3042c6dc6511f694446a
Arg [54] : 000000000000000000000000442b263a0aab7c90a822a99e49d27cc8d2af20ed
Arg [55] : 000000000000000000000000466e956ca9987b0b119330df65bf6ec4c3876e4f
Arg [56] : 0000000000000000000000004bfac3a78ef7308861e6d91da922e9d162e88b7f
Arg [57] : 0000000000000000000000004c1270592cc6a34f8371100cb3cf55961b7bd7fa
Arg [58] : 0000000000000000000000004c36e31a6006edcc58fd92fe3cb35683f78401a4
Arg [59] : 0000000000000000000000004d58d36e46cf9af14e416061fe5d0074780b4099
Arg [60] : 0000000000000000000000004e47e39033a19f306598167499dc070b6039aaa1
Arg [61] : 0000000000000000000000005053a1354cb45eebdd2d8342ceee71d41efa75ca
Arg [62] : 0000000000000000000000005498ff04a598f05b1ee3483b506d1191c7718bfd
Arg [63] : 0000000000000000000000005648af1b3c089e4226e71ecc060df2c4cb4118dc
Arg [64] : 00000000000000000000000057d621d02992672b80154243d54353b66e4483ae
Arg [65] : 0000000000000000000000005878fc144c6f77d7cd4744b12bccd7f4f500af18
Arg [66] : 0000000000000000000000005a93fdde08b8e6197bb7b9e8eabcfceb52607932
Arg [67] : 0000000000000000000000005ced142150f7d0ee71c2300b34d51e5dc9f8c456
Arg [68] : 0000000000000000000000005d4ce7a8e2483e35b2d8009def56bbe8a4352bb8
Arg [69] : 0000000000000000000000005ef3e3395f838bc5736efbce77884bd06035313b
Arg [70] : 0000000000000000000000005ff2692b3f0803e6985d1ed1a2366f0bc28121e7
Arg [71] : 000000000000000000000000606315589e4d36b5743673c6e40eb1ced571128c
Arg [72] : 0000000000000000000000006169741408049837837a2c59ce22e01e5136c557
Arg [73] : 0000000000000000000000006453a5733c4f03a5d290082a0d0aed5e876404c0
Arg [74] : 00000000000000000000000064b71f8546c4fcf06fc13294ded73dcaea3fc241
Arg [75] : 000000000000000000000000664d448a984dae1e829bf71e837facd7b657ee10
Arg [76] : 00000000000000000000000066666666c510be02a4d15aa75d5a236068b2a1fa
Arg [77] : 0000000000000000000000006767ad8d45dd579b272f5a4a4d046909eb921114
Arg [78] : 0000000000000000000000006919c4b67e9656c784b46f7b941cf639a66ccd66
Arg [79] : 0000000000000000000000006b5e7ec2c4440331a1458edb021d6944fdae530a
Arg [80] : 0000000000000000000000006cd68e8f04490cd1a5a21cc97cc8bc15b47dc9eb
Arg [81] : 0000000000000000000000006d661b5003f90d787561fe0c6a119e3510c5113f
Arg [82] : 0000000000000000000000006d84264a7bd2cffa4a117ba2350403b3a9866949
Arg [83] : 0000000000000000000000006f76d8a2aef804ebdd1e7768185f18025f354ee9
Arg [84] : 0000000000000000000000007029bfa9a85ebf4653945be520dc3b7f1181f4af
Arg [85] : 000000000000000000000000706d961ab69d54a0fcbaa13e77842279a5724139
Arg [86] : 0000000000000000000000007224bb066aaf4ae984e85f9ee959e075b822d4a2
Arg [87] : 00000000000000000000000074b7e6d4336df8038a44393cac5b7ac53fd75c7a
Arg [88] : 0000000000000000000000007560cbe62147199a7948bcb79770de071b5725bc
Arg [89] : 000000000000000000000000767a60f295aedd958932088f9cd6a4951d8739b6
Arg [90] : 00000000000000000000000076a9081947b50c4cd770169f755385287edbd2df
Arg [91] : 0000000000000000000000007706dd0517df06612050a93ce3681d05011dca80
Arg [92] : 000000000000000000000000771f1324cefbe2ef765e42a188c0bffe62d2c2c0
Arg [93] : 00000000000000000000000078bc83b1255d96b190848b3a8146491cd7e63134
Arg [94] : 0000000000000000000000007a205a4a5f1cc04cfa751b030322804a0eb42d33
Arg [95] : 0000000000000000000000007a62d6cf2517af31032a947ffdd8a385b45c80ce
Arg [96] : 0000000000000000000000007a6cbd7a4562021fbdc0ac328c6c572fd703087a
Arg [97] : 0000000000000000000000007ab066bcd945264e1b1c8d451cb3517c973e676c
Arg [98] : 0000000000000000000000007aef2d7671efb00a7196eb4bbd8ee7a2ba0e5de2
Arg [99] : 0000000000000000000000007c3740171c672df753a935305a5be70338876663
Arg [100] : 0000000000000000000000007d9ae789d649b7cf5748c8b9eb96d9a2068b87eb
Arg [101] : 0000000000000000000000007eb4d1f3b748890d7dfcd8eae09b087454fedce9
Arg [102] : 0000000000000000000000007ede3c6fe8e68e420c23ada6eb9ce9fe99f74241
Arg [103] : 0000000000000000000000007f2c610ea7287b2d302b949f0d21d3b927e75d16
Arg [104] : 0000000000000000000000007f7bac92aa3e28351f9e89535ca334e8a44542d0
Arg [105] : 000000000000000000000000808253c190aca3c2c24f1025d76709f462e30276
Arg [106] : 00000000000000000000000080fb1715bc81926babc68842c6df472cddc9b664
Arg [107] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [108] : 00000000000000000000000000000000000000000000010f0cf064dd59200000
Arg [109] : 000000000000000000000000000000000000000000000004e369a49d3ca788a0
Arg [110] : 00000000000000000000000000000000000000000000000337cb0c4809b83400
Arg [111] : 000000000000000000000000000000000000000000000005ce07d674f58b8780
Arg [112] : 0000000000000000000000000000000000000000000000019ed6dbf415a6c500
Arg [113] : 0000000000000000000000000000000000000000000000032181542ecb1f3440
Arg [114] : 000000000000000000000000000000000000000000000001bc7691ad2794e4a0
Arg [115] : 000000000000000000000000000000000000000000000001a26e497a3c93b400
Arg [116] : 00000000000000000000000000000000000000000000005813b7c3faec204080
Arg [117] : 00000000000000000000000000000000000000000000012aec379fac4eb2ea00
Arg [118] : 000000000000000000000000000000000000000000000030c22fe8958b7e9d80
Arg [119] : 00000000000000000000000000000000000000000000036ced485fce80510a00
Arg [120] : 00000000000000000000000000000000000000000000000eae64158a89093040
Arg [121] : 00000000000000000000000000000000000000000000016fb601bf471a4ee780
Arg [122] : 00000000000000000000000000000000000000000000000510a683cd1a3fd820
Arg [123] : 000000000000000000000000000000000000000000000003099cabaafb9f9c00
Arg [124] : 0000000000000000000000000000000000000000000000a87c06c6c9dc046080
Arg [125] : 00000000000000000000000000000000000000000000000202935aa9e9e81720
Arg [126] : 0000000000000000000000000000000000000000000000043a9c9735350a08c0
Arg [127] : 000000000000000000000000000000000000000000000030c7a14d9b8cdb3bc0
Arg [128] : 0000000000000000000000000000000000000000000000095f2cb78e56fc4640
Arg [129] : 000000000000000000000000000000000000000000000006c3e5a01c0a84c800
Arg [130] : 000000000000000000000000000000000000000000000001d32845c5f052bb80
Arg [131] : 000000000000000000000000000000000000000000000096c969437ddc7c8f00
Arg [132] : 000000000000000000000000000000000000000000000006346cd2bdd6942c40
Arg [133] : 0000000000000000000000000000000000000000000001dbf9a4e395f9ab3300
Arg [134] : 00000000000000000000000000000000000000000000001b33c7b97a5d884800
Arg [135] : 00000000000000000000000000000000000000000000000c69b2daffd7d31500
Arg [136] : 00000000000000000000000000000000000000000000002909f98fccb45cc500
Arg [137] : 000000000000000000000000000000000000000000000005db0eadb41725d880
Arg [138] : 00000000000000000000000000000000000000000000002d9dc965eacc424bc0
Arg [139] : 00000000000000000000000000000000000000000000008337bc76e7892f4180
Arg [140] : 000000000000000000000000000000000000000000000005ae12051375ce90c0
Arg [141] : 00000000000000000000000000000000000000000000001473a21a038ea0d400
Arg [142] : 000000000000000000000000000000000000000000000002fcc5abbfb55cbf80
Arg [143] : 00000000000000000000000000000000000000000000006d7d6b4811b6e0fb80
Arg [144] : 0000000000000000000000000000000000000000000001115f39b785581bc200
Arg [145] : 0000000000000000000000000000000000000000000000021a8b8a6b6c4c8a60
Arg [146] : 000000000000000000000000000000000000000000000041c81e2144f33b3b80
Arg [147] : 00000000000000000000000000000000000000000000000d8a16556f7440df80
Arg [148] : 0000000000000000000000000000000000000000000002cf0af9ce3a388c7a00
Arg [149] : 000000000000000000000000000000000000000000000001b362e2166fc2ed20
Arg [150] : 0000000000000000000000000000000000000000000000041ffe3f2f321c3000
Arg [151] : 000000000000000000000000000000000000000000000002fa0818d483b6c860
Arg [152] : 0000000000000000000000000000000000000000000000db1d8e4fd586091e00
Arg [153] : 000000000000000000000000000000000000000000000005429476f43569c180
Arg [154] : 000000000000000000000000000000000000000000000061c3a5233641de3400
Arg [155] : 00000000000000000000000000000000000000000000002d1f29b2276c598380
Arg [156] : 00000000000000000000000000000000000000000000000863251b3128e4bec0
Arg [157] : 00000000000000000000000000000000000000000000026f4acfeaf516647800
Arg [158] : 00000000000000000000000000000000000000000000000e2a011ad686b8fb40
Arg [159] : 00000000000000000000000000000000000000000000000376d204fbebfe4100
Arg [160] : 000000000000000000000000000000000000000000000009ad1354c761bcfb00
Arg [161] : 000000000000000000000000000000000000000000000107d015ce4d36405980
Arg [162] : 0000000000000000000000000000000000000000000000030cad4cfa84484f80
Arg [163] : 0000000000000000000000000000000000000000000000a907b299713d1ed380
Arg [164] : 0000000000000000000000000000000000000000000001a10cd0654038d87e00
Arg [165] : 00000000000000000000000000000000000000000000003390d38f7f04bfc980
Arg [166] : 00000000000000000000000000000000000000000000003d8ae6ad2fd643f280
Arg [167] : 000000000000000000000000000000000000000000000034aa83719948cf28c0
Arg [168] : 0000000000000000000000000000000000000000000000199d41f578c71b3a40
Arg [169] : 000000000000000000000000000000000000000000000016338034a5d9b21880
Arg [170] : 000000000000000000000000000000000000000000000012db7f13e3783a7000
Arg [171] : 000000000000000000000000000000000000000000000032486c304be394c000
Arg [172] : 0000000000000000000000000000000000000000000000026ee7c772e272a0e0
Arg [173] : 000000000000000000000000000000000000000000000008a4c338475f303280
Arg [174] : 0000000000000000000000000000000000000000000000023a1c17b28925df40
Arg [175] : 000000000000000000000000000000000000000000000005370eecf421bc2ee0
Arg [176] : 00000000000000000000000000000000000000000000000165721ff45a8f25e0
Arg [177] : 00000000000000000000000000000000000000000000000236af0698ef738ea0
Arg [178] : 000000000000000000000000000000000000000000000129958290a7f8e25b80
Arg [179] : 000000000000000000000000000000000000000000000003f3fdd121b97c5b40
Arg [180] : 00000000000000000000000000000000000000000000000950e6704312222e40
Arg [181] : 0000000000000000000000000000000000000000000000058ed24694ec0ad600
Arg [182] : 00000000000000000000000000000000000000000000006dbdc186c0b600a100
Arg [183] : 000000000000000000000000000000000000000000000030e960577683bf0100
Arg [184] : 000000000000000000000000000000000000000000000125ce0fa7d6ce64f180
Arg [185] : 000000000000000000000000000000000000000000000004635fd46c440f6300
Arg [186] : 00000000000000000000000000000000000000000000000421b7b13dbc848040
Arg [187] : 0000000000000000000000000000000000000000000000020d3bdc1fc6543780
Arg [188] : 0000000000000000000000000000000000000000000000086ecab714a57251c0
Arg [189] : 0000000000000000000000000000000000000000000000020e67c03320306700
Arg [190] : 00000000000000000000000000000000000000000000000fb0715b6f308dec40
Arg [191] : 000000000000000000000000000000000000000000000003b93228d1dbd06780
Arg [192] : 0000000000000000000000000000000000000000000000016357744a4538da00
Arg [193] : 00000000000000000000000000000000000000000000000313db4a42532eeb00
Arg [194] : 00000000000000000000000000000000000000000000000aa925f99b5f50a780
Arg [195] : 0000000000000000000000000000000000000000000000016cb1a7f807369360
Arg [196] : 00000000000000000000000000000000000000000000006381cb9cf6b6014000
Arg [197] : 00000000000000000000000000000000000000000000002a1dad8511d4f84480
Arg [198] : 00000000000000000000000000000000000000000000001bd83188592935ab80
Arg [199] : 0000000000000000000000000000000000000000000000bb9d607cbe17346000
Arg [200] : 000000000000000000000000000000000000000000000030d98280cd086961c0
Arg [201] : 000000000000000000000000000000000000000000000002a8bdc06aa2ae2aa0
Arg [202] : 000000000000000000000000000000000000000000000005d06e1480b9789dc0
Arg [203] : 000000000000000000000000000000000000000000000001b34777dd62794060
Arg [204] : 0000000000000000000000000000000000000000000000674ef79a6813d91e80
Arg [205] : 00000000000000000000000000000000000000000000000456cd2befb8142700
Arg [206] : 0000000000000000000000000000000000000000000001a2f1094d740f30b780
Arg [207] : 000000000000000000000000000000000000000000000002941799f86bb8dfc0
Deployed Bytecode Sourcemap
56955:3053:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;56287:144;;;:::i;:::-;;55020:279;;;;;;:::i;:::-;-1:-1:-1;;;;;55195:16:0;55105:20;55195:16;;;:7;:16;;;;;;;;;55161:50;;;;;;;;;-1:-1:-1;;;;;55161:50:0;;;;;;-1:-1:-1;;;55161:50:0;;;;;;;;;;;;55020:279;;;;;580:25:1;;;636:2;621:18;;614:34;;;;553:18;55020:279:0;;;;;;;;56212:67;;;:::i;55531:602::-;;;;;;:::i;:::-;;:::i;55307:100::-;55385:14;;-1:-1:-1;;;;;55385:14:0;55307:100;;;1955:25:1;;;1943:2;1928:18;55307:100:0;1809:177:1;10594:86:0;10641:4;10665:7;;;10594:86;;2156:14:1;;2149:22;2131:41;;2119:2;2104:18;10594:86:0;1991:187:1;58052:232:0;;;;;;:::i;:::-;;:::i;55415:108::-;55497:18;;-1:-1:-1;;;55497:18:0;;-1:-1:-1;;;;;55497:18:0;55415:108;;8763:151;;;:::i;56141:63::-;;;:::i;6386:87::-;6459:6;;6386:87;;-1:-1:-1;;;;;6459:6:0;;;2692:74:1;;2680:2;2665:18;6386:87:0;2546:226:1;58292:130:0;;;;;;:::i;:::-;;:::i;57946:98::-;58027:9;58020:16;;57946:98;;57846:92;57924:6;57917:13;;57846:92;;8601:154;;;:::i;8299:294::-;;;;;;:::i;:::-;;:::i;58430:955::-;;;;;;:::i;:::-;;:::i;56287:144::-;6272:13;:11;:13::i;:::-;56379:43:::1;::::0;-1:-1:-1;;;56379:43:0;;56416:4:::1;56379:43;::::0;::::1;2692:74:1::0;56352:10:0::1;-1:-1:-1::0;;;;;56345:27:0::1;::::0;::::1;::::0;56373:4:::1;::::0;56345:27;;56379:28:::1;::::0;2665:18:1;;56379:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;56345:78;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;3755:55:1;;;56345:78:0::1;::::0;::::1;3737:74:1::0;3827:18;;;3820:34;3710:18;;56345:78:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;56287:144::o:0;56212:67::-;6272:13;:11;:13::i;:::-;56261:10:::1;:8;:10::i;:::-;56212:67::o:0;55531:602::-;6272:13;:11;:13::i;:::-;55802:46:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;::::1;;::::0;::::1;::::0;55699:12;;55751:36;;::::1;55729:130;;;;-1:-1:-1::0;;;55729:130:0::1;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1::0;55902:33:0::1;::::0;;;;::::1;::::0;;;::::1;::::0;;::::1;;::::0;::::1;::::0;55878:22;55870:66:::1;;;;-1:-1:-1::0;;;55870:66:0::1;;;;;;;;:::i;:::-;;55952:9;55947:116;55967:18;55963:1;:22;55947:116;;;56007:44;56023:12;;56036:1;56023:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;56040:7;;56048:1;56040:10;;;;;;;:::i;:::-;;;;;;;56007:15;:44::i;:::-;55987:3;::::0;::::1;:::i;:::-;;;55947:116;;;;56095:30;:18;:28;:30::i;:::-;56073:18;:52:::0;;:18:::1;::::0;:52:::1;::::0;;;-1:-1:-1;;;56073:52:0;::::1;-1:-1:-1::0;;;;;56073:52:0::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;56073:52:0::1;;;;;-1:-1:-1::0;;;;;56073:52:0::1;;;;;;55659:474;55531:602:::0;;;;:::o;58052:232::-;-1:-1:-1;;;;;58235:16:0;;58179:7;58235:16;;;:7;:16;;;;;:29;58211:65;;-1:-1:-1;;;;;58235:29:0;58266:9;58211:23;:65::i;:::-;58204:72;;58052:232;;;;;:::o;8763:151::-;6272:13;:11;:13::i;:::-;8837:30:::1;8864:1;8837:18;:30::i;:::-;8878:15;:28:::0;;-1:-1:-1;;;;;;8878:28:0::1;::::0;;8763:151::o;56141:63::-;6272:13;:11;:13::i;:::-;56188:8:::1;:6;:8::i;58292:130::-:0;-1:-1:-1;;;;;58397:16:0;;58358:7;58397:16;;;:7;:16;;;;;;;;58385:29;;;;;;;;;-1:-1:-1;;;;;58385:29:0;;;;;-1:-1:-1;;;58385:29:0;;;;;;;;;;;;;:11;:29::i;8601:154::-;8177:15;;8223:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8177:15:0;5017:10;8177:31;8155:116;;;;-1:-1:-1;;;8155:116:0;;;;;;;;:::i;:::-;-1:-1:-1;8676:15:0::1;:28:::0;;-1:-1:-1;;;;;;8676:28:0::1;::::0;;8715:32:::1;5017:10:::0;8715:18:::1;:32::i;8299:294::-:0;6272:13;:11;:13::i;:::-;8457:24:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;::::1;;::::0;::::1;::::0;-1:-1:-1;;;;;8427:28:0;::::1;8419:63;;;;-1:-1:-1::0;;;8419:63:0::1;;;;;;;;:::i;:::-;-1:-1:-1::0;8493:15:0::1;:32:::0;;-1:-1:-1;;;;;;8493:32:0::1;-1:-1:-1::0;;;;;8493:32:0;::::1;::::0;;::::1;::::0;;;8541:44:::1;::::0;::::1;::::0;-1:-1:-1;;8541:44:0::1;8299:294:::0;:::o;58430:955::-;10199:19;:17;:19::i;:::-;3657:21:::1;:19;:21::i;:::-;58572:11:::2;;53141:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;;53327:168:0::2;::::0;::::2;::::0;-1:-1:-1;53327:168:0::2;;::::0;-1:-1:-1;5623:34:1;5611:47;;5688:34;5683:2;5674:12;;5667:56;5753:34;5748:2;5739:12;;5732:56;-1:-1:-1;;;5813:2:1;5804:12;;5797:28;5850:3;5841:13;;5409:451;53327:168:0::2;;;;;;;;;;;;;53295:219;;;;;;53261:11;53244:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;53234:40;;;;;;:280;53529:45;;;;;;;;;;;;;;;;::::0;53212:373:::2;;;;;-1:-1:-1::0;;;53212:373:0::2;;;;;;;;:::i;:::-;-1:-1:-1::0;5017:10:0;58601:17:::3;58680:18:::0;;;:7:::3;:18;::::0;;;;;;;;58646:52;;;;::::3;::::0;;;;-1:-1:-1;;;;;58646:52:0;;::::3;::::0;;;-1:-1:-1;;;58646:52:0;;::::3;;::::0;;::::3;::::0;58743:29;;;;::::3;::::0;;;::::3;::::0;;-1:-1:-1;;;58743:29:0;;::::3;::::0;;;;58646:52;58743:29;58711:62:::3;;;;-1:-1:-1::0;;;58711:62:0::3;;;;;;;;:::i;:::-;-1:-1:-1::0;58813:14:0::3;::::0;::::3;::::0;58792:18;;58830:1:::3;::::0;58792:35:::3;::::0;::::3;:::i;:::-;-1:-1:-1::0;;;;;58792:39:0::3;;58833:34;;;;;;;;;;;;;;;;::::0;58784:84:::3;;;;;-1:-1:-1::0;;;58784:84:0::3;;;;;;;;:::i;:::-;;58881:14;58898:18;58910:5;58898:11;:18::i;:::-;58881:35;;58990:6;58973:5;:14;;;-1:-1:-1::0;;;;;58973:23:0::3;;;;;:::i;:::-;58951:5;:18;;;-1:-1:-1::0;;;;;58951:45:0::3;;;59011:50;;;;;;;;;;;;;;;;::::0;58929:143:::3;;;;;-1:-1:-1::0;;;58929:143:0::3;;;;;;;;:::i;:::-;;59103:18;:6;:16;:18::i;:::-;59085:5;:14;;:36;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;59085:36:0;;::::3;::::0;;;-1:-1:-1;;;;;59134:18:0;::::3;;::::0;;;:7:::3;:18;::::0;;;;;;;:26;;;;::::3;::::0;;::::3;-1:-1:-1::0;;;59134:26:0::3;::::0;;;::::3;;::::0;;-1:-1:-1;59191:18:0::3;:6:::0;:16:::3;:18::i;:::-;59173:14;:36:::0;;:14:::3;::::0;:36:::3;::::0;;;-1:-1:-1;;;;;59173:36:0::3;;:::i;:::-;::::0;;-1:-1:-1;;;;;59173:36:0;;::::3;;::::0;;;::::3;::::0;;::::3;::::0;;;::::3;;::::0;;::::3;;::::0;;-1:-1:-1;59222:46:0::3;::::0;-1:-1:-1;;;59222:46:0;;-1:-1:-1;;;;;3755:55:1;;;59222:46:0::3;::::0;::::3;3737:74:1::0;3827:18;;;3820:34;;;59229:10:0::3;59222:27;::::0;::::3;::::0;3710:18:1;;59222:46:0::3;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;59306:9;-1:-1:-1::0;;;;;59286:43:0::3;;59317:11;;59286:43;;;;;;;:::i;:::-;;;;;;;;59359:9;-1:-1:-1::0;;;;;59345:32:0::3;;59370:6;59345:32;;;;1955:25:1::0;;1943:2;1928:18;;1809:177;59345:32:0::3;;;;;;;;58590:795;;;3689:1:::2;3701:20:::1;3095:1:::0;4221:22;;4038:213;3701:20:::1;58430:955:::0;;:::o;25525:195::-;25582:7;-1:-1:-1;;;;;25610:26:0;;;25602:78;;;;-1:-1:-1;;;25602:78:0;;7091:2:1;25602:78:0;;;7073:21:1;7130:2;7110:18;;;7103:30;7169:34;7149:18;;;7142:62;7240:9;7220:18;;;7213:37;7267:19;;25602:78:0;6889:403:1;25602:78:0;-1:-1:-1;25706:5:0;25525:195::o;6551:132::-;6459:6;;-1:-1:-1;;;;;6459:6:0;5017:10;6615:23;6607:68;;;;-1:-1:-1;;;6607:68:0;;7499:2:1;6607:68:0;;;7481:21:1;;;7518:18;;;7511:30;7577:34;7557:18;;;7550:62;7629:18;;6607:68:0;7297:356:1;11449:120:0;10458:16;:14;:16::i;:::-;11518:5:::1;11508:15:::0;;-1:-1:-1;;11508:15:0::1;::::0;;11539:22:::1;5017:10:::0;11548:12:::1;11539:22;::::0;-1:-1:-1;;;;;2710:55:1;;;2692:74;;2680:2;2665:18;11539:22:0::1;;;;;;;11449:120::o:0;56439:427::-;56547:31;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;56524:21:0;;56516:63;;;;-1:-1:-1;;;56516:63:0;;;;;;;;:::i;:::-;-1:-1:-1;56610:29:0;;;;;;;;;;;;-1:-1:-1;;;56610:29:0;;;;56598:10;56590:50;;;;-1:-1:-1;;;56590:50:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;56659:16:0;;;;;;:7;:16;;;;;;;;;:29;56695:40;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;56659:29:0;:34;56651:85;;;;-1:-1:-1;;;56651:85:0;;;;;;;;:::i;:::-;;56768:41;;;;;;;;56787:18;:6;:16;:18::i;:::-;-1:-1:-1;;;;;56768:41:0;;;;;56807:1;56768:41;;;;;;;-1:-1:-1;;;;;56749:16:0;;;;;:7;:16;;;;;;;:60;;;;;;;;;-1:-1:-1;;;56749:60:0;;;;;;;;;;;;56825:33;;;;;;56851:6;1955:25:1;;1943:2;1928:18;;1809:177;56825:33:0;;;;;;;;56439:427;;:::o;59611:394::-;59751:7;59792:6;59780:18;;:9;:18;;;59776:59;;;-1:-1:-1;59822:1:0;59815:8;;59776:59;59863:18;59872:9;59863:6;:18;:::i;:::-;59851:30;;:9;:30;;;59847:82;;;-1:-1:-1;59905:12:0;59898:19;;59847:82;59948:49;59988:9;59948:49;59965:18;59977:6;59965:9;:18;:::i;:::-;59949:35;;;;:12;:35;:::i;:::-;59948:49;;;;:::i;7653:191::-;7746:6;;;-1:-1:-1;;;;;7763:17:0;;;-1:-1:-1;;;;;;7763:17:0;;;;;;;7796:40;;7746:6;;;7763:17;7746:6;;7796:40;;7727:16;;7796:40;7716:128;7653:191;:::o;11190:118::-;10199:19;:17;:19::i;:::-;11250:7:::1;:14:::0;;-1:-1:-1;;11250:14:0::1;11260:4;11250:14;::::0;;11280:20:::1;11287:12;5017:10:::0;;4937:98;59393:210;59470:7;59581:5;:14;;;-1:-1:-1;;;;;59510:85:0;:68;59534:5;:18;;;-1:-1:-1;;;;;59510:68:0;59561:15;59510:23;:68::i;:::-;:85;;;;:::i;10753:108::-;10641:4;10665:7;;;10823:9;10815:38;;;;-1:-1:-1;;;10815:38:0;;8761:2:1;10815:38:0;;;8743:21:1;8800:2;8780:18;;;8773:30;8839:18;8819;;;8812:46;8875:18;;10815:38:0;8559:340:1;3737:293:0;3139:1;3871:7;;:19;3863:63;;;;-1:-1:-1;;;3863:63:0;;9106:2:1;3863:63:0;;;9088:21:1;9145:2;9125:18;;;9118:30;9184:33;9164:18;;;9157:61;9235:18;;3863:63:0;8904:355:1;3863:63:0;3139:1;4004:7;:18;3737:293::o;10938:108::-;10641:4;10665:7;;;10997:41;;;;-1:-1:-1;;;10997:41:0;;9466:2:1;10997:41:0;;;9448:21:1;9505:2;9485:18;;;9478:30;9544:22;9524:18;;;9517:50;9584:18;;10997:41:0;9264:344:1;14:196;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;659:367::-;722:8;732:6;786:3;779:4;771:6;767:17;763:27;753:55;;804:1;801;794:12;753:55;-1:-1:-1;827:20:1;;870:18;859:30;;856:50;;;902:1;899;892:12;856:50;939:4;931:6;927:17;915:29;;999:3;992:4;982:6;979:1;975:14;967:6;963:27;959:38;956:47;953:67;;;1016:1;1013;1006:12;953:67;659:367;;;;;:::o;1031:773::-;1153:6;1161;1169;1177;1230:2;1218:9;1209:7;1205:23;1201:32;1198:52;;;1246:1;1243;1236:12;1198:52;1286:9;1273:23;1315:18;1356:2;1348:6;1345:14;1342:34;;;1372:1;1369;1362:12;1342:34;1411:70;1473:7;1464:6;1453:9;1449:22;1411:70;:::i;:::-;1500:8;;-1:-1:-1;1385:96:1;-1:-1:-1;1588:2:1;1573:18;;1560:32;;-1:-1:-1;1604:16:1;;;1601:36;;;1633:1;1630;1623:12;1601:36;;1672:72;1736:7;1725:8;1714:9;1710:24;1672:72;:::i;:::-;1031:773;;;;-1:-1:-1;1763:8:1;-1:-1:-1;;;;1031:773:1:o;2183:358::-;2250:6;2258;2311:2;2299:9;2290:7;2286:23;2282:32;2279:52;;;2327:1;2324;2317:12;2279:52;2350:29;2369:9;2350:29;:::i;:::-;2340:39;;2429:2;2418:9;2414:18;2401:32;2473:18;2466:5;2462:30;2455:5;2452:41;2442:69;;2507:1;2504;2497:12;2442:69;2530:5;2520:15;;;2183:358;;;;;:::o;2777:592::-;2848:6;2856;2909:2;2897:9;2888:7;2884:23;2880:32;2877:52;;;2925:1;2922;2915:12;2877:52;2965:9;2952:23;2994:18;3035:2;3027:6;3024:14;3021:34;;;3051:1;3048;3041:12;3021:34;3089:6;3078:9;3074:22;3064:32;;3134:7;3127:4;3123:2;3119:13;3115:27;3105:55;;3156:1;3153;3146:12;3105:55;3196:2;3183:16;3222:2;3214:6;3211:14;3208:34;;;3238:1;3235;3228:12;3208:34;3283:7;3278:2;3269:6;3265:2;3261:15;3257:24;3254:37;3251:57;;;3304:1;3301;3294:12;3251:57;3335:2;3327:11;;;;;3357:6;;-1:-1:-1;2777:592:1;;-1:-1:-1;;;;2777:592:1:o;3374:184::-;3444:6;3497:2;3485:9;3476:7;3472:23;3468:32;3465:52;;;3513:1;3510;3503:12;3465:52;-1:-1:-1;3536:16:1;;3374:184;-1:-1:-1;3374:184:1:o;3865:277::-;3932:6;3985:2;3973:9;3964:7;3960:23;3956:32;3953:52;;;4001:1;3998;3991:12;3953:52;4033:9;4027:16;4086:5;4079:13;4072:21;4065:5;4062:32;4052:60;;4108:1;4105;4098:12;4052:60;4131:5;3865:277;-1:-1:-1;;;3865:277:1:o;4147:250::-;4232:1;4242:113;4256:6;4253:1;4250:13;4242:113;;;4332:11;;;4326:18;4313:11;;;4306:39;4278:2;4271:10;4242:113;;;-1:-1:-1;;4389:1:1;4371:16;;4364:27;4147:250::o;4402:396::-;4551:2;4540:9;4533:21;4514:4;4583:6;4577:13;4626:6;4621:2;4610:9;4606:18;4599:34;4642:79;4714:6;4709:2;4698:9;4694:18;4689:2;4681:6;4677:15;4642:79;:::i;:::-;4782:2;4761:15;-1:-1:-1;;4757:29:1;4742:45;;;;4789:2;4738:54;;4402:396;-1:-1:-1;;4402:396:1:o;4803:127::-;4864:10;4859:3;4855:20;4852:1;4845:31;4895:4;4892:1;4885:15;4919:4;4916:1;4909:15;4935:127;4996:10;4991:3;4987:20;4984:1;4977:31;5027:4;5024:1;5017:15;5051:4;5048:1;5041:15;5067:135;5106:3;5127:17;;;5124:43;;5147:18;;:::i;:::-;-1:-1:-1;5194:1:1;5183:13;;5067:135::o;5207:197::-;-1:-1:-1;;;;;5329:10:1;;;5341;;;5325:27;;5364:11;;;5361:37;;;5378:18;;:::i;:::-;5361:37;5207:197;;;;:::o;5865:289::-;5996:3;6034:6;6028:13;6050:66;6109:6;6104:3;6097:4;6089:6;6085:17;6050:66;:::i;:::-;6132:16;;;;;5865:289;-1:-1:-1;;5865:289:1:o;6159:200::-;-1:-1:-1;;;;;6295:10:1;;;6283;;;6279:27;;6318:12;;;6315:38;;;6333:18;;:::i;6364:125::-;6429:9;;;6450:10;;;6447:36;;;6463:18;;:::i;6494:390::-;6653:2;6642:9;6635:21;6692:6;6687:2;6676:9;6672:18;6665:34;6749:6;6741;6736:2;6725:9;6721:18;6708:48;6805:1;6776:22;;;6800:2;6772:31;;;6765:42;;;;6868:2;6847:15;;;-1:-1:-1;;6843:29:1;6828:45;6824:54;;6494:390;-1:-1:-1;6494:390:1:o;7658:180::-;7725:18;7763:10;;;7775;;;7759:27;;7798:11;;;7795:37;;;7812:18;;:::i;7843:183::-;7911:18;7962:10;;;7950;;;7946:27;;7985:12;;;7982:38;;;8000:18;;:::i;8031:168::-;8104:9;;;8135;;8152:15;;;8146:22;;8132:37;8122:71;;8173:18;;:::i;8204:217::-;8244:1;8270;8260:132;;8314:10;8309:3;8305:20;8302:1;8295:31;8349:4;8346:1;8339:15;8377:4;8374:1;8367:15;8260:132;-1:-1:-1;8406:9:1;;8204:217::o;8426:128::-;8493:9;;;8514:11;;;8511:37;;;8528:18;;:::i
Swarm Source
ipfs://27b833793944cb0505ecd4ea059d89ae9578f1dada66f2fad788d8f5333028ac
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.432372 | 47,957.5483 | $20,735.5 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.