Source Code
Latest 25 from a total of 167 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Re Fund Token | 14111416 | 1491 days ago | IN | 0 ETH | 0.00767449 | ||||
| Update Re Fund A... | 14111387 | 1491 days ago | IN | 0 ETH | 0.00277102 | ||||
| Re Fund Token | 11867596 | 1839 days ago | IN | 0 ETH | 0.00748446 | ||||
| Re Fund Token | 11867365 | 1840 days ago | IN | 0 ETH | 0.00600129 | ||||
| Update Re Fund A... | 11867318 | 1840 days ago | IN | 0 ETH | 0.00396365 | ||||
| Deliver Tokens | 10704638 | 2018 days ago | IN | 0 ETH | 0.0090861 | ||||
| Deliver Tokens | 10574827 | 2038 days ago | IN | 0 ETH | 0.0105861 | ||||
| Deliver Tokens | 10568354 | 2039 days ago | IN | 0 ETH | 0.0105861 | ||||
| Deliver Tokens | 10568350 | 2039 days ago | IN | 0 ETH | 0.0105861 | ||||
| Deliver Tokens | 10555488 | 2041 days ago | IN | 0 ETH | 0.0105861 | ||||
| Deliver Tokens | 8599958 | 2352 days ago | IN | 0 ETH | 0.002804 | ||||
| Deliver Tokens | 8349606 | 2391 days ago | IN | 0 ETH | 0.0028104 | ||||
| Deliver Tokens | 8272204 | 2403 days ago | IN | 0 ETH | 0.0092509 | ||||
| Deliver Tokens | 8265791 | 2404 days ago | IN | 0 ETH | 0.0092573 | ||||
| Deliver Tokens | 8252889 | 2406 days ago | IN | 0 ETH | 0.0092573 | ||||
| Deliver Tokens | 7279308 | 2558 days ago | IN | 0 ETH | 0.0092573 | ||||
| Deliver Tokens | 7179005 | 2581 days ago | IN | 0 ETH | 0.0092573 | ||||
| Deliver Tokens | 7144655 | 2588 days ago | IN | 0 ETH | 0.0092573 | ||||
| Deliver Tokens | 7124719 | 2592 days ago | IN | 0 ETH | 0.0092573 | ||||
| Deliver Tokens | 7124714 | 2592 days ago | IN | 0 ETH | 0.0092509 | ||||
| Deliver Tokens | 6746467 | 2657 days ago | IN | 0 ETH | 0.0077573 | ||||
| Deliver Tokens | 6740414 | 2658 days ago | IN | 0 ETH | 0.0107573 | ||||
| Deliver Tokens | 6734378 | 2659 days ago | IN | 0 ETH | 0.0092509 | ||||
| Deliver Tokens | 6642831 | 2674 days ago | IN | 0 ETH | 0.0092573 | ||||
| Deliver Tokens | 6606218 | 2680 days ago | IN | 0 ETH | 0.0092573 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 6249847 | 2739 days ago | 0.04 ETH | ||||
| Transfer | 6243498 | 2740 days ago | 0.3 ETH | ||||
| Transfer | 6224438 | 2743 days ago | 0.13951465 ETH | ||||
| Transfer | 6194914 | 2748 days ago | 0.14 ETH | ||||
| Transfer | 6193933 | 2748 days ago | 0.37 ETH | ||||
| Transfer | 6191705 | 2749 days ago | 0.04 ETH | ||||
| Transfer | 6186819 | 2750 days ago | 0.12 ETH | ||||
| Transfer | 6178205 | 2751 days ago | 0.8 ETH | ||||
| Transfer | 6160353 | 2754 days ago | 0.059 ETH | ||||
| Transfer | 6150603 | 2756 days ago | 0.5 ETH | ||||
| Transfer | 6148730 | 2756 days ago | 0.5 ETH | ||||
| Transfer | 6138076 | 2758 days ago | 1.1 ETH | ||||
| Transfer | 6112389 | 2762 days ago | 0.15 ETH | ||||
| Transfer | 6109399 | 2763 days ago | 2 ETH | ||||
| Transfer | 6105637 | 2763 days ago | 0.1 ETH | ||||
| Transfer | 6098152 | 2765 days ago | 1 ETH | ||||
| Transfer | 6082240 | 2767 days ago | 0.02307845 ETH | ||||
| Transfer | 6074631 | 2768 days ago | 0.2 ETH | ||||
| Transfer | 6071828 | 2769 days ago | 0.5 ETH | ||||
| Transfer | 6069579 | 2769 days ago | 0.02 ETH | ||||
| Transfer | 6068859 | 2769 days ago | 0.02 ETH | ||||
| Transfer | 6066515 | 2770 days ago | 1 ETH | ||||
| Transfer | 6062962 | 2770 days ago | 3 ETH | ||||
| Transfer | 6056818 | 2772 days ago | 0.06 ETH | ||||
| Transfer | 6056649 | 2772 days ago | 1 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
COTCoinPublicSaleCrowdsale
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-02-28
*/
// File: openzeppelin-solidity/contracts/ownership/Ownable.sol
pragma solidity ^0.4.23;
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
address public owner;
event OwnershipRenounced(address indexed previousOwner);
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to relinquish control of the contract.
*/
function renounceOwnership() public onlyOwner {
emit OwnershipRenounced(owner);
owner = address(0);
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param _newOwner The address to transfer ownership to.
*/
function transferOwnership(address _newOwner) public onlyOwner {
_transferOwnership(_newOwner);
}
/**
* @dev Transfers control of the contract to a newOwner.
* @param _newOwner The address to transfer ownership to.
*/
function _transferOwnership(address _newOwner) internal {
require(_newOwner != address(0));
emit OwnershipTransferred(owner, _newOwner);
owner = _newOwner;
}
}
// File: contracts/WhiteList.sol
pragma solidity ^0.4.21;
contract WhiteList is Ownable{
mapping(address => uint8) public whitelist;
bool public publicsale_need_whitelist = true;
event ImportList(address indexed owner, address[] users, uint8 flag);
event UpdatePublicSaleWhitelistStatus(address indexed owner, bool flag);
/**
* @dev Function to import user's address into whitelist, only user who in the whitelist can purchase token.
* Whitelistにユーザーアドレスを記録。sale期間に、Whitelistに記録したユーザーたちしかトークンを購入できない
* @param _users The address list that can purchase token when sale period.
* @param _flag The flag for record different lv user, 1: pre sale user, 2: public sale user. 3: premium sale user
* @return A bool that indicates if the operation was successful.
*/
function importList(address[] _users, uint8 _flag) onlyOwner public returns(bool){
require(_users.length > 0);
for(uint i = 0; i < _users.length; i++) {
whitelist[_users[i]] = _flag;
}
emit ImportList(msg.sender, _users, _flag);
return true;
}
/**
* @dev Function check the current user can purchase token or not.
* ユーザーアドレスはWhitelistに記録かどうかチェック
* @param _user The user address that can purchase token or not when public salse.
* @return A bool that indicates if the operation was successful.
*/
function checkList(address _user)public view returns(uint8){
return whitelist[_user];
}
/**
* @dev Function get whitelist able status in public sale
* @return A bool that indicates if the operation was successful.
*/
function getPublicSaleWhitelistStatus()public view returns(bool){
return publicsale_need_whitelist;
}
/**
* @dev Function update whitelist able status in public sale
* @param _flag bool whitelist status
* @return A bool that indicates if the operation was successful.
*/
function updatePublicSaleWhitelistStatus(bool _flag) onlyOwner public returns(bool){
publicsale_need_whitelist = _flag;
emit UpdatePublicSaleWhitelistStatus(msg.sender, _flag);
return true;
}
}
// File: openzeppelin-solidity/contracts/math/SafeMath.sol
pragma solidity ^0.4.23;
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
// Gas optimization: this is cheaper than asserting 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
if (a == 0) {
return 0;
}
c = a * b;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
// uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return a / b;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
c = a + b;
assert(c >= a);
return c;
}
}
// File: contracts/Deliver.sol
pragma solidity ^0.4.21;
contract Deliver is Ownable{
using SafeMath for uint256;
mapping(address => uint256) public waiting_plate;
mapping(bytes32 => uint256) public token_deliver_date_plate;
mapping(bytes32 => uint256) public token_deliver_plate;
mapping(bytes32 => bool) public already_deliver_token;
mapping(address => uint256) public deliver_balance;
mapping(bytes32 => address) public hash_mapping;
mapping(bytes32 => bool) public deliver_suspending;
event UpdateWaitingPlate(address indexed updater, address indexed user, uint256 waiting_time);
event UpdateTokenDeliverPlate(address indexed updater, bytes32 indexed hash_id, uint256 token_amount);
event UpdateTokenDeliverCheck(address indexed updater, bytes32 indexed hash_id, bool flag);
event UpdateTokenDeliverBalance(address indexed updater, address indexed user, uint256 pending_token_amount);
event UpdateHashMapping(address indexed updater, bytes32 indexed hash_id, address indexed user);
event UpdateDeliverSuspending(address indexed updater, bytes32 indexed hash_id, bool deliver_suspending);
/**
* @dev called for get user waiting time
* @param _user Address
* @return A uint256 that if the operation was successful.
*/
function getWaitingPlate(address _user) public view returns(uint256){
return waiting_plate[_user];
}
/**
* @dev called for get user deliver date
* @param _hash_id transaction unique hash id
* @return A uint256 that if the operation was successful.
*/
function getTokenDeliverDatePlate(bytes32 _hash_id) public view returns(uint256){
return token_deliver_date_plate[_hash_id];
}
/**
* @dev called for get user waiting time
* @param _hash_id transaction unique hash id
* @return A uint256 that if the operation was successful.
*/
function getTokenDeliverPlate(bytes32 _hash_id) public view returns(uint256){
return token_deliver_plate[_hash_id];
}
/**
* @dev called for get user total pending token amount
* @param _user user address
* @return A uint256 that if the operation was successful.
*/
function getPendingDeliverToken(address _user) public view returns(uint256){
return deliver_balance[_user];
}
/**
* @dev called for get user address from hash_id
* @param _hash_id transaction unique hash id
* @return A address that if the operation was successful.
*/
function getHashMappingAddress(bytes32 _hash_id) public view returns(address){
return hash_mapping[_hash_id];
}
/**
* @dev called for get user token deliver suspending status
* @param _hash_id transaction unique hash id
* @return A bool that if the operation was successful.
*/
function getDeliverSuspending(bytes32 _hash_id) public view returns(bool){
return deliver_suspending[_hash_id];
}
/**
* @dev called for get user total pending token amount
* @param _hash_id transaction unique hash id
* @return A bool that if the operation was successful.
*/
function deliverCheck(bytes32 _hash_id) public view returns(bool){
return already_deliver_token[_hash_id];
}
/**
* @dev called for insert user waiting time
* @param _users Address list
* @param _waiting_times 時期申告時間リスト
* @return A bool that if the operation was successful.
*/
function pushWaitingPlate(address[] _users, uint256[] _waiting_times)onlyOwner public returns(bool){
require(_users.length > 0 && _waiting_times.length > 0);
require(_users.length == _waiting_times.length);
address user;
uint256 waiting_time;
for(uint i = 0; i < _users.length; i++) {
user = _users[i];
waiting_time = _waiting_times[i];
waiting_plate[user] = waiting_time;
emit UpdateWaitingPlate(msg.sender, user, waiting_time);
}
return true;
}
/**
* @dev called for insert user waiting time
* @param _hash_id transaction unique hash id
* @param _suspending ユーザーのトークン配布禁止フラグ
* @return A bool that if the operation was successful.
*/
function updateDeliverSuspending(bytes32 _hash_id, bool _suspending)onlyOwner public returns(bool){
deliver_suspending[_hash_id] = _suspending;
emit UpdateDeliverSuspending(msg.sender, _hash_id, _suspending);
return true;
}
/**
* @dev called for insert user token info in the mapping
* @param _hash_id transaction unique hash id
* @param _total_token_amount the token amount that include bonus
* @return A bool that if the operation was successful.
*/
function pushTokenDeliverPlate(address _beneficiary, bytes32 _hash_id, uint256 _total_token_amount, uint256 _deliver_date)onlyOwner public returns(bool){
require(_total_token_amount > 0);
token_deliver_plate[_hash_id] = _total_token_amount;
already_deliver_token[_hash_id] = false;
deliver_balance[_beneficiary] = deliver_balance[_beneficiary].add(_total_token_amount);
hash_mapping[_hash_id] = _beneficiary;
token_deliver_date_plate[_hash_id] = _deliver_date;
emit UpdateTokenDeliverPlate(msg.sender, _hash_id, _total_token_amount);
emit UpdateTokenDeliverCheck(msg.sender, _hash_id, true);
emit UpdateTokenDeliverBalance(msg.sender, _beneficiary, deliver_balance[_beneficiary]);
emit UpdateHashMapping(msg.sender, _hash_id, _beneficiary);
return true;
}
/**
* @dev called for reset user token info in the mapping
* @param _hash_id transaction unique hash id
* @return A bool that if the operation was successful.
*/
function resetTokenDeliverPlate(address _beneficiary, bytes32 _hash_id, uint256 _token_amount)onlyOwner public returns(bool){
require(_token_amount > 0);
token_deliver_plate[_hash_id] = 0;
already_deliver_token[_hash_id] = true;
deliver_balance[_beneficiary] = deliver_balance[_beneficiary].sub(_token_amount);
emit UpdateTokenDeliverPlate(msg.sender, _hash_id, 0);
emit UpdateTokenDeliverCheck(msg.sender, _hash_id, false);
emit UpdateTokenDeliverBalance(msg.sender, _beneficiary, deliver_balance[_beneficiary]);
return true;
}
}
// File: contracts/Bonus.sol
pragma solidity ^0.4.21;
contract Bonus is Ownable{
using SafeMath for uint256;
uint256 public constant day = 24*60*60;
uint256 public publicSale_first_stage_endTime;
mapping(uint8 => uint256) public bonus_time_gate;
mapping(uint8 => uint8) public bonus_rate;
event UpdateBonusPhase(address indexed updater, uint8 indexed phase_type, uint256 time_gate, uint8 bonus);
event UpdatePublicSaleFirstStageEndTime(address indexed updater, uint256 publicSale_first_stage_endTime);
constructor(
uint256 _publicSale_first_stage_endTime,
uint256 _bonus_time_gate_1,
uint256 _bonus_time_gate_2,
uint256 _bonus_time_gate_3,
uint256 _bonus_time_gate_4,
uint8 _bonus_rate_1,
uint8 _bonus_rate_2,
uint8 _bonus_rate_3,
uint8 _bonus_rate_4) public
{
bonus_time_gate[0] = _bonus_time_gate_1*uint256(day);
bonus_time_gate[1] = _bonus_time_gate_2*uint256(day);
bonus_time_gate[2] = _bonus_time_gate_3*uint256(day);
bonus_time_gate[3] = _bonus_time_gate_4*uint256(day);
bonus_rate[0] = _bonus_rate_1;
bonus_rate[1] = _bonus_rate_2;
bonus_rate[2] = _bonus_rate_3;
bonus_rate[3] = _bonus_rate_4;
publicSale_first_stage_endTime = _publicSale_first_stage_endTime;
emit UpdateBonusPhase(msg.sender, 1, _bonus_time_gate_1, _bonus_rate_1);
emit UpdateBonusPhase(msg.sender, 2, _bonus_time_gate_2, _bonus_rate_2);
emit UpdateBonusPhase(msg.sender, 3, _bonus_time_gate_3, _bonus_rate_3);
emit UpdateBonusPhase(msg.sender, 4, _bonus_time_gate_4, _bonus_rate_4);
}
/**
* @dev called for get bonus rate
* @param _phase_type uint8 bonus phase block
* @return A uint8, bonus rate that if the operation was successful.
*/
function getBonusRate(uint8 _phase_type) public view returns(uint8){
return bonus_rate[_phase_type];
}
/**
* @dev called for get bonus time block
* @param _phase_type uint8 bonus phase block
* @return A uint8, phase block time that if the operation was successful.
*/
function getBonusTimeGate(uint8 _phase_type) public view returns(uint256){
return bonus_time_gate[_phase_type];
}
/**
* @dev called for get the public sale first stage end time
* @return A uint256, the public sale first stage end time that if the operation was successful.
*/
function getPublicSaleFirstStageEndTime() public view returns(uint256){
return publicSale_first_stage_endTime;
}
/**
* @dev called for get total token amount that include the bonus
* @param _waiting_time uint256 KYV waiting time
* @param _tokenAmount uint256 basic token amount
* @return A uint256, total token amount that if the operation was successful.
*/
function getTotalAmount(uint256 _waiting_time, uint256 _tokenAmount) public view returns(uint256){
uint256 total_token_amount;
if(_waiting_time < bonus_time_gate[0]){
//user still can get bonus if user purchase token before publicSale first stage end time.
if(now <= publicSale_first_stage_endTime){
total_token_amount = _tokenAmount + (_tokenAmount * uint256(bonus_rate[0])) / 100;
}else{
total_token_amount = _tokenAmount;
}
}else if(_waiting_time < bonus_time_gate[1]){
total_token_amount = _tokenAmount + (_tokenAmount * uint256(bonus_rate[0])) / 100;
}else if(_waiting_time < bonus_time_gate[2]){
total_token_amount = _tokenAmount + (_tokenAmount * uint256(bonus_rate[1])) / 100;
}else if(_waiting_time < bonus_time_gate[3]){
total_token_amount = _tokenAmount + (_tokenAmount * uint256(bonus_rate[2])) / 100;
}else{
total_token_amount = _tokenAmount + (_tokenAmount * uint256(bonus_rate[3])) / 100;
}
return total_token_amount;
}
/**
* @dev called for update the public sale first stage end time
* @param _new_stage_endTime uint256 new public sale first stage end time
* @return A uint256, the public sale first stage end time that if the operation was successful.
*/
function updatePublicSaleFirstStageEndTime(uint256 _new_stage_endTime)onlyOwner public returns(bool){
publicSale_first_stage_endTime = _new_stage_endTime;
emit UpdatePublicSaleFirstStageEndTime(msg.sender, _new_stage_endTime);
return true;
}
/**
* @dev called for update bonus phase time block and rate
* @param _phase_type uint8 phase block
* @param _new_days uint256 new phase block time
* @param _new_bonus uint8 new rate
* @return A bool that if the operation was successful.
*/
function updateBonusPhase(uint8 _phase_type, uint256 _new_days, uint8 _new_bonus)onlyOwner public returns(bool){
uint256 _new_gate = _new_days * uint256(day);
//gate phase only have 4 phase
require(0 < _phase_type && _phase_type <= 4);
//gate phase 1
if(_phase_type == 1){
//new gate time needs to be early than the next gate time
require( _new_gate < bonus_time_gate[1] );
//new gate rate needs to be less than the next gate's rate
require( _new_bonus < bonus_rate[1] );
bonus_time_gate[0] = _new_gate;
bonus_rate[0] = _new_bonus;
}else if(_phase_type == 2){
//new gate time needs to be early than the next gate time and need to be late than the perious gate time
require( bonus_time_gate[0] < _new_gate && _new_gate < bonus_time_gate[2] );
//new gate rate needs to be less than the next gate's rate and need to be bigger than the perious gate rate
require( bonus_rate[0] < _new_bonus && _new_bonus < bonus_rate[2] );
bonus_time_gate[1] = _new_gate;
bonus_rate[1] = _new_bonus;
}else if(_phase_type == 3){
require( bonus_time_gate[1] < _new_gate && _new_gate < bonus_time_gate[3] );
require( bonus_rate[1] < _new_bonus && _new_bonus < bonus_rate[3] );
bonus_time_gate[2] = _new_gate;
bonus_rate[2] = _new_bonus;
}else{
require( bonus_time_gate[2] < _new_gate );
require( bonus_rate[2] < _new_bonus );
bonus_time_gate[3] = _new_gate;
bonus_rate[3] = _new_bonus;
}
emit UpdateBonusPhase(msg.sender, _phase_type, _new_days, _new_bonus);
}
}
// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol
pragma solidity ^0.4.23;
/**
* @title ERC20Basic
* @dev Simpler version of ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/179
*/
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol
pragma solidity ^0.4.23;
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender)
public view returns (uint256);
function transferFrom(address from, address to, uint256 value)
public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
// File: openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol
pragma solidity ^0.4.23;
/**
* @title Crowdsale
* @dev Crowdsale is a base contract for managing a token crowdsale,
* allowing investors to purchase tokens with ether. This contract implements
* such functionality in its most fundamental form and can be extended to provide additional
* functionality and/or custom behavior.
* The external interface represents the basic interface for purchasing tokens, and conform
* the base architecture for crowdsales. They are *not* intended to be modified / overriden.
* The internal interface conforms the extensible and modifiable surface of crowdsales. Override
* the methods to add functionality. Consider using 'super' where appropiate to concatenate
* behavior.
*/
contract Crowdsale {
using SafeMath for uint256;
// The token being sold
ERC20 public token;
// Address where funds are collected
address public wallet;
// How many token units a buyer gets per wei.
// The rate is the conversion between wei and the smallest and indivisible token unit.
// So, if you are using a rate of 1 with a DetailedERC20 token with 3 decimals called TOK
// 1 wei will give you 1 unit, or 0.001 TOK.
uint256 public rate;
// Amount of wei raised
uint256 public weiRaised;
/**
* Event for token purchase logging
* @param purchaser who paid for the tokens
* @param beneficiary who got the tokens
* @param value weis paid for purchase
* @param amount amount of tokens purchased
*/
event TokenPurchase(
address indexed purchaser,
address indexed beneficiary,
uint256 value,
uint256 amount
);
/**
* @param _rate Number of token units a buyer gets per wei
* @param _wallet Address where collected funds will be forwarded to
* @param _token Address of the token being sold
*/
constructor(uint256 _rate, address _wallet, ERC20 _token) public {
require(_rate > 0);
require(_wallet != address(0));
require(_token != address(0));
rate = _rate;
wallet = _wallet;
token = _token;
}
// -----------------------------------------
// Crowdsale external interface
// -----------------------------------------
/**
* @dev fallback function ***DO NOT OVERRIDE***
*/
function () external payable {
buyTokens(msg.sender);
}
/**
* @dev low level token purchase ***DO NOT OVERRIDE***
* @param _beneficiary Address performing the token purchase
*/
function buyTokens(address _beneficiary) public payable {
uint256 weiAmount = msg.value;
_preValidatePurchase(_beneficiary, weiAmount);
// calculate token amount to be created
uint256 tokens = _getTokenAmount(weiAmount);
// update state
weiRaised = weiRaised.add(weiAmount);
_processPurchase(_beneficiary, tokens);
emit TokenPurchase(
msg.sender,
_beneficiary,
weiAmount,
tokens
);
_updatePurchasingState(_beneficiary, weiAmount);
_forwardFunds();
_postValidatePurchase(_beneficiary, weiAmount);
}
// -----------------------------------------
// Internal interface (extensible)
// -----------------------------------------
/**
* @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met. Use super to concatenate validations.
* @param _beneficiary Address performing the token purchase
* @param _weiAmount Value in wei involved in the purchase
*/
function _preValidatePurchase(
address _beneficiary,
uint256 _weiAmount
)
internal
{
require(_beneficiary != address(0));
require(_weiAmount != 0);
}
/**
* @dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid conditions are not met.
* @param _beneficiary Address performing the token purchase
* @param _weiAmount Value in wei involved in the purchase
*/
function _postValidatePurchase(
address _beneficiary,
uint256 _weiAmount
)
internal
{
// optional override
}
/**
* @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends its tokens.
* @param _beneficiary Address performing the token purchase
* @param _tokenAmount Number of tokens to be emitted
*/
function _deliverTokens(
address _beneficiary,
uint256 _tokenAmount
)
internal
{
token.transfer(_beneficiary, _tokenAmount);
}
/**
* @dev Executed when a purchase has been validated and is ready to be executed. Not necessarily emits/sends tokens.
* @param _beneficiary Address receiving the tokens
* @param _tokenAmount Number of tokens to be purchased
*/
function _processPurchase(
address _beneficiary,
uint256 _tokenAmount
)
internal
{
_deliverTokens(_beneficiary, _tokenAmount);
}
/**
* @dev Override for extensions that require an internal state to check for validity (current user contributions, etc.)
* @param _beneficiary Address receiving the tokens
* @param _weiAmount Value in wei involved in the purchase
*/
function _updatePurchasingState(
address _beneficiary,
uint256 _weiAmount
)
internal
{
// optional override
}
/**
* @dev Override to extend the way in which ether is converted to tokens.
* @param _weiAmount Value in wei to be converted into tokens
* @return Number of tokens that can be purchased with the specified _weiAmount
*/
function _getTokenAmount(uint256 _weiAmount)
internal view returns (uint256)
{
return _weiAmount.mul(rate);
}
/**
* @dev Determines how ETH is stored/forwarded on purchases.
*/
function _forwardFunds() internal {
wallet.transfer(msg.value);
}
}
// File: openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol
pragma solidity ^0.4.23;
/**
* @title TimedCrowdsale
* @dev Crowdsale accepting contributions only within a time frame.
*/
contract TimedCrowdsale is Crowdsale {
using SafeMath for uint256;
uint256 public openingTime;
uint256 public closingTime;
/**
* @dev Reverts if not in crowdsale time range.
*/
modifier onlyWhileOpen {
// solium-disable-next-line security/no-block-members
require(block.timestamp >= openingTime && block.timestamp <= closingTime);
_;
}
/**
* @dev Constructor, takes crowdsale opening and closing times.
* @param _openingTime Crowdsale opening time
* @param _closingTime Crowdsale closing time
*/
constructor(uint256 _openingTime, uint256 _closingTime) public {
// solium-disable-next-line security/no-block-members
require(_openingTime >= block.timestamp);
require(_closingTime >= _openingTime);
openingTime = _openingTime;
closingTime = _closingTime;
}
/**
* @dev Checks whether the period in which the crowdsale is open has already elapsed.
* @return Whether crowdsale period has elapsed
*/
function hasClosed() public view returns (bool) {
// solium-disable-next-line security/no-block-members
return block.timestamp > closingTime;
}
/**
* @dev Extend parent behavior requiring to be within contributing period
* @param _beneficiary Token purchaser
* @param _weiAmount Amount of wei contributed
*/
function _preValidatePurchase(
address _beneficiary,
uint256 _weiAmount
)
internal
onlyWhileOpen
{
super._preValidatePurchase(_beneficiary, _weiAmount);
}
}
// File: openzeppelin-solidity/contracts/lifecycle/Pausable.sol
pragma solidity ^0.4.23;
/**
* @title Pausable
* @dev Base contract which allows children to implement an emergency stop mechanism.
*/
contract Pausable is Ownable {
event Pause();
event Unpause();
bool public paused = false;
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*/
modifier whenNotPaused() {
require(!paused);
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*/
modifier whenPaused() {
require(paused);
_;
}
/**
* @dev called by the owner to pause, triggers stopped state
*/
function pause() onlyOwner whenNotPaused public {
paused = true;
emit Pause();
}
/**
* @dev called by the owner to unpause, returns to normal state
*/
function unpause() onlyOwner whenPaused public {
paused = false;
emit Unpause();
}
}
// File: contracts/COTCoinPublicSaleCrowdsale.sol
pragma solidity ^0.4.21;
contract COTCoinPublicSaleCrowdsale is TimedCrowdsale, Ownable, Pausable{
using SafeMath for uint256;
address public admin_wallet; //wallet to controll system
address public sale_owner_wallet;
address public eth_management_wallet; //wallet to reveive eth
address public refund_token_wallet; //wallet that contract will return token
address public cot_sale_wallet;
uint256 public minimum_weiAmount;
uint256 public public_opening_time;
uint256 public public_closing_time;
WhiteList public white_list;
Deliver public deliver;
Bonus public bonus;
uint256 public pending_balance;
event UpdateRate(address indexed updater, uint256 transaction_date, uint256 rate);
event ReFundToken(address indexed from, address indexed to, uint256 token_amount);
event PublicsalePurchase(address indexed beneficiary,
uint256 transaction_date,
uint256 waiting_time,
uint256 deliver_date,
uint256 value,
uint256 origin_token_amount,
uint256 total_token_amount,
bytes32 hash_id,
uint256 sale_balance,
uint256 publicsale_balance,
uint256 remain_balance);
event DeliverTokens(address indexed from, address indexed to, uint256 token_amount, uint256 deliver_time, bytes32 hash_id);
event UpdateMinimumAmount( address indexed updater, uint256 minimumWeiAmount);
event UpdateReFundAddress( address indexed updater, address indexed refund_address);
constructor(
uint256 _openingTime,
uint256 _closingTime,
uint256 _minimum_weiAmount,
uint256 _rate,
address _admin_wallet,
address _eth_management_wallet,
address _refund_token_wallet,
address _cot_sale_wallet,
WhiteList _whiteList,
ERC20 _cot,
Deliver _deliver,
Bonus _bonus) public
Crowdsale(_rate, _eth_management_wallet, _cot)
TimedCrowdsale(_openingTime, _closingTime)
{
minimum_weiAmount = _minimum_weiAmount;
admin_wallet = _admin_wallet;
eth_management_wallet = _eth_management_wallet;
refund_token_wallet = _refund_token_wallet;
cot_sale_wallet = _cot_sale_wallet;
public_opening_time = _openingTime;
public_closing_time = _closingTime;
white_list = _whiteList;
deliver = _deliver;
bonus = _bonus;
emit UpdateRate( msg.sender, now, _rate);
emit UpdateMinimumAmount(msg.sender, _minimum_weiAmount);
}
/**
* @dev low level token purchase ***DO NOT OVERRIDE***
* @param _beneficiary Address performing the token purchase
*/
function buyTokens(address _beneficiary) onlyWhileOpen whenNotPaused public payable {
uint256 weiAmount = msg.value;
_preValidatePurchase(_beneficiary, weiAmount);
// calculate token amount to be created
uint256 tokens = _getTokenAmount(weiAmount);
// update state
weiRaised = weiRaised.add(weiAmount);
_processPurchase(_beneficiary, tokens);
emit TokenPurchase(msg.sender, _beneficiary, weiAmount, tokens);
_updatePurchasingState(_beneficiary, weiAmount);
_forwardFunds();
_postValidatePurchase(_beneficiary, weiAmount);
}
/**
* @dev Validation of an incoming purchase. Use require statemens to revert state when conditions are not met. Use super to concatenate validations.
* @param _beneficiary Address performing the token purchase
* @param _weiAmount Value in wei involved in the purchase
*/
function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal {
require(_beneficiary != address(0));
require(_weiAmount != 0);
//minimum ether check
uint256 publicSale_first_stage_endTime = bonus.getPublicSaleFirstStageEndTime();
//need to check minimum ether
require(_weiAmount >= minimum_weiAmount);
//owner can not purchase token
require(_beneficiary != admin_wallet);
require(_beneficiary != eth_management_wallet);
//whitelist check
//whitelist 2-public sale user
uint8 inWhitelist = white_list.checkList(_beneficiary);
//if need to check whitelist status
//0:white listに入ってない, 1:プレセール, 2:パブリックセール, 3:プレミアムセール
if( white_list.getPublicSaleWhitelistStatus() ){
require( inWhitelist != 0);
}
}
/**
* @dev Executed when a purchase has been validated and is ready to be executed. Not necessarily emits/sends tokens.
* @param _beneficiary Address receiving the tokens
* @param _tokenAmount Number of tokens to be purchased
*/
function _processPurchase(address _beneficiary, uint256 _tokenAmount) internal {
//check waiting time date which provided by KVC
uint256 waiting_time = deliver.getWaitingPlate(_beneficiary);
require(waiting_time != 0);
//calculate that when will deliver token to purchaser
uint256 deliver_date = waiting_time + now;
//calculate the token + bonus
uint256 total_token_amount = bonus.getTotalAmount(waiting_time, _tokenAmount);
//make the unique id
bytes32 hash_id = keccak256(abi.encodePacked(_beneficiary,now));
//get total cot sale amount
uint256 cot_sale_wallet_balance = token.balanceOf(cot_sale_wallet);
uint256 publicsale_balance = token.balanceOf(address(this));
uint256 total_cot_amount = cot_sale_wallet_balance.add(publicsale_balance);
uint256 expect_pending_balance = pending_balance.add(total_token_amount);
require(total_cot_amount > expect_pending_balance);
uint256 remain_cot_amount = total_cot_amount.sub(expect_pending_balance);
pending_balance = pending_balance.add(total_token_amount);
require(deliver.pushTokenDeliverPlate(_beneficiary, hash_id, total_token_amount , deliver_date));
emit PublicsalePurchase(_beneficiary, now, waiting_time, deliver_date, msg.value, _tokenAmount, total_token_amount, hash_id, cot_sale_wallet_balance, publicsale_balance, remain_cot_amount);
}
/**
* @dev called for get pending balance
*/
function getPendingBalance() public view returns(uint256){
return pending_balance;
}
/**
* @dev called for update user waiting time
* @param _users Address
* @param _waiting_times 時期申告時間
* @return A bool that indicates if the operation was successful.
*/
function updateWaitingPlate(address[] _users, uint256[] _waiting_times)onlyOwner public returns(bool){
require(deliver.pushWaitingPlate(_users, _waiting_times));
return true;
}
/**
* @dev called for update user deliver suspending status
* @param _hash_id unique hash id
* @param _suspending ユーザーのトークン配布禁止フラグ
* @return A bool that indicates if the operation was successful.
*/
function updateDeliverSuspending(bytes32 _hash_id, bool _suspending)onlyOwner public returns(bool){
require(deliver.updateDeliverSuspending(_hash_id, _suspending));
return true;
}
/**
* @dev called for get status of pause.
*/
function ispause() public view returns(bool){
return paused;
}
/**
* @dev Function update rate
* @param _newRate rate
* @return A bool that indicates if the operation was successful.
*/
function updateRate(int256 _newRate)onlyOwner public returns(bool){
require(_newRate >= 1);
rate = uint256(_newRate);
emit UpdateRate( msg.sender, now, rate);
return true;
}
/**
* @dev Function get rate
* @return A uint256 that indicates if the operation was successful.
*/
function getRate() public view returns(uint256){
return rate;
}
/**
* @dev Function return token back to the admin wallet
* @return A bool that indicates if the operation was successful.
*/
function reFundToken(uint256 _value)onlyOwner public returns (bool){
token.transfer(refund_token_wallet, _value);
emit ReFundToken(msg.sender, refund_token_wallet, _value);
}
/**
* @dev Function to update refund address
* @param _add new refund Address
* @return A bool that indicates if the operation was successful.
*/
function updateReFundAddress(address _add)onlyOwner public returns (bool){
refund_token_wallet = _add;
emit UpdateReFundAddress(msg.sender, _add);
return true;
}
/**
* @dev called for deliver token
* @param _beneficiary Address
* @param _hash_id unique hash id
* @return A bool that indicates if the operation was successful.
*/
function deliverTokens(address _beneficiary, bytes32 _hash_id)onlyOwner public returns (bool){
// will reject if already delivered token
bool already_delivered = deliver.deliverCheck(_hash_id);
require(already_delivered == false);
//get the token deliver date
uint256 deliver_token_date = deliver.getTokenDeliverDatePlate(_hash_id);
require(deliver_token_date <= now);
//get the token amount that need to deliver
uint256 deliver_token_amount = deliver.getTokenDeliverPlate(_hash_id);
require(deliver_token_amount > 0);
//deliver user should match
address deliver_user = deliver.getHashMappingAddress(_hash_id);
require(deliver_user == _beneficiary);
//get token deliver suspending status
bool deliver_suspending = deliver.getDeliverSuspending(_hash_id);
require(!deliver_suspending);
//get the total pending token amount for this user
uint256 penging_total_deliver_token_amount = deliver.getPendingDeliverToken(_beneficiary);
require(penging_total_deliver_token_amount > 0);
//the remain pending token amount should not less than 0
uint256 remain_panding_total_deliver_token_amount = penging_total_deliver_token_amount - deliver_token_amount;
require(remain_panding_total_deliver_token_amount >= 0);
//deliver token
token.transfer(_beneficiary, deliver_token_amount);
//reset data
require(deliver.resetTokenDeliverPlate(_beneficiary, _hash_id, deliver_token_amount));
pending_balance = pending_balance.sub(deliver_token_amount);
emit DeliverTokens(msg.sender, _beneficiary, deliver_token_amount, now, _hash_id);
}
/**
* @dev get admin wallet
*/
function getAdminAddress() public view returns(address) {
return admin_wallet;
}
/**
* @dev get eth management owner wallet
*/
function getEtherManagementAddress() public view returns(address) {
return eth_management_wallet;
}
/**
* @dev get token refund wallet
*/
function getReFundAddress() public view returns(address) {
return refund_token_wallet;
}
/**
* @dev get start date for public sale
*/
function getPublicsaleOpeningDate() public view returns(uint256) {
return public_opening_time;
}
/**
* @dev get end date for public sale
*/
function getPublicsaleClosingDate() public view returns(uint256) {
return public_closing_time;
}
/**
* @dev Function get minimum wei amount
* @return A uint256 that indicates if the operation was successful.
*/
function getMinimumAmount() public view returns(uint256){
return minimum_weiAmount;
}
/**
* @dev Function update minimum wei amount
* @return A uint256 that indicates if the operation was successful.
*/
function updateMinimumAmount(int256 _new_minimum_weiAmount)onlyOwner public returns(bool){
require(_new_minimum_weiAmount >= 0);
minimum_weiAmount = uint256(_new_minimum_weiAmount);
emit UpdateMinimumAmount( msg.sender, minimum_weiAmount);
return true;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_hash_id","type":"bytes32"}],"name":"deliverTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_hash_id","type":"bytes32"},{"name":"_suspending","type":"bool"}],"name":"updateDeliverSuspending","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hasClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_new_minimum_weiAmount","type":"int256"}],"name":"updateMinimumAmount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getReFundAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEtherManagementAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getPublicsaleOpeningDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cot_sale_wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"closingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"eth_management_wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"reFundToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"refund_token_wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMinimumAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPendingBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"public_closing_time","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bonus","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"public_opening_time","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sale_owner_wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newRate","type":"int256"}],"name":"updateRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ispause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin_wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAdminAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"white_list","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_add","type":"address"}],"name":"updateReFundAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pending_balance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPublicsaleClosingDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_users","type":"address[]"},{"name":"_waiting_times","type":"uint256[]"}],"name":"updateWaitingPlate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minimum_weiAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deliver","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_openingTime","type":"uint256"},{"name":"_closingTime","type":"uint256"},{"name":"_minimum_weiAmount","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_admin_wallet","type":"address"},{"name":"_eth_management_wallet","type":"address"},{"name":"_refund_token_wallet","type":"address"},{"name":"_cot_sale_wallet","type":"address"},{"name":"_whiteList","type":"address"},{"name":"_cot","type":"address"},{"name":"_deliver","type":"address"},{"name":"_bonus","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"updater","type":"address"},{"indexed":false,"name":"transaction_date","type":"uint256"},{"indexed":false,"name":"rate","type":"uint256"}],"name":"UpdateRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"token_amount","type":"uint256"}],"name":"ReFundToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"transaction_date","type":"uint256"},{"indexed":false,"name":"waiting_time","type":"uint256"},{"indexed":false,"name":"deliver_date","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"origin_token_amount","type":"uint256"},{"indexed":false,"name":"total_token_amount","type":"uint256"},{"indexed":false,"name":"hash_id","type":"bytes32"},{"indexed":false,"name":"sale_balance","type":"uint256"},{"indexed":false,"name":"publicsale_balance","type":"uint256"},{"indexed":false,"name":"remain_balance","type":"uint256"}],"name":"PublicsalePurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"token_amount","type":"uint256"},{"indexed":false,"name":"deliver_time","type":"uint256"},{"indexed":false,"name":"hash_id","type":"bytes32"}],"name":"DeliverTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"updater","type":"address"},{"indexed":false,"name":"minimumWeiAmount","type":"uint256"}],"name":"UpdateMinimumAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"updater","type":"address"},{"indexed":true,"name":"refund_address","type":"address"}],"name":"UpdateReFundAddress","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]Contract Creation Code
60806040526000600660146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b5060405161018080620036248339810180604052810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508b8b8a8986600083111515620000d457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200011157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200014e57600080fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050428210151515620001e957600080fd5b818110151515620001f957600080fd5b8160048190555080600581905550505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555089600c8190555087600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b600d819055508a600e8190555083600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f6978a60f5460e54199ba8d639bdd673fbc11ec5cf58abfe6a7d88462a7ec609b428b604051808381526020018281526020019250505060405180910390a23373ffffffffffffffffffffffffffffffffffffffff167ff94a4202bb0ea6fe517b54dc3f38aca0054f11bd1499ed82a0873508192e361e8b6040518082815260200191505060405180910390a250505050505050505050505061313e80620004e66000396000f300608060405260043610610204576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630c7938ca1461020f5780630f02f1d5146102785780631515bc2b146102cd5780631e2c8c6a146102fc57806329b3eea6146103415780632c4e722e146103985780632dfda7a7146103c35780633f4ba83a1461041a5780633f89383d146104315780633fbed97f1461045c5780634042b66f146104b35780634b6753bc146104de5780634c81bb2814610509578063521eb2731461056057806353725e67146105b757806353ed1eae146105fc5780635c975abb1461065357806362066eb314610682578063679aefce146106ad5780636d242972146106d8578063715018a61461070357806375978e4f1461071a57806375b4d78c146107455780638456cb591461079c5780638630a7b2146107b35780638da5cb5b146107de57806397dc351914610835578063a08edce81461088c578063a1df8b1e146108d1578063ab6e907214610900578063b2e6b91214610957578063b7a8807c146109ae578063b7fc4276146109d9578063bc3ec38d14610a30578063bfb2cf8614610a8b578063c37b648c14610ab6578063d0a7fc9d14610ae1578063d7aecb3414610ba2578063ec8ac4d814610bcd578063f2fde38b14610c03578063fc0c546a14610c46578063fd3e50a714610c9d575b61020d33610cf4565b005b34801561021b57600080fd5b5061025e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610dfd565b604051808215151515815260200191505060405180910390f35b34801561028457600080fd5b506102b360048036038101908080356000191690602001909291908035151590602001909291905050506116e8565b604051808215151515815260200191505060405180910390f35b3480156102d957600080fd5b506102e261183b565b604051808215151515815260200191505060405180910390f35b34801561030857600080fd5b5061032760048036038101908080359060200190929190505050611847565b604051808215151515815260200191505060405180910390f35b34801561034d57600080fd5b50610356611915565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103a457600080fd5b506103ad61193f565b6040518082815260200191505060405180910390f35b3480156103cf57600080fd5b506103d8611945565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042657600080fd5b5061042f61196f565b005b34801561043d57600080fd5b50610446611a2f565b6040518082815260200191505060405180910390f35b34801561046857600080fd5b50610471611a39565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104bf57600080fd5b506104c8611a5f565b6040518082815260200191505060405180910390f35b3480156104ea57600080fd5b506104f3611a65565b6040518082815260200191505060405180910390f35b34801561051557600080fd5b5061051e611a6b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056c57600080fd5b50610575611a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105c357600080fd5b506105e260048036038101908080359060200190929190505050611ab7565b604051808215151515815260200191505060405180910390f35b34801561060857600080fd5b50610611611cc3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065f57600080fd5b50610668611ce9565b604051808215151515815260200191505060405180910390f35b34801561068e57600080fd5b50610697611cfc565b6040518082815260200191505060405180910390f35b3480156106b957600080fd5b506106c2611d06565b6040518082815260200191505060405180910390f35b3480156106e457600080fd5b506106ed611d10565b6040518082815260200191505060405180910390f35b34801561070f57600080fd5b50610718611d1a565b005b34801561072657600080fd5b5061072f611e1f565b6040518082815260200191505060405180910390f35b34801561075157600080fd5b5061075a611e25565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a857600080fd5b506107b1611e4b565b005b3480156107bf57600080fd5b506107c8611f0c565b6040518082815260200191505060405180910390f35b3480156107ea57600080fd5b506107f3611f12565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561084157600080fd5b5061084a611f38565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089857600080fd5b506108b760048036038101908080359060200190929190505050611f5e565b604051808215151515815260200191505060405180910390f35b3480156108dd57600080fd5b506108e6612034565b604051808215151515815260200191505060405180910390f35b34801561090c57600080fd5b5061091561204b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096357600080fd5b5061096c612071565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109ba57600080fd5b506109c361209b565b6040518082815260200191505060405180910390f35b3480156109e557600080fd5b506109ee6120a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a3c57600080fd5b50610a71600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120c7565b604051808215151515815260200191505060405180910390f35b348015610a9757600080fd5b50610aa06121c9565b6040518082815260200191505060405180910390f35b348015610ac257600080fd5b50610acb6121cf565b6040518082815260200191505060405180910390f35b348015610aed57600080fd5b50610b8860048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506121d9565b604051808215151515815260200191505060405180910390f35b348015610bae57600080fd5b50610bb76123a2565b6040518082815260200191505060405180910390f35b610c01600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cf4565b005b348015610c0f57600080fd5b50610c44600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123a8565b005b348015610c5257600080fd5b50610c5b612410565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ca957600080fd5b50610cb2612435565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000806004544210158015610d0b57506005544211155b1515610d1657600080fd5b600660149054906101000a900460ff16151515610d3257600080fd5b349150610d3f838361245b565b610d4882612812565b9050610d5f8260035461283090919063ffffffff16565b600381905550610d6f838261284c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188484604051808381526020018281526020019250505060405180910390a3610de68383612f52565b610dee612f56565b610df88383612fc1565b505050565b600080600080600080600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e6557600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357ffb3af8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610efe57600080fd5b505af1158015610f12573d6000803e3d6000fd5b505050506040513d6020811015610f2857600080fd5b8101908080519060200190929190505050965060001515871515141515610f4e57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662a6020b8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b505050506040513d602081101561101057600080fd5b8101908080519060200190929190505050955042861115151561103257600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f85cbae8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156110cb57600080fd5b505af11580156110df573d6000803e3d6000fd5b505050506040513d60208110156110f557600080fd5b8101908080519060200190929190505050945060008511151561111757600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339bead4f8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156111b057600080fd5b505af11580156111c4573d6000803e3d6000fd5b505050506040513d60208110156111da57600080fd5b810190808051906020019092919050505093508973ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151561122757600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639febfb428a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156112c057600080fd5b505af11580156112d4573d6000803e3d6000fd5b505050506040513d60208110156112ea57600080fd5b810190808051906020019092919050505092508215151561130a57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635211e63b8b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156113c757600080fd5b505af11580156113db573d6000803e3d6000fd5b505050506040513d60208110156113f157600080fd5b8101908080519060200190929190505050915060008211151561141357600080fd5b84820390506000811015151561142857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156114ec57600080fd5b505af1158015611500573d6000803e3d6000fd5b505050506040513d602081101561151657600080fd5b810190808051906020019092919050505050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a87d4f498b8b886040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018281526020019350505050602060405180830381600087803b1580156115fd57600080fd5b505af1158015611611573d6000803e3d6000fd5b505050506040513d602081101561162757600080fd5b8101908080519060200190929190505050151561164357600080fd5b61165885601254612fc590919063ffffffff16565b6012819055508973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9e920532103a0094c025a5221792b807c2ff3dda1da49a97787ffc680055b42687428d604051808481526020018381526020018260001916600019168152602001935050505060405180910390a35050505050505092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174657600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f02f1d584846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018215151515815260200192505050602060405180830381600087803b1580156117eb57600080fd5b505af11580156117ff573d6000803e3d6000fd5b505050506040513d602081101561181557600080fd5b8101908080519060200190929190505050151561183157600080fd5b6001905092915050565b60006005544211905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118a557600080fd5b600082121515156118b557600080fd5b81600c819055503373ffffffffffffffffffffffffffffffffffffffff167ff94a4202bb0ea6fe517b54dc3f38aca0054f11bd1499ed82a0873508192e361e600c546040518082815260200191505060405180910390a260019050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60025481565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119cb57600080fd5b600660149054906101000a900460ff1615156119e657600080fd5b6000600660146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600d54905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60055481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b1557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b505050506040513d6020811015611c2557600080fd5b810190808051906020019092919050505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffa1656b9109f62970230d63e1400f9dc7edfb5155c8365931826d68d1269b4d8846040518082815260200191505060405180910390a3919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660149054906101000a900460ff1681565b6000600c54905090565b6000600254905090565b6000601254905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d7657600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ea757600080fd5b600660149054906101000a900460ff16151515611ec357600080fd5b6001600660146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600d5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fbc57600080fd5b60018212151515611fcc57600080fd5b816002819055503373ffffffffffffffffffffffffffffffffffffffff167f6978a60f5460e54199ba8d639bdd673fbc11ec5cf58abfe6a7d88462a7ec609b42600254604051808381526020018281526020019250505060405180910390a260019050919050565b6000600660149054906101000a900460ff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561212557600080fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f28c01cb303b89d02665ba5d587a8c0362fa55a8fc0d6a5e603e1f170d5a6ad4e60405160405180910390a360019050919050565b60125481565b6000600e54905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561223757600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166392e10e0e84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156122e95780820151818401526020810190506122ce565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561232b578082015181840152602081019050612310565b50505050905001945050505050602060405180830381600087803b15801561235257600080fd5b505af1158015612366573d6000803e3d6000fd5b505050506040513d602081101561237c57600080fd5b8101908080519060200190929190505050151561239857600080fd5b6001905092915050565b600c5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561240457600080fd5b61240d81612fde565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561249a57600080fd5b600083141515156124aa57600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390ed940c6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b505050506040513d602081101561255a57600080fd5b81019080805190602001909291905050509150600c54831015151561257e57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156125db57600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561263857600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dc29f7f856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156126f557600080fd5b505af1158015612709573d6000803e3d6000fd5b505050506040513d602081101561271f57600080fd5b81019080805190602001909291905050509050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ce31f716040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156127b857600080fd5b505af11580156127cc573d6000803e3d6000fd5b505050506040513d60208110156127e257600080fd5b81019080805190602001909291905050501561280c5760008160ff161415151561280b57600080fd5b5b50505050565b6000612829600254836130da90919063ffffffff16565b9050919050565b6000818301905082811015151561284357fe5b80905092915050565b6000806000806000806000806000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631be0376d8c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561291757600080fd5b505af115801561292b573d6000803e3d6000fd5b505050506040513d602081101561294157600080fd5b810190808051906020019092919050505098506000891415151561296457600080fd5b4289019750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cb84a838a8c6040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050602060405180830381600087803b158015612a0257600080fd5b505af1158015612a16573d6000803e3d6000fd5b505050506040513d6020811015612a2c57600080fd5b810190808051906020019092919050505096508a42604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612ad75780518252602082019150602081019050602083039250612ab2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902095506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015612be457600080fd5b505af1158015612bf8573d6000803e3d6000fd5b505050506040513d6020811015612c0e57600080fd5b810190808051906020019092919050505094506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015612cdd57600080fd5b505af1158015612cf1573d6000803e3d6000fd5b505050506040513d6020811015612d0757600080fd5b81019080805190602001909291905050509350612d2d848661283090919063ffffffff16565b9250612d448760125461283090919063ffffffff16565b91508183111515612d5457600080fd5b612d678284612fc590919063ffffffff16565b9050612d7e8760125461283090919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce0a5e68c888a8c6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460001916600019168152602001838152602001828152602001945050505050602060405180830381600087803b158015612e6157600080fd5b505af1158015612e75573d6000803e3d6000fd5b505050506040513d6020811015612e8b57600080fd5b81019080805190602001909291905050501515612ea757600080fd5b8a73ffffffffffffffffffffffffffffffffffffffff167fc6f1f3ccbf75538a38979e6be1b841d8d2cdaf8634951e6fae6c4e08c167ef58428b8b348f8d8d8d8d8b604051808b81526020018a815260200189815260200188815260200187815260200186815260200185600019166000191681526020018481526020018381526020018281526020019a505050505050505050505060405180910390a25050505050505050505050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015612fbe573d6000803e3d6000fd5b50565b5050565b6000828211151515612fd357fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561301a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156130ed576000905061310c565b81830290508183828115156130fe57fe5b0414151561310857fe5b8090505b929150505600a165627a7a72305820b699ba241e7907a1857065016ea4276b8e51c4396c03ffd1a25ee4fea0575dae0029000000000000000000000000000000000000000000000000000000005b5d0380000000000000000000000000000000000000000000000000000000005f4d8eff00000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000030d4000000000000000000000000894d52703566a5bc2e47837a3eeb8eb43381ee29000000000000000000000000a3d779daff51a3c7a4ed7107c7b35d8f5b48767b0000000000000000000000005a5a58dbac64b70712c4dc2d28bffac71eb2bea700000000000000000000000025b94a458d19c97c7be62d1c2653669bccbb3e340000000000000000000000005c524f8b8d94999b42295ee0b6e088a4b43110b4000000000000000000000000ed64142f7d0a4d94ce0e7fe45d12f712fe360bd0000000000000000000000000bede284180c4b539430b0bfecaf1c4adff3ffdda000000000000000000000000ecea235bd2172bcffb7b280090cf06b2b14b193a
Deployed Bytecode
0x608060405260043610610204576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630c7938ca1461020f5780630f02f1d5146102785780631515bc2b146102cd5780631e2c8c6a146102fc57806329b3eea6146103415780632c4e722e146103985780632dfda7a7146103c35780633f4ba83a1461041a5780633f89383d146104315780633fbed97f1461045c5780634042b66f146104b35780634b6753bc146104de5780634c81bb2814610509578063521eb2731461056057806353725e67146105b757806353ed1eae146105fc5780635c975abb1461065357806362066eb314610682578063679aefce146106ad5780636d242972146106d8578063715018a61461070357806375978e4f1461071a57806375b4d78c146107455780638456cb591461079c5780638630a7b2146107b35780638da5cb5b146107de57806397dc351914610835578063a08edce81461088c578063a1df8b1e146108d1578063ab6e907214610900578063b2e6b91214610957578063b7a8807c146109ae578063b7fc4276146109d9578063bc3ec38d14610a30578063bfb2cf8614610a8b578063c37b648c14610ab6578063d0a7fc9d14610ae1578063d7aecb3414610ba2578063ec8ac4d814610bcd578063f2fde38b14610c03578063fc0c546a14610c46578063fd3e50a714610c9d575b61020d33610cf4565b005b34801561021b57600080fd5b5061025e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610dfd565b604051808215151515815260200191505060405180910390f35b34801561028457600080fd5b506102b360048036038101908080356000191690602001909291908035151590602001909291905050506116e8565b604051808215151515815260200191505060405180910390f35b3480156102d957600080fd5b506102e261183b565b604051808215151515815260200191505060405180910390f35b34801561030857600080fd5b5061032760048036038101908080359060200190929190505050611847565b604051808215151515815260200191505060405180910390f35b34801561034d57600080fd5b50610356611915565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103a457600080fd5b506103ad61193f565b6040518082815260200191505060405180910390f35b3480156103cf57600080fd5b506103d8611945565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042657600080fd5b5061042f61196f565b005b34801561043d57600080fd5b50610446611a2f565b6040518082815260200191505060405180910390f35b34801561046857600080fd5b50610471611a39565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104bf57600080fd5b506104c8611a5f565b6040518082815260200191505060405180910390f35b3480156104ea57600080fd5b506104f3611a65565b6040518082815260200191505060405180910390f35b34801561051557600080fd5b5061051e611a6b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056c57600080fd5b50610575611a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105c357600080fd5b506105e260048036038101908080359060200190929190505050611ab7565b604051808215151515815260200191505060405180910390f35b34801561060857600080fd5b50610611611cc3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065f57600080fd5b50610668611ce9565b604051808215151515815260200191505060405180910390f35b34801561068e57600080fd5b50610697611cfc565b6040518082815260200191505060405180910390f35b3480156106b957600080fd5b506106c2611d06565b6040518082815260200191505060405180910390f35b3480156106e457600080fd5b506106ed611d10565b6040518082815260200191505060405180910390f35b34801561070f57600080fd5b50610718611d1a565b005b34801561072657600080fd5b5061072f611e1f565b6040518082815260200191505060405180910390f35b34801561075157600080fd5b5061075a611e25565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a857600080fd5b506107b1611e4b565b005b3480156107bf57600080fd5b506107c8611f0c565b6040518082815260200191505060405180910390f35b3480156107ea57600080fd5b506107f3611f12565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561084157600080fd5b5061084a611f38565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089857600080fd5b506108b760048036038101908080359060200190929190505050611f5e565b604051808215151515815260200191505060405180910390f35b3480156108dd57600080fd5b506108e6612034565b604051808215151515815260200191505060405180910390f35b34801561090c57600080fd5b5061091561204b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096357600080fd5b5061096c612071565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109ba57600080fd5b506109c361209b565b6040518082815260200191505060405180910390f35b3480156109e557600080fd5b506109ee6120a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a3c57600080fd5b50610a71600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120c7565b604051808215151515815260200191505060405180910390f35b348015610a9757600080fd5b50610aa06121c9565b6040518082815260200191505060405180910390f35b348015610ac257600080fd5b50610acb6121cf565b6040518082815260200191505060405180910390f35b348015610aed57600080fd5b50610b8860048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506121d9565b604051808215151515815260200191505060405180910390f35b348015610bae57600080fd5b50610bb76123a2565b6040518082815260200191505060405180910390f35b610c01600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cf4565b005b348015610c0f57600080fd5b50610c44600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123a8565b005b348015610c5257600080fd5b50610c5b612410565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ca957600080fd5b50610cb2612435565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000806004544210158015610d0b57506005544211155b1515610d1657600080fd5b600660149054906101000a900460ff16151515610d3257600080fd5b349150610d3f838361245b565b610d4882612812565b9050610d5f8260035461283090919063ffffffff16565b600381905550610d6f838261284c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188484604051808381526020018281526020019250505060405180910390a3610de68383612f52565b610dee612f56565b610df88383612fc1565b505050565b600080600080600080600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e6557600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357ffb3af8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610efe57600080fd5b505af1158015610f12573d6000803e3d6000fd5b505050506040513d6020811015610f2857600080fd5b8101908080519060200190929190505050965060001515871515141515610f4e57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662a6020b8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b505050506040513d602081101561101057600080fd5b8101908080519060200190929190505050955042861115151561103257600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f85cbae8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156110cb57600080fd5b505af11580156110df573d6000803e3d6000fd5b505050506040513d60208110156110f557600080fd5b8101908080519060200190929190505050945060008511151561111757600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339bead4f8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156111b057600080fd5b505af11580156111c4573d6000803e3d6000fd5b505050506040513d60208110156111da57600080fd5b810190808051906020019092919050505093508973ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151561122757600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639febfb428a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156112c057600080fd5b505af11580156112d4573d6000803e3d6000fd5b505050506040513d60208110156112ea57600080fd5b810190808051906020019092919050505092508215151561130a57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635211e63b8b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156113c757600080fd5b505af11580156113db573d6000803e3d6000fd5b505050506040513d60208110156113f157600080fd5b8101908080519060200190929190505050915060008211151561141357600080fd5b84820390506000811015151561142857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156114ec57600080fd5b505af1158015611500573d6000803e3d6000fd5b505050506040513d602081101561151657600080fd5b810190808051906020019092919050505050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a87d4f498b8b886040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018281526020019350505050602060405180830381600087803b1580156115fd57600080fd5b505af1158015611611573d6000803e3d6000fd5b505050506040513d602081101561162757600080fd5b8101908080519060200190929190505050151561164357600080fd5b61165885601254612fc590919063ffffffff16565b6012819055508973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9e920532103a0094c025a5221792b807c2ff3dda1da49a97787ffc680055b42687428d604051808481526020018381526020018260001916600019168152602001935050505060405180910390a35050505050505092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174657600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f02f1d584846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018215151515815260200192505050602060405180830381600087803b1580156117eb57600080fd5b505af11580156117ff573d6000803e3d6000fd5b505050506040513d602081101561181557600080fd5b8101908080519060200190929190505050151561183157600080fd5b6001905092915050565b60006005544211905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118a557600080fd5b600082121515156118b557600080fd5b81600c819055503373ffffffffffffffffffffffffffffffffffffffff167ff94a4202bb0ea6fe517b54dc3f38aca0054f11bd1499ed82a0873508192e361e600c546040518082815260200191505060405180910390a260019050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60025481565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119cb57600080fd5b600660149054906101000a900460ff1615156119e657600080fd5b6000600660146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600d54905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60055481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b1557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b505050506040513d6020811015611c2557600080fd5b810190808051906020019092919050505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffa1656b9109f62970230d63e1400f9dc7edfb5155c8365931826d68d1269b4d8846040518082815260200191505060405180910390a3919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660149054906101000a900460ff1681565b6000600c54905090565b6000600254905090565b6000601254905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d7657600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ea757600080fd5b600660149054906101000a900460ff16151515611ec357600080fd5b6001600660146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600d5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fbc57600080fd5b60018212151515611fcc57600080fd5b816002819055503373ffffffffffffffffffffffffffffffffffffffff167f6978a60f5460e54199ba8d639bdd673fbc11ec5cf58abfe6a7d88462a7ec609b42600254604051808381526020018281526020019250505060405180910390a260019050919050565b6000600660149054906101000a900460ff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561212557600080fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f28c01cb303b89d02665ba5d587a8c0362fa55a8fc0d6a5e603e1f170d5a6ad4e60405160405180910390a360019050919050565b60125481565b6000600e54905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561223757600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166392e10e0e84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156122e95780820151818401526020810190506122ce565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561232b578082015181840152602081019050612310565b50505050905001945050505050602060405180830381600087803b15801561235257600080fd5b505af1158015612366573d6000803e3d6000fd5b505050506040513d602081101561237c57600080fd5b8101908080519060200190929190505050151561239857600080fd5b6001905092915050565b600c5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561240457600080fd5b61240d81612fde565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561249a57600080fd5b600083141515156124aa57600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390ed940c6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b505050506040513d602081101561255a57600080fd5b81019080805190602001909291905050509150600c54831015151561257e57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156125db57600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561263857600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dc29f7f856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156126f557600080fd5b505af1158015612709573d6000803e3d6000fd5b505050506040513d602081101561271f57600080fd5b81019080805190602001909291905050509050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ce31f716040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156127b857600080fd5b505af11580156127cc573d6000803e3d6000fd5b505050506040513d60208110156127e257600080fd5b81019080805190602001909291905050501561280c5760008160ff161415151561280b57600080fd5b5b50505050565b6000612829600254836130da90919063ffffffff16565b9050919050565b6000818301905082811015151561284357fe5b80905092915050565b6000806000806000806000806000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631be0376d8c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561291757600080fd5b505af115801561292b573d6000803e3d6000fd5b505050506040513d602081101561294157600080fd5b810190808051906020019092919050505098506000891415151561296457600080fd5b4289019750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cb84a838a8c6040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050602060405180830381600087803b158015612a0257600080fd5b505af1158015612a16573d6000803e3d6000fd5b505050506040513d6020811015612a2c57600080fd5b810190808051906020019092919050505096508a42604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612ad75780518252602082019150602081019050602083039250612ab2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902095506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015612be457600080fd5b505af1158015612bf8573d6000803e3d6000fd5b505050506040513d6020811015612c0e57600080fd5b810190808051906020019092919050505094506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015612cdd57600080fd5b505af1158015612cf1573d6000803e3d6000fd5b505050506040513d6020811015612d0757600080fd5b81019080805190602001909291905050509350612d2d848661283090919063ffffffff16565b9250612d448760125461283090919063ffffffff16565b91508183111515612d5457600080fd5b612d678284612fc590919063ffffffff16565b9050612d7e8760125461283090919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce0a5e68c888a8c6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460001916600019168152602001838152602001828152602001945050505050602060405180830381600087803b158015612e6157600080fd5b505af1158015612e75573d6000803e3d6000fd5b505050506040513d6020811015612e8b57600080fd5b81019080805190602001909291905050501515612ea757600080fd5b8a73ffffffffffffffffffffffffffffffffffffffff167fc6f1f3ccbf75538a38979e6be1b841d8d2cdaf8634951e6fae6c4e08c167ef58428b8b348f8d8d8d8d8b604051808b81526020018a815260200189815260200188815260200187815260200186815260200185600019166000191681526020018481526020018381526020018281526020019a505050505050505050505060405180910390a25050505050505050505050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015612fbe573d6000803e3d6000fd5b50565b5050565b6000828211151515612fd357fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561301a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156130ed576000905061310c565b81830290508183828115156130fe57fe5b0414151561310857fe5b8090505b929150505600a165627a7a72305820b699ba241e7907a1857065016ea4276b8e51c4396c03ffd1a25ee4fea0575dae0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000005b5d0380000000000000000000000000000000000000000000000000000000005f4d8eff00000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000030d4000000000000000000000000894d52703566a5bc2e47837a3eeb8eb43381ee29000000000000000000000000a3d779daff51a3c7a4ed7107c7b35d8f5b48767b0000000000000000000000005a5a58dbac64b70712c4dc2d28bffac71eb2bea700000000000000000000000025b94a458d19c97c7be62d1c2653669bccbb3e340000000000000000000000005c524f8b8d94999b42295ee0b6e088a4b43110b4000000000000000000000000ed64142f7d0a4d94ce0e7fe45d12f712fe360bd0000000000000000000000000bede284180c4b539430b0bfecaf1c4adff3ffdda000000000000000000000000ecea235bd2172bcffb7b280090cf06b2b14b193a
-----Decoded View---------------
Arg [0] : _openingTime (uint256): 1532822400
Arg [1] : _closingTime (uint256): 1598918399
Arg [2] : _minimum_weiAmount (uint256): 20000000000000000
Arg [3] : _rate (uint256): 12500
Arg [4] : _admin_wallet (address): 0x894D52703566A5Bc2e47837A3Eeb8eb43381Ee29
Arg [5] : _eth_management_wallet (address): 0xA3d779Daff51A3c7a4eD7107C7B35D8f5b48767b
Arg [6] : _refund_token_wallet (address): 0x5A5A58dBaC64B70712c4dC2D28BFFAc71EB2beA7
Arg [7] : _cot_sale_wallet (address): 0x25B94A458d19C97c7bE62D1c2653669BCCBb3e34
Arg [8] : _whiteList (address): 0x5C524F8B8d94999B42295ee0b6E088a4B43110b4
Arg [9] : _cot (address): 0xed64142f7D0a4d94cE0e7Fe45D12f712fe360BD0
Arg [10] : _deliver (address): 0xBeDE284180C4b539430b0bfECaf1c4AdFf3fFDDa
Arg [11] : _bonus (address): 0xEcea235bd2172BcFFb7B280090cf06B2B14B193A
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005b5d0380
Arg [1] : 000000000000000000000000000000000000000000000000000000005f4d8eff
Arg [2] : 00000000000000000000000000000000000000000000000000470de4df820000
Arg [3] : 00000000000000000000000000000000000000000000000000000000000030d4
Arg [4] : 000000000000000000000000894d52703566a5bc2e47837a3eeb8eb43381ee29
Arg [5] : 000000000000000000000000a3d779daff51a3c7a4ed7107c7b35d8f5b48767b
Arg [6] : 0000000000000000000000005a5a58dbac64b70712c4dc2d28bffac71eb2bea7
Arg [7] : 00000000000000000000000025b94a458d19c97c7be62d1c2653669bccbb3e34
Arg [8] : 0000000000000000000000005c524f8b8d94999b42295ee0b6e088a4b43110b4
Arg [9] : 000000000000000000000000ed64142f7d0a4d94ce0e7fe45d12f712fe360bd0
Arg [10] : 000000000000000000000000bede284180c4b539430b0bfecaf1c4adff3ffdda
Arg [11] : 000000000000000000000000ecea235bd2172bcffb7b280090cf06b2b14b193a
Deployed Bytecode Sourcemap
27517:11292:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21055:21;21065:10;21055:9;:21::i;:::-;27517:11292;35816:1623;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35816:1623:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34142:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34142:193:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25867:156;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25867:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;38528:276;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38528:276:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37776:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37776:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19926:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19926:19:0;;;;;;;;;;;;;;;;;;;;;;;37623:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37623:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;27320:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27320:95:0;;;;;;37925:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37925:101:0;;;;;;;;;;;;;;;;;;;;;;;27864:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27864:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19979:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19979:24:0;;;;;;;;;;;;;;;;;;;;;;;24961:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24961:26:0;;;;;;;;;;;;;;;;;;;;;;;27721:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27721:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19618:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19618:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;35111:184;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35111:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27785:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27785:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26699:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26699:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;38308:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38308:90:0;;;;;;;;;;;;;;;;;;;;;;;34904:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34904:68:0;;;;;;;;;;;;;;;;;;;;;;;33413:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33413:90:0;;;;;;;;;;;;;;;;;;;;;;;931:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;931:114:0;;;;;;27976:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27976:34:0;;;;;;;;;;;;;;;;;;;;;;;28073:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28073:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;27140:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27140:93:0;;;;;;27938:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27938:34:0;;;;;;;;;;;;;;;;;;;;;;;313:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;313:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;27684:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27684:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;34598:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34598:193:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34392:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34392:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;27625:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27625:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;37481:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37481:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;24930:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24930:26:0;;;;;;;;;;;;;;;;;;;;;;;28016:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28016:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;35457:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35457:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28097:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28097:30:0;;;;;;;;;;;;;;;;;;;;;;;38080:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38080:101:0;;;;;;;;;;;;;;;;;;;;;;;33704:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33704:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27900:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27900:32:0;;;;;;;;;;;;;;;;;;;;;;;30015:570;;;;;;;;;;;;;;;;;;;;;;;;;;;;1213:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1213:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19553:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19553:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;28047:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28047:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;30015:570;30106:17;30235:14;25175:11;;25156:15;:30;;:64;;;;;25209:11;;25190:15;:30;;25156:64;25148:73;;;;;;;;26875:6;;;;;;;;;;;26874:7;26866:16;;;;;;;;30126:9;30106:29;;30140:45;30161:12;30175:9;30140:20;:45::i;:::-;30252:26;30268:9;30252:15;:26::i;:::-;30235:43;;30316:24;30330:9;30316;;:13;;:24;;;;:::i;:::-;30304:9;:36;;;;30347:38;30364:12;30378:6;30347:16;:38::i;:::-;30421:12;30395:58;;30409:10;30395:58;;;30435:9;30446:6;30395:58;;;;;;;;;;;;;;;;;;;;;;;;30460:47;30483:12;30497:9;30460:22;:47::i;:::-;30514:15;:13;:15::i;:::-;30534:46;30556:12;30570:9;30534:21;:46::i;:::-;30015:570;;;:::o;35816:1623::-;35904:4;35964:22;36099:26;36264:28;36409:20;36561:23;36719:42;36927:49;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;35989:7;;;;;;;;;;;:20;;;36010:8;35989:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35989:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35989:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35989:30:0;;;;;;;;;;;;;;;;35964:55;;36053:5;36032:26;;:17;:26;;;36024:35;;;;;;;;36128:7;;;;;;;;;;;:32;;;36161:8;36128:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36128:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36128:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36128:42:0;;;;;;;;;;;;;;;;36099:71;;36205:3;36183:18;:25;;36175:34;;;;;;;;36295:7;;;;;;;;;;;:28;;;36324:8;36295:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36295:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36295:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36295:38:0;;;;;;;;;;;;;;;;36264:69;;36369:1;36346:20;:24;36338:33;;;;;;;;36432:7;;;;;;;;;;;:29;;;36462:8;36432:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36432:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36432:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36432:39:0;;;;;;;;;;;;;;;;36409:62;;36500:12;36484:28;;:12;:28;;;36476:37;;;;;;;;36587:7;;;;;;;;;;;:28;;;36616:8;36587:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36587:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36587:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36587:38:0;;;;;;;;;;;;;;;;36561:64;;36639:18;36638:19;36630:28;;;;;;;;36764:7;;;;;;;;;;;:30;;;36795:12;36764:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36764:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36764:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36764:44:0;;;;;;;;;;;;;;;;36719:89;;36858:1;36821:34;:38;36813:47;;;;;;;;37016:20;36979:34;:57;36927:109;;37094:1;37049:41;:46;;37041:55;;;;;;;;37122:5;;;;;;;;;;;:14;;;37137:12;37151:20;37122:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37122:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37122:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;37122:50:0;;;;;;;;;;;;;;;;;37203:7;;;;;;;;;;;:30;;;37234:12;37248:8;37258:20;37203:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37203:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37203:76:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;37203:76:0;;;;;;;;;;;;;;;;37195:85;;;;;;;;37305:41;37325:20;37305:15;;:19;;:41;;;;:::i;:::-;37287:15;:59;;;;37384:12;37358:76;;37372:10;37358:76;;;37398:20;37420:3;37425:8;37358:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35816:1623;;;;;;;;;;;:::o;34142:193::-;34235:4;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;34255:7;;;;;;;;;;;:31;;;34287:8;34297:11;34255:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34255:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34255:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34255:54:0;;;;;;;;;;;;;;;;34247:63;;;;;;;;34324:4;34317:11;;34142:193;;;;:::o;25867:156::-;25909:4;26006:11;;25988:15;:29;25981:36;;25867:156;:::o;38528:276::-;38612:4;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;38658:1;38632:22;:27;;38624:36;;;;;;;;38695:22;38667:17;:51;;;;38751:10;38730:51;;;38763:17;;38730:51;;;;;;;;;;;;;;;;;;38795:4;38788:11;;38528:276;;;:::o;37776:93::-;37824:7;37845:19;;;;;;;;;;;37838:26;;37776:93;:::o;19926:19::-;;;;:::o;37623:104::-;37680:7;37701:21;;;;;;;;;;;37694:28;;37623:104;:::o;27320:95::-;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;27035:6;;;;;;;;;;;27027:15;;;;;;;;27383:5;27374:6;;:14;;;;;;;;;;;;;;;;;;27400:9;;;;;;;;;;27320:95::o;37925:101::-;37981:7;38002:19;;37995:26;;37925:101;:::o;27864:30::-;;;;;;;;;;;;;:::o;19979:24::-;;;;:::o;24961:26::-;;;;:::o;27721:36::-;;;;;;;;;;;;;:::o;19618:21::-;;;;;;;;;;;;;:::o;35111:184::-;35173:4;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;35183:5;;;;;;;;;;;:14;;;35198:19;;;;;;;;;;;35219:6;35183:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35183:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35183:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35183:43:0;;;;;;;;;;;;;;;;;35262:19;;;;;;;;;;;35238:52;;35250:10;35238:52;;;35283:6;35238:52;;;;;;;;;;;;;;;;;;35111:184;;;:::o;27785:34::-;;;;;;;;;;;;;:::o;26699:26::-;;;;;;;;;;;;;:::o;38308:90::-;38356:7;38376:17;;38369:24;;38308:90;:::o;34904:68::-;34943:7;34963:4;;34956:11;;34904:68;:::o;33413:90::-;33462:7;33482:15;;33475:22;;33413:90;:::o;931:114::-;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;1008:5;;;;;;;;;;;989:25;;;;;;;;;;;;1037:1;1021:5;;:18;;;;;;;;;;;;;;;;;;931:114::o;27976:34::-;;;;:::o;28073:18::-;;;;;;;;;;;;;:::o;27140:93::-;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;26875:6;;;;;;;;;;;26874:7;26866:16;;;;;;;;27204:4;27195:6;;:13;;;;;;;;;;;;;;;;;;27220:7;;;;;;;;;;27140:93::o;27938:34::-;;;;:::o;313:20::-;;;;;;;;;;;;;:::o;27684:32::-;;;;;;;;;;;;;:::o;34598:193::-;34659:4;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;34689:1;34677:8;:13;;34669:22;;;;;;;;34713:8;34698:4;:24;;;;34746:10;34734:34;;;34758:3;34763:4;;34734:34;;;;;;;;;;;;;;;;;;;;;;;;34782:4;34775:11;;34598:193;;;:::o;34392:67::-;34431:4;34448:6;;;;;;;;;;;34441:13;;34392:67;:::o;27625:27::-;;;;;;;;;;;;;:::o;37481:85::-;37528:7;37549:12;;;;;;;;;;;37542:19;;37481:85;:::o;24930:26::-;;;;:::o;28016:27::-;;;;;;;;;;;;;:::o;35457:174::-;35525:4;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;35557:4;35535:19;;:26;;;;;;;;;;;;;;;;;;35605:4;35573:37;;35593:10;35573:37;;;;;;;;;;;;35622:4;35615:11;;35457:174;;;:::o;28097:30::-;;;;:::o;38080:101::-;38136:7;38157:19;;38150:26;;38080:101;:::o;33704:190::-;33800:4;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;33820:7;;;;;;;;;;;:24;;;33845:6;33853:14;33820:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;33820:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;33820:48:0;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33820:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33820:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33820:48:0;;;;;;;;;;;;;;;;33812:57;;;;;;;;33883:4;33876:11;;33704:190;;;;:::o;27900:32::-;;;;:::o;1213:105::-;816:5;;;;;;;;;;;802:19;;:10;:19;;;794:28;;;;;;;;1283:29;1302:9;1283:18;:29::i;:::-;1213:105;:::o;19553:18::-;;;;;;;;;;;;;:::o;28047:22::-;;;;;;;;;;;;;:::o;30873:836::-;31055:38;31407:17;30991:1;30967:26;;:12;:26;;;;30959:35;;;;;;;;31021:1;31007:10;:15;;30999:24;;;;;;;;31096:5;;;;;;;;;;;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31096:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31096:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31096:38:0;;;;;;;;;;;;;;;;31055:79;;31196:17;;31182:10;:31;;31174:40;;;;;;;;31281:12;;;;;;;;;;;31265:28;;:12;:28;;;;31257:37;;;;;;;;31323:21;;;;;;;;;;;31307:37;;:12;:37;;;;31299:46;;;;;;;;31427:10;;;;;;;;;;;:20;;;31448:12;31427:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31427:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31427:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31427:34:0;;;;;;;;;;;;;;;;31407:54;;31622:10;;;;;;;;;;;:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31622:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31622:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31622:41:0;;;;;;;;;;;;;;;;31618:85;;;31695:1;31680:11;:16;;;;31671:26;;;;;;;;31618:85;30873:836;;;;:::o;24343:125::-;24416:7;24442:20;24457:4;;24442:10;:14;;:20;;;;:::i;:::-;24435:27;;24343:125;;;:::o;5211:127::-;5269:9;5295:1;5291;:5;5287:9;;5315:1;5310;:6;;5303:14;;;;;;5331:1;5324:8;;5211:127;;;;:::o;31953:1404::-;32090:20;32247;32328:26;32436:15;32549:31;32626:26;32692:24;32772:30;32916:25;32113:7;;;;;;;;;;;:23;;;32137:12;32113:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32113:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32113:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32113:37:0;;;;;;;;;;;;;;;;32090:60;;32181:1;32165:12;:17;;32157:26;;;;;;;;32285:3;32270:12;:18;32247:41;;32357:5;;;;;;;;;;;:20;;;32378:12;32392;32357:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32357:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32357:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32357:48:0;;;;;;;;;;;;;;;;32328:77;;32481:12;32494:3;32464:34;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;32464:34:0;;;32454:45;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;32454:45:0;;;;;;;;;;;;;;;;32436:63;;32583:5;;;;;;;;;;;:15;;;32599;;;;;;;;;;;32583:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32583:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32583:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32583:32:0;;;;;;;;;;;;;;;;32549:66;;32655:5;;;;;;;;;;;:15;;;32679:4;32655:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32655:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32655:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32655:30:0;;;;;;;;;;;;;;;;32626:59;;32720:47;32748:18;32720:23;:27;;:47;;;;:::i;:::-;32692:75;;32805:39;32825:18;32805:15;;:19;;:39;;;;:::i;:::-;32772:72;;32882:22;32863:16;:41;32855:50;;;;;;;;32944:44;32965:22;32944:16;:20;;:44;;;;:::i;:::-;32916:72;;33015:39;33035:18;33015:15;;:19;;:39;;;;:::i;:::-;32997:15;:57;;;;33069:7;;;;;;;;;;;:29;;;33099:12;33113:7;33122:18;33143:12;33069:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33069:87:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33069:87:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33069:87:0;;;;;;;;;;;;;;;;33061:96;;;;;;;;33188:12;33169:183;;;33202:3;33207:12;33221;33235:9;33246:12;33260:18;33280:7;33289:23;33314:18;33334:17;33169:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31953:1404;;;;;;;;;;;:::o;23960:138::-;;;:::o;24552:73::-;24593:6;;;;;;;;;;;:15;;:26;24609:9;24593:26;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24593:26:0;24552:73::o;22727:137::-;;;:::o;5031:113::-;5089:7;5117:1;5112;:6;;5105:14;;;;;;5137:1;5133;:5;5126:12;;5031:113;;;;:::o;1459:175::-;1551:1;1530:23;;:9;:23;;;;1522:32;;;;;;;;1594:9;1566:38;;1587:5;;;;;;;;;;;1566:38;;;;;;;;;;;;1619:9;1611:5;;:17;;;;;;;;;;;;;;;;;;1459:175;:::o;4166:384::-;4224:9;4459:1;4454;:6;4450:37;;;4478:1;4471:8;;;;4450:37;4503:1;4499;:5;4495:9;;4527:1;4522;4518;:5;;;;;;;;:10;4511:18;;;;;;4543:1;4536:8;;4166:384;;;;;:::o
Swarm Source
bzzr://b699ba241e7907a1857065016ea4276b8e51c4396c03ffd1a25ee4fea0575dae
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.