More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
VVSVesting
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-04-06 */ // File openzeppelin-solidity/contracts/token/ERC20/[email protected] // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File openzeppelin-solidity/contracts/utils/[email protected] pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File openzeppelin-solidity/contracts/token/ERC20/utils/[email protected] pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File openzeppelin-solidity/contracts/utils/[email protected] 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-solidity/contracts/access/[email protected] 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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File contracts/VVSVesting.sol pragma solidity ^0.8.0; contract VVSVesting is Ownable { using SafeERC20 for IERC20; event TokenVested(address indexed beneficiary, uint256 amount); event TokenReleased(address indexed beneficiary, uint256 amount); event TokenRevoked(address indexed beneficiary, address indexed owner, uint256 amount); IERC20 token; /** * @dev struct to hold vesting details. - startTime: start time of vesting - cliff: waiting period before first vesting released - duration: vesting interval. eg. 1 day, 1 month - periods: total number of intervals - allocated: total amount(erc20 token) allocated to user at the start - released: the amount withdrawn by beneficiary - revoked: whether the vesting is revoked or not */ struct User { address beneficiary; uint256 startTime; uint256 cliff; uint256 duration; uint256 periods; uint256 allocated; uint256 released; bool revoked; } mapping(address => User) public vestingInfo; address[] public beneficiaries; modifier onlyExistingUser(address _receiver) { User memory vestingMap = vestingInfo[_receiver]; require(vestingMap.beneficiary != address(0), "Receiver does not exist"); require(vestingMap.revoked == false, "this beneficiary is already revoked"); require(vestingMap.allocated > vestingMap.released, "The vesting is already completed"); _; } modifier onlyNewUser(address _receiver) { User memory vestingMap = vestingInfo[_receiver]; require(vestingMap.beneficiary == address(0), "Receiver exists already"); _; } constructor(IERC20 _token, address _owner) { token = _token; transferOwnership(_owner); } /** * @dev Add vesting details of beneficiary. Note: funds should be transferred to this contract address before adding vesting details */ function addVesting( address _receiver, uint256 _startTime, uint256 _periods, uint256 _cliff, uint256 _duration, uint256 _amount ) public onlyOwner onlyNewUser(_receiver) { require(address(_receiver) != address(0), "addVesting: beneficiary is the zero address"); require(_periods > 0, "addVesting: periods is 0"); require(_duration > 0, "addVesting: duration is 0"); require(_amount > 0, "addVesting: amount is 0"); require(_startTime >= block.timestamp, "addVesting: startTime is already passed"); require(_hasVestingFunds(_amount), "addVesting: insufficient funds"); User storage vestingMap = vestingInfo[_receiver]; vestingMap.beneficiary = _receiver; vestingMap.startTime = _startTime; vestingMap.periods = _periods; vestingMap.cliff = _cliff; vestingMap.duration = _duration; vestingMap.allocated = _amount; emit TokenVested(_receiver, _amount); } /** * @dev claim vesting. */ function withdraw() public onlyExistingUser(msg.sender) { _withdraw(msg.sender); } /** * @dev revoke vesting. * After revoke is called, the eligible tokens will be transferred to beneficiary * while remaining tokens will be transferred to owners account */ function revoke(address _receiver) public onlyOwner onlyExistingUser(_receiver) { User storage vestingMap = vestingInfo[_receiver]; _withdraw(_receiver); uint256 remainingAmount = vestingMap.allocated - vestingMap.released; token.safeTransfer(owner(), remainingAmount); vestingMap.released = vestingMap.allocated; vestingMap.revoked = true; emit TokenRevoked(_receiver, address(this), remainingAmount); } function _withdraw(address _receiver) private { User storage vestingMap = vestingInfo[_receiver]; uint256 amountToWithdraw = vestingAmount(_receiver) - vestingMap.released; token.safeTransfer(_receiver, amountToWithdraw); vestingMap.released += amountToWithdraw; emit TokenReleased(_receiver, amountToWithdraw); } function _hasVestingFunds(uint256 _amount) private view returns(bool) { uint256 totalVestedAmount = _amount; for (uint8 i = 0; i < beneficiaries.length; i++) { User memory vestingMap = vestingInfo[beneficiaries[i]]; totalVestedAmount += (vestingMap.allocated - vestingMap.released); } uint256 balance = token.balanceOf(address(this)); if (balance >= totalVestedAmount) { return true; } return false; } /** * @dev calculate the vesting amount from the start. */ function vestingAmount(address _receiver) public view returns (uint256) { User memory vestingMap = vestingInfo[_receiver]; if (block.timestamp <= vestingMap.startTime) { return 0; } uint256 durationCompleted = block.timestamp - vestingMap.startTime; uint256 periodsCompleted = durationCompleted / vestingMap.duration; if(periodsCompleted >= vestingMap.periods) { return vestingMap.allocated; } return ((vestingMap.allocated * periodsCompleted) / vestingMap.periods); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenVested","type":"event"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_periods","type":"uint256"},{"internalType":"uint256","name":"_cliff","type":"uint256"},{"internalType":"uint256","name":"_duration","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addVesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"beneficiaries","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"revoke","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"vestingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vestingInfo","outputs":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"cliff","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"periods","type":"uint256"},{"internalType":"uint256","name":"allocated","type":"uint256"},{"internalType":"uint256","name":"released","type":"uint256"},{"internalType":"bool","name":"revoked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620028d2380380620028d28339818101604052810190620000379190620002ea565b620000576200004b620000b160201b60201c565b620000b960201b60201c565b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000a9816200017d60201b60201c565b5050620004a6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200018d620000b160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620001b36200029360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200020c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200020390620003f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200027f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200027690620003d5565b60405180910390fd5b6200029081620000b960201b60201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620002cd8162000472565b92915050565b600081519050620002e4816200048c565b92915050565b60008060408385031215620002fe57600080fd5b60006200030e85828601620002d3565b92505060206200032185828601620002bc565b9150509250929050565b60006200033a60268362000419565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000620003a260208362000419565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006020820190508181036000830152620003f0816200032b565b9050919050565b60006020820190508181036000830152620004128162000393565b9050919050565b600082825260208201905092915050565b6000620004378262000452565b9050919050565b60006200044b826200042a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200047d816200042a565b81146200048957600080fd5b50565b62000497816200043e565b8114620004a357600080fd5b50565b61241c80620004b66000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b146100e45780639763722914610102578063efeb5e5814610132578063f2fde38b14610162578063f78e633d1461017e57610093565b80633ccfd60b146100985780635b0d59e6146100a2578063715018a6146100be57806374a8f103146100c8575b600080fd5b6100a06101b5565b005b6100bc60048036038101906100b79190611804565b6103c8565b005b6100c6610884565b005b6100e260048036038101906100dd91906117db565b61090c565b005b6100ec610cdc565b6040516100f99190611e5a565b60405180910390f35b61011c600480360381019061011791906117db565b610d05565b604051610129919061211e565b60405180910390f35b61014c600480360381019061014791906118b6565b610e83565b6040516101599190611e5a565b60405180910390f35b61017c600480360381019061017791906117db565b610ec2565b005b610198600480360381019061019391906117db565b610fba565b6040516101ac989796959493929190611e9e565b60405180910390f35b336000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161415610326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031d9061203e565b60405180910390fd5b600015158160e00151151514610371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103689061201e565b60405180910390fd5b8060c001518160a00151116103bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b290611fbe565b60405180910390fd5b6103c43361102f565b5050565b6103d0611149565b73ffffffffffffffffffffffffffffffffffffffff166103ee610cdc565b73ffffffffffffffffffffffffffffffffffffffff1614610444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061205e565b60405180910390fd5b856000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146105b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ab90611f5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061b90611f7e565b60405180910390fd5b60008611610667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065e906120de565b60405180910390fd5b600084116106aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a190611ffe565b60405180910390fd5b600083116106ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e49061207e565b60405180910390fd5b42871015610730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072790611f3e565b60405180910390fd5b61073983611151565b610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f906120fe565b60405180910390fd5b6000600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050888160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508781600101819055508681600401819055508581600201819055508481600301819055508381600501819055508873ffffffffffffffffffffffffffffffffffffffff167f7e04575a9d5f6038ea6ee0bb1a2cfe0ae38555fddafec1dec4d69b504b72ba1885604051610871919061211e565b60405180910390a2505050505050505050565b61088c611149565b73ffffffffffffffffffffffffffffffffffffffff166108aa610cdc565b73ffffffffffffffffffffffffffffffffffffffff1614610900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f79061205e565b60405180910390fd5b61090a60006113d0565b565b610914611149565b73ffffffffffffffffffffffffffffffffffffffff16610932610cdc565b73ffffffffffffffffffffffffffffffffffffffff1614610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097f9061205e565b60405180910390fd5b806000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161415610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af09061203e565b60405180910390fd5b600015158160e00151151514610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b9061201e565b60405180910390fd5b8060c001518160a0015111610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8590611fbe565b60405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610bda8461102f565b600081600601548260050154610bf0919061224c565b9050610c46610bfd610cdc565b82600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114949092919063ffffffff16565b8160050154826006018190555060018260070160006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcee654d6181ed9db0a91636d81bb2238964fea079a5a8119b8962303774592da83604051610ccd919061211e565b60405180910390a35050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff161515151581525050905080602001514211610e17576000915050610e7e565b6000816020015142610e29919061224c565b90506000826060015182610e3d91906121c1565b905082608001518110610e59578260a001519350505050610e7e565b8260800151818460a00151610e6e91906121f2565b610e7891906121c1565b93505050505b919050565b60038181548110610e9357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610eca611149565b73ffffffffffffffffffffffffffffffffffffffff16610ee8610cdc565b73ffffffffffffffffffffffffffffffffffffffff1614610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f359061205e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590611f9e565b60405180910390fd5b610fb7816113d0565b50565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070160009054906101000a900460ff16905088565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816006015461108284610d05565b61108c919061224c565b90506110db8382600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114949092919063ffffffff16565b808260060160008282546110ef919061216b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167f9cf9e3ab58b33f06d81842ea0ad850b6640c6430d6396973312e1715792e7a918260405161113c919061211e565b60405180910390a2505050565b600033905090565b60008082905060005b6003805490508160ff1610156113025760006002600060038460ff16815481106111ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff16151515158152505090508060c001518160a001516112e1919061224c565b836112ec919061216b565b92505080806112fa90612308565b91505061115a565b506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113609190611e5a565b60206040518083038186803b15801561137857600080fd5b505afa15801561138c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b091906118df565b90508181106113c4576001925050506113cb565b6000925050505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6115158363a9059cbb60e01b84846040516024016114b3929190611e75565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061151a565b505050565b600061157c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166115e19092919063ffffffff16565b90506000815111156115dc578080602001905181019061159c919061188d565b6115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d2906120be565b60405180910390fd5b5b505050565b60606115f084846000856115f9565b90509392505050565b60608247101561163e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163590611fde565b60405180910390fd5b6116478561170d565b611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d9061209e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116af9190611e43565b60006040518083038185875af1925050503d80600081146116ec576040519150601f19603f3d011682016040523d82523d6000602084013e6116f1565b606091505b5091509150611701828286611720565b92505050949350505050565b600080823b905060008111915050919050565b6060831561173057829050611780565b6000835111156117435782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117779190611f1c565b60405180910390fd5b9392505050565b600081359050611796816123a1565b92915050565b6000815190506117ab816123b8565b92915050565b6000813590506117c0816123cf565b92915050565b6000815190506117d5816123cf565b92915050565b6000602082840312156117ed57600080fd5b60006117fb84828501611787565b91505092915050565b60008060008060008060c0878903121561181d57600080fd5b600061182b89828a01611787565b965050602061183c89828a016117b1565b955050604061184d89828a016117b1565b945050606061185e89828a016117b1565b935050608061186f89828a016117b1565b92505060a061188089828a016117b1565b9150509295509295509295565b60006020828403121561189f57600080fd5b60006118ad8482850161179c565b91505092915050565b6000602082840312156118c857600080fd5b60006118d6848285016117b1565b91505092915050565b6000602082840312156118f157600080fd5b60006118ff848285016117c6565b91505092915050565b61191181612280565b82525050565b61192081612292565b82525050565b600061193182612139565b61193b818561214f565b935061194b8185602086016122d5565b80840191505092915050565b600061196282612144565b61196c818561215a565b935061197c8185602086016122d5565b61198581612390565b840191505092915050565b600061199d60278361215a565b91507f61646456657374696e673a20737461727454696d6520697320616c726561647960008301527f20706173736564000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611a0360178361215a565b91507f52656365697665722065786973747320616c72656164790000000000000000006000830152602082019050919050565b6000611a43602b8361215a565b91507f61646456657374696e673a2062656e656669636961727920697320746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b6000611aa960268361215a565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b0f60208361215a565b91507f5468652076657374696e6720697320616c726561647920636f6d706c657465646000830152602082019050919050565b6000611b4f60268361215a565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bb560198361215a565b91507f61646456657374696e673a206475726174696f6e2069732030000000000000006000830152602082019050919050565b6000611bf560238361215a565b91507f746869732062656e656669636961727920697320616c7265616479207265766f60008301527f6b656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c5b60178361215a565b91507f526563656976657220646f6573206e6f742065786973740000000000000000006000830152602082019050919050565b6000611c9b60208361215a565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611cdb60178361215a565b91507f61646456657374696e673a20616d6f756e7420697320300000000000000000006000830152602082019050919050565b6000611d1b601d8361215a565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000611d5b602a8361215a565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000611dc160188361215a565b91507f61646456657374696e673a20706572696f6473206973203000000000000000006000830152602082019050919050565b6000611e01601e8361215a565b91507f61646456657374696e673a20696e73756666696369656e742066756e647300006000830152602082019050919050565b611e3d816122be565b82525050565b6000611e4f8284611926565b915081905092915050565b6000602082019050611e6f6000830184611908565b92915050565b6000604082019050611e8a6000830185611908565b611e976020830184611e34565b9392505050565b600061010082019050611eb4600083018b611908565b611ec1602083018a611e34565b611ece6040830189611e34565b611edb6060830188611e34565b611ee86080830187611e34565b611ef560a0830186611e34565b611f0260c0830185611e34565b611f0f60e0830184611917565b9998505050505050505050565b60006020820190508181036000830152611f368184611957565b905092915050565b60006020820190508181036000830152611f5781611990565b9050919050565b60006020820190508181036000830152611f77816119f6565b9050919050565b60006020820190508181036000830152611f9781611a36565b9050919050565b60006020820190508181036000830152611fb781611a9c565b9050919050565b60006020820190508181036000830152611fd781611b02565b9050919050565b60006020820190508181036000830152611ff781611b42565b9050919050565b6000602082019050818103600083015261201781611ba8565b9050919050565b6000602082019050818103600083015261203781611be8565b9050919050565b6000602082019050818103600083015261205781611c4e565b9050919050565b6000602082019050818103600083015261207781611c8e565b9050919050565b6000602082019050818103600083015261209781611cce565b9050919050565b600060208201905081810360008301526120b781611d0e565b9050919050565b600060208201905081810360008301526120d781611d4e565b9050919050565b600060208201905081810360008301526120f781611db4565b9050919050565b6000602082019050818103600083015261211781611df4565b9050919050565b60006020820190506121336000830184611e34565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000612176826122be565b9150612181836122be565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156121b6576121b5612332565b5b828201905092915050565b60006121cc826122be565b91506121d7836122be565b9250826121e7576121e6612361565b5b828204905092915050565b60006121fd826122be565b9150612208836122be565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561224157612240612332565b5b828202905092915050565b6000612257826122be565b9150612262836122be565b92508282101561227557612274612332565b5b828203905092915050565b600061228b8261229e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156122f35780820151818401526020810190506122d8565b83811115612302576000848401525b50505050565b6000612313826122c8565b915060ff82141561232757612326612332565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b6123aa81612280565b81146123b557600080fd5b50565b6123c181612292565b81146123cc57600080fd5b50565b6123d8816122be565b81146123e357600080fd5b5056fea2646970667358221220d9208faa179e5edb6d0bf5035e2e6b1395cc31aa8fb2469a0a6635ab19bbcbce64736f6c634300080000330000000000000000000000002d03bece6747adc00e1a131bba1469c15fd11e03000000000000000000000000fcafd61df30886b8fbec3195118e1edf1f30f545
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b146100e45780639763722914610102578063efeb5e5814610132578063f2fde38b14610162578063f78e633d1461017e57610093565b80633ccfd60b146100985780635b0d59e6146100a2578063715018a6146100be57806374a8f103146100c8575b600080fd5b6100a06101b5565b005b6100bc60048036038101906100b79190611804565b6103c8565b005b6100c6610884565b005b6100e260048036038101906100dd91906117db565b61090c565b005b6100ec610cdc565b6040516100f99190611e5a565b60405180910390f35b61011c600480360381019061011791906117db565b610d05565b604051610129919061211e565b60405180910390f35b61014c600480360381019061014791906118b6565b610e83565b6040516101599190611e5a565b60405180910390f35b61017c600480360381019061017791906117db565b610ec2565b005b610198600480360381019061019391906117db565b610fba565b6040516101ac989796959493929190611e9e565b60405180910390f35b336000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161415610326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031d9061203e565b60405180910390fd5b600015158160e00151151514610371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103689061201e565b60405180910390fd5b8060c001518160a00151116103bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b290611fbe565b60405180910390fd5b6103c43361102f565b5050565b6103d0611149565b73ffffffffffffffffffffffffffffffffffffffff166103ee610cdc565b73ffffffffffffffffffffffffffffffffffffffff1614610444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b9061205e565b60405180910390fd5b856000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146105b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ab90611f5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061b90611f7e565b60405180910390fd5b60008611610667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065e906120de565b60405180910390fd5b600084116106aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a190611ffe565b60405180910390fd5b600083116106ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e49061207e565b60405180910390fd5b42871015610730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072790611f3e565b60405180910390fd5b61073983611151565b610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f906120fe565b60405180910390fd5b6000600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050888160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508781600101819055508681600401819055508581600201819055508481600301819055508381600501819055508873ffffffffffffffffffffffffffffffffffffffff167f7e04575a9d5f6038ea6ee0bb1a2cfe0ae38555fddafec1dec4d69b504b72ba1885604051610871919061211e565b60405180910390a2505050505050505050565b61088c611149565b73ffffffffffffffffffffffffffffffffffffffff166108aa610cdc565b73ffffffffffffffffffffffffffffffffffffffff1614610900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f79061205e565b60405180910390fd5b61090a60006113d0565b565b610914611149565b73ffffffffffffffffffffffffffffffffffffffff16610932610cdc565b73ffffffffffffffffffffffffffffffffffffffff1614610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097f9061205e565b60405180910390fd5b806000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161415610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af09061203e565b60405180910390fd5b600015158160e00151151514610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b9061201e565b60405180910390fd5b8060c001518160a0015111610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8590611fbe565b60405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610bda8461102f565b600081600601548260050154610bf0919061224c565b9050610c46610bfd610cdc565b82600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114949092919063ffffffff16565b8160050154826006018190555060018260070160006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcee654d6181ed9db0a91636d81bb2238964fea079a5a8119b8962303774592da83604051610ccd919061211e565b60405180910390a35050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff161515151581525050905080602001514211610e17576000915050610e7e565b6000816020015142610e29919061224c565b90506000826060015182610e3d91906121c1565b905082608001518110610e59578260a001519350505050610e7e565b8260800151818460a00151610e6e91906121f2565b610e7891906121c1565b93505050505b919050565b60038181548110610e9357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610eca611149565b73ffffffffffffffffffffffffffffffffffffffff16610ee8610cdc565b73ffffffffffffffffffffffffffffffffffffffff1614610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f359061205e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590611f9e565b60405180910390fd5b610fb7816113d0565b50565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070160009054906101000a900460ff16905088565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816006015461108284610d05565b61108c919061224c565b90506110db8382600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114949092919063ffffffff16565b808260060160008282546110ef919061216b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167f9cf9e3ab58b33f06d81842ea0ad850b6640c6430d6396973312e1715792e7a918260405161113c919061211e565b60405180910390a2505050565b600033905090565b60008082905060005b6003805490508160ff1610156113025760006002600060038460ff16815481106111ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff16151515158152505090508060c001518160a001516112e1919061224c565b836112ec919061216b565b92505080806112fa90612308565b91505061115a565b506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113609190611e5a565b60206040518083038186803b15801561137857600080fd5b505afa15801561138c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b091906118df565b90508181106113c4576001925050506113cb565b6000925050505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6115158363a9059cbb60e01b84846040516024016114b3929190611e75565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061151a565b505050565b600061157c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166115e19092919063ffffffff16565b90506000815111156115dc578080602001905181019061159c919061188d565b6115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d2906120be565b60405180910390fd5b5b505050565b60606115f084846000856115f9565b90509392505050565b60608247101561163e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163590611fde565b60405180910390fd5b6116478561170d565b611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d9061209e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116af9190611e43565b60006040518083038185875af1925050503d80600081146116ec576040519150601f19603f3d011682016040523d82523d6000602084013e6116f1565b606091505b5091509150611701828286611720565b92505050949350505050565b600080823b905060008111915050919050565b6060831561173057829050611780565b6000835111156117435782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117779190611f1c565b60405180910390fd5b9392505050565b600081359050611796816123a1565b92915050565b6000815190506117ab816123b8565b92915050565b6000813590506117c0816123cf565b92915050565b6000815190506117d5816123cf565b92915050565b6000602082840312156117ed57600080fd5b60006117fb84828501611787565b91505092915050565b60008060008060008060c0878903121561181d57600080fd5b600061182b89828a01611787565b965050602061183c89828a016117b1565b955050604061184d89828a016117b1565b945050606061185e89828a016117b1565b935050608061186f89828a016117b1565b92505060a061188089828a016117b1565b9150509295509295509295565b60006020828403121561189f57600080fd5b60006118ad8482850161179c565b91505092915050565b6000602082840312156118c857600080fd5b60006118d6848285016117b1565b91505092915050565b6000602082840312156118f157600080fd5b60006118ff848285016117c6565b91505092915050565b61191181612280565b82525050565b61192081612292565b82525050565b600061193182612139565b61193b818561214f565b935061194b8185602086016122d5565b80840191505092915050565b600061196282612144565b61196c818561215a565b935061197c8185602086016122d5565b61198581612390565b840191505092915050565b600061199d60278361215a565b91507f61646456657374696e673a20737461727454696d6520697320616c726561647960008301527f20706173736564000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611a0360178361215a565b91507f52656365697665722065786973747320616c72656164790000000000000000006000830152602082019050919050565b6000611a43602b8361215a565b91507f61646456657374696e673a2062656e656669636961727920697320746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b6000611aa960268361215a565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b0f60208361215a565b91507f5468652076657374696e6720697320616c726561647920636f6d706c657465646000830152602082019050919050565b6000611b4f60268361215a565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bb560198361215a565b91507f61646456657374696e673a206475726174696f6e2069732030000000000000006000830152602082019050919050565b6000611bf560238361215a565b91507f746869732062656e656669636961727920697320616c7265616479207265766f60008301527f6b656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c5b60178361215a565b91507f526563656976657220646f6573206e6f742065786973740000000000000000006000830152602082019050919050565b6000611c9b60208361215a565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611cdb60178361215a565b91507f61646456657374696e673a20616d6f756e7420697320300000000000000000006000830152602082019050919050565b6000611d1b601d8361215a565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000611d5b602a8361215a565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000611dc160188361215a565b91507f61646456657374696e673a20706572696f6473206973203000000000000000006000830152602082019050919050565b6000611e01601e8361215a565b91507f61646456657374696e673a20696e73756666696369656e742066756e647300006000830152602082019050919050565b611e3d816122be565b82525050565b6000611e4f8284611926565b915081905092915050565b6000602082019050611e6f6000830184611908565b92915050565b6000604082019050611e8a6000830185611908565b611e976020830184611e34565b9392505050565b600061010082019050611eb4600083018b611908565b611ec1602083018a611e34565b611ece6040830189611e34565b611edb6060830188611e34565b611ee86080830187611e34565b611ef560a0830186611e34565b611f0260c0830185611e34565b611f0f60e0830184611917565b9998505050505050505050565b60006020820190508181036000830152611f368184611957565b905092915050565b60006020820190508181036000830152611f5781611990565b9050919050565b60006020820190508181036000830152611f77816119f6565b9050919050565b60006020820190508181036000830152611f9781611a36565b9050919050565b60006020820190508181036000830152611fb781611a9c565b9050919050565b60006020820190508181036000830152611fd781611b02565b9050919050565b60006020820190508181036000830152611ff781611b42565b9050919050565b6000602082019050818103600083015261201781611ba8565b9050919050565b6000602082019050818103600083015261203781611be8565b9050919050565b6000602082019050818103600083015261205781611c4e565b9050919050565b6000602082019050818103600083015261207781611c8e565b9050919050565b6000602082019050818103600083015261209781611cce565b9050919050565b600060208201905081810360008301526120b781611d0e565b9050919050565b600060208201905081810360008301526120d781611d4e565b9050919050565b600060208201905081810360008301526120f781611db4565b9050919050565b6000602082019050818103600083015261211781611df4565b9050919050565b60006020820190506121336000830184611e34565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000612176826122be565b9150612181836122be565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156121b6576121b5612332565b5b828201905092915050565b60006121cc826122be565b91506121d7836122be565b9250826121e7576121e6612361565b5b828204905092915050565b60006121fd826122be565b9150612208836122be565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561224157612240612332565b5b828202905092915050565b6000612257826122be565b9150612262836122be565b92508282101561227557612274612332565b5b828203905092915050565b600061228b8261229e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156122f35780820151818401526020810190506122d8565b83811115612302576000848401525b50505050565b6000612313826122c8565b915060ff82141561232757612326612332565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b6123aa81612280565b81146123b557600080fd5b50565b6123c181612292565b81146123cc57600080fd5b50565b6123d8816122be565b81146123e357600080fd5b5056fea2646970667358221220d9208faa179e5edb6d0bf5035e2e6b1395cc31aa8fb2469a0a6635ab19bbcbce64736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002d03bece6747adc00e1a131bba1469c15fd11e03000000000000000000000000fcafd61df30886b8fbec3195118e1edf1f30f545
-----Decoded View---------------
Arg [0] : _token (address): 0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03
Arg [1] : _owner (address): 0xfCAFD61dF30886B8fBEc3195118e1EDF1f30F545
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000002d03bece6747adc00e1a131bba1469c15fd11e03
Arg [1] : 000000000000000000000000fcafd61df30886b8fbec3195118e1edf1f30f545
Deployed Bytecode Sourcemap
18152:4864:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20938:87;;;:::i;:::-;;19971:916;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17452:94;;;:::i;:::-;;21227:427;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16801:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22511:502;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19124:30;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17701:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19077:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;20938:87;20982:10;19210:22;19235:11;:22;19247:9;19235:22;;;;;;;;;;;;;;;19210:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19304:1;19270:36;;:10;:22;;;:36;;;;19262:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;19369:5;19347:27;;:10;:18;;;:27;;;19339:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19450:10;:19;;;19427:10;:20;;;:42;19419:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;20999:21:::1;21009:10;20999:9;:21::i;:::-;20938:87:::0;;:::o;19971:916::-;17032:12;:10;:12::i;:::-;17021:23;;:7;:5;:7::i;:::-;:23;;;17013:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20151:9:::1;19567:22;19592:11;:22;19604:9;19592:22;;;;;;;;;;;;;;;19567:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;19661:1;19627:36;;:10;:22;;;:36;;;19619:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;20205:1:::2;20175:32;;20183:9;20175:32;;;;20167:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;20279:1;20268:8;:12;20260:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20334:1;20322:9;:13;20314:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;20388:1;20378:7;:11;20370:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;20444:15;20430:10;:29;;20422:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;20516:25;20533:7;20516:16;:25::i;:::-;20508:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20581:23;20607:11;:22;20619:9;20607:22;;;;;;;;;;;;;;;20581:48;;20659:9;20634:10;:22;;;:34;;;;;;;;;;;;;;;;;;20696:10;20673;:20;;:33;;;;20732:8;20711:10;:18;;:29;;;;20764:6;20745:10;:16;;:25;;;;20797:9;20775:10;:19;;:31;;;;20834:7;20811:10;:20;;:30;;;;20863:9;20851:31;;;20874:7;20851:31;;;;;;:::i;:::-;;;;;;;;19696:1;17092::::1;;19971:916:::0;;;;;;:::o;17452:94::-;17032:12;:10;:12::i;:::-;17021:23;;:7;:5;:7::i;:::-;:23;;;17013:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17517:21:::1;17535:1;17517:9;:21::i;:::-;17452:94::o:0;21227:427::-;17032:12;:10;:12::i;:::-;17021:23;;:7;:5;:7::i;:::-;:23;;;17013:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21296:9:::1;19210:22;19235:11;:22;19247:9;19235:22;;;;;;;;;;;;;;;19210:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;19304:1;19270:36;;:10;:22;;;:36;;;;19262:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;19369:5;19347:27;;:10;:18;;;:27;;;19339:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19450:10;:19;;;19427:10;:20;;;:42;19419:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;21312:23:::2;21338:11;:22;21350:9;21338:22;;;;;;;;;;;;;;;21312:48;;21365:20;21375:9;21365;:20::i;:::-;21390:23;21439:10;:19;;;21416:10;:20;;;:42;;;;:::i;:::-;21390:68;;21463:44;21482:7;:5;:7::i;:::-;21491:15;21463:5;;;;;;;;;;;:18;;;;:44;;;;;:::i;:::-;21534:10;:20;;;21512:10;:19;;:42;;;;21580:4;21559:10;:18;;;:25;;;;;;;;;;;;;;;;;;21626:4;21594:55;;21607:9;21594:55;;;21633:15;21594:55;;;;;;:::i;:::-;;;;;;;;19511:1;;17092::::1;;21227:427:::0;:::o;16801:87::-;16847:7;16874:6;;;;;;;;;;;16867:13;;16801:87;:::o;22511:502::-;22574:7;22588:22;22613:11;:22;22625:9;22613:22;;;;;;;;;;;;;;;22588:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22663:10;:20;;;22644:15;:39;22640:65;;22698:1;22691:8;;;;;22640:65;22709:25;22755:10;:20;;;22737:15;:38;;;;:::i;:::-;22709:66;;22780:24;22827:10;:19;;;22807:17;:39;;;;:::i;:::-;22780:66;;22874:10;:18;;;22854:16;:38;22851:82;;22907:10;:20;;;22900:27;;;;;;;22851:82;22989:10;:18;;;22969:16;22946:10;:20;;;:39;;;;:::i;:::-;22945:62;;;;:::i;:::-;22937:71;;;;;22511:502;;;;:::o;19124:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17701:192::-;17032:12;:10;:12::i;:::-;17021:23;;:7;:5;:7::i;:::-;:23;;;17013:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17810:1:::1;17790:22;;:8;:22;;;;17782:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17866:19;17876:8;17866:9;:19::i;:::-;17701:192:::0;:::o;19077:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21659:330::-;21710:23;21736:11;:22;21748:9;21736:22;;;;;;;;;;;;;;;21710:48;;21763:24;21817:10;:19;;;21790:24;21804:9;21790:13;:24::i;:::-;:46;;;;:::i;:::-;21763:73;;21841:47;21860:9;21871:16;21841:5;;;;;;;;;;;:18;;;;:47;;;;;:::i;:::-;21916:16;21893:10;:19;;;:39;;;;;;;:::i;:::-;;;;;;;;21956:9;21942:42;;;21967:16;21942:42;;;;;;:::i;:::-;;;;;;;;21659:330;;;:::o;15575:98::-;15628:7;15655:10;15648:17;;15575:98;:::o;21994:436::-;22058:4;22069:25;22097:7;22069:35;;22114:7;22109:186;22131:13;:20;;;;22127:1;:24;;;22109:186;;;22164:22;22189:11;:29;22201:13;22215:1;22201:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22189:29;;;;;;;;;;;;;;;22164:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22269:10;:19;;;22246:10;:20;;;:42;;;;:::i;:::-;22224:65;;;;;:::i;:::-;;;22109:186;22153:3;;;;;:::i;:::-;;;;22109:186;;;;22299:15;22317:5;;;;;;;;;;;:15;;;22341:4;22317:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22299:48;;22367:17;22356:7;:28;22352:57;;22399:4;22392:11;;;;;;22352:57;22420:5;22413:12;;;;21994:436;;;;:::o;17901:173::-;17957:16;17976:6;;;;;;;;;;;17957:25;;18002:8;17993:6;;:17;;;;;;;;;;;;;;;;;;18057:8;18026:40;;18047:8;18026:40;;;;;;;;;;;;17901:173;;:::o;11638:211::-;11755:86;11775:5;11805:23;;;11830:2;11834:5;11782:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11755:19;:86::i;:::-;11638:211;;;:::o;14211:716::-;14635:23;14661:69;14689:4;14661:69;;;;;;;;;;;;;;;;;14669:5;14661:27;;;;:69;;;;;:::i;:::-;14635:95;;14765:1;14745:10;:17;:21;14741:179;;;14842:10;14831:30;;;;;;;;;;;;:::i;:::-;14823:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14741:179;14211:716;;;:::o;6470:229::-;6607:12;6639:52;6661:6;6669:4;6675:1;6678:12;6639:21;:52::i;:::-;6632:59;;6470:229;;;;;:::o;7590:510::-;7760:12;7818:5;7793:21;:30;;7785:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;7885:18;7896:6;7885:10;:18::i;:::-;7877:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7951:12;7965:23;7992:6;:11;;8011:5;8018:4;7992:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7950:73;;;;8041:51;8058:7;8067:10;8079:12;8041:16;:51::i;:::-;8034:58;;;;7590:510;;;;;;:::o;3664:387::-;3724:4;3932:12;3999:7;3987:20;3979:28;;4042:1;4035:4;:8;4028:15;;;3664:387;;;:::o;10276:712::-;10426:12;10455:7;10451:530;;;10486:10;10479:17;;;;10451:530;10620:1;10600:10;:17;:21;10596:374;;;10798:10;10792:17;10859:15;10846:10;10842:2;10838:19;10831:44;10746:148;10941:12;10934:20;;;;;;;;;;;:::i;:::-;;;;;;;;10276:712;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:137::-;;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;212:77;;;;:::o;295:139::-;;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;347:87;;;;:::o;440:143::-;;528:6;522:13;513:22;;544:33;571:5;544:33;:::i;:::-;503:80;;;;:::o;589:262::-;;697:2;685:9;676:7;672:23;668:32;665:2;;;713:1;710;703:12;665:2;756:1;781:53;826:7;817:6;806:9;802:22;781:53;:::i;:::-;771:63;;727:117;655:196;;;;:::o;857:990::-;;;;;;;1050:3;1038:9;1029:7;1025:23;1021:33;1018:2;;;1067:1;1064;1057:12;1018:2;1110:1;1135:53;1180:7;1171:6;1160:9;1156:22;1135:53;:::i;:::-;1125:63;;1081:117;1237:2;1263:53;1308:7;1299:6;1288:9;1284:22;1263:53;:::i;:::-;1253:63;;1208:118;1365:2;1391:53;1436:7;1427:6;1416:9;1412:22;1391:53;:::i;:::-;1381:63;;1336:118;1493:2;1519:53;1564:7;1555:6;1544:9;1540:22;1519:53;:::i;:::-;1509:63;;1464:118;1621:3;1648:53;1693:7;1684:6;1673:9;1669:22;1648:53;:::i;:::-;1638:63;;1592:119;1750:3;1777:53;1822:7;1813:6;1802:9;1798:22;1777:53;:::i;:::-;1767:63;;1721:119;1008:839;;;;;;;;:::o;1853:278::-;;1969:2;1957:9;1948:7;1944:23;1940:32;1937:2;;;1985:1;1982;1975:12;1937:2;2028:1;2053:61;2106:7;2097:6;2086:9;2082:22;2053:61;:::i;:::-;2043:71;;1999:125;1927:204;;;;:::o;2137:262::-;;2245:2;2233:9;2224:7;2220:23;2216:32;2213:2;;;2261:1;2258;2251:12;2213:2;2304:1;2329:53;2374:7;2365:6;2354:9;2350:22;2329:53;:::i;:::-;2319:63;;2275:117;2203:196;;;;:::o;2405:284::-;;2524:2;2512:9;2503:7;2499:23;2495:32;2492:2;;;2540:1;2537;2530:12;2492:2;2583:1;2608:64;2664:7;2655:6;2644:9;2640:22;2608:64;:::i;:::-;2598:74;;2554:128;2482:207;;;;:::o;2695:118::-;2782:24;2800:5;2782:24;:::i;:::-;2777:3;2770:37;2760:53;;:::o;2819:109::-;2900:21;2915:5;2900:21;:::i;:::-;2895:3;2888:34;2878:50;;:::o;2934:373::-;;3066:38;3098:5;3066:38;:::i;:::-;3120:88;3201:6;3196:3;3120:88;:::i;:::-;3113:95;;3217:52;3262:6;3257:3;3250:4;3243:5;3239:16;3217:52;:::i;:::-;3294:6;3289:3;3285:16;3278:23;;3042:265;;;;;:::o;3313:364::-;;3429:39;3462:5;3429:39;:::i;:::-;3484:71;3548:6;3543:3;3484:71;:::i;:::-;3477:78;;3564:52;3609:6;3604:3;3597:4;3590:5;3586:16;3564:52;:::i;:::-;3641:29;3663:6;3641:29;:::i;:::-;3636:3;3632:39;3625:46;;3405:272;;;;;:::o;3683:371::-;;3846:67;3910:2;3905:3;3846:67;:::i;:::-;3839:74;;3943:34;3939:1;3934:3;3930:11;3923:55;4009:9;4004:2;3999:3;3995:12;3988:31;4045:2;4040:3;4036:12;4029:19;;3829:225;;;:::o;4060:321::-;;4223:67;4287:2;4282:3;4223:67;:::i;:::-;4216:74;;4320:25;4316:1;4311:3;4307:11;4300:46;4372:2;4367:3;4363:12;4356:19;;4206:175;;;:::o;4387:375::-;;4550:67;4614:2;4609:3;4550:67;:::i;:::-;4543:74;;4647:34;4643:1;4638:3;4634:11;4627:55;4713:13;4708:2;4703:3;4699:12;4692:35;4753:2;4748:3;4744:12;4737:19;;4533:229;;;:::o;4768:370::-;;4931:67;4995:2;4990:3;4931:67;:::i;:::-;4924:74;;5028:34;5024:1;5019:3;5015:11;5008:55;5094:8;5089:2;5084:3;5080:12;5073:30;5129:2;5124:3;5120:12;5113:19;;4914:224;;;:::o;5144:330::-;;5307:67;5371:2;5366:3;5307:67;:::i;:::-;5300:74;;5404:34;5400:1;5395:3;5391:11;5384:55;5465:2;5460:3;5456:12;5449:19;;5290:184;;;:::o;5480:370::-;;5643:67;5707:2;5702:3;5643:67;:::i;:::-;5636:74;;5740:34;5736:1;5731:3;5727:11;5720:55;5806:8;5801:2;5796:3;5792:12;5785:30;5841:2;5836:3;5832:12;5825:19;;5626:224;;;:::o;5856:323::-;;6019:67;6083:2;6078:3;6019:67;:::i;:::-;6012:74;;6116:27;6112:1;6107:3;6103:11;6096:48;6170:2;6165:3;6161:12;6154:19;;6002:177;;;:::o;6185:367::-;;6348:67;6412:2;6407:3;6348:67;:::i;:::-;6341:74;;6445:34;6441:1;6436:3;6432:11;6425:55;6511:5;6506:2;6501:3;6497:12;6490:27;6543:2;6538:3;6534:12;6527:19;;6331:221;;;:::o;6558:321::-;;6721:67;6785:2;6780:3;6721:67;:::i;:::-;6714:74;;6818:25;6814:1;6809:3;6805:11;6798:46;6870:2;6865:3;6861:12;6854:19;;6704:175;;;:::o;6885:330::-;;7048:67;7112:2;7107:3;7048:67;:::i;:::-;7041:74;;7145:34;7141:1;7136:3;7132:11;7125:55;7206:2;7201:3;7197:12;7190:19;;7031:184;;;:::o;7221:321::-;;7384:67;7448:2;7443:3;7384:67;:::i;:::-;7377:74;;7481:25;7477:1;7472:3;7468:11;7461:46;7533:2;7528:3;7524:12;7517:19;;7367:175;;;:::o;7548:327::-;;7711:67;7775:2;7770:3;7711:67;:::i;:::-;7704:74;;7808:31;7804:1;7799:3;7795:11;7788:52;7866:2;7861:3;7857:12;7850:19;;7694:181;;;:::o;7881:374::-;;8044:67;8108:2;8103:3;8044:67;:::i;:::-;8037:74;;8141:34;8137:1;8132:3;8128:11;8121:55;8207:12;8202:2;8197:3;8193:12;8186:34;8246:2;8241:3;8237:12;8230:19;;8027:228;;;:::o;8261:322::-;;8424:67;8488:2;8483:3;8424:67;:::i;:::-;8417:74;;8521:26;8517:1;8512:3;8508:11;8501:47;8574:2;8569:3;8565:12;8558:19;;8407:176;;;:::o;8589:328::-;;8752:67;8816:2;8811:3;8752:67;:::i;:::-;8745:74;;8849:32;8845:1;8840:3;8836:11;8829:53;8908:2;8903:3;8899:12;8892:19;;8735:182;;;:::o;8923:118::-;9010:24;9028:5;9010:24;:::i;:::-;9005:3;8998:37;8988:53;;:::o;9047:271::-;;9199:93;9288:3;9279:6;9199:93;:::i;:::-;9192:100;;9309:3;9302:10;;9181:137;;;;:::o;9324:222::-;;9455:2;9444:9;9440:18;9432:26;;9468:71;9536:1;9525:9;9521:17;9512:6;9468:71;:::i;:::-;9422:124;;;;:::o;9552:332::-;;9711:2;9700:9;9696:18;9688:26;;9724:71;9792:1;9781:9;9777:17;9768:6;9724:71;:::i;:::-;9805:72;9873:2;9862:9;9858:18;9849:6;9805:72;:::i;:::-;9678:206;;;;;:::o;9890:985::-;;10211:3;10200:9;10196:19;10188:27;;10225:71;10293:1;10282:9;10278:17;10269:6;10225:71;:::i;:::-;10306:72;10374:2;10363:9;10359:18;10350:6;10306:72;:::i;:::-;10388;10456:2;10445:9;10441:18;10432:6;10388:72;:::i;:::-;10470;10538:2;10527:9;10523:18;10514:6;10470:72;:::i;:::-;10552:73;10620:3;10609:9;10605:19;10596:6;10552:73;:::i;:::-;10635;10703:3;10692:9;10688:19;10679:6;10635:73;:::i;:::-;10718;10786:3;10775:9;10771:19;10762:6;10718:73;:::i;:::-;10801:67;10863:3;10852:9;10848:19;10839:6;10801:67;:::i;:::-;10178:697;;;;;;;;;;;:::o;10881:313::-;;11032:2;11021:9;11017:18;11009:26;;11081:9;11075:4;11071:20;11067:1;11056:9;11052:17;11045:47;11109:78;11182:4;11173:6;11109:78;:::i;:::-;11101:86;;10999:195;;;;:::o;11200:419::-;;11404:2;11393:9;11389:18;11381:26;;11453:9;11447:4;11443:20;11439:1;11428:9;11424:17;11417:47;11481:131;11607:4;11481:131;:::i;:::-;11473:139;;11371:248;;;:::o;11625:419::-;;11829:2;11818:9;11814:18;11806:26;;11878:9;11872:4;11868:20;11864:1;11853:9;11849:17;11842:47;11906:131;12032:4;11906:131;:::i;:::-;11898:139;;11796:248;;;:::o;12050:419::-;;12254:2;12243:9;12239:18;12231:26;;12303:9;12297:4;12293:20;12289:1;12278:9;12274:17;12267:47;12331:131;12457:4;12331:131;:::i;:::-;12323:139;;12221:248;;;:::o;12475:419::-;;12679:2;12668:9;12664:18;12656:26;;12728:9;12722:4;12718:20;12714:1;12703:9;12699:17;12692:47;12756:131;12882:4;12756:131;:::i;:::-;12748:139;;12646:248;;;:::o;12900:419::-;;13104:2;13093:9;13089:18;13081:26;;13153:9;13147:4;13143:20;13139:1;13128:9;13124:17;13117:47;13181:131;13307:4;13181:131;:::i;:::-;13173:139;;13071:248;;;:::o;13325:419::-;;13529:2;13518:9;13514:18;13506:26;;13578:9;13572:4;13568:20;13564:1;13553:9;13549:17;13542:47;13606:131;13732:4;13606:131;:::i;:::-;13598:139;;13496:248;;;:::o;13750:419::-;;13954:2;13943:9;13939:18;13931:26;;14003:9;13997:4;13993:20;13989:1;13978:9;13974:17;13967:47;14031:131;14157:4;14031:131;:::i;:::-;14023:139;;13921:248;;;:::o;14175:419::-;;14379:2;14368:9;14364:18;14356:26;;14428:9;14422:4;14418:20;14414:1;14403:9;14399:17;14392:47;14456:131;14582:4;14456:131;:::i;:::-;14448:139;;14346:248;;;:::o;14600:419::-;;14804:2;14793:9;14789:18;14781:26;;14853:9;14847:4;14843:20;14839:1;14828:9;14824:17;14817:47;14881:131;15007:4;14881:131;:::i;:::-;14873:139;;14771:248;;;:::o;15025:419::-;;15229:2;15218:9;15214:18;15206:26;;15278:9;15272:4;15268:20;15264:1;15253:9;15249:17;15242:47;15306:131;15432:4;15306:131;:::i;:::-;15298:139;;15196:248;;;:::o;15450:419::-;;15654:2;15643:9;15639:18;15631:26;;15703:9;15697:4;15693:20;15689:1;15678:9;15674:17;15667:47;15731:131;15857:4;15731:131;:::i;:::-;15723:139;;15621:248;;;:::o;15875:419::-;;16079:2;16068:9;16064:18;16056:26;;16128:9;16122:4;16118:20;16114:1;16103:9;16099:17;16092:47;16156:131;16282:4;16156:131;:::i;:::-;16148:139;;16046:248;;;:::o;16300:419::-;;16504:2;16493:9;16489:18;16481:26;;16553:9;16547:4;16543:20;16539:1;16528:9;16524:17;16517:47;16581:131;16707:4;16581:131;:::i;:::-;16573:139;;16471:248;;;:::o;16725:419::-;;16929:2;16918:9;16914:18;16906:26;;16978:9;16972:4;16968:20;16964:1;16953:9;16949:17;16942:47;17006:131;17132:4;17006:131;:::i;:::-;16998:139;;16896:248;;;:::o;17150:419::-;;17354:2;17343:9;17339:18;17331:26;;17403:9;17397:4;17393:20;17389:1;17378:9;17374:17;17367:47;17431:131;17557:4;17431:131;:::i;:::-;17423:139;;17321:248;;;:::o;17575:222::-;;17706:2;17695:9;17691:18;17683:26;;17719:71;17787:1;17776:9;17772:17;17763:6;17719:71;:::i;:::-;17673:124;;;;:::o;17803:98::-;;17888:5;17882:12;17872:22;;17861:40;;;:::o;17907:99::-;;17993:5;17987:12;17977:22;;17966:40;;;:::o;18012:147::-;;18150:3;18135:18;;18125:34;;;;:::o;18165:169::-;;18283:6;18278:3;18271:19;18323:4;18318:3;18314:14;18299:29;;18261:73;;;;:::o;18340:305::-;;18399:20;18417:1;18399:20;:::i;:::-;18394:25;;18433:20;18451:1;18433:20;:::i;:::-;18428:25;;18587:1;18519:66;18515:74;18512:1;18509:81;18506:2;;;18593:18;;:::i;:::-;18506:2;18637:1;18634;18630:9;18623:16;;18384:261;;;;:::o;18651:185::-;;18708:20;18726:1;18708:20;:::i;:::-;18703:25;;18742:20;18760:1;18742:20;:::i;:::-;18737:25;;18781:1;18771:2;;18786:18;;:::i;:::-;18771:2;18828:1;18825;18821:9;18816:14;;18693:143;;;;:::o;18842:348::-;;18905:20;18923:1;18905:20;:::i;:::-;18900:25;;18939:20;18957:1;18939:20;:::i;:::-;18934:25;;19127:1;19059:66;19055:74;19052:1;19049:81;19044:1;19037:9;19030:17;19026:105;19023:2;;;19134:18;;:::i;:::-;19023:2;19182:1;19179;19175:9;19164:20;;18890:300;;;;:::o;19196:191::-;;19256:20;19274:1;19256:20;:::i;:::-;19251:25;;19290:20;19308:1;19290:20;:::i;:::-;19285:25;;19329:1;19326;19323:8;19320:2;;;19334:18;;:::i;:::-;19320:2;19379:1;19376;19372:9;19364:17;;19241:146;;;;:::o;19393:96::-;;19459:24;19477:5;19459:24;:::i;:::-;19448:35;;19438:51;;;:::o;19495:90::-;;19572:5;19565:13;19558:21;19547:32;;19537:48;;;:::o;19591:126::-;;19668:42;19661:5;19657:54;19646:65;;19636:81;;;:::o;19723:77::-;;19789:5;19778:16;;19768:32;;;:::o;19806:86::-;;19881:4;19874:5;19870:16;19859:27;;19849:43;;;:::o;19898:307::-;19966:1;19976:113;19990:6;19987:1;19984:13;19976:113;;;20075:1;20070:3;20066:11;20060:18;20056:1;20051:3;20047:11;20040:39;20012:2;20009:1;20005:10;20000:15;;19976:113;;;20107:6;20104:1;20101:13;20098:2;;;20187:1;20178:6;20173:3;20169:16;20162:27;20098:2;19947:258;;;;:::o;20211:167::-;;20271:22;20287:5;20271:22;:::i;:::-;20262:31;;20315:4;20308:5;20305:15;20302:2;;;20323:18;;:::i;:::-;20302:2;20370:1;20363:5;20359:13;20352:20;;20252:126;;;:::o;20384:180::-;20432:77;20429:1;20422:88;20529:4;20526:1;20519:15;20553:4;20550:1;20543:15;20570:180;20618:77;20615:1;20608:88;20715:4;20712:1;20705:15;20739:4;20736:1;20729:15;20756:102;;20848:2;20844:7;20839:2;20832:5;20828:14;20824:28;20814:38;;20804:54;;;:::o;20864:122::-;20937:24;20955:5;20937:24;:::i;:::-;20930:5;20927:35;20917:2;;20976:1;20973;20966:12;20917:2;20907:79;:::o;20992:116::-;21062:21;21077:5;21062:21;:::i;:::-;21055:5;21052:32;21042:2;;21098:1;21095;21088:12;21042:2;21032:76;:::o;21114:122::-;21187:24;21205:5;21187:24;:::i;:::-;21180:5;21177:35;21167:2;;21226:1;21223;21216:12;21167:2;21157:79;:::o
Swarm Source
ipfs://d9208faa179e5edb6d0bf5035e2e6b1395cc31aa8fb2469a0a6635ab19bbcbce
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
CRONOS | 100.00% | $0.000002 | 18,960,044,490,075.3 | $43,797,702.77 |
[ 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.