Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 451 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 5457934 | 2401 days ago | IN | 0 ETH | 0.00002448 | ||||
Finalize | 5282467 | 2430 days ago | IN | 0 ETH | 0.00554142 | ||||
Transfer | 5282182 | 2430 days ago | IN | 0.0573084 ETH | 0.00020802 | ||||
Transfer | 5282143 | 2430 days ago | IN | 0.0615084 ETH | 0.0000441 | ||||
Transfer | 5281897 | 2430 days ago | IN | 0.0615525 ETH | 0.000084 | ||||
Transfer | 5281784 | 2430 days ago | IN | 0.01021654 ETH | 0.00283146 | ||||
Transfer | 5281669 | 2430 days ago | IN | 1 ETH | 0.0013812 | ||||
Transfer | 5281454 | 2430 days ago | IN | 499 ETH | 0.00283146 | ||||
Transfer | 5281318 | 2430 days ago | IN | 1 ETH | 0.00406146 | ||||
Transfer | 5279574 | 2431 days ago | IN | 0.245916 ETH | 0.0019812 | ||||
Transfer | 5279302 | 2431 days ago | IN | 0.1 ETH | 0.00019812 | ||||
Transfer | 5277877 | 2431 days ago | IN | 0.2 ETH | 0.00151932 | ||||
Transfer | 5276001 | 2431 days ago | IN | 1 ETH | 0.0019812 | ||||
Transfer | 5275166 | 2431 days ago | IN | 4.076843 ETH | 0.00406146 | ||||
Transfer | 5274248 | 2432 days ago | IN | 1.93095254 ETH | 0.00013812 | ||||
Transfer | 5273749 | 2432 days ago | IN | 0.549 ETH | 0.00009906 | ||||
Transfer | 5273053 | 2432 days ago | IN | 0.25 ETH | 0.00047656 | ||||
Transfer | 5272891 | 2432 days ago | IN | 0.25 ETH | 0.00047656 | ||||
Transfer | 5268754 | 2433 days ago | IN | 1.5 ETH | 0.00019812 | ||||
Transfer | 5266615 | 2433 days ago | IN | 0.01 ETH | 0.0013812 | ||||
Transfer | 5266613 | 2433 days ago | IN | 0.01 ETH | 0.0013812 | ||||
Transfer | 5265727 | 2433 days ago | IN | 0.79591168 ETH | 0.00406146 | ||||
Transfer | 5263914 | 2433 days ago | IN | 0.05 ETH | 0.0013812 | ||||
Transfer | 5263888 | 2433 days ago | IN | 0.05 ETH | 0.0013812 | ||||
Transfer | 5260308 | 2434 days ago | IN | 0.33739 ETH | 0.0019812 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5282182 | 2430 days ago | 0.0573084 ETH | ||||
5281784 | 2430 days ago | 0.01021654 ETH | ||||
5281669 | 2430 days ago | 1 ETH | ||||
5281454 | 2430 days ago | 499 ETH | ||||
5281318 | 2430 days ago | 1 ETH | ||||
5279574 | 2431 days ago | 0.245916 ETH | ||||
5279302 | 2431 days ago | 0.1 ETH | ||||
5277877 | 2431 days ago | 0.2 ETH | ||||
5276001 | 2431 days ago | 1 ETH | ||||
5275166 | 2431 days ago | 4.076843 ETH | ||||
5274248 | 2432 days ago | 1.93095254 ETH | ||||
5273749 | 2432 days ago | 0.549 ETH | ||||
5268754 | 2433 days ago | 1.5 ETH | ||||
5266615 | 2433 days ago | 0.01 ETH | ||||
5266613 | 2433 days ago | 0.01 ETH | ||||
5265727 | 2433 days ago | 0.79591168 ETH | ||||
5263914 | 2433 days ago | 0.05 ETH | ||||
5263888 | 2433 days ago | 0.05 ETH | ||||
5260308 | 2434 days ago | 0.33739 ETH | ||||
5255821 | 2435 days ago | 0.76 ETH | ||||
5255704 | 2435 days ago | 0.01 ETH | ||||
5254063 | 2435 days ago | 0.135 ETH | ||||
5251558 | 2435 days ago | 0.01 ETH | ||||
5250494 | 2436 days ago | 0.15 ETH | ||||
5250286 | 2436 days ago | 0.5 ETH |
Loading...
Loading
Contract Name:
ODEMCrowdsale
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-02-03 */ pragma solidity 0.4.18; // File: zeppelin-solidity/contracts/ownership/Ownable.sol /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event 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; } } // File: zeppelin-solidity/contracts/math/SafeMath.sol /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { 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; } 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; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } // File: zeppelin-solidity/contracts/token/ERC20Basic.sol /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } // File: zeppelin-solidity/contracts/token/BasicToken.sol /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); 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); Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } } // File: zeppelin-solidity/contracts/token/ERC20.sol /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } // File: zeppelin-solidity/contracts/token/StandardToken.sol /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * @dev https://github.com/ethereum/EIPs/issues/20 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); 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); Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; } /** * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol */ function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } // File: zeppelin-solidity/contracts/token/MintableToken.sol /** * @title Mintable token * @dev Simple ERC20 Token example, with mintable token creation * @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol */ contract MintableToken is StandardToken, Ownable { event Mint(address indexed to, uint256 amount); event MintFinished(); bool public mintingFinished = false; modifier canMint() { require(!mintingFinished); _; } /** * @dev Function to mint tokens * @param _to The address that will receive the minted tokens. * @param _amount The amount of tokens to mint. * @return A boolean that indicates if the operation was successful. */ function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) { totalSupply = totalSupply.add(_amount); balances[_to] = balances[_to].add(_amount); Mint(_to, _amount); Transfer(address(0), _to, _amount); return true; } /** * @dev Function to stop minting new tokens. * @return True if the operation was successful. */ function finishMinting() onlyOwner canMint public returns (bool) { mintingFinished = true; MintFinished(); return true; } } // File: zeppelin-solidity/contracts/lifecycle/Pausable.sol /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused public { paused = true; Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; Unpause(); } } // File: zeppelin-solidity/contracts/token/PausableToken.sol /** * @title Pausable token * * @dev StandardToken modified with pausable transfers. **/ contract PausableToken is StandardToken, Pausable { function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) { return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) { return super.transferFrom(_from, _to, _value); } function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) { return super.approve(_spender, _value); } function increaseApproval(address _spender, uint _addedValue) public whenNotPaused returns (bool success) { return super.increaseApproval(_spender, _addedValue); } function decreaseApproval(address _spender, uint _subtractedValue) public whenNotPaused returns (bool success) { return super.decreaseApproval(_spender, _subtractedValue); } } // File: contracts/ODEMToken.sol /** * @title ODEM Token contract - ERC20 compatible token contract. * @author Gustavo Guimaraes - <[email protected]> */ contract ODEMToken is PausableToken, MintableToken { string public constant name = "ODEM Token"; string public constant symbol = "ODEM"; uint8 public constant decimals = 18; } // File: contracts/TeamAndAdvisorsAllocation.sol /** * @title Team and Advisors Token Allocation contract * @author Gustavo Guimaraes - <[email protected]> */ contract TeamAndAdvisorsAllocation is Ownable { using SafeMath for uint; uint256 public unlockedAt; uint256 public canSelfDestruct; uint256 public tokensCreated; uint256 public allocatedTokens; uint256 private totalTeamAndAdvisorsAllocation = 38763636e18; // 38 mm mapping (address => uint256) public teamAndAdvisorsAllocations; ODEMToken public odem; /** * @dev constructor function that sets owner and token for the TeamAndAdvisorsAllocation contract * @param token Token contract address for ODEMToken */ function TeamAndAdvisorsAllocation(address token) public { odem = ODEMToken(token); unlockedAt = now.add(182 days); canSelfDestruct = now.add(365 days); } /** * @dev Adds founders' token allocation * @param teamOrAdvisorsAddress Address of a founder * @param allocationValue Number of tokens allocated to a founder * @return true if address is correctly added */ function addTeamAndAdvisorsAllocation(address teamOrAdvisorsAddress, uint256 allocationValue) external onlyOwner returns(bool) { assert(teamAndAdvisorsAllocations[teamOrAdvisorsAddress] == 0); // can only add once. allocatedTokens = allocatedTokens.add(allocationValue); require(allocatedTokens <= totalTeamAndAdvisorsAllocation); teamAndAdvisorsAllocations[teamOrAdvisorsAddress] = allocationValue; return true; } /** * @dev Allow company to unlock allocated tokens by transferring them whitelisted addresses. * Need to be called by each address */ function unlock() external { assert(now >= unlockedAt); // During first unlock attempt fetch total number of locked tokens. if (tokensCreated == 0) { tokensCreated = odem.balanceOf(this); } uint256 transferAllocation = teamAndAdvisorsAllocations[msg.sender]; teamAndAdvisorsAllocations[msg.sender] = 0; // Will fail if allocation (and therefore toTransfer) is 0. require(odem.transfer(msg.sender, transferAllocation)); } /** * @dev allow for selfdestruct possibility and sending funds to owner */ function kill() public onlyOwner { assert(now >= canSelfDestruct); uint256 balance = odem.balanceOf(this); if (balance > 0) { odem.transfer(owner, balance); } selfdestruct(owner); } } // File: contracts/Whitelist.sol contract Whitelist is Ownable { mapping(address => bool) public allowedAddresses; event WhitelistUpdated(uint256 timestamp, string operation, address indexed member); function addToWhitelist(address[] _addresses) public onlyOwner { for (uint256 i = 0; i < _addresses.length; i++) { allowedAddresses[_addresses[i]] = true; WhitelistUpdated(now, "Added", _addresses[i]); } } function removeFromWhitelist(address[] _addresses) public onlyOwner { for (uint256 i = 0; i < _addresses.length; i++) { allowedAddresses[_addresses[i]] = false; WhitelistUpdated(now, "Removed", _addresses[i]); } } function isWhitelisted(address _address) public view returns (bool) { return allowedAddresses[_address]; } } // File: zeppelin-solidity/contracts/crowdsale/Crowdsale.sol /** * @title Crowdsale * @dev Crowdsale is a base contract for managing a token crowdsale. * Crowdsales have a start and end timestamps, where investors can make * token purchases and the crowdsale will assign them tokens based * on a token per ETH rate. Funds collected are forwarded to a wallet * as they arrive. */ contract Crowdsale { using SafeMath for uint256; // The token being sold MintableToken public token; // start and end timestamps where investments are allowed (both inclusive) uint256 public startTime; uint256 public endTime; // address where funds are collected address public wallet; // how many token units a buyer gets per wei uint256 public rate; // amount of raised money in wei uint256 public weiRaised; /** * event for token purchase logging * @param purchaser who paid for the tokens * @param beneficiary who got the tokens * @param value weis paid for purchase * @param amount amount of tokens purchased */ event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount); function Crowdsale(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet) public { require(_startTime >= now); require(_endTime >= _startTime); require(_rate > 0); require(_wallet != address(0)); token = createTokenContract(); startTime = _startTime; endTime = _endTime; rate = _rate; wallet = _wallet; } // creates the token to be sold. // override this method to have crowdsale of a specific mintable token. function createTokenContract() internal returns (MintableToken) { return new MintableToken(); } // fallback function can be used to buy tokens function () external payable { buyTokens(msg.sender); } // low level token purchase function function buyTokens(address beneficiary) public payable { require(beneficiary != address(0)); require(validPurchase()); uint256 weiAmount = msg.value; // calculate token amount to be created uint256 tokens = weiAmount.mul(rate); // update state weiRaised = weiRaised.add(weiAmount); token.mint(beneficiary, tokens); TokenPurchase(msg.sender, beneficiary, weiAmount, tokens); forwardFunds(); } // send ether to the fund collection wallet // override to create custom fund forwarding mechanisms function forwardFunds() internal { wallet.transfer(msg.value); } // @return true if the transaction can buy tokens function validPurchase() internal view returns (bool) { bool withinPeriod = now >= startTime && now <= endTime; bool nonZeroPurchase = msg.value != 0; return withinPeriod && nonZeroPurchase; } // @return true if crowdsale event has ended function hasEnded() public view returns (bool) { return now > endTime; } } // File: zeppelin-solidity/contracts/crowdsale/FinalizableCrowdsale.sol /** * @title FinalizableCrowdsale * @dev Extension of Crowdsale where an owner can do extra work * after finishing. */ contract FinalizableCrowdsale is Crowdsale, Ownable { using SafeMath for uint256; bool public isFinalized = false; event Finalized(); /** * @dev Must be called after crowdsale ends, to do some extra finalization * work. Calls the contract's finalization function. */ function finalize() onlyOwner public { require(!isFinalized); require(hasEnded()); finalization(); Finalized(); isFinalized = true; } /** * @dev Can be overridden to add finalization logic. The overriding function * should call super.finalization() to ensure the chain of finalization is * executed entirely. */ function finalization() internal { } } // File: contracts/ODEMCrowdsale.sol /** * @title ODEM Crowdsale contract - crowdsale contract for the ODEM tokens. * @author Gustavo Guimaraes - <[email protected]> */ contract ODEMCrowdsale is FinalizableCrowdsale, Pausable { uint256 constant public BOUNTY_REWARD_SHARE = 43666667e18; // 43 mm uint256 constant public VESTED_TEAM_ADVISORS_SHARE = 38763636e18; // 38 mm uint256 constant public NON_VESTED_TEAM_ADVISORS_SHARE = 5039200e18; // 5 mm uint256 constant public COMPANY_SHARE = 71300194e18; // 71 mm uint256 constant public PRE_CROWDSALE_CAP = 58200000e18; // 58 mm uint256 constant public PUBLIC_CROWDSALE_CAP = 180000000e18; // 180 mm uint256 constant public TOTAL_TOKENS_FOR_CROWDSALE = PRE_CROWDSALE_CAP + PUBLIC_CROWDSALE_CAP; uint256 constant public TOTAL_TOKENS_SUPPLY = 396969697e18; // 396 mm uint256 constant public PERSONAL_FIRST_HOUR_CAP = 2000000e18; // 2 mm address public rewardWallet; address public teamAndAdvisorsAllocation; uint256 public oneHourAfterStartTime; // remainderPurchaser and remainderTokens info saved in the contract // used for reference for contract owner to send refund if any to last purchaser after end of crowdsale address public remainderPurchaser; uint256 public remainderAmount; mapping (address => uint256) public trackBuyersPurchases; // external contracts Whitelist public whitelist; event PrivateInvestorTokenPurchase(address indexed investor, uint256 tokensPurchased); event TokenRateChanged(uint256 previousRate, uint256 newRate); /** * @dev Contract constructor function * @param _startTime The timestamp of the beginning of the crowdsale * @param _endTime Timestamp when the crowdsale will finish * @param _whitelist contract containing the whitelisted addresses * @param _rate The token rate per ETH * @param _wallet Multisig wallet that will hold the crowdsale funds. * @param _rewardWallet wallet that will hold tokens bounty and rewards campaign */ function ODEMCrowdsale ( uint256 _startTime, uint256 _endTime, address _whitelist, uint256 _rate, address _wallet, address _rewardWallet ) public FinalizableCrowdsale() Crowdsale(_startTime, _endTime, _rate, _wallet) { require(_whitelist != address(0) && _wallet != address(0) && _rewardWallet != address(0)); whitelist = Whitelist(_whitelist); rewardWallet = _rewardWallet; oneHourAfterStartTime = startTime.add(1 hours); ODEMToken(token).pause(); } modifier whitelisted(address beneficiary) { require(whitelist.isWhitelisted(beneficiary)); _; } /** * @dev change crowdsale rate * @param newRate Figure that corresponds to the new rate per token */ function setRate(uint256 newRate) external onlyOwner { require(newRate != 0); TokenRateChanged(rate, newRate); rate = newRate; } /** * @dev Mint tokens for pre crowdsale putchases before crowdsale starts * @param investorsAddress Purchaser's address * @param tokensPurchased Tokens purchased during pre crowdsale */ function mintTokenForPreCrowdsale(address investorsAddress, uint256 tokensPurchased) external onlyOwner { require(now < startTime && investorsAddress != address(0)); require(token.totalSupply().add(tokensPurchased) <= PRE_CROWDSALE_CAP); token.mint(investorsAddress, tokensPurchased); PrivateInvestorTokenPurchase(investorsAddress, tokensPurchased); } /** * @dev Set the address which should receive the vested team tokens share on finalization * @param _teamAndAdvisorsAllocation address of team and advisor allocation contract */ function setTeamWalletAddress(address _teamAndAdvisorsAllocation) public onlyOwner { require(_teamAndAdvisorsAllocation != address(0x0)); teamAndAdvisorsAllocation = _teamAndAdvisorsAllocation; } /** * @dev payable function that allow token purchases * @param beneficiary Address of the purchaser */ function buyTokens(address beneficiary) public whenNotPaused whitelisted(beneficiary) payable { require(beneficiary != address(0)); require(msg.sender == beneficiary); require(validPurchase() && token.totalSupply() < TOTAL_TOKENS_FOR_CROWDSALE); uint256 weiAmount = msg.value; // calculate token amount to be created uint256 tokens = weiAmount.mul(rate); // checks whether personal token purchase cap has been reached within crowdsale first hour if (now < oneHourAfterStartTime) require(trackBuyersPurchases[msg.sender].add(tokens) <= PERSONAL_FIRST_HOUR_CAP); trackBuyersPurchases[beneficiary] = trackBuyersPurchases[beneficiary].add(tokens); //remainder logic if (token.totalSupply().add(tokens) > TOTAL_TOKENS_FOR_CROWDSALE) { tokens = TOTAL_TOKENS_FOR_CROWDSALE.sub(token.totalSupply()); weiAmount = tokens.div(rate); // save info so as to refund purchaser after crowdsale's end remainderPurchaser = msg.sender; remainderAmount = msg.value.sub(weiAmount); } // update state weiRaised = weiRaised.add(weiAmount); token.mint(beneficiary, tokens); TokenPurchase(msg.sender, beneficiary, weiAmount, tokens); forwardFunds(); } // overriding Crowdsale#hasEnded to add cap logic // @return true if crowdsale event has ended function hasEnded() public view returns (bool) { if (token.totalSupply() == TOTAL_TOKENS_FOR_CROWDSALE) { return true; } return super.hasEnded(); } /** * @dev Creates ODEM token contract. This is called on the constructor function of the Crowdsale contract */ function createTokenContract() internal returns (MintableToken) { return new ODEMToken(); } /** * @dev finalizes crowdsale */ function finalization() internal { // This must have been set manually prior to finalize(). require(teamAndAdvisorsAllocation != address(0x0)); // final minting token.mint(teamAndAdvisorsAllocation, VESTED_TEAM_ADVISORS_SHARE); token.mint(wallet, NON_VESTED_TEAM_ADVISORS_SHARE); token.mint(wallet, COMPANY_SHARE); token.mint(rewardWallet, BOUNTY_REWARD_SHARE); if (TOTAL_TOKENS_SUPPLY > token.totalSupply()) { uint256 remainingTokens = TOTAL_TOKENS_SUPPLY.sub(token.totalSupply()); token.mint(wallet, remainingTokens); } token.finishMinting(); ODEMToken(token).unpause(); super.finalization(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"investorsAddress","type":"address"},{"name":"tokensPurchased","type":"uint256"}],"name":"mintTokenForPreCrowdsale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"remainderAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"remainderPurchaser","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BOUNTY_REWARD_SHARE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRE_CROWDSALE_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_teamAndAdvisorsAllocation","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"COMPANY_SHARE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newRate","type":"uint256"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VESTED_TEAM_ADVISORS_SHARE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","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":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PUBLIC_CROWDSALE_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamAndAdvisorsAllocation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOTAL_TOKENS_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","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":"whitelist","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOTAL_TOKENS_FOR_CROWDSALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"NON_VESTED_TEAM_ADVISORS_SHARE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"trackBuyersPurchases","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"oneHourAfterStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERSONAL_FIRST_HOUR_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardWallet","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"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_whitelist","type":"address"},{"name":"_rate","type":"uint256"},{"name":"_wallet","type":"address"},{"name":"_rewardWallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"investor","type":"address"},{"indexed":false,"name":"tokensPurchased","type":"uint256"}],"name":"PrivateInvestorTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousRate","type":"uint256"},{"indexed":false,"name":"newRate","type":"uint256"}],"name":"TokenRateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]
Contract Creation Code
60606040526000600660146101000a81548160ff0219169083151502179055506000600660156101000a81548160ff02191690831515021790555034156200004657600080fd5b60405160c08062005f368339810160405280805190602001909190805190602001909190805190602001909190805190602001909190805190602001909190805190602001909190505085858484428410151515620000a457600080fd5b838310151515620000b457600080fd5b600082111515620000c457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200010157600080fd5b6200011f620003ff6401000000000262002442176401000000009004565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600181905550826002819055508160048190555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015620002645750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156200029e5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515620002aa57600080fd5b83600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000353610e10600154620004276401000000000262001af1179091906401000000009004565b6009819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638456cb596040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515620003de57600080fd5b6102c65a03f11515620003f057600080fd5b50505050505050505062000457565b60006200040b62000446565b604051809103906000f08015156200042257600080fd5b905090565b60008082840190508381101515156200043c57fe5b8091505092915050565b604051611b16806200442083390190565b613fb980620004676000396000f3006060604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063010e3964146101b7578063031f3b1a146101f957806318b03ceb14610222578063194984261461027757806320dcce99146102a05780632c4b2334146102c95780632c4e722e14610302578063306e3e991461032b5780633197cbb61461035457806334fcf4371461037d5780633f4ba83a146103a05780634042b66f146103b55780634417bc66146103de5780634bb278f314610407578063521eb2731461041c5780635c975abb1461047157806363d918511461049e578063645a8570146104c75780636461ed001461051c57806378e97925146105455780638456cb591461056e5780638d4e4083146105835780638da5cb5b146105b057806393e59dc11461060557806396bf4ed51461065a578063b832fdde14610683578063d1cb8f13146106ac578063ec8ac4d8146106f9578063ecb70fb714610727578063eee1c59d14610754578063f18dd5121461077d578063f2fde38b146107a6578063fb75b2c7146107df578063fc0c546a14610834575b6101b533610889565b005b34156101c257600080fd5b6101f7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fa9565b005b341561020457600080fd5b61020c61125b565b6040518082815260200191505060405180910390f35b341561022d57600080fd5b610235611261565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561028257600080fd5b61028a611287565b6040518082815260200191505060405180910390f35b34156102ab57600080fd5b6102b3611296565b6040518082815260200191505060405180910390f35b34156102d457600080fd5b610300600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506112a5565b005b341561030d57600080fd5b610315611381565b6040518082815260200191505060405180910390f35b341561033657600080fd5b61033e611387565b6040518082815260200191505060405180910390f35b341561035f57600080fd5b610367611396565b6040518082815260200191505060405180910390f35b341561038857600080fd5b61039e600480803590602001909190505061139c565b005b34156103ab57600080fd5b6103b3611453565b005b34156103c057600080fd5b6103c8611513565b6040518082815260200191505060405180910390f35b34156103e957600080fd5b6103f1611519565b6040518082815260200191505060405180910390f35b341561041257600080fd5b61041a611528565b005b341561042757600080fd5b61042f611604565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561047c57600080fd5b61048461162a565b604051808215151515815260200191505060405180910390f35b34156104a957600080fd5b6104b161163d565b6040518082815260200191505060405180910390f35b34156104d257600080fd5b6104da61164c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561052757600080fd5b61052f611672565b6040518082815260200191505060405180910390f35b341561055057600080fd5b610558611682565b6040518082815260200191505060405180910390f35b341561057957600080fd5b610581611688565b005b341561058e57600080fd5b610596611749565b604051808215151515815260200191505060405180910390f35b34156105bb57600080fd5b6105c361175c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561061057600080fd5b610618611782565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066557600080fd5b61066d6117a8565b6040518082815260200191505060405180910390f35b341561068e57600080fd5b6106966117c4565b6040518082815260200191505060405180910390f35b34156106b757600080fd5b6106e3600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117d3565b6040518082815260200191505060405180910390f35b610725600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610889565b005b341561073257600080fd5b61073a6117eb565b604051808215151515815260200191505060405180910390f35b341561075f57600080fd5b6107676118cb565b6040518082815260200191505060405180910390f35b341561078857600080fd5b6107906118d1565b6040518082815260200191505060405180910390f35b34156107b157600080fd5b6107dd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118e0565b005b34156107ea57600080fd5b6107f2611a38565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561083f57600080fd5b610847611a5e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600660159054906101000a900460ff161515156108a857600080fd5b82600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633af32abf826000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561096e57600080fd5b6102c65a03f1151561097f57600080fd5b50505060405180519050151561099457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156109d057600080fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0a57600080fd5b610a12611a83565b8015610adc57506a94e47b8d681715340000006a302454526a306c67000000016000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610abf57600080fd5b6102c65a03f11515610ad057600080fd5b50505060405180519050105b1515610ae757600080fd5b349250610aff60045484611ab690919063ffffffff16565b9150600954421015610b77576a01a784379d99db42000000610b6983600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611af190919063ffffffff16565b11151515610b7657600080fd5b5b610bc982600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611af190919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506a94e47b8d681715340000006a302454526a306c6700000001610cdf836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610cb657600080fd5b6102c65a03f11515610cc757600080fd5b50505060405180519050611af190919063ffffffff16565b1115610e2b57610db76000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610d7557600080fd5b6102c65a03f11515610d8657600080fd5b505050604051805190506a94e47b8d681715340000006a302454526a306c6700000001611b0f90919063ffffffff16565b9150610dce60045483611b2890919063ffffffff16565b925033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e248334611b0f90919063ffffffff16565b600b819055505b610e4083600554611af190919063ffffffff16565b6005819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1985846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610f1257600080fd5b6102c65a03f11515610f2357600080fd5b50505060405180519050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188585604051808381526020018281526020019250505060405180910390a3610fa3611b43565b50505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100557600080fd5b600154421080156110435750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561104e57600080fd5b6a302454526a306c67000000611114826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156110eb57600080fd5b6102c65a03f115156110fc57600080fd5b50505060405180519050611af190919063ffffffff16565b1115151561112157600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156111ed57600080fd5b6102c65a03f115156111fe57600080fd5b50505060405180519050508173ffffffffffffffffffffffffffffffffffffffff167f830b62b8a6ae5123838227ba54b82eaff318e34956396ac7e5c52d5c96a440ba826040518082815260200191505060405180910390a25050565b600b5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6a241ec6c2e686c458cc000081565b6a302454526a306c6700000081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561130157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561133d57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b6a3afa6742fceded6448000081565b60025481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113f857600080fd5b6000811415151561140857600080fd5b7f3eb3a3107021f12f1acd8d9afb35c4caac2bb3ccb9c53a0bc7f0950d3d22188460045482604051808381526020018281526020019250505060405180910390a18060048190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114af57600080fd5b600660159054906101000a900460ff1615156114ca57600080fd5b6000600660156101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60055481565b6a201084eb113e584950000081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561158457600080fd5b600660149054906101000a900460ff161515156115a057600080fd5b6115a86117eb565b15156115b357600080fd5b6115bb611ba7565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a16001600660146101000a81548160ff021916908315150217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660159054906101000a900460ff1681565b6a94e47b8d6817153400000081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6b01485d9a651930af76e4000081565b60015481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e457600080fd5b600660159054906101000a900460ff1615151561170057600080fd5b6001600660156101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600660149054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6a94e47b8d681715340000006a302454526a306c670000000181565b6a042b1794523623d580000081565b600c6020528060005260406000206000915090505481565b60006a94e47b8d681715340000006a302454526a306c67000000016000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561189357600080fd5b6102c65a03f115156118a457600080fd5b5050506040518051905014156118bd57600190506118c8565b6118c5612434565b90505b90565b60095481565b6a01a784379d99db4200000081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561193c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561197857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006001544210158015611a9c57506002544211155b915060003414159050818015611aaf5750805b9250505090565b6000806000841415611acb5760009150611aea565b8284029050828482811515611adc57fe5b04141515611ae657fe5b8091505b5092915050565b6000808284019050838110151515611b0557fe5b8091505092915050565b6000828211151515611b1d57fe5b818303905092915050565b6000808284811515611b3657fe5b0490508091505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515611ba557600080fd5b565b60008073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611c0657600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a201084eb113e58495000006000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611cff57600080fd5b6102c65a03f11515611d1057600080fd5b50505060405180519050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a042b1794523623d58000006000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611e1457600080fd5b6102c65a03f11515611e2557600080fd5b50505060405180519050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a3afa6742fceded644800006000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611f2957600080fd5b6102c65a03f11515611f3a57600080fd5b50505060405180519050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a241ec6c2e686c458cc00006000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561203e57600080fd5b6102c65a03f1151561204f57600080fd5b50505060405180519050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156120e757600080fd5b6102c65a03f115156120f857600080fd5b505050604051805190506b01485d9a651930af76e4000011156122e8576121db6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156121a557600080fd5b6102c65a03f115156121b657600080fd5b505050604051805190506b01485d9a651930af76e40000611b0f90919063ffffffff16565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156122cb57600080fd5b6102c65a03f115156122dc57600080fd5b50505060405180519050505b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637d64bcb46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561237557600080fd5b6102c65a03f1151561238657600080fd5b50505060405180519050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f4ba83a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b151561241557600080fd5b6102c65a03f1151561242657600080fd5b505050612431612440565b50565b60006002544211905090565b565b600061244c612467565b604051809103906000f080151561246257600080fd5b905090565b604051611b168061247883390190560060606040526000600360146101000a81548160ff0219169083151502179055506000600360156101000a81548160ff02191690831515021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a8c8061008a6000396000f300606060405260043610610107576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461010c57806306fdde0314610139578063095ea7b3146101c757806318160ddd1461022157806323b872dd1461024a578063313ce567146102c35780633f4ba83a146102f257806340c10f19146103075780635c975abb14610361578063661884631461038e57806370a08231146103e85780637d64bcb4146104355780638456cb59146104625780638da5cb5b1461047757806395d89b41146104cc578063a9059cbb1461055a578063d73dd623146105b4578063dd62ed3e1461060e578063f2fde38b1461067a575b600080fd5b341561011757600080fd5b61011f6106b3565b604051808215151515815260200191505060405180910390f35b341561014457600080fd5b61014c6106c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018c578082015181840152602081019050610171565b50505050905090810190601f1680156101b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101d257600080fd5b610207600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106ff565b604051808215151515815260200191505060405180910390f35b341561022c57600080fd5b61023461072f565b6040518082815260200191505060405180910390f35b341561025557600080fd5b6102a9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610735565b604051808215151515815260200191505060405180910390f35b34156102ce57600080fd5b6102d6610767565b604051808260ff1660ff16815260200191505060405180910390f35b34156102fd57600080fd5b61030561076c565b005b341561031257600080fd5b610347600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061082c565b604051808215151515815260200191505060405180910390f35b341561036c57600080fd5b610374610a14565b604051808215151515815260200191505060405180910390f35b341561039957600080fd5b6103ce600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a27565b604051808215151515815260200191505060405180910390f35b34156103f357600080fd5b61041f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a57565b6040518082815260200191505060405180910390f35b341561044057600080fd5b610448610aa0565b604051808215151515815260200191505060405180910390f35b341561046d57600080fd5b610475610b68565b005b341561048257600080fd5b61048a610c29565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104d757600080fd5b6104df610c4f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051f578082015181840152602081019050610504565b50505050905090810190601f16801561054c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561056557600080fd5b61059a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610c88565b604051808215151515815260200191505060405180910390f35b34156105bf57600080fd5b6105f4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610cb8565b604051808215151515815260200191505060405180910390f35b341561061957600080fd5b610664600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ce8565b6040518082815260200191505060405180910390f35b341561068557600080fd5b6106b1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d6f565b005b600360159054906101000a900460ff1681565b6040805190810160405280600a81526020017f4f44454d20546f6b656e0000000000000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff1615151561071d57600080fd5b6107278383610ec7565b905092915050565b60005481565b6000600360149054906101000a900460ff1615151561075357600080fd5b61075e848484610fb9565b90509392505050565b601281565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107c857600080fd5b600360149054906101000a900460ff1615156107e357600080fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561088a57600080fd5b600360159054906101000a900460ff161515156108a657600080fd5b6108bb8260005461137890919063ffffffff16565b60008190555061091382600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600360149054906101000a900460ff1681565b6000600360149054906101000a900460ff16151515610a4557600080fd5b610a4f8383611396565b905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610afe57600080fd5b600360159054906101000a900460ff16151515610b1a57600080fd5b6001600360156101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bc457600080fd5b600360149054906101000a900460ff16151515610be057600080fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600481526020017f4f44454d0000000000000000000000000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff16151515610ca657600080fd5b610cb08383611627565b905092915050565b6000600360149054906101000a900460ff16151515610cd657600080fd5b610ce0838361184b565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dcb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610e0757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ff657600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561104457600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156110cf57600080fd5b61112182600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4790919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b682600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061128882600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4790919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600080828401905083811015151561138c57fe5b8091505092915050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808311156114a7576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061153b565b6114ba8382611a4790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561166457600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156116b257600080fd5b61170482600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4790919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061179982600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60006118dc82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137890919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000828211151515611a5557fe5b8183039050929150505600a165627a7a72305820c69ebbd532104a61c2571563279c81031708bcd996dc1c50e13b9476ca9d8d7e0029a165627a7a723058200a6ceb3a40539663e7bcb0ac8e26deadfcf30e81c0f541650a8aebbfd5068e62002960606040526000600360146101000a81548160ff0219169083151502179055506000600360156101000a81548160ff02191690831515021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a8c8061008a6000396000f300606060405260043610610107576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461010c57806306fdde0314610139578063095ea7b3146101c757806318160ddd1461022157806323b872dd1461024a578063313ce567146102c35780633f4ba83a146102f257806340c10f19146103075780635c975abb14610361578063661884631461038e57806370a08231146103e85780637d64bcb4146104355780638456cb59146104625780638da5cb5b1461047757806395d89b41146104cc578063a9059cbb1461055a578063d73dd623146105b4578063dd62ed3e1461060e578063f2fde38b1461067a575b600080fd5b341561011757600080fd5b61011f6106b3565b604051808215151515815260200191505060405180910390f35b341561014457600080fd5b61014c6106c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018c578082015181840152602081019050610171565b50505050905090810190601f1680156101b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101d257600080fd5b610207600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106ff565b604051808215151515815260200191505060405180910390f35b341561022c57600080fd5b61023461072f565b6040518082815260200191505060405180910390f35b341561025557600080fd5b6102a9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610735565b604051808215151515815260200191505060405180910390f35b34156102ce57600080fd5b6102d6610767565b604051808260ff1660ff16815260200191505060405180910390f35b34156102fd57600080fd5b61030561076c565b005b341561031257600080fd5b610347600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061082c565b604051808215151515815260200191505060405180910390f35b341561036c57600080fd5b610374610a14565b604051808215151515815260200191505060405180910390f35b341561039957600080fd5b6103ce600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a27565b604051808215151515815260200191505060405180910390f35b34156103f357600080fd5b61041f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a57565b6040518082815260200191505060405180910390f35b341561044057600080fd5b610448610aa0565b604051808215151515815260200191505060405180910390f35b341561046d57600080fd5b610475610b68565b005b341561048257600080fd5b61048a610c29565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104d757600080fd5b6104df610c4f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051f578082015181840152602081019050610504565b50505050905090810190601f16801561054c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561056557600080fd5b61059a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610c88565b604051808215151515815260200191505060405180910390f35b34156105bf57600080fd5b6105f4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610cb8565b604051808215151515815260200191505060405180910390f35b341561061957600080fd5b610664600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ce8565b6040518082815260200191505060405180910390f35b341561068557600080fd5b6106b1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d6f565b005b600360159054906101000a900460ff1681565b6040805190810160405280600a81526020017f4f44454d20546f6b656e0000000000000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff1615151561071d57600080fd5b6107278383610ec7565b905092915050565b60005481565b6000600360149054906101000a900460ff1615151561075357600080fd5b61075e848484610fb9565b90509392505050565b601281565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107c857600080fd5b600360149054906101000a900460ff1615156107e357600080fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561088a57600080fd5b600360159054906101000a900460ff161515156108a657600080fd5b6108bb8260005461137890919063ffffffff16565b60008190555061091382600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600360149054906101000a900460ff1681565b6000600360149054906101000a900460ff16151515610a4557600080fd5b610a4f8383611396565b905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610afe57600080fd5b600360159054906101000a900460ff16151515610b1a57600080fd5b6001600360156101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bc457600080fd5b600360149054906101000a900460ff16151515610be057600080fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600481526020017f4f44454d0000000000000000000000000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff16151515610ca657600080fd5b610cb08383611627565b905092915050565b6000600360149054906101000a900460ff16151515610cd657600080fd5b610ce0838361184b565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dcb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610e0757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ff657600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561104457600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156110cf57600080fd5b61112182600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4790919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b682600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061128882600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4790919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600080828401905083811015151561138c57fe5b8091505092915050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808311156114a7576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061153b565b6114ba8382611a4790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561166457600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156116b257600080fd5b61170482600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4790919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061179982600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60006118dc82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137890919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000828211151515611a5557fe5b8183039050929150505600a165627a7a72305820c69ebbd532104a61c2571563279c81031708bcd996dc1c50e13b9476ca9d8d7e0029000000000000000000000000000000000000000000000000000000005a87ef10000000000000000000000000000000000000000000000000000000005aaf7c1000000000000000000000000052fcc1cb912c18008823841336ae24186ff5b6aa0000000000000000000000000000000000000000000000000000000000003d0b000000000000000000000000215b4a7cd7f4ad4594867bbcc91cac08c83ab507000000000000000000000000ef2d149e3ad5b8c10d9db08e4f64b0563f4d0f2a
Deployed Bytecode
0x6060604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063010e3964146101b7578063031f3b1a146101f957806318b03ceb14610222578063194984261461027757806320dcce99146102a05780632c4b2334146102c95780632c4e722e14610302578063306e3e991461032b5780633197cbb61461035457806334fcf4371461037d5780633f4ba83a146103a05780634042b66f146103b55780634417bc66146103de5780634bb278f314610407578063521eb2731461041c5780635c975abb1461047157806363d918511461049e578063645a8570146104c75780636461ed001461051c57806378e97925146105455780638456cb591461056e5780638d4e4083146105835780638da5cb5b146105b057806393e59dc11461060557806396bf4ed51461065a578063b832fdde14610683578063d1cb8f13146106ac578063ec8ac4d8146106f9578063ecb70fb714610727578063eee1c59d14610754578063f18dd5121461077d578063f2fde38b146107a6578063fb75b2c7146107df578063fc0c546a14610834575b6101b533610889565b005b34156101c257600080fd5b6101f7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fa9565b005b341561020457600080fd5b61020c61125b565b6040518082815260200191505060405180910390f35b341561022d57600080fd5b610235611261565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561028257600080fd5b61028a611287565b6040518082815260200191505060405180910390f35b34156102ab57600080fd5b6102b3611296565b6040518082815260200191505060405180910390f35b34156102d457600080fd5b610300600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506112a5565b005b341561030d57600080fd5b610315611381565b6040518082815260200191505060405180910390f35b341561033657600080fd5b61033e611387565b6040518082815260200191505060405180910390f35b341561035f57600080fd5b610367611396565b6040518082815260200191505060405180910390f35b341561038857600080fd5b61039e600480803590602001909190505061139c565b005b34156103ab57600080fd5b6103b3611453565b005b34156103c057600080fd5b6103c8611513565b6040518082815260200191505060405180910390f35b34156103e957600080fd5b6103f1611519565b6040518082815260200191505060405180910390f35b341561041257600080fd5b61041a611528565b005b341561042757600080fd5b61042f611604565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561047c57600080fd5b61048461162a565b604051808215151515815260200191505060405180910390f35b34156104a957600080fd5b6104b161163d565b6040518082815260200191505060405180910390f35b34156104d257600080fd5b6104da61164c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561052757600080fd5b61052f611672565b6040518082815260200191505060405180910390f35b341561055057600080fd5b610558611682565b6040518082815260200191505060405180910390f35b341561057957600080fd5b610581611688565b005b341561058e57600080fd5b610596611749565b604051808215151515815260200191505060405180910390f35b34156105bb57600080fd5b6105c361175c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561061057600080fd5b610618611782565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066557600080fd5b61066d6117a8565b6040518082815260200191505060405180910390f35b341561068e57600080fd5b6106966117c4565b6040518082815260200191505060405180910390f35b34156106b757600080fd5b6106e3600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117d3565b6040518082815260200191505060405180910390f35b610725600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610889565b005b341561073257600080fd5b61073a6117eb565b604051808215151515815260200191505060405180910390f35b341561075f57600080fd5b6107676118cb565b6040518082815260200191505060405180910390f35b341561078857600080fd5b6107906118d1565b6040518082815260200191505060405180910390f35b34156107b157600080fd5b6107dd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118e0565b005b34156107ea57600080fd5b6107f2611a38565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561083f57600080fd5b610847611a5e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600660159054906101000a900460ff161515156108a857600080fd5b82600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633af32abf826000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561096e57600080fd5b6102c65a03f1151561097f57600080fd5b50505060405180519050151561099457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156109d057600080fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0a57600080fd5b610a12611a83565b8015610adc57506a94e47b8d681715340000006a302454526a306c67000000016000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610abf57600080fd5b6102c65a03f11515610ad057600080fd5b50505060405180519050105b1515610ae757600080fd5b349250610aff60045484611ab690919063ffffffff16565b9150600954421015610b77576a01a784379d99db42000000610b6983600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611af190919063ffffffff16565b11151515610b7657600080fd5b5b610bc982600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611af190919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506a94e47b8d681715340000006a302454526a306c6700000001610cdf836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610cb657600080fd5b6102c65a03f11515610cc757600080fd5b50505060405180519050611af190919063ffffffff16565b1115610e2b57610db76000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610d7557600080fd5b6102c65a03f11515610d8657600080fd5b505050604051805190506a94e47b8d681715340000006a302454526a306c6700000001611b0f90919063ffffffff16565b9150610dce60045483611b2890919063ffffffff16565b925033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e248334611b0f90919063ffffffff16565b600b819055505b610e4083600554611af190919063ffffffff16565b6005819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1985846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610f1257600080fd5b6102c65a03f11515610f2357600080fd5b50505060405180519050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188585604051808381526020018281526020019250505060405180910390a3610fa3611b43565b50505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100557600080fd5b600154421080156110435750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561104e57600080fd5b6a302454526a306c67000000611114826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156110eb57600080fd5b6102c65a03f115156110fc57600080fd5b50505060405180519050611af190919063ffffffff16565b1115151561112157600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156111ed57600080fd5b6102c65a03f115156111fe57600080fd5b50505060405180519050508173ffffffffffffffffffffffffffffffffffffffff167f830b62b8a6ae5123838227ba54b82eaff318e34956396ac7e5c52d5c96a440ba826040518082815260200191505060405180910390a25050565b600b5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6a241ec6c2e686c458cc000081565b6a302454526a306c6700000081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561130157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561133d57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b6a3afa6742fceded6448000081565b60025481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113f857600080fd5b6000811415151561140857600080fd5b7f3eb3a3107021f12f1acd8d9afb35c4caac2bb3ccb9c53a0bc7f0950d3d22188460045482604051808381526020018281526020019250505060405180910390a18060048190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114af57600080fd5b600660159054906101000a900460ff1615156114ca57600080fd5b6000600660156101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60055481565b6a201084eb113e584950000081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561158457600080fd5b600660149054906101000a900460ff161515156115a057600080fd5b6115a86117eb565b15156115b357600080fd5b6115bb611ba7565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a16001600660146101000a81548160ff021916908315150217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660159054906101000a900460ff1681565b6a94e47b8d6817153400000081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6b01485d9a651930af76e4000081565b60015481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e457600080fd5b600660159054906101000a900460ff1615151561170057600080fd5b6001600660156101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600660149054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6a94e47b8d681715340000006a302454526a306c670000000181565b6a042b1794523623d580000081565b600c6020528060005260406000206000915090505481565b60006a94e47b8d681715340000006a302454526a306c67000000016000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561189357600080fd5b6102c65a03f115156118a457600080fd5b5050506040518051905014156118bd57600190506118c8565b6118c5612434565b90505b90565b60095481565b6a01a784379d99db4200000081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561193c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561197857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006001544210158015611a9c57506002544211155b915060003414159050818015611aaf5750805b9250505090565b6000806000841415611acb5760009150611aea565b8284029050828482811515611adc57fe5b04141515611ae657fe5b8091505b5092915050565b6000808284019050838110151515611b0557fe5b8091505092915050565b6000828211151515611b1d57fe5b818303905092915050565b6000808284811515611b3657fe5b0490508091505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515611ba557600080fd5b565b60008073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611c0657600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a201084eb113e58495000006000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611cff57600080fd5b6102c65a03f11515611d1057600080fd5b50505060405180519050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a042b1794523623d58000006000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611e1457600080fd5b6102c65a03f11515611e2557600080fd5b50505060405180519050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a3afa6742fceded644800006000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611f2957600080fd5b6102c65a03f11515611f3a57600080fd5b50505060405180519050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a241ec6c2e686c458cc00006000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561203e57600080fd5b6102c65a03f1151561204f57600080fd5b50505060405180519050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156120e757600080fd5b6102c65a03f115156120f857600080fd5b505050604051805190506b01485d9a651930af76e4000011156122e8576121db6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156121a557600080fd5b6102c65a03f115156121b657600080fd5b505050604051805190506b01485d9a651930af76e40000611b0f90919063ffffffff16565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156122cb57600080fd5b6102c65a03f115156122dc57600080fd5b50505060405180519050505b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637d64bcb46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561237557600080fd5b6102c65a03f1151561238657600080fd5b50505060405180519050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f4ba83a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b151561241557600080fd5b6102c65a03f1151561242657600080fd5b505050612431612440565b50565b60006002544211905090565b565b600061244c612467565b604051809103906000f080151561246257600080fd5b905090565b604051611b168061247883390190560060606040526000600360146101000a81548160ff0219169083151502179055506000600360156101000a81548160ff02191690831515021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a8c8061008a6000396000f300606060405260043610610107576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461010c57806306fdde0314610139578063095ea7b3146101c757806318160ddd1461022157806323b872dd1461024a578063313ce567146102c35780633f4ba83a146102f257806340c10f19146103075780635c975abb14610361578063661884631461038e57806370a08231146103e85780637d64bcb4146104355780638456cb59146104625780638da5cb5b1461047757806395d89b41146104cc578063a9059cbb1461055a578063d73dd623146105b4578063dd62ed3e1461060e578063f2fde38b1461067a575b600080fd5b341561011757600080fd5b61011f6106b3565b604051808215151515815260200191505060405180910390f35b341561014457600080fd5b61014c6106c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018c578082015181840152602081019050610171565b50505050905090810190601f1680156101b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101d257600080fd5b610207600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106ff565b604051808215151515815260200191505060405180910390f35b341561022c57600080fd5b61023461072f565b6040518082815260200191505060405180910390f35b341561025557600080fd5b6102a9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610735565b604051808215151515815260200191505060405180910390f35b34156102ce57600080fd5b6102d6610767565b604051808260ff1660ff16815260200191505060405180910390f35b34156102fd57600080fd5b61030561076c565b005b341561031257600080fd5b610347600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061082c565b604051808215151515815260200191505060405180910390f35b341561036c57600080fd5b610374610a14565b604051808215151515815260200191505060405180910390f35b341561039957600080fd5b6103ce600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a27565b604051808215151515815260200191505060405180910390f35b34156103f357600080fd5b61041f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a57565b6040518082815260200191505060405180910390f35b341561044057600080fd5b610448610aa0565b604051808215151515815260200191505060405180910390f35b341561046d57600080fd5b610475610b68565b005b341561048257600080fd5b61048a610c29565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104d757600080fd5b6104df610c4f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051f578082015181840152602081019050610504565b50505050905090810190601f16801561054c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561056557600080fd5b61059a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610c88565b604051808215151515815260200191505060405180910390f35b34156105bf57600080fd5b6105f4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610cb8565b604051808215151515815260200191505060405180910390f35b341561061957600080fd5b610664600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ce8565b6040518082815260200191505060405180910390f35b341561068557600080fd5b6106b1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d6f565b005b600360159054906101000a900460ff1681565b6040805190810160405280600a81526020017f4f44454d20546f6b656e0000000000000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff1615151561071d57600080fd5b6107278383610ec7565b905092915050565b60005481565b6000600360149054906101000a900460ff1615151561075357600080fd5b61075e848484610fb9565b90509392505050565b601281565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107c857600080fd5b600360149054906101000a900460ff1615156107e357600080fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561088a57600080fd5b600360159054906101000a900460ff161515156108a657600080fd5b6108bb8260005461137890919063ffffffff16565b60008190555061091382600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600360149054906101000a900460ff1681565b6000600360149054906101000a900460ff16151515610a4557600080fd5b610a4f8383611396565b905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610afe57600080fd5b600360159054906101000a900460ff16151515610b1a57600080fd5b6001600360156101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bc457600080fd5b600360149054906101000a900460ff16151515610be057600080fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600481526020017f4f44454d0000000000000000000000000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff16151515610ca657600080fd5b610cb08383611627565b905092915050565b6000600360149054906101000a900460ff16151515610cd657600080fd5b610ce0838361184b565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dcb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610e0757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ff657600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561104457600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156110cf57600080fd5b61112182600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4790919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b682600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061128882600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4790919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600080828401905083811015151561138c57fe5b8091505092915050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808311156114a7576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061153b565b6114ba8382611a4790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561166457600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156116b257600080fd5b61170482600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4790919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061179982600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60006118dc82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137890919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000828211151515611a5557fe5b8183039050929150505600a165627a7a72305820c69ebbd532104a61c2571563279c81031708bcd996dc1c50e13b9476ca9d8d7e0029a165627a7a723058200a6ceb3a40539663e7bcb0ac8e26deadfcf30e81c0f541650a8aebbfd5068e620029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000005a87ef10000000000000000000000000000000000000000000000000000000005aaf7c1000000000000000000000000052fcc1cb912c18008823841336ae24186ff5b6aa0000000000000000000000000000000000000000000000000000000000003d0b000000000000000000000000215b4a7cd7f4ad4594867bbcc91cac08c83ab507000000000000000000000000ef2d149e3ad5b8c10d9db08e4f64b0563f4d0f2a
-----Decoded View---------------
Arg [0] : _startTime (uint256): 1518858000
Arg [1] : _endTime (uint256): 1521450000
Arg [2] : _whitelist (address): 0x52fcC1cB912C18008823841336aE24186fF5B6aa
Arg [3] : _rate (uint256): 15627
Arg [4] : _wallet (address): 0x215b4A7CD7f4aD4594867bBCc91CaC08C83aB507
Arg [5] : _rewardWallet (address): 0xEf2d149e3ad5b8C10D9db08E4F64b0563F4D0f2A
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005a87ef10
Arg [1] : 000000000000000000000000000000000000000000000000000000005aaf7c10
Arg [2] : 00000000000000000000000052fcc1cb912c18008823841336ae24186ff5b6aa
Arg [3] : 0000000000000000000000000000000000000000000000000000000000003d0b
Arg [4] : 000000000000000000000000215b4a7cd7f4ad4594867bbcc91cac08c83ab507
Arg [5] : 000000000000000000000000ef2d149e3ad5b8c10d9db08e4f64b0563f4d0f2a
Swarm Source
bzzr://c69ebbd532104a61c2571563279c81031708bcd996dc1c50e13b9476ca9d8d7e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.