Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 454 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Bounty Tok... | 7519956 | 1983 days ago | IN | 0 ETH | 0.00022806 | ||||
Add Many To Whit... | 7396727 | 2002 days ago | IN | 0 ETH | 0.00020797 | ||||
Claim Bounty Tok... | 7373118 | 2006 days ago | IN | 0 ETH | 0.00011403 | ||||
Claim Bounty Tok... | 7365893 | 2007 days ago | IN | 0 ETH | 0.00011403 | ||||
Claim Bounty Tok... | 7298750 | 2018 days ago | IN | 0 ETH | 0.00017104 | ||||
Add To Whitelist | 7264455 | 2024 days ago | IN | 0 ETH | 0.0002358 | ||||
Claim Bounty Tok... | 7245172 | 2029 days ago | IN | 0 ETH | 0.00028508 | ||||
Claim Bounty Tok... | 7241475 | 2030 days ago | IN | 0 ETH | 0.00233765 | ||||
Add To Whitelist | 7234876 | 2031 days ago | IN | 0 ETH | 0.0002358 | ||||
Add Bounty | 7234864 | 2031 days ago | IN | 0 ETH | 0.00060536 | ||||
Set Account Veri... | 7234858 | 2031 days ago | IN | 0 ETH | 0.00046 | ||||
Add Bounty | 7204854 | 2038 days ago | IN | 0 ETH | 0.00016071 | ||||
Set Account Veri... | 7204851 | 2038 days ago | IN | 0 ETH | 0.000138 | ||||
Claim Bounty Tok... | 7187075 | 2042 days ago | IN | 0 ETH | 0.00002739 | ||||
Add Bounty | 7173709 | 2045 days ago | IN | 0 ETH | 0.0001609 | ||||
Set Account Veri... | 7153195 | 2049 days ago | IN | 0 ETH | 0.00018518 | ||||
Add Many To Whit... | 7153191 | 2049 days ago | IN | 0 ETH | 0.00081033 | ||||
Claim Bounty Tok... | 7138890 | 2052 days ago | IN | 0 ETH | 0.00233765 | ||||
Claim Bounty Tok... | 7129961 | 2054 days ago | IN | 0 ETH | 0.0014254 | ||||
Claim Bounty Tok... | 7129943 | 2054 days ago | IN | 0 ETH | 0.0014254 | ||||
Claim Bounty Tok... | 7129762 | 2054 days ago | IN | 0 ETH | 0.00233765 | ||||
Claim Bounty Tok... | 7125208 | 2055 days ago | IN | 0 ETH | 0.00005402 | ||||
Claim Bounty Tok... | 7105948 | 2058 days ago | IN | 0 ETH | 0.00034209 | ||||
Claim Bounty Tok... | 7105900 | 2058 days ago | IN | 0 ETH | 0.00025209 | ||||
Claim Token | 7103464 | 2059 days ago | IN | 0 ETH | 0.00034354 |
Loading...
Loading
Contract Name:
ACATokenSale
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-04-18 */ pragma solidity ^0.4.19; /** * @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) { if (a == 0) { return 0; } uint256 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 c; } /** * @dev Substracts 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) { uint256 c = a + b; assert(c >= a); return c; } } contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() 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 transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title RefundVault * @dev This contract is used for storing funds while a crowdsale * is in progress. Supports refunding the money if crowdsale fails, * and forwarding it if crowdsale is successful. */ contract RefundVault is Ownable { using SafeMath for uint256; enum State { Active, Refunding, Closed } mapping (address => uint256) public deposited; address public wallet; State public state; event Closed(); event RefundsEnabled(); event Refunded(address indexed beneficiary, uint256 weiAmount); /** * @param _wallet Vault address */ function RefundVault(address _wallet) public { require(_wallet != address(0)); wallet = _wallet; state = State.Active; } /** * @param investor Investor address */ function deposit(address investor) onlyOwner public payable { require(state == State.Active); deposited[investor] = deposited[investor].add(msg.value); } function close() onlyOwner public { require(state == State.Active); state = State.Closed; Closed(); wallet.transfer(this.balance); } function enableRefunds() onlyOwner public { require(state == State.Active); state = State.Refunding; RefundsEnabled(); } /** * @param investor Investor address */ function refund(address investor) public { require(state == State.Refunding); uint256 depositedValue = deposited[investor]; deposited[investor] = 0; investor.transfer(depositedValue); Refunded(investor, depositedValue); } } 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); } 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); } contract ACAToken is ERC20 { using SafeMath for uint256; address public owner; address public admin; address public saleAddress; string public name = "ACA Network Token"; string public symbol = "ACA"; uint8 public decimals = 18; uint256 totalSupply_; mapping (address => mapping (address => uint256)) internal allowed; mapping (address => uint256) balances; bool transferable = false; mapping (address => bool) internal transferLocked; event Genesis(address owner, uint256 value); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event AdminTransferred(address indexed previousAdmin, address indexed newAdmin); event Burn(address indexed burner, uint256 value); event LogAddress(address indexed addr); event LogUint256(uint256 value); event TransferLock(address indexed target, bool value); // modifiers modifier onlyOwner() { require(msg.sender == owner); _; } modifier onlyAdmin() { require(msg.sender == owner || msg.sender == admin); _; } modifier canTransfer(address _from, address _to) { require(_to != address(0x0)); require(_to != address(this)); if ( _from != owner && _from != admin ) { require(transferable); require (!transferLocked[_from]); } _; } // constructor function ACAToken(uint256 _totalSupply, address _saleAddress, address _admin) public { require(_totalSupply > 0); owner = msg.sender; require(_saleAddress != address(0x0)); require(_saleAddress != address(this)); require(_saleAddress != owner); require(_admin != address(0x0)); require(_admin != address(this)); require(_admin != owner); require(_admin != _saleAddress); admin = _admin; saleAddress = _saleAddress; totalSupply_ = _totalSupply; balances[owner] = totalSupply_; approve(saleAddress, totalSupply_); emit Genesis(owner, totalSupply_); } // permission related function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); require(newOwner != address(this)); require(newOwner != admin); owner = newOwner; emit OwnershipTransferred(owner, newOwner); } function transferAdmin(address _newAdmin) public onlyOwner { require(_newAdmin != address(0)); require(_newAdmin != address(this)); require(_newAdmin != owner); admin = _newAdmin; emit AdminTransferred(admin, _newAdmin); } function setTransferable(bool _transferable) public onlyAdmin { transferable = _transferable; } function isTransferable() public view returns (bool) { return transferable; } function transferLock() public returns (bool) { transferLocked[msg.sender] = true; emit TransferLock(msg.sender, true); return true; } function manageTransferLock(address _target, bool _value) public onlyAdmin returns (bool) { transferLocked[_target] = _value; emit TransferLock(_target, _value); return true; } function transferAllowed(address _target) public view returns (bool) { return (transferable && transferLocked[_target] == false); } // token related function totalSupply() public view returns (uint256) { return totalSupply_; } function transfer(address _to, uint256 _value) canTransfer(msg.sender, _to) public returns (bool) { require(_value <= balances[msg.sender]); // SafeMath.sub will throw if there is not enough balance. balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } function balanceOfOwner() public view returns (uint256 balance) { return balances[owner]; } function transferFrom(address _from, address _to, uint256 _value) public canTransfer(_from, _to) returns (bool) { require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } function approve(address _spender, uint256 _value) public canTransfer(msg.sender, _spender) returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; } function increaseApproval(address _spender, uint _addedValue) public canTransfer(msg.sender, _spender) returns (bool) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval(address _spender, uint _subtractedValue) public canTransfer(msg.sender, _spender) returns (bool) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function burn(uint256 _value) public { require(_value <= balances[msg.sender]); // no need to require value <= totalSupply, since that would imply the // sender's balance is greater than the totalSupply, which *should* be an assertion failure address burner = msg.sender; balances[burner] = balances[burner].sub(_value); totalSupply_ = totalSupply_.sub(_value); emit Burn(burner, _value); } function emergencyERC20Drain(ERC20 _token, uint256 _amount) public onlyOwner { _token.transfer(owner, _amount); } } contract ACATokenSale { using SafeMath for uint256; address public owner; address public admin; address public wallet; ACAToken public token; uint256 totalSupply; struct StageInfo { uint256 opening; uint256 closing; uint256 capacity; uint256 minimumWei; uint256 maximumWei; uint256 rate; uint256 sold; } bool public tokenSaleEnabled = false; mapping(address => bool) public whitelist; mapping(address => bool) public kyclist; mapping(address => bool) public whitelistBonus; uint256 public whitelistBonusClosingTime; uint256 public whitelistBonusSent = 0; uint256 public whitelistBonusRate; uint256 public whitelistBonusAmount; mapping (address => uint256) public sales; uint256 public softCap; uint256 public hardCap; uint256 public weiRaised = 0; RefundVault public vault; mapping (address => address) public referrals; uint256 public referralAmount; uint256 public referralRateInviter; uint256 public referralRateInvitee; uint256 public referralSent = 0; bool public referralDone = false; mapping (address => uint256) public bounties; uint256 public bountyAmount; uint256 public bountySent = 0; StageInfo[] public stages; uint256 public currentStage = 0; bool public isFinalized = false; bool public isClaimable = false; // events event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event AdminTransferred(address indexed previousAdmin, address indexed newAdmin); event TokenSaleCreated(address indexed wallet, uint256 totalSupply); event StageAdded(uint256 openingTime, uint256 closingTime, uint256 capacity, uint256 minimumWei, uint256 maximumWei, uint256 rate); event TokenSaleEnabled(); event WhitelistUpdated(address indexed beneficiary, bool flag); event VerificationUpdated(address indexed beneficiary, bool flag); event BulkWhitelistUpdated(address[] beneficiary, bool flag); event BulkVerificationUpdated(address[] beneficiary, bool flag); event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount); event TokenClaimed(address indexed beneficiary, uint256 amount); event Finalized(); event BountySetupDone(); event BountyUpdated(address indexed target, bool flag, uint256 amount); event PurchaseReferral(address indexed beneficiary, uint256 amount); event StageUpdated(uint256 stage); event StageCapReached(uint256 stage); event ReferralCapReached(); // do not use this on mainnet! event LogAddress(address indexed addr); event LogUint256(uint256 value); // modifiers modifier onlyOwner() { require(msg.sender == owner); _; } modifier onlyAdmin() { require(msg.sender == owner || msg.sender == admin); _; } modifier onlyWhileOpen { require(tokenSaleEnabled == true); require(now >= stages[currentStage].opening && now <= stages[currentStage].closing); _; } modifier isVerified(address _beneficiary) { require(whitelist[_beneficiary] == true); require(kyclist[_beneficiary] == true); _; } modifier claimable { require(isFinalized == true || isClaimable == true); require(isGoalReached()); _; } // getters function isEnabled() public view returns (bool) { return tokenSaleEnabled; } function isClosed() public view returns (bool) { return now > stages[stages.length - 1].closing; } function isGoalReached() public view returns (bool) { return getTotalTokenSold() >= softCap; } function getTotalTokenSold() public view returns (uint256) { uint256 sold = 0; for ( uint i = 0; i < stages.length; ++i ) { sold = sold.add(stages[i].sold); } return sold; } function getOpeningTime() public view returns (uint256) { return stages[currentStage].opening; } function getOpeningTimeByStage(uint _index) public view returns (uint256) { require(_index < stages.length); return stages[_index].opening; } function getClosingTime() public view returns (uint256) { return stages[currentStage].closing; } function getClosingTimeByStage(uint _index) public view returns (uint256) { require(_index < stages.length); return stages[_index].closing; } function getCurrentCapacity() public view returns (uint256) { return stages[currentStage].capacity; } function getCapacity(uint _index) public view returns (uint256) { require(_index < stages.length); return stages[_index].capacity; } function getCurrentSold() public view returns (uint256) { return stages[currentStage].sold; } function getSold(uint _index) public view returns (uint256) { require(_index < stages.length); return stages[_index].sold; } function getCurrentRate() public view returns (uint256) { return stages[currentStage].rate; } function getRate(uint _index) public view returns (uint256) { require(_index < stages.length); return stages[_index].rate; } function getRateWithoutBonus() public view returns (uint256) { return stages[stages.length - 1].rate; } function getSales(address _beneficiary) public view returns (uint256) { return sales[_beneficiary]; } // setter function setSalePeriod(uint _index, uint256 _openingTime, uint256 _closingTime) onlyOwner public { require(_openingTime > now); require(_closingTime > _openingTime); require(_index > currentStage); require(_index < stages.length); stages[_index].opening = _openingTime; stages[_index].closing = _closingTime; } function setRate(uint _index, uint256 _rate) onlyOwner public { require(_index > currentStage); require(_index < stages.length); require(_rate > 0); stages[_index].rate = _rate; } function setCapacity(uint _index, uint256 _capacity) onlyOwner public { require(_index > currentStage); require(_index < stages.length); require(_capacity > 0); stages[_index].capacity = _capacity; } function setClaimable(bool _claimable) onlyOwner public { if ( _claimable == true ) { require(isGoalReached()); } isClaimable = _claimable; } function addPrivateSale(uint256 _amount) onlyOwner public { require(currentStage == 0); require(_amount > 0); require(_amount < stages[0].capacity.sub(stages[0].sold)); stages[0].sold = stages[0].sold.add(_amount); } function subPrivateSale(uint256 _amount) onlyOwner public { require(currentStage == 0); require(_amount > 0); require(stages[0].sold > _amount); stages[0].sold = stages[0].sold.sub(_amount); } // permission function setAdmin(address _newAdmin) public onlyOwner { require(_newAdmin != address(0x0)); require(_newAdmin != address(this)); require(_newAdmin != owner); emit AdminTransferred(admin, _newAdmin); admin = _newAdmin; } function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); require(newOwner != address(this)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } // constructor function ACATokenSale( address _wallet, address _admin, uint256 _totalSupply, uint256 _softCap, uint256 _hardCap) public { owner = msg.sender; require(_admin != address(0)); require(_wallet != address(0)); require(_totalSupply > 0); require(_softCap > 0); require(_hardCap > _softCap); admin = _admin; wallet = _wallet; totalSupply = _totalSupply; softCap = _softCap; hardCap = _hardCap; emit TokenSaleCreated(wallet, _totalSupply); } // state related function setupBounty( uint256 _referralAmount, uint256 _referralRateInviter, uint256 _referralRateInvitee, uint256 _bountyAmount, uint256 _whitelistBonusClosingTime, uint256 _whitelistBonusRate, uint256 _whitelistBonusAmount ) onlyOwner public { require(_referralAmount > 0); require(_referralRateInviter > 0 && _referralRateInviter < 100); require(_referralRateInvitee > 0 && _referralRateInvitee < 100); require(_whitelistBonusClosingTime > now); require(_whitelistBonusRate > 0); require(_whitelistBonusAmount > _whitelistBonusRate); require(_bountyAmount > 0); referralAmount = _referralAmount; referralRateInviter = _referralRateInviter; referralRateInvitee = _referralRateInvitee; bountyAmount = _bountyAmount; whitelistBonusClosingTime = _whitelistBonusClosingTime; whitelistBonusRate = _whitelistBonusRate; whitelistBonusAmount = _whitelistBonusAmount; emit BountySetupDone(); } function addStage( uint256 _openingTime, uint256 _closingTime, uint256 _capacity, uint256 _minimumWei, uint256 _maximumWei, uint256 _rate) onlyOwner public { require(tokenSaleEnabled == false); // require(_openingTime > now); require(_closingTime > _openingTime); require(_capacity > 0); require(_capacity < hardCap); require(_minimumWei > 0); require(_maximumWei >= _minimumWei); require(_rate > 0); require(_minimumWei.mul(_rate) < _capacity); require(_maximumWei.mul(_rate) < _capacity); if ( stages.length > 0 ) { StageInfo memory prevStage = stages[stages.length - 1]; require(_openingTime > prevStage.closing); } stages.push(StageInfo(_openingTime, _closingTime, _capacity, _minimumWei, _maximumWei, _rate, 0)); emit StageAdded(_openingTime, _closingTime, _capacity, _minimumWei, _maximumWei, _rate); } function setToken(ACAToken _token) onlyOwner public { token = _token; } function enableTokenSale() onlyOwner public returns (bool) { require(stages.length > 0); vault = new RefundVault(wallet); tokenSaleEnabled = true; emit TokenSaleEnabled(); return true; } function updateStage() public returns (uint256) { require(tokenSaleEnabled == true); require(currentStage < stages.length); require(now >= stages[currentStage].opening); uint256 remains = stages[currentStage].capacity.sub(stages[currentStage].sold); if ( now > stages[currentStage].closing ) { uint256 nextStage = currentStage.add(1); if ( remains > 0 && nextStage < stages.length ) { stages[nextStage].capacity = stages[nextStage].capacity.add(remains); remains = stages[nextStage].capacity; } currentStage = nextStage; emit StageUpdated(nextStage); } return remains; } function finalize() onlyOwner public { require(isFinalized == false); require(isClosed()); finalization(); emit Finalized(); isFinalized = true; } function finalization() internal { if (isGoalReached()) { vault.close(); } else { vault.enableRefunds(); } } // transaction function () public payable { buyTokens(msg.sender); } 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); } function _getTokenAmount(uint256 _weiAmount) internal view returns (uint256) { return _weiAmount.mul(getCurrentRate()); } function _getTokenAmountWithoutBonus(uint256 _weiAmount) internal view returns (uint256) { return _weiAmount.mul(getRateWithoutBonus()); } function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal isVerified(_beneficiary) { require(_beneficiary != address(0)); require(_weiAmount != 0); require(tokenSaleEnabled == true); require(now >= stages[currentStage].opening); // lazy execution uint256 remains = updateStage(); require(currentStage < stages.length); require(now >= stages[currentStage].opening && now <= stages[currentStage].closing); require(_weiAmount >= stages[currentStage].minimumWei); require(_weiAmount <= stages[currentStage].maximumWei); uint256 amount = _getTokenAmount(_weiAmount); require(remains > amount); } function _postValidatePurchase(address _beneficiary, uint256 _weiAmount) internal { if ( getCurrentSold() == getCurrentCapacity() ) { currentStage = currentStage.add(1); emit StageUpdated(currentStage); } } function _deliverTokens(address _beneficiary, uint256 _tokenAmount) internal { if ( isClaimable ) { token.transferFrom(owner, _beneficiary, _tokenAmount); } else { sales[_beneficiary] = sales[_beneficiary].add(_tokenAmount); } } function _processPurchase(address _beneficiary, uint256 _tokenAmount) internal { stages[currentStage].sold = stages[currentStage].sold.add(_tokenAmount); _deliverTokens(_beneficiary, _tokenAmount); uint256 weiAmount = msg.value; address inviter = referrals[_beneficiary]; if ( inviter != address(0x0) && referralDone == false ) { uint256 baseRate = _getTokenAmountWithoutBonus(weiAmount); uint256 referralAmountInviter = baseRate.div(100).mul(referralRateInviter); uint256 referralAmountInvitee = baseRate.div(100).mul(referralRateInvitee); uint256 referralRemains = referralAmount.sub(referralSent); if ( referralRemains == 0 ) { referralDone = true; } else { if ( referralAmountInviter >= referralRemains ) { referralAmountInviter = referralRemains; referralAmountInvitee = 0; // priority to inviter emit ReferralCapReached(); referralDone = true; } if ( referralDone == false && referralAmountInviter >= referralRemains ) { referralAmountInvitee = referralRemains.sub(referralAmountInviter); emit ReferralCapReached(); referralDone = true; } uint256 referralAmountTotal = referralAmountInviter.add(referralAmountInvitee); referralSent = referralSent.add(referralAmountTotal); if ( referralAmountInviter > 0 ) { _deliverTokens(inviter, referralAmountInviter); emit PurchaseReferral(inviter, referralAmountInviter); } if ( referralAmountInvitee > 0 ) { _deliverTokens(_beneficiary, referralAmountInvitee); emit PurchaseReferral(_beneficiary, referralAmountInvitee); } } } } function _updatePurchasingState(address _beneficiary, uint256 _weiAmount) internal { // optional override } function _forwardFunds() internal { vault.deposit.value(msg.value)(msg.sender); } // claim function claimToken() public claimable isVerified(msg.sender) returns (bool) { address beneficiary = msg.sender; uint256 amount = sales[beneficiary]; emit TokenClaimed(beneficiary, amount); sales[beneficiary] = 0; return token.transferFrom(owner, beneficiary, amount); } function claimRefund() isVerified(msg.sender) public { require(isFinalized == true); require(!isGoalReached()); vault.refund(msg.sender); } function claimBountyToken() public claimable isVerified(msg.sender) returns (bool) { address beneficiary = msg.sender; uint256 amount = bounties[beneficiary]; emit TokenClaimed(beneficiary, amount); bounties[beneficiary] = 0; return token.transferFrom(owner, beneficiary, amount); } // bounty function addBounty(address _address, uint256 _amount) public onlyAdmin isVerified(_address) returns (bool) { require(bountyAmount.sub(bountySent) >= _amount); bountySent = bountySent.add(_amount); bounties[_address] = bounties[_address].add(_amount); emit BountyUpdated(_address, true, _amount); } function delBounty(address _address, uint256 _amount) public onlyAdmin isVerified(_address) returns (bool) { require(bounties[_address] >= _amount); require(_amount >= bountySent); bountySent = bountySent.sub(_amount); bounties[_address] = bounties[_address].sub(_amount); emit BountyUpdated(_address, false, _amount); } function getBountyAmount(address _address) public view returns (uint256) { return bounties[_address]; } // referral function addReferral(address _inviter, address _invitee) public onlyAdmin isVerified(_inviter) isVerified(_invitee) returns (bool) { referrals[_invitee] = _inviter; } function delReferral(address _inviter, address _invitee) public onlyAdmin isVerified(_inviter) isVerified(_invitee) returns (bool) { delete referrals[_invitee]; } function getReferral(address _address) public view returns (address) { return referrals[_address]; } // whitelist function _deliverWhitelistBonus(address _beneficiary) internal { if ( _beneficiary == address(0x0) ) { return; } if ( whitelistBonus[_beneficiary] == true ) { return; } if (whitelistBonusAmount.sub(whitelistBonusSent) > whitelistBonusRate ) { whitelistBonus[_beneficiary] = true; whitelistBonusSent = whitelistBonusSent.add(whitelistBonusRate); bounties[_beneficiary] = bounties[_beneficiary].add(whitelistBonusRate); emit BountyUpdated(_beneficiary, true, whitelistBonusRate); } } function isAccountWhitelisted(address _beneficiary) public view returns (bool) { return whitelist[_beneficiary]; } function addToWhitelist(address _beneficiary) external onlyAdmin { whitelist[_beneficiary] = true; if ( whitelistBonus[_beneficiary] == false && now < whitelistBonusClosingTime ) { _deliverWhitelistBonus(_beneficiary); } emit WhitelistUpdated(_beneficiary, true); } function addManyToWhitelist(address[] _beneficiaries) external onlyAdmin { uint256 i = 0; if ( now < whitelistBonusClosingTime ) { for (i = 0; i < _beneficiaries.length; i++) { whitelist[_beneficiaries[i]] = true; _deliverWhitelistBonus(_beneficiaries[i]); } return; } for (i = 0; i < _beneficiaries.length; i++) { whitelist[_beneficiaries[i]] = true; } emit BulkWhitelistUpdated(_beneficiaries, true); } function removeFromWhitelist(address _beneficiary) external onlyAdmin { whitelist[_beneficiary] = false; emit WhitelistUpdated(_beneficiary, false); } // kyc function isAccountVerified(address _beneficiary) public view returns (bool) { return kyclist[_beneficiary]; } function setAccountVerified(address _beneficiary) external onlyAdmin { kyclist[_beneficiary] = true; emit VerificationUpdated(_beneficiary, true); } function setManyAccountsVerified(address[] _beneficiaries) external onlyAdmin { for (uint256 i = 0; i < _beneficiaries.length; i++) { kyclist[_beneficiaries[i]] = true; } emit BulkVerificationUpdated(_beneficiaries, true); } function unverifyAccount(address _beneficiary) external onlyAdmin { kyclist[_beneficiary] = false; emit VerificationUpdated(_beneficiary, false); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"whitelistBonusSent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_inviter","type":"address"},{"name":"_invitee","type":"address"}],"name":"addReferral","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"setToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimBountyToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"whitelistBonusClosingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getOpeningTimeByStage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralSent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalTokenSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getClosingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_claimable","type":"bool"}],"name":"setClaimable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"enableTokenSale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"getReferral","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getClosingTimeByStage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint256"},{"name":"_rate","type":"uint256"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_referralAmount","type":"uint256"},{"name":"_referralRateInviter","type":"uint256"},{"name":"_referralRateInvitee","type":"uint256"},{"name":"_bountyAmount","type":"uint256"},{"name":"_whitelistBonusClosingTime","type":"uint256"},{"name":"_whitelistBonusRate","type":"uint256"},{"name":"_whitelistBonusAmount","type":"uint256"}],"name":"setupBounty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelistBonusAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"subPrivateSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_amount","type":"uint256"}],"name":"delBounty","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_inviter","type":"address"},{"name":"_invitee","type":"address"}],"name":"delReferral","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentStage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRateWithoutBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelistBonusRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isClaimable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"stages","outputs":[{"name":"opening","type":"uint256"},{"name":"closing","type":"uint256"},{"name":"capacity","type":"uint256"},{"name":"minimumWei","type":"uint256"},{"name":"maximumWei","type":"uint256"},{"name":"rate","type":"uint256"},{"name":"sold","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"isAccountWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_amount","type":"uint256"}],"name":"addBounty","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"removeFromWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"isAccountVerified","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiaries","type":"address[]"}],"name":"addManyToWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"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":"softCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"setAccountVerified","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bountySent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenSaleEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"referrals","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentCapacity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getCapacity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updateStage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"getBountyAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"unverifyAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"sales","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bountyAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"addPrivateSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"bounties","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isGoalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOpeningTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralDone","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"kyclist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralRateInviter","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralRateInvitee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint256"},{"name":"_capacity","type":"uint256"}],"name":"setCapacity","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_openingTime","type":"uint256"},{"name":"_closingTime","type":"uint256"},{"name":"_capacity","type":"uint256"},{"name":"_minimumWei","type":"uint256"},{"name":"_maximumWei","type":"uint256"},{"name":"_rate","type":"uint256"}],"name":"addStage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiaries","type":"address[]"}],"name":"setManyAccountsVerified","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"getSales","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"addToWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistBonus","outputs":[{"name":"","type":"bool"}],"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":"_index","type":"uint256"},{"name":"_openingTime","type":"uint256"},{"name":"_closingTime","type":"uint256"}],"name":"setSalePeriod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_wallet","type":"address"},{"name":"_admin","type":"address"},{"name":"_totalSupply","type":"uint256"},{"name":"_softCap","type":"uint256"},{"name":"_hardCap","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"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":"previousAdmin","type":"address"},{"indexed":true,"name":"newAdmin","type":"address"}],"name":"AdminTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"wallet","type":"address"},{"indexed":false,"name":"totalSupply","type":"uint256"}],"name":"TokenSaleCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"openingTime","type":"uint256"},{"indexed":false,"name":"closingTime","type":"uint256"},{"indexed":false,"name":"capacity","type":"uint256"},{"indexed":false,"name":"minimumWei","type":"uint256"},{"indexed":false,"name":"maximumWei","type":"uint256"},{"indexed":false,"name":"rate","type":"uint256"}],"name":"StageAdded","type":"event"},{"anonymous":false,"inputs":[],"name":"TokenSaleEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"flag","type":"bool"}],"name":"WhitelistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"flag","type":"bool"}],"name":"VerificationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address[]"},{"indexed":false,"name":"flag","type":"bool"}],"name":"BulkWhitelistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address[]"},{"indexed":false,"name":"flag","type":"bool"}],"name":"BulkVerificationUpdated","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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenClaimed","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[],"name":"BountySetupDone","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"flag","type":"bool"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"BountyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PurchaseReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"stage","type":"uint256"}],"name":"StageUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"stage","type":"uint256"}],"name":"StageCapReached","type":"event"},{"anonymous":false,"inputs":[],"name":"ReferralCapReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"}],"name":"LogAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"value","type":"uint256"}],"name":"LogUint256","type":"event"}]
Contract Creation Code
60606040526005805460ff199081169091556000600a8190556010819055601681905560178054909216909155601a819055601c55601d805461ffff1916905534156200004b57600080fd5b60405160a08062003d1c833981016040528080519190602001805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a0390811691909117909155909250851615159050620000af57600080fd5b600160a060020a0385161515620000c557600080fd5b60008311620000d357600080fd5b60008211620000e157600080fd5b818111620000ee57600080fd5b60018054600160a060020a03808716600160a060020a03199283161790925560028054888416921691909117908190556004859055600e849055600f839055167f481b5185767db188561146464c5ed74c16b5d1c565a5a22f09d5af9dedcd4dc28460405190815260200160405180910390a25050505050613ba680620001766000396000f300606060405260043610620003c55763ffffffff60e060020a600035041663084a40118114620003d25780630b5c3f8714620003fa5780630b9ea6c81462000436578063144fa6d7146200044c57806314aa0eaa146200046e5780631720684a14620004845780631f5c6f67146200049a5780631fb8875d14620004b35780632ecd702014620004c95780632f9cb9aa14620004df578063378c93ad14620004f557806339a13fb314620005105780633b0f0f2f14620005265780633bc578fe14620005645780634042b66f146200057d5780634451d89f146200059357806346df2ccb14620005a95780634bb278f314620005c557806351eecc2314620005db578063521eb273146200060657806356a765c4146200061c5780635776409414620006325780635830f2ea146200064b57806358f6a7db14620006645780635a93bf7114620006895780635bf5d54c14620006b15780635c06d88014620006c757806368db96a614620006dd5780636aa633b614620006f35780636bd68a8f1462000709578063704b6c02146200071f57806374478bb31462000741578063845ddcb214620007575780638907e78714620007ae578063899a1e3614620007d05780638ab1d68114620007f55780638ba209b614620008175780638c10671c14620008395780638d4e4083146200085a5780638da5cb5b1462000870578063906a26e014620008865780639075f124146200089c57806390c3229514620008be578063979cf82414620008d45780639b19251a14620008ea5780639ca423b3146200090c578063aba89198146200092e578063b5545a3c1462000944578063bcd5349f146200095a578063c062f5781462000973578063c1c35e8d1462000989578063c2b6b58c14620009ab578063c2db26fc14620009c1578063c6b9f06a14620009e3578063ccd331bf1462000a05578063cd132aad1462000a1b578063cdfbea581462000a34578063d3eb6f611462000a56578063d74635731462000a6c578063d7ea39c61462000a82578063d8b99cb21462000a98578063dbce1ff71462000aba578063dedeb3ca1462000ad0578063dee2b0581462000ae6578063df6ee6b71462000b02578063e071681d1462000b2a578063e16bd3b71462000b4b578063e43252d71462000b6d578063e6af8f0d1462000b8f578063ec8ac4d81462000bb1578063ec9723ad1462000bc7578063f2fde38b1462000be6578063f7fb07b01462000c08578063f851a4401462000c1e578063fb86a4041462000c34578063fbfa77cf1462000c4a578063fc0c546a1462000c60578063ff5977901462000c76575b620003d03362000c8f565b005b3415620003de57600080fd5b620003e862000d45565b60405190815260200160405180910390f35b34156200040657600080fd5b62000422600160a060020a036004358116906024351662000d4b565b604051901515815260200160405180910390f35b34156200044257600080fd5b620003e862000e75565b34156200045857600080fd5b620003d0600160a060020a036004351662000ea1565b34156200047a57600080fd5b6200042262000eec565b34156200049057600080fd5b620003e862001086565b3415620004a657600080fd5b620003e86004356200108c565b3415620004bf57600080fd5b620003e8620010c6565b3415620004d557600080fd5b620003e8620010cc565b3415620004eb57600080fd5b620003e862001123565b34156200050157600080fd5b620003d060043515156200114e565b34156200051c57600080fd5b62000422620011a6565b34156200053257600080fd5b62000548600160a060020a03600435166200127d565b604051600160a060020a03909116815260200160405180910390f35b34156200057057600080fd5b620003e86004356200129b565b34156200058957600080fd5b620003e8620012d5565b34156200059f57600080fd5b62000422620012db565b3415620005b557600080fd5b620003d060043560243562001456565b3415620005d157600080fd5b620003d0620014c8565b3415620005e757600080fd5b620003d060043560243560443560643560843560a43560c43562001550565b34156200061257600080fd5b6200054862001642565b34156200062857600080fd5b620003e862001651565b34156200063e57600080fd5b620003e860043562001657565b34156200065757600080fd5b620003d060043562001691565b34156200067057600080fd5b62000422600160a060020a036004351660243562001759565b34156200069557600080fd5b62000422600160a060020a0360043581169060243516620018c6565b3415620006bd57600080fd5b620003e8620019ea565b3415620006d357600080fd5b620003e8620019f0565b3415620006e957600080fd5b620003e862001a1e565b3415620006ff57600080fd5b6200042262001a24565b34156200071557600080fd5b620003e862001a2d565b34156200072b57600080fd5b620003d0600160a060020a036004351662001a33565b34156200074d57600080fd5b6200042262001b0e565b34156200076357600080fd5b6200077060043562001b1c565b60405196875260208701959095526040808701949094526060860192909252608085015260a084015260c083019190915260e0909101905180910390f35b3415620007ba57600080fd5b62000422600160a060020a036004351662001b6d565b3415620007dc57600080fd5b62000422600160a060020a036004351660243562001b8b565b34156200080157600080fd5b620003d0600160a060020a036004351662001ce9565b34156200082357600080fd5b62000422600160a060020a036004351662001d79565b34156200084557600080fd5b620003d0600480356024810191013562001d97565b34156200086657600080fd5b6200042262001f26565b34156200087c57600080fd5b6200054862001f2f565b34156200089257600080fd5b620003e862001f3e565b3415620008a857600080fd5b620003d0600160a060020a036004351662001f44565b3415620008ca57600080fd5b620003e862001fd9565b3415620008e057600080fd5b6200042262001fdf565b3415620008f657600080fd5b62000422600160a060020a036004351662001fe8565b34156200091857600080fd5b62000548600160a060020a036004351662001ffd565b34156200093a57600080fd5b620003e862002018565b34156200095057600080fd5b620003d062002043565b34156200096657600080fd5b620003e86004356200212a565b34156200097f57600080fd5b620003e862002164565b34156200099557600080fd5b620003e8600160a060020a036004351662002335565b3415620009b757600080fd5b6200042262002350565b3415620009cd57600080fd5b620003d0600160a060020a036004351662002380565b3415620009ef57600080fd5b620003e8600160a060020a03600435166200240f565b341562000a1157600080fd5b620003e862002421565b341562000a2757600080fd5b620003d060043562002427565b341562000a4057600080fd5b620003e8600160a060020a0360043516620024da565b341562000a6257600080fd5b62000422620024ec565b341562000a7857600080fd5b620003e862002502565b341562000a8e57600080fd5b620004226200252d565b341562000aa457600080fd5b62000422600160a060020a036004351662002536565b341562000ac657600080fd5b620003e86200254b565b341562000adc57600080fd5b620003e862002551565b341562000af257600080fd5b620003d060043560243562002557565b341562000b0e57600080fd5b620003d060043560243560443560643560843560a435620025c9565b341562000b3657600080fd5b620003d060048035602481019101356200282b565b341562000b5757600080fd5b620003e8600160a060020a036004351662002924565b341562000b7957600080fd5b620003d0600160a060020a03600435166200293f565b341562000b9b57600080fd5b62000422600160a060020a036004351662002a0b565b620003d0600160a060020a036004351662000c8f565b341562000bd357600080fd5b620003d060043560243560443562002a20565b341562000bf257600080fd5b620003d0600160a060020a036004351662002ac2565b341562000c1457600080fd5b620003e862002b81565b341562000c2a57600080fd5b6200054862002b95565b341562000c4057600080fd5b620003e862002ba4565b341562000c5657600080fd5b6200054862002baa565b341562000c6c57600080fd5b6200054862002bb9565b341562000c8257600080fd5b620003e860043562002bc8565b34600062000c9e838362002c02565b62000ca98262002dcd565b60105490915062000cc1908363ffffffff62002df116565b60105562000cd0838262002e0c565b82600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a362000d2a8383620030b7565b62000d34620030bb565b62000d4083836200310c565b505050565b600a5481565b6000805433600160a060020a039081169116148062000d78575060015433600160a060020a039081169116145b151562000d8457600080fd5b600160a060020a038316600090815260066020526040902054839060ff16151560011462000db157600080fd5b600160a060020a03811660009081526007602052604090205460ff16151560011462000ddc57600080fd5b600160a060020a038316600090815260066020526040902054839060ff16151560011462000e0957600080fd5b600160a060020a03811660009081526007602052604090205460ff16151560011462000e3457600080fd5b5050600160a060020a039182166000908152601260205260409020805473ffffffffffffffffffffffffffffffffffffffff19169390921692909217905590565b6000601b601c5481548110151562000e8957fe5b90600052602060002090600702016006015490505b90565b60005433600160a060020a0390811691161462000ebd57600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b601d546000908190819060ff1615156001148062000f175750601d5460ff6101009091041615156001145b151562000f2357600080fd5b62000f2d620024ec565b151562000f3957600080fd5b600160a060020a033390811660009081526006602052604090205460ff16151560011462000f6657600080fd5b600160a060020a03811660009081526007602052604090205460ff16151560011462000f9157600080fd5b33600160a060020a0381166000818152601860205260409081902054929550919350907fe42df0d9493dfd0d7f69902c895b94c190a53e8c27876a86f45e7c997d9d8f7c9084905190815260200160405180910390a2600160a060020a038084166000908152601860205260408082208290556003549154918316926323b872dd921690869086905160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156200106757600080fd5b5af115156200107557600080fd5b505050604051805194505050505090565b60095481565b601b5460009082106200109e57600080fd5b601b805483908110620010ad57fe5b9060005260206000209060070201600001549050919050565b60165481565b600080805b601b548110156200111d5762001112601b82815481101515620010f057fe5b9060005260206000209060070201600601548362002df190919063ffffffff16565b9150600101620010d1565b50919050565b6000601b601c548154811015156200113757fe5b906000526020600020906007020160010154905090565b60005433600160a060020a039081169116146200116a57600080fd5b600181151514156200118c5762001180620024ec565b15156200118c57600080fd5b601d80549115156101000261ff0019909216919091179055565b6000805433600160a060020a03908116911614620011c357600080fd5b601b5460009011620011d457600080fd5b600254600160a060020a0316620011ea620034af565b600160a060020a039091168152602001604051809103906000f08015156200121157600080fd5b6011805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556005805460ff191660011790557f887e7ccf5673eef45a5c69179950777b13841a28f0db61febac61f2b8e729de460405160405180910390a150600190565b600160a060020a039081166000908152601260205260409020541690565b601b546000908210620012ad57600080fd5b601b805483908110620012bc57fe5b9060005260206000209060070201600101549050919050565b60105481565b601d546000908190819060ff16151560011480620013065750601d5460ff6101009091041615156001145b15156200131257600080fd5b6200131c620024ec565b15156200132857600080fd5b600160a060020a033390811660009081526006602052604090205460ff1615156001146200135557600080fd5b600160a060020a03811660009081526007602052604090205460ff1615156001146200138057600080fd5b33600160a060020a0381166000818152600d60205260409081902054929550919350907fe42df0d9493dfd0d7f69902c895b94c190a53e8c27876a86f45e7c997d9d8f7c9084905190815260200160405180910390a2600160a060020a038084166000908152600d60205260408082208290556003549154918316926323b872dd921690869086905160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156200106757600080fd5b60005433600160a060020a039081169116146200147257600080fd5b601c5482116200148157600080fd5b601b5482106200149057600080fd5b600081116200149e57600080fd5b80601b83815481101515620014af57fe5b9060005260206000209060070201600501819055505050565b60005433600160a060020a03908116911614620014e457600080fd5b601d5460ff1615620014f557600080fd5b620014ff62002350565b15156200150b57600080fd5b6200151562003179565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a1601d805460ff19166001179055565b60005433600160a060020a039081169116146200156c57600080fd5b600087116200157a57600080fd5b6000861180156200158b5750606486105b15156200159757600080fd5b600085118015620015a85750606485105b1515620015b457600080fd5b428311620015c157600080fd5b60008211620015cf57600080fd5b818111620015dc57600080fd5b60008411620015ea57600080fd5b60138790556014869055601585905560198490556009839055600b829055600c8190557f981375e01cb0539ab3ccafb0b225b129b3057efac5cae04b18d91903641c9ce060405160405180910390a150505050505050565b600254600160a060020a031681565b600c5481565b601b5460009082106200166957600080fd5b601b8054839081106200167857fe5b9060005260206000209060070201600501549050919050565b60005433600160a060020a03908116911614620016ad57600080fd5b601c5415620016bb57600080fd5b60008111620016c957600080fd5b80601b6000815481101515620016db57fe5b906000526020600020906007020160060154111515620016fa57600080fd5b6200173181601b60008154811015156200171057fe5b9060005260206000209060070201600601546200323090919063ffffffff16565b601b805460009081106200174157fe5b90600052602060002090600702016006018190555050565b6000805433600160a060020a039081169116148062001786575060015433600160a060020a039081169116145b15156200179257600080fd5b600160a060020a038316600090815260066020526040902054839060ff161515600114620017bf57600080fd5b600160a060020a03811660009081526007602052604090205460ff161515600114620017ea57600080fd5b600160a060020a038416600090815260186020526040902054839010156200181157600080fd5b601a548310156200182157600080fd5b601a5462001836908463ffffffff6200323016565b601a55600160a060020a03841660009081526018602052604090205462001864908463ffffffff6200323016565b600160a060020a0385166000818152601860205260408082209390935590917f3a9e9b1f8266a9262ade2d291ca7683d067f6624208ed4739f91e660e3c23e3b9190869051911515825260208201526040908101905180910390a25092915050565b6000805433600160a060020a0390811691161480620018f3575060015433600160a060020a039081169116145b1515620018ff57600080fd5b600160a060020a038316600090815260066020526040902054839060ff1615156001146200192c57600080fd5b600160a060020a03811660009081526007602052604090205460ff1615156001146200195757600080fd5b600160a060020a038316600090815260066020526040902054839060ff1615156001146200198457600080fd5b600160a060020a03811660009081526007602052604090205460ff161515600114620019af57600080fd5b5050600160a060020a039091166000908152601260205260409020805473ffffffffffffffffffffffffffffffffffffffff19169055919050565b601c5481565b601b805460009190600019810190811062001a0757fe5b906000526020600020906007020160050154905090565b600b5481565b60055460ff1690565b60135481565b60005433600160a060020a0390811691161462001a4f57600080fd5b600160a060020a038116151562001a6557600080fd5b30600160a060020a031681600160a060020a03161415151562001a8757600080fd5b600054600160a060020a038281169116141562001aa357600080fd5b600154600160a060020a0380831691167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b601d54610100900460ff1681565b601b80548290811062001b2b57fe5b90600052602060002090600702016000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b600160a060020a031660009081526006602052604090205460ff1690565b6000805433600160a060020a039081169116148062001bb8575060015433600160a060020a039081169116145b151562001bc457600080fd5b600160a060020a038316600090815260066020526040902054839060ff16151560011462001bf157600080fd5b600160a060020a03811660009081526007602052604090205460ff16151560011462001c1c57600080fd5b8262001c36601a546019546200323090919063ffffffff16565b101562001c4257600080fd5b601a5462001c57908463ffffffff62002df116565b601a55600160a060020a03841660009081526018602052604090205462001c85908463ffffffff62002df116565b600160a060020a0385166000818152601860205260409081902092909255907f3a9e9b1f8266a9262ade2d291ca7683d067f6624208ed4739f91e660e3c23e3b90600190869051911515825260208201526040908101905180910390a25092915050565b60005433600160a060020a039081169116148062001d15575060015433600160a060020a039081169116145b151562001d2157600080fd5b600160a060020a038116600081815260066020526040808220805460ff191690557ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d919051901515815260200160405180910390a250565b600160a060020a031660009081526007602052604090205460ff1690565b6000805433600160a060020a039081169116148062001dc4575060015433600160a060020a039081169116145b151562001dd057600080fd5b6000905060095442101562001e66575060005b8181101562001e605760016006600085858581811062001dff57fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905562001e5783838381811062001e4157fe5b90506020020135600160a060020a031662003243565b60010162001de3565b62000d40565b5060005b8181101562001ec05760016006600085858581811062001e8657fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905560010162001e6a565b7fc1d1947210ee563a9e6fda88e7360ad167cd7dc61a01d093688956e2220a49f8838360016040518080602001831515151581526020018281038252858582818152602001925060200280828437820191505094505050505060405180910390a1505050565b601d5460ff1681565b600054600160a060020a031681565b600e5481565b60005433600160a060020a039081169116148062001f70575060015433600160a060020a039081169116145b151562001f7c57600080fd5b600160a060020a03811660008181526007602052604090819020805460ff191660019081179091557e255232b9c7545c95a579e3b4ed6b224bcadd569379c69d9715d500ed93da389151901515815260200160405180910390a250565b601a5481565b60055460ff1681565b60066020526000908152604090205460ff1681565b601260205260009081526040902054600160a060020a031681565b6000601b601c548154811015156200202c57fe5b906000526020600020906007020160020154905090565b600160a060020a033390811660009081526006602052604090205460ff1615156001146200207057600080fd5b600160a060020a03811660009081526007602052604090205460ff1615156001146200209b57600080fd5b601d5460ff161515600114620020b057600080fd5b620020ba620024ec565b15620020c557600080fd5b601154600160a060020a031663fa89401a3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156200211657600080fd5b5af115156200212457600080fd5b50505050565b601b5460009082106200213c57600080fd5b601b8054839081106200214b57fe5b9060005260206000209060070201600201549050919050565b6005546000908190819060ff1615156001146200218057600080fd5b601b54601c54106200219157600080fd5b601b601c54815481101515620021a357fe5b6000918252602090912060079091020154421015620021c157600080fd5b6200221c601b601c54815481101515620021d757fe5b906000526020600020906007020160060154601b601c54815481101515620021fb57fe5b9060005260206000209060070201600201546200323090919063ffffffff16565b9150601b601c548154811015156200223057fe5b9060005260206000209060070201600101544211156200111d57601c546200226090600163ffffffff62002df116565b9050600082118015620022745750601b5481105b15620022f757620022b082601b838154811015156200228f57fe5b90600052602060002090600702016002015462002df190919063ffffffff16565b601b805483908110620022bf57fe5b6000918252602090912060026007909202010155601b805482908110620022e257fe5b90600052602060002090600702016002015491505b601c8190557f34cf54504fd39ab670a54acbb37f686c5bd25e6eedfa39889cba899d360bc7d98160405190815260200160405180910390a150919050565b600160a060020a031660009081526018602052604090205490565b601b80546000919060001981019081106200236757fe5b9060005260206000209060070201600101544211905090565b60005433600160a060020a0390811691161480620023ac575060015433600160a060020a039081169116145b1515620023b857600080fd5b600160a060020a038116600081815260076020526040808220805460ff191690557e255232b9c7545c95a579e3b4ed6b224bcadd569379c69d9715d500ed93da38919051901515815260200160405180910390a250565b600d6020526000908152604090205481565b60195481565b60005433600160a060020a039081169116146200244357600080fd5b601c54156200245157600080fd5b600081116200245f57600080fd5b62002497601b60008154811015156200247457fe5b906000526020600020906007020160060154601b6000815481101515620021fb57fe5b8110620024a357600080fd5b6200173181601b6000815481101515620024b957fe5b90600052602060002090600702016006015462002df190919063ffffffff16565b60186020526000908152604090205481565b6000600e54620024fb620010cc565b1015905090565b6000601b601c548154811015156200251657fe5b906000526020600020906007020160000154905090565b60175460ff1681565b60076020526000908152604090205460ff1681565b60145481565b60155481565b60005433600160a060020a039081169116146200257357600080fd5b601c5482116200258257600080fd5b601b5482106200259157600080fd5b600081116200259f57600080fd5b80601b83815481101515620025b057fe5b9060005260206000209060070201600201819055505050565b620025d3620034c0565b60005433600160a060020a03908116911614620025ef57600080fd5b60055460ff16156200260057600080fd5b8686116200260d57600080fd5b600085116200261b57600080fd5b600f5485106200262a57600080fd5b600084116200263857600080fd5b838310156200264657600080fd5b600082116200265457600080fd5b8462002667858463ffffffff6200337516565b106200267257600080fd5b8462002685848463ffffffff6200337516565b106200269057600080fd5b601b5460009011156200271f57601b80546000198101908110620026b057fe5b906000526020600020906007020160e06040519081016040908152825482526001830154602083019081526002840154918301919091526003830154606083015260048301546080830152600583015460a083015260069092015460c082015291505187116200271f57600080fd5b601b805460018101620027338382620034fe565b9160005260206000209060070201600060e0604051908101604052808b81526020018a815260200189815260200188815260200187815260200186815260200160008152509091909150600082015181556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c082015181600601555050507f5858d9b130a07462c8ba8f5a091c7463cdb0d5dfc3414467a51f9c8d3d68357987878787878760405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a150505050505050565b6000805433600160a060020a039081169116148062002858575060015433600160a060020a039081169116145b15156200286457600080fd5b5060005b81811015620028be576001600760008585858181106200288457fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905560010162002868565b7f3eb50e579d2144f480a8551725cd5c7a8613fef3814f38daa4ee54154c9bddb6838360016040518080602001831515151581526020018281038252858582818152602001925060200280828437820191505094505050505060405180910390a1505050565b600160a060020a03166000908152600d602052604090205490565b60005433600160a060020a03908116911614806200296b575060015433600160a060020a039081169116145b15156200297757600080fd5b600160a060020a0381166000908152600660209081526040808320805460ff19166001179055600890915290205460ff16158015620029b7575060095442105b15620029c857620029c88162003243565b80600160a060020a03167ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d6001604051901515815260200160405180910390a250565b60086020526000908152604090205460ff1681565b60005433600160a060020a0390811691161462002a3c57600080fd5b42821162002a4957600080fd5b81811162002a5657600080fd5b601c54831162002a6557600080fd5b601b54831062002a7457600080fd5b81601b8481548110151562002a8557fe5b6000918252602090912060079091020155601b80548291908590811062002aa857fe5b906000526020600020906007020160010181905550505050565b60005433600160a060020a0390811691161462002ade57600080fd5b600160a060020a038116151562002af457600080fd5b30600160a060020a031681600160a060020a03161415151562002b1657600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000601b601c5481548110151562001a0757fe5b600154600160a060020a031681565b600f5481565b601154600160a060020a031681565b600354600160a060020a031681565b601b54600090821062002bda57600080fd5b601b80548390811062002be957fe5b9060005260206000209060070201600601549050919050565b600160a060020a0382166000908152600660205260408120548190849060ff16151560011462002c3157600080fd5b600160a060020a03811660009081526007602052604090205460ff16151560011462002c5c57600080fd5b600160a060020a038516151562002c7257600080fd5b83151562002c7f57600080fd5b60055460ff16151560011462002c9457600080fd5b601b601c5481548110151562002ca657fe5b600091825260209091206007909102015442101562002cc457600080fd5b62002cce62002164565b601b54601c54919450901062002ce357600080fd5b601b601c5481548110151562002cf557fe5b906000526020600020906007020160000154421015801562002d3a5750601b601c5481548110151562002d2457fe5b9060005260206000209060070201600101544211155b151562002d4657600080fd5b601b601c5481548110151562002d5857fe5b906000526020600020906007020160030154841015151562002d7957600080fd5b601b601c5481548110151562002d8b57fe5b906000526020600020906007020160040154841115151562002dac57600080fd5b62002db78462002dcd565b915081831162002dc657600080fd5b5050505050565b600062002deb62002ddd62002b81565b839063ffffffff6200337516565b92915050565b60008282018381101562002e0157fe5b8091505b5092915050565b600080600080600080600062002e2e88601b601c54815481101515620024b957fe5b601b601c5481548110151562002e4057fe5b90600052602060002090600702016006018190555062002e618989620033a4565b600160a060020a03808a16600090815260126020526040902054349850169550851580159062002e94575060175460ff16155b15620030ac5762002ea58762003487565b60145490955062002ed09062002ec387606463ffffffff6200349716565b9063ffffffff6200337516565b60155490945062002eee9062002ec387606463ffffffff6200349716565b925062002f096016546013546200323090919063ffffffff16565b915081151562002f26576017805460ff19166001179055620030ac565b81841062002f6f57819350600092507f85ffe6a98fec596b0fbb1de18a071ba2ed4a7e51673575fbea30fb657bdf551960405160405180910390a16017805460ff191660011790555b60175460ff1615801562002f835750818410155b1562002fd75762002f9b828563ffffffff6200323016565b92507f85ffe6a98fec596b0fbb1de18a071ba2ed4a7e51673575fbea30fb657bdf551960405160405180910390a16017805460ff191660011790555b62002fe9848463ffffffff62002df116565b60165490915062003001908263ffffffff62002df116565b601655600084111562003058576200301a8685620033a4565b85600160a060020a03167f5d99c7882f16e240169547a9215180521502d94f149258e0aabaf56904b6141b8560405190815260200160405180910390a25b6000831115620030ac576200306e8984620033a4565b88600160a060020a03167f5d99c7882f16e240169547a9215180521502d94f149258e0aabaf56904b6141b8460405190815260200160405180910390a25b505050505050505050565b5050565b601154600160a060020a031663f340fa01343360405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b15156200211657600080fd5b6200311662002018565b6200312062000e75565b1415620030b757601c546200313d90600163ffffffff62002df116565b601c8190557f34cf54504fd39ab670a54acbb37f686c5bd25e6eedfa39889cba899d360bc7d99060405190815260200160405180910390a15050565b62003183620024ec565b15620031e057601154600160a060020a03166343d726d66040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515620031c957600080fd5b5af11515620031d757600080fd5b5050506200322e565b601154600160a060020a0316638c52dc416040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156200322057600080fd5b5af1151562000d4057600080fd5b565b6000828211156200323d57fe5b50900390565b600160a060020a03811615156200325a5762003372565b600160a060020a03811660009081526008602052604090205460ff16151560011415620032875762003372565b600b54600a54600c54620032a19163ffffffff6200323016565b11156200337257600160a060020a0381166000908152600860205260409020805460ff19166001179055600b54600a54620032e29163ffffffff62002df116565b600a55600b54600160a060020a038216600090815260186020526040902054620033129163ffffffff62002df116565b600160a060020a0382166000818152601860205260409081902092909255600b5490917f3a9e9b1f8266a9262ade2d291ca7683d067f6624208ed4739f91e660e3c23e3b9160019151911515825260208201526040908101905180910390a25b50565b6000808315156200338a576000915062002e05565b508282028284828115156200339b57fe5b041462002e0157fe5b601d54610100900460ff16156200343f57600354600054600160a060020a03918216916323b872dd9116848460405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156200342057600080fd5b5af115156200342e57600080fd5b5050506040518051905050620030b7565b600160a060020a0382166000908152600d60205260409020546200346a908263ffffffff62002df116565b600160a060020a0383166000908152600d60205260409020555050565b600062002deb62002ddd620019f0565b6000808284811515620034a657fe5b04949350505050565b60405161060c806200356f83390190565b60e060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81548183558181151162000d405760008381526020902062000d409162000e9e9160079182028101918502015b808211156200356a576000808255600182018190556002820181905560038201819055600482018190556005820181905560068201556007016200352b565b509056006060604052341561000f57600080fd5b60405160208061060c8339810160405280805160008054600160a060020a03191633600160a060020a039081169190911790915590925082161515905061005557600080fd5b60028054600160a060020a031916600160a060020a03929092169190911760a060020a60ff021916905561057e8061008e6000396000f3006060604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166343d726d6811461009d578063521eb273146100b25780638c52dc41146100e15780638da5cb5b146100f4578063c19d93fb14610107578063cb13cddb1461013e578063f2fde38b1461016f578063f340fa011461018e578063fa89401a146101a2575b600080fd5b34156100a857600080fd5b6100b06101c1565b005b34156100bd57600080fd5b6100c561029c565b604051600160a060020a03909116815260200160405180910390f35b34156100ec57600080fd5b6100b06102ab565b34156100ff57600080fd5b6100c561033c565b341561011257600080fd5b61011a61034b565b6040518082600281111561012a57fe5b60ff16815260200191505060405180910390f35b341561014957600080fd5b61015d600160a060020a036004351661035b565b60405190815260200160405180910390f35b341561017a57600080fd5b6100b0600160a060020a036004351661036d565b6100b0600160a060020a0360043516610408565b34156101ad57600080fd5b6100b0600160a060020a036004351661048c565b60005433600160a060020a039081169116146101dc57600080fd5b60006002805460a060020a900460ff16908111156101f657fe5b1461020057600080fd5b6002805474ff00000000000000000000000000000000000000001916740200000000000000000000000000000000000000001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561029a57600080fd5b565b600254600160a060020a031681565b60005433600160a060020a039081169116146102c657600080fd5b60006002805460a060020a900460ff16908111156102e057fe5b146102ea57600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790557f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b600054600160a060020a031681565b60025460a060020a900460ff1681565b60016020526000908152604090205481565b60005433600160a060020a0390811691161461038857600080fd5b600160a060020a038116151561039d57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461042357600080fd5b60006002805460a060020a900460ff169081111561043d57fe5b1461044757600080fd5b600160a060020a038116600090815260016020526040902054610470903463ffffffff61053c16565b600160a060020a03909116600090815260016020526040902055565b600060016002805460a060020a900460ff16908111156104a857fe5b146104b257600080fd5b50600160a060020a038116600081815260016020526040808220805492905590919082156108fc0290839051600060405180830381858888f1935050505015156104fb57600080fd5b81600160a060020a03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06518260405190815260200160405180910390a25050565b60008282018381101561054b57fe5b93925050505600a165627a7a723058208cdf4fd7df9bdb872f723d0284f76c6ac5a0f24a615d3beff4691b74ad5d2b760029a165627a7a7230582016d217918c55148b163dc21d318b63165da2b927c4157abe3c1e9ec1d30bff5b002900000000000000000000000048694ba1f112b98ec471d55719d9d00a323aa4400000000000000000000000000609ade280d4f7c416f68015f36b78582c2abbaf000000000000000000000000000000000000000006765c793fa10079d000000000000000000000000000000000000000000000000052b7d2dcc80cd2e40000000000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Deployed Bytecode
0x606060405260043610620003c55763ffffffff60e060020a600035041663084a40118114620003d25780630b5c3f8714620003fa5780630b9ea6c81462000436578063144fa6d7146200044c57806314aa0eaa146200046e5780631720684a14620004845780631f5c6f67146200049a5780631fb8875d14620004b35780632ecd702014620004c95780632f9cb9aa14620004df578063378c93ad14620004f557806339a13fb314620005105780633b0f0f2f14620005265780633bc578fe14620005645780634042b66f146200057d5780634451d89f146200059357806346df2ccb14620005a95780634bb278f314620005c557806351eecc2314620005db578063521eb273146200060657806356a765c4146200061c5780635776409414620006325780635830f2ea146200064b57806358f6a7db14620006645780635a93bf7114620006895780635bf5d54c14620006b15780635c06d88014620006c757806368db96a614620006dd5780636aa633b614620006f35780636bd68a8f1462000709578063704b6c02146200071f57806374478bb31462000741578063845ddcb214620007575780638907e78714620007ae578063899a1e3614620007d05780638ab1d68114620007f55780638ba209b614620008175780638c10671c14620008395780638d4e4083146200085a5780638da5cb5b1462000870578063906a26e014620008865780639075f124146200089c57806390c3229514620008be578063979cf82414620008d45780639b19251a14620008ea5780639ca423b3146200090c578063aba89198146200092e578063b5545a3c1462000944578063bcd5349f146200095a578063c062f5781462000973578063c1c35e8d1462000989578063c2b6b58c14620009ab578063c2db26fc14620009c1578063c6b9f06a14620009e3578063ccd331bf1462000a05578063cd132aad1462000a1b578063cdfbea581462000a34578063d3eb6f611462000a56578063d74635731462000a6c578063d7ea39c61462000a82578063d8b99cb21462000a98578063dbce1ff71462000aba578063dedeb3ca1462000ad0578063dee2b0581462000ae6578063df6ee6b71462000b02578063e071681d1462000b2a578063e16bd3b71462000b4b578063e43252d71462000b6d578063e6af8f0d1462000b8f578063ec8ac4d81462000bb1578063ec9723ad1462000bc7578063f2fde38b1462000be6578063f7fb07b01462000c08578063f851a4401462000c1e578063fb86a4041462000c34578063fbfa77cf1462000c4a578063fc0c546a1462000c60578063ff5977901462000c76575b620003d03362000c8f565b005b3415620003de57600080fd5b620003e862000d45565b60405190815260200160405180910390f35b34156200040657600080fd5b62000422600160a060020a036004358116906024351662000d4b565b604051901515815260200160405180910390f35b34156200044257600080fd5b620003e862000e75565b34156200045857600080fd5b620003d0600160a060020a036004351662000ea1565b34156200047a57600080fd5b6200042262000eec565b34156200049057600080fd5b620003e862001086565b3415620004a657600080fd5b620003e86004356200108c565b3415620004bf57600080fd5b620003e8620010c6565b3415620004d557600080fd5b620003e8620010cc565b3415620004eb57600080fd5b620003e862001123565b34156200050157600080fd5b620003d060043515156200114e565b34156200051c57600080fd5b62000422620011a6565b34156200053257600080fd5b62000548600160a060020a03600435166200127d565b604051600160a060020a03909116815260200160405180910390f35b34156200057057600080fd5b620003e86004356200129b565b34156200058957600080fd5b620003e8620012d5565b34156200059f57600080fd5b62000422620012db565b3415620005b557600080fd5b620003d060043560243562001456565b3415620005d157600080fd5b620003d0620014c8565b3415620005e757600080fd5b620003d060043560243560443560643560843560a43560c43562001550565b34156200061257600080fd5b6200054862001642565b34156200062857600080fd5b620003e862001651565b34156200063e57600080fd5b620003e860043562001657565b34156200065757600080fd5b620003d060043562001691565b34156200067057600080fd5b62000422600160a060020a036004351660243562001759565b34156200069557600080fd5b62000422600160a060020a0360043581169060243516620018c6565b3415620006bd57600080fd5b620003e8620019ea565b3415620006d357600080fd5b620003e8620019f0565b3415620006e957600080fd5b620003e862001a1e565b3415620006ff57600080fd5b6200042262001a24565b34156200071557600080fd5b620003e862001a2d565b34156200072b57600080fd5b620003d0600160a060020a036004351662001a33565b34156200074d57600080fd5b6200042262001b0e565b34156200076357600080fd5b6200077060043562001b1c565b60405196875260208701959095526040808701949094526060860192909252608085015260a084015260c083019190915260e0909101905180910390f35b3415620007ba57600080fd5b62000422600160a060020a036004351662001b6d565b3415620007dc57600080fd5b62000422600160a060020a036004351660243562001b8b565b34156200080157600080fd5b620003d0600160a060020a036004351662001ce9565b34156200082357600080fd5b62000422600160a060020a036004351662001d79565b34156200084557600080fd5b620003d0600480356024810191013562001d97565b34156200086657600080fd5b6200042262001f26565b34156200087c57600080fd5b6200054862001f2f565b34156200089257600080fd5b620003e862001f3e565b3415620008a857600080fd5b620003d0600160a060020a036004351662001f44565b3415620008ca57600080fd5b620003e862001fd9565b3415620008e057600080fd5b6200042262001fdf565b3415620008f657600080fd5b62000422600160a060020a036004351662001fe8565b34156200091857600080fd5b62000548600160a060020a036004351662001ffd565b34156200093a57600080fd5b620003e862002018565b34156200095057600080fd5b620003d062002043565b34156200096657600080fd5b620003e86004356200212a565b34156200097f57600080fd5b620003e862002164565b34156200099557600080fd5b620003e8600160a060020a036004351662002335565b3415620009b757600080fd5b6200042262002350565b3415620009cd57600080fd5b620003d0600160a060020a036004351662002380565b3415620009ef57600080fd5b620003e8600160a060020a03600435166200240f565b341562000a1157600080fd5b620003e862002421565b341562000a2757600080fd5b620003d060043562002427565b341562000a4057600080fd5b620003e8600160a060020a0360043516620024da565b341562000a6257600080fd5b62000422620024ec565b341562000a7857600080fd5b620003e862002502565b341562000a8e57600080fd5b620004226200252d565b341562000aa457600080fd5b62000422600160a060020a036004351662002536565b341562000ac657600080fd5b620003e86200254b565b341562000adc57600080fd5b620003e862002551565b341562000af257600080fd5b620003d060043560243562002557565b341562000b0e57600080fd5b620003d060043560243560443560643560843560a435620025c9565b341562000b3657600080fd5b620003d060048035602481019101356200282b565b341562000b5757600080fd5b620003e8600160a060020a036004351662002924565b341562000b7957600080fd5b620003d0600160a060020a03600435166200293f565b341562000b9b57600080fd5b62000422600160a060020a036004351662002a0b565b620003d0600160a060020a036004351662000c8f565b341562000bd357600080fd5b620003d060043560243560443562002a20565b341562000bf257600080fd5b620003d0600160a060020a036004351662002ac2565b341562000c1457600080fd5b620003e862002b81565b341562000c2a57600080fd5b6200054862002b95565b341562000c4057600080fd5b620003e862002ba4565b341562000c5657600080fd5b6200054862002baa565b341562000c6c57600080fd5b6200054862002bb9565b341562000c8257600080fd5b620003e860043562002bc8565b34600062000c9e838362002c02565b62000ca98262002dcd565b60105490915062000cc1908363ffffffff62002df116565b60105562000cd0838262002e0c565b82600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a362000d2a8383620030b7565b62000d34620030bb565b62000d4083836200310c565b505050565b600a5481565b6000805433600160a060020a039081169116148062000d78575060015433600160a060020a039081169116145b151562000d8457600080fd5b600160a060020a038316600090815260066020526040902054839060ff16151560011462000db157600080fd5b600160a060020a03811660009081526007602052604090205460ff16151560011462000ddc57600080fd5b600160a060020a038316600090815260066020526040902054839060ff16151560011462000e0957600080fd5b600160a060020a03811660009081526007602052604090205460ff16151560011462000e3457600080fd5b5050600160a060020a039182166000908152601260205260409020805473ffffffffffffffffffffffffffffffffffffffff19169390921692909217905590565b6000601b601c5481548110151562000e8957fe5b90600052602060002090600702016006015490505b90565b60005433600160a060020a0390811691161462000ebd57600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b601d546000908190819060ff1615156001148062000f175750601d5460ff6101009091041615156001145b151562000f2357600080fd5b62000f2d620024ec565b151562000f3957600080fd5b600160a060020a033390811660009081526006602052604090205460ff16151560011462000f6657600080fd5b600160a060020a03811660009081526007602052604090205460ff16151560011462000f9157600080fd5b33600160a060020a0381166000818152601860205260409081902054929550919350907fe42df0d9493dfd0d7f69902c895b94c190a53e8c27876a86f45e7c997d9d8f7c9084905190815260200160405180910390a2600160a060020a038084166000908152601860205260408082208290556003549154918316926323b872dd921690869086905160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156200106757600080fd5b5af115156200107557600080fd5b505050604051805194505050505090565b60095481565b601b5460009082106200109e57600080fd5b601b805483908110620010ad57fe5b9060005260206000209060070201600001549050919050565b60165481565b600080805b601b548110156200111d5762001112601b82815481101515620010f057fe5b9060005260206000209060070201600601548362002df190919063ffffffff16565b9150600101620010d1565b50919050565b6000601b601c548154811015156200113757fe5b906000526020600020906007020160010154905090565b60005433600160a060020a039081169116146200116a57600080fd5b600181151514156200118c5762001180620024ec565b15156200118c57600080fd5b601d80549115156101000261ff0019909216919091179055565b6000805433600160a060020a03908116911614620011c357600080fd5b601b5460009011620011d457600080fd5b600254600160a060020a0316620011ea620034af565b600160a060020a039091168152602001604051809103906000f08015156200121157600080fd5b6011805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556005805460ff191660011790557f887e7ccf5673eef45a5c69179950777b13841a28f0db61febac61f2b8e729de460405160405180910390a150600190565b600160a060020a039081166000908152601260205260409020541690565b601b546000908210620012ad57600080fd5b601b805483908110620012bc57fe5b9060005260206000209060070201600101549050919050565b60105481565b601d546000908190819060ff16151560011480620013065750601d5460ff6101009091041615156001145b15156200131257600080fd5b6200131c620024ec565b15156200132857600080fd5b600160a060020a033390811660009081526006602052604090205460ff1615156001146200135557600080fd5b600160a060020a03811660009081526007602052604090205460ff1615156001146200138057600080fd5b33600160a060020a0381166000818152600d60205260409081902054929550919350907fe42df0d9493dfd0d7f69902c895b94c190a53e8c27876a86f45e7c997d9d8f7c9084905190815260200160405180910390a2600160a060020a038084166000908152600d60205260408082208290556003549154918316926323b872dd921690869086905160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156200106757600080fd5b60005433600160a060020a039081169116146200147257600080fd5b601c5482116200148157600080fd5b601b5482106200149057600080fd5b600081116200149e57600080fd5b80601b83815481101515620014af57fe5b9060005260206000209060070201600501819055505050565b60005433600160a060020a03908116911614620014e457600080fd5b601d5460ff1615620014f557600080fd5b620014ff62002350565b15156200150b57600080fd5b6200151562003179565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a1601d805460ff19166001179055565b60005433600160a060020a039081169116146200156c57600080fd5b600087116200157a57600080fd5b6000861180156200158b5750606486105b15156200159757600080fd5b600085118015620015a85750606485105b1515620015b457600080fd5b428311620015c157600080fd5b60008211620015cf57600080fd5b818111620015dc57600080fd5b60008411620015ea57600080fd5b60138790556014869055601585905560198490556009839055600b829055600c8190557f981375e01cb0539ab3ccafb0b225b129b3057efac5cae04b18d91903641c9ce060405160405180910390a150505050505050565b600254600160a060020a031681565b600c5481565b601b5460009082106200166957600080fd5b601b8054839081106200167857fe5b9060005260206000209060070201600501549050919050565b60005433600160a060020a03908116911614620016ad57600080fd5b601c5415620016bb57600080fd5b60008111620016c957600080fd5b80601b6000815481101515620016db57fe5b906000526020600020906007020160060154111515620016fa57600080fd5b6200173181601b60008154811015156200171057fe5b9060005260206000209060070201600601546200323090919063ffffffff16565b601b805460009081106200174157fe5b90600052602060002090600702016006018190555050565b6000805433600160a060020a039081169116148062001786575060015433600160a060020a039081169116145b15156200179257600080fd5b600160a060020a038316600090815260066020526040902054839060ff161515600114620017bf57600080fd5b600160a060020a03811660009081526007602052604090205460ff161515600114620017ea57600080fd5b600160a060020a038416600090815260186020526040902054839010156200181157600080fd5b601a548310156200182157600080fd5b601a5462001836908463ffffffff6200323016565b601a55600160a060020a03841660009081526018602052604090205462001864908463ffffffff6200323016565b600160a060020a0385166000818152601860205260408082209390935590917f3a9e9b1f8266a9262ade2d291ca7683d067f6624208ed4739f91e660e3c23e3b9190869051911515825260208201526040908101905180910390a25092915050565b6000805433600160a060020a0390811691161480620018f3575060015433600160a060020a039081169116145b1515620018ff57600080fd5b600160a060020a038316600090815260066020526040902054839060ff1615156001146200192c57600080fd5b600160a060020a03811660009081526007602052604090205460ff1615156001146200195757600080fd5b600160a060020a038316600090815260066020526040902054839060ff1615156001146200198457600080fd5b600160a060020a03811660009081526007602052604090205460ff161515600114620019af57600080fd5b5050600160a060020a039091166000908152601260205260409020805473ffffffffffffffffffffffffffffffffffffffff19169055919050565b601c5481565b601b805460009190600019810190811062001a0757fe5b906000526020600020906007020160050154905090565b600b5481565b60055460ff1690565b60135481565b60005433600160a060020a0390811691161462001a4f57600080fd5b600160a060020a038116151562001a6557600080fd5b30600160a060020a031681600160a060020a03161415151562001a8757600080fd5b600054600160a060020a038281169116141562001aa357600080fd5b600154600160a060020a0380831691167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b601d54610100900460ff1681565b601b80548290811062001b2b57fe5b90600052602060002090600702016000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b600160a060020a031660009081526006602052604090205460ff1690565b6000805433600160a060020a039081169116148062001bb8575060015433600160a060020a039081169116145b151562001bc457600080fd5b600160a060020a038316600090815260066020526040902054839060ff16151560011462001bf157600080fd5b600160a060020a03811660009081526007602052604090205460ff16151560011462001c1c57600080fd5b8262001c36601a546019546200323090919063ffffffff16565b101562001c4257600080fd5b601a5462001c57908463ffffffff62002df116565b601a55600160a060020a03841660009081526018602052604090205462001c85908463ffffffff62002df116565b600160a060020a0385166000818152601860205260409081902092909255907f3a9e9b1f8266a9262ade2d291ca7683d067f6624208ed4739f91e660e3c23e3b90600190869051911515825260208201526040908101905180910390a25092915050565b60005433600160a060020a039081169116148062001d15575060015433600160a060020a039081169116145b151562001d2157600080fd5b600160a060020a038116600081815260066020526040808220805460ff191690557ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d919051901515815260200160405180910390a250565b600160a060020a031660009081526007602052604090205460ff1690565b6000805433600160a060020a039081169116148062001dc4575060015433600160a060020a039081169116145b151562001dd057600080fd5b6000905060095442101562001e66575060005b8181101562001e605760016006600085858581811062001dff57fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905562001e5783838381811062001e4157fe5b90506020020135600160a060020a031662003243565b60010162001de3565b62000d40565b5060005b8181101562001ec05760016006600085858581811062001e8657fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905560010162001e6a565b7fc1d1947210ee563a9e6fda88e7360ad167cd7dc61a01d093688956e2220a49f8838360016040518080602001831515151581526020018281038252858582818152602001925060200280828437820191505094505050505060405180910390a1505050565b601d5460ff1681565b600054600160a060020a031681565b600e5481565b60005433600160a060020a039081169116148062001f70575060015433600160a060020a039081169116145b151562001f7c57600080fd5b600160a060020a03811660008181526007602052604090819020805460ff191660019081179091557e255232b9c7545c95a579e3b4ed6b224bcadd569379c69d9715d500ed93da389151901515815260200160405180910390a250565b601a5481565b60055460ff1681565b60066020526000908152604090205460ff1681565b601260205260009081526040902054600160a060020a031681565b6000601b601c548154811015156200202c57fe5b906000526020600020906007020160020154905090565b600160a060020a033390811660009081526006602052604090205460ff1615156001146200207057600080fd5b600160a060020a03811660009081526007602052604090205460ff1615156001146200209b57600080fd5b601d5460ff161515600114620020b057600080fd5b620020ba620024ec565b15620020c557600080fd5b601154600160a060020a031663fa89401a3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156200211657600080fd5b5af115156200212457600080fd5b50505050565b601b5460009082106200213c57600080fd5b601b8054839081106200214b57fe5b9060005260206000209060070201600201549050919050565b6005546000908190819060ff1615156001146200218057600080fd5b601b54601c54106200219157600080fd5b601b601c54815481101515620021a357fe5b6000918252602090912060079091020154421015620021c157600080fd5b6200221c601b601c54815481101515620021d757fe5b906000526020600020906007020160060154601b601c54815481101515620021fb57fe5b9060005260206000209060070201600201546200323090919063ffffffff16565b9150601b601c548154811015156200223057fe5b9060005260206000209060070201600101544211156200111d57601c546200226090600163ffffffff62002df116565b9050600082118015620022745750601b5481105b15620022f757620022b082601b838154811015156200228f57fe5b90600052602060002090600702016002015462002df190919063ffffffff16565b601b805483908110620022bf57fe5b6000918252602090912060026007909202010155601b805482908110620022e257fe5b90600052602060002090600702016002015491505b601c8190557f34cf54504fd39ab670a54acbb37f686c5bd25e6eedfa39889cba899d360bc7d98160405190815260200160405180910390a150919050565b600160a060020a031660009081526018602052604090205490565b601b80546000919060001981019081106200236757fe5b9060005260206000209060070201600101544211905090565b60005433600160a060020a0390811691161480620023ac575060015433600160a060020a039081169116145b1515620023b857600080fd5b600160a060020a038116600081815260076020526040808220805460ff191690557e255232b9c7545c95a579e3b4ed6b224bcadd569379c69d9715d500ed93da38919051901515815260200160405180910390a250565b600d6020526000908152604090205481565b60195481565b60005433600160a060020a039081169116146200244357600080fd5b601c54156200245157600080fd5b600081116200245f57600080fd5b62002497601b60008154811015156200247457fe5b906000526020600020906007020160060154601b6000815481101515620021fb57fe5b8110620024a357600080fd5b6200173181601b6000815481101515620024b957fe5b90600052602060002090600702016006015462002df190919063ffffffff16565b60186020526000908152604090205481565b6000600e54620024fb620010cc565b1015905090565b6000601b601c548154811015156200251657fe5b906000526020600020906007020160000154905090565b60175460ff1681565b60076020526000908152604090205460ff1681565b60145481565b60155481565b60005433600160a060020a039081169116146200257357600080fd5b601c5482116200258257600080fd5b601b5482106200259157600080fd5b600081116200259f57600080fd5b80601b83815481101515620025b057fe5b9060005260206000209060070201600201819055505050565b620025d3620034c0565b60005433600160a060020a03908116911614620025ef57600080fd5b60055460ff16156200260057600080fd5b8686116200260d57600080fd5b600085116200261b57600080fd5b600f5485106200262a57600080fd5b600084116200263857600080fd5b838310156200264657600080fd5b600082116200265457600080fd5b8462002667858463ffffffff6200337516565b106200267257600080fd5b8462002685848463ffffffff6200337516565b106200269057600080fd5b601b5460009011156200271f57601b80546000198101908110620026b057fe5b906000526020600020906007020160e06040519081016040908152825482526001830154602083019081526002840154918301919091526003830154606083015260048301546080830152600583015460a083015260069092015460c082015291505187116200271f57600080fd5b601b805460018101620027338382620034fe565b9160005260206000209060070201600060e0604051908101604052808b81526020018a815260200189815260200188815260200187815260200186815260200160008152509091909150600082015181556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c082015181600601555050507f5858d9b130a07462c8ba8f5a091c7463cdb0d5dfc3414467a51f9c8d3d68357987878787878760405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a150505050505050565b6000805433600160a060020a039081169116148062002858575060015433600160a060020a039081169116145b15156200286457600080fd5b5060005b81811015620028be576001600760008585858181106200288457fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905560010162002868565b7f3eb50e579d2144f480a8551725cd5c7a8613fef3814f38daa4ee54154c9bddb6838360016040518080602001831515151581526020018281038252858582818152602001925060200280828437820191505094505050505060405180910390a1505050565b600160a060020a03166000908152600d602052604090205490565b60005433600160a060020a03908116911614806200296b575060015433600160a060020a039081169116145b15156200297757600080fd5b600160a060020a0381166000908152600660209081526040808320805460ff19166001179055600890915290205460ff16158015620029b7575060095442105b15620029c857620029c88162003243565b80600160a060020a03167ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d6001604051901515815260200160405180910390a250565b60086020526000908152604090205460ff1681565b60005433600160a060020a0390811691161462002a3c57600080fd5b42821162002a4957600080fd5b81811162002a5657600080fd5b601c54831162002a6557600080fd5b601b54831062002a7457600080fd5b81601b8481548110151562002a8557fe5b6000918252602090912060079091020155601b80548291908590811062002aa857fe5b906000526020600020906007020160010181905550505050565b60005433600160a060020a0390811691161462002ade57600080fd5b600160a060020a038116151562002af457600080fd5b30600160a060020a031681600160a060020a03161415151562002b1657600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000601b601c5481548110151562001a0757fe5b600154600160a060020a031681565b600f5481565b601154600160a060020a031681565b600354600160a060020a031681565b601b54600090821062002bda57600080fd5b601b80548390811062002be957fe5b9060005260206000209060070201600601549050919050565b600160a060020a0382166000908152600660205260408120548190849060ff16151560011462002c3157600080fd5b600160a060020a03811660009081526007602052604090205460ff16151560011462002c5c57600080fd5b600160a060020a038516151562002c7257600080fd5b83151562002c7f57600080fd5b60055460ff16151560011462002c9457600080fd5b601b601c5481548110151562002ca657fe5b600091825260209091206007909102015442101562002cc457600080fd5b62002cce62002164565b601b54601c54919450901062002ce357600080fd5b601b601c5481548110151562002cf557fe5b906000526020600020906007020160000154421015801562002d3a5750601b601c5481548110151562002d2457fe5b9060005260206000209060070201600101544211155b151562002d4657600080fd5b601b601c5481548110151562002d5857fe5b906000526020600020906007020160030154841015151562002d7957600080fd5b601b601c5481548110151562002d8b57fe5b906000526020600020906007020160040154841115151562002dac57600080fd5b62002db78462002dcd565b915081831162002dc657600080fd5b5050505050565b600062002deb62002ddd62002b81565b839063ffffffff6200337516565b92915050565b60008282018381101562002e0157fe5b8091505b5092915050565b600080600080600080600062002e2e88601b601c54815481101515620024b957fe5b601b601c5481548110151562002e4057fe5b90600052602060002090600702016006018190555062002e618989620033a4565b600160a060020a03808a16600090815260126020526040902054349850169550851580159062002e94575060175460ff16155b15620030ac5762002ea58762003487565b60145490955062002ed09062002ec387606463ffffffff6200349716565b9063ffffffff6200337516565b60155490945062002eee9062002ec387606463ffffffff6200349716565b925062002f096016546013546200323090919063ffffffff16565b915081151562002f26576017805460ff19166001179055620030ac565b81841062002f6f57819350600092507f85ffe6a98fec596b0fbb1de18a071ba2ed4a7e51673575fbea30fb657bdf551960405160405180910390a16017805460ff191660011790555b60175460ff1615801562002f835750818410155b1562002fd75762002f9b828563ffffffff6200323016565b92507f85ffe6a98fec596b0fbb1de18a071ba2ed4a7e51673575fbea30fb657bdf551960405160405180910390a16017805460ff191660011790555b62002fe9848463ffffffff62002df116565b60165490915062003001908263ffffffff62002df116565b601655600084111562003058576200301a8685620033a4565b85600160a060020a03167f5d99c7882f16e240169547a9215180521502d94f149258e0aabaf56904b6141b8560405190815260200160405180910390a25b6000831115620030ac576200306e8984620033a4565b88600160a060020a03167f5d99c7882f16e240169547a9215180521502d94f149258e0aabaf56904b6141b8460405190815260200160405180910390a25b505050505050505050565b5050565b601154600160a060020a031663f340fa01343360405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b15156200211657600080fd5b6200311662002018565b6200312062000e75565b1415620030b757601c546200313d90600163ffffffff62002df116565b601c8190557f34cf54504fd39ab670a54acbb37f686c5bd25e6eedfa39889cba899d360bc7d99060405190815260200160405180910390a15050565b62003183620024ec565b15620031e057601154600160a060020a03166343d726d66040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515620031c957600080fd5b5af11515620031d757600080fd5b5050506200322e565b601154600160a060020a0316638c52dc416040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156200322057600080fd5b5af1151562000d4057600080fd5b565b6000828211156200323d57fe5b50900390565b600160a060020a03811615156200325a5762003372565b600160a060020a03811660009081526008602052604090205460ff16151560011415620032875762003372565b600b54600a54600c54620032a19163ffffffff6200323016565b11156200337257600160a060020a0381166000908152600860205260409020805460ff19166001179055600b54600a54620032e29163ffffffff62002df116565b600a55600b54600160a060020a038216600090815260186020526040902054620033129163ffffffff62002df116565b600160a060020a0382166000818152601860205260409081902092909255600b5490917f3a9e9b1f8266a9262ade2d291ca7683d067f6624208ed4739f91e660e3c23e3b9160019151911515825260208201526040908101905180910390a25b50565b6000808315156200338a576000915062002e05565b508282028284828115156200339b57fe5b041462002e0157fe5b601d54610100900460ff16156200343f57600354600054600160a060020a03918216916323b872dd9116848460405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156200342057600080fd5b5af115156200342e57600080fd5b5050506040518051905050620030b7565b600160a060020a0382166000908152600d60205260409020546200346a908263ffffffff62002df116565b600160a060020a0383166000908152600d60205260409020555050565b600062002deb62002ddd620019f0565b6000808284811515620034a657fe5b04949350505050565b60405161060c806200356f83390190565b60e060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81548183558181151162000d405760008381526020902062000d409162000e9e9160079182028101918502015b808211156200356a576000808255600182018190556002820181905560038201819055600482018190556005820181905560068201556007016200352b565b509056006060604052341561000f57600080fd5b60405160208061060c8339810160405280805160008054600160a060020a03191633600160a060020a039081169190911790915590925082161515905061005557600080fd5b60028054600160a060020a031916600160a060020a03929092169190911760a060020a60ff021916905561057e8061008e6000396000f3006060604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166343d726d6811461009d578063521eb273146100b25780638c52dc41146100e15780638da5cb5b146100f4578063c19d93fb14610107578063cb13cddb1461013e578063f2fde38b1461016f578063f340fa011461018e578063fa89401a146101a2575b600080fd5b34156100a857600080fd5b6100b06101c1565b005b34156100bd57600080fd5b6100c561029c565b604051600160a060020a03909116815260200160405180910390f35b34156100ec57600080fd5b6100b06102ab565b34156100ff57600080fd5b6100c561033c565b341561011257600080fd5b61011a61034b565b6040518082600281111561012a57fe5b60ff16815260200191505060405180910390f35b341561014957600080fd5b61015d600160a060020a036004351661035b565b60405190815260200160405180910390f35b341561017a57600080fd5b6100b0600160a060020a036004351661036d565b6100b0600160a060020a0360043516610408565b34156101ad57600080fd5b6100b0600160a060020a036004351661048c565b60005433600160a060020a039081169116146101dc57600080fd5b60006002805460a060020a900460ff16908111156101f657fe5b1461020057600080fd5b6002805474ff00000000000000000000000000000000000000001916740200000000000000000000000000000000000000001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561029a57600080fd5b565b600254600160a060020a031681565b60005433600160a060020a039081169116146102c657600080fd5b60006002805460a060020a900460ff16908111156102e057fe5b146102ea57600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790557f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b600054600160a060020a031681565b60025460a060020a900460ff1681565b60016020526000908152604090205481565b60005433600160a060020a0390811691161461038857600080fd5b600160a060020a038116151561039d57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461042357600080fd5b60006002805460a060020a900460ff169081111561043d57fe5b1461044757600080fd5b600160a060020a038116600090815260016020526040902054610470903463ffffffff61053c16565b600160a060020a03909116600090815260016020526040902055565b600060016002805460a060020a900460ff16908111156104a857fe5b146104b257600080fd5b50600160a060020a038116600081815260016020526040808220805492905590919082156108fc0290839051600060405180830381858888f1935050505015156104fb57600080fd5b81600160a060020a03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06518260405190815260200160405180910390a25050565b60008282018381101561054b57fe5b93925050505600a165627a7a723058208cdf4fd7df9bdb872f723d0284f76c6ac5a0f24a615d3beff4691b74ad5d2b760029a165627a7a7230582016d217918c55148b163dc21d318b63165da2b927c4157abe3c1e9ec1d30bff5b0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000048694ba1f112b98ec471d55719d9d00a323aa4400000000000000000000000000609ade280d4f7c416f68015f36b78582c2abbaf000000000000000000000000000000000000000006765c793fa10079d000000000000000000000000000000000000000000000000052b7d2dcc80cd2e40000000000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
-----Decoded View---------------
Arg [0] : _wallet (address): 0x48694bA1f112b98Ec471D55719D9D00A323aa440
Arg [1] : _admin (address): 0x0609ade280d4f7c416f68015f36B78582C2aBBaf
Arg [2] : _totalSupply (uint256): 2000000000000000000000000000
Arg [3] : _softCap (uint256): 100000000000000000000000000
Arg [4] : _hardCap (uint256): 1000000000000000000000000000
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000048694ba1f112b98ec471d55719d9d00a323aa440
Arg [1] : 0000000000000000000000000609ade280d4f7c416f68015f36b78582c2abbaf
Arg [2] : 000000000000000000000000000000000000000006765c793fa10079d0000000
Arg [3] : 00000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
Arg [4] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Swarm Source
bzzr://16d217918c55148b163dc21d318b63165da2b927c4157abe3c1e9ec1d30bff5b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.