More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 2,078 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Sell All Cookies | 20643153 | 48 days ago | IN | 0 ETH | 0.00014449 | ||||
Sell All Cookies | 17655271 | 466 days ago | IN | 0 ETH | 0.00103599 | ||||
Sell All Cookies | 16016486 | 696 days ago | IN | 0 ETH | 0.00075147 | ||||
Sell All Cookies | 15977130 | 702 days ago | IN | 0 ETH | 0.00189017 | ||||
Sell All Cookies | 15962557 | 704 days ago | IN | 0 ETH | 0.00151328 | ||||
Sell All Cookies | 15962548 | 704 days ago | IN | 0 ETH | 0.00172729 | ||||
Sell All Cookies | 7561357 | 2014 days ago | IN | 0 ETH | 0.00007448 | ||||
Sell All Cookies | 7525851 | 2019 days ago | IN | 0 ETH | 0.00007448 | ||||
Sell All Cookies | 7508780 | 2022 days ago | IN | 0 ETH | 0.00007448 | ||||
Sell All Cookies | 7493641 | 2024 days ago | IN | 0 ETH | 0.00034535 | ||||
Sell All Cookies | 7477541 | 2027 days ago | IN | 0 ETH | 0.00016341 | ||||
Sell All Cookies | 7474967 | 2027 days ago | IN | 0 ETH | 0.00007448 | ||||
Sell All Cookies | 7463797 | 2029 days ago | IN | 0 ETH | 0.00020991 | ||||
Sell All Cookies | 7421160 | 2036 days ago | IN | 0 ETH | 0.00007448 | ||||
Sell All Cookies | 7414911 | 2037 days ago | IN | 0 ETH | 0.00005798 | ||||
Sell All Cookies | 7357775 | 2046 days ago | IN | 0 ETH | 0.0001107 | ||||
Sell All Cookies | 7357710 | 2046 days ago | IN | 0 ETH | 0.000054 | ||||
Sell All Cookies | 7336387 | 2049 days ago | IN | 0 ETH | 0.000056 | ||||
Sell All Cookies | 7233528 | 2069 days ago | IN | 0 ETH | 0.00007448 | ||||
Sell All Cookies | 7203404 | 2076 days ago | IN | 0 ETH | 0.00006853 | ||||
Sell All Cookies | 7193722 | 2078 days ago | IN | 0 ETH | 0.00021669 | ||||
Sell All Cookies | 7180678 | 2081 days ago | IN | 0 ETH | 0.00027763 | ||||
Sell All Cookies | 7171826 | 2082 days ago | IN | 0 ETH | 0.00007448 | ||||
Sell All Cookies | 7164845 | 2084 days ago | IN | 0 ETH | 0.0000948 | ||||
Sell All Cookies | 7161181 | 2085 days ago | IN | 0 ETH | 0.00009488 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20643153 | 48 days ago | 0.00932488 ETH | ||||
20640374 | 48 days ago | 0.00024284 ETH | ||||
20640153 | 48 days ago | 0.00045654 ETH | ||||
20363928 | 87 days ago | 0.0000017 ETH | ||||
19854938 | 158 days ago | 0.0041134 ETH | ||||
17655271 | 466 days ago | 0.00000123 ETH | ||||
17655258 | 466 days ago | 0.00000282 ETH | ||||
16016486 | 696 days ago | 0.00001752 ETH | ||||
15977130 | 702 days ago | 0.0000065 ETH | ||||
15962557 | 704 days ago | 0.00000418 ETH | ||||
15953184 | 705 days ago | 0.003 ETH | ||||
9622947 | 1685 days ago | 0.13973439 ETH | ||||
8616581 | 1849 days ago | 0.00000713 ETH | ||||
8548631 | 1860 days ago | 0.00000113 ETH | ||||
8070057 | 1934 days ago | 0.10140694 ETH | ||||
7561357 | 2014 days ago | 0.00700215 ETH | ||||
7553991 | 2015 days ago | 0.006 ETH | ||||
7550307 | 2016 days ago | 0.06 ETH | ||||
7550282 | 2016 days ago | 0.00789 ETH | ||||
7525851 | 2019 days ago | 0.00143523 ETH | ||||
7508780 | 2022 days ago | 0.00413451 ETH | ||||
7493641 | 2024 days ago | 0.00358653 ETH | ||||
7477541 | 2027 days ago | 0.00729023 ETH | ||||
7474967 | 2027 days ago | 0.00000171 ETH | ||||
7463797 | 2029 days ago | 0.01680492 ETH |
Loading...
Loading
Contract Name:
MoonInc
Compiler Version
v0.4.20+commit.3155dd80
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-05-23 */ pragma solidity 0.4.20; /* * Team AppX presents - Moon, Inc. | Competitive Ethereum Idle Pyramid * Website: https://mooninc.io/ * Backup: https://mooninc.surge.sh/ * Discord: https://discord.gg/9Ab8Az3 * * There are 2 contracts: * 1. MoonInc: handle Cookie production, cookie price calulation and cookie selling * - Reference: [Goo] https://etherscan.io/address/0x57b116da40f21f91aec57329ecb763d29c1b2355#code * 2. ProductionUnitToken: handle production units tokens buy, sell, reinvest and withdraw * - Reference: [PoWTF] https://etherscan.io/address/0x702392282255f8c0993dbbbb148d80d2ef6795b1#code * * Features: * - You can buy workers with ETH to increase your cookies production. * - You can sell your cookies and claim a proportion of the cookie fund. * - You cannot sell cookies within the first hour of a new production unit launch. * - The selling price of a cookie depends on the Cookie Fund and the total cookies supply, the formula is: * CookiePrice = CookieFund / TotalCookieSupply * Multiplier * * Where Multiplier is a number from 0.5 to 1, which starts with 0.5 after a new production unit started, and reaches maximum value (1) after 5 days. * - You can sell your workers at any time like normal tokens * * Developed by by AppX Matthew, ft. MrBlobby | GOO * */ /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract ProductionUnitToken { /*================================= = MODIFIERS = =================================*/ /// @dev Only people with tokens modifier onlyBagholders { require(myTokens() > 0); _; } /// @dev Only people with profits modifier onlyStronghands { require(myDividends(true) > 0); _; } /*============================== = EVENTS = ==============================*/ event onTokenPurchase( address indexed customerAddress, uint256 incomingEthereum, uint256 tokensMinted, address indexed referredBy, uint timestamp, uint256 price ); event onTokenSell( address indexed customerAddress, uint256 tokensBurned, uint256 ethereumEarned, uint timestamp, uint256 price ); event onReinvestment( address indexed customerAddress, uint256 ethereumReinvested, uint256 tokensMinted ); event onWithdraw( address indexed customerAddress, uint256 ethereumWithdrawn ); // ERC20 event Transfer( address indexed from, address indexed to, uint256 tokens ); /*===================================== = DEPENDENCIES = =====================================*/ // MoonInc contract MoonInc public moonIncContract; /*===================================== = CONFIGURABLES = =====================================*/ string public name = "Production Unit | Moon, Inc."; string public symbol = "ProductionUnit"; uint8 constant public decimals = 18; /// @dev dividends for token purchase uint8 public entryFee_; /// @dev dividends for token transfer uint8 public transferFee_; /// @dev dividends for token selling uint8 public exitFee_; /// @dev 20% of entryFee_ is given to referrer uint8 constant internal refferalFee_ = 20; uint256 public tokenPriceInitial_; // original is 0.0000001 ether uint256 public tokenPriceIncremental_; // original is 0.00000001 ether uint256 constant internal magnitude = 2 ** 64; /// @dev proof of stake (10 tokens) uint256 public stakingRequirement = 10e18; // cookie production multiplier (how many cookies do 1 token make per second) uint256 public cookieProductionMultiplier; // auto start timer uint256 public startTime; // Maximum amount of dev one time pre-mine mapping(address => uint) public ambassadorsMaxPremine; mapping(address => bool) public ambassadorsPremined; mapping(address => address) public ambassadorsPrerequisite; /*================================= = DATASETS = ================================*/ // amount of shares for each address (scaled number) mapping(address => uint256) internal tokenBalanceLedger_; mapping(address => uint256) internal referralBalance_; mapping(address => int256) internal payoutsTo_; uint256 internal tokenSupply_; /*======================================= = PUBLIC FUNCTIONS = =======================================*/ /// @dev Set the MoonInc contract address to notify when token amount changes function ProductionUnitToken( address _moonIncContractAddress, uint8 _entryFee, uint8 _transferFee, uint8 _exitFee, uint _tokenPriceInitial, uint _tokenPriceIncremental, uint _cookieProductionMultiplier, uint _startTime ) public { moonIncContract = MoonInc(_moonIncContractAddress); entryFee_ = _entryFee; transferFee_ = _transferFee; exitFee_ = _exitFee; tokenPriceInitial_ = _tokenPriceInitial; tokenPriceIncremental_ = _tokenPriceIncremental; cookieProductionMultiplier = _cookieProductionMultiplier; startTime = _startTime; // Set ambassadors' maximum one time pre-mine amount (Total 1.47 ETH pre-mine including last 2 ambassadors from contest). // MA ambassadorsMaxPremine[0xFEA0904ACc8Df0F3288b6583f60B86c36Ea52AcD] = 0.28 ether; ambassadorsPremined[address(0)] = true; // first ambassador don't need prerequisite // BL ambassadorsMaxPremine[0xc951D3463EbBa4e9Ec8dDfe1f42bc5895C46eC8f] = 0.28 ether; ambassadorsPrerequisite[0xc951D3463EbBa4e9Ec8dDfe1f42bc5895C46eC8f] = 0xFEA0904ACc8Df0F3288b6583f60B86c36Ea52AcD; // PH ambassadorsMaxPremine[0x183feBd8828a9ac6c70C0e27FbF441b93004fC05] = 0.28 ether; ambassadorsPrerequisite[0x183feBd8828a9ac6c70C0e27FbF441b93004fC05] = 0xc951D3463EbBa4e9Ec8dDfe1f42bc5895C46eC8f; // RS ambassadorsMaxPremine[0x1fbc2Ca750E003A56d706C595b49a0A430EBA92d] = 0.09 ether; ambassadorsPrerequisite[0x1fbc2Ca750E003A56d706C595b49a0A430EBA92d] = 0x183feBd8828a9ac6c70C0e27FbF441b93004fC05; // LN ambassadorsMaxPremine[0x41F29054E7c0BC59a8AF10f3a6e7C0E53B334e05] = 0.09 ether; ambassadorsPrerequisite[0x41F29054E7c0BC59a8AF10f3a6e7C0E53B334e05] = 0x1fbc2Ca750E003A56d706C595b49a0A430EBA92d; // LE ambassadorsMaxPremine[0x15Fda64fCdbcA27a60Aa8c6ca882Aa3e1DE4Ea41] = 0.09 ether; ambassadorsPrerequisite[0x15Fda64fCdbcA27a60Aa8c6ca882Aa3e1DE4Ea41] = 0x41F29054E7c0BC59a8AF10f3a6e7C0E53B334e05; // MI ambassadorsMaxPremine[0x0a3239799518E7F7F339867A4739282014b97Dcf] = 0.09 ether; ambassadorsPrerequisite[0x0a3239799518E7F7F339867A4739282014b97Dcf] = 0x15Fda64fCdbcA27a60Aa8c6ca882Aa3e1DE4Ea41; // PO ambassadorsMaxPremine[0x31529d5Ab0D299D9b0594B7f2ef3515Be668AA87] = 0.09 ether; ambassadorsPrerequisite[0x31529d5Ab0D299D9b0594B7f2ef3515Be668AA87] = 0x0a3239799518E7F7F339867A4739282014b97Dcf; } bool public lastTwoAmbassadorsAdded; /// @dev Add the last 2 ambassadors from the invite contest because they both offline in the time the contract is deployed. function addLastTwoAmbassadors(address _address1, address _address2) public { require(msg.sender == 0xFEA0904ACc8Df0F3288b6583f60B86c36Ea52AcD && !lastTwoAmbassadorsAdded); lastTwoAmbassadorsAdded = true; // KHAN ambassadorsMaxPremine[_address1] = 0.09 ether; ambassadorsPrerequisite[_address1] = 0x31529d5Ab0D299D9b0594B7f2ef3515Be668AA87; // CRYPTOWHALE ambassadorsMaxPremine[_address2] = 0.09 ether; ambassadorsPrerequisite[_address2] = _address1; } /// @dev Converts all incoming ethereum to tokens for the caller, and passes down the referral addy (if any) function buy(address _referredBy) public payable returns (uint256) { purchaseTokens(msg.value, _referredBy); } /** * @dev Fallback function to handle ethereum that was send straight to the contract * Unfortunately we cannot use a referral address this way. */ function() payable public { purchaseTokens(msg.value, 0x0); } /// @dev Converts all of caller's dividends to tokens. function reinvest() onlyStronghands public { // fetch dividends uint256 _dividends = myDividends(false); // retrieve ref. bonus later in the code // pay out the dividends virtually address _customerAddress = msg.sender; payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude); // retrieve ref. bonus _dividends += referralBalance_[_customerAddress]; referralBalance_[_customerAddress] = 0; // dispatch a buy order with the virtualized "withdrawn dividends" uint256 _tokens = purchaseTokens(_dividends, 0x0); // fire event onReinvestment(_customerAddress, _dividends, _tokens); } /// @dev Alias of sell() and withdraw(). function exit() public { // get token count for caller & sell them all address _customerAddress = msg.sender; uint256 _tokens = tokenBalanceLedger_[_customerAddress]; if (_tokens > 0) sell(_tokens); // lambo delivery service withdraw(); } /// @dev Withdraws all of the callers earnings. function withdraw() onlyStronghands public { // setup data address _customerAddress = msg.sender; uint256 _dividends = myDividends(false); // get ref. bonus later in the code // update dividend tracker payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude); // add ref. bonus _dividends += referralBalance_[_customerAddress]; referralBalance_[_customerAddress] = 0; // lambo delivery service _customerAddress.transfer(_dividends); // fire event onWithdraw(_customerAddress, _dividends); } /// @dev Liquifies tokens to ethereum. function sell(uint256 _amountOfTokens) onlyBagholders public { require(now >= startTime); // setup data address _customerAddress = msg.sender; // russian hackers BTFO require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]); uint256 _tokens = _amountOfTokens; uint256 _ethereum = tokensToEthereum_(_tokens); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); // burn the sold tokens tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens); tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens); // update dividends tracker int256 _updatedPayouts = (int256) (_taxedEthereum * magnitude); payoutsTo_[_customerAddress] -= _updatedPayouts; // Tell MoonInc contract for tokens amount change, and transfer dividends. moonIncContract.handleProductionDecrease.value(_dividends)(_customerAddress, _tokens * cookieProductionMultiplier); // fire event onTokenSell(_customerAddress, _tokens, _taxedEthereum, now, buyPrice()); } /** * @dev Transfer tokens from the caller to a new holder. * Remember, there's a fee here as well. */ function transfer(address _toAddress, uint256 _amountOfTokens) onlyBagholders public returns (bool) { // setup address _customerAddress = msg.sender; // make sure we have the requested tokens require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]); // withdraw all outstanding dividends first if (myDividends(true) > 0) { withdraw(); } // liquify 10% of the tokens that are transfered // these are dispersed to shareholders uint256 _tokenFee = SafeMath.div(SafeMath.mul(_amountOfTokens, transferFee_), 100); uint256 _taxedTokens = SafeMath.sub(_amountOfTokens, _tokenFee); uint256 _dividends = tokensToEthereum_(_tokenFee); // burn the fee tokens tokenSupply_ = SafeMath.sub(tokenSupply_, _tokenFee); // exchange tokens tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens); tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens); // Tell MoonInc contract for tokens amount change, and transfer dividends. moonIncContract.handleProductionDecrease.value(_dividends)(_customerAddress, _amountOfTokens * cookieProductionMultiplier); moonIncContract.handleProductionIncrease(_toAddress, _taxedTokens * cookieProductionMultiplier); // fire event Transfer(_customerAddress, _toAddress, _taxedTokens); // ERC20 return true; } /*===================================== = HELPERS AND CALCULATORS = =====================================*/ function getSettings() public view returns (uint8, uint8, uint8, uint256, uint256, uint256, uint256) { return (entryFee_, transferFee_, exitFee_, tokenPriceInitial_, tokenPriceIncremental_, cookieProductionMultiplier, startTime); } /** * @dev Method to view the current Ethereum stored in the contract * Example: totalEthereumBalance() */ function totalEthereumBalance() public view returns (uint256) { return this.balance; } /// @dev Retrieve the total token supply. function totalSupply() public view returns (uint256) { return tokenSupply_; } /// @dev Retrieve the tokens owned by the caller. function myTokens() public view returns (uint256) { address _customerAddress = msg.sender; return balanceOf(_customerAddress); } /** * @dev Retrieve the dividends owned by the caller. * If `_includeReferralBonus` is to to 1/true, the referral bonus will be included in the calculations. * The reason for this, is that in the frontend, we will want to get the total divs (global + ref) * But in the internal calculations, we want them separate. */ function myDividends(bool _includeReferralBonus) public view returns (uint256) { address _customerAddress = msg.sender; return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress) ; } /// @dev Retrieve the token balance of any single address. function balanceOf(address _customerAddress) public view returns (uint256) { return tokenBalanceLedger_[_customerAddress]; } /// @dev Retrieve the dividend balance of any single address. function dividendsOf(address _customerAddress) public view returns (uint256) { return (uint256) ((int256) (-payoutsTo_[_customerAddress])) / magnitude; } /// @dev Return the sell price of 1 individual token. function sellPrice() public view returns (uint256) { // our calculation relies on the token supply, so we need supply. Doh. if (tokenSupply_ == 0) { return tokenPriceInitial_ - tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); return _taxedEthereum; } } /// @dev Return the buy price of 1 individual token. function buyPrice() public view returns (uint256) { // our calculation relies on the token supply, so we need supply. Doh. if (tokenSupply_ == 0) { return tokenPriceInitial_ + tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, entryFee_), 100); uint256 _taxedEthereum = SafeMath.add(_ethereum, _dividends); return _taxedEthereum; } } /// @dev Function for the frontend to dynamically retrieve the price scaling of buy orders. function calculateTokensReceived(uint256 _ethereumToSpend) public view returns (uint256) { uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereumToSpend, entryFee_), 100); uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends); uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum); return _amountOfTokens; } /// @dev Function for the frontend to dynamically retrieve the price scaling of sell orders. function calculateEthereumReceived(uint256 _tokensToSell) public view returns (uint256) { require(_tokensToSell <= tokenSupply_); uint256 _ethereum = tokensToEthereum_(_tokensToSell); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); return _taxedEthereum; } /*========================================== = INTERNAL FUNCTIONS = ==========================================*/ /// @dev Internal function to actually purchase the tokens. function purchaseTokens(uint256 _incomingEthereum, address _referredBy) internal returns (uint256) { require( // auto start now >= startTime || // ambassador pre-mine within 1 hour before startTime, sequences enforced (now >= startTime - 1 hours && !ambassadorsPremined[msg.sender] && ambassadorsPremined[ambassadorsPrerequisite[msg.sender]] && _incomingEthereum <= ambassadorsMaxPremine[msg.sender]) || // ambassador pre-mine within 10 minutes before startTime, sequences not enforced (now >= startTime - 10 minutes && !ambassadorsPremined[msg.sender] && _incomingEthereum <= ambassadorsMaxPremine[msg.sender]) ); if (now < startTime) { ambassadorsPremined[msg.sender] = true; } // data setup address _customerAddress = msg.sender; uint256 _undividedDividends = SafeMath.div(SafeMath.mul(_incomingEthereum, entryFee_), 100); uint256 _referralBonus = SafeMath.div(SafeMath.mul(_undividedDividends, refferalFee_), 100); uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus); uint256 _taxedEthereum = SafeMath.sub(_incomingEthereum, _undividedDividends); uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum); // no point in continuing execution if OP is a poorfag russian hacker // prevents overflow in the case that the pyramid somehow magically starts being used by everyone in the world // (or hackers) // and yes we know that the safemath function automatically rules out the "greater then" equasion. require(_amountOfTokens > 0 && SafeMath.add(_amountOfTokens, tokenSupply_) > tokenSupply_); // is the user referred by a masternode? if ( // is this a referred purchase? _referredBy != 0x0000000000000000000000000000000000000000 && // no cheating! _referredBy != _customerAddress && // does the referrer have at least X whole tokens? // i.e is the referrer a godly chad masternode tokenBalanceLedger_[_referredBy] >= stakingRequirement ) { // wealth redistribution referralBalance_[_referredBy] = SafeMath.add(referralBalance_[_referredBy], _referralBonus); } else { // no ref purchase // add the referral bonus back to the global dividends cake _dividends = SafeMath.add(_dividends, _referralBonus); } // add tokens to the pool tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens); // update circulating supply & the ledger address for the customer tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens); // Tell MoonInc contract for tokens amount change, and transfer dividends. moonIncContract.handleProductionIncrease.value(_dividends)(_customerAddress, _amountOfTokens * cookieProductionMultiplier); // fire event onTokenPurchase(_customerAddress, _incomingEthereum, _amountOfTokens, _referredBy, now, buyPrice()); return _amountOfTokens; } /** * @dev Calculate Token price based on an amount of incoming ethereum * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation; * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code. */ function ethereumToTokens_(uint256 _ethereum) internal view returns (uint256) { uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18; uint256 _tokensReceived = ( ( // underflow attempts BTFO SafeMath.sub( (sqrt ( (_tokenPriceInitial ** 2) + (2 * (tokenPriceIncremental_ * 1e18) * (_ethereum * 1e18)) + ((tokenPriceIncremental_ ** 2) * (tokenSupply_ ** 2)) + (2 * tokenPriceIncremental_ * _tokenPriceInitial*tokenSupply_) ) ), _tokenPriceInitial ) ) / (tokenPriceIncremental_) ) - (tokenSupply_); return _tokensReceived; } /** * @dev Calculate token sell value. * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation; * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code. */ function tokensToEthereum_(uint256 _tokens) internal view returns (uint256) { uint256 tokens_ = (_tokens + 1e18); uint256 _tokenSupply = (tokenSupply_ + 1e18); uint256 _etherReceived = ( // underflow attempts BTFO SafeMath.sub( ( ( ( tokenPriceInitial_ + (tokenPriceIncremental_ * (_tokenSupply / 1e18)) ) - tokenPriceIncremental_ ) * (tokens_ - 1e18) ), (tokenPriceIncremental_ * ((tokens_ ** 2 - tokens_) / 1e18)) / 2 ) / 1e18); return _etherReceived; } /// @dev This is where all your gas goes. function sqrt(uint256 x) internal pure returns (uint256 y) { uint256 z = (x + 1) / 2; y = x; while (z < y) { y = z; z = (x / z + z) / 2; } } } contract MoonInc { string public constant name = "Cookie | Moon, Inc."; string public constant symbol = "Cookie"; uint8 public constant decimals = 18; // Global balances uint256 public totalCookieProduction; uint256 private roughSupply; uint256 private lastTotalCookieSaveTime; // Last time any player claimed their produced cookie // Balances for each player mapping(address => uint256) public cookieProduction; mapping(address => uint256) public cookieBalance; mapping(address => uint256) private lastCookieSaveTime; // Last time player claimed their produced cookie // Mapping of approved ERC20 transfers (by player) mapping(address => mapping(address => uint256)) internal allowed; // Production unit contracts ProductionUnitToken[] public productionUnitTokenContracts; mapping(address => bool) productionUnitTokenContractAddresses; // Store the production unit start time to calculate sell price. uint256[] public tokenContractStartTime; // Public launch at: Wed, 23 May 2018, 21:00 GMT uint256 public constant firstUnitStartTime = 1527109200; // ERC20 events event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); // Constructor function MoonInc() public payable { // Create first production unit (Space Kitty) createProductionUnit1(); } // No fallback function to avoid accidentally sending money to this contract instead of ProductionUnitToken contract. // function() public payable {} // Public function to create the ProductionUnitToken contracts. function createProductionUnit1() public { require(productionUnitTokenContracts.length == 0); createProductionUnitTokenContract(10, 10, 10, 0.0000001 ether, 0.00000001 ether, 1, firstUnitStartTime); } function createProductionUnit2() public { require(productionUnitTokenContracts.length == 1); createProductionUnitTokenContract(15, 15, 15, 0.0000001 ether, 0.00000001 ether, 3, firstUnitStartTime + 2 days); } function createProductionUnit3() public { require(productionUnitTokenContracts.length == 2); createProductionUnitTokenContract(20, 20, 20, 0.0000001 ether, 0.00000001 ether, 9, firstUnitStartTime + 4 days); } function createProductionUnit4() public { require(productionUnitTokenContracts.length == 3); createProductionUnitTokenContract(25, 25, 25, 0.0000001 ether, 0.00000001 ether, 3**3, firstUnitStartTime + 7 days); } function createProductionUnit5() public { require(productionUnitTokenContracts.length == 4); createProductionUnitTokenContract(30, 30, 30, 0.0000001 ether, 0.00000001 ether, 3**4, firstUnitStartTime + 11 days); } function createProductionUnit6() public { require(productionUnitTokenContracts.length == 5); createProductionUnitTokenContract(30, 30, 30, 0.0000001 ether, 0.00000001 ether, 3**5, firstUnitStartTime + 16 days); } function createProductionUnit7() public { require(productionUnitTokenContracts.length == 6); createProductionUnitTokenContract(30, 30, 30, 0.0000001 ether, 0.00000001 ether, 3**6, firstUnitStartTime + 21 days); } function createProductionUnitTokenContract( uint8 _entryFee, uint8 _transferFee, uint8 _exitFee, uint256 _tokenPriceInitial, uint256 _tokenPriceIncremental, uint256 _cookieProductionMultiplier, uint256 _startTime ) internal { ProductionUnitToken newContract = new ProductionUnitToken(address(this), _entryFee, _transferFee, _exitFee, _tokenPriceInitial, _tokenPriceIncremental, _cookieProductionMultiplier, _startTime); productionUnitTokenContracts.push(newContract); productionUnitTokenContractAddresses[address(newContract)] = true; tokenContractStartTime.push(_startTime); } function productionUnitTokenContractCount() public view returns (uint) { return productionUnitTokenContracts.length; } function handleProductionIncrease(address player, uint256 amount) public payable { require(productionUnitTokenContractAddresses[msg.sender]); updatePlayersCookie(player); totalCookieProduction = SafeMath.add(totalCookieProduction, amount); cookieProduction[player] = SafeMath.add(cookieProduction[player], amount); } function handleProductionDecrease(address player, uint256 amount) public payable { require(productionUnitTokenContractAddresses[msg.sender]); updatePlayersCookie(player); totalCookieProduction = SafeMath.sub(totalCookieProduction, amount); cookieProduction[player] = SafeMath.sub(cookieProduction[player], amount); } function getState() public view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { return (totalCookieProduction, cookieProduction[msg.sender], totalSupply(), balanceOf(msg.sender), address(this).balance, lastTotalCookieSaveTime, computeSellPrice()); } function totalSupply() public constant returns(uint256) { return roughSupply + balanceOfTotalUnclaimedCookie(); } function balanceOf(address player) public constant returns(uint256) { return cookieBalance[player] + balanceOfUnclaimedCookie(player); } function balanceOfTotalUnclaimedCookie() public constant returns(uint256) { if (lastTotalCookieSaveTime > 0 && lastTotalCookieSaveTime < block.timestamp) { return (totalCookieProduction * (block.timestamp - lastTotalCookieSaveTime)); } return 0; } function balanceOfUnclaimedCookie(address player) internal constant returns (uint256) { uint256 lastSave = lastCookieSaveTime[player]; if (lastSave > 0 && lastSave < block.timestamp) { return (cookieProduction[player] * (block.timestamp - lastSave)); } return 0; } function transfer(address recipient, uint256 amount) public returns (bool) { updatePlayersCookie(msg.sender); require(amount <= cookieBalance[msg.sender]); cookieBalance[msg.sender] -= amount; cookieBalance[recipient] += amount; Transfer(msg.sender, recipient, amount); return true; } function transferFrom(address player, address recipient, uint256 amount) public returns (bool) { updatePlayersCookie(player); require(amount <= allowed[player][msg.sender] && amount <= cookieBalance[player]); cookieBalance[player] -= amount; cookieBalance[recipient] += amount; allowed[player][msg.sender] -= amount; Transfer(player, recipient, amount); return true; } function approve(address approvee, uint256 amount) public returns (bool){ allowed[msg.sender][approvee] = amount; Approval(msg.sender, approvee, amount); return true; } function allowance(address player, address approvee) public constant returns(uint256){ return allowed[player][approvee]; } function updatePlayersCookie(address player) internal { roughSupply += balanceOfTotalUnclaimedCookie(); cookieBalance[player] += balanceOfUnclaimedCookie(player); lastTotalCookieSaveTime = block.timestamp; lastCookieSaveTime[player] = block.timestamp; } // Sell all cookies, the eth earned is calculated by the proportion of cookies owned. // Selling of cookie is forbidden within one hour of new production unit launch. function sellAllCookies() public { updatePlayersCookie(msg.sender); uint256 sellPrice = computeSellPrice(); require(sellPrice > 0); uint256 myCookies = cookieBalance[msg.sender]; uint256 value = myCookies * sellPrice / (1 ether); cookieBalance[msg.sender] = 0; msg.sender.transfer(value); } // Compute sell price for 1 cookie, it is 0.5 when a new token contract is deployed, // and then goes up until it reaches the maximum sell price after 5 days. function computeSellPrice() public view returns (uint) { uint256 supply = totalSupply(); if (supply == 0) { return 0; } uint index; uint lastTokenContractStartTime = now; while (index < tokenContractStartTime.length && tokenContractStartTime[index] < now) { lastTokenContractStartTime = tokenContractStartTime[index]; index++; } if (now < lastTokenContractStartTime + 1 hours) { return 0; } uint timeToMaxValue = 5 days; uint256 secondsPassed = now - lastTokenContractStartTime; secondsPassed = secondsPassed <= timeToMaxValue ? secondsPassed : timeToMaxValue; uint256 multiplier = 5000 + 5000 * secondsPassed / timeToMaxValue; return 1 ether * address(this).balance / supply * multiplier / 10000; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalCookieProduction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"approvee","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"player","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"player","type":"address"},{"name":"amount","type":"uint256"}],"name":"handleProductionIncrease","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"createProductionUnit5","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"createProductionUnit2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"cookieProduction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenContractStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"productionUnitTokenContracts","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"player","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sellAllCookies","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"firstUnitStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"cookieBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"player","type":"address"},{"name":"amount","type":"uint256"}],"name":"handleProductionDecrease","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"createProductionUnit1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"balanceOfTotalUnclaimedCookie","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"productionUnitTokenContractCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"createProductionUnit4","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"computeSellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"createProductionUnit3","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"player","type":"address"},{"name":"approvee","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"createProductionUnit7","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"createProductionUnit6","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
60606040526200001c64010000000062000a3d6200002282021704565b620001c0565b600754156200003057600080fd5b6200005f600a808064174876e8006402540be4006001635b05d65064010000000062000de96200006182021704565b565b60003088888888888888620000756200015f565b600160a060020a03909816885260ff9687166020890152948616604080890191909152939095166060870152608086019190915260a085015260c084019290925260e08301526101009091019051809103906000f0801515620000d757600080fd5b905060078054806001018281620000ef919062000170565b5060009182526020808320919091018054600160a060020a031916600160a060020a03851690811790915582526008905260409020805460ff19166001908117909155600980549091810162000146838262000170565b5060009182526020909120019190915550505050505050565b604051611a888062002c3d83390190565b8154818355818115116200019757600083815260209020620001979181019083016200019c565b505050565b620001bd91905b80821115620001b95760008155600101620001a3565b5090565b90565b612a6d80620001d06000396000f300606060405260043610620001925763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811462000197578063089b4d461462000227578063095ea7b3146200024f57806318160ddd14620002885780631865c57d146200029e57806323b872dd14620002f25780632c3ca924146200031d578063313ce5671462000338578063362ec5e214620003645780633f7b6be8146200037a578063569a1288146200039057806358c9737e14620003b25780635c77796b14620003cb57806370a08231146200040057806374c90d0d14620004225780637a8a872014620004385780637aa26fd9146200044e5780637f7de1851462000470578063836b680f14620004895780638db23385146200049f57806395d89b4114620004b55780639a6fb6df14620004cb578063a9059cbb14620004e1578063b1c62e8a1462000506578063ce90203c146200051c578063d0b02abc1462000532578063dd62ed3e1462000548578063e8c93aa91462000570578063eef5a4991462000586575b600080fd5b3415620001a357600080fd5b620001ad6200059c565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015620001eb578082015183820152602001620001d1565b50505050905090810190601f168015620002195780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156200023357600080fd5b6200023d620005d3565b60405190815260200160405180910390f35b34156200025b57600080fd5b62000274600160a060020a0360043516602435620005d9565b604051901515815260200160405180910390f35b34156200029457600080fd5b6200023d62000645565b3415620002aa57600080fd5b620002b46200065b565b60405196875260208701959095526040808701949094526060860192909252608085015260a084015260c083019190915260e0909101905180910390f35b3415620002fe57600080fd5b62000274600160a060020a0360043581169060243516604435620006c4565b62000336600160a060020a0360043516602435620007ba565b005b34156200034457600080fd5b6200034e62000842565b60405160ff909116815260200160405180910390f35b34156200037057600080fd5b6200033662000847565b34156200038657600080fd5b620003366200087a565b34156200039c57600080fd5b6200023d600160a060020a0360043516620008ab565b3415620003be57600080fd5b6200023d600435620008bd565b3415620003d757600080fd5b620003e4600435620008dd565b604051600160a060020a03909116815260200160405180910390f35b34156200040c57600080fd5b6200023d600160a060020a036004351662000906565b34156200042e57600080fd5b6200033662000934565b34156200044457600080fd5b6200023d620009bb565b34156200045a57600080fd5b6200023d600160a060020a0360043516620009c3565b62000336600160a060020a0360043516602435620009d5565b34156200049557600080fd5b6200033662000a3d565b3415620004ab57600080fd5b6200023d62000a6d565b3415620004c157600080fd5b620001ad62000a9f565b3415620004d757600080fd5b6200023d62000ad6565b3415620004ed57600080fd5b62000274600160a060020a036004351660243562000adc565b34156200051257600080fd5b6200033662000b7d565b34156200052857600080fd5b6200023d62000bae565b34156200053e57600080fd5b6200033662000cc0565b34156200055457600080fd5b6200023d600160a060020a036004358116906024351662000cf1565b34156200057c57600080fd5b6200033662000d1c565b34156200059257600080fd5b6200033662000d4e565b60408051908101604052601381527f436f6f6b6965207c204d6f6f6e2c20496e632e00000000000000000000000000602082015281565b60005481565b600160a060020a03338116600081815260066020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60006200065162000a6d565b6001540190505b90565b60008054600160a060020a0333168252600360205260408220548291829182918291829182916200068b62000645565b620006963362000906565b30600160a060020a031631600254620006ae62000bae565b959d949c50929a50909850965094509092509050565b6000620006d18462000d7f565b600160a060020a03808516600090815260066020908152604080832033909416835292905220548211801590620007205750600160a060020a0384166000908152600460205260409020548211155b15156200072c57600080fd5b600160a060020a03808516600081815260046020908152604080832080548890039055878516808452818420805489019055848452600683528184203390961684529490915290819020805486900390557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b600160a060020a03331660009081526008602052604090205460ff161515620007e257600080fd5b620007ed8262000d7f565b620007fb6000548262000dd2565b6000908155600160a060020a03831681526003602052604090205462000822908262000dd2565b600160a060020a0390921660009081526003602052604090209190915550565b601281565b6007546004146200085757600080fd5b62000878601e808064174876e8006402540be4006051635b1456d062000de9565b565b6007546001146200088a57600080fd5b62000878600f808064174876e8006402540be4006003635b08795062000de9565b60036020526000908152604090205481565b6009805482908110620008cc57fe5b600091825260209091200154905081565b6007805482908110620008ec57fe5b600091825260209091200154600160a060020a0316905081565b6000620009138262000ef4565b600160a060020a038316600090815260046020526040902054019050919050565b6000806000620009443362000d7f565b6200094e62000bae565b9250600083116200095e57600080fd5b505033600160a060020a031660008181526004602052604080822080549290559091670de0b6b3a764000084840204916108fc83150290839051600060405180830381858888f193505050501515620009b657600080fd5b505050565b635b05d65081565b60046020526000908152604090205481565b600160a060020a03331660009081526008602052604090205460ff161515620009fd57600080fd5b62000a088262000d7f565b62000a166000548262000f53565b6000908155600160a060020a03831681526003602052604090205462000822908262000f53565b6007541562000a4b57600080fd5b62000878600a80600a64174876e8006402540be4006001635b05d65062000de9565b60008060025411801562000a82575042600254105b1562000a9957600254420360005402905062000658565b50600090565b60408051908101604052600681527f436f6f6b69650000000000000000000000000000000000000000000000000000602082015281565b60075490565b600062000ae93362000d7f565b600160a060020a03331660009081526004602052604090205482111562000b0f57600080fd5b600160a060020a033381166000818152600460205260408082208054879003905592861680825290839020805486019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b60075460031462000b8d57600080fd5b620008786019808064174876e8006402540be400601b635b0f10d062000de9565b600080600080600080600062000bc362000645565b955085151562000bd7576000965062000cb7565b4293505b6009548510801562000c0757504260098681548110151562000bf957fe5b906000526020600020900154105b1562000c3657600980548690811062000c1c57fe5b600091825260209091200154600190950194935062000bdb565b83610e100142101562000c4d576000965062000cb7565b62069780925083420391508282111562000c68578262000c6a565b815b915082826113880281151562000c7c57fe5b04611388019050612710818730600160a060020a031631670de0b6b3a76400000281151562000ca757fe5b040281151562000cb357fe5b0496505b50505050505090565b60075460021462000cd057600080fd5b620008786014808064174876e8006402540be4006009635b0b1c5062000de9565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205490565b60075460061462000d2c57600080fd5b62000878601e808064174876e8006402540be4006102d9635b2185d062000de9565b60075460051462000d5e57600080fd5b62000878601e808064174876e8006402540be40060f3635b1aee5062000de9565b62000d8962000a6d565b60018054909101905562000d9d8162000ef4565b600160a060020a0390911660009081526004602090815260408083208054909401909355426002819055600590915291902055565b60008282018381101562000de257fe5b9392505050565b6000308888888888888862000dfd62000f66565b600160a060020a03909816885260ff9687166020890152948616604080890191909152939095166060870152608086019190915260a085015260c084019290925260e08301526101009091019051809103906000f080151562000e5f57600080fd5b90506007805480600101828162000e77919062000f77565b506000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03851690811790915582526008905260409020805460ff19166001908117909155600980549091810162000edb838262000f77565b5060009182526020909120019190915550505050505050565b600160a060020a038116600090815260056020526040812054818111801562000f1c57504281105b1562000f4857600160a060020a0383166000908152600360205260409020544282900302915062000f4d565b600091505b50919050565b60008282111562000f6057fe5b50900390565b604051611a888062000fba83390190565b815481835581811511620009b657600083815260209020620009b69181019083016200065891905b8082111562000fb5576000815560010162000f9f565b50905600606060405260408051908101604052601c81527f50726f64756374696f6e20556e6974207c204d6f6f6e2c20496e632e00000000602082015260019080516200004d92916020019062000490565b5060408051908101604052600e81527f50726f64756374696f6e556e6974000000000000000000000000000000000000602082015260029080516200009792916020019062000490565b50678ac7230489e800006006553415620000b057600080fd5b6040516101008062001a88833981016040528080519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03909b16600160a060020a03199b8c161781556003805460ff998a16620100000262ff0000199b8b166101000261ff00199b909d1660ff19928316179a909a169b909b17999099169790971790975550506004929092556005556007556008919091556703e2c284391c00007fdc959cfe2b175ed260f0d29d50a22c723de07c076741b0738b156a69a84636998190557f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e380549093166001179092557fb695afe0815f1a0fca34d55e5d648a369b4989966d7594ae6f113a618370409b8290557f730ff749317258461f89653602b716cd5c77b4430f734b68615d399e235daab48054841673fea0904acc8df0f3288b6583f60b86c36ea52acd1790557fc68aad4c1efaa842aea3a9d2ef6d3c57921a98bd08630ba918f144f511e9aa09919091557f632d53bb0a06b84f57f84351b146332d537795c36068497ae9ec22629c7cdc3c8054831673c951d3463ebba4e9ec8ddfe1f42bc5895c46ec8f17905567013fbe85edc900007fef927b934bc32d82ae7d641a23d3f563a41aa8e146f895d08c46497d785bdc008190557f5822f778597e038424f954d4d0a4ec35b70e4c7dc48356651af02ae4ce3acf4a8054841673183febd8828a9ac6c70c0e27fbf441b93004fc051790557f7f06417dd09751df064645fc55f4e3ad35f1aa4997f158e6625cc6c9ffe22bab8190557fa9e140e18b8636e4180c954d35a67013fae2eac65cafdc8af79fff5936148ce480548416731fbc2ca750e003a56d706c595b49a0a430eba92d1790557f29a99edf4941a3eac30edf3a60256cf4422b9bb9fb28a920b99c1f4dd243783d8190557f56121a7225f2a97c74a8b467e786fb63acc82e3c5d55a7c61bfec773825930cc805484167341f29054e7c0bc59a8af10f3a6e7c0e53b334e051790557fedf7f37d95c8653e131d57ed11c4929c66f3d8a74fde852c94dc8c9af46ca8a48190557fd433f2f4e53512cb54961dced8a1916be6e9fd9110abd57b77b2e5c3beb9b0fb805484167315fda64fcdbca27a60aa8c6ca882aa3e1de4ea411790557331529d5ab0d299d9b0594b7f2ef3515be668aa879091527fecaa8676ca64deffc478fdaf3eb925484756642be5d1b665f32b3a356ab3ec1155600b6020527f6f28103fc34e8f0762bbb16833a0dc581d4a584d896cd233edbb7c8d133e6df88054909116730a3239799518e7f7f339867a4739282014b97dcf17905562000535565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004d357805160ff191683800117855562000503565b8280016001018555821562000503579182015b8281111562000503578251825591602001919060010190620004e6565b506200051192915062000515565b5090565b6200053291905b808211156200051157600081556001016200051c565b90565b61154380620005456000396000f3006060604052600436106101915763ffffffff60e060020a60003504166265318b811461019f57806306fdde03146101d05780630ea8e5ac1461025a57806310d0ffdd1461026d5780631162247e1461028357806318160ddd146102aa57806322609373146102bd5780632290d6e2146102d35780632b38ee56146102fc578063313ce5671461030f5780633ccfd60b146103225780634abb525a146103375780634b7503341461036657806356d399e814610379578063577ec5ae1461038c578063688abbf71461039f5780636b2f4632146103b757806370a08231146103ca57806375fb4540146103e957806378e979251461040857806385b4bb531461041b5780638620410b146104725780638ce2e0ea14610485578063949e8acd146104aa57806395d89b41146104bd578063a14b972b146104d0578063a9059cbb146104ef578063c4c1b39a14610511578063cb8cd7cb14610524578063d292d5d714610537578063e4849b3214610556578063e9fad8ee1461056c578063f088d5471461057f578063fdb5a03e14610593575b61019c3460006105a6565b50005b34156101aa57600080fd5b6101be600160a060020a0360043516610920565b60405190815260200160405180910390f35b34156101db57600080fd5b6101e3610948565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561021f578082015183820152602001610207565b50505050905090810190601f16801561024c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026557600080fd5b6101be6109e6565b341561027857600080fd5b6101be6004356109ec565b341561028e57600080fd5b610296610a2a565b604051901515815260200160405180910390f35b34156102b557600080fd5b6101be610a33565b34156102c857600080fd5b6101be600435610a39565b34156102de57600080fd5b6102e6610a83565b60405160ff909116815260200160405180910390f35b341561030757600080fd5b6102e6610a8c565b341561031a57600080fd5b6102e6610a9b565b341561032d57600080fd5b610335610aa0565b005b341561034257600080fd5b61034a610b6c565b604051600160a060020a03909116815260200160405180910390f35b341561037157600080fd5b6101be610b7b565b341561038457600080fd5b6101be610be1565b341561039757600080fd5b6101be610be7565b34156103aa57600080fd5b6101be6004351515610bed565b34156103c257600080fd5b6101be610c30565b34156103d557600080fd5b6101be600160a060020a0360043516610c3e565b34156103f457600080fd5b61034a600160a060020a0360043516610c59565b341561041357600080fd5b6101be610c74565b341561042657600080fd5b61042e610c7a565b60405160ff97881681529587166020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015260e001905180910390f35b341561047d57600080fd5b6101be610ca7565b341561049057600080fd5b610335600160a060020a0360043581169060243516610cfb565b34156104b557600080fd5b6101be610dcb565b34156104c857600080fd5b6101e3610ddd565b34156104db57600080fd5b6101be600160a060020a0360043516610e48565b34156104fa57600080fd5b610296600160a060020a0360043516602435610e5a565b341561051c57600080fd5b6101be61109a565b341561052f57600080fd5b6102e66110a0565b341561054257600080fd5b610296600160a060020a03600435166110ae565b341561056157600080fd5b6103356004356110c3565b341561057757600080fd5b610335611295565b6101be600160a060020a03600435166112cc565b341561059e57600080fd5b6103356112d8565b6000806000806000806000600854421015806106435750610e106008540342101580156105ec5750600160a060020a0333166000908152600a602052604090205460ff16155b801561061f5750600160a060020a033381166000908152600b60209081526040808320549093168252600a9052205460ff165b80156106435750600160a060020a0333166000908152600960205260409020548911155b8061069c57506102586008540342101580156106785750600160a060020a0333166000908152600a602052604090205460ff16155b801561069c5750600160a060020a0333166000908152600960205260409020548911155b15156106a757600080fd5b6008544210156106d557600160a060020a0333166000908152600a60205260409020805460ff191660011790555b6003543396506106f4906106ed908b9060ff16611393565b60646113c9565b94506107046106ed866014611393565b935061071085856113e0565b925061071c89866113e0565b9150610727826113f2565b90506000811180156107435750600f54610741828261146c565b115b151561074e57600080fd5b600160a060020a03881615801590610778575085600160a060020a031688600160a060020a031614155b801561079e5750600654600160a060020a0389166000908152600c602052604090205410155b156107e457600160a060020a0388166000908152600d60205260409020546107c6908561146c565b600160a060020a0389166000908152600d60205260409020556107f1565b6107ee838561146c565b92505b6107fd600f548261146c565b600f55600160a060020a0386166000908152600c6020526040902054610823908261146c565b600160a060020a038088166000908152600c60205260408082209390935554600754911691632c3ca9249186918a918602905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b151561089557600080fd5b6125ee5a03f115156108a657600080fd5b5050505087600160a060020a031686600160a060020a03167f8032875b28d82ddbd303a9e4e5529d047a14ecb6290f80012a81b7e6227ff1ab8b84426108ea610ca7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a398975050505050505050565b600160a060020a03166000908152600e60205260408120546801000000000000000091030490565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109de5780601f106109b3576101008083540402835291602001916109de565b820191906000526020600020905b8154815290600101906020018083116109c157829003601f168201915b505050505081565b60055481565b600354600090819081908190610a0a906106ed90879060ff16611393565b9250610a1685846113e0565b9150610a21826113f2565b95945050505050565b60105460ff1681565b600f5490565b600080600080600f548511151515610a5057600080fd5b610a598561147b565b600354909350610a77906106ed90859062010000900460ff16611393565b9150610a2183836113e0565b60035460ff1681565b60035462010000900460ff1681565b601281565b6000806000610aaf6001610bed565b11610ab957600080fd5b339150610ac66000610bed565b600160a060020a0383166000818152600e602090815260408083208054680100000000000000008702019055600d9091528082208054929055920192509082156108fc0290839051600060405180830381858888f193505050501515610b2b57600080fd5b81600160a060020a03167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8260405190815260200160405180910390a25050565b600054600160a060020a031681565b600080600080600f5460001415610b9a57600554600454039350610bdb565b610bab670de0b6b3a764000061147b565b600354909350610bc9906106ed90859062010000900460ff16611393565b9150610bd583836113e0565b90508093505b50505090565b60065481565b60075481565b60003382610c0357610bfe81610920565b610c27565b600160a060020a0381166000908152600d6020526040902054610c2582610920565b015b91505b50919050565b600160a060020a0330163190565b600160a060020a03166000908152600c602052604090205490565b600b60205260009081526040902054600160a060020a031681565b60085481565b60035460045460055460075460085460ff8086169661010087048216966201000090049091169493929190565b600080600080600f5460001415610cc657600554600454019350610bdb565b610cd7670de0b6b3a764000061147b565b600354909350610cef906106ed90859060ff16611393565b9150610bd5838361146c565b73fea0904acc8df0f3288b6583f60b86c36ea52acd600160a060020a033316148015610d2a575060105460ff16155b1515610d3557600080fd5b6010805460ff19166001179055600160a060020a03918216600081815260096020818152604080842067013fbe85edc9000090819055600b808452828620805473ffffffffffffffffffffffffffffffffffffffff199081167331529d5ab0d299d9b0594b7f2ef3515be668aa871790915597909816855292825280842092909255949094529290922080549091169091179055565b600033610dd781610c3e565b91505090565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109de5780601f106109b3576101008083540402835291602001916109de565b60096020526000908152604090205481565b600080600080600080610e6b610dcb565b11610e7557600080fd5b33600160a060020a0381166000908152600c6020526040902054909450861115610e9e57600080fd5b6000610eaa6001610bed565b1115610eb857610eb8610aa0565b600354610ed2906106ed908890610100900460ff16611393565b9250610ede86846113e0565b9150610ee98361147b565b9050610ef7600f54846113e0565b600f55600160a060020a0384166000908152600c6020526040902054610f1d90876113e0565b600160a060020a038086166000908152600c60205260408082209390935590891681522054610f4c908361146c565b600160a060020a038089166000908152600c60205260408082209390935554600754911691637f7de18591849188918b02905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b1515610fbe57600080fd5b6125ee5a03f11515610fcf57600080fd5b5050600054600754600160a060020a039091169250632c3ca92491508990850260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561103257600080fd5b6102c65a03f1151561104357600080fd5b50505086600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019695505050505050565b60045481565b600354610100900460ff1681565b600a6020526000908152604090205460ff1681565b60008060008060008060006110d6610dcb565b116110e057600080fd5b6008544210156110ef57600080fd5b33600160a060020a0381166000908152600c602052604090205490965087111561111857600080fd5b8694506111248561147b565b600354909450611142906106ed90869062010000900460ff16611393565b925061114e84846113e0565b915061115c600f54866113e0565b600f55600160a060020a0386166000908152600c602052604090205461118290866113e0565b600160a060020a038088166000908152600c6020908152604080832094909455600e9052828120805468010000000000000000870290819003909155905460075491945090911691637f7de1859186918a918a02905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b151561121757600080fd5b6125ee5a03f1151561122857600080fd5b5050505085600160a060020a03167f8d3a0130073dbd54ab6ac632c05946df540553d3b514c9f8165b4ab7f2b1805e868442611262610ca7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050565b33600160a060020a0381166000908152600c6020526040812054908111156112c0576112c0816110c3565b6112c8610aa0565b5050565b6000610c2a34836105a6565b6000806000806112e86001610bed565b116112f257600080fd5b6112fc6000610bed565b33600160a060020a0381166000908152600e602090815260408083208054680100000000000000008702019055600d9091528120805490829055909201945092506113489084906105a6565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458848360405191825260208201526040908101905180910390a2505050565b6000808315156113a657600091506113c2565b508282028284828115156113b657fe5b04146113be57fe5b8091505b5092915050565b60008082848115156113d757fe5b04949350505050565b6000828211156113ec57fe5b50900390565b6000806000600454670de0b6b3a7640000029150600f54600554611459611453600f548660055460020202026002600f540a60026005540a0289670de0b6b3a764000002600554670de0b6b3a764000002600202026002890a0101016114e2565b856113e0565b81151561146257fe5b0403949350505050565b6000828201838110156113be57fe5b600f54600554600454600092670de0b6b3a7640000858101939181019285926114cf91838604820201038702600283670de0b6b3a763ffff1982890a8b90030104600554028115156114c957fe5b046113e0565b8115156114d857fe5b0495945050505050565b80600260018201045b81811015610c2a57809150600281828581151561150457fe5b040181151561150f57fe5b0490506114eb5600a165627a7a72305820e6acb19058a6fbafd5e5b80ae474f4fe25e8f09876fe5a085a86acd0bec86b7d0029a165627a7a72305820cb365ad7b447bfbd50f712a8821edb307381fab19eb93715876e4b98ead6ba840029606060405260408051908101604052601c81527f50726f64756374696f6e20556e6974207c204d6f6f6e2c20496e632e00000000602082015260019080516200004d92916020019062000490565b5060408051908101604052600e81527f50726f64756374696f6e556e6974000000000000000000000000000000000000602082015260029080516200009792916020019062000490565b50678ac7230489e800006006553415620000b057600080fd5b6040516101008062001a88833981016040528080519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03909b16600160a060020a03199b8c161781556003805460ff998a16620100000262ff0000199b8b166101000261ff00199b909d1660ff19928316179a909a169b909b17999099169790971790975550506004929092556005556007556008919091556703e2c284391c00007fdc959cfe2b175ed260f0d29d50a22c723de07c076741b0738b156a69a84636998190557f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e380549093166001179092557fb695afe0815f1a0fca34d55e5d648a369b4989966d7594ae6f113a618370409b8290557f730ff749317258461f89653602b716cd5c77b4430f734b68615d399e235daab48054841673fea0904acc8df0f3288b6583f60b86c36ea52acd1790557fc68aad4c1efaa842aea3a9d2ef6d3c57921a98bd08630ba918f144f511e9aa09919091557f632d53bb0a06b84f57f84351b146332d537795c36068497ae9ec22629c7cdc3c8054831673c951d3463ebba4e9ec8ddfe1f42bc5895c46ec8f17905567013fbe85edc900007fef927b934bc32d82ae7d641a23d3f563a41aa8e146f895d08c46497d785bdc008190557f5822f778597e038424f954d4d0a4ec35b70e4c7dc48356651af02ae4ce3acf4a8054841673183febd8828a9ac6c70c0e27fbf441b93004fc051790557f7f06417dd09751df064645fc55f4e3ad35f1aa4997f158e6625cc6c9ffe22bab8190557fa9e140e18b8636e4180c954d35a67013fae2eac65cafdc8af79fff5936148ce480548416731fbc2ca750e003a56d706c595b49a0a430eba92d1790557f29a99edf4941a3eac30edf3a60256cf4422b9bb9fb28a920b99c1f4dd243783d8190557f56121a7225f2a97c74a8b467e786fb63acc82e3c5d55a7c61bfec773825930cc805484167341f29054e7c0bc59a8af10f3a6e7c0e53b334e051790557fedf7f37d95c8653e131d57ed11c4929c66f3d8a74fde852c94dc8c9af46ca8a48190557fd433f2f4e53512cb54961dced8a1916be6e9fd9110abd57b77b2e5c3beb9b0fb805484167315fda64fcdbca27a60aa8c6ca882aa3e1de4ea411790557331529d5ab0d299d9b0594b7f2ef3515be668aa879091527fecaa8676ca64deffc478fdaf3eb925484756642be5d1b665f32b3a356ab3ec1155600b6020527f6f28103fc34e8f0762bbb16833a0dc581d4a584d896cd233edbb7c8d133e6df88054909116730a3239799518e7f7f339867a4739282014b97dcf17905562000535565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004d357805160ff191683800117855562000503565b8280016001018555821562000503579182015b8281111562000503578251825591602001919060010190620004e6565b506200051192915062000515565b5090565b6200053291905b808211156200051157600081556001016200051c565b90565b61154380620005456000396000f3006060604052600436106101915763ffffffff60e060020a60003504166265318b811461019f57806306fdde03146101d05780630ea8e5ac1461025a57806310d0ffdd1461026d5780631162247e1461028357806318160ddd146102aa57806322609373146102bd5780632290d6e2146102d35780632b38ee56146102fc578063313ce5671461030f5780633ccfd60b146103225780634abb525a146103375780634b7503341461036657806356d399e814610379578063577ec5ae1461038c578063688abbf71461039f5780636b2f4632146103b757806370a08231146103ca57806375fb4540146103e957806378e979251461040857806385b4bb531461041b5780638620410b146104725780638ce2e0ea14610485578063949e8acd146104aa57806395d89b41146104bd578063a14b972b146104d0578063a9059cbb146104ef578063c4c1b39a14610511578063cb8cd7cb14610524578063d292d5d714610537578063e4849b3214610556578063e9fad8ee1461056c578063f088d5471461057f578063fdb5a03e14610593575b61019c3460006105a6565b50005b34156101aa57600080fd5b6101be600160a060020a0360043516610920565b60405190815260200160405180910390f35b34156101db57600080fd5b6101e3610948565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561021f578082015183820152602001610207565b50505050905090810190601f16801561024c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026557600080fd5b6101be6109e6565b341561027857600080fd5b6101be6004356109ec565b341561028e57600080fd5b610296610a2a565b604051901515815260200160405180910390f35b34156102b557600080fd5b6101be610a33565b34156102c857600080fd5b6101be600435610a39565b34156102de57600080fd5b6102e6610a83565b60405160ff909116815260200160405180910390f35b341561030757600080fd5b6102e6610a8c565b341561031a57600080fd5b6102e6610a9b565b341561032d57600080fd5b610335610aa0565b005b341561034257600080fd5b61034a610b6c565b604051600160a060020a03909116815260200160405180910390f35b341561037157600080fd5b6101be610b7b565b341561038457600080fd5b6101be610be1565b341561039757600080fd5b6101be610be7565b34156103aa57600080fd5b6101be6004351515610bed565b34156103c257600080fd5b6101be610c30565b34156103d557600080fd5b6101be600160a060020a0360043516610c3e565b34156103f457600080fd5b61034a600160a060020a0360043516610c59565b341561041357600080fd5b6101be610c74565b341561042657600080fd5b61042e610c7a565b60405160ff97881681529587166020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015260e001905180910390f35b341561047d57600080fd5b6101be610ca7565b341561049057600080fd5b610335600160a060020a0360043581169060243516610cfb565b34156104b557600080fd5b6101be610dcb565b34156104c857600080fd5b6101e3610ddd565b34156104db57600080fd5b6101be600160a060020a0360043516610e48565b34156104fa57600080fd5b610296600160a060020a0360043516602435610e5a565b341561051c57600080fd5b6101be61109a565b341561052f57600080fd5b6102e66110a0565b341561054257600080fd5b610296600160a060020a03600435166110ae565b341561056157600080fd5b6103356004356110c3565b341561057757600080fd5b610335611295565b6101be600160a060020a03600435166112cc565b341561059e57600080fd5b6103356112d8565b6000806000806000806000600854421015806106435750610e106008540342101580156105ec5750600160a060020a0333166000908152600a602052604090205460ff16155b801561061f5750600160a060020a033381166000908152600b60209081526040808320549093168252600a9052205460ff165b80156106435750600160a060020a0333166000908152600960205260409020548911155b8061069c57506102586008540342101580156106785750600160a060020a0333166000908152600a602052604090205460ff16155b801561069c5750600160a060020a0333166000908152600960205260409020548911155b15156106a757600080fd5b6008544210156106d557600160a060020a0333166000908152600a60205260409020805460ff191660011790555b6003543396506106f4906106ed908b9060ff16611393565b60646113c9565b94506107046106ed866014611393565b935061071085856113e0565b925061071c89866113e0565b9150610727826113f2565b90506000811180156107435750600f54610741828261146c565b115b151561074e57600080fd5b600160a060020a03881615801590610778575085600160a060020a031688600160a060020a031614155b801561079e5750600654600160a060020a0389166000908152600c602052604090205410155b156107e457600160a060020a0388166000908152600d60205260409020546107c6908561146c565b600160a060020a0389166000908152600d60205260409020556107f1565b6107ee838561146c565b92505b6107fd600f548261146c565b600f55600160a060020a0386166000908152600c6020526040902054610823908261146c565b600160a060020a038088166000908152600c60205260408082209390935554600754911691632c3ca9249186918a918602905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b151561089557600080fd5b6125ee5a03f115156108a657600080fd5b5050505087600160a060020a031686600160a060020a03167f8032875b28d82ddbd303a9e4e5529d047a14ecb6290f80012a81b7e6227ff1ab8b84426108ea610ca7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a398975050505050505050565b600160a060020a03166000908152600e60205260408120546801000000000000000091030490565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109de5780601f106109b3576101008083540402835291602001916109de565b820191906000526020600020905b8154815290600101906020018083116109c157829003601f168201915b505050505081565b60055481565b600354600090819081908190610a0a906106ed90879060ff16611393565b9250610a1685846113e0565b9150610a21826113f2565b95945050505050565b60105460ff1681565b600f5490565b600080600080600f548511151515610a5057600080fd5b610a598561147b565b600354909350610a77906106ed90859062010000900460ff16611393565b9150610a2183836113e0565b60035460ff1681565b60035462010000900460ff1681565b601281565b6000806000610aaf6001610bed565b11610ab957600080fd5b339150610ac66000610bed565b600160a060020a0383166000818152600e602090815260408083208054680100000000000000008702019055600d9091528082208054929055920192509082156108fc0290839051600060405180830381858888f193505050501515610b2b57600080fd5b81600160a060020a03167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8260405190815260200160405180910390a25050565b600054600160a060020a031681565b600080600080600f5460001415610b9a57600554600454039350610bdb565b610bab670de0b6b3a764000061147b565b600354909350610bc9906106ed90859062010000900460ff16611393565b9150610bd583836113e0565b90508093505b50505090565b60065481565b60075481565b60003382610c0357610bfe81610920565b610c27565b600160a060020a0381166000908152600d6020526040902054610c2582610920565b015b91505b50919050565b600160a060020a0330163190565b600160a060020a03166000908152600c602052604090205490565b600b60205260009081526040902054600160a060020a031681565b60085481565b60035460045460055460075460085460ff8086169661010087048216966201000090049091169493929190565b600080600080600f5460001415610cc657600554600454019350610bdb565b610cd7670de0b6b3a764000061147b565b600354909350610cef906106ed90859060ff16611393565b9150610bd5838361146c565b73fea0904acc8df0f3288b6583f60b86c36ea52acd600160a060020a033316148015610d2a575060105460ff16155b1515610d3557600080fd5b6010805460ff19166001179055600160a060020a03918216600081815260096020818152604080842067013fbe85edc9000090819055600b808452828620805473ffffffffffffffffffffffffffffffffffffffff199081167331529d5ab0d299d9b0594b7f2ef3515be668aa871790915597909816855292825280842092909255949094529290922080549091169091179055565b600033610dd781610c3e565b91505090565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109de5780601f106109b3576101008083540402835291602001916109de565b60096020526000908152604090205481565b600080600080600080610e6b610dcb565b11610e7557600080fd5b33600160a060020a0381166000908152600c6020526040902054909450861115610e9e57600080fd5b6000610eaa6001610bed565b1115610eb857610eb8610aa0565b600354610ed2906106ed908890610100900460ff16611393565b9250610ede86846113e0565b9150610ee98361147b565b9050610ef7600f54846113e0565b600f55600160a060020a0384166000908152600c6020526040902054610f1d90876113e0565b600160a060020a038086166000908152600c60205260408082209390935590891681522054610f4c908361146c565b600160a060020a038089166000908152600c60205260408082209390935554600754911691637f7de18591849188918b02905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b1515610fbe57600080fd5b6125ee5a03f11515610fcf57600080fd5b5050600054600754600160a060020a039091169250632c3ca92491508990850260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561103257600080fd5b6102c65a03f1151561104357600080fd5b50505086600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019695505050505050565b60045481565b600354610100900460ff1681565b600a6020526000908152604090205460ff1681565b60008060008060008060006110d6610dcb565b116110e057600080fd5b6008544210156110ef57600080fd5b33600160a060020a0381166000908152600c602052604090205490965087111561111857600080fd5b8694506111248561147b565b600354909450611142906106ed90869062010000900460ff16611393565b925061114e84846113e0565b915061115c600f54866113e0565b600f55600160a060020a0386166000908152600c602052604090205461118290866113e0565b600160a060020a038088166000908152600c6020908152604080832094909455600e9052828120805468010000000000000000870290819003909155905460075491945090911691637f7de1859186918a918a02905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b151561121757600080fd5b6125ee5a03f1151561122857600080fd5b5050505085600160a060020a03167f8d3a0130073dbd54ab6ac632c05946df540553d3b514c9f8165b4ab7f2b1805e868442611262610ca7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050565b33600160a060020a0381166000908152600c6020526040812054908111156112c0576112c0816110c3565b6112c8610aa0565b5050565b6000610c2a34836105a6565b6000806000806112e86001610bed565b116112f257600080fd5b6112fc6000610bed565b33600160a060020a0381166000908152600e602090815260408083208054680100000000000000008702019055600d9091528120805490829055909201945092506113489084906105a6565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458848360405191825260208201526040908101905180910390a2505050565b6000808315156113a657600091506113c2565b508282028284828115156113b657fe5b04146113be57fe5b8091505b5092915050565b60008082848115156113d757fe5b04949350505050565b6000828211156113ec57fe5b50900390565b6000806000600454670de0b6b3a7640000029150600f54600554611459611453600f548660055460020202026002600f540a60026005540a0289670de0b6b3a764000002600554670de0b6b3a764000002600202026002890a0101016114e2565b856113e0565b81151561146257fe5b0403949350505050565b6000828201838110156113be57fe5b600f54600554600454600092670de0b6b3a7640000858101939181019285926114cf91838604820201038702600283670de0b6b3a763ffff1982890a8b90030104600554028115156114c957fe5b046113e0565b8115156114d857fe5b0495945050505050565b80600260018201045b81811015610c2a57809150600281828581151561150457fe5b040181151561150f57fe5b0490506114eb5600a165627a7a72305820e6acb19058a6fbafd5e5b80ae474f4fe25e8f09876fe5a085a86acd0bec86b7d0029
Deployed Bytecode
0x606060405260043610620001925763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811462000197578063089b4d461462000227578063095ea7b3146200024f57806318160ddd14620002885780631865c57d146200029e57806323b872dd14620002f25780632c3ca924146200031d578063313ce5671462000338578063362ec5e214620003645780633f7b6be8146200037a578063569a1288146200039057806358c9737e14620003b25780635c77796b14620003cb57806370a08231146200040057806374c90d0d14620004225780637a8a872014620004385780637aa26fd9146200044e5780637f7de1851462000470578063836b680f14620004895780638db23385146200049f57806395d89b4114620004b55780639a6fb6df14620004cb578063a9059cbb14620004e1578063b1c62e8a1462000506578063ce90203c146200051c578063d0b02abc1462000532578063dd62ed3e1462000548578063e8c93aa91462000570578063eef5a4991462000586575b600080fd5b3415620001a357600080fd5b620001ad6200059c565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015620001eb578082015183820152602001620001d1565b50505050905090810190601f168015620002195780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156200023357600080fd5b6200023d620005d3565b60405190815260200160405180910390f35b34156200025b57600080fd5b62000274600160a060020a0360043516602435620005d9565b604051901515815260200160405180910390f35b34156200029457600080fd5b6200023d62000645565b3415620002aa57600080fd5b620002b46200065b565b60405196875260208701959095526040808701949094526060860192909252608085015260a084015260c083019190915260e0909101905180910390f35b3415620002fe57600080fd5b62000274600160a060020a0360043581169060243516604435620006c4565b62000336600160a060020a0360043516602435620007ba565b005b34156200034457600080fd5b6200034e62000842565b60405160ff909116815260200160405180910390f35b34156200037057600080fd5b6200033662000847565b34156200038657600080fd5b620003366200087a565b34156200039c57600080fd5b6200023d600160a060020a0360043516620008ab565b3415620003be57600080fd5b6200023d600435620008bd565b3415620003d757600080fd5b620003e4600435620008dd565b604051600160a060020a03909116815260200160405180910390f35b34156200040c57600080fd5b6200023d600160a060020a036004351662000906565b34156200042e57600080fd5b6200033662000934565b34156200044457600080fd5b6200023d620009bb565b34156200045a57600080fd5b6200023d600160a060020a0360043516620009c3565b62000336600160a060020a0360043516602435620009d5565b34156200049557600080fd5b6200033662000a3d565b3415620004ab57600080fd5b6200023d62000a6d565b3415620004c157600080fd5b620001ad62000a9f565b3415620004d757600080fd5b6200023d62000ad6565b3415620004ed57600080fd5b62000274600160a060020a036004351660243562000adc565b34156200051257600080fd5b6200033662000b7d565b34156200052857600080fd5b6200023d62000bae565b34156200053e57600080fd5b6200033662000cc0565b34156200055457600080fd5b6200023d600160a060020a036004358116906024351662000cf1565b34156200057c57600080fd5b6200033662000d1c565b34156200059257600080fd5b6200033662000d4e565b60408051908101604052601381527f436f6f6b6965207c204d6f6f6e2c20496e632e00000000000000000000000000602082015281565b60005481565b600160a060020a03338116600081815260066020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60006200065162000a6d565b6001540190505b90565b60008054600160a060020a0333168252600360205260408220548291829182918291829182916200068b62000645565b620006963362000906565b30600160a060020a031631600254620006ae62000bae565b959d949c50929a50909850965094509092509050565b6000620006d18462000d7f565b600160a060020a03808516600090815260066020908152604080832033909416835292905220548211801590620007205750600160a060020a0384166000908152600460205260409020548211155b15156200072c57600080fd5b600160a060020a03808516600081815260046020908152604080832080548890039055878516808452818420805489019055848452600683528184203390961684529490915290819020805486900390557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b600160a060020a03331660009081526008602052604090205460ff161515620007e257600080fd5b620007ed8262000d7f565b620007fb6000548262000dd2565b6000908155600160a060020a03831681526003602052604090205462000822908262000dd2565b600160a060020a0390921660009081526003602052604090209190915550565b601281565b6007546004146200085757600080fd5b62000878601e808064174876e8006402540be4006051635b1456d062000de9565b565b6007546001146200088a57600080fd5b62000878600f808064174876e8006402540be4006003635b08795062000de9565b60036020526000908152604090205481565b6009805482908110620008cc57fe5b600091825260209091200154905081565b6007805482908110620008ec57fe5b600091825260209091200154600160a060020a0316905081565b6000620009138262000ef4565b600160a060020a038316600090815260046020526040902054019050919050565b6000806000620009443362000d7f565b6200094e62000bae565b9250600083116200095e57600080fd5b505033600160a060020a031660008181526004602052604080822080549290559091670de0b6b3a764000084840204916108fc83150290839051600060405180830381858888f193505050501515620009b657600080fd5b505050565b635b05d65081565b60046020526000908152604090205481565b600160a060020a03331660009081526008602052604090205460ff161515620009fd57600080fd5b62000a088262000d7f565b62000a166000548262000f53565b6000908155600160a060020a03831681526003602052604090205462000822908262000f53565b6007541562000a4b57600080fd5b62000878600a80600a64174876e8006402540be4006001635b05d65062000de9565b60008060025411801562000a82575042600254105b1562000a9957600254420360005402905062000658565b50600090565b60408051908101604052600681527f436f6f6b69650000000000000000000000000000000000000000000000000000602082015281565b60075490565b600062000ae93362000d7f565b600160a060020a03331660009081526004602052604090205482111562000b0f57600080fd5b600160a060020a033381166000818152600460205260408082208054879003905592861680825290839020805486019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b60075460031462000b8d57600080fd5b620008786019808064174876e8006402540be400601b635b0f10d062000de9565b600080600080600080600062000bc362000645565b955085151562000bd7576000965062000cb7565b4293505b6009548510801562000c0757504260098681548110151562000bf957fe5b906000526020600020900154105b1562000c3657600980548690811062000c1c57fe5b600091825260209091200154600190950194935062000bdb565b83610e100142101562000c4d576000965062000cb7565b62069780925083420391508282111562000c68578262000c6a565b815b915082826113880281151562000c7c57fe5b04611388019050612710818730600160a060020a031631670de0b6b3a76400000281151562000ca757fe5b040281151562000cb357fe5b0496505b50505050505090565b60075460021462000cd057600080fd5b620008786014808064174876e8006402540be4006009635b0b1c5062000de9565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205490565b60075460061462000d2c57600080fd5b62000878601e808064174876e8006402540be4006102d9635b2185d062000de9565b60075460051462000d5e57600080fd5b62000878601e808064174876e8006402540be40060f3635b1aee5062000de9565b62000d8962000a6d565b60018054909101905562000d9d8162000ef4565b600160a060020a0390911660009081526004602090815260408083208054909401909355426002819055600590915291902055565b60008282018381101562000de257fe5b9392505050565b6000308888888888888862000dfd62000f66565b600160a060020a03909816885260ff9687166020890152948616604080890191909152939095166060870152608086019190915260a085015260c084019290925260e08301526101009091019051809103906000f080151562000e5f57600080fd5b90506007805480600101828162000e77919062000f77565b506000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03851690811790915582526008905260409020805460ff19166001908117909155600980549091810162000edb838262000f77565b5060009182526020909120019190915550505050505050565b600160a060020a038116600090815260056020526040812054818111801562000f1c57504281105b1562000f4857600160a060020a0383166000908152600360205260409020544282900302915062000f4d565b600091505b50919050565b60008282111562000f6057fe5b50900390565b604051611a888062000fba83390190565b815481835581811511620009b657600083815260209020620009b69181019083016200065891905b8082111562000fb5576000815560010162000f9f565b50905600606060405260408051908101604052601c81527f50726f64756374696f6e20556e6974207c204d6f6f6e2c20496e632e00000000602082015260019080516200004d92916020019062000490565b5060408051908101604052600e81527f50726f64756374696f6e556e6974000000000000000000000000000000000000602082015260029080516200009792916020019062000490565b50678ac7230489e800006006553415620000b057600080fd5b6040516101008062001a88833981016040528080519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03909b16600160a060020a03199b8c161781556003805460ff998a16620100000262ff0000199b8b166101000261ff00199b909d1660ff19928316179a909a169b909b17999099169790971790975550506004929092556005556007556008919091556703e2c284391c00007fdc959cfe2b175ed260f0d29d50a22c723de07c076741b0738b156a69a84636998190557f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e380549093166001179092557fb695afe0815f1a0fca34d55e5d648a369b4989966d7594ae6f113a618370409b8290557f730ff749317258461f89653602b716cd5c77b4430f734b68615d399e235daab48054841673fea0904acc8df0f3288b6583f60b86c36ea52acd1790557fc68aad4c1efaa842aea3a9d2ef6d3c57921a98bd08630ba918f144f511e9aa09919091557f632d53bb0a06b84f57f84351b146332d537795c36068497ae9ec22629c7cdc3c8054831673c951d3463ebba4e9ec8ddfe1f42bc5895c46ec8f17905567013fbe85edc900007fef927b934bc32d82ae7d641a23d3f563a41aa8e146f895d08c46497d785bdc008190557f5822f778597e038424f954d4d0a4ec35b70e4c7dc48356651af02ae4ce3acf4a8054841673183febd8828a9ac6c70c0e27fbf441b93004fc051790557f7f06417dd09751df064645fc55f4e3ad35f1aa4997f158e6625cc6c9ffe22bab8190557fa9e140e18b8636e4180c954d35a67013fae2eac65cafdc8af79fff5936148ce480548416731fbc2ca750e003a56d706c595b49a0a430eba92d1790557f29a99edf4941a3eac30edf3a60256cf4422b9bb9fb28a920b99c1f4dd243783d8190557f56121a7225f2a97c74a8b467e786fb63acc82e3c5d55a7c61bfec773825930cc805484167341f29054e7c0bc59a8af10f3a6e7c0e53b334e051790557fedf7f37d95c8653e131d57ed11c4929c66f3d8a74fde852c94dc8c9af46ca8a48190557fd433f2f4e53512cb54961dced8a1916be6e9fd9110abd57b77b2e5c3beb9b0fb805484167315fda64fcdbca27a60aa8c6ca882aa3e1de4ea411790557331529d5ab0d299d9b0594b7f2ef3515be668aa879091527fecaa8676ca64deffc478fdaf3eb925484756642be5d1b665f32b3a356ab3ec1155600b6020527f6f28103fc34e8f0762bbb16833a0dc581d4a584d896cd233edbb7c8d133e6df88054909116730a3239799518e7f7f339867a4739282014b97dcf17905562000535565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004d357805160ff191683800117855562000503565b8280016001018555821562000503579182015b8281111562000503578251825591602001919060010190620004e6565b506200051192915062000515565b5090565b6200053291905b808211156200051157600081556001016200051c565b90565b61154380620005456000396000f3006060604052600436106101915763ffffffff60e060020a60003504166265318b811461019f57806306fdde03146101d05780630ea8e5ac1461025a57806310d0ffdd1461026d5780631162247e1461028357806318160ddd146102aa57806322609373146102bd5780632290d6e2146102d35780632b38ee56146102fc578063313ce5671461030f5780633ccfd60b146103225780634abb525a146103375780634b7503341461036657806356d399e814610379578063577ec5ae1461038c578063688abbf71461039f5780636b2f4632146103b757806370a08231146103ca57806375fb4540146103e957806378e979251461040857806385b4bb531461041b5780638620410b146104725780638ce2e0ea14610485578063949e8acd146104aa57806395d89b41146104bd578063a14b972b146104d0578063a9059cbb146104ef578063c4c1b39a14610511578063cb8cd7cb14610524578063d292d5d714610537578063e4849b3214610556578063e9fad8ee1461056c578063f088d5471461057f578063fdb5a03e14610593575b61019c3460006105a6565b50005b34156101aa57600080fd5b6101be600160a060020a0360043516610920565b60405190815260200160405180910390f35b34156101db57600080fd5b6101e3610948565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561021f578082015183820152602001610207565b50505050905090810190601f16801561024c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026557600080fd5b6101be6109e6565b341561027857600080fd5b6101be6004356109ec565b341561028e57600080fd5b610296610a2a565b604051901515815260200160405180910390f35b34156102b557600080fd5b6101be610a33565b34156102c857600080fd5b6101be600435610a39565b34156102de57600080fd5b6102e6610a83565b60405160ff909116815260200160405180910390f35b341561030757600080fd5b6102e6610a8c565b341561031a57600080fd5b6102e6610a9b565b341561032d57600080fd5b610335610aa0565b005b341561034257600080fd5b61034a610b6c565b604051600160a060020a03909116815260200160405180910390f35b341561037157600080fd5b6101be610b7b565b341561038457600080fd5b6101be610be1565b341561039757600080fd5b6101be610be7565b34156103aa57600080fd5b6101be6004351515610bed565b34156103c257600080fd5b6101be610c30565b34156103d557600080fd5b6101be600160a060020a0360043516610c3e565b34156103f457600080fd5b61034a600160a060020a0360043516610c59565b341561041357600080fd5b6101be610c74565b341561042657600080fd5b61042e610c7a565b60405160ff97881681529587166020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015260e001905180910390f35b341561047d57600080fd5b6101be610ca7565b341561049057600080fd5b610335600160a060020a0360043581169060243516610cfb565b34156104b557600080fd5b6101be610dcb565b34156104c857600080fd5b6101e3610ddd565b34156104db57600080fd5b6101be600160a060020a0360043516610e48565b34156104fa57600080fd5b610296600160a060020a0360043516602435610e5a565b341561051c57600080fd5b6101be61109a565b341561052f57600080fd5b6102e66110a0565b341561054257600080fd5b610296600160a060020a03600435166110ae565b341561056157600080fd5b6103356004356110c3565b341561057757600080fd5b610335611295565b6101be600160a060020a03600435166112cc565b341561059e57600080fd5b6103356112d8565b6000806000806000806000600854421015806106435750610e106008540342101580156105ec5750600160a060020a0333166000908152600a602052604090205460ff16155b801561061f5750600160a060020a033381166000908152600b60209081526040808320549093168252600a9052205460ff165b80156106435750600160a060020a0333166000908152600960205260409020548911155b8061069c57506102586008540342101580156106785750600160a060020a0333166000908152600a602052604090205460ff16155b801561069c5750600160a060020a0333166000908152600960205260409020548911155b15156106a757600080fd5b6008544210156106d557600160a060020a0333166000908152600a60205260409020805460ff191660011790555b6003543396506106f4906106ed908b9060ff16611393565b60646113c9565b94506107046106ed866014611393565b935061071085856113e0565b925061071c89866113e0565b9150610727826113f2565b90506000811180156107435750600f54610741828261146c565b115b151561074e57600080fd5b600160a060020a03881615801590610778575085600160a060020a031688600160a060020a031614155b801561079e5750600654600160a060020a0389166000908152600c602052604090205410155b156107e457600160a060020a0388166000908152600d60205260409020546107c6908561146c565b600160a060020a0389166000908152600d60205260409020556107f1565b6107ee838561146c565b92505b6107fd600f548261146c565b600f55600160a060020a0386166000908152600c6020526040902054610823908261146c565b600160a060020a038088166000908152600c60205260408082209390935554600754911691632c3ca9249186918a918602905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b151561089557600080fd5b6125ee5a03f115156108a657600080fd5b5050505087600160a060020a031686600160a060020a03167f8032875b28d82ddbd303a9e4e5529d047a14ecb6290f80012a81b7e6227ff1ab8b84426108ea610ca7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a398975050505050505050565b600160a060020a03166000908152600e60205260408120546801000000000000000091030490565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109de5780601f106109b3576101008083540402835291602001916109de565b820191906000526020600020905b8154815290600101906020018083116109c157829003601f168201915b505050505081565b60055481565b600354600090819081908190610a0a906106ed90879060ff16611393565b9250610a1685846113e0565b9150610a21826113f2565b95945050505050565b60105460ff1681565b600f5490565b600080600080600f548511151515610a5057600080fd5b610a598561147b565b600354909350610a77906106ed90859062010000900460ff16611393565b9150610a2183836113e0565b60035460ff1681565b60035462010000900460ff1681565b601281565b6000806000610aaf6001610bed565b11610ab957600080fd5b339150610ac66000610bed565b600160a060020a0383166000818152600e602090815260408083208054680100000000000000008702019055600d9091528082208054929055920192509082156108fc0290839051600060405180830381858888f193505050501515610b2b57600080fd5b81600160a060020a03167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8260405190815260200160405180910390a25050565b600054600160a060020a031681565b600080600080600f5460001415610b9a57600554600454039350610bdb565b610bab670de0b6b3a764000061147b565b600354909350610bc9906106ed90859062010000900460ff16611393565b9150610bd583836113e0565b90508093505b50505090565b60065481565b60075481565b60003382610c0357610bfe81610920565b610c27565b600160a060020a0381166000908152600d6020526040902054610c2582610920565b015b91505b50919050565b600160a060020a0330163190565b600160a060020a03166000908152600c602052604090205490565b600b60205260009081526040902054600160a060020a031681565b60085481565b60035460045460055460075460085460ff8086169661010087048216966201000090049091169493929190565b600080600080600f5460001415610cc657600554600454019350610bdb565b610cd7670de0b6b3a764000061147b565b600354909350610cef906106ed90859060ff16611393565b9150610bd5838361146c565b73fea0904acc8df0f3288b6583f60b86c36ea52acd600160a060020a033316148015610d2a575060105460ff16155b1515610d3557600080fd5b6010805460ff19166001179055600160a060020a03918216600081815260096020818152604080842067013fbe85edc9000090819055600b808452828620805473ffffffffffffffffffffffffffffffffffffffff199081167331529d5ab0d299d9b0594b7f2ef3515be668aa871790915597909816855292825280842092909255949094529290922080549091169091179055565b600033610dd781610c3e565b91505090565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109de5780601f106109b3576101008083540402835291602001916109de565b60096020526000908152604090205481565b600080600080600080610e6b610dcb565b11610e7557600080fd5b33600160a060020a0381166000908152600c6020526040902054909450861115610e9e57600080fd5b6000610eaa6001610bed565b1115610eb857610eb8610aa0565b600354610ed2906106ed908890610100900460ff16611393565b9250610ede86846113e0565b9150610ee98361147b565b9050610ef7600f54846113e0565b600f55600160a060020a0384166000908152600c6020526040902054610f1d90876113e0565b600160a060020a038086166000908152600c60205260408082209390935590891681522054610f4c908361146c565b600160a060020a038089166000908152600c60205260408082209390935554600754911691637f7de18591849188918b02905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b1515610fbe57600080fd5b6125ee5a03f11515610fcf57600080fd5b5050600054600754600160a060020a039091169250632c3ca92491508990850260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561103257600080fd5b6102c65a03f1151561104357600080fd5b50505086600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019695505050505050565b60045481565b600354610100900460ff1681565b600a6020526000908152604090205460ff1681565b60008060008060008060006110d6610dcb565b116110e057600080fd5b6008544210156110ef57600080fd5b33600160a060020a0381166000908152600c602052604090205490965087111561111857600080fd5b8694506111248561147b565b600354909450611142906106ed90869062010000900460ff16611393565b925061114e84846113e0565b915061115c600f54866113e0565b600f55600160a060020a0386166000908152600c602052604090205461118290866113e0565b600160a060020a038088166000908152600c6020908152604080832094909455600e9052828120805468010000000000000000870290819003909155905460075491945090911691637f7de1859186918a918a02905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b151561121757600080fd5b6125ee5a03f1151561122857600080fd5b5050505085600160a060020a03167f8d3a0130073dbd54ab6ac632c05946df540553d3b514c9f8165b4ab7f2b1805e868442611262610ca7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050565b33600160a060020a0381166000908152600c6020526040812054908111156112c0576112c0816110c3565b6112c8610aa0565b5050565b6000610c2a34836105a6565b6000806000806112e86001610bed565b116112f257600080fd5b6112fc6000610bed565b33600160a060020a0381166000908152600e602090815260408083208054680100000000000000008702019055600d9091528120805490829055909201945092506113489084906105a6565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458848360405191825260208201526040908101905180910390a2505050565b6000808315156113a657600091506113c2565b508282028284828115156113b657fe5b04146113be57fe5b8091505b5092915050565b60008082848115156113d757fe5b04949350505050565b6000828211156113ec57fe5b50900390565b6000806000600454670de0b6b3a7640000029150600f54600554611459611453600f548660055460020202026002600f540a60026005540a0289670de0b6b3a764000002600554670de0b6b3a764000002600202026002890a0101016114e2565b856113e0565b81151561146257fe5b0403949350505050565b6000828201838110156113be57fe5b600f54600554600454600092670de0b6b3a7640000858101939181019285926114cf91838604820201038702600283670de0b6b3a763ffff1982890a8b90030104600554028115156114c957fe5b046113e0565b8115156114d857fe5b0495945050505050565b80600260018201045b81811015610c2a57809150600281828581151561150457fe5b040181151561150f57fe5b0490506114eb5600a165627a7a72305820e6acb19058a6fbafd5e5b80ae474f4fe25e8f09876fe5a085a86acd0bec86b7d0029a165627a7a72305820cb365ad7b447bfbd50f712a8821edb307381fab19eb93715876e4b98ead6ba840029
Swarm Source
bzzr://e6acb19058a6fbafd5e5b80ae474f4fe25e8f09876fe5a085a86acd0bec86b7d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,614.41 | 1.541 | $4,028.68 |
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.